@prisma/studio-core 0.0.0-dev.202505092025 → 0.0.0-dev.202505100653
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{adapter-Dzg3tDL6.d.cts → adapter-BQaQoUNI.d.cts} +3 -1
- package/dist/{adapter-Dzg3tDL6.d.ts → adapter-BQaQoUNI.d.ts} +3 -1
- package/dist/{chunk-D7F6BRP4.js → chunk-IAE3ZG42.js} +2 -2
- package/dist/data/accelerate/index.d.cts +2 -2
- package/dist/data/accelerate/index.d.ts +2 -2
- package/dist/data/bff/index.d.cts +2 -2
- package/dist/data/bff/index.d.ts +2 -2
- package/dist/data/index.d.cts +2 -2
- package/dist/data/index.d.ts +2 -2
- package/dist/data/pglite/index.cjs +2 -2
- package/dist/data/pglite/index.d.cts +2 -2
- package/dist/data/pglite/index.d.ts +2 -2
- package/dist/data/pglite/index.js +1 -1
- package/dist/data/postgres-core/index.cjs +2 -2
- package/dist/data/postgres-core/index.d.cts +2 -2
- package/dist/data/postgres-core/index.d.ts +2 -2
- package/dist/data/postgres-core/index.js +1 -1
- package/dist/{index-BUtuWj4M.d.ts → index-Crb7VQNF.d.ts} +1 -1
- package/dist/{index-BKNnsdY7.d.cts → index-DuLnmKEq.d.cts} +1 -1
- package/dist/ui/index.cjs +130 -122
- package/dist/ui/index.css +176 -104
- package/dist/ui/index.d.cts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +15 -7
- package/package.json +2 -1
package/dist/ui/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import"../chunk-IAKOOX7B.js";import{D as Ze}from"../chunk-OGMDOPWW.js";import{B as nt,aa as it,c as ee,q as lt,r as ut,t as dt}from"../chunk-RFCV76TR.js";import{a as ds,b as xe}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as mn,motion as ls}from"motion/react";import{clsx as zs}from"clsx";var pt="-",ns=e=>{let a=fs(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{let u=s.split(pt);return u[0]===""&&u.length!==1&&u.shift(),no(u,a)||is(s)},getConflictingClassGroupIds:(s,u)=>{let n=t[s]||[];return u&&o[s]?[...n,...o[s]]:n}}},no=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?no(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let l=e.join(pt);return a.validators.find(({validator:s})=>s(l))?.classGroupId},ro=/^\[(.+)\]$/,is=e=>{if(ro.test(e)){let a=ro.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},fs=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return ps(Object.entries(e.classGroups),t).forEach(([l,s])=>{ct(s,o,l,a)}),o},ct=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let l=r===""?a:so(a,r);l.classGroupId=t;return}if(typeof r=="function"){if(cs(r)){ct(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([l,s])=>{ct(s,so(a,l),t,o)})})},so=(e,a)=>{let t=e;return a.split(pt).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},cs=e=>e.isThemeGetter,ps=(e,a)=>a?e.map(([t,o])=>{let r=o.map(l=>typeof l=="string"?a+l:typeof l=="object"?Object.fromEntries(Object.entries(l).map(([s,u])=>[a+s,u])):l);return[t,r]}):e,ms=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(l,s)=>{t.set(l,s),a++,a>e&&(a=0,o=t,t=new Map)};return{get(l){let s=t.get(l);if(s!==void 0)return s;if((s=o.get(l))!==void 0)return r(l,s),s},set(l,s){t.has(l)?t.set(l,s):r(l,s)}}},io="!",gs=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],l=a.length,s=u=>{let n=[],d=0,i=0,g;for(let C=0;C<u.length;C++){let h=u[C];if(d===0){if(h===r&&(o||u.slice(C,C+l)===a)){n.push(u.slice(i,C)),i=C+l;continue}if(h==="/"){g=C;continue}}h==="["?d++:h==="]"&&d--}let m=n.length===0?u:u.substring(i),L=m.startsWith(io),S=L?m.substring(1):m,p=g&&g>i?g-i:void 0;return{modifiers:n,hasImportantModifier:L,baseClassName:S,maybePostfixModifierPosition:p}};return t?u=>t({className:u,parseClassName:s}):s},xs=e=>{if(e.length<=1)return e;let a=[],t=[];return e.forEach(o=>{o[0]==="["?(a.push(...t.sort(),o),t=[]):t.push(o)}),a.push(...t.sort()),a},Ls=e=>({cache:ms(e.cacheSize),parseClassName:gs(e),...ns(e)}),Cs=/\s+/,hs=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,l=[],s=e.trim().split(Cs),u="";for(let n=s.length-1;n>=0;n-=1){let d=s[n],{modifiers:i,hasImportantModifier:g,baseClassName:m,maybePostfixModifierPosition:L}=t(d),S=!!L,p=o(S?m.substring(0,L):m);if(!p){if(!S){u=d+(u.length>0?" "+u:u);continue}if(p=o(m),!p){u=d+(u.length>0?" "+u:u);continue}S=!1}let C=xs(i).join(":"),h=g?C+io:C,k=h+p;if(l.includes(k))continue;l.push(k);let U=r(p,S);for(let _=0;_<U.length;++_){let te=U[_];l.push(h+te)}u=d+(u.length>0?" "+u:u)}return u};function Is(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=fo(a))&&(o&&(o+=" "),o+=t);return o}var fo=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=fo(e[o]))&&(t&&(t+=" "),t+=a);return t};function lo(e,...a){let t,o,r,l=s;function s(n){let d=a.reduce((i,g)=>g(i),e());return t=Ls(d),o=t.cache.get,r=t.cache.set,l=u,u(n)}function u(n){let d=o(n);if(d)return d;let i=hs(n,t);return r(n,i),i}return function(){return l(Is.apply(null,arguments))}}var B=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},co=/^\[(?:([a-z-]+):)?(.+)\]$/i,Ss=/^\d+\/\d+$/,bs=new Set(["px","full","screen"]),ws=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ys=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,vs=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Ps=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ks=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Le=e=>Je(e)||bs.has(e)||Ss.test(e),Me=e=>$e(e,"length",Ns),Je=e=>!!e&&!Number.isNaN(Number(e)),ft=e=>$e(e,"number",Je),sa=e=>!!e&&Number.isInteger(Number(e)),Rs=e=>e.endsWith("%")&&Je(e.slice(0,-1)),P=e=>co.test(e),Te=e=>ws.test(e),Ms=new Set(["length","size","percentage"]),Ts=e=>$e(e,Ms,po),Ds=e=>$e(e,"position",po),As=new Set(["image","url"]),Fs=e=>$e(e,As,qs),Bs=e=>$e(e,"",Os),la=()=>!0,$e=(e,a,t)=>{let o=co.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},Ns=e=>ys.test(e)&&!vs.test(e),po=()=>!1,Os=e=>Ps.test(e),qs=e=>ks.test(e);var uo=()=>{let e=B("colors"),a=B("spacing"),t=B("blur"),o=B("brightness"),r=B("borderColor"),l=B("borderRadius"),s=B("borderSpacing"),u=B("borderWidth"),n=B("contrast"),d=B("grayscale"),i=B("hueRotate"),g=B("invert"),m=B("gap"),L=B("gradientColorStops"),S=B("gradientColorStopPositions"),p=B("inset"),C=B("margin"),h=B("opacity"),k=B("padding"),U=B("saturate"),_=B("scale"),te=B("sepia"),ke=B("skew"),Re=B("space"),y=B("translate"),v=()=>["auto","contain","none"],w=()=>["auto","hidden","clip","visible","scroll"],V=()=>["auto",P,a],R=()=>[P,a],Q=()=>["",Le,Me],_e=()=>["auto",Je,P],Ha=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Qe=()=>["solid","dashed","dotted","double","none"],za=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ra=()=>["start","end","center","between","around","evenly","stretch"],He=()=>["","0",P],Ga=()=>["auto","avoid","all","avoid-page","page","left","right","column"],A=()=>[Je,P];return{cacheSize:500,separator:":",theme:{colors:[la],spacing:[Le,Me],blur:["none","",Te,P],brightness:A(),borderColor:[e],borderRadius:["none","","full",Te,P],borderSpacing:R(),borderWidth:Q(),contrast:A(),grayscale:He(),hueRotate:A(),invert:He(),gap:R(),gradientColorStops:[e],gradientColorStopPositions:[Rs,Me],inset:V(),margin:V(),opacity:A(),padding:R(),saturate:A(),scale:A(),sepia:He(),skew:A(),space:R(),translate:R()},classGroups:{aspect:[{aspect:["auto","square","video",P]}],container:["container"],columns:[{columns:[Te]}],"break-after":[{"break-after":Ga()}],"break-before":[{"break-before":Ga()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Ha(),P]}],overflow:[{overflow:w()}],"overflow-x":[{"overflow-x":w()}],"overflow-y":[{"overflow-y":w()}],overscroll:[{overscroll:v()}],"overscroll-x":[{"overscroll-x":v()}],"overscroll-y":[{"overscroll-y":v()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[p]}],"inset-x":[{"inset-x":[p]}],"inset-y":[{"inset-y":[p]}],start:[{start:[p]}],end:[{end:[p]}],top:[{top:[p]}],right:[{right:[p]}],bottom:[{bottom:[p]}],left:[{left:[p]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",sa,P]}],basis:[{basis:V()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",P]}],grow:[{grow:He()}],shrink:[{shrink:He()}],order:[{order:["first","last","none",sa,P]}],"grid-cols":[{"grid-cols":[la]}],"col-start-end":[{col:["auto",{span:["full",sa,P]},P]}],"col-start":[{"col-start":_e()}],"col-end":[{"col-end":_e()}],"grid-rows":[{"grid-rows":[la]}],"row-start-end":[{row:["auto",{span:[sa,P]},P]}],"row-start":[{"row-start":_e()}],"row-end":[{"row-end":_e()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",P]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",P]}],gap:[{gap:[m]}],"gap-x":[{"gap-x":[m]}],"gap-y":[{"gap-y":[m]}],"justify-content":[{justify:["normal",...ra()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...ra(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...ra(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[k]}],px:[{px:[k]}],py:[{py:[k]}],ps:[{ps:[k]}],pe:[{pe:[k]}],pt:[{pt:[k]}],pr:[{pr:[k]}],pb:[{pb:[k]}],pl:[{pl:[k]}],m:[{m:[C]}],mx:[{mx:[C]}],my:[{my:[C]}],ms:[{ms:[C]}],me:[{me:[C]}],mt:[{mt:[C]}],mr:[{mr:[C]}],mb:[{mb:[C]}],ml:[{ml:[C]}],"space-x":[{"space-x":[Re]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[Re]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",P,a]}],"min-w":[{"min-w":[P,a,"min","max","fit"]}],"max-w":[{"max-w":[P,a,"none","full","min","max","fit","prose",{screen:[Te]},Te]}],h:[{h:[P,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[P,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[P,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[P,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Te,Me]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",ft]}],"font-family":[{font:[la]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",P]}],"line-clamp":[{"line-clamp":["none",Je,ft]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Le,P]}],"list-image":[{"list-image":["none",P]}],"list-style-type":[{list:["none","disc","decimal",P]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[h]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[h]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Qe(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Le,Me]}],"underline-offset":[{"underline-offset":["auto",Le,P]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",P]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",P]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[h]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Ha(),Ds]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Ts]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Fs]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[S]}],"gradient-via-pos":[{via:[S]}],"gradient-to-pos":[{to:[S]}],"gradient-from":[{from:[L]}],"gradient-via":[{via:[L]}],"gradient-to":[{to:[L]}],rounded:[{rounded:[l]}],"rounded-s":[{"rounded-s":[l]}],"rounded-e":[{"rounded-e":[l]}],"rounded-t":[{"rounded-t":[l]}],"rounded-r":[{"rounded-r":[l]}],"rounded-b":[{"rounded-b":[l]}],"rounded-l":[{"rounded-l":[l]}],"rounded-ss":[{"rounded-ss":[l]}],"rounded-se":[{"rounded-se":[l]}],"rounded-ee":[{"rounded-ee":[l]}],"rounded-es":[{"rounded-es":[l]}],"rounded-tl":[{"rounded-tl":[l]}],"rounded-tr":[{"rounded-tr":[l]}],"rounded-br":[{"rounded-br":[l]}],"rounded-bl":[{"rounded-bl":[l]}],"border-w":[{border:[u]}],"border-w-x":[{"border-x":[u]}],"border-w-y":[{"border-y":[u]}],"border-w-s":[{"border-s":[u]}],"border-w-e":[{"border-e":[u]}],"border-w-t":[{"border-t":[u]}],"border-w-r":[{"border-r":[u]}],"border-w-b":[{"border-b":[u]}],"border-w-l":[{"border-l":[u]}],"border-opacity":[{"border-opacity":[h]}],"border-style":[{border:[...Qe(),"hidden"]}],"divide-x":[{"divide-x":[u]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[u]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[h]}],"divide-style":[{divide:Qe()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...Qe()]}],"outline-offset":[{"outline-offset":[Le,P]}],"outline-w":[{outline:[Le,Me]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Q()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[h]}],"ring-offset-w":[{"ring-offset":[Le,Me]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Te,Bs]}],"shadow-color":[{shadow:[la]}],opacity:[{opacity:[h]}],"mix-blend":[{"mix-blend":[...za(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":za()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[n]}],"drop-shadow":[{"drop-shadow":["","none",Te,P]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[i]}],invert:[{invert:[g]}],saturate:[{saturate:[U]}],sepia:[{sepia:[te]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[n]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[i]}],"backdrop-invert":[{"backdrop-invert":[g]}],"backdrop-opacity":[{"backdrop-opacity":[h]}],"backdrop-saturate":[{"backdrop-saturate":[U]}],"backdrop-sepia":[{"backdrop-sepia":[te]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",P]}],duration:[{duration:A()}],ease:[{ease:["linear","in","out","in-out",P]}],delay:[{delay:A()}],animate:[{animate:["none","spin","ping","pulse","bounce",P]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[_]}],"scale-x":[{"scale-x":[_]}],"scale-y":[{"scale-y":[_]}],rotate:[{rotate:[sa,P]}],"translate-x":[{"translate-x":[y]}],"translate-y":[{"translate-y":[y]}],"skew-x":[{"skew-x":[ke]}],"skew-y":[{"skew-y":[ke]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",P]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",P]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",P]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[Le,Me,ft]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Es=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:l={},override:s={}})=>{ua(e,"cacheSize",a),ua(e,"prefix",t),ua(e,"separator",o),ua(e,"experimentalParseClassName",r);for(let u in s)Us(e[u],s[u]);for(let u in l)Hs(e[u],l[u]);return e},ua=(e,a,t)=>{t!==void 0&&(e[a]=t)},Us=(e,a)=>{if(a)for(let t in a)ua(e,t,a[t])},Hs=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},mo=(e,...a)=>typeof e=="function"?lo(uo,e,...a):lo(()=>Es(uo(),e),...a);var Gs=mo({prefix:"ps-"});function c(...e){return Gs(zs(e))}import{useIsMutating as en}from"@tanstack/react-query";import{forwardRef as Ws,createElement as Ks}from"react";var go=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Va=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Vs,createElement as Lo}from"react";var xo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Co=Vs(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...u},n)=>Lo("svg",{ref:n,...xo,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:Va("lucide",r),...u},[...s.map(([d,i])=>Lo(d,i)),...Array.isArray(l)?l:[l]]));var b=(e,a)=>{let t=Ws(({className:o,...r},l)=>Ks(Co,{ref:l,iconNode:a,className:Va(`lucide-${go(e)}`,o),...r}));return t.displayName=`${e}`,t};var De=b("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);var da=b("ArrowUpWideNarrow",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);var oe=b("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var ie=b("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var na=b("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var re=b("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var ia=b("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var fa=b("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var ca=b("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var ze=b("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var pa=b("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var ma=b("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var ga=b("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var xa=b("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);var La=b("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var Ca=b("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);var ha=b("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);var Ia=b("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Sa=b("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ae=b("PanelLeftClose",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var Fe=b("PanelLeftOpen",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var ba=b("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var wa=b("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var ya=b("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);var Be=b("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as an}from"motion-plus/react";import{useEffect as tn,useState as on}from"react";import{toast as rn}from"sonner";import{cva as Xs}from"class-variance-authority";import{jsx as _s}from"react/jsx-runtime";var mt=Xs("ps-inline-flex ps-items-center ps-rounded-md ps-border ps-px-2.5 ps-py-0.5 ps-text-xs ps-font-semibold ps-transition-colors focus:ps-outline-none focus:ps-ring-2 focus:ps-ring-ring focus:ps-ring-offset-2",{variants:{variant:{default:"ps-border-transparent ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/80",secondary:"ps-border-transparent ps-bg-secondary ps-text-secondary-foreground hover:ps-bg-secondary/80",destructive:"ps-border-transparent ps-bg-destructive ps-text-destructive-foreground ps-shadow hover:ps-bg-destructive/80",outline:"ps-text-foreground"}},defaultVariants:{variant:"default"}});function Wa({className:e,variant:a,...t}){return _s("div",{className:c(mt({variant:a}),e),...t})}import{Slot as Qs}from"@radix-ui/react-slot";import{cva as Zs}from"class-variance-authority";import*as ho from"react";import{jsx as $s}from"react/jsx-runtime";var Js=Zs("ps-inline-flex ps-items-center ps-justify-center ps-gap-2 ps-whitespace-nowrap ps-rounded-md ps-text-sm ps-font-medium ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-pointer-events-none disabled:ps-opacity-50 [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",{variants:{variant:{default:"ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/90",destructive:"ps-bg-destructive ps-text-destructive-foreground ps-shadow-sm hover:ps-bg-destructive/90",outline:"ps-border ps-border-input ps-bg-background ps-shadow-sm hover:ps-bg-accent hover:ps-text-accent-foreground",secondary:"ps-bg-secondary ps-text-secondary-foreground ps-shadow-sm hover:ps-bg-secondary/80",ghost:"hover:ps-bg-accent hover:ps-text-accent-foreground",link:"ps-text-primary ps-underline-offset-4 hover:ps-underline"},size:{default:"ps-h-9 ps-px-4 ps-py-2",xs:"ps-h-6 ps-rounded-md ps-px-2 ps-text-xs",sm:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",lg:"ps-h-10 ps-rounded-md ps-px-8",icon:"ps-h-9 ps-w-9"}},defaultVariants:{variant:"default",size:"default"}}),O=ho.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},l)=>$s(o?Qs:"button",{className:c(Js({variant:a,size:t,className:e})),ref:l,...r}));O.displayName="Button";import*as fe from"@radix-ui/react-popover";import*as So from"react";import{jsx as Io}from"react/jsx-runtime";var bo=fe.Root,wo=fe.Trigger;var gt=So.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Io(fe.Portal,{children:Io(fe.Content,{ref:r,align:a,sideOffset:t,className:c("ps-z-50 ps-w-72 ps-rounded-md ps-border ps-bg-popover ps-p-4 ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-popover-content-transform-origin]",e),...o})}));gt.displayName=fe.Content.displayName;import{useMutation as Sl,useQueryClient as bl}from"@tanstack/react-query";import{QueryClient as cl,QueryClientProvider as pl}from"@tanstack/react-query";import*as se from"react";import{onlineManager as js,useQueryClient as Ys}from"@tanstack/react-query";var yo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:n,styleNonce:d,shadowDOMTarget:i}=e;this.#a=ee(a),this.#i=t,this.#f=o,this.#n=r,this.#c=d,this.#t=i,this.#o=ee(l),this.#r=ee(s),this.#s=ee(u),this.#l=ee(n)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=nt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,n;return this.#u?n=this.#u:(n=dt(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#u=n),it(this.#c,this.#t),lt(n,ut({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()}}))},e);this.#e=!0,this.#d=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#d?.(),this.#e=!1}},vo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;#p;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:n,styleNonce:d,shadowDOMTarget:i,onClose:g}=e;this.#a=ee(a),this.#i=t,this.#f=o,this.#n=r,this.#c=d,this.#t=i,this.#o=ee(l),this.#r=ee(s),this.#s=ee(u),this.#l=ee(n),this.#u=ee(g)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}setOnClose(e){this.#u[1](()=>e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=nt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,[n]=this.#u,d;return this.#d?d=this.#d:(d=dt(()=>import("../OKF6E45R-3IGVLQES.js")),this.#d=d),it(this.#c,this.#t),lt(d,ut({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()},get onClose(){return n()}}))},e);this.#e=!0,this.#p=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#p?.(),this.#e=!1}};import{jsx as el}from"react/jsx-runtime";function Po(e){let a=Ys(e.client),t=se.useRef(null),{buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:n}=e,[d]=se.useState(new yo({client:a,queryFlavor:"React Query",version:"5",onlineManager:js,buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:n}));return se.useEffect(()=>{d.setClient(a)},[a,d]),se.useEffect(()=>{o&&d.setButtonPosition(o)},[o,d]),se.useEffect(()=>{r&&d.setPosition(r)},[r,d]),se.useEffect(()=>{d.setInitialIsOpen(l||!1)},[l,d]),se.useEffect(()=>{d.setErrorTypes(s||[])},[s,d]),se.useEffect(()=>(t.current&&d.mount(t.current),()=>{d.unmount()}),[d]),el("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as Ce from"react";import{onlineManager as tl,useQueryClient as ol}from"@tanstack/react-query";import{jsx as rl}from"react/jsx-runtime";function ko(e){let a=ol(e.client),t=Ce.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:l}=e,[s]=Ce.useState(new vo({client:a,queryFlavor:"React Query",version:"5",onlineManager:tl,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:l,onClose:e.onClose}));return Ce.useEffect(()=>{s.setClient(a)},[a,s]),Ce.useEffect(()=>{s.setOnClose(e.onClose??(()=>{}))},[e.onClose,s]),Ce.useEffect(()=>{s.setErrorTypes(o||[])},[o,s]),Ce.useEffect(()=>(t.current&&s.mount(t.current),()=>{s.unmount()}),[s]),rl("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var Ro=process.env.NODE_ENV!=="development"?function(){return null}:Po,uc=process.env.NODE_ENV!=="development"?function(){return null}:ko;import{createContext as ml,useContext as gl,useMemo as xl,useState as xt}from"react";import{toast as Ll}from"sonner";import{Toaster as ll}from"sonner";import{jsx as ul}from"react/jsx-runtime";var Mo=({...e})=>ul(ll,{className:"ps-toaster ps-group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});import{unstable_createAdapterProvider as dl}from"nuqs/adapters/custom";import{useEffect as nl,useState as il}from"react";function fl(){let e=window.location.hash.slice(1),[a,t]=il(new URLSearchParams(e));function o(l,{history:s}){let{pathname:u,search:n}=window.location,d=l.toString(),i=`${u}${n}#${d}`;s==="push"?window.history.pushState(null,"",i):window.history.replaceState(null,"",i),t(l)}function r(){let l=window.location.hash.slice(1);return new URLSearchParams(l)}return nl(()=>{function l(){let s=window.location.hash.slice(1);t(new URLSearchParams(s))}return window.addEventListener("hashchange",l),()=>window.removeEventListener("hashchange",l)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var To=dl(fl);import{jsx as Ka,jsxs as hl}from"react/jsx-runtime";var Cl=new cl,Do=ml(void 0);function Ao(e){let{children:a,...t}=e,[o,r]=xt(null),[l,s]=xt(!1),[u,n]=xt(!0),d=e.onError;d??=L=>Ll.error(L.message);let i=xl(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),g=()=>s(L=>!L),m=()=>n(L=>!L);return hl(pl,{client:Cl,children:[Ka(Ro,{}),Ka(Mo,{}),Ka(To,{children:Ka(Do.Provider,{value:{...t,activeTable:o,isFullscreen:l,setActiveTable:r,onError:d,emitTelemetryEvent:i,toggleFullscreen:g,isNavigationOpen:u,toggleNavigation:m},children:a})})]})}function H(){let e=gl(Do);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function Il(e,a){let t={filter:Ze(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function Fo(e,a){return{...e,__ps_rowid:Il(e,a)}}function Xa(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:Fo(t,a)}:o!==void 0?{...e,rows:o.map(r=>Fo(r,a))}:e}function Bo(){let{activeTable:e,adapter:a}=H(),t=bl(),{schema:o=null,name:r=null}=e??{};return Sl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(l){let[s,u]=await a.insert({rows:l,table:e},{});if(s)throw s;return Xa(u,e)},onSuccess(l){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},s=>s==null?s:{...s,rows:[...l.rows,...s.rows]})},retry:!1})}import{useQuery as wl}from"@tanstack/react-query";function No(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:l,adapter:s}=H();return wl({enabled:!!l,gcTime:0,placeholderData(u,n){let[,d,,i]=n?.queryKey||[];if(!(d!==l?.schema||i!==l?.name))return u},async queryFn({signal:u}){let[n,d]=await s.query({pageIndex:a,pageSize:t,sortOrder:o,table:l,filter:r},{abortSignal:u});if(n)throw n;return Xa(d,l)},queryKey:["schema",l?.schema||null,"table",l?.name||null,"query","sortOrder",o.map(u=>`${u.column}:${u.direction}`).join(",")||"natural","pageIndex",a,"pageSize",t,"filter",JSON.stringify(r)],staleTime:1/0})}import{useMutation as yl,useQueryClient as vl}from"@tanstack/react-query";function Oo(){let{activeTable:e,adapter:a,onError:t}=H(),o=vl(),r=["schema",e?.schema??null,"table",e?.name??null];return yl({mutationFn:async l=>{let[s,u]=await a.update(l.details,l.options);if(s)throw s;return u},mutationKey:[...r,"update"],onError(l,s){let{changes:u,row:n}=s.details;t(l),Lt({getFinderFn(){let d={...n,...u},i=Ze(d,e.columns);return g=>i.every(([m,L])=>g[m]===L)},queryClient:o,table:e,updaterFn:function(i){return{...i,...Object.keys(u).reduce((g,m)=>({...g,[m]:n[m]}),{})}}})},onMutate(l){let{details:s}=l;Lt({getFinderFn(){let{row:u}=s,n=Ze(u,e.columns);return d=>n.every(([i,g])=>d[i]===g)},queryClient:o,table:e,updaterFn:function(n){return{...n,...s.changes}}})},onSuccess(l,s){Lt({getFinderFn(){let{changes:u,row:n}=s.details,d={...n,...u},i=Ze(d,e.columns);return g=>i.every(([m,L])=>g[m]===L)},queryClient:o,table:e,updaterFn:function(n){let{__ps_updated_at__:d}=n,{row:i}=l;return d!=null&&i.__ps_updated_at__<=d?n:{...n,...i}}})},retry:!1})}function Lt(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,l;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},s=>{let{rows:u=[]}=s||{};if(u.length===0)return s;let n=u.findIndex(l??=a());if(n===-1)return s;let d=r(u[n]);return{...s,rows:[...u.slice(0,n),d,...u.slice(n+1)]}})}import{useEffect as Ml,useMemo as qo,useState as Tl}from"react";var z={};ds(z,{keyMap:()=>Ct,urlKeys:()=>Rl,useQueryState:()=>Ne,useQueryStates:()=>va});xe(z,jc);import{useQueryState as Pl,useQueryStates as kl}from"nuqs";import*as jc from"nuqs";function Ct(e){return e}function Rl(e){return e}var Jc=Symbol("BRAND_SYMBOL");function Ne(e,a){return Pl(e,a)}function va(e,a){return kl(e,a)}var Dl={kind:"FilterGroup",filters:[],after:"and"},ht={kind:"FilterGroup",filters:[{kind:"ColumnFilter",column:"",operator:"=",value:"",after:"and"}],after:"and"},Eo=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=Eo(t));return a};function Uo(){let[e,a]=Ne("filter",{defaultValue:JSON.stringify(Dl)}),t=qo(()=>JSON.parse(e),[e]),o=u=>void a(JSON.stringify(u)),[r,l]=Tl(t);Ml(()=>{l(t)},[t]);let s=qo(()=>Eo(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:l,totalEditingFilters:s}}import{useIsMutating as Al}from"@tanstack/react-query";function _a(){return Al({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as Fl}from"react";var Bl=25,Nl={pageIndex:z.parseAsIndex.withDefault(0),pageSize:z.parseAsInteger.withDefault(Bl)};function Qa(){let[{pageIndex:e,pageSize:a},t]=va(Nl),o=Fl(r=>{t(typeof r=="function"?l=>{let s=r(l);return{pageIndex:s.pageIndex,pageSize:s.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as El,useState as Ul}from"react";import{useMutation as Ol,useQueryClient as ql}from"@tanstack/react-query";function Ho(){let{activeTable:e,adapter:a}=H(),t=ql(),{schema:o=null,name:r=null}=e??{};return Ol({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(l){let[s,u]=await a.delete({rows:l,table:e},{});if(s)throw s;return u},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function zo(e){let{activeTable:a,onError:t}=H(),{paginationState:o}=Qa(),[r,l]=Ul({}),s=Object.keys(r).length!==0,{mutate:u}=Ho();El(()=>l({}),[a,o.pageIndex]);function n(){let d=e?.rows.filter(i=>r[i.__ps_rowid]);u(d??[],{onSuccess(){l({})},onError:t})}return{deleteSelection:n,setRowSelectionState:l,rowSelectionState:r,isSelecting:s}}import{useEffect as Hl,useState as zl}from"react";function Go(){let[e,a]=Ne("sort",{defaultValue:""}),t=s=>{if(!s)return[];try{return s.split(",").map(u=>{let[n,d]=u.split(":");return!n||!d||!["asc","desc"].includes(d)?null:{column:n,direction:d}}).filter(Boolean)}catch(u){return console.error("Failed to parse sorting parameter:",u),[]}},[o,r]=zl(()=>t(e));return Hl(()=>{let s=t(e);r(s)},[e]),{sortingState:o,setSortingState:s=>{let u=typeof s=="function"?s(o):s;r(u);let n=u.length>0?u.map(d=>`${d.column}:${d.direction}`).join(","):null;a(n)}}}import{isObjectType as pu}from"remeda";import{forwardRef as jl}from"react";import*as Ie from"react";import{jsx as he}from"react/jsx-runtime";var It=Ie.forwardRef(({className:e,...a},t)=>he("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:he("table",{ref:t,className:c("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));It.displayName="Table";var St=Ie.forwardRef(({className:e,...a},t)=>he("thead",{ref:t,className:c(e),...a}));St.displayName="TableHeader";var bt=Ie.forwardRef(({className:e,...a},t)=>he("tbody",{ref:t,className:c("[&_tr:last-child]:ps-border-0",e),...a}));bt.displayName="TableBody";var Gl=Ie.forwardRef(({className:e,...a},t)=>he("tfoot",{ref:t,className:c("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));Gl.displayName="TableFooter";var Ge=Ie.forwardRef(({className:e,...a},t)=>he("tr",{ref:t,className:c("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));Ge.displayName="TableRow";var Ve=Ie.forwardRef(({className:e,...a},t)=>he("th",{ref:t,className:c("ps-h-10 ps-px-2 ps-text-left ps-align-middle ps-font-medium ps-text-muted-foreground",e),...a}));Ve.displayName="TableHead";var Oe=Ie.forwardRef(({className:e,...a},t)=>he("td",{ref:t,className:c("ps-align-middle",e),...a}));Oe.displayName="TableCell";var Vl=Ie.forwardRef(({className:e,...a},t)=>he("caption",{ref:t,className:c("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));Vl.displayName="TableCaption";import{isValidElement as $l}from"react";import*as M from"@radix-ui/react-context-menu";import*as Se from"react";import{jsx as Z,jsxs as vt}from"react/jsx-runtime";var Vo=M.Root,Wo=M.Trigger;var Wl=Se.forwardRef(({className:e,inset:a,children:t,...o},r)=>vt(M.SubTrigger,{ref:r,className:c("ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[state=open]:ps-bg-accent data-[state=open]:ps-text-accent-foreground",a&&"ps-pl-8",e),...o,children:[t,Z(re,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));Wl.displayName=M.SubTrigger.displayName;var Kl=Se.forwardRef(({className:e,...a},t)=>Z(M.SubContent,{ref:t,className:c("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a}));Kl.displayName=M.SubContent.displayName;var wt=Se.forwardRef(({className:e,...a},t)=>Z(M.Portal,{children:Z(M.Content,{ref:t,className:c("ps-z-50 ps-max-h-[--radix-context-menu-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a})}));wt.displayName=M.Content.displayName;var yt=Se.forwardRef(({className:e,inset:a,...t},o)=>Z(M.Item,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",a&&"ps-pl-8",e),...t}));yt.displayName=M.Item.displayName;var Xl=Se.forwardRef(({className:e,children:a,checked:t,...o},r)=>vt(M.CheckboxItem,{ref:r,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[Z("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Z(M.ItemIndicator,{children:Z(oe,{className:"ps-h-4 ps-w-4"})})}),a]}));Xl.displayName=M.CheckboxItem.displayName;var _l=Se.forwardRef(({className:e,children:a,...t},o)=>vt(M.RadioItem,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[Z("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Z(M.ItemIndicator,{children:Z(ze,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));_l.displayName=M.RadioItem.displayName;var Ql=Se.forwardRef(({className:e,inset:a,...t},o)=>Z(M.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold ps-text-foreground",a&&"ps-pl-8",e),...t}));Ql.displayName=M.Label.displayName;var Zl=Se.forwardRef(({className:e,...a},t)=>Z(M.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));Zl.displayName=M.Separator.displayName;var Jl=({className:e,...a})=>Z("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});Jl.displayName="ContextMenuShortcut";import{jsx as Pt,jsxs as Ko}from"react/jsx-runtime";function Xo(e){let{children:a}=e;return Ko(Vo,{children:[Pt(Wo,{className:"ps-block ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)] ps-text-xs ps-font-mono ps-whitespace-nowrap ps-overflow-hidden ps-text-ellipsis",children:a}),Pt(wt,{children:Ko(yt,{onClick:()=>{let t=kt(a);navigator.clipboard.writeText(t).catch(o=>{console.error("Failed to copy to clipboard:",o)})},className:"ps-flex ps-items-center ps-gap-2",children:[Pt(pa,{size:12}),"Copy"]})})]})}function kt(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if($l(e)){let a=e.props;return e.type&&typeof e.type=="function"&&e.type.name==="RevealText"?a.text||"":e.type&&typeof e.type=="function"&&e.type.name==="NullValue"?"NULL":a.children?kt(a.children):""}return Array.isArray(e)?e.map(kt).join(""):""}import{jsx as _o}from"react/jsx-runtime";function G(e){let{children:a,className:t,ref:o,style:r,...l}=e;return _o(Oe,{...l,className:c("ps-p-0 ps-border-r ps-border-b ps-border-table-border","ps-cursor-pointer",t),ref:o,style:r,children:_o(Xo,{children:a})})}import{jsx as Qo}from"react/jsx-runtime";var Rt=jl((e,a)=>{let{containerProps:t,value:o,...r}=e;return Qo(G,{...r,...t,ref:a,children:Qo("div",{"data-cell-type":"boolean",children:String(!!o)})})});Rt.displayName="BooleanCell";import{forwardRef as Yl}from"react";import{jsx as eu}from"react/jsx-runtime";var Mt=Yl((e,a)=>{let{containerProps:t,value:o,...r}=e;return eu(G,{...r,...t,ref:a,children:String(o)})});Mt.displayName="DateCell";import{forwardRef as au}from"react";import{jsx as tu}from"react/jsx-runtime";var Pa=au((e,a)=>{let{containerProps:t,...o}=e;return tu(G,{...o,...t,ref:a})});Pa.displayName="EmptyCell";import{forwardRef as ou}from"react";import{jsx as ru}from"react/jsx-runtime";var Tt=ou((e,a)=>{let{containerProps:t,value:o,options:r,...l}=e;return ru(G,{...l,...t,ref:a,children:String(o)})});Tt.displayName="EnumCell";import{forwardRef as su}from"react";import{jsx as lu}from"react/jsx-runtime";var Za=su((e,a)=>{let{containerProps:t,value:o,...r}=e;return lu(G,{...r,...t,ref:a,children:JSON.stringify(o,null,2)})});Za.displayName="JSONCell";import{forwardRef as uu}from"react";import{jsx as Zo}from"react/jsx-runtime";var Dt=uu((e,a)=>{let{containerProps:t,...o}=e;return Zo(G,{...o,...t,ref:a,children:Zo("code",{className:"ps-text-muted-foreground/60",children:"NULL"})})});Dt.displayName="NullCell";import{forwardRef as du}from"react";import{jsx as Jo}from"react/jsx-runtime";var At=du((e,a)=>{let{containerProps:t,value:o,...r}=e;return Jo(G,{...r,...t,ref:a,children:Jo("div",{"data-cell-type":"numeric",children:o===null?"NULL":String(o)})})});At.displayName="NumericCell";import{forwardRef as nu}from"react";import{jsx as iu}from"react/jsx-runtime";var Ja=nu((e,a)=>{let{containerProps:t,value:o,...r}=e;return iu(G,{...r,...t,ref:a,children:String(o)})});Ja.displayName="RawCell";import{forwardRef as fu}from"react";import{jsx as cu}from"react/jsx-runtime";var Ft=fu((e,a)=>{let{containerProps:t,value:o,...r}=e;return cu(G,{...r,...t,ref:a,children:String(o)})});Ft.displayName="TimeCell";import{jsx as le}from"react/jsx-runtime";function $a({cell:e,column:a,props:t}){let o=e.getValue();if(o===void 0)return le(Pa,{containerProps:t});if(o===null)return le(Dt,{containerProps:t});let{group:r,options:l,isArray:s}=a.datatype;if(r==="json"||s)return le(Za,{containerProps:t,value:o});if(r==="string")return le(Ja,{containerProps:t,value:o});if(r==="enum")return le(Tt,{containerProps:t,value:o,options:l});if(r==="boolean")return le(Rt,{containerProps:t,value:o});if(r==="datetime")return le(Mt,{containerProps:t,value:o});if(r==="time")return le(Ft,{containerProps:t,value:o});if(r==="numeric")return le(At,{containerProps:t,value:o});if(r==="raw")return pu(o)?le(Za,{containerProps:t,value:o}):le(Ja,{containerProps:t,value:o});throw new Error(`Datatype group "${r}" was not handled in '/cell/get-cell.tsx'`)}import{forwardRef as mu}from"react";import*as ka from"@radix-ui/react-checkbox";import*as $o from"react";import{jsx as Bt}from"react/jsx-runtime";var Ra=$o.forwardRef(({className:e,...a},t)=>Bt(ka.Root,{ref:t,className:c("ps-peer ps-h-4 ps-w-4 ps-shrink-0 ps-rounded-sm ps-border ps-border-primary ps-shadow focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=checked]:ps-text-primary-foreground",e),...a,children:Bt(ka.Indicator,{className:c("ps-flex ps-items-center ps-justify-center ps-text-current"),children:Bt(oe,{className:"ps-h-4 ps-w-4"})})}));Ra.displayName=ka.Root.displayName;import{jsx as Nt}from"react/jsx-runtime";var Ot=mu((e,a)=>{let{table:t,readonly:o,className:r,style:l,...s}=e;return Nt("div",{ref:a,className:r,style:l,...s,children:Nt("div",{className:"ps-flex ps-items-center ps-justify-center ps-w-full",children:Nt(Ra,{checked:t.getIsAllRowsSelected(),onCheckedChange:u=>t.toggleAllRowsSelected(!!u),disabled:o})})})});Ot.displayName="SelectHeaderCell";import{forwardRef as xu}from"react";import{Fragment as gu,jsx as qt}from"react/jsx-runtime";function jo(e){let{children:a,className:t,ref:o,style:r,isHeader:l=!1,...s}=e,u=c("ps-flex ps-items-center ps-justify-center ps-p-0 ps-border-r ps-border-b ps-border-table-border ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)]");return qt(gu,{children:l?qt(Ve,{...s,className:c(u,"ps-h-10 ps-bg-table-head ps-z-30 ps-sticky ps-top-0 ps-left-0",t),ref:o,children:a}):qt(Oe,{...s,className:c(u,"ps-z-10 ps-h-[39px]",t),ref:o,style:r,children:a})})}import{jsx as Yo}from"react/jsx-runtime";var Et=xu((e,a)=>{let{row:t,readonly:o,className:r,style:l,...s}=e;return Yo(jo,{ref:a,className:r,style:l,...s,children:Yo(Ra,{checked:t.getIsSelected(),disabled:!t.getCanSelect()||o,onCheckedChange:t.getToggleSelectedHandler()})})});Et.displayName="SelectRowCell";import*as be from"@radix-ui/react-popover";import*as K from"react";import{jsx as Ma}from"react/jsx-runtime";var er=K.createContext(null),Ut=({children:e,...a})=>{let[t,o]=K.useState(!1);return Ma(er.Provider,{value:{open:t,setOpen:o},children:Ma(be.Root,{open:t,onOpenChange:o,...a,children:e})})};Ut.displayName="PopoverCell";var Ht=K.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let l=K.useRef(null);return Ma(be.Trigger,{ref:s=>{typeof r=="function"?r(s):r&&(r.current=s),l.current=s},className:c("w-full h-full cursor-pointer",t),...o,children:e})});Ht.displayName="PopoverCellTrigger";var zt=K.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ma(be.Portal,{children:Ma(be.Content,{ref:r,align:a,sideOffset:t,className:c("ps-flex ps-flex-col ps-gap-2 ps-z-50 ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),onEscapeKeyDown:l=>l.preventDefault(),...o})}));zt.displayName=be.Content.displayName;function J(e){let a=K.useContext(er),t=K.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=K.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return K.useEffect(()=>{let r=l=>{(l.key==="Enter"||l.key==="Return")&&!l.shiftKey?t():l.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as ar,jsxs as Lu}from"react/jsx-runtime";function ja(e){let{cellComponent:a,inputComponent:t}=e;return Lu(Ut,{children:[ar(Ht,{asChild:!0,children:a}),ar(zt,{align:"start",alignOffset:-1,className:c("ps-rounded-none ps-bg-muted","ps-p-0 ps-z-30 ps-gap-0 ps-border-primary","ps-w-[calc(var(--radix-popover-trigger-width)_+_1px)] ps-max-w-72 ps-min-w-[200px]"),sideOffset:-40,children:t})]})}import{closestCenter as Su,DndContext as bu,DragOverlay as wu,KeyboardSensor as yu,PointerSensor as vu,useSensor as sr,useSensors as Pu}from"@dnd-kit/core";import{arrayMove as ku,SortableContext as Ru,sortableKeyboardCoordinates as Mu,useSortable as Tu,verticalListSortingStrategy as Du}from"@dnd-kit/sortable";import{CSS as Au}from"@dnd-kit/utilities";import{motion as Vt}from"motion/react";import{AnimateNumber as Fu}from"motion-plus/react";import{useCallback as Bu,useEffect as Nu,useMemo as ur,useRef as Ou,useState as lr}from"react";import{createPortal as qu}from"react-dom";import{v4 as dr}from"uuid";import*as tr from"react";import{jsx as Cu}from"react/jsx-runtime";var ue=tr.forwardRef(({className:e,type:a,...t},o)=>Cu("input",{type:a,className:c("ps-flex ps-h-9 ps-w-full ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-1 ps-shadow-sm ps-transition-colors file:ps-border-0 file:ps-bg-transparent file:ps-text-sm file:ps-font-medium file:ps-text-foreground placeholder:ps-text-muted-foreground focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50",e),ref:o,...t}));ue.displayName="Input";import*as T from"@radix-ui/react-select";import*as qe from"react";import{jsx as X,jsxs as Gt}from"react/jsx-runtime";var Ta=T.Root;var Da=T.Value,je=qe.forwardRef(({className:e,children:a,...t},o)=>Gt(T.Trigger,{ref:o,className:c("ps-flex ps-h-9 ps-w-full ps-items-center ps-justify-between ps-whitespace-nowrap ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-2 ps-text-sm ps-shadow-sm ps-ring-offset-background data-[placeholder]:ps-text-muted-foreground focus:ps-outline-none focus:ps-ring-1 focus:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 [&>span]:ps-line-clamp-1",e),...t,children:[a,X(T.Icon,{asChild:!0,children:X(ie,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));je.displayName=T.Trigger.displayName;var or=qe.forwardRef(({className:e,...a},t)=>X(T.ScrollUpButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:X(ia,{className:"ps-h-4 ps-w-4"})}));or.displayName=T.ScrollUpButton.displayName;var rr=qe.forwardRef(({className:e,...a},t)=>X(T.ScrollDownButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:X(ie,{className:"ps-h-4 ps-w-4"})}));rr.displayName=T.ScrollDownButton.displayName;var Ye=qe.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>X(T.Portal,{children:Gt(T.Content,{ref:r,className:c("ps-relative ps-z-50 ps-max-h-[--radix-select-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:ps-translate-y-1 data-[side=left]:ps--translate-x-1 data-[side=right]:ps-translate-x-1 data-[side=top]:ps--translate-y-1",e),position:t,...o,children:[X(or,{}),X(T.Viewport,{className:c("ps-p-1",t==="popper"&&"ps-h-[var(--radix-select-trigger-height)] ps-w-full ps-min-w-[var(--radix-select-trigger-width)]"),children:a}),X(rr,{})]})}));Ye.displayName=T.Content.displayName;var hu=qe.forwardRef(({className:e,...a},t)=>X(T.Label,{ref:t,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));hu.displayName=T.Label.displayName;var q=qe.forwardRef(({className:e,children:a,...t},o)=>Gt(T.Item,{ref:o,className:c("ps-relative ps-flex ps-w-full ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-2 ps-pr-8 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[X("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:X(T.ItemIndicator,{children:X(oe,{className:"ps-h-4 ps-w-4"})})}),X(T.ItemText,{children:a})]}));q.displayName=T.Item.displayName;var Iu=qe.forwardRef(({className:e,...a},t)=>X(T.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Iu.displayName=T.Separator.displayName;import{jsx as I,jsxs as W}from"react/jsx-runtime";var Eu=({dndItemId:e,filter:a,onUpdate:t,onDelete:o,parentDndId:r,isLast:l,table:s})=>{let{attributes:u,listeners:n,setNodeRef:d,transform:i,transition:g,isDragging:m}=Tu({id:e,data:{type:a.kind,parentId:r}}),L={transform:Au.Transform.toString(i),transition:g,opacity:m?.5:1};return I("div",{ref:d,style:L,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:a.kind==="ColumnFilter"?I(nr,{filter:a,onUpdate:t,onDelete:o,dragHandleProps:{...u,...n},isLast:l,table:s}):I(Wt,{dndId:e,group:a,onUpdate:t,onDelete:o,isLast:l,table:s})})},nr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,isLast:r,table:l})=>{let s=i=>{a({...e,column:i})},u=i=>{a({...e,operator:i})},n=i=>{a({...e,value:i.target.value})},d=i=>{a({...e,after:i})};return W(Vt.div,{className:"ps-flex ps-items-center ps-justify-between ps-gap-2 ps-w-full",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[W("div",{className:"ps-flex ps-items-center ps-gap-2",children:[I("div",{...o,className:"ps-cursor-grab",children:I(xa,{className:"ps-text-gray-500",size:16})}),W(Ta,{value:e.column,onValueChange:s,children:[I(je,{className:"ps-w-28 ps-text-xs",children:I(Da,{placeholder:"Select column"})}),I(Ye,{children:Object.keys(l.columns).map(i=>I(q,{value:i,children:i},i))})]}),W(Ta,{value:e.operator,onValueChange:i=>u(i),children:[I(je,{className:"ps-w-20 ps-text-xs",children:I(Da,{placeholder:"Operator"})}),W(Ye,{children:[I(q,{value:"=",children:"="}),I(q,{value:"!=",children:"!="}),I(q,{value:">",children:">"}),I(q,{value:">=",children:">="}),I(q,{value:"<",children:"<"}),I(q,{value:"<=",children:"<="}),I(q,{value:"in",children:"in"}),I(q,{value:"not in",children:"not in"}),I(q,{value:"is",children:"is"}),I(q,{value:"is not",children:"is not"}),I(q,{value:"like",children:"like"}),I(q,{value:"not like",children:"not like"}),I(q,{value:"ilike",children:"ilike"}),I(q,{value:"not ilike",children:"not ilike"})]})]}),I(ue,{value:e.value||"",onChange:n,placeholder:"value",className:"ps-w-24 ps-text-xs"})]}),W("div",{className:"ps-flex ps-items-center ps-gap-2",children:[W(Ta,{value:e.after,onValueChange:i=>d(i),disabled:r,children:[I(je,{className:"ps-w-20 ps-text-xs",children:I(Da,{})}),W(Ye,{children:[I(q,{value:"and",children:I("div",{className:"ps-font-semibold",children:"AND"})}),I(q,{value:"or",children:I("div",{className:"ps-font-semibold",children:"OR"})})]})]}),I(O,{variant:"ghost",size:"xs",onClick:t,children:I(Be,{size:14})})]})]})},Wt=({dndId:e,group:a,onUpdate:t,onDelete:o,dragHandleProps:r,isRoot:l=!1,isLast:s=!1,table:u})=>{let[n,d]=lr(!0),[i,g]=lr(null),m=a.filters,L=Ou(new WeakMap).current,S=Bu(y=>(L.has(y)||L.set(y,dr()),L.get(y)),[L]),p=ur(()=>m.map(S),[m,S]),C=Pu(sr(vu,{activationConstraint:{distance:8}}),sr(yu,{coordinateGetter:Mu}));Nu(()=>{if(l&&a.filters.length===1){let y=a.filters[0];if(y?.kind==="ColumnFilter"&&!y.column){let v=Object.keys(u.columns)[0]??"";t({...a,filters:[{...y,column:v}]})}}},[l,u.columns]);let h=()=>{let y={kind:"ColumnFilter",column:Object.keys(u.columns)[0]??"",operator:"=",value:"",after:"and"};t({...a,filters:[...m,y]})},k=()=>{let y={kind:"FilterGroup",filters:[],after:"and"};t({...a,filters:[...m,y]})},U=(y,v)=>{let w=[...m];w[y]=v,t({...a,filters:w})},_=y=>{let v=[...m];v.splice(y,1),t({...a,filters:v})},te=y=>{g(y.active.id)},ke=y=>{let{active:v,over:w}=y;if(w&&v.id!==w.id){let V=m.findIndex(Q=>S(Q)===v.id),R=m.findIndex(Q=>S(Q)===w.id);if(V!==-1&&R!==-1){let Q=ku(m,V,R);t({...a,filters:Q})}}g(null)},Re=()=>!n||!a.filters||!a.filters.length?null:W(Vt.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[I("div",{className:c("ps-flex ps-flex-col ps-relative ps-gap-2",l?"":"ps-pb-2"),children:W(bu,{sensors:C,collisionDetection:Su,onDragStart:te,onDragEnd:ke,children:[I(Ru,{items:p,strategy:Du,children:m.map((y,v)=>I(Eu,{dndItemId:S(y),filter:y,onUpdate:w=>U(v,w),onDelete:()=>_(v),parentDndId:e,isLast:v===m.length-1,table:u},S(y)))}),qu(I(wu,{children:i?I("div",{className:"ps-opacity-80",children:(()=>{let y=m.find(v=>S(v)===i);return y?y.kind==="ColumnFilter"?I(nr,{filter:y,onUpdate:()=>{},onDelete:()=>{},isLast:!0,table:u}):I(Wt,{dndId:i,group:y,onUpdate:()=>{},onDelete:()=>{},isLast:!0,table:u}):null})()}):null}),document.body)]})}),!l&&I("div",{className:"ps-flex ps-pt-2 ps-w-fit ps-justify-between",children:W(Ta,{value:a.after,onValueChange:y=>t({...a,after:y}),disabled:s,children:[I(je,{className:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",children:I(Da,{})}),W(Ye,{children:[I(q,{value:"and",children:I("div",{className:"ps-font-semibold",children:"AND"})}),I(q,{value:"or",children:I("div",{className:"ps-font-semibold",children:"OR"})})]})]})})]});return I(Vt.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:W("div",{className:c("ps-flex ps-flex-col ps-w-full ps-gap-2",l?"":"ps-border-l-4 ps-pl-2"),children:[W("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[W("div",{className:"ps-flex ps-items-center ps-w-full ps-gap-2",children:[!l&&I("div",{...r,className:"ps-cursor-grab",onClick:()=>d(!n),children:n?I(ie,{size:16}):I(re,{size:16})}),W(O,{variant:"outline",size:"sm",onClick:h,className:c("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",m.length>0&&I(Wa,{className:"ps-transition-all",children:I(Fu,{transition:{layout:{duration:.12}},children:m.length})})]}),I(O,{variant:"outline",size:"sm",onClick:k,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),!l&&I(O,{variant:"ghost",size:"xs",onClick:o,children:I(Be,{size:14})})]}),I("div",{className:c(l?"":"ps-ml-6"),children:Re()})]})})};function ir({filter:e,setFilter:a,setAppliedFilter:t,table:o}){let r=ur(()=>dr(),[]);return W("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[I(Wt,{dndId:r,group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),I(O,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as ud,MouseSensor as dd,useSensor as nd,useSensors as id}from"@dnd-kit/core";import{arrayMove as fd,horizontalListSortingStrategy as cd,SortableContext as pd,useSortable as md}from"@dnd-kit/sortable";import{CSS as gd}from"@dnd-kit/utilities";import{getCoreRowModel as xd,useReactTable as Ld}from"@tanstack/react-table";import*as we from"react";import x from"react";function Ee(){return Ee=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},Ee.apply(null,arguments)}var Uu=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function Hu(e,a){let[t,o]=x.useState();x.useEffect(()=>{let l=Uu(e);o(typeof l>"u"||l===null?typeof a=="function"?a():a:l)},[a,e]);let r=x.useCallback(l=>{o(s=>{let u=l;typeof l=="function"&&(u=l(s));try{localStorage.setItem(e,JSON.stringify(u))}catch{}return u})},[e]);return[t,r]}var ce={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},pr=x.createContext(ce);function mr(e){let{theme:a,...t}=e;return x.createElement(pr.Provider,Ee({value:a},t))}function zu(){return x.useContext(pr)}function Gu(e){let[a,t]=x.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return x.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=l=>{let{matches:s}=l;return t(s)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var Vu=typeof window>"u";function de(e,a,t){return t===void 0&&(t={}),x.forwardRef((o,r)=>{let{style:l,...s}=o,u=zu(),n=Object.entries(t).reduce((d,i)=>{let[g,m]=i;return Gu(g)?{...d,...typeof m=="function"?m(s,u):m}:d},{});return x.createElement(e,{...s,style:{...typeof a=="function"?a(s,u):a,...l,...n},ref:r})})}function Wu(){let e=x.useRef(!1),a=x.useCallback(()=>e.current,[]);return x[Vu?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var Ku=de("div",(e,a)=>({fontSize:"clamp(12px, 1.5vw, 14px)",fontFamily:"sans-serif",display:"flex",backgroundColor:a.background,color:a.foreground}),{"(max-width: 700px)":{flexDirection:"column"},"(max-width: 600px)":{fontSize:".9em"}});de("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var Xu=de("button",(e,a)=>({appearance:"none",fontSize:".9em",fontWeight:"bold",background:a.gray,border:"0",borderRadius:".3em",color:"white",padding:".5em",opacity:e.disabled?".5":void 0,cursor:"pointer"}));de("code",{fontSize:".9em"});de("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));de("select",(e,a)=>({display:"inline-block",fontSize:".9em",fontFamily:"sans-serif",fontWeight:"normal",lineHeight:"1.3",padding:".3em 1.5em .3em .5em",height:"auto",border:0,borderRadius:".2em",appearance:"none",WebkitAppearance:"none",backgroundColor:a.inputBackgroundColor,backgroundImage:`url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,backgroundRepeat:"no-repeat",backgroundPosition:"right .55em center",backgroundSize:".65em auto, 100%",color:a.inputTextColor}),{"(max-width: 500px)":{display:"none"}});var fr=de("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),Ya=de("span",{cursor:"pointer",color:"white"}),_u=de("span",(e,a)=>({color:a.danger})),Kt=de("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),Qu=de("span",{color:"grey",fontSize:".7rem"}),cr=e=>{let{expanded:a,style:t={},...o}=e;return x.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},Zu=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:l,type:s,expanded:u,toggle:n,pageSize:d,renderer:i}=e,[g,m]=x.useState(void 0),[L,S]=x.useState([]),p=()=>{m(o())};return x.createElement(fr,{key:t},l!=null&&l.length?x.createElement(x.Fragment,null,x.createElement(Ya,{onClick:()=>n()},x.createElement(cr,{expanded:u})," ",t," ",x.createElement(Qu,null,String(s).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),u?l.length===1?x.createElement(Kt,null,r.map(C=>a(C))):x.createElement(Kt,null,l.map((C,h)=>x.createElement("div",{key:h},x.createElement(fr,null,x.createElement(Ya,{onClick:()=>S(k=>k.includes(h)?k.filter(U=>U!==h):[...k,h])},x.createElement(cr,{expanded:u})," [",h*d," ..."," ",h*d+d-1,"]"),L.includes(h)?x.createElement(Kt,null,C.map(k=>a(k))):null)))):null):s==="function"?x.createElement(x.Fragment,null,x.createElement(pe,{renderer:i,label:x.createElement("button",{onClick:p},x.createElement(Ya,null,t)," \u{1F504}"," "),value:g,defaultExpanded:{}})):x.createElement(x.Fragment,null,x.createElement(Ya,null,t,":")," ",x.createElement(_u,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function pe(e){let{value:a,defaultExpanded:t,renderer:o=Zu,pageSize:r=100,depth:l=0,...s}=e,[u,n]=x.useState(t),d=p=>{n(C=>typeof p<"u"?p:!C)},i=[],g=typeof a,m,L=[],S=p=>{let C=i.concat(p.label),h=t===!0?{[p.label]:!0}:t?.[p.label];return{...p,subPath:p,path:C,depth:l+1,defaultExpanded:h}};if(Array.isArray(a)?(g="array",m=a.map((p,C)=>S({label:C,value:p}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(g="Iterable",m=Array.from(a,(p,C)=>S({label:C,value:p}))):typeof a=="function"?g="function":typeof a=="object"&&a!==null&&(g="object",m=Object.entries(a).map(p=>{let[C,h]=p;return S({label:C,value:h})})),m){let p=0;for(;p<m.length;)L.push(m.slice(p,p+r)),p=p+r}return o({handleEntry:p=>x.createElement(pe,Ee({key:p.label,renderer:o},s,p)),type:g,subEntries:m,subEntryPages:L,depth:l,value:a,path:i,expanded:u,toggle:d,pageSize:r,...s})}function gr(e){return we.createElement("svg",Ee({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),we.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},we.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},we.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},we.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},we.createElement("path",{d:"M39.7239712,51.3436237 C36.631224,36.362877 35.9675112,24.8727722 37.9666331,16.5293551 C39.1555965,11.5671678 41.3293088,7.51908462 44.6346064,4.59846305 C48.1241394,1.51504777 52.5360327,0.00201216606 57.493257,0.00201216606 C65.6712013,0.00201216606 74.2682602,3.72732143 83.4557246,10.8044264 C87.2031203,13.6910458 91.0924366,17.170411 95.1316515,21.2444746 C95.4531404,20.8310265 95.8165416,20.4410453 96.2214301,20.0806152 C107.64098,9.91497158 117.255245,3.59892716 125.478408,1.16365068 C130.367899,-0.284364005 134.958526,-0.422317978 139.138936,0.983031021 C143.551631,2.46646844 147.06766,5.53294888 149.548314,9.82810912 C153.642288,16.9166735 154.721918,26.2310983 153.195595,37.7320243 C152.573451,42.4199112 151.50985,47.5263831 150.007094,53.0593153 C150.574045,53.1277086 151.142416,53.2532808 151.705041,53.4395297 C166.193932,58.2358678 176.453582,63.3937462 182.665021,69.2882839 C186.360669,72.7953831 188.773972,76.6998434 189.646365,81.0218204 C190.567176,85.5836746 189.669313,90.1593316 187.191548,94.4512967 C183.105211,101.529614 175.591643,107.11221 164.887587,111.534031 C160.589552,113.309539 155.726579,114.917559 150.293259,116.363748 C150.541176,116.92292 150.733521,117.516759 150.862138,118.139758 C153.954886,133.120505 154.618598,144.61061 152.619477,152.954027 C151.430513,157.916214 149.256801,161.964297 145.951503,164.884919 C142.46197,167.968334 138.050077,169.48137 133.092853,169.48137 C124.914908,169.48137 116.31785,165.756061 107.130385,158.678956 C103.343104,155.761613 99.4108655,152.238839 95.3254337,148.108619 C94.9050753,148.765474 94.3889681,149.376011 93.7785699,149.919385 C82.3590198,160.085028 72.744755,166.401073 64.5215915,168.836349 C59.6321009,170.284364 55.0414736,170.422318 50.8610636,169.016969 C46.4483686,167.533532 42.9323404,164.467051 40.4516862,160.171891 C36.3577116,153.083327 35.2780823,143.768902 36.8044053,132.267976 C37.449038,127.410634 38.56762,122.103898 40.1575891,116.339009 C39.5361041,116.276104 38.9120754,116.144816 38.2949591,115.940529 C23.8060684,111.144191 13.5464184,105.986312 7.33497892,100.091775 C3.63933121,96.5846754 1.22602752,92.6802151 0.353635235,88.3582381 C-0.567176333,83.7963839 0.330686581,79.2207269 2.80845236,74.9287618 C6.89478863,67.8504443 14.4083565,62.2678481 25.1124133,57.8460273 C29.5385143,56.0176154 34.5637208,54.366822 40.1939394,52.8874674 C39.9933393,52.3969171 39.8349374,51.8811235 39.7239712,51.3436237 Z",id:"Path",fill:"#002C4B",fillRule:"nonzero",transform:"translate(95.000000, 85.000000) scale(-1, 1) translate(-95.000000, -85.000000) "}),we.createElement("path",{d:"M91.735,110 L91.735,116 L80.6322051,116 C78.8411286,116 77.1868614,115.041975 76.2954489,113.488483 L74.294,110 L91.735,110 Z M116.181,110 L114.180256,113.488483 C113.288844,115.041975 111.634576,116 109.8435,116 L98.735,116 L98.735,110 L116.181,110 Z M91.735,96 L91.735,103 L70.277,103 L66.26,96 L91.735,96 Z M124.215,96 L120.198,103 L98.735,103 L98.735,96 L124.215,96 Z M91.735,82 L91.735,89 L62.244,89 L61.6632438,87.9884826 C60.7789187,86.4473417 60.7789187,84.5526583 61.6632438,83.0115174 L62.243,82 L91.735,82 Z M128.232,82 L128.812461,83.0115174 C129.696786,84.5526583 129.696786,86.4473417 128.812461,87.9884826 L128.231,89 L98.735,89 L98.735,82 L128.232,82 Z M91.735,68 L91.735,75 L66.26,75 L70.277,68 L91.735,68 Z M120.198,68 L124.215,75 L98.735,75 L98.735,68 L120.198,68 Z M91.735,55 L91.735,61 L74.293,61 L76.2954489,57.5115174 C77.1868614,55.958025 78.8411286,55 80.6322051,55 L91.735,55 Z M109.8435,55 C111.634576,55 113.288844,55.958025 114.180256,57.5115174 L116.182,61 L98.735,61 L98.735,55 L109.8435,55 Z",id:"Polygon-2",fill:"#FFD94C"}),we.createElement("path",{d:"M54.8601729,98.3577578 C56.1715224,97.6082856 57.8360246,98.0746014 58.5779424,99.3993034 L58.5779424,99.3993034 L59.0525843,100.24352 C62.8563392,106.982993 66.8190116,113.380176 70.9406016,119.435068 C75.8078808,126.585427 81.28184,133.82411 87.3624792,141.151115 C88.3168778,142.30114 88.1849437,144.011176 87.065686,144.997937 L87.065686,144.997937 L86.4542085,145.534625 C66.3465389,163.103314 53.2778188,166.612552 47.2480482,156.062341 C41.3500652,145.742717 43.4844915,126.982888 53.6513274,99.7828526 C53.876818,99.1795821 54.3045861,98.675291 54.8601729,98.3577578 Z M140.534177,119.041504 C141.986131,118.785177 143.375496,119.742138 143.65963,121.194242 L143.65963,121.194242 L143.812815,121.986376 C148.782365,147.995459 145.283348,161 133.315764,161 C121.609745,161 106.708724,149.909007 88.6127018,127.727022 C88.2113495,127.235047 87.9945723,126.617371 88,125.981509 C88.013158,124.480686 89.2357854,123.274651 90.730918,123.287756 L90.730918,123.287756 L91.6846544,123.294531 C99.3056979,123.335994 106.714387,123.071591 113.910723,122.501323 C122.409039,121.82788 131.283523,120.674607 140.534177,119.041504 Z M147.408726,63.8119663 C147.932139,62.4026903 149.508386,61.6634537 150.954581,62.149012 L150.954581,62.149012 L151.742552,62.4154854 C177.583763,71.217922 187.402356,80.8916805 181.198332,91.4367609 C175.129904,101.751366 157.484347,109.260339 128.26166,113.963678 C127.613529,114.067994 126.948643,113.945969 126.382735,113.618843 C125.047025,112.846729 124.602046,111.158214 125.388848,109.847438 L125.388848,109.847438 L125.889328,109.0105 C129.877183,102.31633 133.481358,95.6542621 136.701854,89.0242957 C140.50501,81.1948179 144.073967,72.7907081 147.408726,63.8119663 Z M61.7383398,56.0363218 C62.3864708,55.9320063 63.0513565,56.0540315 63.6172646,56.3811573 C64.9529754,57.153271 65.3979538,58.8417862 64.6111517,60.1525615 L64.6111517,60.1525615 L64.1106718,60.9895001 C60.1228168,67.6836699 56.5186416,74.3457379 53.2981462,80.9757043 C49.49499,88.8051821 45.9260328,97.2092919 42.5912744,106.188034 C42.0678608,107.59731 40.4916142,108.336546 39.045419,107.850988 L39.045419,107.850988 L38.2574475,107.584515 C12.4162372,98.782078 2.59764398,89.1083195 8.80166786,78.5632391 C14.8700957,68.2486335 32.515653,60.7396611 61.7383398,56.0363218 Z M103.545792,24.4653746 C123.653461,6.89668641 136.722181,3.38744778 142.751952,13.9376587 C148.649935,24.2572826 146.515508,43.0171122 136.348673,70.2171474 C136.123182,70.8204179 135.695414,71.324709 135.139827,71.6422422 C133.828478,72.3917144 132.163975,71.9253986 131.422058,70.6006966 L131.422058,70.6006966 L130.947416,69.7564798 C127.143661,63.0170065 123.180988,56.6198239 119.059398,50.564932 C114.192119,43.4145727 108.71816,36.1758903 102.637521,28.8488847 C101.683122,27.6988602 101.815056,25.9888243 102.934314,25.0020629 L102.934314,25.0020629 Z M57.6842361,8 C69.3902551,8 84.2912758,19.0909926 102.387298,41.2729777 C102.788651,41.7649527 103.005428,42.3826288 103,43.0184911 C102.986842,44.5193144 101.764215,45.7253489 100.269082,45.7122445 L100.269082,45.7122445 L99.3153456,45.7054689 C91.6943021,45.6640063 84.2856126,45.9284091 77.0892772,46.4986773 C68.5909612,47.17212 59.7164767,48.325393 50.4658235,49.9584962 C49.0138691,50.2148231 47.6245044,49.2578618 47.3403697,47.805758 L47.3403697,47.805758 L47.1871846,47.0136235 C42.2176347,21.0045412 45.7166519,8 57.6842361,8 Z",id:"Combined-Shape",fill:"#FF4154"}))))))}function xr(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:l="footer"}=e,s=x.useRef(null),u=x.useRef(null),[n,d]=Hu("reactTableDevtoolsOpen",a),i=Wu(),{style:g={},...m}=o,{style:L={},onClick:S,...p}=r;return i()?x.createElement(l,{ref:s,className:"ReactTableDevtools"},x.createElement(mr,{theme:ce},n?x.createElement(Ju,Ee({ref:u},m,{table:t,isOpen:n,setIsOpen:d,style:{maxHeight:"80vh",width:"100%",...g}})):x.createElement("button",Ee({type:"button"},p,{"aria-label":"Open React Table Devtools",onClick:C=>{d(!0),S&&S(C)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...L}}),x.createElement(gr,{"aria-hidden":!0})))):null}var Ju=x.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:l,...s}=a;return x.createElement(mr,{theme:ce},x.createElement(Ku,Ee({ref:t,className:"ReactTableDevtoolsPanel"},s),x.createElement("style",{dangerouslySetInnerHTML:{__html:`
|
|
1
|
+
import"../chunk-IAKOOX7B.js";import{D as Qe}from"../chunk-OGMDOPWW.js";import{B as it,aa as ft,c as ae,q as ut,r as dt,t as nt}from"../chunk-RFCV76TR.js";import{a as ss,b as Le}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as fn,motion as os}from"motion/react";import{clsx as Es}from"clsx";var mt="-",ls=e=>{let a=ds(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{let u=s.split(mt);return u[0]===""&&u.length!==1&&u.shift(),uo(u,a)||us(s)},getConflictingClassGroupIds:(s,u)=>{let d=t[s]||[];return u&&o[s]?[...d,...o[s]]:d}}},uo=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?uo(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let l=e.join(mt);return a.validators.find(({validator:s})=>s(l))?.classGroupId},oo=/^\[(.+)\]$/,us=e=>{if(oo.test(e)){let a=oo.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},ds=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return is(Object.entries(e.classGroups),t).forEach(([l,s])=>{pt(s,o,l,a)}),o},pt=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let l=r===""?a:ro(a,r);l.classGroupId=t;return}if(typeof r=="function"){if(ns(r)){pt(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([l,s])=>{pt(s,ro(a,l),t,o)})})},ro=(e,a)=>{let t=e;return a.split(mt).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},ns=e=>e.isThemeGetter,is=(e,a)=>a?e.map(([t,o])=>{let r=o.map(l=>typeof l=="string"?a+l:typeof l=="object"?Object.fromEntries(Object.entries(l).map(([s,u])=>[a+s,u])):l);return[t,r]}):e,fs=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(l,s)=>{t.set(l,s),a++,a>e&&(a=0,o=t,t=new Map)};return{get(l){let s=t.get(l);if(s!==void 0)return s;if((s=o.get(l))!==void 0)return r(l,s),s},set(l,s){t.has(l)?t.set(l,s):r(l,s)}}},no="!",cs=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],l=a.length,s=u=>{let d=[],n=0,f=0,g;for(let h=0;h<u.length;h++){let I=u[h];if(n===0){if(I===r&&(o||u.slice(h,h+l)===a)){d.push(u.slice(f,h)),f=h+l;continue}if(I==="/"){g=h;continue}}I==="["?n++:I==="]"&&n--}let m=d.length===0?u:u.substring(f),x=m.startsWith(no),S=x?m.substring(1):m,c=g&&g>f?g-f:void 0;return{modifiers:d,hasImportantModifier:x,baseClassName:S,maybePostfixModifierPosition:c}};return t?u=>t({className:u,parseClassName:s}):s},ps=e=>{if(e.length<=1)return e;let a=[],t=[];return e.forEach(o=>{o[0]==="["?(a.push(...t.sort(),o),t=[]):t.push(o)}),a.push(...t.sort()),a},ms=e=>({cache:fs(e.cacheSize),parseClassName:cs(e),...ls(e)}),gs=/\s+/,xs=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,l=[],s=e.trim().split(gs),u="";for(let d=s.length-1;d>=0;d-=1){let n=s[d],{modifiers:f,hasImportantModifier:g,baseClassName:m,maybePostfixModifierPosition:x}=t(n),S=!!x,c=o(S?m.substring(0,x):m);if(!c){if(!S){u=n+(u.length>0?" "+u:u);continue}if(c=o(m),!c){u=n+(u.length>0?" "+u:u);continue}S=!1}let h=ps(f).join(":"),I=g?h+no:h,w=I+c;if(l.includes(w))continue;l.push(w);let G=r(c,S);for(let K=0;K<G.length;++K){let oe=G[K];l.push(I+oe)}u=n+(u.length>0?" "+u:u)}return u};function Ls(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=io(a))&&(o&&(o+=" "),o+=t);return o}var io=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=io(e[o]))&&(t&&(t+=" "),t+=a);return t};function so(e,...a){let t,o,r,l=s;function s(d){let n=a.reduce((f,g)=>g(f),e());return t=ms(n),o=t.cache.get,r=t.cache.set,l=u,u(d)}function u(d){let n=o(d);if(n)return n;let f=xs(d,t);return r(d,f),f}return function(){return l(Ls.apply(null,arguments))}}var T=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},fo=/^\[(?:([a-z-]+):)?(.+)\]$/i,Cs=/^\d+\/\d+$/,hs=new Set(["px","full","screen"]),Is=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ss=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,bs=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,ws=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ys=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Ce=e=>_e(e)||hs.has(e)||Cs.test(e),ke=e=>Ze(e,"length",As),_e=e=>!!e&&!Number.isNaN(Number(e)),ct=e=>Ze(e,"number",_e),ea=e=>!!e&&Number.isInteger(Number(e)),vs=e=>e.endsWith("%")&&_e(e.slice(0,-1)),y=e=>fo.test(e),Re=e=>Is.test(e),Ps=new Set(["length","size","percentage"]),ks=e=>Ze(e,Ps,co),Rs=e=>Ze(e,"position",co),Ms=new Set(["image","url"]),Ds=e=>Ze(e,Ms,Bs),Ts=e=>Ze(e,"",Fs),aa=()=>!0,Ze=(e,a,t)=>{let o=fo.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},As=e=>Ss.test(e)&&!bs.test(e),co=()=>!1,Fs=e=>ws.test(e),Bs=e=>ys.test(e);var lo=()=>{let e=T("colors"),a=T("spacing"),t=T("blur"),o=T("brightness"),r=T("borderColor"),l=T("borderRadius"),s=T("borderSpacing"),u=T("borderWidth"),d=T("contrast"),n=T("grayscale"),f=T("hueRotate"),g=T("invert"),m=T("gap"),x=T("gradientColorStops"),S=T("gradientColorStopPositions"),c=T("inset"),h=T("margin"),I=T("opacity"),w=T("padding"),G=T("saturate"),K=T("scale"),oe=T("sepia"),H=T("skew"),Z=T("space"),q=T("translate"),A=()=>["auto","contain","none"],M=()=>["auto","hidden","clip","visible","scroll"],re=()=>["auto",y,a],R=()=>[y,a],We=()=>["",Ce,ke],Ke=()=>["auto",_e,y],Ua=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Xe=()=>["solid","dashed","dotted","double","none"],Ha=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Ye=()=>["start","end","center","between","around","evenly","stretch"],Ee=()=>["","0",y],D=()=>["auto","avoid","all","avoid-page","page","left","right","column"],z=()=>[_e,y];return{cacheSize:500,separator:":",theme:{colors:[aa],spacing:[Ce,ke],blur:["none","",Re,y],brightness:z(),borderColor:[e],borderRadius:["none","","full",Re,y],borderSpacing:R(),borderWidth:We(),contrast:z(),grayscale:Ee(),hueRotate:z(),invert:Ee(),gap:R(),gradientColorStops:[e],gradientColorStopPositions:[vs,ke],inset:re(),margin:re(),opacity:z(),padding:R(),saturate:z(),scale:z(),sepia:Ee(),skew:z(),space:R(),translate:R()},classGroups:{aspect:[{aspect:["auto","square","video",y]}],container:["container"],columns:[{columns:[Re]}],"break-after":[{"break-after":D()}],"break-before":[{"break-before":D()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Ua(),y]}],overflow:[{overflow:M()}],"overflow-x":[{"overflow-x":M()}],"overflow-y":[{"overflow-y":M()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[c]}],"inset-x":[{"inset-x":[c]}],"inset-y":[{"inset-y":[c]}],start:[{start:[c]}],end:[{end:[c]}],top:[{top:[c]}],right:[{right:[c]}],bottom:[{bottom:[c]}],left:[{left:[c]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ea,y]}],basis:[{basis:re()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",y]}],grow:[{grow:Ee()}],shrink:[{shrink:Ee()}],order:[{order:["first","last","none",ea,y]}],"grid-cols":[{"grid-cols":[aa]}],"col-start-end":[{col:["auto",{span:["full",ea,y]},y]}],"col-start":[{"col-start":Ke()}],"col-end":[{"col-end":Ke()}],"grid-rows":[{"grid-rows":[aa]}],"row-start-end":[{row:["auto",{span:[ea,y]},y]}],"row-start":[{"row-start":Ke()}],"row-end":[{"row-end":Ke()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",y]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",y]}],gap:[{gap:[m]}],"gap-x":[{"gap-x":[m]}],"gap-y":[{"gap-y":[m]}],"justify-content":[{justify:["normal",...Ye()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...Ye(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...Ye(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[w]}],px:[{px:[w]}],py:[{py:[w]}],ps:[{ps:[w]}],pe:[{pe:[w]}],pt:[{pt:[w]}],pr:[{pr:[w]}],pb:[{pb:[w]}],pl:[{pl:[w]}],m:[{m:[h]}],mx:[{mx:[h]}],my:[{my:[h]}],ms:[{ms:[h]}],me:[{me:[h]}],mt:[{mt:[h]}],mr:[{mr:[h]}],mb:[{mb:[h]}],ml:[{ml:[h]}],"space-x":[{"space-x":[Z]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[Z]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",y,a]}],"min-w":[{"min-w":[y,a,"min","max","fit"]}],"max-w":[{"max-w":[y,a,"none","full","min","max","fit","prose",{screen:[Re]},Re]}],h:[{h:[y,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[y,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[y,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[y,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Re,ke]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",ct]}],"font-family":[{font:[aa]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",y]}],"line-clamp":[{"line-clamp":["none",_e,ct]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Ce,y]}],"list-image":[{"list-image":["none",y]}],"list-style-type":[{list:["none","disc","decimal",y]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[I]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[I]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Xe(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Ce,ke]}],"underline-offset":[{"underline-offset":["auto",Ce,y]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",y]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",y]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[I]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Ua(),Rs]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",ks]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Ds]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[S]}],"gradient-via-pos":[{via:[S]}],"gradient-to-pos":[{to:[S]}],"gradient-from":[{from:[x]}],"gradient-via":[{via:[x]}],"gradient-to":[{to:[x]}],rounded:[{rounded:[l]}],"rounded-s":[{"rounded-s":[l]}],"rounded-e":[{"rounded-e":[l]}],"rounded-t":[{"rounded-t":[l]}],"rounded-r":[{"rounded-r":[l]}],"rounded-b":[{"rounded-b":[l]}],"rounded-l":[{"rounded-l":[l]}],"rounded-ss":[{"rounded-ss":[l]}],"rounded-se":[{"rounded-se":[l]}],"rounded-ee":[{"rounded-ee":[l]}],"rounded-es":[{"rounded-es":[l]}],"rounded-tl":[{"rounded-tl":[l]}],"rounded-tr":[{"rounded-tr":[l]}],"rounded-br":[{"rounded-br":[l]}],"rounded-bl":[{"rounded-bl":[l]}],"border-w":[{border:[u]}],"border-w-x":[{"border-x":[u]}],"border-w-y":[{"border-y":[u]}],"border-w-s":[{"border-s":[u]}],"border-w-e":[{"border-e":[u]}],"border-w-t":[{"border-t":[u]}],"border-w-r":[{"border-r":[u]}],"border-w-b":[{"border-b":[u]}],"border-w-l":[{"border-l":[u]}],"border-opacity":[{"border-opacity":[I]}],"border-style":[{border:[...Xe(),"hidden"]}],"divide-x":[{"divide-x":[u]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[u]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[I]}],"divide-style":[{divide:Xe()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...Xe()]}],"outline-offset":[{"outline-offset":[Ce,y]}],"outline-w":[{outline:[Ce,ke]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:We()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[I]}],"ring-offset-w":[{"ring-offset":[Ce,ke]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Re,Ts]}],"shadow-color":[{shadow:[aa]}],opacity:[{opacity:[I]}],"mix-blend":[{"mix-blend":[...Ha(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Ha()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",Re,y]}],grayscale:[{grayscale:[n]}],"hue-rotate":[{"hue-rotate":[f]}],invert:[{invert:[g]}],saturate:[{saturate:[G]}],sepia:[{sepia:[oe]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[f]}],"backdrop-invert":[{"backdrop-invert":[g]}],"backdrop-opacity":[{"backdrop-opacity":[I]}],"backdrop-saturate":[{"backdrop-saturate":[G]}],"backdrop-sepia":[{"backdrop-sepia":[oe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",y]}],duration:[{duration:z()}],ease:[{ease:["linear","in","out","in-out",y]}],delay:[{delay:z()}],animate:[{animate:["none","spin","ping","pulse","bounce",y]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[K]}],"scale-x":[{"scale-x":[K]}],"scale-y":[{"scale-y":[K]}],rotate:[{rotate:[ea,y]}],"translate-x":[{"translate-x":[q]}],"translate-y":[{"translate-y":[q]}],"skew-x":[{"skew-x":[H]}],"skew-y":[{"skew-y":[H]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",y]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",y]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",y]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[Ce,ke,ct]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Os=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:l={},override:s={}})=>{ta(e,"cacheSize",a),ta(e,"prefix",t),ta(e,"separator",o),ta(e,"experimentalParseClassName",r);for(let u in s)Ns(e[u],s[u]);for(let u in l)qs(e[u],l[u]);return e},ta=(e,a,t)=>{t!==void 0&&(e[a]=t)},Ns=(e,a)=>{if(a)for(let t in a)ta(e,t,a[t])},qs=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},po=(e,...a)=>typeof e=="function"?so(lo,e,...a):so(()=>Os(lo(),e),...a);var Us=po({prefix:"ps-"});function p(...e){return Us(Es(e))}import{useIsMutating as jd}from"@tanstack/react-query";import{forwardRef as zs,createElement as Gs}from"react";var mo=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),za=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Hs,createElement as xo}from"react";var go={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Lo=Hs(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...u},d)=>xo("svg",{ref:d,...go,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:za("lucide",r),...u},[...s.map(([n,f])=>xo(n,f)),...Array.isArray(l)?l:[l]]));var b=(e,a)=>{let t=zs(({className:o,...r},l)=>Gs(Lo,{ref:l,iconNode:a,className:za(`lucide-${mo(e)}`,o),...r}));return t.displayName=`${e}`,t};var Me=b("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);var oa=b("ArrowUpWideNarrow",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);var se=b("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var ce=b("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var ra=b("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var le=b("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var sa=b("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var la=b("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var ua=b("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var De=b("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var Ue=b("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var da=b("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var na=b("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var ia=b("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var fa=b("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);var ca=b("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var pa=b("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);var ma=b("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);var ga=b("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var xa=b("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Te=b("PanelLeftClose",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var Ae=b("PanelLeftOpen",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var La=b("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var Ca=b("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var ha=b("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);var Fe=b("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{useEffect as Yd,useState as en}from"react";import{toast as an}from"sonner";import{Slot as Vs}from"@radix-ui/react-slot";import{cva as Ws}from"class-variance-authority";import*as Co from"react";import{jsx as Xs}from"react/jsx-runtime";var Ks=Ws("ps-inline-flex ps-items-center ps-justify-center ps-gap-2 ps-whitespace-nowrap ps-rounded-md ps-text-sm ps-font-medium ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-pointer-events-none disabled:ps-opacity-50 [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",{variants:{variant:{default:"ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/90",destructive:"ps-bg-destructive ps-text-destructive-foreground ps-shadow-sm hover:ps-bg-destructive/90",outline:"ps-border ps-border-input ps-bg-background ps-shadow-sm hover:ps-bg-accent hover:ps-text-accent-foreground",secondary:"ps-bg-secondary ps-text-secondary-foreground ps-shadow-sm hover:ps-bg-secondary/80",ghost:"hover:ps-bg-accent hover:ps-text-accent-foreground",link:"ps-text-primary ps-underline-offset-4 hover:ps-underline"},size:{default:"ps-h-9 ps-px-4 ps-py-2",xs:"ps-h-6 ps-rounded-md ps-px-2 ps-text-xs",sm:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",lg:"ps-h-10 ps-rounded-md ps-px-8",icon:"ps-h-9 ps-w-9"}},defaultVariants:{variant:"default",size:"default"}}),F=Co.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},l)=>Xs(o?Vs:"button",{className:p(Ks({variant:a,size:t,className:e})),ref:l,...r}));F.displayName="Button";import*as Ia from"@radix-ui/react-checkbox";import*as ho from"react";import{jsx as gt}from"react/jsx-runtime";var Sa=ho.forwardRef(({className:e,...a},t)=>gt(Ia.Root,{ref:t,className:p("ps-peer ps-h-4 ps-w-4 ps-shrink-0 ps-rounded-sm ps-border ps-border-primary ps-shadow focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=checked]:ps-text-primary-foreground",e),...a,children:gt(Ia.Indicator,{className:p("ps-flex ps-items-center ps-justify-center ps-text-current"),children:gt(se,{className:"ps-h-4 ps-w-4"})})}));Sa.displayName=Ia.Root.displayName;import*as pe from"@radix-ui/react-popover";import*as So from"react";import{jsx as Io}from"react/jsx-runtime";var bo=pe.Root,wo=pe.Trigger;var xt=So.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Io(pe.Portal,{children:Io(pe.Content,{ref:r,align:a,sideOffset:t,className:p("ps-z-50 ps-w-72 ps-rounded-md ps-border ps-bg-popover ps-p-4 ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-popover-content-transform-origin]",e),...o})}));xt.displayName=pe.Content.displayName;import{useMutation as xl,useQueryClient as Ll}from"@tanstack/react-query";import{QueryClient as ul,QueryClientProvider as dl}from"@tanstack/react-query";import*as ue from"react";import{onlineManager as Qs,useQueryClient as _s}from"@tanstack/react-query";var yo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:d,styleNonce:n,shadowDOMTarget:f}=e;this.#a=ae(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=f,this.#o=ae(l),this.#r=ae(s),this.#s=ae(u),this.#l=ae(d)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=it(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,d;return this.#u?d=this.#u:(d=nt(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#u=d),ft(this.#c,this.#t),ut(d,dt({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()}}))},e);this.#e=!0,this.#d=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#d?.(),this.#e=!1}},vo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;#p;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:d,styleNonce:n,shadowDOMTarget:f,onClose:g}=e;this.#a=ae(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=f,this.#o=ae(l),this.#r=ae(s),this.#s=ae(u),this.#l=ae(d),this.#u=ae(g)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}setOnClose(e){this.#u[1](()=>e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=it(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,[d]=this.#u,n;return this.#d?n=this.#d:(n=nt(()=>import("../OKF6E45R-3IGVLQES.js")),this.#d=n),ft(this.#c,this.#t),ut(n,dt({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()},get onClose(){return d()}}))},e);this.#e=!0,this.#p=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#p?.(),this.#e=!1}};import{jsx as Zs}from"react/jsx-runtime";function Po(e){let a=_s(e.client),t=ue.useRef(null),{buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}=e,[n]=ue.useState(new yo({client:a,queryFlavor:"React Query",version:"5",onlineManager:Qs,buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}));return ue.useEffect(()=>{n.setClient(a)},[a,n]),ue.useEffect(()=>{o&&n.setButtonPosition(o)},[o,n]),ue.useEffect(()=>{r&&n.setPosition(r)},[r,n]),ue.useEffect(()=>{n.setInitialIsOpen(l||!1)},[l,n]),ue.useEffect(()=>{n.setErrorTypes(s||[])},[s,n]),ue.useEffect(()=>(t.current&&n.mount(t.current),()=>{n.unmount()}),[n]),Zs("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as he from"react";import{onlineManager as $s,useQueryClient as js}from"@tanstack/react-query";import{jsx as Ys}from"react/jsx-runtime";function ko(e){let a=js(e.client),t=he.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:l}=e,[s]=he.useState(new vo({client:a,queryFlavor:"React Query",version:"5",onlineManager:$s,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:l,onClose:e.onClose}));return he.useEffect(()=>{s.setClient(a)},[a,s]),he.useEffect(()=>{s.setOnClose(e.onClose??(()=>{}))},[e.onClose,s]),he.useEffect(()=>{s.setErrorTypes(o||[])},[o,s]),he.useEffect(()=>(t.current&&s.mount(t.current),()=>{s.unmount()}),[s]),Ys("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var Ro=process.env.NODE_ENV!=="development"?function(){return null}:Po,dc=process.env.NODE_ENV!=="development"?function(){return null}:ko;import{createContext as nl,useContext as il,useMemo as fl,useState as Lt}from"react";import{toast as cl}from"sonner";import{Toaster as al}from"sonner";import{jsx as tl}from"react/jsx-runtime";var Mo=({...e})=>tl(al,{className:"ps-toaster ps-group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});import{unstable_createAdapterProvider as ol}from"nuqs/adapters/custom";import{useEffect as rl,useState as sl}from"react";function ll(){let e=window.location.hash.slice(1),[a,t]=sl(new URLSearchParams(e));function o(l,{history:s}){let{pathname:u,search:d}=window.location,n=l.toString(),f=`${u}${d}#${n}`;s==="push"?window.history.pushState(null,"",f):window.history.replaceState(null,"",f),t(l)}function r(){let l=window.location.hash.slice(1);return new URLSearchParams(l)}return rl(()=>{function l(){let s=window.location.hash.slice(1);t(new URLSearchParams(s))}return window.addEventListener("hashchange",l),()=>window.removeEventListener("hashchange",l)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var Do=ol(ll);import{jsx as Ga,jsxs as ml}from"react/jsx-runtime";var pl=new ul,To=nl(void 0);function Ao(e){let{children:a,...t}=e,[o,r]=Lt(null),[l,s]=Lt(!1),[u,d]=Lt(!0),n=e.onError;n??=x=>cl.error(x.message);let f=fl(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),g=()=>s(x=>!x),m=()=>d(x=>!x);return ml(dl,{client:pl,children:[Ga(Ro,{}),Ga(Mo,{}),Ga(Do,{children:Ga(To.Provider,{value:{...t,activeTable:o,isFullscreen:l,setActiveTable:r,onError:n,emitTelemetryEvent:f,toggleFullscreen:g,isNavigationOpen:u,toggleNavigation:m},children:a})})]})}function V(){let e=il(To);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function gl(e,a){let t={filter:Qe(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function Fo(e,a){return{...e,__ps_rowid:gl(e,a)}}function Va(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:Fo(t,a)}:o!==void 0?{...e,rows:o.map(r=>Fo(r,a))}:e}function Bo(){let{activeTable:e,adapter:a}=V(),t=Ll(),{schema:o=null,name:r=null}=e??{};return xl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(l){let[s,u]=await a.insert({rows:l,table:e},{});if(s)throw s;return Va(u,e)},onSuccess(l){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},s=>s==null?s:{...s,rows:[...l.rows,...s.rows]})},retry:!1})}import{useQuery as Cl}from"@tanstack/react-query";function Oo(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:l,adapter:s}=V();return Cl({enabled:!!l,gcTime:0,placeholderData(u,d){let[,n,,f]=d?.queryKey||[];if(!(n!==l?.schema||f!==l?.name))return u},async queryFn({signal:u}){let[d,n]=await s.query({pageIndex:a,pageSize:t,sortOrder:o,table:l,filter:r},{abortSignal:u});if(d)throw d;return Va(n,l)},queryKey:["schema",l?.schema||null,"table",l?.name||null,"query","sortOrder",o.map(u=>`${u.column}:${u.direction}`).join(",")||"natural","pageIndex",a,"pageSize",t,"filter",JSON.stringify(r)],staleTime:1/0})}import{useMutation as hl,useQueryClient as Il}from"@tanstack/react-query";function No(){let{activeTable:e,adapter:a,onError:t}=V(),o=Il(),r=["schema",e?.schema??null,"table",e?.name??null];return hl({mutationFn:async l=>{let[s,u]=await a.update(l.details,l.options);if(s)throw s;return u},mutationKey:[...r,"update"],onError(l,s){let{changes:u,row:d}=s.details;t(l),Ct({getFinderFn(){let n={...d,...u},f=Qe(n,e.columns);return g=>f.every(([m,x])=>g[m]===x)},queryClient:o,table:e,updaterFn:function(f){return{...f,...Object.keys(u).reduce((g,m)=>({...g,[m]:d[m]}),{})}}})},onMutate(l){let{details:s}=l;Ct({getFinderFn(){let{row:u}=s,d=Qe(u,e.columns);return n=>d.every(([f,g])=>n[f]===g)},queryClient:o,table:e,updaterFn:function(d){return{...d,...s.changes}}})},onSuccess(l,s){Ct({getFinderFn(){let{changes:u,row:d}=s.details,n={...d,...u},f=Qe(n,e.columns);return g=>f.every(([m,x])=>g[m]===x)},queryClient:o,table:e,updaterFn:function(d){let{__ps_updated_at__:n}=d,{row:f}=l;return n!=null&&f.__ps_updated_at__<=n?d:{...d,...f}}})},retry:!1})}function Ct(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,l;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},s=>{let{rows:u=[]}=s||{};if(u.length===0)return s;let d=u.findIndex(l??=a());if(d===-1)return s;let n=r(u[d]);return{...s,rows:[...u.slice(0,d),n,...u.slice(d+1)]}})}import{useEffect as yl,useMemo as vl,useState as Pl}from"react";import kl from"short-uuid";var W={};ss(W,{keyMap:()=>ht,urlKeys:()=>wl,useQueryState:()=>Be,useQueryStates:()=>ba});Le(W,Yc);import{useQueryState as Sl,useQueryStates as bl}from"nuqs";import*as Yc from"nuqs";function ht(e){return e}function wl(e){return e}var $c=Symbol("BRAND_SYMBOL");function Be(e,a){return Sl(e,a)}function ba(e,a){return bl(e,a)}var Rl={kind:"FilterGroup",filters:[],after:"and",id:kl.generate()};function qo(){let[e,a]=Be("filter",{defaultValue:JSON.stringify(Rl)}),t=vl(()=>JSON.parse(e),[e]),o=s=>void a(JSON.stringify(s)),[r,l]=Pl(t);return yl(()=>{l(t)},[t]),{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:l}}import{useIsMutating as Ml}from"@tanstack/react-query";function Wa(){return Ml({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as Dl}from"react";var Tl=25,Al={pageIndex:W.parseAsIndex.withDefault(0),pageSize:W.parseAsInteger.withDefault(Tl)};function Ka(){let[{pageIndex:e,pageSize:a},t]=ba(Al),o=Dl(r=>{t(typeof r=="function"?l=>{let s=r(l);return{pageIndex:s.pageIndex,pageSize:s.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as Ol,useState as Nl}from"react";import{useMutation as Fl,useQueryClient as Bl}from"@tanstack/react-query";function Eo(){let{activeTable:e,adapter:a}=V(),t=Bl(),{schema:o=null,name:r=null}=e??{};return Fl({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(l){let[s,u]=await a.delete({rows:l,table:e},{});if(s)throw s;return u},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function Uo(e){let{activeTable:a,onError:t}=V(),{paginationState:o}=Ka(),[r,l]=Nl({}),s=Object.keys(r).length!==0,{mutate:u}=Eo();Ol(()=>l({}),[a,o.pageIndex]);function d(){let n=e?.rows.filter(f=>r[f.__ps_rowid]);u(n??[],{onSuccess(){l({})},onError:t})}return{deleteSelection:d,setRowSelectionState:l,rowSelectionState:r,isSelecting:s}}import{useEffect as ql,useState as El}from"react";function Ho(){let[e,a]=Be("sort",{defaultValue:""}),t=s=>{if(!s)return[];try{return s.split(",").map(u=>{let[d,n]=u.split(":");return!d||!n||!["asc","desc"].includes(n)?null:{column:d,direction:n}}).filter(Boolean)}catch(u){return console.error("Failed to parse sorting parameter:",u),[]}},[o,r]=El(()=>t(e));return ql(()=>{let s=t(e);r(s)},[e]),{sortingState:o,setSortingState:s=>{let u=typeof s=="function"?s(o):s;r(u);let d=u.length>0?u.map(n=>`${n.column}:${n.direction}`).join(","):null;a(d)}}}import{isObjectType as iu}from"remeda";import{forwardRef as Zl}from"react";import*as Se from"react";import{jsx as Ie}from"react/jsx-runtime";var It=Se.forwardRef(({className:e,...a},t)=>Ie("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:Ie("table",{ref:t,className:p("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));It.displayName="Table";var St=Se.forwardRef(({className:e,...a},t)=>Ie("thead",{ref:t,className:p(e),...a}));St.displayName="TableHeader";var bt=Se.forwardRef(({className:e,...a},t)=>Ie("tbody",{ref:t,className:p("[&_tr:last-child]:ps-border-0",e),...a}));bt.displayName="TableBody";var Ul=Se.forwardRef(({className:e,...a},t)=>Ie("tfoot",{ref:t,className:p("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));Ul.displayName="TableFooter";var He=Se.forwardRef(({className:e,...a},t)=>Ie("tr",{ref:t,className:p("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));He.displayName="TableRow";var wt=Se.forwardRef(({className:e,...a},t)=>Ie("th",{ref:t,className:p("ps-h-10 ps-px-2 ps-text-left ps-align-middle ps-font-medium ps-text-muted-foreground",e),...a}));wt.displayName="TableHead";var wa=Se.forwardRef(({className:e,...a},t)=>Ie("td",{ref:t,className:p("ps-align-middle",e),...a}));wa.displayName="TableCell";var Hl=Se.forwardRef(({className:e,...a},t)=>Ie("caption",{ref:t,className:p("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));Hl.displayName="TableCaption";import{isValidElement as _l}from"react";import*as v from"@radix-ui/react-context-menu";import*as be from"react";import{jsx as J,jsxs as Pt}from"react/jsx-runtime";var zo=v.Root,Go=v.Trigger;var zl=be.forwardRef(({className:e,inset:a,children:t,...o},r)=>Pt(v.SubTrigger,{ref:r,className:p("ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[state=open]:ps-bg-accent data-[state=open]:ps-text-accent-foreground",a&&"ps-pl-8",e),...o,children:[t,J(le,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));zl.displayName=v.SubTrigger.displayName;var Gl=be.forwardRef(({className:e,...a},t)=>J(v.SubContent,{ref:t,className:p("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a}));Gl.displayName=v.SubContent.displayName;var yt=be.forwardRef(({className:e,...a},t)=>J(v.Portal,{children:J(v.Content,{ref:t,className:p("ps-z-50 ps-max-h-[--radix-context-menu-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a})}));yt.displayName=v.Content.displayName;var vt=be.forwardRef(({className:e,inset:a,...t},o)=>J(v.Item,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",a&&"ps-pl-8",e),...t}));vt.displayName=v.Item.displayName;var Vl=be.forwardRef(({className:e,children:a,checked:t,...o},r)=>Pt(v.CheckboxItem,{ref:r,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[J("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:J(v.ItemIndicator,{children:J(se,{className:"ps-h-4 ps-w-4"})})}),a]}));Vl.displayName=v.CheckboxItem.displayName;var Wl=be.forwardRef(({className:e,children:a,...t},o)=>Pt(v.RadioItem,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[J("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:J(v.ItemIndicator,{children:J(Ue,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));Wl.displayName=v.RadioItem.displayName;var Kl=be.forwardRef(({className:e,inset:a,...t},o)=>J(v.Label,{ref:o,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold ps-text-foreground",a&&"ps-pl-8",e),...t}));Kl.displayName=v.Label.displayName;var Xl=be.forwardRef(({className:e,...a},t)=>J(v.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));Xl.displayName=v.Separator.displayName;var Ql=({className:e,...a})=>J("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});Ql.displayName="ContextMenuShortcut";import{jsx as kt,jsxs as Vo}from"react/jsx-runtime";function Wo(e){let{children:a}=e;return Vo(zo,{children:[kt(Go,{className:"ps-block ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)] ps-text-xs ps-font-mono ps-whitespace-nowrap ps-overflow-hidden ps-text-ellipsis",children:a}),kt(yt,{children:Vo(vt,{onClick:()=>{let t=Rt(a);navigator.clipboard.writeText(t).catch(o=>{console.error("Failed to copy to clipboard:",o)})},className:"ps-flex ps-items-center ps-gap-2",children:[kt(da,{size:12}),"Copy"]})})]})}function Rt(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(_l(e)){let a=e.props;return e.type&&typeof e.type=="function"&&e.type.name==="RevealText"?a.text||"":e.type&&typeof e.type=="function"&&e.type.name==="NullValue"?"NULL":a.children?Rt(a.children):""}return Array.isArray(e)?e.map(Rt).join(""):""}import{jsx as Ko}from"react/jsx-runtime";function E(e){let{children:a,className:t,ref:o,style:r,...l}=e;return Ko(wa,{...l,className:p("ps-p-0 ps-border-r ps-border-b ps-border-table-border ps-bg-table-head","ps-cursor-pointer",t),ref:o,style:r,children:Ko(Wo,{children:a})})}import{jsx as Xo}from"react/jsx-runtime";var Mt=Zl((e,a)=>{let{containerProps:t,value:o,...r}=e;return Xo(E,{...r,...t,ref:a,children:Xo("div",{"data-cell-type":"boolean",children:String(!!o)})})});Mt.displayName="BooleanCell";import{forwardRef as Jl}from"react";import{jsx as $l}from"react/jsx-runtime";var Dt=Jl((e,a)=>{let{containerProps:t,value:o,...r}=e;return $l(E,{...r,...t,ref:a,children:String(o)})});Dt.displayName="DateCell";import{forwardRef as jl}from"react";import{jsx as Yl}from"react/jsx-runtime";var ya=jl((e,a)=>{let{containerProps:t,...o}=e;return Yl(E,{...o,...t,ref:a})});ya.displayName="EmptyCell";import{forwardRef as eu}from"react";import{jsx as au}from"react/jsx-runtime";var Tt=eu((e,a)=>{let{containerProps:t,value:o,options:r,...l}=e;return au(E,{...l,...t,ref:a,children:String(o)})});Tt.displayName="EnumCell";import{forwardRef as tu}from"react";import{jsx as ou}from"react/jsx-runtime";var Xa=tu((e,a)=>{let{containerProps:t,value:o,...r}=e;return ou(E,{...r,...t,ref:a,children:JSON.stringify(o,null,2)})});Xa.displayName="JSONCell";import{forwardRef as ru}from"react";import{jsx as Qo}from"react/jsx-runtime";var At=ru((e,a)=>{let{containerProps:t,...o}=e;return Qo(E,{...o,...t,ref:a,children:Qo("code",{className:"ps-text-gray-500",children:"NULL"})})});At.displayName="NullCell";import{forwardRef as su}from"react";import{jsx as _o}from"react/jsx-runtime";var Ft=su((e,a)=>{let{containerProps:t,value:o,...r}=e;return _o(E,{...r,...t,ref:a,children:_o("div",{"data-cell-type":"numeric",children:o===null?"NULL":String(o)})})});Ft.displayName="NumericCell";import{forwardRef as lu}from"react";import{jsx as uu}from"react/jsx-runtime";var Qa=lu((e,a)=>{let{containerProps:t,value:o,...r}=e;return uu(E,{...r,...t,ref:a,children:String(o)})});Qa.displayName="RawCell";import{forwardRef as du}from"react";import{jsx as nu}from"react/jsx-runtime";var Bt=du((e,a)=>{let{containerProps:t,value:o,...r}=e;return nu(E,{...r,...t,ref:a,children:String(o)})});Bt.displayName="TimeCell";import{jsx as de}from"react/jsx-runtime";function _a({cell:e,column:a,props:t}){let o=e.getValue();if(o===void 0)return de(ya,{});if(o===null)return de(At,{});let{group:r,options:l,isArray:s}=a.datatype;if(r==="json"||s)return de(Xa,{containerProps:t,value:o});if(r==="string")return de(Qa,{containerProps:t,value:o});if(r==="enum")return de(Tt,{containerProps:t,value:o,options:l});if(r==="boolean")return de(Mt,{containerProps:t,value:o});if(r==="datetime")return de(Dt,{containerProps:t,value:o});if(r==="time")return de(Bt,{containerProps:t,value:o});if(r==="numeric")return de(Ft,{containerProps:t,value:o});if(r==="raw")return iu(o)?de(Xa,{containerProps:t,value:o}):de(Qa,{containerProps:t,value:o});throw new Error(`Datatype group "${r}" was not handled in '/cell/get-cell.tsx'`)}import{forwardRef as fu}from"react";import{jsx as Zo}from"react/jsx-runtime";var Ot=fu((e,a)=>{let{row:t,readonly:o,...r}=e;return Zo(E,{ref:a,...r,children:Zo(Sa,{checked:t.getIsSelected(),disabled:!t.getCanSelect()||o,onCheckedChange:t.getToggleSelectedHandler()})})});Ot.displayName="SelectRowCell";import*as we from"@radix-ui/react-popover";import*as Q from"react";import{jsx as va}from"react/jsx-runtime";var Jo=Q.createContext(null),Nt=({children:e,...a})=>{let[t,o]=Q.useState(!1);return va(Jo.Provider,{value:{open:t,setOpen:o},children:va(we.Root,{open:t,onOpenChange:o,...a,children:e})})};Nt.displayName="PopoverCell";var qt=Q.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let l=Q.useRef(null);return va(we.Trigger,{ref:s=>{typeof r=="function"?r(s):r&&(r.current=s),l.current=s},className:p("w-full h-full cursor-pointer",t),...o,children:e})});qt.displayName="PopoverCellTrigger";var Et=Q.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>va(we.Portal,{children:va(we.Content,{ref:r,align:a,sideOffset:t,className:p("ps-flex ps-flex-col ps-gap-2 ps-z-50 ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),onEscapeKeyDown:l=>l.preventDefault(),...o})}));Et.displayName=we.Content.displayName;function $(e){let a=Q.useContext(Jo),t=Q.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=Q.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return Q.useEffect(()=>{let r=l=>{(l.key==="Enter"||l.key==="Return")&&!l.shiftKey?t():l.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as $o,jsxs as cu}from"react/jsx-runtime";function Za(e){let{cellComponent:a,inputComponent:t}=e;return cu(Nt,{children:[$o(qt,{asChild:!0,children:a}),$o(Et,{align:"start",alignOffset:-1,className:"ps-min-w-cell ps-rounded-none ps-bg-muted ps-p-0 ps-z-30 ps-gap-0 ps-border-blue-500 ps-min-w-[calc(var(--radix-popover-trigger-width) + 1px)]",sideOffset:-40,children:t})]})}import{closestCenter as vu,DndContext as Pu,DragOverlay as ku,KeyboardSensor as Ru,PointerSensor as Mu,useSensor as rr,useSensors as Du}from"@dnd-kit/core";import{arrayMove as Tu,SortableContext as Au,sortableKeyboardCoordinates as Fu,useSortable as Bu,verticalListSortingStrategy as Ou}from"@dnd-kit/sortable";import{CSS as Nu}from"@dnd-kit/utilities";import{motion as Gt}from"motion/react";import{AnimateNumber as qu}from"motion-plus/react";import{useMemo as Eu,useState as Vt}from"react";import{Fragment as Uu}from"react/jsx-runtime";import{createPortal as Hu}from"react-dom";import sr from"short-uuid";function jo(e,a,t){let o=e?.datatype.group;if(o===void 0)return"";if(a==="is"||a==="is not")return t.toLowerCase()==="null"?null:t;if(o==="boolean")return t==="true";if(o==="datetime"||o==="enum"||o==="raw"||o==="string"||o==="time")return t;if(o==="json")try{return JSON.parse(t)}catch{return t}return o==="numeric"?t===""?null:Number(t):t}function Yo(e,a,t){let o=e?.datatype.group;if(a&&(a==="is"||a==="is not"))return t===null?"null":String(t);if(o===void 0||t==null)return"";if(o==="boolean"||o==="datetime"||o==="enum"||o==="numeric"||o==="raw"||o==="string"||o==="time")return String(t);if(o==="json"){if(t==="")return"";try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}import{cva as pu}from"class-variance-authority";import{jsx as mu}from"react/jsx-runtime";var Ut=pu("ps-inline-flex ps-items-center ps-rounded-md ps-border ps-px-2.5 ps-py-0.5 ps-text-xs ps-font-semibold ps-transition-colors focus:ps-outline-none focus:ps-ring-2 focus:ps-ring-ring focus:ps-ring-offset-2",{variants:{variant:{default:"ps-border-transparent ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/80",secondary:"ps-border-transparent ps-bg-secondary ps-text-secondary-foreground hover:ps-bg-secondary/80",destructive:"ps-border-transparent ps-bg-destructive ps-text-destructive-foreground ps-shadow hover:ps-bg-destructive/80",outline:"ps-text-foreground"}},defaultVariants:{variant:"default"}});function er({className:e,variant:a,...t}){return mu("div",{className:p(Ut({variant:a}),e),...t})}import*as P from"@radix-ui/react-dropdown-menu";import*as ye from"react";import{jsx as j,jsxs as Ht}from"react/jsx-runtime";var Ja=P.Root,$a=P.Trigger;var gu=ye.forwardRef(({className:e,inset:a,children:t,...o},r)=>Ht(P.SubTrigger,{ref:r,className:p("ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent data-[state=open]:ps-bg-accent [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",a&&"ps-pl-8",e),...o,children:[t,j(le,{className:"ps-ml-auto"})]}));gu.displayName=P.SubTrigger.displayName;var xu=ye.forwardRef(({className:e,...a},t)=>j(P.SubContent,{ref:t,className:p("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...a}));xu.displayName=P.SubContent.displayName;var Pa=ye.forwardRef(({className:e,sideOffset:a=4,...t},o)=>j(P.Portal,{children:j(P.Content,{ref:o,sideOffset:a,className:p("ps-z-50 ps-max-h-[var(--radix-dropdown-menu-content-available-height)] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md","data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...t})}));Pa.displayName=P.Content.displayName;var ja=ye.forwardRef(({className:e,inset:a,...t},o)=>j(P.Item,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50 [&>svg]:ps-size-4 [&>svg]:ps-shrink-0",a&&"ps-pl-8",e),...t}));ja.displayName=P.Item.displayName;var Lu=ye.forwardRef(({className:e,children:a,checked:t,...o},r)=>Ht(P.CheckboxItem,{ref:r,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[j("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:j(P.ItemIndicator,{children:j(se,{className:"ps-h-4 ps-w-4"})})}),a]}));Lu.displayName=P.CheckboxItem.displayName;var Cu=ye.forwardRef(({className:e,children:a,...t},o)=>Ht(P.RadioItem,{ref:o,className:p("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[j("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:j(P.ItemIndicator,{children:j(Ue,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));Cu.displayName=P.RadioItem.displayName;var hu=ye.forwardRef(({className:e,inset:a,...t},o)=>j(P.Label,{ref:o,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));hu.displayName=P.Label.displayName;var Iu=ye.forwardRef(({className:e,...a},t)=>j(P.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Iu.displayName=P.Separator.displayName;var Su=({className:e,...a})=>j("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});Su.displayName="DropdownMenuShortcut";import*as ar from"react";import{jsx as bu}from"react/jsx-runtime";var ne=ar.forwardRef(({className:e,type:a,...t},o)=>bu("input",{type:a,className:p("ps-flex ps-h-9 ps-w-full ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-1 ps-shadow-sm ps-transition-colors file:ps-border-0 file:ps-bg-transparent file:ps-text-sm file:ps-font-medium file:ps-text-foreground placeholder:ps-text-muted-foreground focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50",e),ref:o,...t}));ne.displayName="Input";import*as k from"@radix-ui/react-select";import*as Oe from"react";import{jsx as _,jsxs as zt}from"react/jsx-runtime";var Ya=k.Root;var et=k.Value,ka=Oe.forwardRef(({className:e,children:a,...t},o)=>zt(k.Trigger,{ref:o,className:p("ps-flex ps-h-9 ps-w-full ps-items-center ps-justify-between ps-whitespace-nowrap ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-2 ps-text-sm ps-shadow-sm ps-ring-offset-background data-[placeholder]:ps-text-muted-foreground focus:ps-outline-none focus:ps-ring-1 focus:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 [&>span]:ps-line-clamp-1",e),...t,children:[a,_(k.Icon,{asChild:!0,children:_(ce,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));ka.displayName=k.Trigger.displayName;var tr=Oe.forwardRef(({className:e,...a},t)=>_(k.ScrollUpButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:_(sa,{className:"ps-h-4 ps-w-4"})}));tr.displayName=k.ScrollUpButton.displayName;var or=Oe.forwardRef(({className:e,...a},t)=>_(k.ScrollDownButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:_(ce,{className:"ps-h-4 ps-w-4"})}));or.displayName=k.ScrollDownButton.displayName;var Ra=Oe.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>_(k.Portal,{children:zt(k.Content,{ref:r,className:p("ps-relative ps-z-50 ps-max-h-[--radix-select-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:ps-translate-y-1 data-[side=left]:ps--translate-x-1 data-[side=right]:ps-translate-x-1 data-[side=top]:ps--translate-y-1",e),position:t,...o,children:[_(tr,{}),_(k.Viewport,{className:p("ps-p-1",t==="popper"&&"ps-h-[var(--radix-select-trigger-height)] ps-w-full ps-min-w-[var(--radix-select-trigger-width)]"),children:a}),_(or,{})]})}));Ra.displayName=k.Content.displayName;var wu=Oe.forwardRef(({className:e,...a},t)=>_(k.Label,{ref:t,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));wu.displayName=k.Label.displayName;var X=Oe.forwardRef(({className:e,children:a,...t},o)=>zt(k.Item,{ref:o,className:p("ps-relative ps-flex ps-w-full ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-2 ps-pr-8 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[_("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:_(k.ItemIndicator,{children:_(se,{className:"ps-h-4 ps-w-4"})})}),_(k.ItemText,{children:a})]}));X.displayName=k.Item.displayName;var yu=Oe.forwardRef(({className:e,...a},t)=>_(k.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));yu.displayName=k.Separator.displayName;import{Fragment as ir,jsx as L,jsxs as U}from"react/jsx-runtime";var lr=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>U(Ya,{value:e,onValueChange:a,disabled:t,children:[L(ka,{className:o,children:L(et,{placeholder:"Logic"})}),U(Ra,{children:[L(X,{value:"and",children:L("div",{className:"ps-font-semibold",children:"AND"})}),L(X,{value:"or",children:L("div",{className:"ps-font-semibold",children:"OR"})})]})]}),zu=({activeId:e,items:a,table:t})=>{let o=a.find(u=>u.id===e);if(!o)return null;let r="and",l=!1,s=a.findIndex(u=>u.id===e);if(s>0){let u=a[s-1];u&&(r=u.after,l=!0)}return o.kind==="ColumnFilter"?L(ur,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):L(Wt,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},Gu=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:l,activeDragId:s,onDragStart:u,onDragEndSignal:d})=>{let n=Eu(()=>e.map(m=>m.id),[e]),f=Du(rr(Mu,{activationConstraint:{distance:8}}),rr(Ru,{coordinateGetter:Fu}));return U(Pu,{sensors:f,collisionDetection:vu,onDragStart:u,onDragEnd:m=>{let{active:x,over:S}=m;if(S&&x.id!==S.id){let c=e.findIndex(I=>I.id===x.id),h=e.findIndex(I=>I.id===S.id);c!==-1&&h!==-1&&l(c,h)}d()},children:[L(Au,{items:n,strategy:Ou,children:e.map((m,x)=>{let S=!1,c,h,I=!1;if(x>0){S=!0;let w=e[x-1];c=w.after,h=G=>{let K={...w,after:G};o(x-1,K)},I=x-1===e.length-1}return L(Vu,{filter:m,onUpdate:w=>o(x,w),onDelete:()=>r(x),parentDndId:a,table:t,showLeadingOperator:S,leadingOperatorValue:c,onLeadingOperatorChange:h,isLeadingOperatorTargetLast:I},m.id)})}),Hu(L(ku,{children:s?L("div",{className:"ps-opacity-80",children:L(zu,{activeId:s,items:e,table:t})}):null}),document.body)]})},Vu=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let{attributes:n,listeners:f,setNodeRef:g,transform:m,transition:x,isDragging:S}=Bu({id:e.id,data:{type:e.kind,parentId:o}}),c={transform:Nu.Transform.toString(m),transition:x,opacity:S?.5:1};return L("div",{ref:g,style:c,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?L(ur,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d}):L(Wt,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})})},ur=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let n=S=>{a({...e,column:S})},f=S=>{a({...e,operator:S})},g=S=>{let c=S.target.value,h=r.columns[e.column];if(h!==void 0){let I=jo(h,e.operator,c);a({...e,value:I})}},[m,x]=Vt(Yo(r.columns[e.column],e.operator,e.value));return U(Gt.div,{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[U("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[L("div",{...o,className:"ps-cursor-grab",children:L(fa,{className:"ps-text-gray-500",size:16})}),U("div",{className:"ps-flex ps-items-center ps-gap-2",children:[l&&u?L(lr,{value:s,onValueChange:u,disabled:d}):null,U(Ya,{value:e.column,onValueChange:n,children:[L(ka,{className:"ps-w-28 ps-text-xs ps-h-8",children:L(et,{placeholder:"Select column"})}),L(Ra,{children:Object.keys(r.columns).map(S=>L(X,{value:S,children:S},S))})]}),U(Ya,{value:e.operator,onValueChange:S=>f(S),children:[L(ka,{className:"ps-w-20 ps-text-xs ps-h-8",children:L(et,{placeholder:"Operator"})}),U(Ra,{children:[L(X,{value:"=",children:"="}),L(X,{value:"!=",children:"!="}),L(X,{value:">",children:">"}),L(X,{value:">=",children:">="}),L(X,{value:"<",children:"<"}),L(X,{value:"<=",children:"<="}),L(X,{value:"is",children:"is"}),L(X,{value:"is not",children:"is not"}),L(X,{value:"like",children:"like"}),L(X,{value:"not like",children:"not like"}),L(X,{value:"ilike",children:"ilike"}),L(X,{value:"not ilike",children:"not ilike"})]})]}),L(ne,{value:m,onChange:S=>{x(S.target.value),g(S)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),L("div",{className:"ps-flex ps-items-center ps-gap-2",children:L(F,{variant:"ghost",size:"xs",onClick:t,children:L(Fe,{size:14})})})]})},Wt=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:l,showLeadingOperator:s,leadingOperatorValue:u,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:n})=>{let[f,g]=Vt(!0),[m,x]=Vt(null),S=()=>{let H={id:sr.generate(),kind:"ColumnFilter",column:Object.keys(l.columns)[0],operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,H]})},c=()=>{let H={id:sr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,H]})},h=(H,Z)=>{let q=[...e.filters];q[H]=Z,a({...e,filters:q})},I=H=>{let Z=[...e.filters];Z.splice(H,1),a({...e,filters:Z})},w=H=>{x(H.active.id)},G=()=>{x(null)},K=(H,Z)=>{if(H===Z)return;let q=Tu(e.filters,H,Z);a({...e,filters:q})},oe=()=>f?!e.filters||e.filters.length===0?L("div",{className:"ps-pl-6 ps-text-sm ps-text-neutral-500 ps-italic",children:"This group is empty. Add a filter or another group."}):L(Gt.div,{transition:{layout:{duration:.12}},children:L("div",{className:p("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:L(Gu,{items:e.filters,parentGroupId:e.id,table:l,onUpdateItem:h,onDeleteItem:I,onReorderItems:K,activeDragId:m,onDragStart:w,onDragEndSignal:G})})}):null;return L(Gt.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:U("div",{className:p("ps-flex ps-flex-col ps-w-full",f?"ps-gap-2":""),children:[U("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[U("div",{className:"ps-flex ps-items-center ps-gap-2",children:[!r&&L("div",{...o,className:"ps-cursor-grab",onClick:()=>g(!f),children:f?L(ce,{size:16}):L(le,{size:16})}),s&&d&&!r&&L("div",{className:"ps-flex ps-items-center",children:L(lr,{value:u,onValueChange:d,disabled:n})}),U(F,{variant:"outline",size:"sm",onClick:S,className:p("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&L(er,{className:"ps-transition-all",children:L(qu,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),L(F,{variant:"outline",size:"sm",onClick:c,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),U("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&U(Ja,{children:[L($a,{asChild:!0,children:L(F,{variant:"ghost",size:"sm",children:L(De,{className:"ps-size-4"})})}),L(Pa,{align:"center",className:"ps-w-full",children:e.filters.length===0?L("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600 ps-font-mono",children:"No filters applied yet. Add filters to preview your query."}):L("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm",children:L(dr,{filter:e})})})]}),!r&&L(F,{variant:"ghost",size:"xs",onClick:t,children:L(Fe,{size:14})})]})]}),L("div",{className:p(r?"":"ps-ml-6"),children:oe()})]})})},dr=({filter:e})=>{let a=0;if(e.filters.length===0)return"( )";let t=e.filters.map((o,r)=>{let l,s=e.filters.length-1===r;if(a===-1&&(a=0),o.after==="and"&&!s&&(a+=1),a&&(s||o.after==="or")&&(a=-1),o.kind==="ColumnFilter"){let{column:u,operator:d}=o;l=U(ir,{children:[U("span",{children:[" ",u," "]}),U("span",{children:[" ",d," "]}),L("span",{children:" ? "})]})}else l=L(dr,{filter:o});return U(Uu,{children:[a===1?L("span",{className:"ps-font-semibold",children:"("}):"",l,a===-1?L("span",{className:"ps-font-semibold",children:")"}):"",!s&&U("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return L("span",{children:t})};function nr({filter:e,setFilter:a,table:t}){return L(ir,{children:L(Wt,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:t})})}import{DndContext as sd,MouseSensor as ld,useSensor as ud,useSensors as dd}from"@dnd-kit/core";import{arrayMove as nd,horizontalListSortingStrategy as id,SortableContext as fd,useSortable as cd}from"@dnd-kit/sortable";import{CSS as pd}from"@dnd-kit/utilities";import{getCoreRowModel as md,useReactTable as gd}from"@tanstack/react-table";import*as ve from"react";import C from"react";function Ne(){return Ne=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},Ne.apply(null,arguments)}var Wu=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function Ku(e,a){let[t,o]=C.useState();C.useEffect(()=>{let l=Wu(e);o(typeof l>"u"||l===null?typeof a=="function"?a():a:l)},[a,e]);let r=C.useCallback(l=>{o(s=>{let u=l;typeof l=="function"&&(u=l(s));try{localStorage.setItem(e,JSON.stringify(u))}catch{}return u})},[e]);return[t,r]}var me={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},pr=C.createContext(me);function mr(e){let{theme:a,...t}=e;return C.createElement(pr.Provider,Ne({value:a},t))}function Xu(){return C.useContext(pr)}function Qu(e){let[a,t]=C.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return C.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=l=>{let{matches:s}=l;return t(s)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var _u=typeof window>"u";function ie(e,a,t){return t===void 0&&(t={}),C.forwardRef((o,r)=>{let{style:l,...s}=o,u=Xu(),d=Object.entries(t).reduce((n,f)=>{let[g,m]=f;return Qu(g)?{...n,...typeof m=="function"?m(s,u):m}:n},{});return C.createElement(e,{...s,style:{...typeof a=="function"?a(s,u):a,...l,...d},ref:r})})}function Zu(){let e=C.useRef(!1),a=C.useCallback(()=>e.current,[]);return C[_u?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var Ju=ie("div",(e,a)=>({fontSize:"clamp(12px, 1.5vw, 14px)",fontFamily:"sans-serif",display:"flex",backgroundColor:a.background,color:a.foreground}),{"(max-width: 700px)":{flexDirection:"column"},"(max-width: 600px)":{fontSize:".9em"}});ie("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var $u=ie("button",(e,a)=>({appearance:"none",fontSize:".9em",fontWeight:"bold",background:a.gray,border:"0",borderRadius:".3em",color:"white",padding:".5em",opacity:e.disabled?".5":void 0,cursor:"pointer"}));ie("code",{fontSize:".9em"});ie("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));ie("select",(e,a)=>({display:"inline-block",fontSize:".9em",fontFamily:"sans-serif",fontWeight:"normal",lineHeight:"1.3",padding:".3em 1.5em .3em .5em",height:"auto",border:0,borderRadius:".2em",appearance:"none",WebkitAppearance:"none",backgroundColor:a.inputBackgroundColor,backgroundImage:`url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,backgroundRepeat:"no-repeat",backgroundPosition:"right .55em center",backgroundSize:".65em auto, 100%",color:a.inputTextColor}),{"(max-width: 500px)":{display:"none"}});var fr=ie("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),at=ie("span",{cursor:"pointer",color:"white"}),ju=ie("span",(e,a)=>({color:a.danger})),Kt=ie("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),Yu=ie("span",{color:"grey",fontSize:".7rem"}),cr=e=>{let{expanded:a,style:t={},...o}=e;return C.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},ed=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:l,type:s,expanded:u,toggle:d,pageSize:n,renderer:f}=e,[g,m]=C.useState(void 0),[x,S]=C.useState([]),c=()=>{m(o())};return C.createElement(fr,{key:t},l!=null&&l.length?C.createElement(C.Fragment,null,C.createElement(at,{onClick:()=>d()},C.createElement(cr,{expanded:u})," ",t," ",C.createElement(Yu,null,String(s).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),u?l.length===1?C.createElement(Kt,null,r.map(h=>a(h))):C.createElement(Kt,null,l.map((h,I)=>C.createElement("div",{key:I},C.createElement(fr,null,C.createElement(at,{onClick:()=>S(w=>w.includes(I)?w.filter(G=>G!==I):[...w,I])},C.createElement(cr,{expanded:u})," [",I*n," ..."," ",I*n+n-1,"]"),x.includes(I)?C.createElement(Kt,null,h.map(w=>a(w))):null)))):null):s==="function"?C.createElement(C.Fragment,null,C.createElement(ge,{renderer:f,label:C.createElement("button",{onClick:c},C.createElement(at,null,t)," \u{1F504}"," "),value:g,defaultExpanded:{}})):C.createElement(C.Fragment,null,C.createElement(at,null,t,":")," ",C.createElement(ju,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function ge(e){let{value:a,defaultExpanded:t,renderer:o=ed,pageSize:r=100,depth:l=0,...s}=e,[u,d]=C.useState(t),n=c=>{d(h=>typeof c<"u"?c:!h)},f=[],g=typeof a,m,x=[],S=c=>{let h=f.concat(c.label),I=t===!0?{[c.label]:!0}:t?.[c.label];return{...c,subPath:c,path:h,depth:l+1,defaultExpanded:I}};if(Array.isArray(a)?(g="array",m=a.map((c,h)=>S({label:h,value:c}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(g="Iterable",m=Array.from(a,(c,h)=>S({label:h,value:c}))):typeof a=="function"?g="function":typeof a=="object"&&a!==null&&(g="object",m=Object.entries(a).map(c=>{let[h,I]=c;return S({label:h,value:I})})),m){let c=0;for(;c<m.length;)x.push(m.slice(c,c+r)),c=c+r}return o({handleEntry:c=>C.createElement(ge,Ne({key:c.label,renderer:o},s,c)),type:g,subEntries:m,subEntryPages:x,depth:l,value:a,path:f,expanded:u,toggle:n,pageSize:r,...s})}function gr(e){return ve.createElement("svg",Ne({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),ve.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},ve.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},ve.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},ve.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},ve.createElement("path",{d:"M39.7239712,51.3436237 C36.631224,36.362877 35.9675112,24.8727722 37.9666331,16.5293551 C39.1555965,11.5671678 41.3293088,7.51908462 44.6346064,4.59846305 C48.1241394,1.51504777 52.5360327,0.00201216606 57.493257,0.00201216606 C65.6712013,0.00201216606 74.2682602,3.72732143 83.4557246,10.8044264 C87.2031203,13.6910458 91.0924366,17.170411 95.1316515,21.2444746 C95.4531404,20.8310265 95.8165416,20.4410453 96.2214301,20.0806152 C107.64098,9.91497158 117.255245,3.59892716 125.478408,1.16365068 C130.367899,-0.284364005 134.958526,-0.422317978 139.138936,0.983031021 C143.551631,2.46646844 147.06766,5.53294888 149.548314,9.82810912 C153.642288,16.9166735 154.721918,26.2310983 153.195595,37.7320243 C152.573451,42.4199112 151.50985,47.5263831 150.007094,53.0593153 C150.574045,53.1277086 151.142416,53.2532808 151.705041,53.4395297 C166.193932,58.2358678 176.453582,63.3937462 182.665021,69.2882839 C186.360669,72.7953831 188.773972,76.6998434 189.646365,81.0218204 C190.567176,85.5836746 189.669313,90.1593316 187.191548,94.4512967 C183.105211,101.529614 175.591643,107.11221 164.887587,111.534031 C160.589552,113.309539 155.726579,114.917559 150.293259,116.363748 C150.541176,116.92292 150.733521,117.516759 150.862138,118.139758 C153.954886,133.120505 154.618598,144.61061 152.619477,152.954027 C151.430513,157.916214 149.256801,161.964297 145.951503,164.884919 C142.46197,167.968334 138.050077,169.48137 133.092853,169.48137 C124.914908,169.48137 116.31785,165.756061 107.130385,158.678956 C103.343104,155.761613 99.4108655,152.238839 95.3254337,148.108619 C94.9050753,148.765474 94.3889681,149.376011 93.7785699,149.919385 C82.3590198,160.085028 72.744755,166.401073 64.5215915,168.836349 C59.6321009,170.284364 55.0414736,170.422318 50.8610636,169.016969 C46.4483686,167.533532 42.9323404,164.467051 40.4516862,160.171891 C36.3577116,153.083327 35.2780823,143.768902 36.8044053,132.267976 C37.449038,127.410634 38.56762,122.103898 40.1575891,116.339009 C39.5361041,116.276104 38.9120754,116.144816 38.2949591,115.940529 C23.8060684,111.144191 13.5464184,105.986312 7.33497892,100.091775 C3.63933121,96.5846754 1.22602752,92.6802151 0.353635235,88.3582381 C-0.567176333,83.7963839 0.330686581,79.2207269 2.80845236,74.9287618 C6.89478863,67.8504443 14.4083565,62.2678481 25.1124133,57.8460273 C29.5385143,56.0176154 34.5637208,54.366822 40.1939394,52.8874674 C39.9933393,52.3969171 39.8349374,51.8811235 39.7239712,51.3436237 Z",id:"Path",fill:"#002C4B",fillRule:"nonzero",transform:"translate(95.000000, 85.000000) scale(-1, 1) translate(-95.000000, -85.000000) "}),ve.createElement("path",{d:"M91.735,110 L91.735,116 L80.6322051,116 C78.8411286,116 77.1868614,115.041975 76.2954489,113.488483 L74.294,110 L91.735,110 Z M116.181,110 L114.180256,113.488483 C113.288844,115.041975 111.634576,116 109.8435,116 L98.735,116 L98.735,110 L116.181,110 Z M91.735,96 L91.735,103 L70.277,103 L66.26,96 L91.735,96 Z M124.215,96 L120.198,103 L98.735,103 L98.735,96 L124.215,96 Z M91.735,82 L91.735,89 L62.244,89 L61.6632438,87.9884826 C60.7789187,86.4473417 60.7789187,84.5526583 61.6632438,83.0115174 L62.243,82 L91.735,82 Z M128.232,82 L128.812461,83.0115174 C129.696786,84.5526583 129.696786,86.4473417 128.812461,87.9884826 L128.231,89 L98.735,89 L98.735,82 L128.232,82 Z M91.735,68 L91.735,75 L66.26,75 L70.277,68 L91.735,68 Z M120.198,68 L124.215,75 L98.735,75 L98.735,68 L120.198,68 Z M91.735,55 L91.735,61 L74.293,61 L76.2954489,57.5115174 C77.1868614,55.958025 78.8411286,55 80.6322051,55 L91.735,55 Z M109.8435,55 C111.634576,55 113.288844,55.958025 114.180256,57.5115174 L116.182,61 L98.735,61 L98.735,55 L109.8435,55 Z",id:"Polygon-2",fill:"#FFD94C"}),ve.createElement("path",{d:"M54.8601729,98.3577578 C56.1715224,97.6082856 57.8360246,98.0746014 58.5779424,99.3993034 L58.5779424,99.3993034 L59.0525843,100.24352 C62.8563392,106.982993 66.8190116,113.380176 70.9406016,119.435068 C75.8078808,126.585427 81.28184,133.82411 87.3624792,141.151115 C88.3168778,142.30114 88.1849437,144.011176 87.065686,144.997937 L87.065686,144.997937 L86.4542085,145.534625 C66.3465389,163.103314 53.2778188,166.612552 47.2480482,156.062341 C41.3500652,145.742717 43.4844915,126.982888 53.6513274,99.7828526 C53.876818,99.1795821 54.3045861,98.675291 54.8601729,98.3577578 Z M140.534177,119.041504 C141.986131,118.785177 143.375496,119.742138 143.65963,121.194242 L143.65963,121.194242 L143.812815,121.986376 C148.782365,147.995459 145.283348,161 133.315764,161 C121.609745,161 106.708724,149.909007 88.6127018,127.727022 C88.2113495,127.235047 87.9945723,126.617371 88,125.981509 C88.013158,124.480686 89.2357854,123.274651 90.730918,123.287756 L90.730918,123.287756 L91.6846544,123.294531 C99.3056979,123.335994 106.714387,123.071591 113.910723,122.501323 C122.409039,121.82788 131.283523,120.674607 140.534177,119.041504 Z M147.408726,63.8119663 C147.932139,62.4026903 149.508386,61.6634537 150.954581,62.149012 L150.954581,62.149012 L151.742552,62.4154854 C177.583763,71.217922 187.402356,80.8916805 181.198332,91.4367609 C175.129904,101.751366 157.484347,109.260339 128.26166,113.963678 C127.613529,114.067994 126.948643,113.945969 126.382735,113.618843 C125.047025,112.846729 124.602046,111.158214 125.388848,109.847438 L125.388848,109.847438 L125.889328,109.0105 C129.877183,102.31633 133.481358,95.6542621 136.701854,89.0242957 C140.50501,81.1948179 144.073967,72.7907081 147.408726,63.8119663 Z M61.7383398,56.0363218 C62.3864708,55.9320063 63.0513565,56.0540315 63.6172646,56.3811573 C64.9529754,57.153271 65.3979538,58.8417862 64.6111517,60.1525615 L64.6111517,60.1525615 L64.1106718,60.9895001 C60.1228168,67.6836699 56.5186416,74.3457379 53.2981462,80.9757043 C49.49499,88.8051821 45.9260328,97.2092919 42.5912744,106.188034 C42.0678608,107.59731 40.4916142,108.336546 39.045419,107.850988 L39.045419,107.850988 L38.2574475,107.584515 C12.4162372,98.782078 2.59764398,89.1083195 8.80166786,78.5632391 C14.8700957,68.2486335 32.515653,60.7396611 61.7383398,56.0363218 Z M103.545792,24.4653746 C123.653461,6.89668641 136.722181,3.38744778 142.751952,13.9376587 C148.649935,24.2572826 146.515508,43.0171122 136.348673,70.2171474 C136.123182,70.8204179 135.695414,71.324709 135.139827,71.6422422 C133.828478,72.3917144 132.163975,71.9253986 131.422058,70.6006966 L131.422058,70.6006966 L130.947416,69.7564798 C127.143661,63.0170065 123.180988,56.6198239 119.059398,50.564932 C114.192119,43.4145727 108.71816,36.1758903 102.637521,28.8488847 C101.683122,27.6988602 101.815056,25.9888243 102.934314,25.0020629 L102.934314,25.0020629 Z M57.6842361,8 C69.3902551,8 84.2912758,19.0909926 102.387298,41.2729777 C102.788651,41.7649527 103.005428,42.3826288 103,43.0184911 C102.986842,44.5193144 101.764215,45.7253489 100.269082,45.7122445 L100.269082,45.7122445 L99.3153456,45.7054689 C91.6943021,45.6640063 84.2856126,45.9284091 77.0892772,46.4986773 C68.5909612,47.17212 59.7164767,48.325393 50.4658235,49.9584962 C49.0138691,50.2148231 47.6245044,49.2578618 47.3403697,47.805758 L47.3403697,47.805758 L47.1871846,47.0136235 C42.2176347,21.0045412 45.7166519,8 57.6842361,8 Z",id:"Combined-Shape",fill:"#FF4154"}))))))}function xr(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:l="footer"}=e,s=C.useRef(null),u=C.useRef(null),[d,n]=Ku("reactTableDevtoolsOpen",a),f=Zu(),{style:g={},...m}=o,{style:x={},onClick:S,...c}=r;return f()?C.createElement(l,{ref:s,className:"ReactTableDevtools"},C.createElement(mr,{theme:me},d?C.createElement(ad,Ne({ref:u},m,{table:t,isOpen:d,setIsOpen:n,style:{maxHeight:"80vh",width:"100%",...g}})):C.createElement("button",Ne({type:"button"},c,{"aria-label":"Open React Table Devtools",onClick:h=>{n(!0),S&&S(h)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...x}}),C.createElement(gr,{"aria-hidden":!0})))):null}var ad=C.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:l,...s}=a;return C.createElement(mr,{theme:me},C.createElement(Ju,Ne({ref:t,className:"ReactTableDevtoolsPanel"},s),C.createElement("style",{dangerouslySetInnerHTML:{__html:`
|
|
2
2
|
.ReactTableDevtoolsPanel * {
|
|
3
|
-
scrollbar-color: ${
|
|
3
|
+
scrollbar-color: ${me.backgroundAlt} ${me.gray};
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.ReactTableDevtoolsPanel *::-webkit-scrollbar, .ReactTableDevtoolsPanel scrollbar {
|
|
@@ -9,15 +9,15 @@ import"../chunk-IAKOOX7B.js";import{D as Ze}from"../chunk-OGMDOPWW.js";import{B
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.ReactTableDevtoolsPanel *::-webkit-scrollbar-track, .ReactTableDevtoolsPanel scrollbar-track {
|
|
12
|
-
background: ${
|
|
12
|
+
background: ${me.backgroundAlt};
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
.ReactTableDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactTableDevtoolsPanel scrollbar-thumb {
|
|
16
|
-
background: ${
|
|
16
|
+
background: ${me.gray};
|
|
17
17
|
border-radius: .5em;
|
|
18
|
-
border: 3px solid ${
|
|
18
|
+
border: 3px solid ${me.backgroundAlt};
|
|
19
19
|
}
|
|
20
|
-
`}}),x.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${ce.grayAlt}`,display:"flex",flexDirection:"column"}},x.createElement("div",{style:{padding:".5em",background:ce.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},x.createElement(gr,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>l(!1)}),x.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",x.createElement("span",{style:{fontWeight:100}},"Devtools")),x.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?x.createElement(Xu,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{l(!1)}},"Close"):null)),x.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},x.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},x.createElement(pe,{label:"Instance",value:o,defaultExpanded:!1}),x.createElement("div",{style:{height:".5rem"}}),x.createElement(pe,{label:"State",value:o.getState(),defaultExpanded:!1}),x.createElement("div",{style:{height:".5rem"}}),x.createElement(pe,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),x.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},x.createElement(pe,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),x.createElement(pe,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),x.createElement(pe,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),x.createElement(pe,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),x.createElement(pe,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as Cd,motion as hd}from"motion/react";import{useEffect as Id,useMemo as Sd,useState as Zt}from"react";import{jsx as $u}from"react/jsx-runtime";function ea({className:e,...a}){return $u("div",{className:c("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{flexRender as sd}from"@tanstack/react-table";import{AnimatePresence as ld,motion as hr}from"motion/react";import*as D from"@radix-ui/react-dropdown-menu";import*as ye from"react";import{jsx as $,jsxs as _t}from"react/jsx-runtime";var Lr=D.Root,Cr=D.Trigger;var ju=ye.forwardRef(({className:e,inset:a,children:t,...o},r)=>_t(D.SubTrigger,{ref:r,className:c("ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent data-[state=open]:ps-bg-accent [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",a&&"ps-pl-8",e),...o,children:[t,$(re,{className:"ps-ml-auto"})]}));ju.displayName=D.SubTrigger.displayName;var Yu=ye.forwardRef(({className:e,...a},t)=>$(D.SubContent,{ref:t,className:c("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...a}));Yu.displayName=D.SubContent.displayName;var Xt=ye.forwardRef(({className:e,sideOffset:a=4,...t},o)=>$(D.Portal,{children:$(D.Content,{ref:o,sideOffset:a,className:c("ps-z-50 ps-max-h-[var(--radix-dropdown-menu-content-available-height)] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md","data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...t})}));Xt.displayName=D.Content.displayName;var et=ye.forwardRef(({className:e,inset:a,...t},o)=>$(D.Item,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50 [&>svg]:ps-size-4 [&>svg]:ps-shrink-0",a&&"ps-pl-8",e),...t}));et.displayName=D.Item.displayName;var ed=ye.forwardRef(({className:e,children:a,checked:t,...o},r)=>_t(D.CheckboxItem,{ref:r,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[$("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:$(D.ItemIndicator,{children:$(oe,{className:"ps-h-4 ps-w-4"})})}),a]}));ed.displayName=D.CheckboxItem.displayName;var ad=ye.forwardRef(({className:e,children:a,...t},o)=>_t(D.RadioItem,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[$("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:$(D.ItemIndicator,{children:$(ze,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));ad.displayName=D.RadioItem.displayName;var td=ye.forwardRef(({className:e,inset:a,...t},o)=>$(D.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));td.displayName=D.Label.displayName;var od=ye.forwardRef(({className:e,...a},t)=>$(D.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));od.displayName=D.Separator.displayName;var rd=({className:e,...a})=>$("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});rd.displayName="DropdownMenuShortcut";import{Fragment as Qt,jsx as E,jsxs as me}from"react/jsx-runtime";function Ir(e){let{header:a,className:t}=e;return me("div",{className:c("ps-flex ps-items-center ps-justify-between",t),children:[me("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[E("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:a.isPlaceholder?null:E("span",{className:"ps-flex ps-min-w-0",children:E("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:sd(a.column.columnDef.header,a.getContext())})})}),me("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[E("span",{className:"ps-flex ps-items-center ps-ml-1",children:E(ld,{mode:"wait",children:a.column.getIsSorted()==="desc"?E(hr.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:E(Ia,{size:14,className:"ps-text-muted-foreground"})},"desc"):a.column.getIsSorted()==="asc"?E(hr.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:E(Sa,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),a.column.getCanPin()&&a.column.id!=="select"&&me(Lr,{children:[E(Cr,{asChild:!0,children:E(O,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:E(ie,{size:12})})}),me(Xt,{children:[a.column.getCanSort()&&E(et,{onClick:()=>a.column.toggleSorting(),children:E("span",{className:"ps-flex ps-items-center ps-gap-2",children:a.column.getNextSortingOrder()==="desc"?me(Qt,{children:[E(De,{size:16}),"Sort descending"]}):a.column.getNextSortingOrder()==="asc"?me(Qt,{children:[E(da,{size:16}),"Sort ascending"]}):me(Qt,{children:[E(Be,{size:16}),"Cancel sorting"]})})}),E(et,{onClick:()=>a.column.pin(a.column.getIsPinned()?!1:"left"),children:a.column.getIsPinned()?me("span",{className:"ps-flex ps-items-center ps-gap-2",children:[E(ba,{size:16}),"Unpin column"]}):me("span",{className:"ps-flex ps-items-center ps-gap-2",children:[E(wa,{size:16}),"Pin column"]})})]})]})]})]}),a.column.getCanResize()&&E("button",{type:"button",tabIndex:0,onMouseDown:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onTouchStart:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onClick:o=>o.stopPropagation(),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),o.stopPropagation(),a.getResizeHandler()(o))},className:c("ps-absolute ps-right-0 ps-top-0 ps-h-full ps-w-px ps-cursor-col-resize ps-border ps-border-transparent hover:ps-border-table-border"),"aria-label":"Resize column"})]})}import{jsx as Sr}from"react/jsx-runtime";function br({className:e}){return Sr("div",{"data-loading-bar":!0,className:c("ps-h-[2px] ps-w-full ps-overflow-hidden ps-bg-table-border ps-z-50",e),children:Sr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as j,jsxs as at}from"react/jsx-runtime";function wr(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return j("div",{className:"ps-rounded-b-lg ps-overflow-clip ps-sticky ps-bottom-0 ps-left-0 ps-border-t-0 w-full ps-z-20 ps-p-0",children:j("div",{className:"ps-flex ps-items-center ps-justify-between ps-space-x-2 ps-py-2 ps-px-2 ps-border-t ps-border-table-border ps-backdrop-blur-sm ps-bg-table-head/90",children:t==="basic"?at("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[j(O,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),j(O,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):j("div",{className:"ps-flex ps-items-center ps-space-x-2",children:at("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[j(O,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:j(fa,{className:"ps-w-4 ps-h-4"})}),j(O,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:j(na,{className:"ps-w-4 ps-h-4"})}),at("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",j(ue,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:l=>{let s=l.target.value?Number(l.target.value)-1:0;a.setPageIndex(s)}}),at("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),j(O,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:j(re,{className:"ps-w-4 ps-h-4"})}),j(O,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:j(ca,{className:"ps-w-4 ps-h-4"})})]})})})})}function ve(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right",l=e.id==="__ps_select";return{className:c("ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",(o||r)&&"ps-sticky",(o||r)&&a==="header"&&(l?"ps-z-30":"ps-z-20"),(o||r)&&a==="cell"&&(l?"ps-z-10":"ps-z-0"),o&&"ps-shadow-[2px_0_5px_-2px_rgba(0,0,0,0.1)]",r&&"ps-shadow-[-2px_0_5px_-2px_rgba(0,0,0,0.1)]"),style:{minWidth:`${e.getSize()}px`,width:`${e.getSize()}px`,left:o?`${e.getStart("left")}px`:void 0,right:r?`${e.getAfter("right")}px`:void 0,position:t?"sticky":void 0}}}import{Fragment as yd,jsx as F,jsxs as aa}from"react/jsx-runtime";var bd=e=>{let{children:a,className:t,header:o,style:r}=e,l="disableDragging"in o.column.columnDef,{attributes:s,listeners:u,transform:n,transition:d,setNodeRef:i,isDragging:g}=md({id:o.id}),m={...r,cursor:"grab",touchAction:"none",transform:gd.Transform.toString(n),transition:d},L=c(t,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),S=c(L,g&&"!ps-z-50 ps-border-2 ps-border-violet-500");return F(Ve,{ref:i,...s,...u,style:l?r:m,className:l?L:S,children:F("div",{className:"ps-w-full",children:a})})};function vr(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:u,pageCount:n,paginationState:d,rows:i,rowSelectionState:g,sortingState:m}=e,[L,S]=Zt([]),[p,C]=Zt({left:["__ps_select"],right:[]}),[h,k]=Zt({}),U=Sd(()=>yr(m),[m]),_=o||r;Id(()=>{S(a.map(({accessorKey:v})=>v)),C({left:["__ps_select"],right:[]}),k({})},[a]);function te({active:v,over:w}){w&&v.id!==w.id&&S(V=>{let R=V.indexOf(v.id),Q=V.indexOf(w.id);return fd(V,R,Q)})}let ke=nd(dd,{activationConstraint:{distance:10}}),Re=id(ke),y=Ld({columnResizeMode:"onChange",columns:a,data:i,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(u&&m),getCoreRowModel:xd(),getRowId:({__ps_rowid:v})=>v,manualPagination:!0,manualSorting:!0,onColumnOrderChange:S,onColumnPinningChange:C,onColumnSizingChange:k,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:v=>u?.(w=>(typeof v=="function"&&(v=v(yr(w))),wd(v))),pageCount:n,state:{columnOrder:L,columnPinning:p,columnSizing:h,pagination:d,rowSelection:g,sorting:U}});return aa(yd,{children:[process.env.NODE_ENV==="production"?null:F(xr,{table:y}),aa("div",{"data-studio":"content",className:"ps-flex-1 ps-w-0 ps-h-0 ps-min-w-full ps-flex ps-flex-col ps-relative",children:[F("div",{children:_&&F(br,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),F(ud,{sensors:Re,onDragEnd:te,children:aa(It,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[F(St,{children:y.getHeaderGroups().map(v=>F(Ge,{children:F(pd,{items:v.headers.filter(w=>!("disableDragging"in w.column.columnDef)).map(w=>w.id),strategy:cd,children:v.headers.map(w=>{if(w.column.id==="__ps_select"){let V=w.column.columnDef.header;if(typeof V=="function"){let R=V(w.getContext());if(typeof R=="function"){let Q=ve(w.column,"header");return F(Ve,{className:c(Q.className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Q.style,children:R({})},w.id)}return F(Ve,{className:c(ve(w.column,"header").className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:ve(w.column,"header").style,children:R},w.id)}return null}return F(bd,{header:w,table:y,...ve(w.column,"header"),children:F(Ir,{header:w})},w.id)})})},v.id))}),aa(bt,{children:[t?.(y),y.getRowModel().rows?.length?y.getRowModel().rows.map(v=>F(Ge,{className:c("ps-bg-table-row ps-odd:bg-table-row-odd ps-group [&:last-of-type_td]:ps-border-b-0 ps-group"),children:v.getVisibleCells().map((w,V)=>{if(typeof w.column.columnDef.cell=="function"){let R=w.column.columnDef.cell(w.getContext());return F(R,{...ve(w.column,"cell"),className:"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100"},V)}else return F(Oe,{...ve(w.column,"cell"),children:w.getValue()},w.id)})},v.id)):F(Ge,{children:F(Oe,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&aa("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[F(ea,{className:"ps-h-4 ps-w-full"}),F(ea,{className:"ps-h-4 ps-w-4/5"}),F(ea,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!n||n<2?null:F(wr,{table:y,variant:"numeric"}),F(Cd,{mode:"wait",children:y.getRowModel().rows?.length===0&&!o&&!r&&F(hd.div,{className:"ps-flex ps-items-center ps-justify-center ps-absolute -ps-inset-0 ps-pointer-events-none",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:aa("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[F("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),F("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function yr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function wd(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import*as ne from"@radix-ui/react-tooltip";import*as kr from"react";import{jsx as Pr}from"react/jsx-runtime";var Rr=ne.Provider,Mr=ne.Root,Tr=ne.Trigger,Jt=kr.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Pr(ne.Portal,{children:Pr(ne.Content,{ref:o,sideOffset:a,className:c("ps-z-50 ps-overflow-hidden ps-rounded-md ps-bg-primary ps-px-3 ps-py-1.5 ps-text-xs ps-text-primary-foreground ps-animate-in ps-fade-in-0 ps-zoom-in-95 data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=closed]:ps-zoom-out-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-tooltip-content-transform-origin]",e),...t})}));Jt.displayName=ne.Content.displayName;import{jsx as We,jsxs as Dr}from"react/jsx-runtime";function Ar({column:e}){return Dr("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&We(Rr,{delayDuration:120,children:Dr(Mr,{children:[We(Tr,{asChild:!0,children:We(La,{size:12,className:"ps-text-primary"})}),We(Jt,{side:"bottom",className:"text-xs",children:We("span",{children:"Primary Key"})})]})}),We("span",{className:"ps-font-medium ps-truncate",children:e.name}),We("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{isObjectType as Jd}from"remeda";import{motion as Or}from"motion/react";import Md,{useState as qr}from"react";import*as $t from"@radix-ui/react-label";import{cva as vd}from"class-variance-authority";import*as Fr from"react";import{jsx as kd}from"react/jsx-runtime";var Pd=vd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),Aa=Fr.forwardRef(({className:e,...a},t)=>kd($t.Root,{ref:t,className:c(Pd(),e),...a}));Aa.displayName=$t.Root.displayName;import*as Fa from"@radix-ui/react-switch";import*as Nr from"react";import{jsx as Br}from"react/jsx-runtime";var Ba=Nr.forwardRef(({className:e,...a},t)=>Br(Fa.Root,{className:c("ps-peer ps-inline-flex ps-h-5 ps-w-9 ps-shrink-0 ps-cursor-pointer ps-items-center ps-rounded-full ps-border-2 ps-border-transparent ps-shadow-sm ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-2 focus-visible:ps-ring-ring focus-visible:ps-ring-offset-2 focus-visible:ps-ring-offset-background disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=unchecked]:ps-bg-input",e),...a,ref:t,children:Br(Fa.Thumb,{className:c("ps-pointer-events-none ps-block ps-h-4 ps-w-4 ps-rounded-full ps-bg-background ps-shadow-lg ps-ring-0 ps-transition-transform data-[state=checked]:ps-translate-x-4 data-[state=unchecked]:ps-translate-x-0")})}));Ba.displayName=Fa.Root.displayName;import{Fragment as Rd,jsx as Ke,jsxs as Na}from"react/jsx-runtime";var Y=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:l})=>Ke("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-",children:!l&&Na(Rd,{children:[Na("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-mr-auto",children:[Na("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{e&&e(),t&&t()},children:[Ke("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground",children:Ke(ma,{size:12,strokeWidth:2})})," ","Save changes"]}),Na("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{a&&a(),t&&t()},children:[Ke("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground ps-text-[8px] ps-leading-none ps-font-semibold",children:"Esc"})," ","Cancel changes"]})]}),o&&Ke("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2",children:Na("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",htmlFor:"set-nullable",children:[Ke(Ba,{id:"set-nullable",checked:r,onCheckedChange:d=>{o&&o(d)}}),Ke("span",{children:"Set to NULL"})]})})]})});import{Fragment as Td,jsx as Oa,jsxs as Er}from"react/jsx-runtime";function Ur(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=qr(a===null?!1:a),[n,d]=qr(a===null),i=a===null?!1:a,g=h=>{u(h)},m=h=>{d(h)},L=Md.useCallback(()=>{let h=n?null:s;return h!==a?(t(h),!0):!1},[s,a,t,n]),S=()=>{u(i),d(a===null)},{handleSave:p,handleCancel:C}=J({onSave:L,onCancel:S,readonly:r});return Er(Td,{children:[Er("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0 ps-px-2",children:[Oa(Aa,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),Oa(Or.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:Oa(Ba,{id:"boolean-input",checked:s,onCheckedChange:g,disabled:n||r})}),Oa(Or.div,{"data-value":!0,className:"ps-inline-flex ps-items-center ps-text-xs ps-text-muted-foreground ps-font-mono",initial:{x:-40,opacity:1},animate:{x:0,opacity:1},transition:{duration:.12,delay:0},children:n?"NULL":String(s)})]}),Oa(Y,{onSave:p,onCancel:C,onNullChange:l?m:void 0,isNull:n,readonly:r})]})}import Hr from"dayjs";import Ad from"dayjs/plugin/localizedFormat";import{useCallback as Fd,useMemo as Bd}from"react";import{useState as Dd}from"react";function ta(e){let{initialValue:a}=e,[t,o]=Dd(a??"");return{handleOnChange:l=>{o(l.target.value)},value:t}}import{Fragment as Nd,jsx as qa,jsxs as jt}from"react/jsx-runtime";Hr.extend(Ad);function zr(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ta({initialValue:r}),u=Bd(()=>{try{let L=Hr(s);return L.isValid()?s.includes(":")?L.format("LL LTS"):L.format("LL"):s}catch{return s}},[s]);function n(L){L.preventDefault(),s!==r&&a(s)}let d=Fd(()=>s!==r?(a(s),!0):!1,[s,r,a]),i=()=>{},{handleSave:g,handleCancel:m}=J({onSave:d,onCancel:i,readonly:o});return jt(Nd,{children:[jt("form",{onSubmit:n,children:[qa(ue,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),qa("input",{type:"submit",className:"ps-sr-only"})]}),jt("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[qa("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),qa("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),qa(Y,{onSave:g,onCancel:m,readonly:o})]})}import{useCallback as Od,useState as Gr}from"react";import{Fragment as qd,jsx as tt,jsxs as Ed}from"react/jsx-runtime";function Vr(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:l}=e,s=t.nullable===!0,u=String(o),[n,d]=Gr(u),[i,g]=Gr(o===null),m=k=>{d(k)},L=k=>{g(k)},S=Od(()=>i?o!==null?(a(null),!0):!1:n!==u?(a(n),!0):!1,[n,u,a,i,o]),p=()=>{d(u),g(o===null)},{handleSave:C,handleCancel:h}=J({onSave:S,onCancel:p,readonly:l});return Ed(qd,{children:[tt("div",{className:"ps-flex ps-items-center ps-gap-2 ps-font-mono ps-h-[var(--studio-cell-height)] ps-px-2 ps-py-0 ps-w-full ps-text-xs ps-text-muted-foreground",children:n}),tt("div",{className:"ps-flex ps-flex-row ps-flex-wrap ps-gap-2 ps-p-2 ps-min-w-[var(--radix-popover-trigger-width)] ps-max-w-[500px] w-full ps-border-t ps-border-table-border ps-overflow-y-scroll ps-max-h-32",children:r.map(k=>tt("button",{onClick:()=>m(k),className:mt({variant:k===n?"default":"outline"}),disabled:i||l,children:k},k))}),tt(Y,{onSave:C,onCancel:h,onNullChange:s?L:void 0,isNull:i,readonly:l})]})}import Ud,{useState as Wr}from"react";import{Fragment as Hd,jsx as Yt,jsxs as zd}from"react/jsx-runtime";function Kr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,s=a===null?"":JSON.stringify(a,null,2),[u,n]=Wr(s),[d,i]=Wr(a===null),g=h=>{n(h.target.value)},m=h=>{i(h)},L=Ud.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let h=u===""?null:JSON.parse(u);return h!==a?(t(h),!0):!1},[u,a,t,d]),S=()=>{n(s),i(a===null)},{handleSave:p,handleCancel:C}=J({onSave:L,onCancel:S,readonly:r});return zd(Hd,{children:[Yt("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:Yt("textarea",{rows:5,value:u,onChange:g,disabled:d||r,className:"ps-cell-input-base ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize ps-px-[var(--studio-cell-spacing)]",lang:"en_EN"})}),Yt(Y,{onSave:p,onCancel:C,onNullChange:l?m:void 0,isNull:d,readonly:r})]})}import Gd,{useState as Xr}from"react";import{Fragment as Vd,jsx as eo,jsxs as _r}from"react/jsx-runtime";function Qr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=Xr(a===null?"":String(a)),[n,d]=Xr(a===null),i=a===null?"":String(a),g=h=>{u(h.target.value)},m=h=>{d(h)},L=Gd.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let h=s===""?null:Number(s);return s!==a?(t(h),!0):!1},[s,a,t,n]),S=()=>{u(i),d(a===null)},{handleSave:p,handleCancel:C}=J({onSave:L,onCancel:S,readonly:r});return _r(Vd,{children:[_r("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[eo(Aa,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),eo("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:s,onChange:g,disabled:n||r,className:"ps-cell-input-leading ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",step:"any",lang:"en_EN"})]}),eo(Y,{onSave:p,onCancel:C,onNullChange:l?m:void 0,isNull:n,readonly:r})]})}import Wd from"react";import{Fragment as Kd,jsx as ao,jsxs as Zr}from"react/jsx-runtime";function Jr(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ta({initialValue:r});function u(m){m.preventDefault(),s!==r&&a(s)}let n=Wd.useCallback(()=>s!==r?(a(s),!0):!1,[s,r,a]),d=()=>{},{handleSave:i,handleCancel:g}=J({onSave:n,onCancel:d,readonly:o});return Zr(Kd,{children:[Zr("form",{onSubmit:u,children:[ao(ue,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s,disabled:o}),ao("input",{type:"submit",className:"ps-sr-only"})]}),ao(Y,{onSave:i,onCancel:g,readonly:o})]})}import $r from"dayjs";import Xd from"dayjs/plugin/localizedFormat";import{useCallback as _d,useMemo as Qd}from"react";import{Fragment as Zd,jsx as Ea,jsxs as to}from"react/jsx-runtime";$r.extend(Xd);function jr(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ta({initialValue:r}),u=Qd(()=>{try{if(!s.includes(":"))return s;let L=/[+-]\d{2}(:\d{2})?$/.test(s),S=$r(`2000-01-01 ${s}`);if(S.isValid())return S.format("h:mm A")+(L?` (${S.format("Z")})`:"");let p=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,C=s.match(p);if(C){let h=parseInt(C[1]||"12",10),k=C[2]||"00",U=C[4]||"",_=h>=12?"PM":"AM";return`${h%12===0?12:h%12}:${k} ${_}${U?` (${U})`:""}`}return s}catch{return s}},[s]);function n(L){L.preventDefault(),s!==r&&a(s)}let d=_d(()=>s!==r?(a(s),!0):!1,[s,r,a]),i=()=>{},{handleSave:g,handleCancel:m}=J({onSave:d,onCancel:i,readonly:o});return to(Zd,{children:[to("form",{onSubmit:n,children:[Ea(ue,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Ea("input",{type:"submit",className:"ps-sr-only"})]}),to("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Ea("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Ea("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Ea(Y,{onSave:g,onCancel:m,readonly:o})]})}import{jsx as Xe}from"react/jsx-runtime";function ot(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:l,isArray:s}=t.datatype,u=t.isComputed||e.readonly,n=a.getValue(),d=n===void 0?"":n;return r==="datetime"?Xe(zr,{onSubmit:o,value:d,column:t,readonly:u}):r==="time"?Xe(jr,{onSubmit:o,value:d,column:t,readonly:u}):r==="json"||s?Xe(Kr,{onSubmit:o,value:d,column:t,readonly:u}):r==="boolean"?Xe(Ur,{onSubmit:o,value:d,column:t,readonly:u}):r==="enum"?Xe(Vr,{onSubmit:o,value:d,options:l,column:t,readonly:u}):r==="numeric"?Xe(Qr,{onSubmit:o,value:d,column:t,readonly:u}):Xe(Jr,{onSubmit:o,value:Jd(d)?JSON.stringify(d):d,readonly:u})}import{useReactTable as $d}from"@tanstack/react-table";import{omit as jd}from"remeda";import{Fragment as Yd,jsx as Ua}from"react/jsx-runtime";function Yr(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!_a();function l(n,d){o(i=>{let g=[...i];return g[n]={...g[n],...d},g})}let s=Object.values(a.options.columns).map(n=>n.id==="__ps_select"?{...n,cell(){return()=>Ua(Pa,{})}}:{...n,cell({cell:d}){return i=>Ua(ja,{cellComponent:$a({cell:d,column:n.meta,props:i}),inputComponent:ot({cell:d,column:n.meta,onSubmit(g){l(i.rowIndex,{[n.id]:g})},readonly:r})})}}),u=$d({...a.options,columns:s,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:jd(a.options.state,["pagination","sorting"])});return Ua(Yd,{children:u.getRowModel().rows.map((n,d)=>Ua(Ge,{children:n.getVisibleCells().map((i,g)=>{if(typeof i.column.columnDef.cell=="function"){let m=i.column.columnDef.cell(i.getContext());return Ua(m,{...ve(i.column,"cell"),rowIndex:d},g)}return null})},d))})}import{Fragment as oo,jsx as N,jsxs as oa}from"react/jsx-runtime";function es(e){let a=!!en(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:l,toggleNavigation:s,isNavigationOpen:u}=H(),{sortingState:n,setSortingState:d}=Go(),{paginationState:i,setPaginationState:g}=Qa(),[m,L]=on([]),{appliedFilter:S,setAppliedFilter:p,editingFilter:C,setEditingFilter:h,totalEditingFilters:k}=Uo(),{data:U,isFetching:_}=No({...i,sortOrder:n,filter:S}),{deleteSelection:te,isSelecting:ke,rowSelectionState:Re,setRowSelectionState:y}=zo(U),v=!Object.values(t?.columns??{}).some(A=>A.isInPrimaryKey),w=_a(),V=Bo(),R=Oo();if(tn(()=>L([]),[t]),!t)return null;function Q(){V.mutate(m,{onError:o,onSuccess(){rn.success("Rows inserted successfully"),L([])}})}function _e(){L(A=>[...A,{}])}function Ha(){L([])}function Qe(A,ge,st){R.mutate({details:{changes:{[ge.name]:A},row:st,table:t},options:{}})}function za(A){A===!0?S.filters.length===0?h(ht):h(S):C!==ht&&p(C)}let ra=Object.values(t?.columns??{}).map(A=>({id:A.name,accessorKey:A.name,meta:A,header(){return Ar({column:A})},cell({cell:ge}){return st=>N(ja,{cellComponent:$a({cell:ge,column:A,props:st}),inputComponent:ot({cell:ge,column:A,readonly:v,onSubmit(us){return Qe(us,A,ge.row.original)}})})}})),He=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,disableDragging:!0,size:50,minSize:50,header({table:A}){return ge=>N(Ot,{table:A,readonly:v,...ge})},cell({row:A}){return ge=>N(Et,{row:A,readonly:v,...ge})}}],Ga=[...ra,...He].sort(ln);return oa(oo,{children:[N("div",{className:"ps-bg-studio-header-background ps-flex ps-w-full ps-p-2 ps-py-3 ps-border-b ps-bg-card ps-rounded-t-lg",children:N("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:oa("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[oa("div",{className:"ps-flex ps-items-center ps-gap-2",children:[N(O,{variant:"outline",size:"sm",onClick:s,children:u?N(Ae,{}):N(Fe,{})}),oa(bo,{onOpenChange:za,children:[N(wo,{asChild:!0,children:N(O,{variant:"outline",size:"sm",className:c(k>0&&"ps-border-primary"),children:oa("span",{className:"ps-flex ps-items-center ps-gap-2",children:[N(ga,{}),k>0&&N(Wa,{children:N(an,{transition:{layout:{duration:.12}},children:k})})]})})}),N(gt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:N(ir,{filter:C,setFilter:h,setAppliedFilter:A=>{h(A),p(A)},table:t})})]}),N(O,{variant:"outline",size:"sm",onClick:_e,disabled:w>0,children:"Insert row"}),m.length>0&&oa(oo,{children:[N(O,{variant:"secondary",size:"sm",onClick:Q,children:"Save"}),N(O,{variant:"ghost",size:"sm",onClick:Ha,children:"Cancel"})]}),ke&&N(oo,{children:N(O,{variant:"secondary",size:"sm",onClick:te,children:"Delete"})})]}),N(O,{variant:"outline",size:"icon",onClick:l,children:r?N(ha,{}):N(Ca,{})})]})})}),N(vr,{columnDefs:Ga,getBeforeRows:A=>N(Yr,{table:A,stagedRows:m,setStagedRows:L}),isLoading:_,isProcessing:a,onPaginationChange:g,onRowSelectionChange:y,onSortingChange:d,pageCount:sn(U?.filteredRowCount??1/0,i.pageSize),paginationState:i,rows:U?.rows??[],rowSelectionState:Re,sortingState:n})]})}function sn(e,a){if(e===1/0)return;let t=Number((BigInt(e)+BigInt(a)-BigInt(1))/BigInt(a));return Number.isSafeInteger(t)?t:Number.MAX_SAFE_INTEGER}function ln(e,a){let t=e.meta,o=a.meta;return e.id==="__ps_select"||a.id==="__ps_select"?1:t===void 0||o===void 0?0:t.isInPrimaryKey&&!o.isInPrimaryKey?-1:!t.isInPrimaryKey&&o.isInPrimaryKey?1:t.name.localeCompare(o.name)}import{Slot as fn}from"@radix-ui/react-slot";import{useCallback as dn,useEffect as ts,useMemo as os}from"react";import{v4 as nn}from"uuid";import{useQuery as un}from"@tanstack/react-query";var rt=-1;function as(){let{adapter:e}=H();return un({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:rt,queryFn:async({signal:a})=>{let[t,o]=await e.introspect({abortSignal:a});if(t)throw t;return o},queryKey:["introspection"],staleTime:a=>a.state.dataUpdatedAt===rt?0:1/0})}function rs(){let{activeTable:e,setActiveTable:a,adapter:t,emitTelemetryEvent:o}=H(),{data:r,dataUpdatedAt:l}=as(),s=l===rt,u=os(()=>Object.values(r.schemas[t.defaultSchema||"db"]?.tables||{}),[r.schemas,t.defaultSchema]),n=os(()=>Object.values(r.schemas).reduce((p,C)=>p+Object.keys(C.tables).length,0),[r.schemas]),[d]=u,[i,g]=va({table:{defaultValue:null,parse:p=>p,serialize:p=>p??""},schema:{defaultValue:"",parse:p=>p,serialize:p=>p??""}}),[,m]=Ne("pageIndex",{parse:p=>p,serialize:p=>p??""}),[,L]=Ne("sort",{parse:p=>p,serialize:p=>p??""});ts(()=>{if(!s){if(i?.table&&u.length>0){let p=u.find(C=>C.name===i.table);if(p){a(p);return}}u.length>0&&!e&&(a(d||null),d&&g({table:d.name,schema:d.schema}))}},[s,i,u,d,e,a,g]);let S=dn(p=>{e!==p&&(a(p),g({table:p.name,schema:p.schema}),m(null),L(null))},[e,a,g,m,L]);return ts(()=>{l!==-1&&o({event:"studio_launched",payload:{event_id:nn(),timestamp:new Date().toISOString(),table_count:n}})},[u,o,l,n]),{tables:u,activeTable:e,isLoading:s,handleTableChange:S}}import{jsx as ae,jsxs as ss}from"react/jsx-runtime";function Ue({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=rs(),l=c("ps-flex ps-flex-col ps-w-48 ps-gap-4 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return ae("div",{className:l,children:ae(Ue.Block,{label:"Tables",children:a.length>0?a.map(s=>ae(Ue.Item,{asChild:!0,isActive:t===s,onClick:()=>{r(s)},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:ae("a",{href:`#table=${s.name}&schema=${s.schema}`,children:s.name})},`${s.schema}-${s.name}`)):o?Array(4).fill(null).map((s,u)=>ae(Ue.Item,{wrapChildrenInSpan:!1,children:ae(ea,{className:"ps-h-3 ps-w-full"})},u)):ae(Ue.Item,{children:"No tables found"})})})}var cn=({className:e,label:a,children:t,...o})=>ss("div",{className:e,...o,children:[ss("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:[ae(ya,{size:16,className:"ps-text-muted-foreground/60"}),ae("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),ae("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),pn=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:l=!0,...s})=>ae(a?fn:"button",{"data-sidebar":"menu-button","data-size":o,"data-active":t,className:c("ps-py-1.5 ps-px-2 ps-text-sm ps-font-medium ps-rounded-md ps-flex ps-gap-2 ps-items-center ps-border ps-border-transparent ps-bg-transparent",e),...s,children:l?ae("span",{className:"ps-truncate",children:r}):r});Ue.Block=cn;Ue.Item=pn;import{jsx as Pe,jsxs as Ln}from"react/jsx-runtime";function gn(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Pe(Ao,{adapter:a,onError:t,onTelemetryEvent:o,children:Pe(xn,{})}):(console.error("No adapter provided to Studio component"),Pe("div",{children:"Error: No adapter provided"}))}function xn(){let{isFullscreen:e,isNavigationOpen:a}=H(),t=c("ps-flex ps-flex-col ps-w-full ps-min-h-0 ps-max-h-full",e&&"ps-fixed ps-inset-0 ps-z-[9999] ps-bg-background ps-p-2");return Pe("div",{"data-fullscreen":e,className:t,children:Ln("div",{className:"ps-flex ps-gap-0 ps-w-full ps-bg-neutral-50 ps-relative ps-max-h-full ps-min-h-full ps-rounded-lg",children:[Pe(mn,{mode:"wait",children:a&&Pe(ls.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Pe(Ue,{})})}),Pe(ls.div,{className:"ps-flex ps-w-full ps-bg-neutral-100 ps-flex-col ps-p-px ps-rounded-lg ps-self-start ps-h-full ps-min-h-full ps-max-h-full ps-overflow-clip",transition:{duration:.14},children:Pe(es,{})})]})})}export{gn as Studio};
|
|
20
|
+
`}}),C.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${me.grayAlt}`,display:"flex",flexDirection:"column"}},C.createElement("div",{style:{padding:".5em",background:me.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},C.createElement(gr,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>l(!1)}),C.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",C.createElement("span",{style:{fontWeight:100}},"Devtools")),C.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?C.createElement($u,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{l(!1)}},"Close"):null)),C.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},C.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},C.createElement(ge,{label:"Instance",value:o,defaultExpanded:!1}),C.createElement("div",{style:{height:".5rem"}}),C.createElement(ge,{label:"State",value:o.getState(),defaultExpanded:!1}),C.createElement("div",{style:{height:".5rem"}}),C.createElement(ge,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),C.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},C.createElement(ge,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),C.createElement(ge,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),C.createElement(ge,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),C.createElement(ge,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),C.createElement(ge,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as xd,motion as Ld}from"motion/react";import{useEffect as Cd,useMemo as hd,useState as Qt}from"react";import{jsx as td}from"react/jsx-runtime";function Je({className:e,...a}){return td("div",{className:p("ps-animate-pulse ps-rounded-md ps-bg-primary/10",e),...a})}import{flexRender as od}from"@tanstack/react-table";import{AnimatePresence as rd,motion as Lr}from"motion/react";import{Fragment as Xt,jsx as N,jsxs as xe}from"react/jsx-runtime";function Cr(e){let{header:a,className:t}=e;return xe("div",{className:p("ps-flex ps-items-center ps-justify-between",t),children:[xe("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[N("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:a.isPlaceholder?null:N("span",{className:"ps-flex ps-min-w-0",children:N("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:od(a.column.columnDef.header,a.getContext())})})}),xe("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[N("span",{className:"ps-flex ps-items-center ps-ml-1",children:N(rd,{mode:"wait",children:a.column.getIsSorted()==="desc"?N(Lr.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:N(ga,{size:14,className:"ps-text-muted-foreground"})},"desc"):a.column.getIsSorted()==="asc"?N(Lr.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:N(xa,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),a.column.getCanPin()&&a.column.id!=="select"&&xe(Ja,{children:[N($a,{asChild:!0,children:N(F,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:N(ce,{size:12})})}),xe(Pa,{children:[a.column.getCanSort()&&N(ja,{onClick:()=>a.column.toggleSorting(),children:N("span",{className:"ps-flex ps-items-center ps-gap-2",children:a.column.getNextSortingOrder()==="desc"?xe(Xt,{children:[N(Me,{size:16}),"Sort descending"]}):a.column.getNextSortingOrder()==="asc"?xe(Xt,{children:[N(oa,{size:16}),"Sort ascending"]}):xe(Xt,{children:[N(Fe,{size:16}),"Cancel sorting"]})})}),N(ja,{onClick:()=>a.column.pin(a.column.getIsPinned()?!1:"left"),children:a.column.getIsPinned()?xe("span",{className:"ps-flex ps-items-center ps-gap-2",children:[N(La,{size:16}),"Unpin column"]}):xe("span",{className:"ps-flex ps-items-center ps-gap-2",children:[N(Ca,{size:16}),"Pin column"]})})]})]})]})]}),a.column.getCanResize()&&N("button",{type:"button",tabIndex:0,onMouseDown:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onTouchStart:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onClick:o=>o.stopPropagation(),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),o.stopPropagation(),a.getResizeHandler()(o))},className:p("ps-absolute ps-right-0 ps-top-0 ps-h-full ps-w-px ps-cursor-col-resize ps-border ps-border-transparent hover:ps-border-table-border"),"aria-label":"Resize column"})]})}import{jsx as hr}from"react/jsx-runtime";function Ir({className:e}){return hr("div",{"data-loading-bar":!0,className:p("ps-h-[2px] ps-w-full ps-overflow-hidden ps-bg-gray-200 ps-z-50",e),children:hr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-purple-600"})})}import{jsx as Y,jsxs as tt}from"react/jsx-runtime";function Sr(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return Y("div",{className:"ps-rounded-b-lg ps-overflow-clip ps-sticky ps-bottom-0 ps-left-0 ps-border-t-0 w-full ps-z-20 ps-p-0",children:Y("div",{className:"ps-flex ps-items-center ps-justify-between ps-space-x-2 ps-py-2 ps-px-2 ps-border-t ps-border-table-border ps-backdrop-blur-sm ps-bg-table-head/90",children:t==="basic"?tt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[Y(F,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),Y(F,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):Y("div",{className:"ps-flex ps-items-center ps-space-x-2",children:tt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[Y(F,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:Y(la,{className:"ps-w-4 ps-h-4"})}),Y(F,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:Y(ra,{className:"ps-w-4 ps-h-4"})}),tt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",Y(ne,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:l=>{let s=l.target.value?Number(l.target.value)-1:0;a.setPageIndex(s)}}),tt("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),Y(F,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:Y(le,{className:"ps-w-4 ps-h-4"})}),Y(F,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:Y(ua,{className:"ps-w-4 ps-h-4"})})]})})})})}function Ma(e,a){let t=e.getIsPinned(),o=t==="left"&&e.getIsFirstColumn("left"),r=t==="right"&&e.getIsFirstColumn("right"),l=o||r;return{className:p("ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",l&&a==="header"&&"ps-sticky ps-z-10",l&&a==="cell"&&"ps-sticky ps-z-9",l&&"ps-shadow-[-1px_0_0_0_hsl(var(--border))]"),style:{width:e.columnDef.size,left:o?`${e.getStart("left")}px`:void 0,right:r?`${e.getAfter("right")}px`:void 0}}}import{Fragment as bd,jsx as B,jsxs as $e}from"react/jsx-runtime";var Id=e=>{let{children:a,className:t,header:o,style:r}=e,l="disableDragging"in o.column.columnDef,{attributes:s,listeners:u,transform:d,transition:n,setNodeRef:f,isDragging:g}=cd({id:o.id}),m={...r,cursor:"grab",touchAction:"none",transform:pd.Transform.toString(d),transition:n},x=p(t,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),S=p(x,g&&"!ps-z-50 ps-border-2 ps-border-violet-500");return B(wt,{ref:f,...s,...u,style:l?r:m,className:l?x:S,children:B("div",{className:"ps-w-full",children:a})})};function wr(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:u,pageCount:d,paginationState:n,rows:f,rowSelectionState:g,sortingState:m}=e,[x,S]=Qt([]),[c,h]=Qt({left:["__ps_select"],right:[]}),[I,w]=Qt({}),G=hd(()=>br(m),[m]),K=o||r;Cd(()=>S(a.map(({accessorKey:A})=>A)),[]);function oe({active:A,over:M}){M&&A.id!==M.id&&S(re=>{let R=re.indexOf(A.id),We=re.indexOf(M.id);return nd(re,R,We)})}let H=ud(ld,{activationConstraint:{distance:10}}),Z=dd(H),q=gd({columnResizeMode:"onChange",columns:a,data:f,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(u&&m),getCoreRowModel:md(),getRowId:({__ps_rowid:A})=>A,manualPagination:!0,manualSorting:!0,onColumnOrderChange:S,onColumnPinningChange:h,onColumnSizingChange:w,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:A=>u?.(M=>(typeof A=="function"&&(A=A(br(M))),Sd(A))),pageCount:d,state:{columnOrder:x,columnPinning:c,columnSizing:I,pagination:n,rowSelection:g,sorting:G}});return $e(bd,{children:[process.env.NODE_ENV==="production"?null:B(xr,{table:q}),$e("div",{"data-studio":"content",className:"ps-flex-1 ps-w-0 ps-h-0 ps-min-w-full ps-flex ps-flex-col ps-relative",children:[B("div",{children:K&&B(Ir,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),B(sd,{sensors:Z,onDragEnd:oe,children:$e(It,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[B(St,{children:q.getHeaderGroups().map(A=>B(He,{children:B(fd,{items:A.headers.filter(M=>!("disableDragging"in M.column.columnDef)).map(M=>M.id),strategy:id,children:A.headers.map(M=>B(Id,{header:M,table:q,...Ma(M.column,"header"),children:B(Cr,{header:M})},M.id))})},A.id))}),$e(bt,{children:[t?.(q),q.getRowModel().rows?.length?q.getRowModel().rows.map(A=>B(He,{className:p("ps-bg-table-row ps-odd:bg-table-row-odd ps-group [&:last-of-type_td]:ps-border-b-0"),children:A.getVisibleCells().map((M,re)=>{if(typeof M.column.columnDef.cell=="function"){let R=M.column.columnDef.cell(M.getContext());return B(R,{...Ma(M.column,"cell")},re)}return null})},A.id)):B(He,{children:B(wa,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&$e("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[B(Je,{className:"ps-h-4 ps-w-full"}),B(Je,{className:"ps-h-4 ps-w-4/5"}),B(Je,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!d||d<2?null:B(Sr,{table:q,variant:"numeric"}),B(xd,{mode:"wait",children:q.getRowModel().rows?.length===0&&!o&&!r&&B(Ld.div,{className:"ps-flex ps-items-center ps-justify-center ps-absolute -ps-inset-0 ps-pointer-events-none",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:$e("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[B("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),B("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function br(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function Sd(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import*as fe from"@radix-ui/react-tooltip";import*as vr from"react";import{jsx as yr}from"react/jsx-runtime";var Pr=fe.Provider,kr=fe.Root,Rr=fe.Trigger,_t=vr.forwardRef(({className:e,sideOffset:a=4,...t},o)=>yr(fe.Portal,{children:yr(fe.Content,{ref:o,sideOffset:a,className:p("ps-z-50 ps-overflow-hidden ps-rounded-md ps-bg-primary ps-px-3 ps-py-1.5 ps-text-xs ps-text-primary-foreground ps-animate-in ps-fade-in-0 ps-zoom-in-95 data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=closed]:ps-zoom-out-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-tooltip-content-transform-origin]",e),...t})}));_t.displayName=fe.Content.displayName;import{jsx as ze,jsxs as Zt}from"react/jsx-runtime";function Mr({column:e}){return e.isInPrimaryKey?Zt("span",{className:"ps-flex ps-flex-row ps-font-medium ps-items-center ps-gap-1",children:[ze(Pr,{delayDuration:300,children:Zt(kr,{children:[ze(Rr,{asChild:!0,children:ze(ca,{size:12})}),ze(_t,{children:ze("p",{children:"Primary Key"})})]})}),e.name]}):Zt("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[ze("span",{className:"ps-font-medium ps-truncate",children:e.name}),ze("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{isObjectType as _d}from"remeda";import{motion as Fr}from"motion/react";import kd,{useState as Br}from"react";import*as Jt from"@radix-ui/react-label";import{cva as wd}from"class-variance-authority";import*as Dr from"react";import{jsx as vd}from"react/jsx-runtime";var yd=wd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),Da=Dr.forwardRef(({className:e,...a},t)=>vd(Jt.Root,{ref:t,className:p(yd(),e),...a}));Da.displayName=Jt.Root.displayName;import*as Ta from"@radix-ui/react-switch";import*as Ar from"react";import{jsx as Tr}from"react/jsx-runtime";var Aa=Ar.forwardRef(({className:e,...a},t)=>Tr(Ta.Root,{className:p("ps-peer ps-inline-flex ps-h-5 ps-w-9 ps-shrink-0 ps-cursor-pointer ps-items-center ps-rounded-full ps-border-2 ps-border-transparent ps-shadow-sm ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-2 focus-visible:ps-ring-ring focus-visible:ps-ring-offset-2 focus-visible:ps-ring-offset-background disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=unchecked]:ps-bg-input",e),...a,ref:t,children:Tr(Ta.Thumb,{className:p("ps-pointer-events-none ps-block ps-h-4 ps-w-4 ps-rounded-full ps-bg-background ps-shadow-lg ps-ring-0 ps-transition-transform data-[state=checked]:ps-translate-x-4 data-[state=unchecked]:ps-translate-x-0")})}));Aa.displayName=Ta.Root.displayName;import{Fragment as Pd,jsx as Ge,jsxs as Fa}from"react/jsx-runtime";var ee=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:l})=>Ge("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-",children:!l&&Fa(Pd,{children:[Fa("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-mr-auto",children:[Fa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{e&&e(),t&&t()},children:[Ge("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground",children:Ge(na,{size:12,strokeWidth:2})})," ","Save changes"]}),Fa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{a&&a(),t&&t()},children:[Ge("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground ps-text-[8px] ps-leading-none ps-font-semibold",children:"Esc"})," ","Cancel changes"]})]}),o&&Ge("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2",children:Fa("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",htmlFor:"set-nullable",children:[Ge(Aa,{id:"set-nullable",checked:r,onCheckedChange:n=>{o&&o(n)}}),Ge("span",{children:"Set to NULL"})]})})]})});import{Fragment as Rd,jsx as Ba,jsxs as Or}from"react/jsx-runtime";function Nr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=Br(a===null?!1:a),[d,n]=Br(a===null),f=a===null?!1:a,g=I=>{u(I)},m=I=>{n(I)},x=kd.useCallback(()=>{let I=d?null:s;return I!==a?(t(I),!0):!1},[s,a,t,d]),S=()=>{u(f),n(a===null)},{handleSave:c,handleCancel:h}=$({onSave:x,onCancel:S,readonly:r});return Or(Rd,{children:[Or("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0 ps-px-2",children:[Ba(Da,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),Ba(Fr.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:Ba(Aa,{id:"boolean-input",checked:s,onCheckedChange:g,disabled:d||r})}),Ba(Fr.div,{"data-value":!0,className:"ps-inline-flex ps-items-center ps-text-xs ps-text-muted-foreground ps-font-mono",initial:{x:-40,opacity:1},animate:{x:0,opacity:1},transition:{duration:.12,delay:0},children:d?"NULL":String(s)})]}),Ba(ee,{onSave:c,onCancel:h,onNullChange:l?m:void 0,isNull:d,readonly:r})]})}import qr from"dayjs";import Dd from"dayjs/plugin/localizedFormat";import{useCallback as Td,useMemo as Ad}from"react";import{useState as Md}from"react";function je(e){let{initialValue:a}=e,[t,o]=Md(a??"");return{handleOnChange:l=>{o(l.target.value)},value:t}}import{Fragment as Fd,jsx as Oa,jsxs as $t}from"react/jsx-runtime";qr.extend(Dd);function Er(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=je({initialValue:r}),u=Ad(()=>{try{let x=qr(s);return x.isValid()?s.includes(":")?x.format("LL LTS"):x.format("LL"):s}catch{return s}},[s]);function d(x){x.preventDefault(),s!==r&&a(s)}let n=Td(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:g,handleCancel:m}=$({onSave:n,onCancel:f,readonly:o});return $t(Fd,{children:[$t("form",{onSubmit:d,children:[Oa(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Oa("input",{type:"submit",className:"ps-sr-only"})]}),$t("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Oa("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Oa("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Oa(ee,{onSave:g,onCancel:m,readonly:o})]})}import{useCallback as Bd,useState as Ur}from"react";import{Fragment as Od,jsx as ot,jsxs as Nd}from"react/jsx-runtime";function Hr(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:l}=e,s=t.nullable===!0,u=String(o),[d,n]=Ur(u),[f,g]=Ur(o===null),m=w=>{n(w)},x=w=>{g(w)},S=Bd(()=>f?o!==null?(a(null),!0):!1:d!==u?(a(d),!0):!1,[d,u,a,f,o]),c=()=>{n(u),g(o===null)},{handleSave:h,handleCancel:I}=$({onSave:S,onCancel:c,readonly:l});return Nd(Od,{children:[ot("div",{className:"ps-flex ps-items-center ps-gap-2 ps-font-mono ps-h-[var(--studio-cell-height)] ps-px-2 ps-py-0 ps-w-full ps-text-xs ps-text-muted-foreground",children:d}),ot("div",{className:"ps-flex ps-flex-row ps-flex-wrap ps-gap-2 ps-p-2 ps-min-w-[var(--radix-popover-trigger-width)] ps-max-w-min ps-border-t ps-border-table-border ps-overflow-y-scroll ps-max-h-32",children:r.map(w=>ot("button",{onClick:()=>m(w),className:Ut({variant:w===d?"default":"outline"}),disabled:f||l,children:w},w))}),ot(ee,{onSave:h,onCancel:I,onNullChange:s?x:void 0,isNull:f,readonly:l})]})}import qd,{useState as zr}from"react";import{Fragment as Ed,jsx as jt,jsxs as Ud}from"react/jsx-runtime";function Gr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,s=a===null?"":JSON.stringify(a,null,2),[u,d]=zr(s),[n,f]=zr(a===null),g=I=>{d(I.target.value)},m=I=>{f(I)},x=qd.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let I=u===""?null:JSON.parse(u);return I!==a?(t(I),!0):!1},[u,a,t,n]),S=()=>{d(s),f(a===null)},{handleSave:c,handleCancel:h}=$({onSave:x,onCancel:S,readonly:r});return Ud(Ed,{children:[jt("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:jt("textarea",{rows:5,value:u,onChange:g,disabled:n||r,className:"ps-cell-input-base ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize ps-px-[var(--studio-cell-spacing)]",lang:"en_EN"})}),jt(ee,{onSave:c,onCancel:h,onNullChange:l?m:void 0,isNull:n,readonly:r})]})}import Hd,{useState as Vr}from"react";import{Fragment as zd,jsx as Yt,jsxs as Wr}from"react/jsx-runtime";function Kr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=Vr(a===null?"":String(a)),[d,n]=Vr(a===null),f=a===null?"":String(a),g=I=>{u(I.target.value)},m=I=>{n(I)},x=Hd.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let I=s===""?null:Number(s);return s!==a?(t(I),!0):!1},[s,a,t,d]),S=()=>{u(f),n(a===null)},{handleSave:c,handleCancel:h}=$({onSave:x,onCancel:S,readonly:r});return Wr(zd,{children:[Wr("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[Yt(Da,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),Yt("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:s,onChange:g,disabled:d||r,className:"ps-cell-input-leading ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",step:"any",lang:"en_EN"})]}),Yt(ee,{onSave:c,onCancel:h,onNullChange:l?m:void 0,isNull:d,readonly:r})]})}import Gd from"react";import{Fragment as Vd,jsx as eo,jsxs as Xr}from"react/jsx-runtime";function Qr(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=je({initialValue:r});function u(m){m.preventDefault(),s!==r&&a(s)}let d=Gd.useCallback(()=>s!==r?(a(s),!0):!1,[s,r,a]),n=()=>{},{handleSave:f,handleCancel:g}=$({onSave:d,onCancel:n,readonly:o});return Xr(Vd,{children:[Xr("form",{onSubmit:u,children:[eo(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s,disabled:o}),eo("input",{type:"submit",className:"ps-sr-only"})]}),eo(ee,{onSave:f,onCancel:g,readonly:o})]})}import _r from"dayjs";import Wd from"dayjs/plugin/localizedFormat";import{useCallback as Kd,useMemo as Xd}from"react";import{Fragment as Qd,jsx as Na,jsxs as ao}from"react/jsx-runtime";_r.extend(Wd);function Zr(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=je({initialValue:r}),u=Xd(()=>{try{if(!s.includes(":"))return s;let x=/[+-]\d{2}(:\d{2})?$/.test(s),S=_r(`2000-01-01 ${s}`);if(S.isValid())return S.format("h:mm A")+(x?` (${S.format("Z")})`:"");let c=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,h=s.match(c);if(h){let I=parseInt(h[1]||"12",10),w=h[2]||"00",G=h[4]||"",K=I>=12?"PM":"AM";return`${I%12===0?12:I%12}:${w} ${K}${G?` (${G})`:""}`}return s}catch{return s}},[s]);function d(x){x.preventDefault(),s!==r&&a(s)}let n=Kd(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:g,handleCancel:m}=$({onSave:n,onCancel:f,readonly:o});return ao(Qd,{children:[ao("form",{onSubmit:d,children:[Na(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Na("input",{type:"submit",className:"ps-sr-only"})]}),ao("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Na("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Na("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Na(ee,{onSave:g,onCancel:m,readonly:o})]})}import{jsx as Ve}from"react/jsx-runtime";function rt(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:l,isArray:s}=t.datatype,u=t.isComputed||e.readonly,d=a.getValue(),n=d===void 0?"":d;return r==="datetime"?Ve(Er,{onSubmit:o,value:n,column:t,readonly:u}):r==="time"?Ve(Zr,{onSubmit:o,value:n,column:t,readonly:u}):r==="json"||s?Ve(Gr,{onSubmit:o,value:n,column:t,readonly:u}):r==="boolean"?Ve(Nr,{onSubmit:o,value:n,column:t,readonly:u}):r==="enum"?Ve(Hr,{onSubmit:o,value:n,options:l,column:t,readonly:u}):r==="numeric"?Ve(Kr,{onSubmit:o,value:n,column:t,readonly:u}):Ve(Qr,{onSubmit:o,value:_d(n)?JSON.stringify(n):n,readonly:u})}import{useReactTable as Zd}from"@tanstack/react-table";import{omit as Jd}from"remeda";import{Fragment as $d,jsx as qa}from"react/jsx-runtime";function Jr(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!Wa();function l(d,n){o(f=>{let g=[...f];return g[d]={...g[d],...n},g})}let s=Object.values(a.options.columns).map(d=>d.id==="__ps_select"?{...d,cell(){return()=>qa(ya,{})}}:{...d,cell({cell:n}){return f=>qa(Za,{cellComponent:_a({cell:n,column:d.meta,props:f}),inputComponent:rt({cell:n,column:d.meta,onSubmit(g){l(f.rowIndex,{[d.id]:g})},readonly:r})})}}),u=Zd({...a.options,columns:s,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:Jd(a.options.state,["pagination","sorting"])});return qa($d,{children:u.getRowModel().rows.map((d,n)=>qa(He,{children:d.getVisibleCells().map((f,g)=>{if(typeof f.column.columnDef.cell=="function"){let m=f.column.columnDef.cell(f.getContext());return qa(m,{...Ma(f.column,"cell"),rowIndex:n},g)}return null})},n))})}import{Fragment as to,jsx as O,jsxs as Ea}from"react/jsx-runtime";function $r(e){let a=!!jd(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:l,toggleNavigation:s,isNavigationOpen:u}=V(),{sortingState:d,setSortingState:n}=Ho(),{paginationState:f,setPaginationState:g}=Ka(),[m,x]=en([]),{appliedFilter:S,setAppliedFilter:c,editingFilter:h,setEditingFilter:I}=qo(),{data:w,isFetching:G}=Oo({...f,sortOrder:d,filter:S}),{deleteSelection:K,isSelecting:oe,rowSelectionState:H,setRowSelectionState:Z}=Uo(w),q=!Object.values(t?.columns??{}).some(D=>D.isInPrimaryKey),A=Wa(),M=Bo(),re=No();if(Yd(()=>x([]),[t]),!t)return null;function R(){M.mutate(m,{onError:o,onSuccess(){an.success("Rows inserted successfully"),x([])}})}function We(){x(D=>[...D,{}])}function Ke(){x([])}function Ua(D,z,lt){re.mutate({details:{changes:{[z.name]:D},row:lt,table:t},options:{}})}function Xe(D){D===!0?I(S):c(h)}let Ha=Object.values(t?.columns??{}).map(D=>({id:D.name,accessorKey:D.name,meta:D,header(){return Mr({column:D})},cell({cell:z}){return lt=>O(Za,{cellComponent:_a({cell:z,column:D,props:lt}),inputComponent:rt({cell:z,column:D,readonly:q,onSubmit(rs){return Ua(rs,D,z.row.original)}})})}})),Ye=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!1,enableResizing:!1,enableSorting:!1,disableDragging:!0,size:0,header({table:D}){return O(Sa,{checked:D.getIsAllRowsSelected(),onCheckedChange:z=>D.toggleAllRowsSelected(!!z),disabled:q})},cell({row:D}){return z=>O(Ot,{row:D,readonly:q,...z})}}],Ee=[...Ha,...Ye].sort(on);return Ea(to,{children:[O("div",{className:"ps-bg-studio-header-background ps-flex ps-w-full ps-p-2 ps-py-3 ps-border-b ps-bg-card ps-rounded-t-lg",children:O("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:Ea("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[Ea("div",{className:"ps-flex ps-items-center ps-gap-2",children:[O(F,{variant:"outline",size:"sm",onClick:s,children:u?O(Te,{}):O(Ae,{})}),Ea(bo,{onOpenChange:Xe,children:[O(wo,{asChild:!0,children:O(F,{variant:"outline",size:"sm",children:O(ia,{})})}),O(xt,{align:"start",side:"bottom",className:"ps-w-min",children:O(nr,{filter:h,setFilter:I,table:t})})]}),O(F,{variant:"outline",size:"sm",onClick:We,disabled:A>0,children:"Insert row"}),m.length>0&&Ea(to,{children:[O(F,{variant:"secondary",size:"sm",onClick:R,children:"Save"}),O(F,{variant:"ghost",size:"sm",onClick:Ke,children:"Cancel"})]}),oe&&O(to,{children:O(F,{variant:"secondary",size:"sm",onClick:K,children:"Delete"})})]}),O(F,{variant:"outline",size:"icon",onClick:l,children:r?O(ma,{}):O(pa,{})})]})})}),O(wr,{columnDefs:Ee,getBeforeRows:D=>O(Jr,{table:D,stagedRows:m,setStagedRows:x}),isLoading:G,isProcessing:a,onPaginationChange:g,onRowSelectionChange:Z,onSortingChange:n,pageCount:tn(w?.filteredRowCount??1/0,f.pageSize),paginationState:f,rows:w?.rows??[],rowSelectionState:H,sortingState:d})]})}function tn(e,a){if(e===1/0)return;let t=Number((BigInt(e)+BigInt(a)-BigInt(1))/BigInt(a));return Number.isSafeInteger(t)?t:Number.MAX_SAFE_INTEGER}function on(e,a){let t=e.meta,o=a.meta;return e.id==="__ps_select"||a.id==="__ps_select"?1:t===void 0||o===void 0?0:t.isInPrimaryKey&&!o.isInPrimaryKey?-1:!t.isInPrimaryKey&&o.isInPrimaryKey?1:t.name.localeCompare(o.name)}import{Slot as un}from"@radix-ui/react-slot";import{useCallback as sn,useEffect as Yr,useMemo as es}from"react";import{v4 as ln}from"uuid";import{useQuery as rn}from"@tanstack/react-query";var st=-1;function jr(){let{adapter:e}=V();return rn({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:st,queryFn:async({signal:a})=>{let[t,o]=await e.introspect({abortSignal:a});if(t)throw t;return o},queryKey:["introspection"],staleTime:a=>a.state.dataUpdatedAt===st?0:1/0})}function as(){let{activeTable:e,setActiveTable:a,adapter:t,emitTelemetryEvent:o}=V(),{data:r,dataUpdatedAt:l}=jr(),s=l===st,u=es(()=>Object.values(r.schemas[t.defaultSchema||"db"]?.tables||{}),[r.schemas,t.defaultSchema]),d=es(()=>Object.values(r.schemas).reduce((c,h)=>c+Object.keys(h.tables).length,0),[r.schemas]),[n]=u,[f,g]=ba({table:{defaultValue:null,parse:c=>c,serialize:c=>c??""},schema:{defaultValue:"",parse:c=>c,serialize:c=>c??""}}),[,m]=Be("pageIndex",{parse:c=>c,serialize:c=>c??""}),[,x]=Be("sort",{parse:c=>c,serialize:c=>c??""});Yr(()=>{if(!s){if(f?.table&&u.length>0){let c=u.find(h=>h.name===f.table);if(c){a(c);return}}u.length>0&&!e&&(a(n||null),n&&g({table:n.name,schema:n.schema}))}},[s,f,u,n,e,a,g]);let S=sn(c=>{e!==c&&(a(c),g({table:c.name,schema:c.schema}),m(null),x(null))},[e,a,g,m,x]);return Yr(()=>{l!==-1&&o({event:"studio_launched",payload:{event_id:ln(),timestamp:new Date().toISOString(),table_count:d}})},[u,o,l,d]),{tables:u,activeTable:e,isLoading:s,handleTableChange:S}}import{jsx as te,jsxs as ts}from"react/jsx-runtime";function qe({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=as(),l=p("ps-flex ps-flex-col ps-w-48 ps-gap-4 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return te("div",{className:l,children:te(qe.Block,{label:"Tables",children:a.length>0?a.map(s=>te(qe.Item,{asChild:!0,isActive:t===s,onClick:()=>{r(s)},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:te("a",{href:`#table=${s.name}&schema=${s.schema}`,children:s.name})},`${s.schema}-${s.name}`)):o?Array(4).fill(null).map((s,u)=>te(qe.Item,{wrapChildrenInSpan:!1,children:te(Je,{className:"ps-h-3 ps-w-full"})},u)):te(qe.Item,{children:"No tables found"})})})}var dn=({className:e,label:a,children:t,...o})=>ts("div",{className:e,...o,children:[ts("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:[te(ha,{size:16,className:"ps-text-muted-foreground/60"}),te("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),te("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),nn=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:l=!0,...s})=>te(a?un:"button",{"data-sidebar":"menu-button","data-size":o,"data-active":t,className:p("ps-py-1.5 ps-px-2 ps-text-sm ps-font-medium ps-rounded-md ps-flex ps-gap-2 ps-items-center ps-border ps-border-transparent ps-bg-transparent",e),...s,children:l?te("span",{className:"ps-truncate",children:r}):r});qe.Block=dn;qe.Item=nn;import{jsx as Pe,jsxs as mn}from"react/jsx-runtime";function cn(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Pe(Ao,{adapter:a,onError:t,onTelemetryEvent:o,children:Pe(pn,{})}):(console.error("No adapter provided to Studio component"),Pe("div",{children:"Error: No adapter provided"}))}function pn(){let{isFullscreen:e,isNavigationOpen:a}=V(),t=p("ps-flex ps-flex-col ps-w-full ps-min-h-0 ps-max-h-full",e&&"ps-fixed ps-inset-0 ps-z-[9999] ps-bg-background ps-p-2");return Pe("div",{className:t,children:mn("div",{className:"ps-flex ps-gap-0 ps-w-full ps-bg-neutral-50 ps-relative ps-max-h-full ps-min-h-full ps-rounded-lg",children:[Pe(fn,{mode:"wait",children:a&&Pe(os.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Pe(qe,{})})}),Pe(os.div,{className:"ps-flex ps-w-full ps-bg-neutral-100 ps-flex-col ps-p-px ps-rounded-lg ps-self-start ps-h-full ps-min-h-full ps-max-h-full ps-overflow-clip",transition:{duration:.14},children:Pe($r,{})})]})})}export{cn as Studio};
|
|
21
21
|
/*! Bundled license information:
|
|
22
22
|
|
|
23
23
|
lucide-react/dist/esm/shared/src/utils.js:
|
|
@@ -124,6 +124,14 @@ lucide-react/dist/esm/icons/chevrons-right.js:
|
|
|
124
124
|
* See the LICENSE file in the root directory of this source tree.
|
|
125
125
|
*)
|
|
126
126
|
|
|
127
|
+
lucide-react/dist/esm/icons/circle-help.js:
|
|
128
|
+
(**
|
|
129
|
+
* @license lucide-react v0.466.0 - ISC
|
|
130
|
+
*
|
|
131
|
+
* This source code is licensed under the ISC license.
|
|
132
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
133
|
+
*)
|
|
134
|
+
|
|
127
135
|
lucide-react/dist/esm/icons/circle.js:
|
|
128
136
|
(**
|
|
129
137
|
* @license lucide-react v0.466.0 - ISC
|
|
@@ -272,4 +280,4 @@ lucide-react/dist/esm/lucide-react.js:
|
|
|
272
280
|
* @license MIT
|
|
273
281
|
*)
|
|
274
282
|
*/
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvbGliL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jbGFzcy1ncm91cC11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbHJ1LWNhY2hlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9wYXJzZS1jbGFzcy1uYW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jb25maWctdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNsYXNzbGlzdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctam9pbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY3JlYXRlLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9mcm9tLXRoZW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi92YWxpZGF0b3JzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9kZWZhdWx0LWNvbmZpZy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY29uZmlncy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZXh0ZW5kLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1tZXJnZS50cyIsICIuLi8uLi91aS9zdHVkaW8vQWN0aXZlVGFibGVWaWV3LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9zaGFyZWQvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvZGVmYXVsdEF0dHJpYnV0ZXMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9JY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvY3JlYXRlTHVjaWRlSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZWNrLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3B5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY29ybmVyLWRvd24tbGVmdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2ZpbHRlci50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2dyaXAtdmVydGljYWwudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXktcm91bmQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tYXhpbWl6ZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21pbmltaXplLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbW92ZS1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbW92ZS11cC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3BhbmVsLWxlZnQtY2xvc2UudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9wYW5lbC1sZWZ0LW9wZW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4tb2ZmLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGluLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvdGFibGUtMi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3gudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9iYWRnZS50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9idXR0b24udHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2NvbnRleHQudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29scy50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytxdWVyeS1kZXZ0b29sc0A1LjcyLjIvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scy9idWlsZC9pbmRleC5qcyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvaW5kZXgudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9zb25uZXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9OdXFzSGFzaEFkYXB0ZXIudHN4IiwgIi4uLy4uL3VpL2hvb2tzL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0LnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtcXVlcnkudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGUudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWZpbHRlcmluZy50cyIsICIuLi8uLi91aS9ob29rcy9udXFzLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXBhZ2luYXRpb24udHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXNlbGVjdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc29ydGluZy50cyIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9nZXQtY2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQm9vbGVhbkNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdGFibGUudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRGF0ZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0VtcHR5Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW51bUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0pTT05DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdWxsQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvTnVtZXJpY0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1Jhd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1RpbWVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RSb3dDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvV3JpdGVhYmxlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL0ZpbHRlclRyZWUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZExvYWRpbmdCYXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkUGFnaW5hdGlvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvZmVhdHVyZXMvY29sdW1uLXBpbm5pbmcudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90b29sdGlwLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9nZXQtaW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9Cb29sZWFuSW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvbGFiZWwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc3dpdGNoLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvaW5wdXQtYWN0aW9ucy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0RhdGVJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L3VzZS1pbnB1dC50cyIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvRW51bUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvSnNvbklucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvTnVtZXJpY0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvUmF3SW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9UaW1lSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9TdGFnZWRSb3dzLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vTmF2aWdhdGlvbi50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtaW50cm9zcGVjdGlvbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciB9IGZyb20gXCIuLi8uLi9kYXRhXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IEFjdGl2ZVRhYmxlVmlldyB9IGZyb20gXCIuL0FjdGl2ZVRhYmxlVmlld1wiO1xuaW1wb3J0IHsgU3R1ZGlvQ29udGV4dFByb3ZpZGVyLCB1c2VTdHVkaW8gfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uIH0gZnJvbSBcIi4vTmF2aWdhdGlvblwiO1xuXG5leHBvcnQgdHlwZSBTdHVkaW9UZWxlbWV0cnlFdmVudCA9IHtcbiAgZXZlbnQ6IFwic3R1ZGlvX2xhdW5jaGVkXCI7XG4gIHBheWxvYWQ6IHtcbiAgICBldmVudF9pZDogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogc3RyaW5nO1xuICAgIHVzZXJfaWQ/OiBzdHJpbmc7XG4gICAgd29ya3NwYWNlX2lkPzogc3RyaW5nO1xuICAgIG9yZ2FuaXphdGlvbl9pZD86IHN0cmluZztcbiAgICBlbWJlZGRpbmdfdHlwZT86IHN0cmluZztcbiAgICB2ZW5kb3JfaWQ/OiBzdHJpbmc7XG4gICAgdGFibGVfY291bnQ6IG51bWJlcjtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3R1ZGlvUHJvcHMge1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgb25UZWxlbWV0cnlFdmVudD86IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBNYWluIFN0dWRpbyBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBkYXRhYmFzZSB2aXN1YWxpemF0aW9uIGFuZCBtYW5hZ2VtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW8ocHJvcHM6IFN0dWRpb1Byb3BzKSB7XG4gIGNvbnN0IHsgYWRhcHRlciwgb25FcnJvciwgb25UZWxlbWV0cnlFdmVudCB9ID0gcHJvcHM7XG5cbiAgaWYgKCFhZGFwdGVyKSB7XG4gICAgY29uc29sZS5lcnJvcihcIk5vIGFkYXB0ZXIgcHJvdmlkZWQgdG8gU3R1ZGlvIGNvbXBvbmVudFwiKTtcbiAgICByZXR1cm4gPGRpdj5FcnJvcjogTm8gYWRhcHRlciBwcm92aWRlZDwvZGl2PjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0dWRpb0NvbnRleHRQcm92aWRlciBhZGFwdGVyPXthZGFwdGVyfSBvbkVycm9yPXtvbkVycm9yfSBvblRlbGVtZXRyeUV2ZW50PXtvblRlbGVtZXRyeUV2ZW50fT5cbiAgICAgIDxTdHVkaW9Db250ZW50IC8+XG4gICAgPC9TdHVkaW9Db250ZXh0UHJvdmlkZXI+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFN0dWRpb0NvbnRlbnQoKSB7XG4gIGNvbnN0IHsgaXNGdWxsc2NyZWVuLCBpc05hdmlnYXRpb25PcGVuIH0gPSB1c2VTdHVkaW8oKTtcblxuICBjb25zdCBjb250YWluZXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctZnVsbCBwcy1taW4taC0wIHBzLW1heC1oLWZ1bGxcIixcbiAgICBpc0Z1bGxzY3JlZW4gJiYgXCJwcy1maXhlZCBwcy1pbnNldC0wIHBzLXotWzk5OTldIHBzLWJnLWJhY2tncm91bmQgcHMtcC0yXCIsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGRhdGEtZnVsbHNjcmVlbj17aXNGdWxsc2NyZWVufSBjbGFzc05hbWU9e2NvbnRhaW5lckNsYXNzZXN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWdhcC0wIHBzLXctZnVsbCBwcy1iZy1uZXV0cmFsLTUwIHBzLXJlbGF0aXZlIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtZnVsbCBwcy1yb3VuZGVkLWxnXCI+XG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiAmJiAoXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgd2lkdGg6IFwiYXV0b1wiLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgd2lkdGg6IDAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbiAvPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuXG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC0xMDAgcHMtZmxleC1jb2wgcHMtcC1weCBwcy1yb3VuZGVkLWxnIHBzLXNlbGYtc3RhcnQgcHMtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtbWF4LWgtZnVsbCBwcy1vdmVyZmxvdy1jbGlwXCJcbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjE0IH19XG4gICAgICAgID5cbiAgICAgICAgICA8QWN0aXZlVGFibGVWaWV3IC8+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgIi8vIHNoYWRjbiB1dGlsc1xuaW1wb3J0IHsgdHlwZSBDbGFzc1ZhbHVlLCBjbHN4IH0gZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IGV4dGVuZFRhaWx3aW5kTWVyZ2UgfSBmcm9tIFwidGFpbHdpbmQtbWVyZ2VcIjtcblxuZXhwb3J0IGNvbnN0IHR3TWVyZ2UgPSBleHRlbmRUYWlsd2luZE1lcmdlKHtcbiAgcHJlZml4OiBcInBzLVwiLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjbiguLi5pbnB1dHM6IENsYXNzVmFsdWVbXSkge1xuICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpO1xufVxuIiwgImltcG9ydCB7XG4gICAgQ2xhc3NHcm91cCxcbiAgICBDbGFzc1ZhbGlkYXRvcixcbiAgICBDb25maWcsXG4gICAgR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgR2VuZXJpY0NvbmZpZyxcbiAgICBHZW5lcmljVGhlbWVHcm91cElkcyxcbiAgICBUaGVtZUdldHRlcixcbiAgICBUaGVtZU9iamVjdCxcbn0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGludGVyZmFjZSBDbGFzc1BhcnRPYmplY3Qge1xuICAgIG5leHRQYXJ0OiBNYXA8c3RyaW5nLCBDbGFzc1BhcnRPYmplY3Q+XG4gICAgdmFsaWRhdG9yczogQ2xhc3NWYWxpZGF0b3JPYmplY3RbXVxuICAgIGNsYXNzR3JvdXBJZD86IEdlbmVyaWNDbGFzc0dyb3VwSWRzXG59XG5cbmludGVyZmFjZSBDbGFzc1ZhbGlkYXRvck9iamVjdCB7XG4gICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkc1xuICAgIHZhbGlkYXRvcjogQ2xhc3NWYWxpZGF0b3Jcbn1cblxuY29uc3QgQ0xBU1NfUEFSVF9TRVBBUkFUT1IgPSAnLSdcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IHtcbiAgICBjb25zdCBjbGFzc01hcCA9IGNyZWF0ZUNsYXNzTWFwKGNvbmZpZylcbiAgICBjb25zdCB7IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyB9ID0gY29uZmlnXG5cbiAgICBjb25zdCBnZXRDbGFzc0dyb3VwSWQgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY2xhc3NQYXJ0cyA9IGNsYXNzTmFtZS5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUilcblxuICAgICAgICAvLyBDbGFzc2VzIGxpa2UgYC1pbnNldC0xYCBwcm9kdWNlIGFuIGVtcHR5IHN0cmluZyBhcyBmaXJzdCBjbGFzc1BhcnQuIFdlIGFzc3VtZSB0aGF0IGNsYXNzZXMgZm9yIG5lZ2F0aXZlIHZhbHVlcyBhcmUgdXNlZCBjb3JyZWN0bHkgYW5kIHJlbW92ZSBpdCBmcm9tIGNsYXNzUGFydHMuXG4gICAgICAgIGlmIChjbGFzc1BhcnRzWzBdID09PSAnJyAmJiBjbGFzc1BhcnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgY2xhc3NQYXJ0cy5zaGlmdCgpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NNYXApIHx8IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpXG4gICAgfVxuXG4gICAgY29uc3QgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzID0gKFxuICAgICAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXI6IGJvb2xlYW4sXG4gICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbmZsaWN0cyA9IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHNbY2xhc3NHcm91cElkXSB8fCBbXVxuXG4gICAgICAgIGlmIChoYXNQb3N0Zml4TW9kaWZpZXIgJiYgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0pIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY29uZmxpY3RzLCAuLi5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSFdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uZmxpY3RzXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0Q2xhc3NHcm91cElkLFxuICAgICAgICBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMsXG4gICAgfVxufVxuXG5jb25zdCBnZXRHcm91cFJlY3Vyc2l2ZSA9IChcbiAgICBjbGFzc1BhcnRzOiBzdHJpbmdbXSxcbiAgICBjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCxcbik6IEdlbmVyaWNDbGFzc0dyb3VwSWRzIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoY2xhc3NQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzUGFydE9iamVjdC5jbGFzc0dyb3VwSWRcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q2xhc3NQYXJ0ID0gY2xhc3NQYXJ0c1swXSFcbiAgICBjb25zdCBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChjdXJyZW50Q2xhc3NQYXJ0KVxuICAgIGNvbnN0IGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCA9IG5leHRDbGFzc1BhcnRPYmplY3RcbiAgICAgICAgPyBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLnNsaWNlKDEpLCBuZXh0Q2xhc3NQYXJ0T2JqZWN0KVxuICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgaWYgKGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCkge1xuICAgICAgICByZXR1cm4gY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY2xhc3NSZXN0ID0gY2xhc3NQYXJ0cy5qb2luKENMQVNTX1BBUlRfU0VQQVJBVE9SKVxuXG4gICAgcmV0dXJuIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLmZpbmQoKHsgdmFsaWRhdG9yIH0pID0+IHZhbGlkYXRvcihjbGFzc1Jlc3QpKT8uY2xhc3NHcm91cElkXG59XG5cbmNvbnN0IGFyYml0cmFyeVByb3BlcnR5UmVnZXggPSAvXlxcWyguKylcXF0kL1xuXG5jb25zdCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoYXJiaXRyYXJ5UHJvcGVydHlSZWdleC50ZXN0KGNsYXNzTmFtZSkpIHtcbiAgICAgICAgY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUgPSBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LmV4ZWMoY2xhc3NOYW1lKSFbMV1cbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZT8uc3Vic3RyaW5nKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lLmluZGV4T2YoJzonKSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgLy8gSSB1c2UgdHdvIGRvdHMgaGVyZSBiZWNhdXNlIG9uZSBkb3QgaXMgdXNlZCBhcyBwcmVmaXggZm9yIGNsYXNzIGdyb3VwcyBpbiBwbHVnaW5zXG4gICAgICAgICAgICByZXR1cm4gJ2FyYml0cmFyeS4uJyArIHByb3BlcnR5XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NNYXAgPSAoY29uZmlnOiBDb25maWc8R2VuZXJpY0NsYXNzR3JvdXBJZHMsIEdlbmVyaWNUaGVtZUdyb3VwSWRzPikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWUsIHByZWZpeCB9ID0gY29uZmlnXG4gICAgY29uc3QgY2xhc3NNYXA6IENsYXNzUGFydE9iamVjdCA9IHtcbiAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXA8c3RyaW5nLCBDbGFzc1BhcnRPYmplY3Q+KCksXG4gICAgICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhjb25maWcuY2xhc3NHcm91cHMpLFxuICAgICAgICBwcmVmaXgsXG4gICAgKVxuXG4gICAgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcy5mb3JFYWNoKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzR3JvdXAsIGNsYXNzTWFwLCBjbGFzc0dyb3VwSWQsIHRoZW1lKVxuICAgIH0pXG5cbiAgICByZXR1cm4gY2xhc3NNYXBcbn1cblxuY29uc3QgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSA9IChcbiAgICBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPixcbiAgICBjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCxcbiAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgIHRoZW1lOiBUaGVtZU9iamVjdDxHZW5lcmljVGhlbWVHcm91cElkcz4sXG4pID0+IHtcbiAgICBjbGFzc0dyb3VwLmZvckVhY2goKGNsYXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzUGFydE9iamVjdFRvRWRpdCA9XG4gICAgICAgICAgICAgICAgY2xhc3NEZWZpbml0aW9uID09PSAnJyA/IGNsYXNzUGFydE9iamVjdCA6IGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0RlZmluaXRpb24pXG4gICAgICAgICAgICBjbGFzc1BhcnRPYmplY3RUb0VkaXQuY2xhc3NHcm91cElkID0gY2xhc3NHcm91cElkXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAoaXNUaGVtZUdldHRlcihjbGFzc0RlZmluaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NEZWZpbml0aW9uKHRoZW1lKSxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0LFxuICAgICAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yOiBjbGFzc0RlZmluaXRpb24sXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLmZvckVhY2goKFtrZXksIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXAsXG4gICAgICAgICAgICAgICAgZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGtleSksXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmNvbnN0IGdldFBhcnQgPSAoY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsIHBhdGg6IHN0cmluZykgPT4ge1xuICAgIGxldCBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0XG5cbiAgICBwYXRoLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKS5mb3JFYWNoKChwYXRoUGFydCkgPT4ge1xuICAgICAgICBpZiAoIWN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuaGFzKHBhdGhQYXJ0KSkge1xuICAgICAgICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5zZXQocGF0aFBhcnQsIHtcbiAgICAgICAgICAgICAgICBuZXh0UGFydDogbmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChwYXRoUGFydCkhXG4gICAgfSlcblxuICAgIHJldHVybiBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0XG59XG5cbmNvbnN0IGlzVGhlbWVHZXR0ZXIgPSAoZnVuYzogQ2xhc3NWYWxpZGF0b3IgfCBUaGVtZUdldHRlcik6IGZ1bmMgaXMgVGhlbWVHZXR0ZXIgPT5cbiAgICAoZnVuYyBhcyBUaGVtZUdldHRlcikuaXNUaGVtZUdldHRlclxuXG5jb25zdCBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gKFxuICAgIGNsYXNzR3JvdXBFbnRyaWVzOiBBcnJheTxbY2xhc3NHcm91cElkOiBzdHJpbmcsIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+XT4sXG4gICAgcHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBBcnJheTxbY2xhc3NHcm91cElkOiBzdHJpbmcsIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+XT4gPT4ge1xuICAgIGlmICghcHJlZml4KSB7XG4gICAgICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllc1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllcy5tYXAoKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cCA9IGNsYXNzR3JvdXAubWFwKChjbGFzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBjbGFzc0RlZmluaXRpb25cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW3ByZWZpeCArIGtleSwgdmFsdWVdKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjbGFzc0RlZmluaXRpb25cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gW2NsYXNzR3JvdXBJZCwgcHJlZml4ZWRDbGFzc0dyb3VwXVxuICAgIH0pXG59XG4iLCAiLy8gRXhwb3J0IGlzIG5lZWRlZCBiZWNhdXNlIFR5cGVTY3JpcHQgY29tcGxhaW5zIGFib3V0IGFuIGVycm9yIG90aGVyd2lzZTpcbi8vIEVycm9yOiBcdTIwMjYvdGFpbHdpbmQtbWVyZ2Uvc3JjL2NvbmZpZy11dGlscy50cyg4LDE3KTogc2VtYW50aWMgZXJyb3IgVFM0MDU4OiBSZXR1cm4gdHlwZSBvZiBleHBvcnRlZCBmdW5jdGlvbiBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnTHJ1Q2FjaGUnIGZyb20gZXh0ZXJuYWwgbW9kdWxlIFwiXHUyMDI2L3RhaWx3aW5kLW1lcmdlL3NyYy9scnUtY2FjaGVcIiBidXQgY2Fubm90IGJlIG5hbWVkLlxuZXhwb3J0IGludGVyZmFjZSBMcnVDYWNoZTxLZXksIFZhbHVlPiB7XG4gICAgZ2V0KGtleTogS2V5KTogVmFsdWUgfCB1bmRlZmluZWRcbiAgICBzZXQoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSk6IHZvaWRcbn1cblxuLy8gTFJVIGNhY2hlIGluc3BpcmVkIGZyb20gaGFzaGxydSAoaHR0cHM6Ly9naXRodWIuY29tL2RvbWluaWN0YXJyL2hhc2hscnUvYmxvYi92MS4wLjQvaW5kZXguanMpIGJ1dCBvYmplY3QgcmVwbGFjZWQgd2l0aCBNYXAgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZVxuZXhwb3J0IGNvbnN0IGNyZWF0ZUxydUNhY2hlID0gPEtleSwgVmFsdWU+KG1heENhY2hlU2l6ZTogbnVtYmVyKTogTHJ1Q2FjaGU8S2V5LCBWYWx1ZT4gPT4ge1xuICAgIGlmIChtYXhDYWNoZVNpemUgPCAxKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNldDogKCkgPT4ge30sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgY2FjaGVTaXplID0gMFxuICAgIGxldCBjYWNoZSA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKVxuICAgIGxldCBwcmV2aW91c0NhY2hlID0gbmV3IE1hcDxLZXksIFZhbHVlPigpXG5cbiAgICBjb25zdCB1cGRhdGUgPSAoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSkgPT4ge1xuICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgY2FjaGVTaXplKytcblxuICAgICAgICBpZiAoY2FjaGVTaXplID4gbWF4Q2FjaGVTaXplKSB7XG4gICAgICAgICAgICBjYWNoZVNpemUgPSAwXG4gICAgICAgICAgICBwcmV2aW91c0NhY2hlID0gY2FjaGVcbiAgICAgICAgICAgIGNhY2hlID0gbmV3IE1hcCgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXQoa2V5KSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBjYWNoZS5nZXQoa2V5KVxuXG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IHByZXZpb3VzQ2FjaGUuZ2V0KGtleSkpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBJTVBPUlRBTlRfTU9ESUZJRVIgPSAnISdcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4ge1xuICAgIGNvbnN0IHsgc2VwYXJhdG9yLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSB9ID0gY29uZmlnXG4gICAgY29uc3QgaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgPSBzZXBhcmF0b3IubGVuZ3RoID09PSAxXG4gICAgY29uc3QgZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgPSBzZXBhcmF0b3JbMF1cbiAgICBjb25zdCBzZXBhcmF0b3JMZW5ndGggPSBzZXBhcmF0b3IubGVuZ3RoXG5cbiAgICAvLyBwYXJzZUNsYXNzTmFtZSBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2Jsb2IvdjMuMi4yL3NyYy91dGlsL3NwbGl0QXRUb3BMZXZlbE9ubHkuanNcbiAgICBjb25zdCBwYXJzZUNsYXNzTmFtZSA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBtb2RpZmllcnMgPSBbXVxuXG4gICAgICAgIGxldCBicmFja2V0RGVwdGggPSAwXG4gICAgICAgIGxldCBtb2RpZmllclN0YXJ0ID0gMFxuICAgICAgICBsZXQgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZFxuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjbGFzc05hbWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudENoYXJhY3RlciA9IGNsYXNzTmFtZVtpbmRleF1cblxuICAgICAgICAgICAgaWYgKGJyYWNrZXREZXB0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENoYXJhY3RlciA9PT0gZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgKGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoKSA9PT0gc2VwYXJhdG9yKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMucHVzaChjbGFzc05hbWUuc2xpY2UobW9kaWZpZXJTdGFydCwgaW5kZXgpKVxuICAgICAgICAgICAgICAgICAgICBtb2RpZmllclN0YXJ0ID0gaW5kZXggKyBzZXBhcmF0b3JMZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJy8nKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICBicmFja2V0RGVwdGgrK1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICBicmFja2V0RGVwdGgtLVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciA9XG4gICAgICAgICAgICBtb2RpZmllcnMubGVuZ3RoID09PSAwID8gY2xhc3NOYW1lIDogY2xhc3NOYW1lLnN1YnN0cmluZyhtb2RpZmllclN0YXJ0KVxuICAgICAgICBjb25zdCBoYXNJbXBvcnRhbnRNb2RpZmllciA9XG4gICAgICAgICAgICBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN0YXJ0c1dpdGgoSU1QT1JUQU5UX01PRElGSUVSKVxuICAgICAgICBjb25zdCBiYXNlQ2xhc3NOYW1lID0gaGFzSW1wb3J0YW50TW9kaWZpZXJcbiAgICAgICAgICAgID8gYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdWJzdHJpbmcoMSlcbiAgICAgICAgICAgIDogYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllclxuXG4gICAgICAgIGNvbnN0IG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPVxuICAgICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gJiYgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPiBtb2RpZmllclN0YXJ0XG4gICAgICAgICAgICAgICAgPyBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAtIG1vZGlmaWVyU3RhcnRcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb2RpZmllcnMsXG4gICAgICAgICAgICBoYXNJbXBvcnRhbnRNb2RpZmllcixcbiAgICAgICAgICAgIGJhc2VDbGFzc05hbWUsXG4gICAgICAgICAgICBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKSB7XG4gICAgICAgIHJldHVybiAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKHsgY2xhc3NOYW1lLCBwYXJzZUNsYXNzTmFtZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwYXJzZUNsYXNzTmFtZVxufVxuXG4vKipcbiAqIFNvcnRzIG1vZGlmaWVycyBhY2NvcmRpbmcgdG8gZm9sbG93aW5nIHNjaGVtYTpcbiAqIC0gUHJlZGVmaW5lZCBtb2RpZmllcnMgYXJlIHNvcnRlZCBhbHBoYWJldGljYWxseVxuICogLSBXaGVuIGFuIGFyYml0cmFyeSB2YXJpYW50IGFwcGVhcnMsIGl0IG11c3QgYmUgcHJlc2VydmVkIHdoaWNoIG1vZGlmaWVycyBhcmUgYmVmb3JlIGFuZCBhZnRlciBpdFxuICovXG5leHBvcnQgY29uc3Qgc29ydE1vZGlmaWVycyA9IChtb2RpZmllcnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYgKG1vZGlmaWVycy5sZW5ndGggPD0gMSkge1xuICAgICAgICByZXR1cm4gbW9kaWZpZXJzXG4gICAgfVxuXG4gICAgY29uc3Qgc29ydGVkTW9kaWZpZXJzOiBzdHJpbmdbXSA9IFtdXG4gICAgbGV0IHVuc29ydGVkTW9kaWZpZXJzOiBzdHJpbmdbXSA9IFtdXG5cbiAgICBtb2RpZmllcnMuZm9yRWFjaCgobW9kaWZpZXIpID0+IHtcbiAgICAgICAgY29uc3QgaXNBcmJpdHJhcnlWYXJpYW50ID0gbW9kaWZpZXJbMF0gPT09ICdbJ1xuXG4gICAgICAgIGlmIChpc0FyYml0cmFyeVZhcmlhbnQpIHtcbiAgICAgICAgICAgIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSwgbW9kaWZpZXIpXG4gICAgICAgICAgICB1bnNvcnRlZE1vZGlmaWVycyA9IFtdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bnNvcnRlZE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSlcblxuICAgIHJldHVybiBzb3J0ZWRNb2RpZmllcnNcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVDbGFzc0dyb3VwVXRpbHMgfSBmcm9tICcuL2NsYXNzLWdyb3VwLXV0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlTHJ1Q2FjaGUgfSBmcm9tICcuL2xydS1jYWNoZSdcbmltcG9ydCB7IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lIH0gZnJvbSAnLi9wYXJzZS1jbGFzcy1uYW1lJ1xuaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCB0eXBlIENvbmZpZ1V0aWxzID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ29uZmlnVXRpbHM+XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb25maWdVdGlscyA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+ICh7XG4gICAgY2FjaGU6IGNyZWF0ZUxydUNhY2hlPHN0cmluZywgc3RyaW5nPihjb25maWcuY2FjaGVTaXplKSxcbiAgICBwYXJzZUNsYXNzTmFtZTogY3JlYXRlUGFyc2VDbGFzc05hbWUoY29uZmlnKSxcbiAgICAuLi5jcmVhdGVDbGFzc0dyb3VwVXRpbHMoY29uZmlnKSxcbn0pXG4iLCAiaW1wb3J0IHsgQ29uZmlnVXRpbHMgfSBmcm9tICcuL2NvbmZpZy11dGlscydcbmltcG9ydCB7IElNUE9SVEFOVF9NT0RJRklFUiwgc29ydE1vZGlmaWVycyB9IGZyb20gJy4vcGFyc2UtY2xhc3MtbmFtZSdcblxuY29uc3QgU1BMSVRfQ0xBU1NFU19SRUdFWCA9IC9cXHMrL1xuXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc0xpc3QgPSAoY2xhc3NMaXN0OiBzdHJpbmcsIGNvbmZpZ1V0aWxzOiBDb25maWdVdGlscykgPT4ge1xuICAgIGNvbnN0IHsgcGFyc2VDbGFzc05hbWUsIGdldENsYXNzR3JvdXBJZCwgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzIH0gPSBjb25maWdVdGlsc1xuXG4gICAgLyoqXG4gICAgICogU2V0IG9mIGNsYXNzR3JvdXBJZHMgaW4gZm9sbG93aW5nIGZvcm1hdDpcbiAgICAgKiBge2ltcG9ydGFudE1vZGlmaWVyfXt2YXJpYW50TW9kaWZpZXJzfXtjbGFzc0dyb3VwSWR9YFxuICAgICAqIEBleGFtcGxlICdmbG9hdCdcbiAgICAgKiBAZXhhbXBsZSAnaG92ZXI6Zm9jdXM6YmctY29sb3InXG4gICAgICogQGV4YW1wbGUgJ21kOiFwcidcbiAgICAgKi9cbiAgICBjb25zdCBjbGFzc0dyb3Vwc0luQ29uZmxpY3Q6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBjbGFzc05hbWVzID0gY2xhc3NMaXN0LnRyaW0oKS5zcGxpdChTUExJVF9DTEFTU0VTX1JFR0VYKVxuXG4gICAgbGV0IHJlc3VsdCA9ICcnXG5cbiAgICBmb3IgKGxldCBpbmRleCA9IGNsYXNzTmFtZXMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXggLT0gMSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbENsYXNzTmFtZSA9IGNsYXNzTmFtZXNbaW5kZXhdIVxuXG4gICAgICAgIGNvbnN0IHsgbW9kaWZpZXJzLCBoYXNJbXBvcnRhbnRNb2RpZmllciwgYmFzZUNsYXNzTmFtZSwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiB9ID1cbiAgICAgICAgICAgIHBhcnNlQ2xhc3NOYW1lKG9yaWdpbmFsQ2xhc3NOYW1lKVxuXG4gICAgICAgIGxldCBoYXNQb3N0Zml4TW9kaWZpZXIgPSBCb29sZWFuKG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pXG4gICAgICAgIGxldCBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoXG4gICAgICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXJcbiAgICAgICAgICAgICAgICA/IGJhc2VDbGFzc05hbWUuc3Vic3RyaW5nKDAsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pXG4gICAgICAgICAgICAgICAgOiBiYXNlQ2xhc3NOYW1lLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKCFjbGFzc0dyb3VwSWQpIHtcbiAgICAgICAgICAgIGlmICghaGFzUG9zdGZpeE1vZGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoYmFzZUNsYXNzTmFtZSlcblxuICAgICAgICAgICAgaWYgKCFjbGFzc0dyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllciA9IGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYW50TW9kaWZpZXIgPSBzb3J0TW9kaWZpZXJzKG1vZGlmaWVycykuam9pbignOicpXG5cbiAgICAgICAgY29uc3QgbW9kaWZpZXJJZCA9IGhhc0ltcG9ydGFudE1vZGlmaWVyXG4gICAgICAgICAgICA/IHZhcmlhbnRNb2RpZmllciArIElNUE9SVEFOVF9NT0RJRklFUlxuICAgICAgICAgICAgOiB2YXJpYW50TW9kaWZpZXJcblxuICAgICAgICBjb25zdCBjbGFzc0lkID0gbW9kaWZpZXJJZCArIGNsYXNzR3JvdXBJZFxuXG4gICAgICAgIGlmIChjbGFzc0dyb3Vwc0luQ29uZmxpY3QuaW5jbHVkZXMoY2xhc3NJZCkpIHtcbiAgICAgICAgICAgIC8vIFRhaWx3aW5kIGNsYXNzIG9taXR0ZWQgZHVlIHRvIGNvbmZsaWN0XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2goY2xhc3NJZClcblxuICAgICAgICBjb25zdCBjb25mbGljdEdyb3VwcyA9IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyhjbGFzc0dyb3VwSWQsIGhhc1Bvc3RmaXhNb2RpZmllcilcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25mbGljdEdyb3Vwcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBjb25mbGljdEdyb3Vwc1tpXSFcbiAgICAgICAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKG1vZGlmaWVySWQgKyBncm91cClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRhaWx3aW5kIGNsYXNzIG5vdCBpbiBjb25mbGljdFxuICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG4iLCAiLyoqXG4gKiBUaGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgY29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4IGFuZCBtb2RpZmllZCB0byBzdWl0IHRoZSBuZWVkcyBvZiB0YWlsd2luZC1tZXJnZSBiZXR0ZXIuXG4gKlxuICogU3BlY2lmaWNhbGx5OlxuICogLSBSdW50aW1lIGNvZGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvc3JjL2luZGV4LmpzXG4gKiAtIFR5cGVTY3JpcHQgdHlwZXMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvY2xzeC5kLnRzXG4gKlxuICogT3JpZ2luYWwgY29kZSBoYXMgTUlUIGxpY2Vuc2U6IENvcHlyaWdodCAoYykgTHVrZSBFZHdhcmRzIDxsdWtlLmVkd2FyZHMwNUBnbWFpbC5jb20+IChsdWtlZWQuY29tKVxuICovXG5cbmV4cG9ydCB0eXBlIENsYXNzTmFtZVZhbHVlID0gQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgMCB8IDBuIHwgZmFsc2VcbnR5cGUgQ2xhc3NOYW1lQXJyYXkgPSBDbGFzc05hbWVWYWx1ZVtdXG5cbmV4cG9ydCBmdW5jdGlvbiB0d0pvaW4oLi4uY2xhc3NMaXN0czogQ2xhc3NOYW1lVmFsdWVbXSk6IHN0cmluZ1xuZXhwb3J0IGZ1bmN0aW9uIHR3Sm9pbigpIHtcbiAgICBsZXQgaW5kZXggPSAwXG4gICAgbGV0IGFyZ3VtZW50OiBDbGFzc05hbWVWYWx1ZVxuICAgIGxldCByZXNvbHZlZFZhbHVlOiBzdHJpbmdcbiAgICBsZXQgc3RyaW5nID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKChhcmd1bWVudCA9IGFyZ3VtZW50c1tpbmRleCsrXSkpIHtcbiAgICAgICAgICAgIGlmICgocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUoYXJndW1lbnQpKSkge1xuICAgICAgICAgICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJylcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmdcbn1cblxuY29uc3QgdG9WYWx1ZSA9IChtaXg6IENsYXNzTmFtZUFycmF5IHwgc3RyaW5nKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBtaXggPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBtaXhcbiAgICB9XG5cbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZTogc3RyaW5nXG4gICAgbGV0IHN0cmluZyA9ICcnXG5cbiAgICBmb3IgKGxldCBrID0gMDsgayA8IG1peC5sZW5ndGg7IGsrKykge1xuICAgICAgICBpZiAobWl4W2tdKSB7XG4gICAgICAgICAgICBpZiAoKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKG1peFtrXSBhcyBDbGFzc05hbWVBcnJheSB8IHN0cmluZykpKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKVxuICAgICAgICAgICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ29uZmlnVXRpbHMgfSBmcm9tICcuL2NvbmZpZy11dGlscydcbmltcG9ydCB7IG1lcmdlQ2xhc3NMaXN0IH0gZnJvbSAnLi9tZXJnZS1jbGFzc2xpc3QnXG5pbXBvcnQgeyBDbGFzc05hbWVWYWx1ZSwgdHdKb2luIH0gZnJvbSAnLi90dy1qb2luJ1xuaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbnR5cGUgQ3JlYXRlQ29uZmlnRmlyc3QgPSAoKSA9PiBHZW5lcmljQ29uZmlnXG50eXBlIENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiBHZW5lcmljQ29uZmlnXG50eXBlIFRhaWx3aW5kTWVyZ2UgPSAoLi4uY2xhc3NMaXN0czogQ2xhc3NOYW1lVmFsdWVbXSkgPT4gc3RyaW5nXG50eXBlIENvbmZpZ1V0aWxzID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ29uZmlnVXRpbHM+XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWlsd2luZE1lcmdlKFxuICAgIGNyZWF0ZUNvbmZpZ0ZpcnN0OiBDcmVhdGVDb25maWdGaXJzdCxcbiAgICAuLi5jcmVhdGVDb25maWdSZXN0OiBDcmVhdGVDb25maWdTdWJzZXF1ZW50W11cbik6IFRhaWx3aW5kTWVyZ2Uge1xuICAgIGxldCBjb25maWdVdGlsczogQ29uZmlnVXRpbHNcbiAgICBsZXQgY2FjaGVHZXQ6IENvbmZpZ1V0aWxzWydjYWNoZSddWydnZXQnXVxuICAgIGxldCBjYWNoZVNldDogQ29uZmlnVXRpbHNbJ2NhY2hlJ11bJ3NldCddXG4gICAgbGV0IGZ1bmN0aW9uVG9DYWxsID0gaW5pdFRhaWx3aW5kTWVyZ2VcblxuICAgIGZ1bmN0aW9uIGluaXRUYWlsd2luZE1lcmdlKGNsYXNzTGlzdDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGNyZWF0ZUNvbmZpZ1Jlc3QucmVkdWNlKFxuICAgICAgICAgICAgKHByZXZpb3VzQ29uZmlnLCBjcmVhdGVDb25maWdDdXJyZW50KSA9PiBjcmVhdGVDb25maWdDdXJyZW50KHByZXZpb3VzQ29uZmlnKSxcbiAgICAgICAgICAgIGNyZWF0ZUNvbmZpZ0ZpcnN0KCkgYXMgR2VuZXJpY0NvbmZpZyxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbmZpZ1V0aWxzID0gY3JlYXRlQ29uZmlnVXRpbHMoY29uZmlnKVxuICAgICAgICBjYWNoZUdldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLmdldFxuICAgICAgICBjYWNoZVNldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLnNldFxuICAgICAgICBmdW5jdGlvblRvQ2FsbCA9IHRhaWx3aW5kTWVyZ2VcblxuICAgICAgICByZXR1cm4gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3Q6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZUdldChjbGFzc0xpc3QpXG5cbiAgICAgICAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbWVyZ2VDbGFzc0xpc3QoY2xhc3NMaXN0LCBjb25maWdVdGlscylcbiAgICAgICAgY2FjaGVTZXQoY2xhc3NMaXN0LCByZXN1bHQpXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiBjYWxsVGFpbHdpbmRNZXJnZSgpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uVG9DYWxsKHR3Sm9pbi5hcHBseShudWxsLCBhcmd1bWVudHMgYXMgYW55KSlcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgRGVmYXVsdFRoZW1lR3JvdXBJZHMsIE5vSW5mZXIsIFRoZW1lR2V0dGVyLCBUaGVtZU9iamVjdCB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBmcm9tVGhlbWUgPSA8XG4gICAgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgICBEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIGV4dGVuZHMgc3RyaW5nID0gRGVmYXVsdFRoZW1lR3JvdXBJZHMsXG4+KGtleTogTm9JbmZlcjxEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHM+KTogVGhlbWVHZXR0ZXIgPT4ge1xuICAgIGNvbnN0IHRoZW1lR2V0dGVyID0gKHRoZW1lOiBUaGVtZU9iamVjdDxEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHM+KSA9PlxuICAgICAgICB0aGVtZVtrZXldIHx8IFtdXG5cbiAgICB0aGVtZUdldHRlci5pc1RoZW1lR2V0dGVyID0gdHJ1ZSBhcyBjb25zdFxuXG4gICAgcmV0dXJuIHRoZW1lR2V0dGVyXG59XG4iLCAiY29uc3QgYXJiaXRyYXJ5VmFsdWVSZWdleCA9IC9eXFxbKD86KFthLXotXSspOik/KC4rKVxcXSQvaVxuY29uc3QgZnJhY3Rpb25SZWdleCA9IC9eXFxkK1xcL1xcZCskL1xuY29uc3Qgc3RyaW5nTGVuZ3RocyA9IG5ldyBTZXQoWydweCcsICdmdWxsJywgJ3NjcmVlbiddKVxuY29uc3QgdHNoaXJ0VW5pdFJlZ2V4ID0gL14oXFxkKyhcXC5cXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkL1xuY29uc3QgbGVuZ3RoVW5pdFJlZ2V4ID1cbiAgICAvXFxkKyglfHB4fHI/ZW18W3NkbF0/dihbaHdpYl18bWlufG1heCl8cHR8cGN8aW58Y218bW18Y2FwfGNofGV4fHI/bGh8Y3Eod3xofGl8YnxtaW58bWF4KSl8XFxiKGNhbGN8bWlufG1heHxjbGFtcClcXCguK1xcKXxeMCQvXG5jb25zdCBjb2xvckZ1bmN0aW9uUmVnZXggPSAvXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCkpXFwoLitcXCkkL1xuLy8gU2hhZG93IGFsd2F5cyBiZWdpbnMgd2l0aCB4IGFuZCB5IG9mZnNldCBzZXBhcmF0ZWQgYnkgdW5kZXJzY29yZSBvcHRpb25hbGx5IHByZXBlbmRlZCBieSBpbnNldFxuY29uc3Qgc2hhZG93UmVnZXggPSAvXihpbnNldF8pPy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApXy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApL1xuY29uc3QgaW1hZ2VSZWdleCA9XG4gICAgL14odXJsfGltYWdlfGltYWdlLXNldHxjcm9zcy1mYWRlfGVsZW1lbnR8KHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsfGNvbmljKS1ncmFkaWVudClcXCguK1xcKSQvXG5cbmV4cG9ydCBjb25zdCBpc0xlbmd0aCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGlzTnVtYmVyKHZhbHVlKSB8fCBzdHJpbmdMZW5ndGhzLmhhcyh2YWx1ZSkgfHwgZnJhY3Rpb25SZWdleC50ZXN0KHZhbHVlKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlMZW5ndGggPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbGVuZ3RoJywgaXNMZW5ndGhPbmx5KVxuXG5leHBvcnQgY29uc3QgaXNOdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4gQm9vbGVhbih2YWx1ZSkgJiYgIU51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlOdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ251bWJlcicsIGlzTnVtYmVyKVxuXG5leHBvcnQgY29uc3QgaXNJbnRlZ2VyID0gKHZhbHVlOiBzdHJpbmcpID0+IEJvb2xlYW4odmFsdWUpICYmIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKHZhbHVlKSlcblxuZXhwb3J0IGNvbnN0IGlzUGVyY2VudCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS5lbmRzV2l0aCgnJScpICYmIGlzTnVtYmVyKHZhbHVlLnNsaWNlKDAsIC0xKSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5VmFsdWUgPSAodmFsdWU6IHN0cmluZykgPT4gYXJiaXRyYXJ5VmFsdWVSZWdleC50ZXN0KHZhbHVlKVxuXG5leHBvcnQgY29uc3QgaXNUc2hpcnRTaXplID0gKHZhbHVlOiBzdHJpbmcpID0+IHRzaGlydFVuaXRSZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBzaXplTGFiZWxzID0gbmV3IFNldChbJ2xlbmd0aCcsICdzaXplJywgJ3BlcmNlbnRhZ2UnXSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5U2l6ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBzaXplTGFiZWxzLCBpc05ldmVyKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlQb3NpdGlvbiA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdwb3NpdGlvbicsIGlzTmV2ZXIpXG5cbmNvbnN0IGltYWdlTGFiZWxzID0gbmV3IFNldChbJ2ltYWdlJywgJ3VybCddKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlJbWFnZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBpbWFnZUxhYmVscywgaXNJbWFnZSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5U2hhZG93ID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICcnLCBpc1NoYWRvdylcblxuZXhwb3J0IGNvbnN0IGlzQW55ID0gKCkgPT4gdHJ1ZVxuXG5jb25zdCBnZXRJc0FyYml0cmFyeVZhbHVlID0gKFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgbGFiZWw6IHN0cmluZyB8IFNldDxzdHJpbmc+LFxuICAgIHRlc3RWYWx1ZTogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW4sXG4pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhcmJpdHJhcnlWYWx1ZVJlZ2V4LmV4ZWModmFsdWUpXG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGlmIChyZXN1bHRbMV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnID8gcmVzdWx0WzFdID09PSBsYWJlbCA6IGxhYmVsLmhhcyhyZXN1bHRbMV0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGVzdFZhbHVlKHJlc3VsdFsyXSEpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbmNvbnN0IGlzTGVuZ3RoT25seSA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIC8vIGBjb2xvckZ1bmN0aW9uUmVnZXhgIGNoZWNrIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGNvbG9yIGZ1bmN0aW9ucyBjYW4gaGF2ZSBwZXJjZW50YWdlcyBpbiB0aGVtIHdoaWNoIHdoaWNoIHdvdWxkIGJlIGluY29ycmVjdGx5IGNsYXNzaWZpZWQgYXMgbGVuZ3Rocy5cbiAgICAvLyBGb3IgZXhhbXBsZSwgYGhzbCgwIDAlIDAlKWAgd291bGQgYmUgY2xhc3NpZmllZCBhcyBhIGxlbmd0aCB3aXRob3V0IHRoaXMgY2hlY2suXG4gICAgLy8gSSBjb3VsZCBhbHNvIHVzZSBsb29rYmVoaW5kIGFzc2VydGlvbiBpbiBgbGVuZ3RoVW5pdFJlZ2V4YCBidXQgdGhhdCBpc24ndCBzdXBwb3J0ZWQgd2lkZWx5IGVub3VnaC5cbiAgICBsZW5ndGhVbml0UmVnZXgudGVzdCh2YWx1ZSkgJiYgIWNvbG9yRnVuY3Rpb25SZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBpc05ldmVyID0gKCkgPT4gZmFsc2VcblxuY29uc3QgaXNTaGFkb3cgPSAodmFsdWU6IHN0cmluZykgPT4gc2hhZG93UmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3QgaXNJbWFnZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBpbWFnZVJlZ2V4LnRlc3QodmFsdWUpXG4iLCAiaW1wb3J0IHsgZnJvbVRoZW1lIH0gZnJvbSAnLi9mcm9tLXRoZW1lJ1xuaW1wb3J0IHsgQ29uZmlnLCBEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHtcbiAgICBpc0FueSxcbiAgICBpc0FyYml0cmFyeUltYWdlLFxuICAgIGlzQXJiaXRyYXJ5TGVuZ3RoLFxuICAgIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICAgIGlzQXJiaXRyYXJ5UG9zaXRpb24sXG4gICAgaXNBcmJpdHJhcnlTaGFkb3csXG4gICAgaXNBcmJpdHJhcnlTaXplLFxuICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgaXNJbnRlZ2VyLFxuICAgIGlzTGVuZ3RoLFxuICAgIGlzTnVtYmVyLFxuICAgIGlzUGVyY2VudCxcbiAgICBpc1RzaGlydFNpemUsXG59IGZyb20gJy4vdmFsaWRhdG9ycydcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRDb25maWcgPSAoKSA9PiB7XG4gICAgY29uc3QgY29sb3JzID0gZnJvbVRoZW1lKCdjb2xvcnMnKVxuICAgIGNvbnN0IHNwYWNpbmcgPSBmcm9tVGhlbWUoJ3NwYWNpbmcnKVxuICAgIGNvbnN0IGJsdXIgPSBmcm9tVGhlbWUoJ2JsdXInKVxuICAgIGNvbnN0IGJyaWdodG5lc3MgPSBmcm9tVGhlbWUoJ2JyaWdodG5lc3MnKVxuICAgIGNvbnN0IGJvcmRlckNvbG9yID0gZnJvbVRoZW1lKCdib3JkZXJDb2xvcicpXG4gICAgY29uc3QgYm9yZGVyUmFkaXVzID0gZnJvbVRoZW1lKCdib3JkZXJSYWRpdXMnKVxuICAgIGNvbnN0IGJvcmRlclNwYWNpbmcgPSBmcm9tVGhlbWUoJ2JvcmRlclNwYWNpbmcnKVxuICAgIGNvbnN0IGJvcmRlcldpZHRoID0gZnJvbVRoZW1lKCdib3JkZXJXaWR0aCcpXG4gICAgY29uc3QgY29udHJhc3QgPSBmcm9tVGhlbWUoJ2NvbnRyYXN0JylcbiAgICBjb25zdCBncmF5c2NhbGUgPSBmcm9tVGhlbWUoJ2dyYXlzY2FsZScpXG4gICAgY29uc3QgaHVlUm90YXRlID0gZnJvbVRoZW1lKCdodWVSb3RhdGUnKVxuICAgIGNvbnN0IGludmVydCA9IGZyb21UaGVtZSgnaW52ZXJ0JylcbiAgICBjb25zdCBnYXAgPSBmcm9tVGhlbWUoJ2dhcCcpXG4gICAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BzID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcHMnKVxuICAgIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucycpXG4gICAgY29uc3QgaW5zZXQgPSBmcm9tVGhlbWUoJ2luc2V0JylcbiAgICBjb25zdCBtYXJnaW4gPSBmcm9tVGhlbWUoJ21hcmdpbicpXG4gICAgY29uc3Qgb3BhY2l0eSA9IGZyb21UaGVtZSgnb3BhY2l0eScpXG4gICAgY29uc3QgcGFkZGluZyA9IGZyb21UaGVtZSgncGFkZGluZycpXG4gICAgY29uc3Qgc2F0dXJhdGUgPSBmcm9tVGhlbWUoJ3NhdHVyYXRlJylcbiAgICBjb25zdCBzY2FsZSA9IGZyb21UaGVtZSgnc2NhbGUnKVxuICAgIGNvbnN0IHNlcGlhID0gZnJvbVRoZW1lKCdzZXBpYScpXG4gICAgY29uc3Qgc2tldyA9IGZyb21UaGVtZSgnc2tldycpXG4gICAgY29uc3Qgc3BhY2UgPSBmcm9tVGhlbWUoJ3NwYWNlJylcbiAgICBjb25zdCB0cmFuc2xhdGUgPSBmcm9tVGhlbWUoJ3RyYW5zbGF0ZScpXG5cbiAgICBjb25zdCBnZXRPdmVyc2Nyb2xsID0gKCkgPT4gWydhdXRvJywgJ2NvbnRhaW4nLCAnbm9uZSddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0T3ZlcmZsb3cgPSAoKSA9PiBbJ2F1dG8nLCAnaGlkZGVuJywgJ2NsaXAnLCAndmlzaWJsZScsICdzY3JvbGwnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkgPSAoKSA9PiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkgPSAoKSA9PiBbJycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFBvc2l0aW9ucyA9ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgJ2NlbnRlcicsXG4gICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAnbGVmdC1ib3R0b20nLFxuICAgICAgICAgICAgJ2xlZnQtdG9wJyxcbiAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAncmlnaHQtYm90dG9tJyxcbiAgICAgICAgICAgICdyaWdodC10b3AnLFxuICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgIF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRMaW5lU3R5bGVzID0gKCkgPT4gWydzb2xpZCcsICdkYXNoZWQnLCAnZG90dGVkJywgJ2RvdWJsZScsICdub25lJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRCbGVuZE1vZGVzID0gKCkgPT5cbiAgICAgICAgW1xuICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAnbXVsdGlwbHknLFxuICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAnb3ZlcmxheScsXG4gICAgICAgICAgICAnZGFya2VuJyxcbiAgICAgICAgICAgICdsaWdodGVuJyxcbiAgICAgICAgICAgICdjb2xvci1kb2RnZScsXG4gICAgICAgICAgICAnY29sb3ItYnVybicsXG4gICAgICAgICAgICAnaGFyZC1saWdodCcsXG4gICAgICAgICAgICAnc29mdC1saWdodCcsXG4gICAgICAgICAgICAnZGlmZmVyZW5jZScsXG4gICAgICAgICAgICAnZXhjbHVzaW9uJyxcbiAgICAgICAgICAgICdodWUnLFxuICAgICAgICAgICAgJ3NhdHVyYXRpb24nLFxuICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICdsdW1pbm9zaXR5JyxcbiAgICAgICAgXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEFsaWduID0gKCkgPT5cbiAgICAgICAgWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2JldHdlZW4nLCAnYXJvdW5kJywgJ2V2ZW5seScsICdzdHJldGNoJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRaZXJvQW5kRW1wdHkgPSAoKSA9PiBbJycsICcwJywgaXNBcmJpdHJhcnlWYWx1ZV0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRCcmVha3MgPSAoKSA9PlxuICAgICAgICBbJ2F1dG8nLCAnYXZvaWQnLCAnYWxsJywgJ2F2b2lkLXBhZ2UnLCAncGFnZScsICdsZWZ0JywgJ3JpZ2h0JywgJ2NvbHVtbiddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5ID0gKCkgPT4gW2lzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FjaGVTaXplOiA1MDAsXG4gICAgICAgIHNlcGFyYXRvcjogJzonLFxuICAgICAgICB0aGVtZToge1xuICAgICAgICAgICAgY29sb3JzOiBbaXNBbnldLFxuICAgICAgICAgICAgc3BhY2luZzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICAgICAgICBibHVyOiBbJ25vbmUnLCAnJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgICAgICAgIGJyaWdodG5lc3M6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IFtjb2xvcnNdLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBbJ25vbmUnLCAnJywgJ2Z1bGwnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgICAgICAgYm9yZGVyU3BhY2luZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGJvcmRlcldpZHRoOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGNvbnRyYXN0OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGdyYXlzY2FsZTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBodWVSb3RhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgaW52ZXJ0OiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIGdhcDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTdG9wczogW2NvbG9yc10sXG4gICAgICAgICAgICBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uczogW2lzUGVyY2VudCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgICAgICAgaW5zZXQ6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgbWFyZ2luOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIG9wYWNpdHk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgcGFkZGluZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNhdHVyYXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNjYWxlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNlcGlhOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIHNrZXc6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc3BhY2U6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzR3JvdXBzOiB7XG4gICAgICAgICAgICAvLyBMYXlvdXRcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXNwZWN0IFJhdGlvXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXNwZWN0LXJhdGlvXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFzcGVjdDogW3sgYXNwZWN0OiBbJ2F1dG8nLCAnc3F1YXJlJywgJ3ZpZGVvJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRhaW5lclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRhaW5lclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250YWluZXI6IFsnY29udGFpbmVyJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbHVtbnM6IFt7IGNvbHVtbnM6IFtpc1RzaGlydFNpemVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBBZnRlclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWFmdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1hZnRlcic6IFt7ICdicmVhay1hZnRlcic6IGdldEJyZWFrcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBCZWZvcmVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1iZWZvcmVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWJlZm9yZSc6IFt7ICdicmVhay1iZWZvcmUnOiBnZXRCcmVha3MoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgSW5zaWRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstaW5zaWRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1pbnNpZGUnOiBbeyAnYnJlYWstaW5zaWRlJzogWydhdXRvJywgJ2F2b2lkJywgJ2F2b2lkLXBhZ2UnLCAnYXZvaWQtY29sdW1uJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBEZWNvcmF0aW9uIEJyZWFrXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LWRlY29yYXRpb24tYnJlYWtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JveC1kZWNvcmF0aW9uJzogW3sgJ2JveC1kZWNvcmF0aW9uJzogWydzbGljZScsICdjbG9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2l6aW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNpemluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBib3g6IFt7IGJveDogWydib3JkZXInLCAnY29udGVudCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXNwbGF5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGlzcGxheVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkaXNwbGF5OiBbXG4gICAgICAgICAgICAgICAgJ2Jsb2NrJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lJyxcbiAgICAgICAgICAgICAgICAnZmxleCcsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1mbGV4JyxcbiAgICAgICAgICAgICAgICAndGFibGUnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtdGFibGUnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jYXB0aW9uJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY2VsbCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNvbHVtbicsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNvbHVtbi1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWZvb3Rlci1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWhlYWRlci1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLXJvdy1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLXJvdycsXG4gICAgICAgICAgICAgICAgJ2Zsb3ctcm9vdCcsXG4gICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtZ3JpZCcsXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnRzJyxcbiAgICAgICAgICAgICAgICAnbGlzdC1pdGVtJyxcbiAgICAgICAgICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsb2F0c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Zsb2F0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZsb2F0OiBbeyBmbG9hdDogWydyaWdodCcsICdsZWZ0JywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENsZWFyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2xlYXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2xlYXI6IFt7IGNsZWFyOiBbJ2xlZnQnLCAncmlnaHQnLCAnYm90aCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJc29sYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pc29sYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaXNvbGF0aW9uOiBbJ2lzb2xhdGUnLCAnaXNvbGF0aW9uLWF1dG8nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT2JqZWN0IEZpdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1maXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ29iamVjdC1maXQnOiBbeyBvYmplY3Q6IFsnY29udGFpbicsICdjb3ZlcicsICdmaWxsJywgJ25vbmUnLCAnc2NhbGUtZG93biddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPYmplY3QgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ29iamVjdC1wb3NpdGlvbic6IFt7IG9iamVjdDogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvdmVyZmxvdzogW3sgb3ZlcmZsb3c6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93IFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcmZsb3cteCc6IFt7ICdvdmVyZmxvdy14JzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3cgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyZmxvdy15JzogW3sgJ292ZXJmbG93LXknOiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvdmVyc2Nyb2xsOiBbeyBvdmVyc2Nyb2xsOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJzY3JvbGwteCc6IFt7ICdvdmVyc2Nyb2xsLXgnOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJzY3JvbGwteSc6IFt7ICdvdmVyc2Nyb2xsLXknOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcG9zaXRpb246IFsnc3RhdGljJywgJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3JlbGF0aXZlJywgJ3N0aWNreSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3AgLyBSaWdodCAvIEJvdHRvbSAvIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5zZXQ6IFt7IGluc2V0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaWdodCAvIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2luc2V0LXgnOiBbeyAnaW5zZXQteCc6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcCAvIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaW5zZXQteSc6IFt7ICdpbnNldC15JzogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3RhcnQ6IFt7IHN0YXJ0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZW5kOiBbeyBlbmQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0b3A6IFt7IHRvcDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmlnaHQ6IFt7IHJpZ2h0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYm90dG9tOiBbeyBib3R0b206IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGVmdDogW3sgbGVmdDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmlzaWJpbGl0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Zpc2liaWxpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogWyd2aXNpYmxlJywgJ2ludmlzaWJsZScsICdjb2xsYXBzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBaLUluZGV4XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvei1pbmRleFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB6OiBbeyB6OiBbJ2F1dG8nLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gRmxleGJveCBhbmQgR3JpZFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IEJhc2lzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1iYXNpc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBiYXNpczogW3sgYmFzaXM6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IERpcmVjdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZGlyZWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmbGV4LWRpcmVjdGlvbic6IFt7IGZsZXg6IFsncm93JywgJ3Jvdy1yZXZlcnNlJywgJ2NvbCcsICdjb2wtcmV2ZXJzZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IFdyYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXdyYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZsZXgtd3JhcCc6IFt7IGZsZXg6IFsnd3JhcCcsICd3cmFwLXJldmVyc2UnLCAnbm93cmFwJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZsZXg6IFt7IGZsZXg6IFsnMScsICdhdXRvJywgJ2luaXRpYWwnLCAnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IEdyb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWdyb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ3JvdzogW3sgZ3JvdzogZ2V0WmVyb0FuZEVtcHR5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggU2hyaW5rXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1zaHJpbmtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hyaW5rOiBbeyBzaHJpbms6IGdldFplcm9BbmRFbXB0eSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPcmRlclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29yZGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9yZGVyOiBbeyBvcmRlcjogWydmaXJzdCcsICdsYXN0JywgJ25vbmUnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFRlbXBsYXRlIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLWNvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtY29scyc6IFt7ICdncmlkLWNvbHMnOiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBTdGFydCAvIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtc3RhcnQtZW5kJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29sOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNwYW46IFsnZnVsbCcsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1zdGFydCc6IFt7ICdjb2wtc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLWVuZCc6IFt7ICdjb2wtZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBUZW1wbGF0ZSBSb3dzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1yb3dzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLXJvd3MnOiBbeyAnZ3JpZC1yb3dzJzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgU3RhcnQgLyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LXN0YXJ0LWVuZCc6IFtcbiAgICAgICAgICAgICAgICB7IHJvdzogWydhdXRvJywgeyBzcGFuOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9LCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LXN0YXJ0JzogW3sgJ3Jvdy1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctZW5kJzogW3sgJ3Jvdy1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gRmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1mbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLWZsb3cnOiBbeyAnZ3JpZC1mbG93JzogWydyb3cnLCAnY29sJywgJ2RlbnNlJywgJ3Jvdy1kZW5zZScsICdjb2wtZGVuc2UnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYXV0by1jb2xzJzogW3sgJ2F1dG8tY29scyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBSb3dzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLXJvd3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2F1dG8tcm93cyc6IFt7ICdhdXRvLXJvd3MnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ2FwOiBbeyBnYXA6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXAgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ2FwLXgnOiBbeyAnZ2FwLXgnOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dhcC15JzogW3sgJ2dhcC15JzogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogW3sganVzdGlmeTogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktaXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktaXRlbXMnOiBbeyAnanVzdGlmeS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1zZWxmJzogW3sgJ2p1c3RpZnktc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLWNvbnRlbnQnOiBbeyBjb250ZW50OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCksICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1pdGVtcyc6IFt7IGl0ZW1zOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24tc2VsZic6IFt7IHNlbGY6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLWNvbnRlbnQnOiBbeyAncGxhY2UtY29udGVudCc6IFsuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2UtaXRlbXMnOiBbeyAncGxhY2UtaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Utc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Utc2VsZic6IFt7ICdwbGFjZS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLy8gU3BhY2luZ1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwOiBbeyBwOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHg6IFt7IHB4OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHk6IFt7IHB5OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBzOiBbeyBwczogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGU6IFt7IHBlOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwdDogW3sgcHQ6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHI6IFt7IHByOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwYjogW3sgcGI6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwbDogW3sgcGw6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG06IFt7IG06IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBteDogW3sgbXg6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBteTogW3sgbXk6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXM6IFt7IG1zOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtZTogW3sgbWU6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG10OiBbeyBtdDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtcjogW3sgbXI6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1iOiBbeyBtYjogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1sOiBbeyBtbDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS14JzogW3sgJ3NwYWNlLXgnOiBbc3BhY2VdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFggUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS14LXJldmVyc2UnOiBbJ3NwYWNlLXgtcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteSc6IFt7ICdzcGFjZS15JzogW3NwYWNlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBZIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteS1yZXZlcnNlJzogWydzcGFjZS15LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8vIFNpemluZ1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2x2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZHZ3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaW4tV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4td2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21pbi13JzogW3sgJ21pbi13JzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXgtV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21heC13JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ21heC13JzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZnVsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncHJvc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzY3JlZW46IFtpc1RzaGlydFNpemVdIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RzaGlydFNpemUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2hlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2x2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZHZoJyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWluLUhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21pbi1oJzogW1xuICAgICAgICAgICAgICAgIHsgJ21pbi1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXgtSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWF4LWgnOiBbXG4gICAgICAgICAgICAgICAgeyAnbWF4LWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNpemU6IFt7IHNpemU6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCddIH1dLFxuICAgICAgICAgICAgLy8gVHlwb2dyYXBoeVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFt7IHRleHQ6IFsnYmFzZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFNtb290aGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc21vb3RoaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXNtb290aGluZyc6IFsnYW50aWFsaWFzZWQnLCAnc3VicGl4ZWwtYW50aWFsaWFzZWQnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnOiBbJ2l0YWxpYycsICdub3QtaXRhbGljJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgV2VpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC13ZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtd2VpZ2h0JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhbGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2VtaWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxhY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgRmFtaWx5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1mYW1pbHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtZmFtaWx5JzogW3sgZm9udDogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLW5vcm1hbCc6IFsnbm9ybWFsLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLW9yZGluYWwnOiBbJ29yZGluYWwnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnc2xhc2hlZC16ZXJvJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2xpbmluZy1udW1zJywgJ29sZHN0eWxlLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLXNwYWNpbmcnOiBbJ3Byb3BvcnRpb25hbC1udW1zJywgJ3RhYnVsYXItbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2RpYWdvbmFsLWZyYWN0aW9ucycsICdzdGFja2VkLWZyYWN0b25zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExldHRlciBTcGFjaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGV0dGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhY2tpbmc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNraW5nOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGVzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaW5lIENsYW1wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1jbGFtcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGluZS1jbGFtcCc6IFt7ICdsaW5lLWNsYW1wJzogWydub25lJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5TnVtYmVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGluZSBIZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZWFkaW5nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZWFkaW5nOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NudWcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmVsYXhlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbG9vc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIEltYWdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1pbWFnZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1pbWFnZSc6IFt7ICdsaXN0LWltYWdlJzogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgVHlwZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1zdHlsZS10eXBlJzogW3sgbGlzdDogWydub25lJywgJ2Rpc2MnLCAnZGVjaW1hbCcsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1zdHlsZS1wb3NpdGlvbic6IFt7IGxpc3Q6IFsnaW5zaWRlJywgJ291dHNpZGUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2Vob2xkZXIgQ29sb3JcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItY29sb3InOiBbeyBwbGFjZWhvbGRlcjogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlaG9sZGVyIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW3sgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgQWxpZ25tZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1hbGlnbm1lbnQnOiBbeyB0ZXh0OiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0JywgJ2p1c3RpZnknLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWNvbG9yJzogW3sgdGV4dDogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1vcGFjaXR5JzogW3sgJ3RleHQtb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24nOiBbJ3VuZGVybGluZScsICdvdmVybGluZScsICdsaW5lLXRocm91Z2gnLCAnbm8tdW5kZXJsaW5lJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLXN0eWxlJzogW3sgZGVjb3JhdGlvbjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ3dhdnknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFRoaWNrbmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MnOiBbXG4gICAgICAgICAgICAgICAgeyBkZWNvcmF0aW9uOiBbJ2F1dG8nLCAnZnJvbS1mb250JywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBVbmRlcmxpbmUgT2Zmc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC11bmRlcmxpbmUtb2Zmc2V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd1bmRlcmxpbmUtb2Zmc2V0JzogW3sgJ3VuZGVybGluZS1vZmZzZXQnOiBbJ2F1dG8nLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJzogW3sgZGVjb3JhdGlvbjogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgVHJhbnNmb3JtXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC10cmFuc2Zvcm1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtdHJhbnNmb3JtJzogWyd1cHBlcmNhc2UnLCAnbG93ZXJjYXNlJywgJ2NhcGl0YWxpemUnLCAnbm9ybWFsLWNhc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBPdmVyZmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtb3ZlcmZsb3cnOiBbJ3RydW5jYXRlJywgJ3RleHQtZWxsaXBzaXMnLCAndGV4dC1jbGlwJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgV3JhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtd3JhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC13cmFwJzogW3sgdGV4dDogWyd3cmFwJywgJ25vd3JhcCcsICdiYWxhbmNlJywgJ3ByZXR0eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IEluZGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtaW5kZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGluZGVudDogW3sgaW5kZW50OiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWZXJ0aWNhbCBBbGlnbm1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92ZXJ0aWNhbC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndmVydGljYWwtYWxpZ24nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBhbGlnbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2VsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pZGRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXRvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1ib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1YicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3VwZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hpdGVzcGFjZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3doaXRlc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgd2hpdGVzcGFjZTogW1xuICAgICAgICAgICAgICAgIHsgd2hpdGVzcGFjZTogWydub3JtYWwnLCAnbm93cmFwJywgJ3ByZScsICdwcmUtbGluZScsICdwcmUtd3JhcCcsICdicmVhay1zcGFjZXMnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV29yZCBCcmVha1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dvcmQtYnJlYWtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnJlYWs6IFt7IGJyZWFrOiBbJ25vcm1hbCcsICd3b3JkcycsICdhbGwnLCAna2VlcCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIeXBoZW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHlwaGVuc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBoeXBoZW5zOiBbeyBoeXBoZW5zOiBbJ25vbmUnLCAnbWFudWFsJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udGVudDogW3sgY29udGVudDogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBCYWNrZ3JvdW5kc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEF0dGFjaG1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWF0dGFjaG1lbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWF0dGFjaG1lbnQnOiBbeyBiZzogWydmaXhlZCcsICdsb2NhbCcsICdzY3JvbGwnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBDbGlwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jbGlwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1jbGlwJzogW3sgJ2JnLWNsaXAnOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnLCAndGV4dCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLW9wYWNpdHknOiBbeyAnYmctb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBPcmlnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9yaWdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctb3JpZ2luJzogW3sgJ2JnLW9yaWdpbic6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctcG9zaXRpb24nOiBbeyBiZzogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVBvc2l0aW9uXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBSZXBlYXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXJlcGVhdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctcmVwZWF0JzogW3sgYmc6IFsnbm8tcmVwZWF0JywgeyByZXBlYXQ6IFsnJywgJ3gnLCAneScsICdyb3VuZCcsICdzcGFjZSddIH1dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXNpemUnOiBbeyBiZzogWydhdXRvJywgJ2NvdmVyJywgJ2NvbnRhaW4nLCBpc0FyYml0cmFyeVNpemVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEltYWdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1pbWFnZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctaW1hZ2UnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyAnZ3JhZGllbnQtdG8nOiBbJ3QnLCAndHInLCAncicsICdicicsICdiJywgJ2JsJywgJ2wnLCAndGwnXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWNvbG9yJzogW3sgYmc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LWZyb20tcG9zJzogW3sgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXZpYS1wb3MnOiBbeyB2aWE6IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXRvLXBvcyc6IFt7IHRvOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LWZyb20nOiBbeyBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXZpYSc6IFt7IHZpYTogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXRvJzogW3sgdG86IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLy8gQm9yZGVyc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByb3VuZGVkOiBbeyByb3VuZGVkOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtcyc6IFt7ICdyb3VuZGVkLXMnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWUnOiBbeyAncm91bmRlZC1lJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10JzogW3sgJ3JvdW5kZWQtdCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1yJzogW3sgJ3JvdW5kZWQtcic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYic6IFt7ICdyb3VuZGVkLWInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1sJzogW3sgJ3JvdW5kZWQtbCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zcyc6IFt7ICdyb3VuZGVkLXNzJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zZSc6IFt7ICdyb3VuZGVkLXNlJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZWUnOiBbeyAncm91bmRlZC1lZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZXMnOiBbeyAncm91bmRlZC1lcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10bCc6IFt7ICdyb3VuZGVkLXRsJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10cic6IFt7ICdyb3VuZGVkLXRyJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1icic6IFt7ICdyb3VuZGVkLWJyJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWJsJzogW3sgJ3JvdW5kZWQtYmwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdyc6IFt7IGJvcmRlcjogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXgnOiBbeyAnYm9yZGVyLXgnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcteSc6IFt7ICdib3JkZXIteSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctcyc6IFt7ICdib3JkZXItcyc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWUnOiBbeyAnYm9yZGVyLWUnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy10JzogW3sgJ2JvcmRlci10JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1yJzogW3sgJ2JvcmRlci1yJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctYic6IFt7ICdib3JkZXItYic6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1sJzogW3sgJ2JvcmRlci1sJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLW9wYWNpdHknOiBbeyAnYm9yZGVyLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXN0eWxlJzogW3sgYm9yZGVyOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnaGlkZGVuJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteCc6IFt7ICdkaXZpZGUteCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBYIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS14LXJldmVyc2UnOiBbJ2RpdmlkZS14LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS15JzogW3sgJ2RpdmlkZS15JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFkgUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXktcmV2ZXJzZSc6IFsnZGl2aWRlLXktcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtb3BhY2l0eSc6IFt7ICdkaXZpZGUtb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtc3R5bGUnOiBbeyBkaXZpZGU6IGdldExpbmVTdHlsZXMoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3InOiBbeyBib3JkZXI6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3IteCc6IFt7ICdib3JkZXIteCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3IteSc6IFt7ICdib3JkZXIteSc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci10JzogW3sgJ2JvcmRlci10JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3Itcic6IFt7ICdib3JkZXItcic6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1iJzogW3sgJ2JvcmRlci1iJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1sJzogW3sgJ2JvcmRlci1sJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtY29sb3InOiBbeyBkaXZpZGU6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLXN0eWxlJzogW3sgb3V0bGluZTogWycnLCAuLi5nZXRMaW5lU3R5bGVzKCldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIE9mZnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtb2Zmc2V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLW9mZnNldCc6IFt7ICdvdXRsaW5lLW9mZnNldCc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLXcnOiBbeyBvdXRsaW5lOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtY29sb3InOiBbeyBvdXRsaW5lOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctdyc6IFt7IHJpbmc6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIFdpZHRoIEluc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy13LWluc2V0JzogWydyaW5nLWluc2V0J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLWNvbG9yJzogW3sgcmluZzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vcGFjaXR5JzogW3sgJ3Jpbmctb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPZmZzZXQgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vZmZzZXQtdyc6IFt7ICdyaW5nLW9mZnNldCc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9mZnNldCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9mZnNldC1jb2xvcic6IFt7ICdyaW5nLW9mZnNldCc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLy8gRWZmZWN0c1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2hhZG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaGFkb3c6IFt7IHNoYWRvdzogWycnLCAnaW5uZXInLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlTaGFkb3ddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2hhZG93IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvdy1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2hhZG93LWNvbG9yJzogW3sgc2hhZG93OiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvcGFjaXR5OiBbeyBvcGFjaXR5OiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1peCBCbGVuZCBNb2RlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWl4LWJsZW5kLW1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21peC1ibGVuZCc6IFt7ICdtaXgtYmxlbmQnOiBbLi4uZ2V0QmxlbmRNb2RlcygpLCAncGx1cy1saWdodGVyJywgJ3BsdXMtZGFya2VyJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQmxlbmQgTW9kZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYmxlbmQtbW9kZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctYmxlbmQnOiBbeyAnYmctYmxlbmQnOiBnZXRCbGVuZE1vZGVzKCkgfV0sXG4gICAgICAgICAgICAvLyBGaWx0ZXJzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZpbHRlclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbHRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWx0ZXI6IFt7IGZpbHRlcjogWycnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCbHVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmx1clxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBibHVyOiBbeyBibHVyOiBbYmx1cl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyaWdodG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmlnaHRuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJyaWdodG5lc3M6IFt7IGJyaWdodG5lc3M6IFticmlnaHRuZXNzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udHJhc3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250cmFzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250cmFzdDogW3sgY29udHJhc3Q6IFtjb250cmFzdF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERyb3AgU2hhZG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZHJvcC1zaGFkb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Ryb3Atc2hhZG93JzogW3sgJ2Ryb3Atc2hhZG93JzogWycnLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYXlzY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYXlzY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBncmF5c2NhbGU6IFt7IGdyYXlzY2FsZTogW2dyYXlzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEh1ZSBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9odWUtcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdodWUtcm90YXRlJzogW3sgJ2h1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSW52ZXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaW52ZXJ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGludmVydDogW3sgaW52ZXJ0OiBbaW52ZXJ0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2F0dXJhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zYXR1cmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzYXR1cmF0ZTogW3sgc2F0dXJhdGU6IFtzYXR1cmF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNlcGlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2VwaWFcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2VwaWE6IFt7IHNlcGlhOiBbc2VwaWFdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBGaWx0ZXJcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1maWx0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWZpbHRlcic6IFt7ICdiYWNrZHJvcC1maWx0ZXInOiBbJycsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEJsdXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ibHVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1ibHVyJzogW3sgJ2JhY2tkcm9wLWJsdXInOiBbYmx1cl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEJyaWdodG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1icmlnaHRuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW3sgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbYnJpZ2h0bmVzc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIENvbnRyYXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtY29udHJhc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW3sgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW2NvbnRyYXN0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgR3JheXNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZ3JheXNjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbeyAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW2dyYXlzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEh1ZSBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1odWUtcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1odWUtcm90YXRlJzogW3sgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgSW52ZXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaW52ZXJ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1pbnZlcnQnOiBbeyAnYmFja2Ryb3AtaW52ZXJ0JzogW2ludmVydF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1vcGFjaXR5JzogW3sgJ2JhY2tkcm9wLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIFNhdHVyYXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2F0dXJhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3sgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3NhdHVyYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgU2VwaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zZXBpYVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atc2VwaWEnOiBbeyAnYmFja2Ryb3Atc2VwaWEnOiBbc2VwaWFdIH1dLFxuICAgICAgICAgICAgLy8gVGFibGVzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xsYXBzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xsYXBzZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbGxhcHNlJzogW3sgYm9yZGVyOiBbJ2NvbGxhcHNlJywgJ3NlcGFyYXRlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW3sgJ2JvcmRlci1zcGFjaW5nJzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXgnOiBbeyAnYm9yZGVyLXNwYWNpbmcteCc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZy15JzogW3sgJ2JvcmRlci1zcGFjaW5nLXknOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRhYmxlIExheW91dFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RhYmxlLWxheW91dFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGFibGUtbGF5b3V0JzogW3sgdGFibGU6IFsnYXV0bycsICdmaXhlZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDYXB0aW9uIFNpZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jYXB0aW9uLXNpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2FwdGlvbjogW3sgY2FwdGlvbjogWyd0b3AnLCAnYm90dG9tJ10gfV0sXG4gICAgICAgICAgICAvLyBUcmFuc2l0aW9ucyBhbmQgQW5pbWF0aW9uXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5pc2l0aW9uIFByb3BlcnR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1wcm9wZXJ0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9ycycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hhZG93JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBEdXJhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZHVyYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZHVyYXRpb246IFt7IGR1cmF0aW9uOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBUaW1pbmcgRnVuY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlYXNlOiBbeyBlYXNlOiBbJ2xpbmVhcicsICdpbicsICdvdXQnLCAnaW4tb3V0JywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gRGVsYXlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWRlbGF5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGRlbGF5OiBbeyBkZWxheTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFuaW1hdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FuaW1hdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhbmltYXRlOiBbeyBhbmltYXRlOiBbJ25vbmUnLCAnc3BpbicsICdwaW5nJywgJ3B1bHNlJywgJ2JvdW5jZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gVHJhbnNmb3Jtc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2Zvcm1cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBbeyB0cmFuc2Zvcm06IFsnJywgJ2dwdScsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2NhbGU6IFt7IHNjYWxlOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZSBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NjYWxlLXgnOiBbeyAnc2NhbGUteCc6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2NhbGUteSc6IFt7ICdzY2FsZS15JzogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJvdGF0ZTogW3sgcm90YXRlOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNsYXRlIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zbGF0ZS14JzogW3sgJ3RyYW5zbGF0ZS14JzogW3RyYW5zbGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zbGF0ZSBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2xhdGUteSc6IFt7ICd0cmFuc2xhdGUteSc6IFt0cmFuc2xhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTa2V3IFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdza2V3LXgnOiBbeyAnc2tldy14JzogW3NrZXddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTa2V3IFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdza2V3LXknOiBbeyAnc2tldy15JzogW3NrZXddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2Zvcm0gT3JpZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtLW9yaWdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNmb3JtLW9yaWdpbic6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtcmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tcmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBJbnRlcmFjdGl2aXR5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFjY2VudCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FjY2VudC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhY2NlbnQ6IFt7IGFjY2VudDogWydhdXRvJywgY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXBwZWFyYW5jZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FwcGVhcmFuY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXBwZWFyYW5jZTogW3sgYXBwZWFyYW5jZTogWydub25lJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ3Vyc29yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY3Vyc29yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGN1cnNvcjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2FpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbW92ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnaGVscCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm90LWFsbG93ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQtbWVudScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncHJvZ3Jlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NlbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Nyb3NzaGFpcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndmVydGljYWwtdGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxpYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vLWRyb3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dyYWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dyYWJiaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGwtc2Nyb2xsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2wtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyb3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3MtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmUtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdudy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdldy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25zLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmVzdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ253c2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd6b29tLWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd6b29tLW91dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDYXJldCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3QtaW4tdGltZS1tb2RlI2NhcmV0LWNvbG9yLXV0aWxpdGllc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY2FyZXQtY29sb3InOiBbeyBjYXJldDogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBvaW50ZXIgRXZlbnRzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9pbnRlci1ldmVudHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BvaW50ZXItZXZlbnRzJzogW3sgJ3BvaW50ZXItZXZlbnRzJzogWydub25lJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmVzaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmVzaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJlc2l6ZTogW3sgcmVzaXplOiBbJ25vbmUnLCAneScsICd4JywgJyddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgQmVoYXZpb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1iZWhhdmlvcic6IFt7IHNjcm9sbDogWydhdXRvJywgJ3Ntb290aCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW0nOiBbeyAnc2Nyb2xsLW0nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXgnOiBbeyAnc2Nyb2xsLW14JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW15JzogW3sgJ3Njcm9sbC1teSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXMnOiBbeyAnc2Nyb2xsLW1zJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWUnOiBbeyAnc2Nyb2xsLW1lJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXQnOiBbeyAnc2Nyb2xsLW10JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tcic6IFt7ICdzY3JvbGwtbXInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tYic6IFt7ICdzY3JvbGwtbWInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWwnOiBbeyAnc2Nyb2xsLW1sJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXAnOiBbeyAnc2Nyb2xsLXAnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1weCc6IFt7ICdzY3JvbGwtcHgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1weSc6IFt7ICdzY3JvbGwtcHknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHMnOiBbeyAnc2Nyb2xsLXBzJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wZSc6IFt7ICdzY3JvbGwtcGUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB0JzogW3sgJ3Njcm9sbC1wdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wcic6IFt7ICdzY3JvbGwtcHInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBiJzogW3sgJ3Njcm9sbC1wYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBsJzogW3sgJ3Njcm9sbC1wbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIEFsaWduXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtYWxpZ24nOiBbeyBzbmFwOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYWxpZ24tbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBTdG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtc3RvcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1zdG9wJzogW3sgc25hcDogWydub3JtYWwnLCAnYWx3YXlzJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXR5cGUnOiBbeyBzbmFwOiBbJ25vbmUnLCAneCcsICd5JywgJ2JvdGgnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZSBTdHJpY3RuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1zdHJpY3RuZXNzJzogW3sgc25hcDogWydtYW5kYXRvcnknLCAncHJveGltaXR5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0b3VjaDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdG91Y2g6IFsnYXV0bycsICdub25lJywgJ21hbmlwdWxhdGlvbiddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gteCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICd0b3VjaC1wYW4nOiBbJ3gnLCAnbGVmdCcsICdyaWdodCddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gteSc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICd0b3VjaC1wYW4nOiBbJ3knLCAndXAnLCAnZG93biddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gUGluY2ggWm9vbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gtcHonOiBbJ3RvdWNoLXBpbmNoLXpvb20nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVXNlciBTZWxlY3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy91c2VyLXNlbGVjdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzZWxlY3Q6IFt7IHNlbGVjdDogWydub25lJywgJ3RleHQnLCAnYWxsJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2lsbCBDaGFuZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWxsLWNoYW5nZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnd2lsbC1jaGFuZ2UnOiBbXG4gICAgICAgICAgICAgICAgeyAnd2lsbC1jaGFuZ2UnOiBbJ2F1dG8nLCAnc2Nyb2xsJywgJ2NvbnRlbnRzJywgJ3RyYW5zZm9ybScsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gU1ZHXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZpbGxcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWxsXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZpbGw6IFt7IGZpbGw6IFtjb2xvcnMsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0cm9rZSBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3Ryb2tlLXcnOiBbeyBzdHJva2U6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGgsIGlzQXJiaXRyYXJ5TnVtYmVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3Ryb2tlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0cm9rZTogW3sgc3Ryb2tlOiBbY29sb3JzLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLy8gQWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JlZW4gUmVhZGVyc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjcmVlbi1yZWFkZXJzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNyOiBbJ3NyLW9ubHknLCAnbm90LXNyLW9ubHknXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9yY2VkIENvbG9yIEFkanVzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvcmNlZC1jb2xvci1hZGp1c3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbeyAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFsnYXV0bycsICdub25lJ10gfV0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6IHtcbiAgICAgICAgICAgIG92ZXJmbG93OiBbJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAgICAgICAgICAgb3ZlcnNjcm9sbDogWydvdmVyc2Nyb2xsLXgnLCAnb3ZlcnNjcm9sbC15J10sXG4gICAgICAgICAgICBpbnNldDogWydpbnNldC14JywgJ2luc2V0LXknLCAnc3RhcnQnLCAnZW5kJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICAgICAgICAgICAgJ2luc2V0LXgnOiBbJ3JpZ2h0JywgJ2xlZnQnXSxcbiAgICAgICAgICAgICdpbnNldC15JzogWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICAgICAgICBmbGV4OiBbJ2Jhc2lzJywgJ2dyb3cnLCAnc2hyaW5rJ10sXG4gICAgICAgICAgICBnYXA6IFsnZ2FwLXgnLCAnZ2FwLXknXSxcbiAgICAgICAgICAgIHA6IFsncHgnLCAncHknLCAncHMnLCAncGUnLCAncHQnLCAncHInLCAncGInLCAncGwnXSxcbiAgICAgICAgICAgIHB4OiBbJ3ByJywgJ3BsJ10sXG4gICAgICAgICAgICBweTogWydwdCcsICdwYiddLFxuICAgICAgICAgICAgbTogWydteCcsICdteScsICdtcycsICdtZScsICdtdCcsICdtcicsICdtYicsICdtbCddLFxuICAgICAgICAgICAgbXg6IFsnbXInLCAnbWwnXSxcbiAgICAgICAgICAgIG15OiBbJ210JywgJ21iJ10sXG4gICAgICAgICAgICBzaXplOiBbJ3cnLCAnaCddLFxuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgICAgICAgJ2Z2bi1ub3JtYWwnOiBbXG4gICAgICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJyxcbiAgICAgICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybycsXG4gICAgICAgICAgICAgICAgJ2Z2bi1maWd1cmUnLFxuICAgICAgICAgICAgICAgICdmdm4tc3BhY2luZycsXG4gICAgICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tc3BhY2luZyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2xpbmUtY2xhbXAnOiBbJ2Rpc3BsYXknLCAnb3ZlcmZsb3cnXSxcbiAgICAgICAgICAgIHJvdW5kZWQ6IFtcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10JyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1yJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1iJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1sJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtc2UnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWVlJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdGwnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXRyJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1icicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYmwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXMnOiBbJ3JvdW5kZWQtc3MnLCAncm91bmRlZC1lcyddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtZSc6IFsncm91bmRlZC1zZScsICdyb3VuZGVkLWVlJ10sXG4gICAgICAgICAgICAncm91bmRlZC10JzogWydyb3VuZGVkLXRsJywgJ3JvdW5kZWQtdHInXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXInOiBbJ3JvdW5kZWQtdHInLCAncm91bmRlZC1iciddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtYic6IFsncm91bmRlZC1icicsICdyb3VuZGVkLWJsJ10sXG4gICAgICAgICAgICAncm91bmRlZC1sJzogWydyb3VuZGVkLXRsJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZyc6IFsnYm9yZGVyLXNwYWNpbmcteCcsICdib3JkZXItc3BhY2luZy15J10sXG4gICAgICAgICAgICAnYm9yZGVyLXcnOiBbXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXMnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1lJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctdCcsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXInLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1iJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2JvcmRlci13LXgnOiBbJ2JvcmRlci13LXInLCAnYm9yZGVyLXctbCddLFxuICAgICAgICAgICAgJ2JvcmRlci13LXknOiBbJ2JvcmRlci13LXQnLCAnYm9yZGVyLXctYiddLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvcic6IFtcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXQnLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItcicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1iJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3IteCc6IFsnYm9yZGVyLWNvbG9yLXInLCAnYm9yZGVyLWNvbG9yLWwnXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3IteSc6IFsnYm9yZGVyLWNvbG9yLXQnLCAnYm9yZGVyLWNvbG9yLWInXSxcbiAgICAgICAgICAgICdzY3JvbGwtbSc6IFtcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW14JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW15JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1zJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1lJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW10JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1yJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1iJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnc2Nyb2xsLW14JzogWydzY3JvbGwtbXInLCAnc2Nyb2xsLW1sJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLW15JzogWydzY3JvbGwtbXQnLCAnc2Nyb2xsLW1iJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLXAnOiBbXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1weCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1weScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wcycsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wZScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wdCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wcicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wYicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3Njcm9sbC1weCc6IFsnc2Nyb2xsLXByJywgJ3Njcm9sbC1wbCddLFxuICAgICAgICAgICAgJ3Njcm9sbC1weSc6IFsnc2Nyb2xsLXB0JywgJ3Njcm9sbC1wYiddLFxuICAgICAgICAgICAgdG91Y2g6IFsndG91Y2gteCcsICd0b3VjaC15JywgJ3RvdWNoLXB6J10sXG4gICAgICAgICAgICAndG91Y2gteCc6IFsndG91Y2gnXSxcbiAgICAgICAgICAgICd0b3VjaC15JzogWyd0b3VjaCddLFxuICAgICAgICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaCddLFxuICAgICAgICB9LFxuICAgICAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6IHtcbiAgICAgICAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICAgfSxcbiAgICB9IGFzIGNvbnN0IHNhdGlzZmllcyBDb25maWc8RGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzPlxufVxuIiwgImltcG9ydCB7IENvbmZpZ0V4dGVuc2lvbiwgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbi8qKlxuICogQHBhcmFtIGJhc2VDb25maWcgQ29uZmlnIHdoZXJlIG90aGVyIGNvbmZpZyB3aWxsIGJlIG1lcmdlZCBpbnRvLiBUaGlzIG9iamVjdCB3aWxsIGJlIG11dGF0ZWQuXG4gKiBAcGFyYW0gY29uZmlnRXh0ZW5zaW9uIFBhcnRpYWwgY29uZmlnIHRvIG1lcmdlIGludG8gdGhlIGBiYXNlQ29uZmlnYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlQ29uZmlncyA9IDxDbGFzc0dyb3VwSWRzIGV4dGVuZHMgc3RyaW5nLCBUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXI+KFxuICAgIGJhc2VDb25maWc6IEdlbmVyaWNDb25maWcsXG4gICAge1xuICAgICAgICBjYWNoZVNpemUsXG4gICAgICAgIHByZWZpeCxcbiAgICAgICAgc2VwYXJhdG9yLFxuICAgICAgICBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSxcbiAgICAgICAgZXh0ZW5kID0ge30sXG4gICAgICAgIG92ZXJyaWRlID0ge30sXG4gICAgfTogQ29uZmlnRXh0ZW5zaW9uPENsYXNzR3JvdXBJZHMsIFRoZW1lR3JvdXBJZHM+LFxuKSA9PiB7XG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnY2FjaGVTaXplJywgY2FjaGVTaXplKVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3ByZWZpeCcsIHByZWZpeClcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdzZXBhcmF0b3InLCBzZXBhcmF0b3IpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUnLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSlcblxuICAgIGZvciAoY29uc3QgY29uZmlnS2V5IGluIG92ZXJyaWRlKSB7XG4gICAgICAgIG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgIGJhc2VDb25maWdbY29uZmlnS2V5IGFzIGtleW9mIHR5cGVvZiBvdmVycmlkZV0sXG4gICAgICAgICAgICBvdmVycmlkZVtjb25maWdLZXkgYXMga2V5b2YgdHlwZW9mIG92ZXJyaWRlXSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIGV4dGVuZCkge1xuICAgICAgICBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBiYXNlQ29uZmlnW2tleSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5kXSxcbiAgICAgICAgICAgIGV4dGVuZFtrZXkgYXMga2V5b2YgdHlwZW9mIGV4dGVuZF0sXG4gICAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZUNvbmZpZ1xufVxuXG5jb25zdCBvdmVycmlkZVByb3BlcnR5ID0gPFQgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyBrZXlvZiBUPihcbiAgICBiYXNlT2JqZWN0OiBULFxuICAgIG92ZXJyaWRlS2V5OiBLLFxuICAgIG92ZXJyaWRlVmFsdWU6IFRbS10gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAob3ZlcnJpZGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJhc2VPYmplY3Rbb3ZlcnJpZGVLZXldID0gb3ZlcnJpZGVWYWx1ZVxuICAgIH1cbn1cblxuY29uc3Qgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzID0gKFxuICAgIGJhc2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4sXG4gICAgb3ZlcnJpZGVPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAob3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgICAgICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZU9iamVjdCwga2V5LCBvdmVycmlkZU9iamVjdFtrZXldKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5jb25zdCBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMgPSAoXG4gICAgYmFzZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PixcbiAgICBtZXJnZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PiB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChtZXJnZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXJnZU9iamVjdCkge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VWYWx1ZSA9IG1lcmdlT2JqZWN0W2tleV1cblxuICAgICAgICAgICAgaWYgKG1lcmdlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGJhc2VPYmplY3Rba2V5XSA9IChiYXNlT2JqZWN0W2tleV0gfHwgW10pLmNvbmNhdChtZXJnZVZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UgfSBmcm9tICcuL2NyZWF0ZS10YWlsd2luZC1tZXJnZSdcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJ1xuaW1wb3J0IHsgbWVyZ2VDb25maWdzIH0gZnJvbSAnLi9tZXJnZS1jb25maWdzJ1xuaW1wb3J0IHsgQ29uZmlnRXh0ZW5zaW9uLCBEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHMsIEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiBHZW5lcmljQ29uZmlnXG5cbmV4cG9ydCBjb25zdCBleHRlbmRUYWlsd2luZE1lcmdlID0gPFxuICAgIEFkZGl0aW9uYWxDbGFzc0dyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gICAgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbj4oXG4gICAgY29uZmlnRXh0ZW5zaW9uOlxuICAgICAgICB8IENvbmZpZ0V4dGVuc2lvbjxcbiAgICAgICAgICAgICAgRGVmYXVsdENsYXNzR3JvdXBJZHMgfCBBZGRpdGlvbmFsQ2xhc3NHcm91cElkcyxcbiAgICAgICAgICAgICAgRGVmYXVsdFRoZW1lR3JvdXBJZHMgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkc1xuICAgICAgICAgID5cbiAgICAgICAgfCBDcmVhdGVDb25maWdTdWJzZXF1ZW50LFxuICAgIC4uLmNyZWF0ZUNvbmZpZzogQ3JlYXRlQ29uZmlnU3Vic2VxdWVudFtdXG4pID0+XG4gICAgdHlwZW9mIGNvbmZpZ0V4dGVuc2lvbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZywgY29uZmlnRXh0ZW5zaW9uLCAuLi5jcmVhdGVDb25maWcpXG4gICAgICAgIDogY3JlYXRlVGFpbHdpbmRNZXJnZShcbiAgICAgICAgICAgICAgKCkgPT4gbWVyZ2VDb25maWdzKGdldERlZmF1bHRDb25maWcoKSwgY29uZmlnRXh0ZW5zaW9uKSxcbiAgICAgICAgICAgICAgLi4uY3JlYXRlQ29uZmlnLFxuICAgICAgICAgIClcbiIsICJpbXBvcnQgeyBjcmVhdGVUYWlsd2luZE1lcmdlIH0gZnJvbSAnLi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZydcblxuZXhwb3J0IGNvbnN0IHR3TWVyZ2UgPSBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcpXG4iLCAiaW1wb3J0IHsgdXNlSXNNdXRhdGluZyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCB7IHR5cGUgQ29sdW1uRGVmIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgRmlsdGVySWNvbiwgTWF4aW1pemUsIE1pbmltaXplLCBQYW5lbExlZnRDbG9zZSwgUGFuZWxMZWZ0T3BlbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVOdW1iZXIgfSBmcm9tIFwibW90aW9uLXBsdXMvcmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmlnSW50U3RyaW5nLCBOdW1lcmljU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2RhdGEvdHlwZS11dGlsc1wiO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlclRyaWdnZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9wb3BvdmVyXCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZUluc2VydCB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydFwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVRdWVyeSB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXF1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZVVwZGF0ZSB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXVwZGF0ZVwiO1xuaW1wb3J0IHsgZGVmYXVsdEVtcHR5RmlsdGVyLCB1c2VGaWx0ZXJpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWZpbHRlcmluZ1wiO1xuaW1wb3J0IHsgdXNlSXNJbnNlcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWlzLWluc2VydGluZ1wiO1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2UtcGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1zZWxlY3Rpb25cIjtcbmltcG9ydCB7IHVzZVNvcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNvcnRpbmdcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBnZXRDZWxsIH0gZnJvbSBcIi4vY2VsbC9nZXQtY2VsbFwiO1xuaW1wb3J0IHsgU2VsZWN0SGVhZGVyQ2VsbCwgU2VsZWN0SGVhZGVyQ2VsbFByb3BzIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RIZWFkZXJDZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RSb3dDZWxsLCBTZWxlY3RSb3dDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL1NlbGVjdFJvd0NlbGxcIjtcbmltcG9ydCB7IFdyaXRlYWJsZUNlbGwgfSBmcm9tIFwiLi9jZWxsL1dyaXRlYWJsZUNlbGxcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCB7IEZpbHRlclRyZWUgfSBmcm9tIFwiLi9GaWx0ZXJUcmVlXCI7XG5pbXBvcnQgeyBEYXRhR3JpZCB9IGZyb20gXCIuL2dyaWQvRGF0YUdyaWRcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyQ2VsbCB9IGZyb20gXCIuL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsXCI7XG5pbXBvcnQgeyBnZXRJbnB1dCB9IGZyb20gXCIuL2lucHV0L2dldC1pbnB1dFwiO1xuaW1wb3J0IHsgU3RhZ2VkUm93cyB9IGZyb20gXCIuL1N0YWdlZFJvd3NcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVUYWJsZVZpZXdQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gQWN0aXZlVGFibGVWaWV3KF9wcm9wczogQWN0aXZlVGFibGVWaWV3UHJvcHMpIHtcbiAgY29uc3QgaXNNdXRhdGluZyA9IEJvb2xlYW4odXNlSXNNdXRhdGluZygpKTtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgb25FcnJvciwgaXNGdWxsc2NyZWVuLCB0b2dnbGVGdWxsc2NyZWVuLCB0b2dnbGVOYXZpZ2F0aW9uLCBpc05hdmlnYXRpb25PcGVuIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBzb3J0aW5nU3RhdGUsIHNldFNvcnRpbmdTdGF0ZSB9ID0gdXNlU29ydGluZygpO1xuICBjb25zdCB7IHBhZ2luYXRpb25TdGF0ZSwgc2V0UGFnaW5hdGlvblN0YXRlIH0gPSB1c2VQYWdpbmF0aW9uKCk7XG4gIGNvbnN0IFtzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+KFtdKTtcbiAgY29uc3QgeyBhcHBsaWVkRmlsdGVyLCBzZXRBcHBsaWVkRmlsdGVyLCBlZGl0aW5nRmlsdGVyLCBzZXRFZGl0aW5nRmlsdGVyLCB0b3RhbEVkaXRpbmdGaWx0ZXJzIH0gPSB1c2VGaWx0ZXJpbmcoKTtcblxuICBjb25zdCB7IGRhdGEsIGlzRmV0Y2hpbmcgfSA9IHVzZUFjdGl2ZVRhYmxlUXVlcnkoe1xuICAgIC4uLnBhZ2luYXRpb25TdGF0ZSxcbiAgICBzb3J0T3JkZXI6IHNvcnRpbmdTdGF0ZSxcbiAgICBmaWx0ZXI6IGFwcGxpZWRGaWx0ZXIsXG4gIH0pO1xuICBjb25zdCB7IGRlbGV0ZVNlbGVjdGlvbiwgaXNTZWxlY3RpbmcsIHJvd1NlbGVjdGlvblN0YXRlLCBzZXRSb3dTZWxlY3Rpb25TdGF0ZSB9ID0gdXNlU2VsZWN0aW9uKGRhdGEpO1xuXG4gIGNvbnN0IHJlYWRvbmx5ID0gIU9iamVjdC52YWx1ZXMoYWN0aXZlVGFibGU/LmNvbHVtbnMgPz8ge30pLnNvbWUoKGNvbHVtbikgPT4gY29sdW1uLmlzSW5QcmltYXJ5S2V5KTtcbiAgY29uc3QgaXNJbnNlcnRpbmcgPSB1c2VJc0luc2VydGluZygpO1xuICBjb25zdCBpbnNlcnQgPSB1c2VBY3RpdmVUYWJsZUluc2VydCgpO1xuICBjb25zdCB1cGRhdGUgPSB1c2VBY3RpdmVUYWJsZVVwZGF0ZSgpO1xuXG4gIC8vIHJlc2V0IGluc2VydFJvd3Mgd2hlbiBhY3RpdmVUYWJsZSBjaGFuZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRTdGFnZWRSb3dzKFtdKSwgW2FjdGl2ZVRhYmxlXSk7XG5cbiAgaWYgKCFhY3RpdmVUYWJsZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZVN0YWdlZFJvd3MoKSB7XG4gICAgaW5zZXJ0Lm11dGF0ZShzdGFnZWRSb3dzLCB7XG4gICAgICBvbkVycm9yLFxuICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICB0b2FzdC5zdWNjZXNzKFwiUm93cyBpbnNlcnRlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgICAgIHNldFN0YWdlZFJvd3MoW10pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5ld1N0YWdlZFJvdygpIHtcbiAgICAvLyBUT0RPOiB0aGUgbmV3IG9iamVjdCBzaG91bGQgaGF2ZSBzb21lIHRoaW5ncyBzZXQgdG8gbnVsbCBpZiB0aGV5J3JlIG51bGxhYmxlIG9yIGhhdmUgYSBkZWZhdWx0IHZhbHVlP1xuICAgIHNldFN0YWdlZFJvd3MoKG9sZCkgPT4gWy4uLm9sZCwge31dKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRyb3BTdGFnZWRSb3dzKCkge1xuICAgIHNldFN0YWdlZFJvd3MoW10pO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlOiB1bmtub3duLCBjb2x1bW46IENvbHVtbiwgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIHVwZGF0ZS5tdXRhdGUoe1xuICAgICAgZGV0YWlsczogeyBjaGFuZ2VzOiB7IFtjb2x1bW4ubmFtZV06IHZhbHVlIH0sIHJvdywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LFxuICAgICAgb3B0aW9uczoge30sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkZpbHRlck9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbikge1xuICAgIGlmIChvcGVuID09PSB0cnVlKSB7XG4gICAgICBpZiAoYXBwbGllZEZpbHRlci5maWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBzZXRFZGl0aW5nRmlsdGVyKGRlZmF1bHRFbXB0eUZpbHRlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFZGl0aW5nRmlsdGVyKGFwcGxpZWRGaWx0ZXIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZWRpdGluZ0ZpbHRlciAhPT0gZGVmYXVsdEVtcHR5RmlsdGVyKSB7XG4gICAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZWRpdGluZ0ZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gcmVhbCBjb2x1bW4gZGVmaW5pdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGFiYXNlIGNvbHVtbnNcbiAgY29uc3QgY29uY3JldGVDb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkubWFwKChjb2x1bW4pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbHVtbi5uYW1lLFxuICAgICAgYWNjZXNzb3JLZXk6IGNvbHVtbi5uYW1lLFxuICAgICAgbWV0YTogY29sdW1uLFxuICAgICAgaGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH0pO1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW4sIHByb3BzIH0pfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlLCBjb2x1bW4sIGNlbGwucm93Lm9yaWdpbmFsKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIC8vIHRoZXNlIGFyZSBjb2x1bW5zIHRoYXQgZXhpc3QgdmlydHVhbGx5IGFuZCBhcmUgbm90IGRiIGNvbHVtbnNcbiAgY29uc3QgdmlydHVhbENvbHVtbkRlZnMgPSBbXG4gICAge1xuICAgICAgaWQ6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGFjY2Vzc29yS2V5OiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBlbmFibGVQaW5uaW5nOiB0cnVlLFxuICAgICAgZW5hYmxlUmVzaXppbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgICBkaXNhYmxlRHJhZ2dpbmc6IHRydWUsXG4gICAgICBzaXplOiA1MCxcbiAgICAgIG1pblNpemU6IDUwLFxuICAgICAgaGVhZGVyKHsgdGFibGUgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PFNlbGVjdEhlYWRlckNlbGxQcm9wcywgXCJ0YWJsZVwiIHwgXCJyZWFkb25seVwiPikgPT4gKFxuICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgY2VsbCh7IHJvdyB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8U2VsZWN0Um93Q2VsbFByb3BzLCBcInJvd1wiIHwgXCJyZWFkb25seVwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiA8U2VsZWN0Um93Q2VsbCByb3c9e3Jvd30gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+O1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdIHNhdGlzZmllcyAoQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiAmIHsgZGlzYWJsZURyYWdnaW5nPzogYm9vbGVhbiB9KVtdO1xuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBbLi4uY29uY3JldGVDb2x1bW5EZWZzLCAuLi52aXJ0dWFsQ29sdW1uRGVmc10uc29ydChkZWZhdWx0Q29sdW1uU29ydGluZyk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1iZy1zdHVkaW8taGVhZGVyLWJhY2tncm91bmQgcHMtZmxleCBwcy13LWZ1bGwgcHMtcC0yIHBzLXB5LTMgcHMtYm9yZGVyLWIgcHMtYmctY2FyZCBwcy1yb3VuZGVkLXQtbGdcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtZ3JvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXt0b2dnbGVOYXZpZ2F0aW9ufT5cbiAgICAgICAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiA/IDxQYW5lbExlZnRDbG9zZSAvPiA6IDxQYW5lbExlZnRPcGVuIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPFBvcG92ZXIgb25PcGVuQ2hhbmdlPXtvbkZpbHRlck9wZW5DaGFuZ2V9PlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT17Y24odG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgXCJwcy1ib3JkZXItcHJpbWFyeVwiKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZpbHRlckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0b3RhbEVkaXRpbmdGaWx0ZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlclRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJDb250ZW50IGFsaWduPVwic3RhcnRcIiBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwicHMtdy1taW4gcHMtbWF4LWgtWzUyMHB4XSBwcy1vdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIDxGaWx0ZXJUcmVlXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcj17ZWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyPXtzZXRFZGl0aW5nRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RWRpdGluZ0ZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGVkaXRpbmcgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7IC8vIFVwZGF0ZSB0aGUgYXBwbGllZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB0YWJsZT17YWN0aXZlVGFibGV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e25ld1N0YWdlZFJvd30gZGlzYWJsZWQ9e2lzSW5zZXJ0aW5nID4gMH0+XG4gICAgICAgICAgICAgICAgSW5zZXJ0IHJvd1xuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAge3N0YWdlZFJvd3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInNlY29uZGFyeVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3NhdmVTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICB7LyogTmVlZHMgc29tZSBpbXByb3ZlbWVudCAqL31cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZHJvcFN0YWdlZFJvd3N9PlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNTZWxlY3RpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtkZWxldGVTZWxlY3Rpb259PlxuICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9e3RvZ2dsZUZ1bGxzY3JlZW59PlxuICAgICAgICAgICAgICB7aXNGdWxsc2NyZWVuID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8RGF0YUdyaWRcbiAgICAgICAgY29sdW1uRGVmcz17Y29sdW1uRGVmc31cbiAgICAgICAgZ2V0QmVmb3JlUm93cz17KHRhYmxlKSA9PiA8U3RhZ2VkUm93cyB7Li4ueyB0YWJsZSwgc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93cyB9fSAvPn1cbiAgICAgICAgaXNMb2FkaW5nPXtpc0ZldGNoaW5nfVxuICAgICAgICBpc1Byb2Nlc3Npbmc9e2lzTXV0YXRpbmd9XG4gICAgICAgIG9uUGFnaW5hdGlvbkNoYW5nZT17c2V0UGFnaW5hdGlvblN0YXRlfVxuICAgICAgICBvblJvd1NlbGVjdGlvbkNoYW5nZT17c2V0Um93U2VsZWN0aW9uU3RhdGV9XG4gICAgICAgIG9uU29ydGluZ0NoYW5nZT17c2V0U29ydGluZ1N0YXRlfVxuICAgICAgICBwYWdlQ291bnQ9e2dldFBhZ2VDb3VudChkYXRhPy5maWx0ZXJlZFJvd0NvdW50ID8/IEluZmluaXR5LCBwYWdpbmF0aW9uU3RhdGUucGFnZVNpemUpfVxuICAgICAgICBwYWdpbmF0aW9uU3RhdGU9e3BhZ2luYXRpb25TdGF0ZX1cbiAgICAgICAgcm93cz17ZGF0YT8ucm93cyA/PyBbXX1cbiAgICAgICAgcm93U2VsZWN0aW9uU3RhdGU9e3Jvd1NlbGVjdGlvblN0YXRlfVxuICAgICAgICBzb3J0aW5nU3RhdGU9e3NvcnRpbmdTdGF0ZX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldFBhZ2VDb3VudChyb3dDb3VudDogbnVtYmVyIHwgYmlnaW50IHwgTnVtZXJpY1N0cmluZyB8IEJpZ0ludFN0cmluZywgcGFnZVNpemU6IG51bWJlcik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmIChyb3dDb3VudCA9PT0gSW5maW5pdHkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYWdlQ291bnQgPSBOdW1iZXIoKEJpZ0ludChyb3dDb3VudCkgKyBCaWdJbnQocGFnZVNpemUpIC0gQmlnSW50KDEpKSAvIEJpZ0ludChwYWdlU2l6ZSkpO1xuXG4gIHJldHVybiBOdW1iZXIuaXNTYWZlSW50ZWdlcihwYWdlQ291bnQpID8gcGFnZUNvdW50IDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRDb2x1bW5Tb3J0aW5nKGE6IENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sIGI6IENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pIHtcbiAgY29uc3QgYU1ldGEgPSBhLm1ldGEgYXMgQ29sdW1uIHwgdW5kZWZpbmVkO1xuICBjb25zdCBiTWV0YSA9IGIubWV0YSBhcyBDb2x1bW4gfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGEuaWQgPT09IFwiX19wc19zZWxlY3RcIiB8fCBiLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChhTWV0YSA9PT0gdW5kZWZpbmVkIHx8IGJNZXRhID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gMDsgLy8gY2FuJ3QgYmUgY29tcGFyZWQsIHNob3VsZG4ndCBoYXBwZW5cbiAgfVxuXG4gIGlmIChhTWV0YS5pc0luUHJpbWFyeUtleSAmJiAhYk1ldGEuaXNJblByaW1hcnlLZXkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKCFhTWV0YS5pc0luUHJpbWFyeUtleSAmJiBiTWV0YS5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIGFNZXRhLm5hbWUubG9jYWxlQ29tcGFyZShiTWV0YS5uYW1lKTtcbn1cbiIsICJpbXBvcnQgeyBDYW1lbFRvUGFzY2FsIH0gZnJvbSAnLi91dGlsaXR5LXR5cGVzJztcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8ga2ViYWIgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEga2ViYWJpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9LZWJhYkNhc2UgPSAoc3RyaW5nOiBzdHJpbmcpID0+XG4gIHN0cmluZy5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKS50b0xvd2VyQ2FzZSgpO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBjYW1lbCBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBjYW1lbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0NhbWVsQ2FzZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihzdHJpbmc6IFQpID0+XG4gIHN0cmluZy5yZXBsYWNlKC9eKFtBLVpdKXxbXFxzLV9dKyhcXHcpL2csIChtYXRjaCwgcDEsIHAyKSA9PlxuICAgIHAyID8gcDIudG9VcHBlckNhc2UoKSA6IHAxLnRvTG93ZXJDYXNlKCksXG4gICk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIHBhc2NhbCBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBwYXNjYWxpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9QYXNjYWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCk6IENhbWVsVG9QYXNjYWw8VD4gPT4ge1xuICBjb25zdCBjYW1lbENhc2UgPSB0b0NhbWVsQ2FzZShzdHJpbmcpO1xuXG4gIHJldHVybiAoY2FtZWxDYXNlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY2FtZWxDYXNlLnNsaWNlKDEpKSBhcyBDYW1lbFRvUGFzY2FsPFQ+O1xufTtcblxuLyoqXG4gKiBNZXJnZXMgY2xhc3NlcyBpbnRvIGEgc2luZ2xlIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7YXJyYXl9IGNsYXNzZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgc3RyaW5nIG9mIGNsYXNzZXNcbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlQ2xhc3NlcyA9IDxDbGFzc1R5cGUgPSBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPiguLi5jbGFzc2VzOiBDbGFzc1R5cGVbXSkgPT5cbiAgY2xhc3Nlc1xuICAgIC5maWx0ZXIoKGNsYXNzTmFtZSwgaW5kZXgsIGFycmF5KSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBCb29sZWFuKGNsYXNzTmFtZSkgJiZcbiAgICAgICAgKGNsYXNzTmFtZSBhcyBzdHJpbmcpLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgYXJyYXkuaW5kZXhPZihjbGFzc05hbWUpID09PSBpbmRleFxuICAgICAgKTtcbiAgICB9KVxuICAgIC5qb2luKCcgJylcbiAgICAudHJpbSgpO1xuIiwgImV4cG9ydCBkZWZhdWx0IHtcbiAgeG1sbnM6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gIHdpZHRoOiAyNCxcbiAgaGVpZ2h0OiAyNCxcbiAgdmlld0JveDogJzAgMCAyNCAyNCcsXG4gIGZpbGw6ICdub25lJyxcbiAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgc3Ryb2tlV2lkdGg6IDIsXG4gIHN0cm9rZUxpbmVjYXA6ICdyb3VuZCcsXG4gIHN0cm9rZUxpbmVqb2luOiAncm91bmQnLFxufTtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGRlZmF1bHRBdHRyaWJ1dGVzIGZyb20gJy4vZGVmYXVsdEF0dHJpYnV0ZXMnO1xuaW1wb3J0IHsgSWNvbk5vZGUsIEx1Y2lkZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBtZXJnZUNsYXNzZXMgfSBmcm9tICdAbHVjaWRlL3NoYXJlZCc7XG5cbmludGVyZmFjZSBJY29uQ29tcG9uZW50UHJvcHMgZXh0ZW5kcyBMdWNpZGVQcm9wcyB7XG4gIGljb25Ob2RlOiBJY29uTm9kZTtcbn1cblxuLyoqXG4gKiBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqXG4gKiBAY29tcG9uZW50IEljb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNvbG9yIC0gVGhlIGNvbG9yIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2l6ZSAtIFRoZSBzaXplIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc3Ryb2tlV2lkdGggLSBUaGUgc3Ryb2tlIHdpZHRoIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHByb3BzLmFic29sdXRlU3Ryb2tlV2lkdGggLSBXaGV0aGVyIHRvIHVzZSBhYnNvbHV0ZSBzdHJva2Ugd2lkdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5jbGFzc05hbWUgLSBUaGUgY2xhc3MgbmFtZSBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuY2hpbGRyZW4gLSBUaGUgY2hpbGRyZW4gb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7SWNvbk5vZGV9IHByb3BzLmljb25Ob2RlIC0gVGhlIGljb24gbm9kZSBvZiB0aGUgaWNvblxuICpcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IEljb24gPSBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Db21wb25lbnRQcm9wcz4oXG4gIChcbiAgICB7XG4gICAgICBjb2xvciA9ICdjdXJyZW50Q29sb3InLFxuICAgICAgc2l6ZSA9IDI0LFxuICAgICAgc3Ryb2tlV2lkdGggPSAyLFxuICAgICAgYWJzb2x1dGVTdHJva2VXaWR0aCxcbiAgICAgIGNsYXNzTmFtZSA9ICcnLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBpY29uTm9kZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9LFxuICAgIHJlZixcbiAgKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXG4gICAgICAnc3ZnJyxcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICAuLi5kZWZhdWx0QXR0cmlidXRlcyxcbiAgICAgICAgd2lkdGg6IHNpemUsXG4gICAgICAgIGhlaWdodDogc2l6ZSxcbiAgICAgICAgc3Ryb2tlOiBjb2xvcixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IGFic29sdXRlU3Ryb2tlV2lkdGggPyAoTnVtYmVyKHN0cm9rZVdpZHRoKSAqIDI0KSAvIE51bWJlcihzaXplKSA6IHN0cm9rZVdpZHRoLFxuICAgICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcygnbHVjaWRlJywgY2xhc3NOYW1lKSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgIH0sXG4gICAgICBbXG4gICAgICAgIC4uLmljb25Ob2RlLm1hcCgoW3RhZywgYXR0cnNdKSA9PiBjcmVhdGVFbGVtZW50KHRhZywgYXR0cnMpKSxcbiAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4gOiBbY2hpbGRyZW5dKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfSxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IEljb247XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcywgdG9LZWJhYkNhc2UgfSBmcm9tICdAbHVjaWRlL3NoYXJlZCc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBJY29uIGZyb20gJy4vSWNvbic7XG5cbi8qKlxuICogQ3JlYXRlIGEgTHVjaWRlIGljb24gY29tcG9uZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gaWNvbk5hbWVcbiAqIEBwYXJhbSB7YXJyYXl9IGljb25Ob2RlXG4gKiBAcmV0dXJucyB7Rm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudH0gTHVjaWRlSWNvblxuICovXG5jb25zdCBjcmVhdGVMdWNpZGVJY29uID0gKGljb25OYW1lOiBzdHJpbmcsIGljb25Ob2RlOiBJY29uTm9kZSkgPT4ge1xuICBjb25zdCBDb21wb25lbnQgPSBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEx1Y2lkZVByb3BzPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT5cbiAgICBjcmVhdGVFbGVtZW50KEljb24sIHtcbiAgICAgIHJlZixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgY2xhc3NOYW1lOiBtZXJnZUNsYXNzZXMoYGx1Y2lkZS0ke3RvS2ViYWJDYXNlKGljb25OYW1lKX1gLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSksXG4gICk7XG5cbiAgQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYCR7aWNvbk5hbWV9YDtcblxuICByZXR1cm4gQ29tcG9uZW50O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlTHVjaWRlSWNvbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEFycm93RG93bldpZGVOYXJyb3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE15QXhOaUEwSURRZ05DMDBJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDNJREl3VmpRaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElEUm9NVEFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURob055SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1URWdNVEpvTkNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd0Rvd25XaWRlTmFycm93ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dEb3duV2lkZU5hcnJvdycsIFtcbiAgWydwYXRoJywgeyBkOiAnbTMgMTYgNCA0IDQtNCcsIGtleTogJzFjbzZ3aicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ003IDIwVjQnLCBrZXk6ICcxeW94ZWMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgNGgxMCcsIGtleTogJzF3ODdnYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSA4aDcnLCBrZXk6ICdkanllMzQnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTJoNCcsIGtleTogJ3E4dGloNCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQXJyb3dEb3duV2lkZU5hcnJvdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEFycm93VXBXaWRlTmFycm93XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNeUE0SURRdE5DQTBJRFFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVGNnTkhZeE5pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1URWdNVEpvTVRBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElERTJhRGNpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURJd2FEUWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93VXBXaWRlTmFycm93ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dVcFdpZGVOYXJyb3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20zIDggNC00IDQgNCcsIGtleTogJzExd2w3dScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ003IDR2MTYnLCBrZXk6ICcxZ2xmY3gnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTJoMTAnLCBrZXk6ICcxNDM4amknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTZoNycsIGtleTogJ3Vvc2lzdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAyMGg0Jywga2V5OiAnMWtyYzMyJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd1VwV2lkZU5hcnJvdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZWNrXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NakFnTmlBNUlERTNiQzAxTFRVaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZWNrXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hlY2sgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGVjaycsIFtbJ3BhdGgnLCB7IGQ6ICdNMjAgNiA5IDE3bC01LTUnLCBrZXk6ICcxZ21mMmMnIH1dXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbkRvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQTVJRFlnTmlBMkxUWWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25Eb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtNiA5IDYgNiA2LTYnLCBrZXk6ICdxcnVuc2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25Eb3duO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbkxlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UVWdNVGd0TmkwMklEWXROaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkxlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uTGVmdCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTE1IDE4LTYtNiA2LTYnLCBrZXk6ICcxd25mZzMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvblJpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRPU0F4T0NBMkxUWXROaTAySWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25SaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25SaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTkgMTggNi02LTYtNicsIGtleTogJ210aGh3cScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvblJpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvblVwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRVdE5pMDJMVFlnTmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uVXAnLCBbWydwYXRoJywgeyBkOiAnbTE4IDE1LTYtNi02IDYnLCBrZXk6ICcxNTN1ZHonIH1dXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25VcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25zTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRFZ01UY3ROUzAxSURVdE5TSWdMejRLSUNBOGNHRjBhQ0JrUFNKdE1UZ2dNVGN0TlMwMUlEVXROU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbnMtbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25zTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25zTGVmdCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTExIDE3LTUtNSA1LTUnLCBrZXk6ICcxM3poYWYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTggMTctNS01IDUtNScsIGtleTogJ2g4YThldCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbnNMZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbnNSaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TmlBeE55QTFMVFV0TlMwMUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weE15QXhOeUExTFRVdE5TMDFJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9ucy1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25zUmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uc1JpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtNiAxNyA1LTUtNS01Jywga2V5OiAneG5qd3EnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTMgMTcgNS01LTUtNScsIGtleTogJzE3eG1tZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbnNSaWdodDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZScsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3B5XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRRaUlHaGxhV2RvZEQwaU1UUWlJSGc5SWpnaUlIazlJamdpSUhKNFBTSXlJaUJ5ZVQwaU1pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk5DQXhObU10TVM0eElEQXRNaTB1T1MweUxUSldOR013TFRFdU1TNDVMVElnTWkweWFERXdZekV1TVNBd0lESWdMamtnTWlBeUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NvcHlcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDb3B5ID0gY3JlYXRlTHVjaWRlSWNvbignQ29weScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE0JywgaGVpZ2h0OiAnMTQnLCB4OiAnOCcsIHk6ICc4Jywgcng6ICcyJywgcnk6ICcyJywga2V5OiAnMTdqeWVhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTQgMTZjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMicsIGtleTogJ3ppeDl1ZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENvcm5lckRvd25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVd4cGJtVWdjRzlwYm5SelBTSTVJREV3SURRZ01UVWdPU0F5TUNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05IWTNZVFFnTkNBd0lEQWdNUzAwSURSSU5DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3JuZXItZG93bi1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29ybmVyRG93bkxlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDb3JuZXJEb3duTGVmdCcsIFtcbiAgWydwb2x5bGluZScsIHsgcG9pbnRzOiAnOSAxMCA0IDE1IDkgMjAnLCBrZXk6ICdyM2pwcnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjAgNHY3YTQgNCAwIDAgMS00IDRINCcsIGtleTogJzZvNWI3bCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29ybmVyRG93bkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBGaWx0ZXJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHOXNlV2R2YmlCd2IybHVkSE05SWpJeUlETWdNaUF6SURFd0lERXlMalEySURFd0lERTVJREUwSURJeElERTBJREV5TGpRMklESXlJRE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvZmlsdGVyXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgRmlsdGVyID0gY3JlYXRlTHVjaWRlSWNvbignRmlsdGVyJywgW1xuICBbJ3BvbHlnb24nLCB7IHBvaW50czogJzIyIDMgMiAzIDEwIDEyLjQ2IDEwIDE5IDE0IDIxIDE0IDEyLjQ2IDIyIDMnLCBrZXk6ICcxeWc3N2YnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEdyaXBWZXJ0aWNhbFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJNUlpQmplVDBpTVRJaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJalVpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlPU0lnWTNrOUlqRTVJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU1UVWlJR041UFNJMUlpQnlQU0l4SWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpFMUlpQmplVDBpTVRraUlISTlJakVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvZ3JpcC12ZXJ0aWNhbFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEdyaXBWZXJ0aWNhbCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0dyaXBWZXJ0aWNhbCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnMTInLCByOiAnMScsIGtleTogJzF2Y3RnZicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzUnLCByOiAnMScsIGtleTogJ2hwMHRjZicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdma2pqZjYnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnMTInLCByOiAnMScsIGtleTogJzF0bWFpaicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICcxOWwyOGUnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnMTknLCByOiAnMScsIGtleTogJ2Y0em9qMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgR3JpcFZlcnRpY2FsO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgS2V5Um91bmRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1pNDFPRFlnTVRjdU5ERTBRVElnTWlBd0lEQWdNQ0F5SURFNExqZ3lPRll5TVdFeElERWdNQ0F3SURBZ01TQXhhRE5oTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFERmhNU0F4SURBZ01DQXdJREV0TVhZdE1XRXhJREVnTUNBd0lERWdNUzB4YUM0eE56SmhNaUF5SURBZ01DQXdJREV1TkRFMExTNDFPRFpzTGpneE5DMHVPREUwWVRZdU5TQTJMalVnTUNBeElEQXROQzAwZWlJZ0x6NEtJQ0E4WTJseVkyeGxJR040UFNJeE5pNDFJaUJqZVQwaU55NDFJaUJ5UFNJdU5TSWdabWxzYkQwaVkzVnljbVZ1ZEVOdmJHOXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9rZXktcm91bmRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBLZXlSb3VuZCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0tleVJvdW5kJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNMi41ODYgMTcuNDE0QTIgMiAwIDAgMCAyIDE4LjgyOFYyMWExIDEgMCAwIDAgMSAxaDNhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xaDFhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xaC4xNzJhMiAyIDAgMCAwIDEuNDE0LS41ODZsLjgxNC0uODE0YTYuNSA2LjUgMCAxIDAtNC00eicsXG4gICAgICBrZXk6ICcxczZ0N3QnLFxuICAgIH0sXG4gIF0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE2LjUnLCBjeTogJzcuNScsIHI6ICcuNScsIGZpbGw6ICdjdXJyZW50Q29sb3InLCBrZXk6ICd3MGVrcGcnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEtleVJvdW5kO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTWF4aW1pemVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWXpJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0E0VmpWaE1pQXlJREFnTUNBd0xUSXRNbWd0TXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE5uWXpZVElnTWlBd0lEQWdNQ0F5SURKb015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UWWdNakZvTTJFeUlESWdNQ0F3SURBZ01pMHlkaTB6SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWF4aW1pemVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNYXhpbWl6ZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ01heGltaXplJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAzSDVhMiAyIDAgMCAwLTIgMnYzJywga2V5OiAnMWRjbWl0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDhWNWEyIDIgMCAwIDAtMi0yaC0zJywga2V5OiAnMWU0Z3QzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTZ2M2EyIDIgMCAwIDAgMiAyaDMnLCBrZXk6ICd3c2w1c2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMjFoM2EyIDIgMCAwIDAgMi0ydi0zJywga2V5OiAnMTh0cmVrJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNYXhpbWl6ZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1pbmltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6ZGpOaE1pQXlJREFnTUNBeExUSWdNa2d6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNGFDMHpZVElnTWlBd0lEQWdNUzB5TFRKV015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObWd6WVRJZ01pQXdJREFnTVNBeUlESjJNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGMkxUTmhNaUF5SURBZ01DQXhJREl0TW1neklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21pbmltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWluaW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNaW5pbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM3YzYTIgMiAwIDAgMS0yIDJIMycsIGtleTogJ2hvaGJ0cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4aC0zYTIgMiAwIDAgMS0yLTJWMycsIGtleTogJzVqdzFmMycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2aDNhMiAyIDAgMCAxIDIgMnYzJywga2V5OiAnMTk4dHZyJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxdi0zYTIgMiAwIDAgMSAyLTJoMycsIGtleTogJ3BoOG14cCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWluaW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeE9Fd3hNaUF5TWt3eE5pQXhPQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ01vdmVEb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxOEwxMiAyMkwxNiAxOCcsIGtleTogJ2Nza3ZmdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1vdmVVcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBMlRERXlJREpNTVRZZ05pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNbFl5TWlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdmUtdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlVXAnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDZMMTIgMkwxNiA2Jywga2V5OiAnMXl2a3l4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDJWMjInLCBrZXk6ICdyODlyemsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vdmVVcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdENsb3NlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMklERTFMVE10TXlBekxUTWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGFuZWxMZWZ0Q2xvc2UgPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRDbG9zZScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNiAxNS0zLTMgMy0zJywga2V5OiAnMTR5OTl6JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbExlZnRDbG9zZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdE9wZW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNUlETjJNVGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEUwSURrZ015QXpMVE1nTXlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BhbmVsLWxlZnQtb3BlblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdE9wZW4gPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRPcGVuJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOSAzdjE4Jywga2V5OiAnZmgzaHFhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE0IDkgMyAzLTMgMycsIGtleTogJzgwMTBlZScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0T3BlbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpbk9mZlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFVnT1M0ek5GWTNZVEVnTVNBd0lEQWdNU0F4TFRFZ01pQXlJREFnTUNBd0lEQXRORWczTGpnNUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weUlESWdNakFnTWpBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRrZ09YWXhMamMyWVRJZ01pQXdJREFnTVMweExqRXhJREV1Tnpsc0xURXVOemd1T1VFeUlESWdNQ0F3SURBZ05TQXhOUzR5TkZZeE5tRXhJREVnTUNBd0lEQWdNU0F4YURFeElpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3Bpbi1vZmZcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQaW5PZmYgPSBjcmVhdGVMdWNpZGVJY29uKCdQaW5PZmYnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN3Y1Jywga2V5OiAnYmIxZHU5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE1IDkuMzRWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRINy44OScsIGtleTogJ3pud256cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20yIDIgMjAgMjAnLCBrZXk6ICcxb29ld3knIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSA5djEuNzZhMiAyIDAgMCAxLTEuMTEgMS43OWwtMS43OC45QTIgMiAwIDAgMCA1IDE1LjI0VjE2YTEgMSAwIDAgMCAxIDFoMTEnLFxuICAgICAga2V5OiAnYzlxaG0yJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbk9mZjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpblxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PU0F4TUM0M05tRXlJRElnTUNBd0lERXRNUzR4TVNBeExqYzViQzB4TGpjNExqbEJNaUF5SURBZ01DQXdJRFVnTVRVdU1qUldNVFpoTVNBeElEQWdNQ0F3SURFZ01XZ3hNbUV4SURFZ01DQXdJREFnTVMweGRpMHVOelpoTWlBeUlEQWdNQ0F3TFRFdU1URXRNUzQzT1d3dE1TNDNPQzB1T1VFeUlESWdNQ0F3SURFZ01UVWdNVEF1TnpaV04yRXhJREVnTUNBd0lERWdNUzB4SURJZ01pQXdJREFnTUNBd0xUUklPR0V5SURJZ01DQXdJREFnTUNBMElERWdNU0F3SURBZ01TQXhJREY2SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGluXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluID0gY3JlYXRlTHVjaWRlSWNvbignUGluJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDEwLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LS43NmEyIDIgMCAwIDAtMS4xMS0xLjc5bC0xLjc4LS45QTIgMiAwIDAgMSAxNSAxMC43NlY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg4YTIgMiAwIDAgMCAwIDQgMSAxIDAgMCAxIDEgMXonLFxuICAgICAga2V5OiAnMW5rejhiJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFRhYmxlMlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT1NBelNEVmhNaUF5SURBZ01DQXdMVElnTW5ZMGJUWXRObWd4TUdFeUlESWdNQ0F3SURFZ01pQXlkalJOT1NBemRqRTRiVEFnTUdneE1HRXlJRElnTUNBd0lEQWdNaTB5VmpsTk9TQXlNVWcxWVRJZ01pQXdJREFnTVMweUxUSldPVzB3SURCb01UZ2lJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy90YWJsZS0yXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgVGFibGUyID0gY3JlYXRlTHVjaWRlSWNvbignVGFibGUyJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAzSDVhMiAyIDAgMCAwLTIgMnY0bTYtNmgxMGEyIDIgMCAwIDEgMiAydjRNOSAzdjE4bTAgMGgxMGEyIDIgMCAwIDAgMi0yVjlNOSAyMUg1YTIgMiAwIDAgMS0yLTJWOW0wIDBoMTgnLFxuICAgICAga2V5OiAnZ3VnajgzJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlMjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFhcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1UZ2dOaUEySURFNElpQXZQZ29nSUR4d1lYUm9JR1E5SW0wMklEWWdNVElnTVRJaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3hcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBYID0gY3JlYXRlTHVjaWRlSWNvbignWCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTE4IDYgNiAxOCcsIGtleTogJzFibDVmOCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ202IDYgMTIgMTInLCBrZXk6ICdkOGJrNnYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFg7XG4iLCAiaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBiYWRnZVZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1weC0yLjUgcHMtcHktMC41IHBzLXRleHQteHMgcHMtZm9udC1zZW1pYm9sZCBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0yIGZvY3VzOnBzLXJpbmctcmluZyBmb2N1czpwcy1yaW5nLW9mZnNldC0yXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzgwXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgIFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvODBcIixcbiAgICAgICAgb3V0bGluZTogXCJwcy10ZXh0LWZvcmVncm91bmRcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhZGdlUHJvcHMgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIFZhcmlhbnRQcm9wczx0eXBlb2YgYmFkZ2VWYXJpYW50cz4ge31cblxuZnVuY3Rpb24gQmFkZ2UoeyBjbGFzc05hbWUsIHZhcmlhbnQsIC4uLnByb3BzIH06IEJhZGdlUHJvcHMpIHtcbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbihiYWRnZVZhcmlhbnRzKHsgdmFyaWFudCB9KSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgQmFkZ2UsIGJhZGdlVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGJ1dHRvblZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1nYXAtMiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLXByaW1hcnkvOTBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6IFwicHMtYmctZGVzdHJ1Y3RpdmUgcHMtdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1kZXN0cnVjdGl2ZS85MFwiLFxuICAgICAgICBvdXRsaW5lOlxuICAgICAgICAgIFwicHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1hY2NlbnQgaG92ZXI6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwicHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLXNlY29uZGFyeS84MFwiLFxuICAgICAgICBnaG9zdDogXCJob3Zlcjpwcy1iZy1hY2NlbnQgaG92ZXI6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBsaW5rOiBcInBzLXRleHQtcHJpbWFyeSBwcy11bmRlcmxpbmUtb2Zmc2V0LTQgaG92ZXI6cHMtdW5kZXJsaW5lXCIsXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWgtOSBwcy1weC00IHBzLXB5LTJcIixcbiAgICAgICAgeHM6IFwicHMtaC02IHBzLXJvdW5kZWQtbWQgcHMtcHgtMiBwcy10ZXh0LXhzXCIsXG4gICAgICAgIHNtOiBcInBzLWgtOCBwcy1yb3VuZGVkLW1kIHBzLXB4LTMgcHMtdGV4dC14c1wiLFxuICAgICAgICBsZzogXCJwcy1oLTEwIHBzLXJvdW5kZWQtbWQgcHMtcHgtOFwiLFxuICAgICAgICBpY29uOiBcInBzLWgtOSBwcy13LTlcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgICAgc2l6ZTogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uUHJvcHNcbiAgZXh0ZW5kcyBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz4ge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgQnV0dG9uUHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIHZhcmlhbnQsIHNpemUsIGFzQ2hpbGQgPSBmYWxzZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIjtcbiAgICByZXR1cm4gPENvbXAgY2xhc3NOYW1lPXtjbihidXR0b25WYXJpYW50cyh7IHZhcmlhbnQsIHNpemUsIGNsYXNzTmFtZSB9KSl9IHJlZj17cmVmfSB7Li4ucHJvcHN9IC8+O1xuICB9LFxuKTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQnV0dG9uXCI7XG5cbmV4cG9ydCB7IEJ1dHRvbiwgYnV0dG9uVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFBvcG92ZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFBvcG92ZXJUcmlnZ2VyID0gUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBQb3BvdmVyQW5jaG9yID0gUG9wb3ZlclByaW1pdGl2ZS5BbmNob3I7XG5cbmNvbnN0IFBvcG92ZXJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtdy03MiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtNCBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtcG9wb3Zlci1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFBvcG92ZXIsIFBvcG92ZXJUcmlnZ2VyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlckFuY2hvciB9O1xuIiwgImltcG9ydCB7IFF1ZXJ5S2V5LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB7IEFkYXB0ZXJRdWVyeVJlc3VsdCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgYWRkUm93SWRUb1Jlc3VsdCB9IGZyb20gXCIuL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZUluc2VydCgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcbiAgY29uc3QgeyBzY2hlbWEgPSBudWxsLCBuYW1lOiB0YWJsZSA9IG51bGwgfSA9IGFjdGl2ZVRhYmxlID8/IHt9O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25LZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwiaW5zZXJ0XCJdLFxuICAgIGFzeW5jIG11dGF0aW9uRm4ocm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci5pbnNlcnQoeyByb3dzLCB0YWJsZTogYWN0aXZlVGFibGUhIH0sIHt9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWRkUm93SWRUb1Jlc3VsdChyZXN1bHQsIGFjdGl2ZVRhYmxlISk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MobmV3RGF0YSkge1xuICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcmllc0RhdGE8QWRhcHRlclF1ZXJ5UmVzdWx0PihcbiAgICAgICAge1xuICAgICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgICAvLyBoZXJlIHdlIHBhcnRpYWxseSBtYXRjaCB0aGUgcXVlcnkga2V5IHRvIGdldCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwicXVlcnlcIl0gYXMgbmV2ZXIgYXMgUXVlcnlLZXksXG4gICAgICAgIH0sXG4gICAgICAgIChvbGREYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKG9sZERhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG9sZERhdGE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9sZERhdGEsXG4gICAgICAgICAgICByb3dzOiBbLi4ubmV3RGF0YS5yb3dzLCAuLi5vbGREYXRhLnJvd3NdLFxuICAgICAgICAgIH0gc2F0aXNmaWVzIEFkYXB0ZXJRdWVyeVJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5Q2xpZW50LCBRdWVyeUNsaWVudFByb3ZpZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgUmVhY3RRdWVyeURldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29sc1wiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBUb2FzdGVyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc29ubmVyXCI7XG5pbXBvcnQgeyBOdXFzSGFzaEFkYXB0ZXIgfSBmcm9tIFwiLi9OdXFzSGFzaEFkYXB0ZXJcIjtcbmltcG9ydCB7IFN0dWRpb1RlbGVtZXRyeUV2ZW50IH0gZnJvbSBcIi4vU3R1ZGlvXCI7XG5cbi8qKlxuICogU3R1ZGlvIGNvbnRleHQgdmFsdWUgaW50ZXJmYWNlXG4gKi9cbmludGVyZmFjZSBTdHVkaW9Db250ZXh0VmFsdWUge1xuICBhY3RpdmVUYWJsZTogVGFibGUgfCBudWxsO1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBzZXRBY3RpdmVUYWJsZTogKHRhYmxlOiBUYWJsZSB8IG51bGwpID0+IHZvaWQ7XG4gIG9uRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIGVtaXRUZWxlbWV0cnlFdmVudDogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xuICAvLyBVSSBzdGF0ZVxuICBpc0Z1bGxzY3JlZW46IGJvb2xlYW47XG4gIHRvZ2dsZUZ1bGxzY3JlZW46ICgpID0+IHZvaWQ7XG4gIGlzTmF2aWdhdGlvbk9wZW46IGJvb2xlYW47XG4gIHRvZ2dsZU5hdmlnYXRpb246ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KCk7XG5cbi8qKlxuICogQ29udGV4dCBmb3Igc2hhcmluZyBTdHVkaW8gc3RhdGUgYWNyb3NzIGNvbXBvbmVudHNcbiAqL1xuY29uc3QgU3R1ZGlvQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8U3R1ZGlvQ29udGV4dFZhbHVlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5leHBvcnQgdHlwZSBTdHVkaW9Db250ZXh0UHJvdmlkZXJQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59PjtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpb0NvbnRleHRQcm92aWRlcihwcm9wczogU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGVdID0gdXNlU3RhdGU8VGFibGUgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2lzRnVsbHNjcmVlbiwgc2V0SXNGdWxsc2NyZWVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzTmF2aWdhdGlvbk9wZW4sIHNldElzTmF2aWdhdGlvbk9wZW5dID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgbGV0IG9uRXJyb3IgPSBwcm9wcy5vbkVycm9yO1xuICBvbkVycm9yID8/PSAoZXJyb3I6IEVycm9yKSA9PiB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKTtcblxuICBjb25zdCBlbWl0VGVsZW1ldHJ5RXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMub25UZWxlbWV0cnlFdmVudCA/PyAoKCkgPT4ge30pO1xuICB9LCBbcHJvcHMub25UZWxlbWV0cnlFdmVudF0pO1xuXG4gIGNvbnN0IHRvZ2dsZUZ1bGxzY3JlZW4gPSAoKSA9PiBzZXRJc0Z1bGxzY3JlZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgY29uc3QgdG9nZ2xlTmF2aWdhdGlvbiA9ICgpID0+IHNldElzTmF2aWdhdGlvbk9wZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgcmV0dXJuIChcbiAgICA8UXVlcnlDbGllbnRQcm92aWRlciBjbGllbnQ9e3F1ZXJ5Q2xpZW50fT5cbiAgICAgIDxSZWFjdFF1ZXJ5RGV2dG9vbHMgLz5cbiAgICAgIDxUb2FzdGVyIC8+XG4gICAgICA8TnVxc0hhc2hBZGFwdGVyPlxuICAgICAgICA8U3R1ZGlvQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICAuLi5vdGhlclByb3BzLFxuICAgICAgICAgICAgYWN0aXZlVGFibGUsXG4gICAgICAgICAgICBpc0Z1bGxzY3JlZW4sXG4gICAgICAgICAgICBzZXRBY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIG9uRXJyb3IsXG4gICAgICAgICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQsXG4gICAgICAgICAgICB0b2dnbGVGdWxsc2NyZWVuLFxuICAgICAgICAgICAgaXNOYXZpZ2F0aW9uT3BlbixcbiAgICAgICAgICAgIHRvZ2dsZU5hdmlnYXRpb24sXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9TdHVkaW9Db250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9OdXFzSGFzaEFkYXB0ZXI+XG4gICAgPC9RdWVyeUNsaWVudFByb3ZpZGVyPlxuICApO1xufVxuXG4vKipcbiAqIEhvb2sgdG8gYWNjZXNzIFN0dWRpbyBjb250ZXh0XG4gKiBAdGhyb3dzIEVycm9yIGlmIHVzZWQgb3V0c2lkZSBvZiBTdHVkaW8uUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0dWRpbygpOiBTdHVkaW9Db250ZXh0VmFsdWUge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChTdHVkaW9Db250ZXh0KTtcblxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJgdXNlU3R1ZGlvYCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYFN0dWRpb0NvbnRleHQuUHJvdmlkZXJgXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG4iLCAiJ3VzZSBjbGllbnQnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG9ubGluZU1hbmFnZXIsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUge1xuICBEZXZ0b29sc0J1dHRvblBvc2l0aW9uLFxuICBEZXZ0b29sc0Vycm9yVHlwZSxcbiAgRGV2dG9vbHNQb3NpdGlvbixcbn0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuZXhwb3J0IGludGVyZmFjZSBEZXZ0b29sc09wdGlvbnMge1xuICAvKipcbiAgICogU2V0IHRoaXMgdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgZGV2IHRvb2xzIHRvIGRlZmF1bHQgdG8gYmVpbmcgb3BlblxuICAgKi9cbiAgaW5pdGlhbElzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgUmVhY3QgUXVlcnkgbG9nbyB0byBvcGVuIGFuZCBjbG9zZSB0aGUgZGV2dG9vbHMgcGFuZWwuXG4gICAqICd0b3AtbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfCAnYm90dG9tLXJpZ2h0J1xuICAgKiBEZWZhdWx0cyB0byAnYm90dG9tLXJpZ2h0Jy5cbiAgICovXG4gIGJ1dHRvblBvc2l0aW9uPzogRGV2dG9vbHNCdXR0b25Qb3NpdGlvblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBSZWFjdCBRdWVyeSBkZXZ0b29scyBwYW5lbC5cbiAgICogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCdcbiAgICogRGVmYXVsdHMgdG8gJ2JvdHRvbScuXG4gICAqL1xuICBwb3NpdGlvbj86IERldnRvb2xzUG9zaXRpb25cbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YW5jZSBvZiBRdWVyeUNsaWVudFxuICAgKi9cbiAgY2xpZW50PzogUXVlcnlDbGllbnRcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvcnMgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhlIGRldnRvb2xzLlxuICAgKi9cbiAgZXJyb3JUeXBlcz86IEFycmF5PERldnRvb2xzRXJyb3JUeXBlPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcGFzcyBhIG5vbmNlIHRvIHRoZSBzdHlsZSB0YWcgdGhhdCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IChDU1ApIG5vbmNlIHRvIGFsbG93IGlubGluZSBzdHlsZXMuXG4gICAqL1xuICBzdHlsZU5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGF0dGFjaCB0aGUgZGV2dG9vbCdzIHN0eWxlcyB0byBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBET00uXG4gICAqL1xuICBzaGFkb3dET01UYXJnZXQ/OiBTaGFkb3dSb290XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFF1ZXJ5RGV2dG9vbHMoXG4gIHByb3BzOiBEZXZ0b29sc09wdGlvbnMsXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudChwcm9wcy5jbGllbnQpXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3Qge1xuICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgIHBvc2l0aW9uLFxuICAgIGluaXRpYWxJc09wZW4sXG4gICAgZXJyb3JUeXBlcyxcbiAgICBzdHlsZU5vbmNlLFxuICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgfSA9IHByb3BzXG4gIGNvbnN0IFtkZXZ0b29sc10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICBuZXcgVGFuc3RhY2tRdWVyeURldnRvb2xzKHtcbiAgICAgIGNsaWVudDogcXVlcnlDbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcjogJ1JlYWN0IFF1ZXJ5JyxcbiAgICAgIHZlcnNpb246ICc1JyxcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgIH0pLFxuICApXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRDbGllbnQocXVlcnlDbGllbnQpXG4gIH0sIFtxdWVyeUNsaWVudCwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJ1dHRvblBvc2l0aW9uKSB7XG4gICAgICBkZXZ0b29scy5zZXRCdXR0b25Qb3NpdGlvbihidXR0b25Qb3NpdGlvbilcbiAgICB9XG4gIH0sIFtidXR0b25Qb3NpdGlvbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBkZXZ0b29scy5zZXRQb3NpdGlvbihwb3NpdGlvbilcbiAgICB9XG4gIH0sIFtwb3NpdGlvbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0SW5pdGlhbElzT3Blbihpbml0aWFsSXNPcGVuIHx8IGZhbHNlKVxuICB9LCBbaW5pdGlhbElzT3BlbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzIHx8IFtdKVxuICB9LCBbZXJyb3JUeXBlcywgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICBkZXZ0b29scy5tb3VudChyZWYuY3VycmVudClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGV2dG9vbHMudW5tb3VudCgpXG4gICAgfVxuICB9LCBbZGV2dG9vbHNdKVxuXG4gIHJldHVybiA8ZGl2IGRpcj1cImx0clwiIGNsYXNzTmFtZT1cInRzcWQtcGFyZW50LWNvbnRhaW5lclwiIHJlZj17cmVmfT48L2Rpdj5cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTaWduYWwsIHJlbmRlciwgbGF6eSwgc2V0dXBTdHlsZVNoZWV0LCBjcmVhdGVDb21wb25lbnQsIG1lcmdlUHJvcHMgfSBmcm9tICcuL2NodW5rL0hSN1lYWjVILmpzJztcblxuLy8gc3JjL1RhbnN0YWNrUXVlcnlEZXZ0b29scy50c3hcbnZhciBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMgPSBjbGFzcyB7XG4gICNjbGllbnQ7XG4gICNvbmxpbmVNYW5hZ2VyO1xuICAjcXVlcnlGbGF2b3I7XG4gICN2ZXJzaW9uO1xuICAjaXNNb3VudGVkID0gZmFsc2U7XG4gICNzdHlsZU5vbmNlO1xuICAjc2hhZG93RE9NVGFyZ2V0O1xuICAjYnV0dG9uUG9zaXRpb247XG4gICNwb3NpdGlvbjtcbiAgI2luaXRpYWxJc09wZW47XG4gICNlcnJvclR5cGVzO1xuICAjQ29tcG9uZW50O1xuICAjZGlzcG9zZTtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3IsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXRcbiAgICB9ID0gY29uZmlnO1xuICAgIHRoaXMuI2NsaWVudCA9IGNyZWF0ZVNpZ25hbChjbGllbnQpO1xuICAgIHRoaXMuI3F1ZXJ5Rmxhdm9yID0gcXVlcnlGbGF2b3I7XG4gICAgdGhpcy4jdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy4jb25saW5lTWFuYWdlciA9IG9ubGluZU1hbmFnZXI7XG4gICAgdGhpcy4jc3R5bGVOb25jZSA9IHN0eWxlTm9uY2U7XG4gICAgdGhpcy4jc2hhZG93RE9NVGFyZ2V0ID0gc2hhZG93RE9NVGFyZ2V0O1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uID0gY3JlYXRlU2lnbmFsKGJ1dHRvblBvc2l0aW9uKTtcbiAgICB0aGlzLiNwb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChwb3NpdGlvbik7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlbiA9IGNyZWF0ZVNpZ25hbChpbml0aWFsSXNPcGVuKTtcbiAgICB0aGlzLiNlcnJvclR5cGVzID0gY3JlYXRlU2lnbmFsKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldEJ1dHRvblBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jcG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldEluaXRpYWxJc09wZW4oaXNPcGVuKSB7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlblsxXShpc09wZW4pO1xuICB9XG4gIHNldEVycm9yVHlwZXMoZXJyb3JUeXBlcykge1xuICAgIHRoaXMuI2Vycm9yVHlwZXNbMV0oZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0Q2xpZW50KGNsaWVudCkge1xuICAgIHRoaXMuI2NsaWVudFsxXShjbGllbnQpO1xuICB9XG4gIG1vdW50KGVsKSB7XG4gICAgaWYgKHRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgYWxyZWFkeSBtb3VudGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCBkaXNwb3NlID0gcmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IF9zZWxmJCA9IHRoaXM7XG4gICAgICBjb25zdCBbYnRuUG9zaXRpb25dID0gdGhpcy4jYnV0dG9uUG9zaXRpb247XG4gICAgICBjb25zdCBbcG9zXSA9IHRoaXMuI3Bvc2l0aW9uO1xuICAgICAgY29uc3QgW2lzT3Blbl0gPSB0aGlzLiNpbml0aWFsSXNPcGVuO1xuICAgICAgY29uc3QgW2Vycm9yc10gPSB0aGlzLiNlcnJvclR5cGVzO1xuICAgICAgY29uc3QgW3F1ZXJ5Q2xpZW50XSA9IHRoaXMuI2NsaWVudDtcbiAgICAgIGxldCBEZXZ0b29scztcbiAgICAgIGlmICh0aGlzLiNDb21wb25lbnQpIHtcbiAgICAgICAgRGV2dG9vbHMgPSB0aGlzLiNDb21wb25lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEZXZ0b29scyA9IGxhenkoKCkgPT4gaW1wb3J0KCcuL0RldnRvb2xzQ29tcG9uZW50L0NQSU9aUzVYLmpzJykpO1xuICAgICAgICB0aGlzLiNDb21wb25lbnQgPSBEZXZ0b29scztcbiAgICAgIH1cbiAgICAgIHNldHVwU3R5bGVTaGVldCh0aGlzLiNzdHlsZU5vbmNlLCB0aGlzLiNzaGFkb3dET01UYXJnZXQpO1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEZXZ0b29scywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGdldCBxdWVyeUZsYXZvcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNxdWVyeUZsYXZvcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jdmVyc2lvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9ubGluZU1hbmFnZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jb25saW5lTWFuYWdlcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHNoYWRvd0RPTVRhcmdldCgpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNzaGFkb3dET01UYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZ2V0IGNsaWVudCgpIHtcbiAgICAgICAgICByZXR1cm4gcXVlcnlDbGllbnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJ1dHRvblBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBidG5Qb3NpdGlvbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHBvcygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgaW5pdGlhbElzT3BlbigpIHtcbiAgICAgICAgICByZXR1cm4gaXNPcGVuKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvclR5cGVzKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcnMoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0sIGVsKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuI2Rpc3Bvc2UgPSBkaXNwb3NlO1xuICB9XG4gIHVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIG5vdCBtb3VudGVkXCIpO1xuICAgIH1cbiAgICB0aGlzLiNkaXNwb3NlPy4oKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSBmYWxzZTtcbiAgfVxufTtcblxuLy8gc3JjL1RhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsLnRzeFxudmFyIFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsID0gY2xhc3Mge1xuICAjY2xpZW50O1xuICAjb25saW5lTWFuYWdlcjtcbiAgI3F1ZXJ5Rmxhdm9yO1xuICAjdmVyc2lvbjtcbiAgI2lzTW91bnRlZCA9IGZhbHNlO1xuICAjc3R5bGVOb25jZTtcbiAgI3NoYWRvd0RPTVRhcmdldDtcbiAgI2J1dHRvblBvc2l0aW9uO1xuICAjcG9zaXRpb247XG4gICNpbml0aWFsSXNPcGVuO1xuICAjZXJyb3JUeXBlcztcbiAgI29uQ2xvc2U7XG4gICNDb21wb25lbnQ7XG4gICNkaXNwb3NlO1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcixcbiAgICAgIHZlcnNpb24sXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICAgIG9uQ2xvc2VcbiAgICB9ID0gY29uZmlnO1xuICAgIHRoaXMuI2NsaWVudCA9IGNyZWF0ZVNpZ25hbChjbGllbnQpO1xuICAgIHRoaXMuI3F1ZXJ5Rmxhdm9yID0gcXVlcnlGbGF2b3I7XG4gICAgdGhpcy4jdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy4jb25saW5lTWFuYWdlciA9IG9ubGluZU1hbmFnZXI7XG4gICAgdGhpcy4jc3R5bGVOb25jZSA9IHN0eWxlTm9uY2U7XG4gICAgdGhpcy4jc2hhZG93RE9NVGFyZ2V0ID0gc2hhZG93RE9NVGFyZ2V0O1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uID0gY3JlYXRlU2lnbmFsKGJ1dHRvblBvc2l0aW9uKTtcbiAgICB0aGlzLiNwb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChwb3NpdGlvbik7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlbiA9IGNyZWF0ZVNpZ25hbChpbml0aWFsSXNPcGVuKTtcbiAgICB0aGlzLiNlcnJvclR5cGVzID0gY3JlYXRlU2lnbmFsKGVycm9yVHlwZXMpO1xuICAgIHRoaXMuI29uQ2xvc2UgPSBjcmVhdGVTaWduYWwob25DbG9zZSk7XG4gIH1cbiAgc2V0QnV0dG9uUG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0UG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNwb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0SW5pdGlhbElzT3Blbihpc09wZW4pIHtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuWzFdKGlzT3Blbik7XG4gIH1cbiAgc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzKSB7XG4gICAgdGhpcy4jZXJyb3JUeXBlc1sxXShlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRDbGllbnQoY2xpZW50KSB7XG4gICAgdGhpcy4jY2xpZW50WzFdKGNsaWVudCk7XG4gIH1cbiAgc2V0T25DbG9zZShvbkNsb3NlKSB7XG4gICAgdGhpcy4jb25DbG9zZVsxXSgoKSA9PiBvbkNsb3NlKTtcbiAgfVxuICBtb3VudChlbCkge1xuICAgIGlmICh0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIGFscmVhZHkgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGlzcG9zZSA9IHJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBfc2VsZiQgPSB0aGlzO1xuICAgICAgY29uc3QgW2J0blBvc2l0aW9uXSA9IHRoaXMuI2J1dHRvblBvc2l0aW9uO1xuICAgICAgY29uc3QgW3Bvc10gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtpc09wZW5dID0gdGhpcy4jaW5pdGlhbElzT3BlbjtcbiAgICAgIGNvbnN0IFtlcnJvcnNdID0gdGhpcy4jZXJyb3JUeXBlcztcbiAgICAgIGNvbnN0IFtxdWVyeUNsaWVudF0gPSB0aGlzLiNjbGllbnQ7XG4gICAgICBjb25zdCBbb25DbG9zZV0gPSB0aGlzLiNvbkNsb3NlO1xuICAgICAgbGV0IERldnRvb2xzO1xuICAgICAgaWYgKHRoaXMuI0NvbXBvbmVudCkge1xuICAgICAgICBEZXZ0b29scyA9IHRoaXMuI0NvbXBvbmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERldnRvb2xzID0gbGF6eSgoKSA9PiBpbXBvcnQoJy4vRGV2dG9vbHNQYW5lbENvbXBvbmVudC9PS0Y2RTQ1Ui5qcycpKTtcbiAgICAgICAgdGhpcy4jQ29tcG9uZW50ID0gRGV2dG9vbHM7XG4gICAgICB9XG4gICAgICBzZXR1cFN0eWxlU2hlZXQodGhpcy4jc3R5bGVOb25jZSwgdGhpcy4jc2hhZG93RE9NVGFyZ2V0KTtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGV2dG9vbHMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgcXVlcnlGbGF2b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jcXVlcnlGbGF2b3I7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3ZlcnNpb247XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbmxpbmVNYW5hZ2VyKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI29ubGluZU1hbmFnZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzaGFkb3dET01UYXJnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jc2hhZG93RE9NVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBidXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYnRuUG9zaXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwb3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGluaXRpYWxJc09wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JUeXBlcygpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbkNsb3NlKCkge1xuICAgICAgICAgIHJldHVybiBvbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9LCBlbCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgfVxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgdGhpcy4jZGlzcG9zZT8uKCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gZmFsc2U7XG4gIH1cbn07XG5cbmV4cG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29scywgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgfTtcbiIsICIndXNlIGNsaWVudCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgb25saW5lTWFuYWdlciwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5pbXBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgRGV2dG9vbHNFcnJvclR5cGUgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuXG5leHBvcnQgaW50ZXJmYWNlIERldnRvb2xzUGFuZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YW5jZSBvZiBRdWVyeUNsaWVudFxuICAgKi9cbiAgY2xpZW50PzogUXVlcnlDbGllbnRcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvcnMgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhlIGRldnRvb2xzLlxuICAgKi9cbiAgZXJyb3JUeXBlcz86IEFycmF5PERldnRvb2xzRXJyb3JUeXBlPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcGFzcyBhIG5vbmNlIHRvIHRoZSBzdHlsZSB0YWcgdGhhdCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IChDU1ApIG5vbmNlIHRvIGFsbG93IGlubGluZSBzdHlsZXMuXG4gICAqL1xuICBzdHlsZU5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGF0dGFjaCB0aGUgZGV2dG9vbCdzIHN0eWxlcyB0byBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBET00uXG4gICAqL1xuICBzaGFkb3dET01UYXJnZXQ/OiBTaGFkb3dSb290XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBzdHlsZXMgZm9yIHRoZSBkZXZ0b29scyBwYW5lbFxuICAgKiBAZGVmYXVsdCB7IGhlaWdodDogJzUwMHB4JyB9XG4gICAqIEBleGFtcGxlIHsgaGVpZ2h0OiAnMTAwJScgfVxuICAgKiBAZXhhbXBsZSB7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH1cbiAgICovXG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllc1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBkZXZ0b29scyBwYW5lbCBpcyBjbG9zZWRcbiAgICovXG4gIG9uQ2xvc2U/OiAoKSA9PiB1bmtub3duXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbChcbiAgcHJvcHM6IERldnRvb2xzUGFuZWxPcHRpb25zLFxuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQocHJvcHMuY2xpZW50KVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgZXJyb3JUeXBlcywgc3R5bGVOb25jZSwgc2hhZG93RE9NVGFyZ2V0IH0gPSBwcm9wc1xuICBjb25zdCBbZGV2dG9vbHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgbmV3IFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsKHtcbiAgICAgIGNsaWVudDogcXVlcnlDbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcjogJ1JlYWN0IFF1ZXJ5JyxcbiAgICAgIHZlcnNpb246ICc1JyxcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbjogJ2JvdHRvbS1sZWZ0JyxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIGluaXRpYWxJc09wZW46IHRydWUsXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICAgIG9uQ2xvc2U6IHByb3BzLm9uQ2xvc2UsXG4gICAgfSksXG4gIClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldENsaWVudChxdWVyeUNsaWVudClcbiAgfSwgW3F1ZXJ5Q2xpZW50LCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRPbkNsb3NlKHByb3BzLm9uQ2xvc2UgPz8gKCgpID0+IHt9KSlcbiAgfSwgW3Byb3BzLm9uQ2xvc2UsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEVycm9yVHlwZXMoZXJyb3JUeXBlcyB8fCBbXSlcbiAgfSwgW2Vycm9yVHlwZXMsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgZGV2dG9vbHMubW91bnQocmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRldnRvb2xzLnVubW91bnQoKVxuICAgIH1cbiAgfSwgW2RldnRvb2xzXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7IGhlaWdodDogJzUwMHB4JywgLi4ucHJvcHMuc3R5bGUgfX1cbiAgICAgIGNsYXNzTmFtZT1cInRzcWQtcGFyZW50LWNvbnRhaW5lclwiXG4gICAgICByZWY9e3JlZn1cbiAgICA+PC9kaXY+XG4gIClcbn1cbiIsICIndXNlIGNsaWVudCdcblxuaW1wb3J0ICogYXMgRGV2dG9vbHMgZnJvbSAnLi9SZWFjdFF1ZXJ5RGV2dG9vbHMnXG5pbXBvcnQgKiBhcyBEZXZ0b29sc1BhbmVsIGZyb20gJy4vUmVhY3RRdWVyeURldnRvb2xzUGFuZWwnXG5cbmV4cG9ydCBjb25zdCBSZWFjdFF1ZXJ5RGV2dG9vbHM6ICh0eXBlb2YgRGV2dG9vbHMpWydSZWFjdFF1ZXJ5RGV2dG9vbHMnXSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgOiBEZXZ0b29scy5SZWFjdFF1ZXJ5RGV2dG9vbHNcblxuZXhwb3J0IGNvbnN0IFJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsOiAodHlwZW9mIERldnRvb2xzUGFuZWwpWydSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCddID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICA6IERldnRvb2xzUGFuZWwuUmVhY3RRdWVyeURldnRvb2xzUGFuZWxcbiIsICJpbXBvcnQgeyBUb2FzdGVyIGFzIFNvbm5lciB9IGZyb20gXCJzb25uZXJcIjtcblxuLy8gaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQC91aS9zdHVkaW8vdXRpbC90aGVtZS1wcm92aWRlclwiO1xuXG50eXBlIFRvYXN0ZXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBTb25uZXI+O1xuXG5jb25zdCBUb2FzdGVyID0gKHsgLi4ucHJvcHMgfTogVG9hc3RlclByb3BzKSA9PiB7XG4gIC8vIGNvbnN0IHsgdGhlbWUgPSBcInN5c3RlbVwiIH0gPSB1c2VUaGVtZSgpO1xuXG4gIHJldHVybiAoXG4gICAgPFNvbm5lclxuICAgICAgLy8gdGhlbWU9e3RoZW1lIGFzIFRvYXN0ZXJQcm9wc1tcInRoZW1lXCJdfVxuICAgICAgY2xhc3NOYW1lPVwicHMtdG9hc3RlciBwcy1ncm91cFwiXG4gICAgICB0b2FzdE9wdGlvbnM9e3tcbiAgICAgICAgY2xhc3NOYW1lczoge1xuICAgICAgICAgIHRvYXN0OlxuICAgICAgICAgICAgXCJncm91cCB0b2FzdCBncm91cC1bLnRvYXN0ZXJdOmJnLWJhY2tncm91bmQgZ3JvdXAtWy50b2FzdGVyXTp0ZXh0LWZvcmVncm91bmQgZ3JvdXAtWy50b2FzdGVyXTpib3JkZXItYm9yZGVyIGdyb3VwLVsudG9hc3Rlcl06c2hhZG93LWxnXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgYWN0aW9uQnV0dG9uOiBcImdyb3VwLVsudG9hc3RdOmJnLXByaW1hcnkgZ3JvdXAtWy50b2FzdF06dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgICAgICBjYW5jZWxCdXR0b246IFwiZ3JvdXAtWy50b2FzdF06YmctbXV0ZWQgZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIH0sXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgeyBUb2FzdGVyIH07XG4iLCAiaW1wb3J0IHtcbiAgdW5zdGFibGVfQWRhcHRlck9wdGlvbnMgYXMgQWRhcHRlck9wdGlvbnMsXG4gIHVuc3RhYmxlX2NyZWF0ZUFkYXB0ZXJQcm92aWRlciBhcyBjcmVhdGVBZGFwdGVyUHJvdmlkZXIsXG59IGZyb20gXCJudXFzL2FkYXB0ZXJzL2N1c3RvbVwiO1xuaW1wb3J0IHsgRkMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCB0eXBlIHsgZGVmYXVsdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIEhvb2sgdGhhdCBOdXFzIHdpbGwgY2FsbCB0byByZWFkICYgd3JpdGUgVVJMIHN0YXRlLlxuICovXG5mdW5jdGlvbiB1c2VIYXNoQWRhcHRlcigpIHtcbiAgLy8gcmVhZCBjdXJyZW50IHN0YXRlIGZyb20gZXZlcnl0aGluZyBhZnRlciB0aGUgXHUyMDFDI1x1MjAxRFxuICBjb25zdCByYXdIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG4gIGNvbnN0IFtoYXNoUGFyYW1zLCBzZXRIYXNoUGFyYW1zXSA9IHVzZVN0YXRlKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuXG4gIC8vIHdyaXRlIG5ldyBzdGF0ZSBiYWNrIGludG8gdGhlIGhhc2ggZnJhZ21lbnRcbiAgZnVuY3Rpb24gdXBkYXRlVXJsKHVwZGF0ZWQ6IFVSTFNlYXJjaFBhcmFtcywgeyBoaXN0b3J5IH06IEFkYXB0ZXJPcHRpb25zKSB7XG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3QgaGFzaCA9IHVwZGF0ZWQudG9TdHJpbmcoKTtcbiAgICBjb25zdCB1cmwgPSBgJHtwYXRobmFtZX0ke3NlYXJjaH0jJHtoYXNofWA7XG5cbiAgICBpZiAoaGlzdG9yeSA9PT0gXCJwdXNoXCIpIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICB9XG5cbiAgICBzZXRIYXNoUGFyYW1zKHVwZGF0ZWQpO1xuICB9XG5cbiAgLy8gZXhwb3NlIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgcGFyYW1zXG4gIGZ1bmN0aW9uIGdldFNlYXJjaFBhcmFtc1NuYXBzaG90KCkge1xuICAgIGNvbnN0IHJhdyA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuXG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3KTtcbiAgfVxuXG4gIC8vIHN5bmMgc3RhdGUgd2hlbiB1c2VyIG5hdmlnYXRlcyB2aWEgYnJvd3NlciBjb250cm9scyBvciBleHRlcm5hbCBzY3JpcHRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBoYW5kbGVIYXNoQ2hhbmdlKCkge1xuICAgICAgY29uc3QgcmF3SGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuICAgICAgc2V0SGFzaFBhcmFtcyhuZXcgVVJMU2VhcmNoUGFyYW1zKHJhd0hhc2gpKTtcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIiwgaGFuZGxlSGFzaENoYW5nZSk7XG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJoYXNoY2hhbmdlXCIsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHsgc2VhcmNoUGFyYW1zOiBoYXNoUGFyYW1zLCB1cGRhdGVVcmwsIGdldFNlYXJjaFBhcmFtc1NuYXBzaG90IH07XG59XG5cbi8qKlxuICogVGhlIGFkYXB0ZXIgcHJvdmlkZXIgY29tcG9uZW50IHlvdSB3cmFwIHlvdXIgYXBwIGluLlxuICovXG5leHBvcnQgY29uc3QgTnVxc0hhc2hBZGFwdGVyID0gY3JlYXRlQWRhcHRlclByb3ZpZGVyKHVzZUhhc2hBZGFwdGVyKSBhcyBGQzxQcm9wc1dpdGhDaGlsZHJlbj47XG4iLCAiaW1wb3J0IHsgaW5mZXJSb3dGaWx0ZXIsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5mdW5jdGlvbiBnZXRSb3dJZChyb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0YWJsZTogVGFibGUpIHtcbiAgY29uc3QgaWQgPSB7XG4gICAgZmlsdGVyOiBpbmZlclJvd0ZpbHRlcihyb3csIHRhYmxlLmNvbHVtbnMpLFxuICAgIHRhYmxlOiBgJHt0YWJsZS5zY2hlbWF9LiR7dGFibGUubmFtZX1gLFxuICB9O1xuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShpZCk7XG59XG5cbmZ1bmN0aW9uIGFkZFJvd0lkVG9Sb3cocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIHJldHVybiB7IC4uLnJvdywgX19wc19yb3dpZDogZ2V0Um93SWQocm93LCB0YWJsZSkgfTtcbn1cblxudHlwZSBBZGFwdGVyUmVzdWx0ID0ge1xuICByb3c/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcm93cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkUm93SWRUb1Jlc3VsdDxUIGV4dGVuZHMgQWRhcHRlclJlc3VsdD4ocmVzdWx0OiBULCB0YWJsZTogVGFibGUpIHtcbiAgY29uc3QgeyByb3csIHJvd3MgfSA9IHJlc3VsdDtcblxuICBpZiAocm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJvdzogYWRkUm93SWRUb1Jvdyhyb3csIHRhYmxlKSB9O1xuICB9XG4gIGlmIChyb3dzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJvd3M6IHJvd3MubWFwKChyb3cpID0+IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkpIH07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJRdWVyeVJlc3VsdCwgRmlsdGVyR3JvdXAsIFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGFkZFJvd0lkVG9SZXN1bHQgfSBmcm9tIFwiLi91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUFjdGl2ZVRhYmxlUXVlcnlQcm9wcyB7XG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICBzb3J0T3JkZXI6IFNvcnRPcmRlckl0ZW1bXTtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlUXVlcnkocHJvcHM6IFVzZUFjdGl2ZVRhYmxlUXVlcnlQcm9wcykge1xuICBjb25zdCB7IHBhZ2VJbmRleCwgcGFnZVNpemUsIHNvcnRPcmRlciwgZmlsdGVyIH0gPSBwcm9wcztcblxuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIGVuYWJsZWQ6IEJvb2xlYW4oYWN0aXZlVGFibGUpLFxuICAgIGdjVGltZTogMCxcbiAgICBwbGFjZWhvbGRlckRhdGEocHJldmlvdXNEYXRhOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQsIHByZXZpb3VzUXVlcnkpIHtcbiAgICAgIGNvbnN0IFssIHNjaGVtYSwgLCB0YWJsZV0gPSBwcmV2aW91c1F1ZXJ5Py5xdWVyeUtleSB8fCBbXTtcblxuICAgICAgaWYgKHNjaGVtYSAhPT0gYWN0aXZlVGFibGU/LnNjaGVtYSB8fCB0YWJsZSAhPT0gYWN0aXZlVGFibGU/Lm5hbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNEYXRhO1xuICAgIH0sXG4gICAgYXN5bmMgcXVlcnlGbih7IHNpZ25hbCB9KSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdHNdID0gYXdhaXQgYWRhcHRlci5xdWVyeShcbiAgICAgICAgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIHRhYmxlOiBhY3RpdmVUYWJsZSEsIGZpbHRlciB9LFxuICAgICAgICB7IGFib3J0U2lnbmFsOiBzaWduYWwgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFkZFJvd0lkVG9SZXN1bHQocmVzdWx0cywgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIHF1ZXJ5S2V5OiBbXG4gICAgICBcInNjaGVtYVwiLFxuICAgICAgYWN0aXZlVGFibGU/LnNjaGVtYSB8fCBudWxsLFxuICAgICAgXCJ0YWJsZVwiLFxuICAgICAgYWN0aXZlVGFibGU/Lm5hbWUgfHwgbnVsbCxcbiAgICAgIFwicXVlcnlcIixcbiAgICAgIFwic29ydE9yZGVyXCIsXG4gICAgICBzb3J0T3JkZXIubWFwKChpdGVtKSA9PiBgJHtpdGVtLmNvbHVtbn06JHtpdGVtLmRpcmVjdGlvbn1gKS5qb2luKFwiLFwiKSB8fCBcIm5hdHVyYWxcIixcbiAgICAgIFwicGFnZUluZGV4XCIsXG4gICAgICBwYWdlSW5kZXgsXG4gICAgICBcInBhZ2VTaXplXCIsXG4gICAgICBwYWdlU2l6ZSxcbiAgICAgIFwiZmlsdGVyXCIsXG4gICAgICBKU09OLnN0cmluZ2lmeShmaWx0ZXIpLFxuICAgIF0sXG4gICAgc3RhbGVUaW1lOiBJbmZpbml0eSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgdHlwZSBRdWVyeUNsaWVudCwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJRdWVyeVJlc3VsdCwgQWRhcHRlclVwZGF0ZURldGFpbHMsIEFkYXB0ZXJVcGRhdGVPcHRpb25zLCBUYWJsZSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IGluZmVyUm93RmlsdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGEvcXVlcnlcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zIHtcbiAgZGV0YWlsczogQWRhcHRlclVwZGF0ZURldGFpbHM7XG4gIG9wdGlvbnM6IEFkYXB0ZXJVcGRhdGVPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVVcGRhdGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgY29uc3QgcXVlcnlLZXlQcmVmaXggPSBbXCJzY2hlbWFcIiwgYWN0aXZlVGFibGU/LnNjaGVtYSA/PyBudWxsLCBcInRhYmxlXCIsIGFjdGl2ZVRhYmxlPy5uYW1lID8/IG51bGxdIGFzIGNvbnN0O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHBhcmFtczogVXNlQWN0aXZlVGFibGVVcGRhdGVQYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIudXBkYXRlKHBhcmFtcy5kZXRhaWxzLCBwYXJhbXMub3B0aW9ucyk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIG11dGF0aW9uS2V5OiBbLi4ucXVlcnlLZXlQcmVmaXgsIFwidXBkYXRlXCJdLFxuICAgIG9uRXJyb3IoZXJyb3IsIHBhcmFtcykge1xuICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICBvbkVycm9yKGVycm9yKTtcblxuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gcmV2ZXJ0Q2hhbmdlcyhjYWNoZWRSb3cpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY2FjaGVkUm93LFxuICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoY2hhbmdlcykucmVkdWNlKFxuICAgICAgICAgICAgICAob3JpZ2luYWxWYWx1ZXMsIGNvbHVtbk5hbWUpID0+ICh7IC4uLm9yaWdpbmFsVmFsdWVzLCBbY29sdW1uTmFtZV06IHJvd1tjb2x1bW5OYW1lXSB9KSxcbiAgICAgICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uTXV0YXRlKHBhcmFtcykge1xuICAgICAgY29uc3QgeyBkZXRhaWxzIH0gPSBwYXJhbXM7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IHsgcm93OiB1bmNoYW5nZWRSb3cgfSA9IGRldGFpbHM7XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcih1bmNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiBhcHBseUNoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5kZXRhaWxzLmNoYW5nZXMgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKHJlc3VsdCwgcGFyYW1zKSB7XG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IGNoYW5nZXMsIHJvdyB9ID0gcGFyYW1zLmRldGFpbHM7XG5cbiAgICAgICAgICBjb25zdCBjaGFuZ2VkUm93ID0geyAuLi5yb3csIC4uLmNoYW5nZXMgfTtcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKGNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiBhcHBseVJlYWxEYXRhV2hlbkZyZXNoZXIoY2FjaGVkUm93KSB7XG4gICAgICAgICAgY29uc3QgeyBfX3BzX3VwZGF0ZWRfYXRfXyB9ID0gY2FjaGVkUm93O1xuICAgICAgICAgIGNvbnN0IHsgcm93IH0gPSByZXN1bHQ7XG5cbiAgICAgICAgICAvLyByZXN1bHQgcm93IGlzIHN0YWxlLlxuICAgICAgICAgIGlmIChfX3BzX3VwZGF0ZWRfYXRfXyAhPSBudWxsICYmIHJvdy5fX3BzX3VwZGF0ZWRfYXRfXyA8PSBfX3BzX3VwZGF0ZWRfYXRfXykge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFJvdztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4geyAuLi5jYWNoZWRSb3csIC4uLnJvdyB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvdmVyd3JpdGVDYWNoZWRSb3cocGFyYW1zOiB7XG4gIGdldEZpbmRlckZuOiAoKSA9PiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICB1cGRhdGVyRm46IChjYWNoZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcXVlcnlDbGllbnQ6IFF1ZXJ5Q2xpZW50O1xufSkge1xuICBjb25zdCB7IGdldEZpbmRlckZuLCBxdWVyeUNsaWVudCwgdGFibGUsIHVwZGF0ZXJGbiB9ID0gcGFyYW1zO1xuXG4gIGxldCBmaW5kZXI6IFJldHVyblR5cGU8dHlwZW9mIGdldEZpbmRlckZuPjtcblxuICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YShcbiAgICB7IGV4YWN0OiBmYWxzZSwgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCB0YWJsZS5zY2hlbWEsIFwidGFibGVcIiwgdGFibGUubmFtZSwgXCJxdWVyeVwiXSB9LFxuICAgIChjYWNoZWRSZXN1bHQ6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCk6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBjb25zdCB7IHJvd3M6IGNhY2hlZFJvd3MgPSBbXSB9ID0gY2FjaGVkUmVzdWx0IHx8IHt9O1xuXG4gICAgICBpZiAoY2FjaGVkUm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FjaGVkUm93SW5kZXggPSBjYWNoZWRSb3dzLmZpbmRJbmRleCgoZmluZGVyID8/PSBnZXRGaW5kZXJGbigpKSk7XG5cbiAgICAgIGlmIChjYWNoZWRSb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Um93ID0gdXBkYXRlckZuKGNhY2hlZFJvd3NbY2FjaGVkUm93SW5kZXhdISk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNhY2hlZFJlc3VsdCEsXG4gICAgICAgIHJvd3M6IFsuLi5jYWNoZWRSb3dzLnNsaWNlKDAsIGNhY2hlZFJvd0luZGV4KSwgbmV3Um93LCAuLi5jYWNoZWRSb3dzLnNsaWNlKGNhY2hlZFJvd0luZGV4ICsgMSldLFxuICAgICAgfTtcbiAgICB9LFxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJHcm91cCB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmlsdGVyOiBGaWx0ZXJHcm91cCA9IHtcbiAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICBmaWx0ZXJzOiBbXSxcbiAgYWZ0ZXI6IFwiYW5kXCIsXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEVtcHR5RmlsdGVyOiBGaWx0ZXJHcm91cCA9IHtcbiAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICBmaWx0ZXJzOiBbeyBraW5kOiBcIkNvbHVtbkZpbHRlclwiLCBjb2x1bW46IFwiXCIsIG9wZXJhdG9yOiBcIj1cIiwgdmFsdWU6IFwiXCIsIGFmdGVyOiBcImFuZFwiIH1dLFxuICBhZnRlcjogXCJhbmRcIixcbn07XG5cbmNvbnN0IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZSA9IChmaWx0ZXJHcm91cDogRmlsdGVyR3JvdXApOiBudW1iZXIgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJHcm91cC5maWx0ZXJzKSB7XG4gICAgaWYgKGZpbHRlci5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgICAvLyBPbmx5IGNvdW50IGZpbHRlcnMgdGhhdCBoYXZlIGEgbm9uLWVtcHR5IGNvbHVtbiBzZWxlY3RlZFxuICAgICAgaWYgKGZpbHRlci5jb2x1bW4udHJpbSgpKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmaWx0ZXIua2luZCA9PT0gXCJGaWx0ZXJHcm91cFwiKSB7XG4gICAgICBjb3VudCArPSBjb3VudEZpbHRlcnNSZWN1cnNpdmUoZmlsdGVyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvdW50O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUZpbHRlcmluZygpIHtcbiAgY29uc3QgW2ZpbHRlclBhcmFtLCBzZXRGaWx0ZXJQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwiZmlsdGVyXCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGRlZmF1bHRGaWx0ZXIpLFxuICB9KTtcblxuICBjb25zdCBhcHBsaWVkRmlsdGVyID0gdXNlTWVtbygoKSA9PiBKU09OLnBhcnNlKGZpbHRlclBhcmFtKSBhcyBGaWx0ZXJHcm91cCwgW2ZpbHRlclBhcmFtXSk7XG4gIGNvbnN0IHNldEFwcGxpZWRGaWx0ZXIgPSAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZCBzZXRGaWx0ZXJQYXJhbShKU09OLnN0cmluZ2lmeShmaWx0ZXIpKTtcblxuICBjb25zdCBbZWRpdGluZ0ZpbHRlciwgc2V0RWRpdGluZ0ZpbHRlcl0gPSB1c2VTdGF0ZTxGaWx0ZXJHcm91cD4oYXBwbGllZEZpbHRlcik7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRFZGl0aW5nRmlsdGVyKGFwcGxpZWRGaWx0ZXIpO1xuICB9LCBbYXBwbGllZEZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvdGFsRWRpdGluZ0ZpbHRlcnMgPSB1c2VNZW1vKCgpID0+IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShlZGl0aW5nRmlsdGVyKSwgW2VkaXRpbmdGaWx0ZXJdKTtcblxuICByZXR1cm4ge1xuICAgIGFwcGxpZWRGaWx0ZXIsXG4gICAgc2V0QXBwbGllZEZpbHRlcixcbiAgICBlZGl0aW5nRmlsdGVyLFxuICAgIHNldEVkaXRpbmdGaWx0ZXIsXG4gICAgdG90YWxFZGl0aW5nRmlsdGVycyxcbiAgfTtcbn1cbiIsICIvLyB3ZSdyZSBlbnN1cmluZyB0aGF0IGtleXMgYXJlIHR5cGUtc2FmZS4gdGhlcmUgaXMgbm8gcHJvcGVyIHdheSB0byBhY2hpZXZlIGl0IGluIGBudXFzYC5cbi8vIHRoZSBgZGVjbGFyZSBtb2R1bGVgIHRlY2huaXF1ZSByZXN1bHRzIGluIGFkZGluZyBvdmVybG9hZHMsIG5vdCBvdmVycmlkaW5nIHRoZSBleGlzdGluZyBmdW5jdGlvbnMuXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCB7XG4gIHR5cGUgT3B0aW9ucyxcbiAgdHlwZSBQYXJzZXIsXG4gIHVzZVF1ZXJ5U3RhdGUgYXMgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVSZXR1cm4sXG4gIHVzZVF1ZXJ5U3RhdGVzIGFzIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzUmV0dXJuLFxufSBmcm9tIFwibnVxc1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5leHBvcnQgKiBmcm9tIFwibnVxc1wiO1xuXG5leHBvcnQgdHlwZSBTdGF0ZUtleSA9IFwicGFnZUluZGV4XCIgfCBcInBhZ2VTaXplXCIgfCBcInRhYmxlXCIgfCBcInNvcnRcIiB8IFwic2NoZW1hXCIgfCBcInRlc3RcIiB8IFwiZmlsdGVyXCI7XG5cbi8vIGxpZnRlZCBmcm9tIEBwcmlzbWEvY2xpZW50L3J1bnRpbWVcbnR5cGUgRXhhY3Q8QSwgVz4gPVxuICB8IChBIGV4dGVuZHMgdW5rbm93blxuICAgICAgPyBXIGV4dGVuZHMgQVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIFtLIGluIGtleW9mIEFdOiBFeGFjdDxBW0tdLCBXW0tdPjtcbiAgICAgICAgICB9XG4gICAgICAgIDogV1xuICAgICAgOiBuZXZlcilcbiAgfCAoQSBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB8IGJvb2xlYW4gfCBbXSA/IEEgOiBuZXZlcik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24ga2V5TWFwPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGtleU1hcDogRXhhY3Q8TWFwLCBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+LFxuKTogQnJhbmRlZEtleU1hcDxNYXA+IHtcbiAgcmV0dXJuIGtleU1hcCBhcyBuZXZlcjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1cmxLZXlzPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHVybEtleXM6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIHN0cmluZz4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiB1cmxLZXlzIGFzIG5ldmVyO1xufVxuXG5jb25zdCBfQlJBTkRfU1lNQk9MID0gU3ltYm9sKFwiQlJBTkRfU1lNQk9MXCIpO1xuXG50eXBlIEJyYW5kZWRLZXlNYXA8TWFwPiA9IE1hcCAmIHtcbiAgW0sgaW4gdHlwZW9mIF9CUkFORF9TWU1CT0xdOiBuZXZlcjtcbn07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4gJiB7XG4gICAgZGVmYXVsdFZhbHVlOiBUO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIG9wdGlvbnMucGFyc2U+PiwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogUGljazxVc2VRdWVyeVN0YXRlT3B0aW9uczxzdHJpbmc+LCBrZXlvZiBPcHRpb25zPixcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoa2V5OiBTdGF0ZUtleSk6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXksIG9wdGlvbnM/OiBhbnkpOiBhbnkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICByZXR1cm4gdXNlUXVlcnlTdGF0ZU9yaWdpbmFsKGtleSwgb3B0aW9ucyk7XG59XG5cbnR5cGUgVXNlUXVlcnlTdGF0ZXNLZXlzTWFwPFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4gPSBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4sXG4+ID0ge1xuICBbS2V5IGluIGtleW9mIE1hcF06IEtleU1hcFZhbHVlPE1hcFtLZXldPjtcbn07XG5cbnR5cGUgS2V5TWFwVmFsdWU8VHlwZT4gPSBQYXJzZXI8VHlwZT4gJlxuICBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZT86IFR5cGU7XG4gIH07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGVzPEtleU1hcCBleHRlbmRzIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcD4oXG4gIGtleU1hcDogQnJhbmRlZEtleU1hcDxLZXlNYXA+LFxuICBvcHRpb25zPzogUGFydGlhbDxVc2VRdWVyeVN0YXRlc09wdGlvbnM8S2V5TWFwPj4sXG4pOiBVc2VRdWVyeVN0YXRlc1JldHVybjxLZXlNYXA+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwoa2V5TWFwIGFzIG5ldmVyLCBvcHRpb25zKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG4vKipcbiAqIEhvb2sgdG8ga25vdyB3aGV0aGVyIGFuIGluc2VydCBpcyBjdXJyZW50bHkgb25nb2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzSW5zZXJ0aW5nKCkge1xuICByZXR1cm4gdXNlSXNNdXRhdGluZyh7XG4gICAgcHJlZGljYXRlKHsgb3B0aW9uczogeyBtdXRhdGlvbktleSB9IH0pIHtcbiAgICAgIHJldHVybiBtdXRhdGlvbktleT8uWzRdID09PSBcImluc2VydFwiO1xuICAgIH0sXG4gIH0pO1xufVxuIiwgImltcG9ydCB0eXBlIHsgT25DaGFuZ2VGbiwgUGFnaW5hdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsga2V5TWFwLCBwYXJzZUFzSW5kZXgsIHBhcnNlQXNJbnRlZ2VyLCB1c2VRdWVyeVN0YXRlcyB9IGZyb20gXCIuL251cXNcIjtcblxuLy8gVE9ETzogZXZlbnR1YWxseSBjb25maWd1cmFibGUgLyBjb250cm9sbGVkIGJ5IHVzZXIuIGJhYnkgc3RlcHMuLlxuY29uc3QgREVGQVVMVF9QQUdFX1NJWkUgPSAyNTtcblxuY29uc3QgcGFnaW5hdGlvblBhcnNlcnMgPSBrZXlNYXAoe1xuICBwYWdlSW5kZXg6IHBhcnNlQXNJbmRleC53aXRoRGVmYXVsdCgwKSwgLy8gemVyby1iYXNlZFxuICBwYWdlU2l6ZTogcGFyc2VBc0ludGVnZXIud2l0aERlZmF1bHQoREVGQVVMVF9QQUdFX1NJWkUpLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQYWdpbmF0aW9uKCkge1xuICBjb25zdCBbeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH0sIHNldFBhZ2luYXRpb25dID0gdXNlUXVlcnlTdGF0ZXMocGFnaW5hdGlvblBhcnNlcnMpO1xuXG4gIC8vIENvbXBhdGlibGUgd2l0aCBUYW5TdGFjayBUYWJsZSdzIE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPlxuICBjb25zdCBzZXRQYWdpbmF0aW9uU3RhdGU6IE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPiA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVyT3JWYWx1ZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHZvaWQgc2V0UGFnaW5hdGlvbigob2xkKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB1cGRhdGVyT3JWYWx1ZShvbGQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IG5ld1N0YXRlLnBhZ2VJbmRleCxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBuZXdTdGF0ZS5wYWdlU2l6ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZvaWQgc2V0UGFnaW5hdGlvbih7XG4gICAgICAgICAgcGFnZUluZGV4OiB1cGRhdGVyT3JWYWx1ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgcGFnZVNpemU6IHVwZGF0ZXJPclZhbHVlLnBhZ2VTaXplLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXRQYWdpbmF0aW9uXSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIHBhZ2luYXRpb25TdGF0ZTogeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH0sXG4gICAgc2V0UGFnaW5hdGlvblN0YXRlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlRGVsZXRlIH0gZnJvbSBcIi4vdXNlLWFjdGl2ZS10YWJsZS1kZWxldGVcIjtcbmltcG9ydCB7IHVzZVBhZ2luYXRpb24gfSBmcm9tIFwiLi91c2UtcGFnaW5hdGlvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0aW9uKGRhdGE6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBwYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3Jvd1NlbGVjdGlvblN0YXRlLCBzZXRSb3dTZWxlY3Rpb25TdGF0ZV0gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pO1xuICBjb25zdCBpc1NlbGVjdGluZyA9IE9iamVjdC5rZXlzKHJvd1NlbGVjdGlvblN0YXRlKS5sZW5ndGggIT09IDA7XG4gIGNvbnN0IHsgbXV0YXRlIH0gPSB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRSb3dTZWxlY3Rpb25TdGF0ZSh7fSksIFthY3RpdmVUYWJsZSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VJbmRleF0pO1xuXG4gIGZ1bmN0aW9uIGRlbGV0ZVNlbGVjdGlvbigpIHtcbiAgICBjb25zdCByb3dzID0gZGF0YT8ucm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgcmV0dXJuIHJvd1NlbGVjdGlvblN0YXRlW3Jvdy5fX3BzX3Jvd2lkIGFzIHN0cmluZ107XG4gICAgfSk7XG5cbiAgICBtdXRhdGUocm93cyA/PyBbXSwge1xuICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICBzZXRSb3dTZWxlY3Rpb25TdGF0ZSh7fSk7XG4gICAgICB9LFxuICAgICAgb25FcnJvcixcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVsZXRlU2VsZWN0aW9uLFxuICAgIHNldFJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIGlzU2VsZWN0aW5nLFxuICB9O1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5S2V5LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVEZWxldGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIGNvbnN0IHsgc2NoZW1hID0gbnVsbCwgbmFtZTogdGFibGUgPSBudWxsIH0gPSBhY3RpdmVUYWJsZSA/PyB7fTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uS2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcImRlbGV0ZVwiXSxcbiAgICBhc3luYyBtdXRhdGlvbkZuKHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIuZGVsZXRlKHsgcm93cywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LCB7fSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIGFzeW5jIG9uU3VjY2VzcygpIHtcbiAgICAgIGF3YWl0IHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHtcbiAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTb3J0aW5nKCkge1xuICAvLyBVc2UgbnVxcyB0byBtYW5hZ2Ugc29ydGluZyBzdGF0ZSBpbiBVUkxcbiAgY29uc3QgW3NvcnRQYXJhbSwgc2V0U29ydFBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJzb3J0XCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IFwiXCIsXG4gIH0pO1xuXG4gIC8vIFBhcnNlIHNvcnRpbmcgZnJvbSBVUkwgcGFyYW1ldGVyXG4gIGNvbnN0IHBhcnNlU29ydGluZyA9IChzb3J0UGFyYW06IHN0cmluZyB8IG51bGwpOiBTb3J0T3JkZXJJdGVtW10gPT4ge1xuICAgIGlmICghc29ydFBhcmFtKSByZXR1cm4gW107XG5cbiAgICB0cnkge1xuICAgICAgLy8gRm9ybWF0OiBjb2x1bW46ZGlyZWN0aW9uLGNvbHVtbjpkaXJlY3Rpb25cbiAgICAgIHJldHVybiBzb3J0UGFyYW1cbiAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgW2NvbHVtbiwgZGlyZWN0aW9uXSA9IGl0ZW0uc3BsaXQoXCI6XCIpO1xuICAgICAgICAgIGlmICghY29sdW1uIHx8ICFkaXJlY3Rpb24gfHwgIVtcImFzY1wiLCBcImRlc2NcIl0uaW5jbHVkZXMoZGlyZWN0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IGNvbHVtbiwgZGlyZWN0aW9uOiBkaXJlY3Rpb24gYXMgXCJhc2NcIiB8IFwiZGVzY1wiIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgU29ydE9yZGVySXRlbVtdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcGFyc2Ugc29ydGluZyBwYXJhbWV0ZXI6XCIsIGUpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfTtcblxuICAvLyBDcmVhdGUgYSBzdGFibGUgc29ydGluZyBzdGF0ZSB0aGF0J3MgZGVyaXZlZCBmcm9tIFVSTCBwYXJhbWV0ZXJzXG4gIGNvbnN0IFtzb3J0aW5nU3RhdGUsIHNldFNvcnRpbmdTdGF0ZV0gPSB1c2VTdGF0ZSgoKSA9PiBwYXJzZVNvcnRpbmcoc29ydFBhcmFtKSk7XG5cbiAgLy8gS2VlcCBpbnRlcm5hbCBzdGF0ZSBzeW5jaHJvbml6ZWQgd2l0aCBVUkwgcGFyYW1ldGVyc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5ld1NvcnRpbmdTdGF0ZSA9IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pO1xuICAgIHNldFNvcnRpbmdTdGF0ZShuZXdTb3J0aW5nU3RhdGUpO1xuICB9LCBbc29ydFBhcmFtXSk7XG5cbiAgLy8gVXBkYXRlIFVSTCB3aGVuIHNvcnRpbmcgY2hhbmdlcyBmcm9tIHRoZSBVSVxuICBjb25zdCBoYW5kbGVTb3J0aW5nQ2hhbmdlID0gKG5ld1N0YXRlOiBTb3J0T3JkZXJJdGVtW10gfCAoKG9sZDogU29ydE9yZGVySXRlbVtdKSA9PiBTb3J0T3JkZXJJdGVtW10pKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9IHR5cGVvZiBuZXdTdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gbmV3U3RhdGUoc29ydGluZ1N0YXRlKSA6IG5ld1N0YXRlO1xuICAgIHNldFNvcnRpbmdTdGF0ZShyZXNvbHZlZFN0YXRlKTtcblxuICAgIC8vIFNlcmlhbGl6ZSBzb3J0aW5nIHN0YXRlIHRvIFVSTCBwYXJhbWV0ZXJcbiAgICBjb25zdCBzb3J0U3RyaW5nID1cbiAgICAgIHJlc29sdmVkU3RhdGUubGVuZ3RoID4gMCA/IHJlc29sdmVkU3RhdGUubWFwKChpdGVtKSA9PiBgJHtpdGVtLmNvbHVtbn06JHtpdGVtLmRpcmVjdGlvbn1gKS5qb2luKFwiLFwiKSA6IG51bGw7XG5cbiAgICB2b2lkIHNldFNvcnRQYXJhbShzb3J0U3RyaW5nKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNvcnRpbmdTdGF0ZSxcbiAgICBzZXRTb3J0aW5nU3RhdGU6IGhhbmRsZVNvcnRpbmdDaGFuZ2UsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuQ2VsbCB9IGZyb20gXCIuL0Jvb2xlYW5DZWxsXCI7XG5pbXBvcnQgdHlwZSB7IENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcbmltcG9ydCB7IERhdGVDZWxsIH0gZnJvbSBcIi4vRGF0ZUNlbGxcIjtcbmltcG9ydCB7IEVtcHR5Q2VsbCB9IGZyb20gXCIuL0VtcHR5Q2VsbFwiO1xuaW1wb3J0IHsgRW51bUNlbGwgfSBmcm9tIFwiLi9FbnVtQ2VsbFwiO1xuaW1wb3J0IHsgSlNPTkNlbGwgfSBmcm9tIFwiLi9KU09OQ2VsbFwiO1xuaW1wb3J0IHsgTnVsbENlbGwgfSBmcm9tIFwiLi9OdWxsQ2VsbFwiO1xuaW1wb3J0IHsgTnVtZXJpY0NlbGwgfSBmcm9tIFwiLi9OdW1lcmljQ2VsbFwiO1xuaW1wb3J0IHsgUmF3Q2VsbCB9IGZyb20gXCIuL1Jhd0NlbGxcIjtcbmltcG9ydCB7IFRpbWVDZWxsIH0gZnJvbSBcIi4vVGltZUNlbGxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENlbGwoe1xuICBjZWxsLFxuICBjb2x1bW4sXG4gIHByb3BzLFxufToge1xuICBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59KSB7XG4gIGNvbnN0IHZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDxFbXB0eUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSAvPjtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiA8TnVsbENlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSAvPjtcbiAgfVxuXG4gIGNvbnN0IHsgZ3JvdXAsIG9wdGlvbnMsIGlzQXJyYXkgfSA9IGNvbHVtbi5kYXRhdHlwZTtcblxuICBpZiAoZ3JvdXAgPT09IFwianNvblwiIHx8IGlzQXJyYXkpIHtcbiAgICByZXR1cm4gPEpTT05DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiA8UmF3Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gb3B0aW9ucz17b3B0aW9uc30gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIDxCb29sZWFuQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIHJldHVybiA8RGF0ZUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0NlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInJhd1wiKSB7XG4gICAgaWYgKGlzT2JqZWN0VHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiA8SlNPTkNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiA8UmF3Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZX0gLz47XG4gIH1cblxuICBncm91cCBzYXRpc2ZpZXMgbmV2ZXI7XG4gIHRocm93IG5ldyBFcnJvcihgRGF0YXR5cGUgZ3JvdXAgXCIke2dyb3VwIGFzIHN0cmluZ31cIiB3YXMgbm90IGhhbmRsZWQgaW4gJy9jZWxsL2dldC1jZWxsLnRzeCdgKTtcbn1cbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IEJvb2xlYW5DZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEJvb2xlYW5DZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJib29sZWFuXCI+e1N0cmluZyhCb29sZWFuKHZhbHVlKSl9PC9kaXY+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5Cb29sZWFuQ2VsbC5kaXNwbGF5TmFtZSA9IFwiQm9vbGVhbkNlbGxcIjtcblxuZXhwb3J0IHsgQm9vbGVhbkNlbGwgfTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgVGFibGUgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJlbGF0aXZlIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1hdXRvIHBzLWZsZXggcHMtaXRlbXMtc3RhcnQgcHMtaC1mdWxsXCI+XG4gICAgICA8dGFibGUgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy13LWZ1bGwgcHMtY2FwdGlvbi1ib3R0b20gcHMtdGV4dC1zbVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICAgPC9kaXY+XG4gICksXG4pO1xuVGFibGUuZGlzcGxheU5hbWUgPSBcIlRhYmxlXCI7XG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0aGVhZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRlclwiO1xuXG5jb25zdCBUYWJsZUJvZHkgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0Ym9keSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcIlsmX3RyOmxhc3QtY2hpbGRdOnBzLWJvcmRlci0wXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUJvZHkuZGlzcGxheU5hbWUgPSBcIlRhYmxlQm9keVwiO1xuXG5jb25zdCBUYWJsZUZvb3RlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRmb290XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1ib3JkZXItdCBwcy1iZy1tdXRlZC81MCBwcy1mb250LW1lZGl1bSBbJj50cl06bGFzdDpwcy1ib3JkZXItYi0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZUZvb3Rlci5kaXNwbGF5TmFtZSA9IFwiVGFibGVGb290ZXJcIjtcblxuY29uc3QgVGFibGVSb3cgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVJvd0VsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dHJcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1ib3JkZXItYiBwcy10cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjpwcy1iZy1tdXRlZC81MCBkYXRhLVtzdGF0ZT1zZWxlY3RlZF06cHMtYmctbXV0ZWRcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlUm93LmRpc3BsYXlOYW1lID0gXCJUYWJsZVJvd1wiO1xuXG5jb25zdCBUYWJsZUhlYWQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBSZWFjdC5UaEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRoXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLTEwIHBzLXB4LTIgcHMtdGV4dC1sZWZ0IHBzLWFsaWduLW1pZGRsZSBwcy1mb250LW1lZGl1bSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkXCI7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRkSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0ZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLWFsaWduLW1pZGRsZVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGFibGVDZWxsXCI7XG5cbmNvbnN0IFRhYmxlQ2FwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGNhcHRpb24gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy1tdC00IHBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUNhcHRpb24uZGlzcGxheU5hbWUgPSBcIlRhYmxlQ2FwdGlvblwiO1xuXG5leHBvcnQgeyBUYWJsZSwgVGFibGVIZWFkZXIsIFRhYmxlQm9keSwgVGFibGVGb290ZXIsIFRhYmxlSGVhZCwgVGFibGVSb3csIFRhYmxlQ2VsbCwgVGFibGVDYXB0aW9uIH07XG4iLCAiaW1wb3J0IHsgQ29weSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IGlzVmFsaWRFbGVtZW50LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0TWVudSwgQ29udGV4dE1lbnVDb250ZW50LCBDb250ZXh0TWVudUl0ZW0sIENvbnRleHRNZW51VHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudVwiO1xuXG5leHBvcnQgdHlwZSBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48b2JqZWN0PjtcblxuLy8gVE9ETzogVGhpcyBuZWVkcyB0byBiZSBpbnZlcnNpZmllZCAtIHRvIG1ha2UgaXQgZXh0ZW5zaWJsZSwgYW5kIGFkYXB0YWJsZSB0byBkaWZmZXJlbnQgc2l0dWF0aW9ucy5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZENlbGxDb250ZXh0TWVudShwcm9wczogRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0TWVudT5cbiAgICAgIDxDb250ZXh0TWVudVRyaWdnZXIgY2xhc3NOYW1lPVwicHMtYmxvY2sgcHMtdy1mdWxsIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV0gcHMtbGVhZGluZy1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtdGV4dC14cyBwcy1mb250LW1vbm8gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250ZXh0TWVudVRyaWdnZXI+XG4gICAgICA8Q29udGV4dE1lbnVDb250ZW50PlxuICAgICAgICA8Q29udGV4dE1lbnVJdGVtXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGV4dHJhY3RUZXh0Q29udGVudChjaGlsZHJlbik7XG4gICAgICAgICAgICB2b2lkIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnRlbnQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHkgdG8gY2xpcGJvYXJkOlwiLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxDb3B5IHNpemU9ezEyfSAvPlxuICAgICAgICAgIENvcHlcbiAgICAgICAgPC9Db250ZXh0TWVudUl0ZW0+XG4gICAgICA8L0NvbnRleHRNZW51Q29udGVudD5cbiAgICA8L0NvbnRleHRNZW51PlxuICApO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VGV4dENvbnRlbnQobm9kZTogUmVhY3ROb2RlKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBub2RlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBub2RlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBub2RlID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiBTdHJpbmcobm9kZSk7XG4gIH1cblxuICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChpc1ZhbGlkRWxlbWVudChub2RlKSkge1xuICAgIGNvbnN0IHByb3BzID0gbm9kZS5wcm9wcyBhcyB7IHRleHQ/OiBzdHJpbmc7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH07XG5cbiAgICAvLyBIYW5kbGUgUmV2ZWFsVGV4dCBjb21wb25lbnQgc3BlY2lmaWNhbGx5XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiUmV2ZWFsVGV4dFwiKSB7XG4gICAgICByZXR1cm4gcHJvcHMudGV4dCB8fCBcIlwiO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBOdWxsVmFsdWUgY29tcG9uZW50XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiTnVsbFZhbHVlXCIpIHtcbiAgICAgIHJldHVybiBcIk5VTExcIjtcbiAgICB9XG5cbiAgICAvLyBSZWN1cnNpdmVseSBleHRyYWN0IHRleHQgZnJvbSBjaGlsZHJlblxuICAgIGlmIChwcm9wcy5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGV4dHJhY3RUZXh0Q29udGVudChwcm9wcy5jaGlsZHJlbiBhcyBSZWFjdE5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5tYXAoZXh0cmFjdFRleHRDb250ZW50KS5qb2luKFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG4iLCAiaW1wb3J0ICogYXMgQ29udGV4dE1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0LW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDb250ZXh0TWVudSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IENvbnRleHRNZW51VHJpZ2dlciA9IENvbnRleHRNZW51UHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IENvbnRleHRNZW51R3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgQ29udGV4dE1lbnVQb3J0YWwgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvR3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YlRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0byBwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Db250ZXh0TWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVN1YkNvbnRlbnQuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcbkNvbnRleHRNZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Db250ZXh0TWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaXJjbGUgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1maWxsLWN1cnJlbnRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Db250ZXh0TWVudVJhZGlvSXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkIHBzLXRleHQtZm9yZWdyb3VuZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51TGFiZWwuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctYm9yZGVyXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTaG9ydGN1dCA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICk7XG59O1xuQ29udGV4dE1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiQ29udGV4dE1lbnVTaG9ydGN1dFwiO1xuXG5leHBvcnQge1xuICBDb250ZXh0TWVudSxcbiAgQ29udGV4dE1lbnVUcmlnZ2VyLFxuICBDb250ZXh0TWVudUNvbnRlbnQsXG4gIENvbnRleHRNZW51SXRlbSxcbiAgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0sXG4gIENvbnRleHRNZW51UmFkaW9JdGVtLFxuICBDb250ZXh0TWVudUxhYmVsLFxuICBDb250ZXh0TWVudVNlcGFyYXRvcixcbiAgQ29udGV4dE1lbnVTaG9ydGN1dCxcbiAgQ29udGV4dE1lbnVHcm91cCxcbiAgQ29udGV4dE1lbnVQb3J0YWwsXG4gIENvbnRleHRNZW51U3ViLFxuICBDb250ZXh0TWVudVN1YkNvbnRlbnQsXG4gIENvbnRleHRNZW51U3ViVHJpZ2dlcixcbiAgQ29udGV4dE1lbnVSYWRpb0dyb3VwLFxufTtcbiIsICJpbXBvcnQgeyB0eXBlIENTU1Byb3BlcnRpZXMsIERldGFpbGVkSFRNTFByb3BzLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlQ2VsbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IERhdGFHcmlkQ2VsbENvbnRleHRNZW51IH0gZnJvbSBcIi4uL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDZWxsUHJvcHMgZXh0ZW5kcyBQcm9wc1dpdGhDaGlsZHJlbiwgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8dW5rbm93bj4sIHVua25vd24+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDZWxsKHByb3BzOiBDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCByZWYsIHN0eWxlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVDZWxsXG4gICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXAtMCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICAgIC8vIFRPRE86IEtlZXBpbmcgdGhpcyB0ZW1wb3JhcmlseTsgbWlnaHQgbmVlZCBpdCBsYXRlciBkZXBlbmRpbmcgb24gaW5wdXQgdHlwZXNcbiAgICAgICAgLy8gXCJkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLTIgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbmRpZ28tNDAwIGRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctaW5zZXRcIixcbiAgICAgICAgXCJwcy1jdXJzb3ItcG9pbnRlclwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcmVmPXtyZWYgYXMgbmV2ZXJ9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgPlxuICAgICAgPERhdGFHcmlkQ2VsbENvbnRleHRNZW51PntjaGlsZHJlbn08L0RhdGFHcmlkQ2VsbENvbnRleHRNZW51PlxuICAgIDwvVGFibGVDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuY29uc3QgRGF0ZUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogRGF0ZUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5EYXRlQ2VsbC5kaXNwbGF5TmFtZSA9IFwiRGF0ZUNlbGxcIjtcblxuZXhwb3J0IHsgRGF0ZUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5Q2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59XG5cbmNvbnN0IEVtcHR5Q2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBFbXB0eUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfSAvPjtcbn0pO1xuRW1wdHlDZWxsLmRpc3BsYXlOYW1lID0gXCJFbXB0eUNlbGxcIjtcblxuZXhwb3J0IHsgRW1wdHlDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbnVtQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiB1bmtub3duO1xuICBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbmNvbnN0IEVudW1DZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEVudW1DZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgb3B0aW9ucywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuRW51bUNlbGwuZGlzcGxheU5hbWUgPSBcIkVudW1DZWxsXCI7XG5cbmV4cG9ydCB7IEVudW1DZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBKU09OQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVua25vd25bXTtcbn1cblxuY29uc3QgSlNPTkNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogSlNPTkNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkpTT05DZWxsLmRpc3BsYXlOYW1lID0gXCJKU09OQ2VsbFwiO1xuXG5leHBvcnQgeyBKU09OQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVsbENlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xufVxuXG5jb25zdCBOdWxsQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBOdWxsQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxjb2RlIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MFwiPk5VTEw8L2NvZGU+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5OdWxsQ2VsbC5kaXNwbGF5TmFtZSA9IFwiTnVsbENlbGxcIjtcblxuZXhwb3J0IHsgTnVsbENlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IE51bWVyaWNDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IE51bWVyaWNDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJudW1lcmljXCI+e3ZhbHVlID09PSBudWxsID8gXCJOVUxMXCIgOiBTdHJpbmcodmFsdWUpfTwvZGl2PlxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuTnVtZXJpY0NlbGwuZGlzcGxheU5hbWUgPSBcIk51bWVyaWNDZWxsXCI7XG5cbmV4cG9ydCB7IE51bWVyaWNDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSYXdDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IFJhd0NlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogUmF3Q2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcblJhd0NlbGwuZGlzcGxheU5hbWUgPSBcIlJhd0NlbGxcIjtcblxuZXhwb3J0IHsgUmF3Q2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuY29uc3QgVGltZUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogVGltZUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5UaW1lQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGltZUNlbGxcIjtcblxuZXhwb3J0IHsgVGltZUNlbGwgfTtcbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0SGVhZGVyQ2VsbFByb3BzIHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICByZWFkb25seTogYm9vbGVhbjtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xufVxuXG5jb25zdCBTZWxlY3RIZWFkZXJDZWxsID0gZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgU2VsZWN0SGVhZGVyQ2VsbFByb3BzPigocHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IHRhYmxlLCByZWFkb25seSwgY2xhc3NOYW1lLCBzdHlsZSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfSB7Li4ucmVzdH0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctZnVsbFwiPlxuICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICBjaGVja2VkPXt0YWJsZS5nZXRJc0FsbFJvd3NTZWxlY3RlZCgpfVxuICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17KHZhbHVlKSA9PiB0YWJsZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQoISF2YWx1ZSl9XG4gICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuU2VsZWN0SGVhZGVyQ2VsbC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0SGVhZGVyQ2VsbFwiO1xuXG5leHBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsIH07XG4iLCAiaW1wb3J0ICogYXMgQ2hlY2tib3hQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jaGVja2JveFwiO1xuaW1wb3J0IHsgQ2hlY2sgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3ggPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q2hlY2tib3hQcmltaXRpdmUuUm9vdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXBlZXIgcHMtaC00IHBzLXctNCBwcy1zaHJpbmstMCBwcy1yb3VuZGVkLXNtIHBzLWJvcmRlciBwcy1ib3JkZXItcHJpbWFyeSBwcy1zaGFkb3cgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvciBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtdGV4dC1jdXJyZW50XCIpfT5cbiAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICA8L0NoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvcj5cbiAgPC9DaGVja2JveFByaW1pdGl2ZS5Sb290PlxuKSk7XG5DaGVja2JveC5kaXNwbGF5TmFtZSA9IENoZWNrYm94UHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IENoZWNrYm94IH07XG4iLCAiaW1wb3J0IHsgUm93IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuaW1wb3J0IHsgU2VsZWN0Q2VsbCB9IGZyb20gXCIuL1NlbGVjdENlbGxcIjtcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0Um93Q2VsbFByb3BzIHtcbiAgcm93OiBSb3c8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG59XG5cbmNvbnN0IFNlbGVjdFJvd0NlbGwgPSBmb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBTZWxlY3RSb3dDZWxsUHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgcm93LCByZWFkb25seSwgY2xhc3NOYW1lLCBzdHlsZSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0Q2VsbCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9IHN0eWxlPXtzdHlsZX0gey4uLnJlc3R9PlxuICAgICAgPENoZWNrYm94XG4gICAgICAgIGNoZWNrZWQ9e3Jvdy5nZXRJc1NlbGVjdGVkKCl9XG4gICAgICAgIGRpc2FibGVkPXshcm93LmdldENhblNlbGVjdCgpIHx8IHJlYWRvbmx5fVxuICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9e3Jvdy5nZXRUb2dnbGVTZWxlY3RlZEhhbmRsZXIoKX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3RDZWxsPlxuICApO1xufSk7XG5cblNlbGVjdFJvd0NlbGwuZGlzcGxheU5hbWUgPSBcIlNlbGVjdFJvd0NlbGxcIjtcblxuZXhwb3J0IHsgU2VsZWN0Um93Q2VsbCB9O1xuIiwgImltcG9ydCB7IHR5cGUgQ1NTUHJvcGVydGllcywgRGV0YWlsZWRIVE1MUHJvcHMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVDZWxsLCBUYWJsZUhlYWQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0Q2VsbFByb3BzIGV4dGVuZHMgUHJvcHNXaXRoQ2hpbGRyZW4sIERldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPHVua25vd24+LCB1bmtub3duPiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICBpc0hlYWRlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3RDZWxsKHByb3BzOiBTZWxlY3RDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCByZWYsIHN0eWxlLCBpc0hlYWRlciA9IGZhbHNlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgY29uc3Qgc2VsZWN0Q2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcC0wIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdy1mdWxsIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV0gcHMtbGVhZGluZy1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV1cIixcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNIZWFkZXIgPyAoXG4gICAgICAgIDxUYWJsZUhlYWRcbiAgICAgICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihzZWxlY3RDbGFzc2VzLCBcInBzLWgtMTAgcHMtYmctdGFibGUtaGVhZCBwcy16LTMwIHBzLXN0aWNreSBwcy10b3AtMCBwcy1sZWZ0LTBcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICApIDogKFxuICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgey4uLmZvcndhcmRlZFByb3BzfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oc2VsZWN0Q2xhc3NlcywgXCJwcy16LTEwIHBzLWgtWzM5cHhdXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgcmVmPXtyZWYgYXMgbmV2ZXJ9XG4gICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5pbnRlcmZhY2UgUG9wb3ZlckNlbGxDb250ZXh0VmFsdWUge1xuICBvcGVuOiBib29sZWFuO1xuICBzZXRPcGVuOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBQb3BvdmVyQ2VsbCA9ICh7IGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBQb3BvdmVyUHJpbWl0aXZlLlBvcG92ZXJQcm9wcykgPT4ge1xuICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IG9wZW4sIHNldE9wZW4gfX0+XG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5Sb290IG9wZW49e29wZW59IG9uT3BlbkNoYW5nZT17c2V0T3Blbn0gey4uLnByb3BzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Qb3BvdmVyUHJpbWl0aXZlLlJvb3Q+XG4gICAgPC9Qb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuUG9wb3ZlckNlbGwuZGlzcGxheU5hbWUgPSBcIlBvcG92ZXJDZWxsXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbFRyaWdnZXJQcm9wcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiB7XG4gIG9uRG91YmxlQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj4sIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzPihcbiAgKHsgY2hpbGRyZW4sIG9uRG91YmxlQ2xpY2ssIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgLy8gY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcbiAgICAvLyBjb25zdCBbaXNGb2N1c2VkLCBzZXRJc0ZvY3VzZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuXG4gICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgIC8vIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICBjb25zdCBoYW5kbGVEb2N1bWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgLy8gICAgIGlmICh0cmlnZ2VyUmVmLmN1cnJlbnQgJiYgIXRyaWdnZXJSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgLy8gICAgICAgLy8gY29uc29sZS5sb2coXCJPdXRzaWRlIGNsaWNrIC0gcmVtb3ZpbmcgZm9jdXNcIik7XG4gICAgLy8gICAgICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfTtcblxuICAgIC8vICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAvLyB9LCBbXSk7XG5cbiAgICAvLyBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgLy8gICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgLy8gICBzZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gICAgLy8gICBjb250ZXh0Py5zZXRPcGVuKHRydWUpO1xuXG4gICAgLy8gICBpZiAoZS5kZXRhaWwgPT09IDIgJiYgb25Eb3VibGVDbGljaykge1xuICAgIC8vICAgICBvbkRvdWJsZUNsaWNrKCk7XG4gICAgLy8gICB9XG4gICAgLy8gfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgICAgIHJlZj17KG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gXCJmdW5jdGlvblwiKSByZWYobm9kZSk7XG4gICAgICAgICAgZWxzZSBpZiAocmVmKSByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPIG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZFxuICAgICAgICAgIHRyaWdnZXJSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH19XG4gICAgICAgIC8vIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAvLyBkYXRhLWZvY3VzPXtpc0ZvY3VzZWQudG9TdHJpbmcoKX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcInctZnVsbCBoLWZ1bGwgY3Vyc29yLXBvaW50ZXJcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj5cbiAgICApO1xuICB9LFxuKTtcblBvcG92ZXJDZWxsVHJpZ2dlci5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxUcmlnZ2VyXCI7XG5cbmNvbnN0IFBvcG92ZXJDZWxsQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yIHBzLXotNTAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMlwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgLy8gd2UgYXJlIGhhbmRsaW5nIHRoaXMgb3Vyc2VsdmVzLCBkbyBub3QgbGV0IHJhZGl4IHRha2Ugb3ZlclxuICAgICAgb25Fc2NhcGVLZXlEb3duPXsoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNlbGxDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUG9wb3ZlckFjdGlvbnMoYWN0aW9uczoge1xuICBvblNhdmU/OiAoKSA9PiBib29sZWFuIHwgdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25TYXZlKSB7XG4gICAgICBhY3Rpb25zLm9uU2F2ZSgpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH0sIFthY3Rpb25zLm9uU2F2ZSwgY29udGV4dF0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWN0aW9ucy5yZWFkb25seSkge1xuICAgICAgY29udGV4dD8uc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICAgIGlmIChhY3Rpb25zLm9uQ2FuY2VsKSB7XG4gICAgICBhY3Rpb25zLm9uQ2FuY2VsKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25DYW5jZWwsIGNvbnRleHRdKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIC8vIGNoZWNrIGlmIGVudGVyIGlzIHByZXNzZWQgYW5kIHByZXNzZWQgd2l0aG91dCBzaGlmdFxuICAgICAgaWYgKChldmVudC5rZXkgPT09IFwiRW50ZXJcIiB8fCBldmVudC5rZXkgPT09IFwiUmV0dXJuXCIpICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICBoYW5kbGVTYXZlKCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICBoYW5kbGVDYW5jZWwoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gIH0sIFtoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWxdKTtcblxuICByZXR1cm4geyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfTtcbn1cblxuZXhwb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsVHJpZ2dlciwgUG9wb3ZlckNlbGxDb250ZW50IH07XG4iLCAiaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsQ29udGVudCwgUG9wb3ZlckNlbGxUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZWFibGVDZWxsUHJvcHMge1xuICBjZWxsQ29tcG9uZW50OiBSZWFjdE5vZGU7XG4gIGlucHV0Q29tcG9uZW50OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBXcml0ZWFibGVDZWxsKHByb3BzOiBXcml0ZWFibGVDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjZWxsQ29tcG9uZW50LCBpbnB1dENvbXBvbmVudCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGw+XG4gICAgICA8UG9wb3ZlckNlbGxUcmlnZ2VyIGFzQ2hpbGQ+e2NlbGxDb21wb25lbnR9PC9Qb3BvdmVyQ2VsbFRyaWdnZXI+XG4gICAgICA8UG9wb3ZlckNlbGxDb250ZW50XG4gICAgICAgIGFsaWduPVwic3RhcnRcIlxuICAgICAgICBhbGlnbk9mZnNldD17LTF9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1yb3VuZGVkLW5vbmUgcHMtYmctbXV0ZWRcIixcbiAgICAgICAgICBcInBzLXAtMCBwcy16LTMwIHBzLWdhcC0wIHBzLWJvcmRlci1wcmltYXJ5XCIsXG4gICAgICAgICAgXCJwcy13LVtjYWxjKHZhcigtLXJhZGl4LXBvcG92ZXItdHJpZ2dlci13aWR0aClfK18xcHgpXSBwcy1tYXgtdy03MiBwcy1taW4tdy1bMjAwcHhdXCIsXG4gICAgICAgICl9XG4gICAgICAgIHNpZGVPZmZzZXQ9ey00MH1cbiAgICAgID5cbiAgICAgICAge2lucHV0Q29tcG9uZW50fVxuICAgICAgPC9Qb3BvdmVyQ2VsbENvbnRlbnQ+XG4gICAgPC9Qb3BvdmVyQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQge1xuICBjbG9zZXN0Q2VudGVyLFxuICBEbmRDb250ZXh0LFxuICB0eXBlIERyYWdFbmRFdmVudCxcbiAgRHJhZ092ZXJsYXksXG4gIHR5cGUgRHJhZ1N0YXJ0RXZlbnQsXG4gIEtleWJvYXJkU2Vuc29yLFxuICBQb2ludGVyU2Vuc29yLFxuICB0eXBlIFVuaXF1ZUlkZW50aWZpZXIsXG4gIHVzZVNlbnNvcixcbiAgdXNlU2Vuc29ycyxcbn0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7XG4gIGFycmF5TW92ZSxcbiAgU29ydGFibGVDb250ZXh0LFxuICBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMsXG4gIHVzZVNvcnRhYmxlLFxuICB2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3ksXG59IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgQ2hldnJvbkRvd24sIENoZXZyb25SaWdodCwgR3JpcFZlcnRpY2FsLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZU51bWJlciB9IGZyb20gXCJtb3Rpb24tcGx1cy9yZWFjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbkZpbHRlciwgRmlsdGVyR3JvdXAsIEZpbHRlck9wZXJhdG9yLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5pbXBvcnQgeyBTZWxlY3QsIFNlbGVjdENvbnRlbnQsIFNlbGVjdEl0ZW0sIFNlbGVjdFRyaWdnZXIsIFNlbGVjdFZhbHVlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc2VsZWN0XCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNvcnRhYmxlIGZpbHRlciBpdGVtXG5jb25zdCBTb3J0YWJsZUZpbHRlckl0ZW0gPSAoe1xuICBkbmRJdGVtSWQsXG4gIGZpbHRlcixcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBwYXJlbnREbmRJZCxcbiAgaXNMYXN0LFxuICB0YWJsZSxcbn06IHtcbiAgZG5kSXRlbUlkOiBVbmlxdWVJZGVudGlmaWVyO1xuICBmaWx0ZXI6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBvbkRlbGV0ZTogKCkgPT4gdm9pZDtcbiAgcGFyZW50RG5kSWQ6IFVuaXF1ZUlkZW50aWZpZXI7XG4gIGlzTGFzdDogYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xufSkgPT4ge1xuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGRuZEl0ZW1JZCxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiBmaWx0ZXIua2luZCxcbiAgICAgIHBhcmVudElkOiBwYXJlbnREbmRJZCxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIG9wYWNpdHk6IGlzRHJhZ2dpbmcgPyAwLjUgOiAxLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3NldE5vZGVSZWZ9IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtZ2FwLTJcIj5cbiAgICAgIHtmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIiA/IChcbiAgICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIGlzTGFzdD17aXNMYXN0fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxGaWx0ZXJHcm91cFxuICAgICAgICAgIGRuZElkPXtkbmRJdGVtSWR9XG4gICAgICAgICAgZ3JvdXA9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGlzTGFzdD17aXNMYXN0fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgc2luZ2xlIGZpbHRlciBjb25kaXRpb25cbmNvbnN0IEZpbHRlckNvbmRpdGlvbiA9ICh7XG4gIGZpbHRlcixcbiAgb25VcGRhdGUsXG4gIG9uRGVsZXRlLFxuICBkcmFnSGFuZGxlUHJvcHMsXG4gIGlzTGFzdCxcbiAgdGFibGUsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlcikgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgaXNMYXN0OiBib29sZWFuO1xuICB0YWJsZTogVGFibGU7XG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZUNvbHVtbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIGNvbHVtbjogdmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlcmF0b3JDaGFuZ2UgPSAodmFsdWU6IEZpbHRlck9wZXJhdG9yKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIG9wZXJhdG9yOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCB2YWx1ZTogZS50YXJnZXQudmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQWZ0ZXJDaGFuZ2UgPSAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgYWZ0ZXI6IHZhbHVlIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXZcbiAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1nYXAtMiBwcy13LWZ1bGxcIlxuICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiPlxuICAgICAgICAgIDxHcmlwVmVydGljYWwgY2xhc3NOYW1lPVwicHMtdGV4dC1ncmF5LTUwMFwiIHNpemU9ezE2fSAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIuY29sdW1ufSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVDb2x1bW5DaGFuZ2V9PlxuICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjggcHMtdGV4dC14c1wiPlxuICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNvbHVtblwiIC8+XG4gICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAge09iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiAoXG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIGtleT17Y29sdW1ufSB2YWx1ZT17Y29sdW1ufT5cbiAgICAgICAgICAgICAgICB7Y29sdW1ufVxuICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgIDxTZWxlY3QgdmFsdWU9e2ZpbHRlci5vcGVyYXRvcn0gb25WYWx1ZUNoYW5nZT17KHZhbHVlKSA9PiBoYW5kbGVPcGVyYXRvckNoYW5nZSh2YWx1ZSBhcyBGaWx0ZXJPcGVyYXRvcil9PlxuICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjAgcHMtdGV4dC14c1wiPlxuICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiT3BlcmF0b3JcIiAvPlxuICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPVwiPj08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIiE9XCI+IT08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj5cIj4mZ3Q7PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+PVwiPiZndDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8XCI+Jmx0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPD1cIj4mbHQ7PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaW5cIj5pbjwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm90IGluXCI+bm90IGluPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpc1wiPmlzPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpcyBub3RcIj5pcyBub3Q8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxpa2VcIj5saWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgbGlrZVwiPm5vdCBsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpbGlrZVwiPmlsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgaWxpa2VcIj5ub3QgaWxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICA8L1NlbGVjdD5cblxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICB2YWx1ZT17KGZpbHRlci52YWx1ZSBhcyBzdHJpbmcpIHx8IFwiXCJ9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVZhbHVlQ2hhbmdlfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwidmFsdWVcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXctMjQgcHMtdGV4dC14c1wiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgdmFsdWU9e2ZpbHRlci5hZnRlcn1cbiAgICAgICAgICBvblZhbHVlQ2hhbmdlPXsodmFsdWUpID0+IGhhbmRsZUFmdGVyQ2hhbmdlKHZhbHVlIGFzIFwiYW5kXCIgfCBcIm9yXCIpfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0xhc3R9XG4gICAgICAgID5cbiAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy13LTIwIHBzLXRleHQteHNcIj5cbiAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSAvPlxuICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiYW5kXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPkFORDwvZGl2PlxuICAgICAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJvclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5PUjwvZGl2PlxuICAgICAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwieHNcIiBvbkNsaWNrPXtvbkRlbGV0ZX0+XG4gICAgICAgICAgPFggc2l6ZT17MTR9IC8+XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tb3Rpb24uZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIGZpbHRlciBncm91cCAoQU5EL09SKVxuY29uc3QgRmlsdGVyR3JvdXAgPSAoe1xuICBkbmRJZCxcbiAgZ3JvdXAsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICBpc1Jvb3QgPSBmYWxzZSxcbiAgaXNMYXN0ID0gZmFsc2UsXG4gIHRhYmxlLFxufToge1xuICBkbmRJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgZ3JvdXA6IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRHcm91cDogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIGlzUm9vdD86IGJvb2xlYW47XG4gIGlzTGFzdD86IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbn0pID0+IHtcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFthY3RpdmVEcmFnSWQsIHNldEFjdGl2ZURyYWdJZF0gPSB1c2VTdGF0ZTxVbmlxdWVJZGVudGlmaWVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZmlsdGVycyA9IGdyb3VwLmZpbHRlcnM7XG5cbiAgY29uc3Qgc3RhYmxlSWRNYXAgPSB1c2VSZWYobmV3IFdlYWtNYXA8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXAsIFVuaXF1ZUlkZW50aWZpZXI+KCkpLmN1cnJlbnQ7XG4gIGNvbnN0IGdldFN0YWJsZUlkRm9ySXRlbSA9IHVzZUNhbGxiYWNrKFxuICAgIChpdGVtOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCk6IFVuaXF1ZUlkZW50aWZpZXIgPT4ge1xuICAgICAgaWYgKCFzdGFibGVJZE1hcC5oYXMoaXRlbSkpIHtcbiAgICAgICAgc3RhYmxlSWRNYXAuc2V0KGl0ZW0sIHV1aWR2NCgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGFibGVJZE1hcC5nZXQoaXRlbSkhO1xuICAgIH0sXG4gICAgW3N0YWJsZUlkTWFwXSxcbiAgKTtcblxuICBjb25zdCBzb3J0YWJsZUl0ZW1JZHMgPSB1c2VNZW1vKCgpID0+IGZpbHRlcnMubWFwKGdldFN0YWJsZUlkRm9ySXRlbSksIFtmaWx0ZXJzLCBnZXRTdGFibGVJZEZvckl0ZW1dKTtcblxuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhcbiAgICB1c2VTZW5zb3IoUG9pbnRlclNlbnNvciwge1xuICAgICAgYWN0aXZhdGlvbkNvbnN0cmFpbnQ6IHtcbiAgICAgICAgZGlzdGFuY2U6IDgsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHVzZVNlbnNvcihLZXlib2FyZFNlbnNvciwge1xuICAgICAgY29vcmRpbmF0ZUdldHRlcjogc29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzLFxuICAgIH0pLFxuICApO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIGZpcnN0IGZpbHRlciB3aXRoIHRoZSBmaXJzdCBjb2x1bW5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNSb290ICYmIGdyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBmaXJzdEZpbHRlciA9IGdyb3VwLmZpbHRlcnNbMF07XG4gICAgICBpZiAoZmlyc3RGaWx0ZXI/LmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIgJiYgIWZpcnN0RmlsdGVyLmNvbHVtbikge1xuICAgICAgICBjb25zdCBmaXJzdENvbHVtbiA9IE9iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpWzBdID8/IFwiXCI7IC8vIFNlbGVjdCBmaXJzdCBjb2x1bW5cbiAgICAgICAgb25VcGRhdGUoe1xuICAgICAgICAgIC4uLmdyb3VwLFxuICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLi4uZmlyc3RGaWx0ZXIsXG4gICAgICAgICAgICAgIGNvbHVtbjogZmlyc3RDb2x1bW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzUm9vdCwgdGFibGUuY29sdW1uc10pO1xuXG4gIGNvbnN0IGhhbmRsZUFkZEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXI6IENvbHVtbkZpbHRlciA9IHtcbiAgICAgIGtpbmQ6IFwiQ29sdW1uRmlsdGVyXCIsXG4gICAgICBjb2x1bW46IE9iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpWzBdID8/IFwiXCIsIC8vIEFsd2F5cyBzZWxlY3QgZmlyc3QgY29sXG4gICAgICBvcGVyYXRvcjogXCI9XCIsXG4gICAgICB2YWx1ZTogXCJcIixcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZmlsdGVycywgbmV3RmlsdGVyXSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBZGRHcm91cCA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdHcm91cDogRmlsdGVyR3JvdXAgPSB7XG4gICAgICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZmlsdGVycywgbmV3R3JvdXBdIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUZpbHRlciA9IChpbmRleDogbnVtYmVyLCB1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZmlsdGVyc107XG4gICAgbmV3RmlsdGVyc1tpbmRleF0gPSB1cGRhdGVkRmlsdGVyO1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBkZWxldGVGaWx0ZXIgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZmlsdGVyc107XG4gICAgbmV3RmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSAoZXZlbnQ6IERyYWdTdGFydEV2ZW50KSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKGV2ZW50LmFjdGl2ZS5pZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IChldmVudDogRHJhZ0VuZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBhY3RpdmUsIG92ZXIgfSA9IGV2ZW50O1xuXG4gICAgaWYgKG92ZXIgJiYgYWN0aXZlLmlkICE9PSBvdmVyLmlkKSB7XG4gICAgICBjb25zdCBvbGRJbmRleCA9IGZpbHRlcnMuZmluZEluZGV4KChpdGVtKSA9PiBnZXRTdGFibGVJZEZvckl0ZW0oaXRlbSkgPT09IGFjdGl2ZS5pZCk7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IGZpbHRlcnMuZmluZEluZGV4KChpdGVtKSA9PiBnZXRTdGFibGVJZEZvckl0ZW0oaXRlbSkgPT09IG92ZXIuaWQpO1xuXG4gICAgICBpZiAob2xkSW5kZXggIT09IC0xICYmIG5ld0luZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCBuZXdGaWx0ZXJzID0gYXJyYXlNb3ZlKGZpbHRlcnMsIG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0QWN0aXZlRHJhZ0lkKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckdyb3VwQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHJldHVybiBudWxsO1xuICAgIGlmICghZ3JvdXAuZmlsdGVycyB8fCAhZ3JvdXAuZmlsdGVycy5sZW5ndGgpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1yZWxhdGl2ZSBwcy1nYXAtMlwiLCBpc1Jvb3QgPyBcIlwiIDogXCJwcy1wYi0yXCIpfT5cbiAgICAgICAgICA8RG5kQ29udGV4dFxuICAgICAgICAgICAgc2Vuc29ycz17c2Vuc29yc31cbiAgICAgICAgICAgIGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn1cbiAgICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgICBvbkRyYWdFbmQ9e2hhbmRsZURyYWdFbmR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNvcnRhYmxlQ29udGV4dCBpdGVtcz17c29ydGFibGVJdGVtSWRzfSBzdHJhdGVneT17dmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5fT5cbiAgICAgICAgICAgICAge2ZpbHRlcnMubWFwKChmaWx0ZXIsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgPFNvcnRhYmxlRmlsdGVySXRlbVxuICAgICAgICAgICAgICAgICAga2V5PXtnZXRTdGFibGVJZEZvckl0ZW0oZmlsdGVyKX1cbiAgICAgICAgICAgICAgICAgIGRuZEl0ZW1JZD17Z2V0U3RhYmxlSWRGb3JJdGVtKGZpbHRlcil9XG4gICAgICAgICAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgIG9uVXBkYXRlPXsodXBkYXRlZEZpbHRlcikgPT4gdXBkYXRlRmlsdGVyKGluZGV4LCB1cGRhdGVkRmlsdGVyKX1cbiAgICAgICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiBkZWxldGVGaWx0ZXIoaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgcGFyZW50RG5kSWQ9e2RuZElkfVxuICAgICAgICAgICAgICAgICAgaXNMYXN0PXtpbmRleCA9PT0gZmlsdGVycy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG5cbiAgICAgICAgICAgIHtjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxEcmFnT3ZlcmxheT5cbiAgICAgICAgICAgICAgICB7YWN0aXZlRHJhZ0lkID8gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1vcGFjaXR5LTgwXCI+XG4gICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUZpbHRlciA9IGZpbHRlcnMuZmluZCgoZikgPT4gZ2V0U3RhYmxlSWRGb3JJdGVtKGYpID09PSBhY3RpdmVEcmFnSWQpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlRmlsdGVyKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3RpdmVGaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyPXthY3RpdmVGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGU9eygpID0+IHt9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xhc3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJHcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkbmRJZD17YWN0aXZlRHJhZ0lkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD17YWN0aXZlRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvblVwZGF0ZT17KCkgPT4ge319XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7fX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMYXN0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9EcmFnT3ZlcmxheT4sXG4gICAgICAgICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvRG5kQ29udGV4dD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1wdC0yIHBzLXctZml0IHBzLWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICB2YWx1ZT17Z3JvdXAuYWZ0ZXJ9XG4gICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9eyh2YWx1ZSkgPT4gb25VcGRhdGUoeyAuLi5ncm91cCwgYWZ0ZXI6IHZhbHVlIGFzIFwiYW5kXCIgfCBcIm9yXCIgfSl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xhc3R9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLWgtOCBwcy1yb3VuZGVkLW1kIHBzLXB4LTMgcHMtdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSAvPlxuICAgICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiYW5kXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5BTkQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJvclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+T1I8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgIDwvU2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdlxuICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsIHBzLWdhcC0yXCIsIGlzUm9vdCA/IFwiXCIgOiBcInBzLWJvcmRlci1sLTQgcHMtcGwtMlwiKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtdy1mdWxsIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCIgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9PlxuICAgICAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uUmlnaHQgc2l6ZT17MTZ9IC8+fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBZGRGaWx0ZXJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBvdmVyZmxvdy1oaWRkZW4gcHMtdHJhbnNpdGlvbi1hbGxcIil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFkZCBGaWx0ZXJcbiAgICAgICAgICAgICAge2ZpbHRlcnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPEJhZGdlIGNsYXNzTmFtZT1cInBzLXRyYW5zaXRpb24tYWxsXCI+XG4gICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PntmaWx0ZXJzLmxlbmd0aH08L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17aGFuZGxlQWRkR3JvdXB9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xXCI+XG4gICAgICAgICAgICAgIEFkZCBHcm91cFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICAgICAgPFggc2l6ZT17MTR9IC8+XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKGlzUm9vdCA/IFwiXCIgOiBcInBzLW1sLTZcIil9PntyZW5kZXJHcm91cENvbnRlbnQoKX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIE1haW4gY29tcG9uZW50XG5leHBvcnQgZnVuY3Rpb24gRmlsdGVyVHJlZSh7XG4gIGZpbHRlcixcbiAgc2V0RmlsdGVyLFxuICBzZXRBcHBsaWVkRmlsdGVyLFxuICB0YWJsZSxcbn06IHtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbiAgc2V0RmlsdGVyOiAodXBkYXRlZEZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIHNldEFwcGxpZWRGaWx0ZXI6IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICB0YWJsZTogVGFibGU7XG59KSB7XG4gIGNvbnN0IHJvb3REbmRJZCA9IHVzZU1lbW8oKCkgPT4gdXVpZHY0KCksIFtdKTtcblxuICBjb25zdCBoYW5kbGVBcHBseUZpbHRlcnMgPSAoKSA9PiB7XG4gICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC00XCI+XG4gICAgICA8RmlsdGVyR3JvdXBcbiAgICAgICAgZG5kSWQ9e3Jvb3REbmRJZH1cbiAgICAgICAgZ3JvdXA9e2ZpbHRlcn1cbiAgICAgICAgb25VcGRhdGU9e3NldEZpbHRlcn1cbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fVxuICAgICAgICBpc1Jvb3Q9e3RydWV9XG4gICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgIC8+XG5cbiAgICAgIDxCdXR0b24gdmFyaWFudD1cImRlZmF1bHRcIiBzaXplPVwic21cIiBjbGFzc05hbWU9XCJwcy1zZWxmLWVuZFwiIG9uQ2xpY2s9e2hhbmRsZUFwcGx5RmlsdGVyc30+XG4gICAgICAgIEFwcGx5IEZpbHRlcnNcbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJpbnB1dFwiPj4oXG4gICh7IGNsYXNzTmFtZSwgdHlwZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTEgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZpbGU6cHMtYm9yZGVyLTAgZmlsZTpwcy1iZy10cmFuc3BhcmVudCBmaWxlOnBzLXRleHQtc20gZmlsZTpwcy1mb250LW1lZGl1bSBmaWxlOnBzLXRleHQtZm9yZWdyb3VuZCBwbGFjZWhvbGRlcjpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTBcIixcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuSW5wdXQuZGlzcGxheU5hbWUgPSBcIklucHV0XCI7XG5cbmV4cG9ydCB7IElucHV0IH07XG4iLCAiaW1wb3J0ICogYXMgU2VsZWN0UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvbkRvd24sIENoZXZyb25VcCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBTZWxlY3QgPSBTZWxlY3RQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgU2VsZWN0R3JvdXAgPSBTZWxlY3RQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IFNlbGVjdFZhbHVlID0gU2VsZWN0UHJpbWl0aXZlLlZhbHVlO1xuXG5jb25zdCBTZWxlY3RUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMiBwcy10ZXh0LXNtIHBzLXNoYWRvdy1zbSBwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRhdGEtW3BsYWNlaG9sZGVyXTpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMSBmb2N1czpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyY+c3Bhbl06cHMtbGluZS1jbGFtcC0xXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1vcGFjaXR5LTUwXCIgLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5JY29uPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuKSk7XG5TZWxlY3RUcmlnZ2VyLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbFVwQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uVXAgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgcG9zaXRpb24gPSBcInBvcHBlclwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcmVsYXRpdmUgcHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICBcImRhdGEtW3NpZGU9Ym90dG9tXTpwcy10cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06cHMtLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06cHMtdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06cHMtLXRyYW5zbGF0ZS15LTFcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXAtMVwiLFxuICAgICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgICBcInBzLWgtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHBzLXctZnVsbCBwcy1taW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXVwiLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydD5cbiAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5TZWxlY3RDb250ZW50LmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5TZWxlY3RMYWJlbC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtdy1mdWxsIHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC0yIHBzLXByLTggcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLXJpZ2h0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD57Y2hpbGRyZW59PC9TZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4pKTtcblNlbGVjdEl0ZW0uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5TZWxlY3RTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBTZWxlY3QsXG4gIFNlbGVjdEdyb3VwLFxuICBTZWxlY3RWYWx1ZSxcbiAgU2VsZWN0VHJpZ2dlcixcbiAgU2VsZWN0Q29udGVudCxcbiAgU2VsZWN0TGFiZWwsXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdFNlcGFyYXRvcixcbiAgU2VsZWN0U2Nyb2xsVXBCdXR0b24sXG4gIFNlbGVjdFNjcm9sbERvd25CdXR0b24sXG59O1xuIiwgImltcG9ydCB7IERuZENvbnRleHQsIHR5cGUgRHJhZ0VuZEV2ZW50LCBNb3VzZVNlbnNvciwgdXNlU2Vuc29yLCB1c2VTZW5zb3JzIH0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7IGFycmF5TW92ZSwgaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3ksIFNvcnRhYmxlQ29udGV4dCwgdXNlU29ydGFibGUgfSBmcm9tIFwiQGRuZC1raXQvc29ydGFibGVcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCJAZG5kLWtpdC91dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgQWNjZXNzb3JLZXlDb2x1bW5EZWZCYXNlLCBSb3dTZWxlY3Rpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29sdW1uUGlubmluZ1N0YXRlLFxuICB0eXBlIENvbHVtblNpemluZ1N0YXRlLFxuICBnZXRDb3JlUm93TW9kZWwsXG4gIHR5cGUgSGVhZGVyLFxuICB0eXBlIE9uQ2hhbmdlRm4sXG4gIHR5cGUgUGFnaW5hdGlvblN0YXRlLFxuICB0eXBlIFNvcnRpbmdTdGF0ZSxcbiAgdHlwZSBUYWJsZSBhcyBSZWFjdFRhYmxlLFxuICB1c2VSZWFjdFRhYmxlLFxufSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBSZWFjdFRhYmxlRGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzXCI7XG5pbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCB7XG4gIENvbXBvbmVudFR5cGUsXG4gIHR5cGUgQ1NTUHJvcGVydGllcyxcbiAgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbixcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3NrZWxldG9uXCI7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZCwgVGFibGVIZWFkZXIsIFRhYmxlUm93IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBEYXRhR3JpZEhlYWRlciB9IGZyb20gXCIuL0RhdGFHcmlkSGVhZGVyXCI7XG5pbXBvcnQgeyBEYXRhR3JpZExvYWRpbmdCYXIgfSBmcm9tIFwiLi9EYXRhR3JpZExvYWRpbmdCYXJcIjtcbmltcG9ydCB7IERhdGFHcmlkUGFnaW5hdGlvbiB9IGZyb20gXCIuL0RhdGFHcmlkUGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyB9IGZyb20gXCIuL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nXCI7XG5cbi8vIEFkZCB0aGlzIG5ldyBjb21wb25lbnQgZm9yIGRyYWdnYWJsZSBoZWFkZXIgY2VsbHNcbnR5cGUgRHJhZ2dhYmxlSGVhZGVyQ2VsbFByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgaGVhZGVyOiBIZWFkZXI8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBzdHlsZTogQ1NTUHJvcGVydGllcztcbiAgdGFibGU6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+Pjtcbn0+O1xuXG5jb25zdCBEcmFnZ2FibGVIZWFkZXJDZWxsID0gKHByb3BzOiBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBoZWFkZXIsIHN0eWxlOiBjb21tb25TdHlsZSB9ID0gcHJvcHM7XG4gIGNvbnN0IGRpc2FibGVEcmFnZ2luZyA9IFwiZGlzYWJsZURyYWdnaW5nXCIgaW4gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWY7XG5cbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgc2V0Tm9kZVJlZiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBoZWFkZXIuaWQsXG4gIH0pO1xuXG4gIGNvbnN0IGRyYWdTdHlsZSA9IHtcbiAgICAuLi5jb21tb25TdHlsZSxcbiAgICBjdXJzb3I6IFwiZ3JhYlwiLFxuICAgIHRvdWNoQWN0aW9uOiBcIm5vbmVcIixcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICB9IGFzIENTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3QgY29tbW9uQ2xhc3MgPSBjbihjbGFzc05hbWUsIFwicHMtc2VsZWN0LW5vbmUgcHMtdG91Y2gtbm9uZSBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctdGFibGUtaGVhZFwiKTtcbiAgY29uc3QgZHJhZ0NsYXNzID0gY24oY29tbW9uQ2xhc3MsIGlzRHJhZ2dpbmcgJiYgXCIhcHMtei01MCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdmlvbGV0LTUwMFwiKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUhlYWRcbiAgICAgIHJlZj17c2V0Tm9kZVJlZn1cbiAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgICAgey4uLmxpc3RlbmVyc31cbiAgICAgIHN0eWxlPXtkaXNhYmxlRHJhZ2dpbmcgPyBjb21tb25TdHlsZSA6IGRyYWdTdHlsZX1cbiAgICAgIGNsYXNzTmFtZT17ZGlzYWJsZURyYWdnaW5nID8gY29tbW9uQ2xhc3MgOiBkcmFnQ2xhc3N9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9UYWJsZUhlYWQ+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUHJvcHMge1xuICBjb2x1bW5EZWZzOiBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+W107XG4gIGdldEJlZm9yZVJvd3M/KHRoaXM6IHZvaWQsIHRhYmxlOiBSZWFjdFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pik6IFJlYWN0Tm9kZTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW47XG4gIG9uUGFnaW5hdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+O1xuICBvblJvd1NlbGVjdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxSb3dTZWxlY3Rpb25TdGF0ZT47XG4gIG9uU29ydGluZ0NoYW5nZT86IE9uQ2hhbmdlRm48U29ydE9yZGVySXRlbVtdPjtcbiAgcGFnZUNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHBhZ2luYXRpb25TdGF0ZTogUGFnaW5hdGlvblN0YXRlO1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICByb3dTZWxlY3Rpb25TdGF0ZTogUm93U2VsZWN0aW9uU3RhdGU7XG4gIHNvcnRpbmdTdGF0ZT86IFNvcnRPcmRlckl0ZW1bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkKHByb3BzOiBEYXRhR3JpZFByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjb2x1bW5EZWZzLFxuICAgIGdldEJlZm9yZVJvd3MsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzUHJvY2Vzc2luZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlLFxuICAgIHBhZ2VDb3VudCxcbiAgICBwYWdpbmF0aW9uU3RhdGUsXG4gICAgcm93cyxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBzb3J0aW5nU3RhdGUsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBbY29sdW1uT3JkZXIsIHNldENvbHVtbk9yZGVyXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XG4gIGNvbnN0IFtjb2x1bW5QaW5uaW5nLCBzZXRDb2x1bW5QaW5uaW5nXSA9IHVzZVN0YXRlPENvbHVtblBpbm5pbmdTdGF0ZT4oeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICBjb25zdCBbY29sdW1uU2l6aW5nLCBzZXRDb2x1bW5TaXppbmddID0gdXNlU3RhdGU8Q29sdW1uU2l6aW5nU3RhdGU+KHt9KTtcbiAgY29uc3Qgc29ydGluZyA9IHVzZU1lbW8oKCkgPT4gdG9Tb3J0aW5nU3RhdGUoc29ydGluZ1N0YXRlKSwgW3NvcnRpbmdTdGF0ZV0pO1xuICBjb25zdCBkaXNwbGF5TG9hZGVyID0gaXNMb2FkaW5nIHx8IGlzUHJvY2Vzc2luZztcblxuICAvLyBSZXNldCBjb2x1bW4gb3JkZXIsIHBpbm5pbmcsIGFuZCBzaXppbmcgd2hlbiBjb2x1bW5EZWZzIGNoYW5nZSAod2hpY2ggaGFwcGVucyB3aGVuIHRhYmxlIGNoYW5nZXMpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Q29sdW1uT3JkZXIoY29sdW1uRGVmcy5tYXAoKHsgYWNjZXNzb3JLZXkgfSkgPT4gYWNjZXNzb3JLZXkpKTtcbiAgICBzZXRDb2x1bW5QaW5uaW5nKHsgbGVmdDogW1wiX19wc19zZWxlY3RcIl0sIHJpZ2h0OiBbXSB9KTtcbiAgICBzZXRDb2x1bW5TaXppbmcoe30pO1xuICB9LCBbY29sdW1uRGVmc10pO1xuXG4gIC8vIGhhbmRsZXMgbW92aW5nIGFuZCByZS1vcmRlcmluZyBvZiB0aGUgY29sdW1ucyBhbmQgc3RhdGVcbiAgZnVuY3Rpb24gaGFuZGxlRHJhZ0VuZCh7IGFjdGl2ZSwgb3ZlciB9OiBEcmFnRW5kRXZlbnQpIHtcbiAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgIHNldENvbHVtbk9yZGVyKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IG9yZGVyLmluZGV4T2YoYWN0aXZlLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IG92ZXJJbmRleCA9IG9yZGVyLmluZGV4T2Yob3Zlci5pZCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4gYXJyYXlNb3ZlKG9yZGVyLCBhY3RpdmVJbmRleCwgb3ZlckluZGV4KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbmZpZ3VyZSB0aGUgbW91c2Ugc2Vuc29yIGZvciBkcmFnIGFuZCBkcm9wXG4gIGNvbnN0IG1vdXNlU2Vuc29yID0gdXNlU2Vuc29yKE1vdXNlU2Vuc29yLCB7XG4gICAgLy8gUmVxdWlyZSB0aGUgbW91c2UgdG8gbW92ZSBieSAxMCBwaXhlbHMgYmVmb3JlIGFjdGl2YXRpbmdcbiAgICBhY3RpdmF0aW9uQ29uc3RyYWludDoge1xuICAgICAgZGlzdGFuY2U6IDEwLFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhtb3VzZVNlbnNvcik7XG5cbiAgY29uc3QgdGFibGUgPSB1c2VSZWFjdFRhYmxlKHtcbiAgICBjb2x1bW5SZXNpemVNb2RlOiBcIm9uQ2hhbmdlXCIsXG4gICAgY29sdW1uczogY29sdW1uRGVmcyxcbiAgICBkYXRhOiByb3dzLFxuICAgIGRlZmF1bHRDb2x1bW46IHsgc2l6ZTogMjAwLCBtaW5TaXplOiA1MCwgbWF4U2l6ZTogNTAwIH0sXG4gICAgZW5hYmxlQ29sdW1uUGlubmluZzogdHJ1ZSxcbiAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcbiAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXG4gICAgZW5hYmxlU29ydGluZzogQm9vbGVhbihvblNvcnRpbmdDaGFuZ2UgJiYgc29ydGluZ1N0YXRlKSxcbiAgICBnZXRDb3JlUm93TW9kZWw6IGdldENvcmVSb3dNb2RlbCgpLFxuICAgIGdldFJvd0lkOiAoeyBfX3BzX3Jvd2lkIH0pID0+IF9fcHNfcm93aWQgYXMgc3RyaW5nLFxuICAgIG1hbnVhbFBhZ2luYXRpb246IHRydWUsXG4gICAgbWFudWFsU29ydGluZzogdHJ1ZSxcbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlOiBzZXRDb2x1bW5PcmRlcixcbiAgICBvbkNvbHVtblBpbm5pbmdDaGFuZ2U6IHNldENvbHVtblBpbm5pbmcsXG4gICAgb25Db2x1bW5TaXppbmdDaGFuZ2U6IHNldENvbHVtblNpemluZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlOiAodXBkYXRlck9yVmFsdWUpID0+XG4gICAgICBvblNvcnRpbmdDaGFuZ2U/Ligob2xkKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHVwZGF0ZXJPclZhbHVlID0gdXBkYXRlck9yVmFsdWUodG9Tb3J0aW5nU3RhdGUob2xkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Tb3J0T3JkZXJJdGVtcyh1cGRhdGVyT3JWYWx1ZSk7XG4gICAgICB9KSxcbiAgICBwYWdlQ291bnQsXG4gICAgc3RhdGU6IHtcbiAgICAgIGNvbHVtbk9yZGVyLFxuICAgICAgY29sdW1uUGlubmluZyxcbiAgICAgIGNvbHVtblNpemluZyxcbiAgICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb25TdGF0ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgICBzb3J0aW5nLFxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHsvKiBUT0RPOiBwYXRjaCBzbyBpdCBpcyBub3QgYnVuZGxlZCBsaWtlIHJlYWN0LXF1ZXJ5IGRldnRvb2xzLCBvciByZW1vdmUgY29tcGxldGVseSBvbmNlIGRhdGEgZ3JpZCBpcyBzdGFibGUgYW5kIHRlc3RlZC4gKi99XG4gICAgICB7cHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gbnVsbCA6IDxSZWFjdFRhYmxlRGV2dG9vbHMgdGFibGU9e3RhYmxlfSAvPn1cbiAgICAgIDxkaXYgZGF0YS1zdHVkaW89XCJjb250ZW50XCIgY2xhc3NOYW1lPVwicHMtZmxleC0xIHBzLXctMCBwcy1oLTAgcHMtbWluLXctZnVsbCBwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlXCI+XG4gICAgICAgIDxkaXY+e2Rpc3BsYXlMb2FkZXIgJiYgPERhdGFHcmlkTG9hZGluZ0JhciBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSAtcHMtdG9wLVsxcHhdIHBzLWxlZnQtMCBwcy1yaWdodC0wXCIgLz59PC9kaXY+XG4gICAgICAgIDxEbmRDb250ZXh0IHNlbnNvcnM9e3NlbnNvcnN9IG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH0+XG4gICAgICAgICAgPFRhYmxlIGNsYXNzTmFtZT1cInBzLXRhYmxlLWZpeGVkIHBzLWJvcmRlci1zZXBhcmF0ZSBwcy1ib3JkZXItc3BhY2luZy0wIHBzLWJveC1ib3JkZXIgcHMtdy1hdXRvXCI+XG4gICAgICAgICAgICA8VGFibGVIZWFkZXI+XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRIZWFkZXJHcm91cHMoKS5tYXAoKGhlYWRlckdyb3VwKSA9PiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93IGtleT17aGVhZGVyR3JvdXAuaWR9PlxuICAgICAgICAgICAgICAgICAgPFNvcnRhYmxlQ29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpdGVtcz17aGVhZGVyR3JvdXAuaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGhlYWRlcikgPT4gIShcImRpc2FibGVEcmFnZ2luZ1wiIGluIGhlYWRlci5jb2x1bW4uY29sdW1uRGVmKSlcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKChoZWFkZXIpID0+IGhlYWRlci5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5PXtob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2hlYWRlckdyb3VwLmhlYWRlcnMubWFwKChoZWFkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHNlbGVjdCBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVyLmNvbHVtbi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGhlYWRlciBmdW5jdGlvbiBkaXJlY3RseSwgd2hpY2ggc2hvdWxkIGJlIFNlbGVjdEhlYWRlckNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlckZuID0gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXJGbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEhlYWRlckNvbXBvbmVudCA9IGhlYWRlckZuKGhlYWRlci5nZXRDb250ZXh0KCkpIGFzIHVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIEhlYWRlckNvbXBvbmVudCBpcyBhIGZ1bmN0aW9uIChuZXcgYXBwcm9hY2ggd2l0aCBwcm9wcyBmb3J3YXJkaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIEhlYWRlckNvbXBvbmVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGlubmluZ1N0eWxlcyA9IGdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmluZ1N0eWxlcy5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtwaW5uaW5nU3R5bGVzLnN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7SGVhZGVyQ29tcG9uZW50KHt9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgSGVhZGVyQ29tcG9uZW50IGlzIGEgZGlyZWN0IEpTWCBlbGVtZW50IChvbGQgYXBwcm9hY2gpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGhlYWRlci5jb2x1bW4sIFwiaGVhZGVyXCIpLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2dldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIikuc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0hlYWRlckNvbXBvbmVudCBhcyBKU1guRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ3VsYXIgY29sdW1ucyB1c2UgdGhlIGRyYWdnYWJsZSBoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPERyYWdnYWJsZUhlYWRlckNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcj17aGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGhlYWRlci5jb2x1bW4sIFwiaGVhZGVyXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8RGF0YUdyaWRIZWFkZXIgaGVhZGVyPXtoZWFkZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0RyYWdnYWJsZUhlYWRlckNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvVGFibGVIZWFkZXI+XG4gICAgICAgICAgICA8VGFibGVCb2R5PlxuICAgICAgICAgICAgICB7Z2V0QmVmb3JlUm93cz8uKHRhYmxlKX1cbiAgICAgICAgICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIHRhYmxlLmdldFJvd01vZGVsKCkucm93cy5tYXAoKHJvdykgPT4gKFxuICAgICAgICAgICAgICAgICAgPFRhYmxlUm93XG4gICAgICAgICAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgIFwicHMtYmctdGFibGUtcm93IHBzLW9kZDpiZy10YWJsZS1yb3ctb2RkIHBzLWdyb3VwIFsmOmxhc3Qtb2YtdHlwZV90ZF06cHMtYm9yZGVyLWItMCBwcy1ncm91cFwiLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cm93LmdldFZpc2libGVDZWxscygpLm1hcCgoY2VsbCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4+O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2VsbCA9IGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsKGNlbGwuZ2V0Q29udGV4dCgpKSBhcyBDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPENlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncm91cC1vZGQ6cHMtYmctbmV1dHJhbC01MCBncm91cC1ldmVuOnBzLWJnLXdoaXRlIGdyb3VwLWhvdmVyOnBzLWJnLW5ldXRyYWwtMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGwga2V5PXtjZWxsLmlkfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VsbC5nZXRWYWx1ZSgpIGFzIFJlYWN0Tm9kZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93PlxuICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuPXtjb2x1bW5EZWZzLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC0yNCBwcy10ZXh0LWxlZnQgcHMtcC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctZnVsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNC81XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy0yLzNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVGFibGVCb2R5PlxuICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgIDwvRG5kQ29udGV4dD5cbiAgICAgICAgeyFwYWdlQ291bnQgfHwgcGFnZUNvdW50IDwgMiA/IG51bGwgOiA8RGF0YUdyaWRQYWdpbmF0aW9uIHRhYmxlPXt0YWJsZX0gdmFyaWFudD1cIm51bWVyaWNcIiAvPn1cblxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cz8ubGVuZ3RoID09PSAwICYmICFpc0xvYWRpbmcgJiYgIWlzUHJvY2Vzc2luZyAmJiAoXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1hYnNvbHV0ZSAtcHMtaW5zZXQtMCBwcy1wb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPk5vIHJlc3VsdHMgZm91bmQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICBJdCBkb2VzbiZhcG9zO3QgbG9vayBsaWtlIHlvdSBoYXZlIGFueSBkYXRhIGluIHRoaXMgdGFibGUuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIHRvU29ydGluZ1N0YXRlKGZyb206IFNvcnRPcmRlckl0ZW1bXSB8IHVuZGVmaW5lZCk6IFNvcnRpbmdTdGF0ZSB7XG4gIHJldHVybiBmcm9tPy5tYXAoKGl0ZW0pID0+ICh7IGlkOiBpdGVtLmNvbHVtbiwgZGVzYzogaXRlbS5kaXJlY3Rpb24gPT09IFwiZGVzY1wiIH0pKSB8fCBbXTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0T3JkZXJJdGVtcyhmcm9tOiBTb3J0aW5nU3RhdGUpOiBTb3J0T3JkZXJJdGVtW10ge1xuICByZXR1cm4gZnJvbS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgY29sdW1uOiBpdGVtLmlkLFxuICAgIGRpcmVjdGlvbjogaXRlbS5kZXNjID8gXCJkZXNjXCIgOiBcImFzY1wiLFxuICB9KSk7XG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBnZXRJdGVtID0gKGtleTogc3RyaW5nKTogdW5rbm93biA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgaXRlbVZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KVxuICAgIGlmICh0eXBlb2YgaXRlbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoaXRlbVZhbHVlKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2U8VD4oXG4gIGtleTogc3RyaW5nLFxuICBkZWZhdWx0VmFsdWU6IFQgfCB1bmRlZmluZWRcbik6IFtUIHwgdW5kZWZpbmVkLCAobmV3VmFsOiBUIHwgKChwcmV2VmFsOiBUKSA9PiBUKSkgPT4gdm9pZF0ge1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlPFQ+KClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldEl0ZW0oa2V5KSBhcyBUIHwgdW5kZWZpbmVkXG5cbiAgICBpZiAodHlwZW9mIGluaXRpYWxWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgaW5pdGlhbFZhbHVlID09PSBudWxsKSB7XG4gICAgICBzZXRWYWx1ZShcbiAgICAgICAgdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGRlZmF1bHRWYWx1ZSgpIDogZGVmYXVsdFZhbHVlXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFZhbHVlKGluaXRpYWxWYWx1ZSlcbiAgICB9XG4gIH0sIFtkZWZhdWx0VmFsdWUsIGtleV0pXG5cbiAgY29uc3Qgc2V0dGVyID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXI6IGFueSkgPT4ge1xuICAgICAgc2V0VmFsdWUob2xkID0+IHtcbiAgICAgICAgbGV0IG5ld1ZhbCA9IHVwZGF0ZXJcblxuICAgICAgICBpZiAodHlwZW9mIHVwZGF0ZXIgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIG5ld1ZhbCA9IHVwZGF0ZXIob2xkKVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeShuZXdWYWwpKVxuICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgcmV0dXJuIG5ld1ZhbFxuICAgICAgfSlcbiAgICB9LFxuICAgIFtrZXldXG4gIClcblxuICByZXR1cm4gW3ZhbHVlLCBzZXR0ZXJdXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRoZW1lID0ge1xuICBiYWNrZ3JvdW5kOiAnIzBiMTUyMScsXG4gIGJhY2tncm91bmRBbHQ6ICcjMTMyMzM3JyxcbiAgZm9yZWdyb3VuZDogJ3doaXRlJyxcbiAgZ3JheTogJyMzZjRlNjAnLFxuICBncmF5QWx0OiAnIzIyMmUzZScsXG4gIGlucHV0QmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gIGlucHV0VGV4dENvbG9yOiAnIzAwMCcsXG4gIHN1Y2Nlc3M6ICcjMDBhYjUyJyxcbiAgZGFuZ2VyOiAnI2ZmMDA4NScsXG4gIGFjdGl2ZTogJyMwMDZiZmYnLFxuICB3YXJuaW5nOiAnI2ZmYjIwMCcsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFRoZW1lID0gdHlwZW9mIGRlZmF1bHRUaGVtZVxuaW50ZXJmYWNlIFByb3ZpZGVyUHJvcHMge1xuICB0aGVtZTogVGhlbWVcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn1cblxuY29uc3QgVGhlbWVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChkZWZhdWx0VGhlbWUpXG5cbmV4cG9ydCBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHsgdGhlbWUsIC4uLnJlc3QgfTogUHJvdmlkZXJQcm9wcykge1xuICByZXR1cm4gPFRoZW1lQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhlbWV9IHsuLi5yZXN0fSAvPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlVGhlbWUoKSB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1lZGlhUXVlcnkocXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAvLyBLZWVwIHRyYWNrIG9mIHRoZSBwcmVmZXJlbmNlIGluIHN0YXRlLCBzdGFydCB3aXRoIHRoZSBjdXJyZW50IG1hdGNoXG4gIGNvbnN0IFtpc01hdGNoLCBzZXRJc01hdGNoXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlc1xuICAgIH1cbiAgfSlcblxuICAvLyBXYXRjaCBmb3IgY2hhbmdlc1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKCF3aW5kb3cubWF0Y2hNZWRpYSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIGEgbWF0Y2hlclxuICAgICAgY29uc3QgbWF0Y2hlciA9IHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KVxuXG4gICAgICAvLyBDcmVhdGUgb3VyIGhhbmRsZXJcbiAgICAgIGNvbnN0IG9uQ2hhbmdlID0gKHsgbWF0Y2hlcyB9OiB7IG1hdGNoZXM6IGJvb2xlYW4gfSkgPT5cbiAgICAgICAgc2V0SXNNYXRjaChtYXRjaGVzKVxuXG4gICAgICAvLyBMaXN0ZW4gZm9yIGNoYW5nZXNcbiAgICAgIG1hdGNoZXIuYWRkTGlzdGVuZXIob25DaGFuZ2UpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIC8vIFN0b3AgbGlzdGVuaW5nIGZvciBjaGFuZ2VzXG4gICAgICAgIG1hdGNoZXIucmVtb3ZlTGlzdGVuZXIob25DaGFuZ2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNNYXRjaCwgcXVlcnksIHNldElzTWF0Y2hdKVxuXG4gIHJldHVybiBpc01hdGNoXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBUaGVtZSwgdXNlVGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSAnLi91c2VNZWRpYVF1ZXJ5J1xuXG5jb25zdCBpc1NlcnZlciA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG5cbnR5cGUgU3R5bGVkQ29tcG9uZW50PFQ+ID0gVCBleHRlbmRzICdidXR0b24nXG4gID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgICBIVE1MQnV0dG9uRWxlbWVudFxuICAgID5cbiAgOiBUIGV4dGVuZHMgJ2lucHV0J1xuICAgID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICAgIFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIEhUTUxJbnB1dEVsZW1lbnRcbiAgICAgID5cbiAgICA6IFQgZXh0ZW5kcyAnc2VsZWN0J1xuICAgICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgICBSZWFjdC5TZWxlY3RIVE1MQXR0cmlidXRlczxIVE1MU2VsZWN0RWxlbWVudD4sXG4gICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnRcbiAgICAgICAgPlxuICAgICAgOiBUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwXG4gICAgICAgID8gUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdPlxuICAgICAgICA6IG5ldmVyXG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvcihtYXRjaDogUm91dGVNYXRjaCwgdGhlbWU6IFRoZW1lKSB7XG4vLyAgIHJldHVybiBtYXRjaC5pc0xvYWRpbmdcbi8vICAgICA/IHRoZW1lLmFjdGl2ZVxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncmVqZWN0ZWQnXG4vLyAgICAgPyB0aGVtZS5kYW5nZXJcbi8vICAgICA6IG1hdGNoLnN0YXR1cyA9PT0gJ3BlbmRpbmcnXG4vLyAgICAgPyB0aGVtZS53YXJuaW5nXG4vLyAgICAgOiB0aGVtZS5zdWNjZXNzXG4vLyB9XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeVN0YXR1c0xhYmVsKHF1ZXJ5OiBRdWVyeSkge1xuLy8gICByZXR1cm4gcXVlcnkuc3RhdGUuaXNGZXRjaGluZ1xuLy8gICAgID8gJ2ZldGNoaW5nJ1xuLy8gICAgIDogIXF1ZXJ5LmdldE9ic2VydmVyc0NvdW50KClcbi8vICAgICA/ICdpbmFjdGl2ZSdcbi8vICAgICA6IHF1ZXJ5LmlzU3RhbGUoKVxuLy8gICAgID8gJ3N0YWxlJ1xuLy8gICAgIDogJ2ZyZXNoJ1xuLy8gfVxuXG50eXBlIFN0eWxlcyA9XG4gIHwgUmVhY3QuQ1NTUHJvcGVydGllc1xuICB8ICgocHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIHRoZW1lOiBUaGVtZSkgPT4gUmVhY3QuQ1NTUHJvcGVydGllcylcblxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlZDxUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcbiAgdHlwZTogVCxcbiAgbmV3U3R5bGVzOiBTdHlsZXMsXG4gIHF1ZXJpZXM6IFJlY29yZDxzdHJpbmcsIFN0eWxlcz4gPSB7fVxuKSB7XG4gIHJldHVybiBSZWFjdC5mb3J3YXJkUmVmPEhUTUxFbGVtZW50VGFnTmFtZU1hcFtUXSwgU3R5bGVkQ29tcG9uZW50PFQ+PihcbiAgICAoeyBzdHlsZSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKVxuXG4gICAgICBjb25zdCBtZWRpYVN0eWxlcyA9IE9iamVjdC5lbnRyaWVzKHF1ZXJpZXMpLnJlZHVjZShcbiAgICAgICAgKGN1cnJlbnQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgICAgICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KGtleSlcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgLi4uKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHJlc3QsIHRoZW1lKSA6IHZhbHVlKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBjdXJyZW50XG4gICAgICAgIH0sXG4gICAgICAgIHt9XG4gICAgICApXG5cbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KHR5cGUsIHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAuLi4odHlwZW9mIG5ld1N0eWxlcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyBuZXdTdHlsZXMocmVzdCwgdGhlbWUpXG4gICAgICAgICAgICA6IG5ld1N0eWxlcyksXG4gICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgICAgLi4ubWVkaWFTdHlsZXMsXG4gICAgICAgIH0sXG4gICAgICAgIHJlZixcbiAgICAgIH0pXG4gICAgfVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc01vdW50ZWQoKSB7XG4gIGNvbnN0IG1vdW50ZWRSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTW91bnRlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IG1vdW50ZWRSZWYuY3VycmVudCwgW10pXG5cbiAgUmVhY3RbaXNTZXJ2ZXIgPyAndXNlRWZmZWN0JyA6ICd1c2VMYXlvdXRFZmZlY3QnXSgoKSA9PiB7XG4gICAgbW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH1cbiAgfSwgW10pXG5cbiAgcmV0dXJuIGlzTW91bnRlZFxufVxuXG4vKipcbiAqIFRoaXMgaG9vayBpcyBhIHNhZmUgdXNlU3RhdGUgdmVyc2lvbiB3aGljaCBzY2hlZHVsZXMgc3RhdGUgdXBkYXRlcyBpbiBtaWNyb3Rhc2tzXG4gKiB0byBwcmV2ZW50IHVwZGF0aW5nIGEgY29tcG9uZW50IHN0YXRlIHdoaWxlIFJlYWN0IGlzIHJlbmRlcmluZyBkaWZmZXJlbnQgY29tcG9uZW50c1xuICogb3Igd2hlbiB0aGUgY29tcG9uZW50IGlzIG5vdCBtb3VudGVkIGFueW1vcmUuXG4gKi9cbmZ1bmN0aW9uIHVzZVNhZmVTdGF0ZTxUPihpbml0aWFsU3RhdGU6IFQpOiBbVCwgKHZhbHVlOiBUKSA9PiB2b2lkXSB7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZUlzTW91bnRlZCgpXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gUmVhY3QudXNlU3RhdGUoaW5pdGlhbFN0YXRlKVxuXG4gIGNvbnN0IHNhZmVTZXRTdGF0ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZTogVCkgPT4ge1xuICAgICAgc2NoZWR1bGVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBpZiAoaXNNb3VudGVkKCkpIHtcbiAgICAgICAgICBzZXRTdGF0ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtpc01vdW50ZWRdXG4gIClcblxuICByZXR1cm4gW3N0YXRlLCBzYWZlU2V0U3RhdGVdXG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGEgbWljcm90YXNrLlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHNjaGVkdWxlIHN0YXRlIHVwZGF0ZXMgYWZ0ZXIgcmVuZGVyaW5nLlxuICovXG5mdW5jdGlvbiBzY2hlZHVsZU1pY3JvdGFzayhjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChlcnJvciA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9KVxuICAgIClcbn1cbiIsICJpbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgY29uc3QgUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBmb250U2l6ZTogJ2NsYW1wKDEycHgsIDEuNXZ3LCAxNHB4KScsXG4gICAgZm9udEZhbWlseTogYHNhbnMtc2VyaWZgLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDcwMHB4KSc6IHtcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gICAgJyhtYXgtd2lkdGg6IDYwMHB4KSc6IHtcbiAgICAgIGZvbnRTaXplOiAnLjllbScsXG4gICAgICAvLyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB9LFxuICB9XG4pXG5cbmNvbnN0IEFjdGl2ZVBhbmVsID0gc3R5bGVkKFxuICAnZGl2JyxcbiAgKCkgPT4gKHtcbiAgICBmbGV4OiAnMSAxIDUwMHB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzogKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgICBib3JkZXJUb3A6IGAycHggc29saWQgJHt0aGVtZS5ncmF5fWAsXG4gICAgfSksXG4gIH1cbilcblxuZXhwb3J0IGNvbnN0IEJ1dHRvbiA9IHN0eWxlZCgnYnV0dG9uJywgKHByb3BzLCB0aGVtZSkgPT4gKHtcbiAgYXBwZWFyYW5jZTogJ25vbmUnLFxuICBmb250U2l6ZTogJy45ZW0nLFxuICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gIGJhY2tncm91bmQ6IHRoZW1lLmdyYXksXG4gIGJvcmRlcjogJzAnLFxuICBib3JkZXJSYWRpdXM6ICcuM2VtJyxcbiAgY29sb3I6ICd3aGl0ZScsXG4gIHBhZGRpbmc6ICcuNWVtJyxcbiAgb3BhY2l0eTogcHJvcHMuZGlzYWJsZWQgPyAnLjUnIDogdW5kZWZpbmVkLFxuICBjdXJzb3I6ICdwb2ludGVyJyxcbn0pKVxuXG4vLyBleHBvcnQgY29uc3QgUXVlcnlLZXlzID0gc3R5bGVkKCdzcGFuJywge1xuLy8gICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbi8vICAgZm9udFNpemU6ICcwLjllbScsXG4vLyB9KVxuXG4vLyBleHBvcnQgY29uc3QgUXVlcnlLZXkgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4vLyAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuLy8gICBwYWRkaW5nOiAnLjJlbSAuNGVtJyxcbi8vICAgZm9udFdlaWdodDogJ2JvbGQnLFxuLy8gICB0ZXh0U2hhZG93OiAnMCAwIDEwcHggYmxhY2snLFxuLy8gICBib3JkZXJSYWRpdXM6ICcuMmVtJyxcbi8vIH0pXG5cbmNvbnN0IENvZGUgPSBzdHlsZWQoJ2NvZGUnLCB7XG4gIGZvbnRTaXplOiAnLjllbScsXG59KVxuXG5jb25zdCBJbnB1dCA9IHN0eWxlZCgnaW5wdXQnLCAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5pbnB1dEJhY2tncm91bmRDb2xvcixcbiAgYm9yZGVyOiAwLFxuICBib3JkZXJSYWRpdXM6ICcuMmVtJyxcbiAgY29sb3I6IHRoZW1lLmlucHV0VGV4dENvbG9yLFxuICBmb250U2l6ZTogJy45ZW0nLFxuICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgcGFkZGluZzogJy4zZW0gLjRlbScsXG59KSlcblxuY29uc3QgU2VsZWN0ID0gc3R5bGVkKFxuICAnc2VsZWN0JyxcbiAgKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgZGlzcGxheTogYGlubGluZS1ibG9ja2AsXG4gICAgZm9udFNpemU6IGAuOWVtYCxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgbGluZUhlaWdodDogYDEuM2AsXG4gICAgcGFkZGluZzogYC4zZW0gMS41ZW0gLjNlbSAuNWVtYCxcbiAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICBib3JkZXI6IDAsXG4gICAgYm9yZGVyUmFkaXVzOiBgLjJlbWAsXG4gICAgYXBwZWFyYW5jZTogYG5vbmVgLFxuICAgIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICAgIGJhY2tncm91bmRJbWFnZTogYHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCcgZmlsbD0nJTIzNDQ0NDQ0Jz48cG9seWdvbiBwb2ludHM9JzAsMjUgMTAwLDI1IDUwLDc1Jy8+PC9zdmc+XCIpYCxcbiAgICBiYWNrZ3JvdW5kUmVwZWF0OiBgbm8tcmVwZWF0YCxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb246IGByaWdodCAuNTVlbSBjZW50ZXJgLFxuICAgIGJhY2tncm91bmRTaXplOiBgLjY1ZW0gYXV0bywgMTAwJWAsXG4gICAgY29sb3I6IHRoZW1lLmlucHV0VGV4dENvbG9yLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA1MDBweCknOiB7XG4gICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgfSxcbiAgfVxuKVxuIiwgIi8vIEB0cy1ub2NoZWNrXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi91dGlscydcblxuY29uc3QgRW50cnkgPSBzdHlsZWQoJ2RpdicsIHtcbiAgZm9udEZhbWlseTogJ01lbmxvLCBtb25vc3BhY2UnLFxuICBmb250U2l6ZTogJzAuN3JlbScsXG4gIGxpbmVIZWlnaHQ6ICcxLjcnLFxuICBvdXRsaW5lOiAnbm9uZScsXG4gIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLFxufSlcblxuY29uc3QgTGFiZWwgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIGN1cnNvcjogJ3BvaW50ZXInLFxuICBjb2xvcjogJ3doaXRlJyxcbn0pXG5cbmNvbnN0IFZhbHVlID0gc3R5bGVkKCdzcGFuJywgKHByb3BzLCB0aGVtZSkgPT4gKHtcbiAgY29sb3I6IHRoZW1lLmRhbmdlcixcbn0pKVxuXG5jb25zdCBTdWJFbnRyaWVzID0gc3R5bGVkKCdkaXYnLCB7XG4gIG1hcmdpbkxlZnQ6ICcuMXJlbScsXG4gIHBhZGRpbmdMZWZ0OiAnMXJlbScsXG4gIGJvcmRlckxlZnQ6ICcycHggc29saWQgcmdiYSgwLDAsMCwuMTUpJyxcbn0pXG5cbmNvbnN0IEluZm8gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIGNvbG9yOiAnZ3JleScsXG4gIGZvbnRTaXplOiAnLjdyZW0nLFxufSlcblxuY29uc3QgRXhwYW5kZXIgPSAoeyBleHBhbmRlZCwgc3R5bGUgPSB7fSwgLi4ucmVzdCB9KSA9PiAoXG4gIDxzcGFuXG4gICAgc3R5bGU9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgdHJhbnNpdGlvbjogJ2FsbCAuMXMgZWFzZScsXG4gICAgICB0cmFuc2Zvcm06IGByb3RhdGUoJHtleHBhbmRlZCA/IDkwIDogMH1kZWcpICR7c3R5bGUudHJhbnNmb3JtIHx8ICcnfWAsXG4gICAgICAuLi5zdHlsZSxcbiAgICB9fVxuICA+XG4gICAg4pa2XG4gIDwvc3Bhbj5cbilcblxuY29uc3QgRGVmYXVsdFJlbmRlcmVyID0gKHtcbiAgaGFuZGxlRW50cnksXG4gIGxhYmVsLFxuICB2YWx1ZSxcbiAgLy8gcGF0aCxcbiAgc3ViRW50cmllcyxcbiAgc3ViRW50cnlQYWdlcyxcbiAgdHlwZSxcbiAgLy8gZGVwdGgsXG4gIGV4cGFuZGVkLFxuICB0b2dnbGUsXG4gIHBhZ2VTaXplLFxuICByZW5kZXJlcixcbn0pID0+IHtcbiAgY29uc3QgW3ZhbHVlU25hcHNob3QsIHNldFZhbHVlU25hcHNob3RdID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKVxuICBjb25zdCBbZXhwYW5kZWRQYWdlcywgc2V0RXhwYW5kZWRQYWdlc10gPSBSZWFjdC51c2VTdGF0ZShbXSlcblxuICBjb25zdCByZWZyZXNoVmFsdWVTbmFwc2hvdCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZVNuYXBzaG90KHZhbHVlKCkpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxFbnRyeSBrZXk9e2xhYmVsfT5cbiAgICAgIHtzdWJFbnRyeVBhZ2VzPy5sZW5ndGggPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPExhYmVsIG9uQ2xpY2s9eygpID0+IHRvZ2dsZSgpfT5cbiAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IHtsYWJlbH17JyAnfVxuICAgICAgICAgICAgPEluZm8+XG4gICAgICAgICAgICAgIHtTdHJpbmcodHlwZSkudG9Mb3dlckNhc2UoKSA9PT0gJ2l0ZXJhYmxlJyA/ICcoSXRlcmFibGUpICcgOiAnJ31cbiAgICAgICAgICAgICAge3N1YkVudHJpZXMubGVuZ3RofSB7c3ViRW50cmllcy5sZW5ndGggPiAxID8gYGl0ZW1zYCA6IGBpdGVtYH1cbiAgICAgICAgICAgIDwvSW5mbz5cbiAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgIHtleHBhbmRlZCA/IChcbiAgICAgICAgICAgIHN1YkVudHJ5UGFnZXMubGVuZ3RoID09PSAxID8gKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFN1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAge3N1YkVudHJ5UGFnZXMubWFwKChlbnRyaWVzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgPEVudHJ5PlxuICAgICAgICAgICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhwYW5kZWRQYWdlcyhvbGQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQuaW5jbHVkZXMoaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9sZC5maWx0ZXIoZCA9PiBkICE9PSBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogWy4uLm9sZCwgaW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSAvPiBbe2luZGV4ICogcGFnZVNpemV9IC4uLnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW5kZXggKiBwYWdlU2l6ZSArIHBhZ2VTaXplIC0gMX1dXG4gICAgICAgICAgICAgICAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWRQYWdlcy5pbmNsdWRlcyhpbmRleCkgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2VudHJpZXMubWFwKGVudHJ5ID0+IGhhbmRsZUVudHJ5KGVudHJ5KSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDwvRW50cnk+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgKVxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiB0eXBlID09PSAnZnVuY3Rpb24nID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgcmVuZGVyZXI9e3JlbmRlcmVyfVxuICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e3JlZnJlc2hWYWx1ZVNuYXBzaG90fT5cbiAgICAgICAgICAgICAgICA8TGFiZWw+e2xhYmVsfTwvTGFiZWw+IPCflIR7JyAnfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZVNuYXBzaG90fVxuICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXt7fX1cbiAgICAgICAgICAvPlxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPExhYmVsPntsYWJlbH06PC9MYWJlbD57JyAnfVxuICAgICAgICAgIDxWYWx1ZT5cbiAgICAgICAgICAgIHtKU09OLnN0cmluZ2lmeSh2YWx1ZSwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0KHZhbHVlKSkpfVxuICAgICAgICAgIDwvVmFsdWU+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L0VudHJ5PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4cGxvcmVyKHtcbiAgdmFsdWUsXG4gIGRlZmF1bHRFeHBhbmRlZCxcbiAgcmVuZGVyZXIgPSBEZWZhdWx0UmVuZGVyZXIsXG4gIHBhZ2VTaXplID0gMTAwLFxuICBkZXB0aCA9IDAsXG4gIC4uLnJlc3Rcbn0pIHtcbiAgY29uc3QgW2V4cGFuZGVkLCBzZXRFeHBhbmRlZF0gPSBSZWFjdC51c2VTdGF0ZShkZWZhdWx0RXhwYW5kZWQpXG5cbiAgY29uc3QgdG9nZ2xlID0gc2V0ID0+IHtcbiAgICBzZXRFeHBhbmRlZChvbGQgPT4gKHR5cGVvZiBzZXQgIT09ICd1bmRlZmluZWQnID8gc2V0IDogIW9sZCkpXG4gIH1cblxuICBjb25zdCBwYXRoID0gW11cblxuICBsZXQgdHlwZSA9IHR5cGVvZiB2YWx1ZVxuICBsZXQgc3ViRW50cmllc1xuICBjb25zdCBzdWJFbnRyeVBhZ2VzID0gW11cblxuICBjb25zdCBtYWtlUHJvcGVydHkgPSBzdWIgPT4ge1xuICAgIGNvbnN0IG5ld1BhdGggPSBwYXRoLmNvbmNhdChzdWIubGFiZWwpXG4gICAgY29uc3Qgc3ViRGVmYXVsdEV4cGFuZGVkID1cbiAgICAgIGRlZmF1bHRFeHBhbmRlZCA9PT0gdHJ1ZVxuICAgICAgICA/IHsgW3N1Yi5sYWJlbF06IHRydWUgfVxuICAgICAgICA6IGRlZmF1bHRFeHBhbmRlZD8uW3N1Yi5sYWJlbF1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3ViLFxuICAgICAgc3ViUGF0aDogc3ViLFxuICAgICAgcGF0aDogbmV3UGF0aCxcbiAgICAgIGRlcHRoOiBkZXB0aCArIDEsXG4gICAgICBkZWZhdWx0RXhwYW5kZWQ6IHN1YkRlZmF1bHRFeHBhbmRlZCxcbiAgICB9XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB0eXBlID0gJ2FycmF5J1xuICAgIHN1YkVudHJpZXMgPSB2YWx1ZS5tYXAoKGQsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IGQsXG4gICAgICB9KVxuICAgIClcbiAgfSBlbHNlIGlmIChcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB0eXBlb2YgdmFsdWVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICB0eXBlID0gJ0l0ZXJhYmxlJ1xuICAgIHN1YkVudHJpZXMgPSBBcnJheS5mcm9tKHZhbHVlLCAodmFsLCBpKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWw6IGksXG4gICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICB9KVxuICAgIClcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0eXBlID0gJ2Z1bmN0aW9uJ1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICB0eXBlID0gJ29iamVjdCdcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG4gICAgc3ViRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHZhbHVlKS5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlLFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBpZiAoc3ViRW50cmllcykge1xuICAgIGxldCBpID0gMFxuXG4gICAgd2hpbGUgKGkgPCBzdWJFbnRyaWVzLmxlbmd0aCkge1xuICAgICAgc3ViRW50cnlQYWdlcy5wdXNoKHN1YkVudHJpZXMuc2xpY2UoaSwgaSArIHBhZ2VTaXplKSlcbiAgICAgIGkgPSBpICsgcGFnZVNpemVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVuZGVyZXIoe1xuICAgIGhhbmRsZUVudHJ5OiBlbnRyeSA9PiAoXG4gICAgICA8RXhwbG9yZXIga2V5PXtlbnRyeS5sYWJlbH0gcmVuZGVyZXI9e3JlbmRlcmVyfSB7Li4ucmVzdH0gey4uLmVudHJ5fSAvPlxuICAgICksXG4gICAgdHlwZSxcbiAgICBzdWJFbnRyaWVzLFxuICAgIHN1YkVudHJ5UGFnZXMsXG4gICAgZGVwdGgsXG4gICAgdmFsdWUsXG4gICAgcGF0aCxcbiAgICBleHBhbmRlZCxcbiAgICB0b2dnbGUsXG4gICAgcGFnZVNpemUsXG4gICAgLi4ucmVzdCxcbiAgfSlcbn1cbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTG9nbyhwcm9wczogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCI0MHB4XCJcbiAgICAgIGhlaWdodD1cIjQwcHhcIlxuICAgICAgdmlld0JveD1cIjAgMCAxOTAgMTkwXCJcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxnIHN0cm9rZT1cIm5vbmVcIiBzdHJva2VXaWR0aD1cIjFcIiBmaWxsPVwibm9uZVwiIGZpbGxSdWxlPVwiZXZlbm9kZFwiPlxuICAgICAgICA8ZyBpZD1cIm9nLXdoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yOC4wMDAwMDAsIC0yMS4wMDAwMDApXCI+XG4gICAgICAgICAgPGcgaWQ9XCJHcm91cC0yXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDI4LjAwMDAwMCwgMzEuMDAwMDAwKVwiPlxuICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjAwMDAwMCwgMTAuMDAwMDAwKVwiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNMzkuNzIzOTcxMiw1MS4zNDM2MjM3IEMzNi42MzEyMjQsMzYuMzYyODc3IDM1Ljk2NzUxMTIsMjQuODcyNzcyMiAzNy45NjY2MzMxLDE2LjUyOTM1NTEgQzM5LjE1NTU5NjUsMTEuNTY3MTY3OCA0MS4zMjkzMDg4LDcuNTE5MDg0NjIgNDQuNjM0NjA2NCw0LjU5ODQ2MzA1IEM0OC4xMjQxMzk0LDEuNTE1MDQ3NzcgNTIuNTM2MDMyNywwLjAwMjAxMjE2NjA2IDU3LjQ5MzI1NywwLjAwMjAxMjE2NjA2IEM2NS42NzEyMDEzLDAuMDAyMDEyMTY2MDYgNzQuMjY4MjYwMiwzLjcyNzMyMTQzIDgzLjQ1NTcyNDYsMTAuODA0NDI2NCBDODcuMjAzMTIwMywxMy42OTEwNDU4IDkxLjA5MjQzNjYsMTcuMTcwNDExIDk1LjEzMTY1MTUsMjEuMjQ0NDc0NiBDOTUuNDUzMTQwNCwyMC44MzEwMjY1IDk1LjgxNjU0MTYsMjAuNDQxMDQ1MyA5Ni4yMjE0MzAxLDIwLjA4MDYxNTIgQzEwNy42NDA5OCw5LjkxNDk3MTU4IDExNy4yNTUyNDUsMy41OTg5MjcxNiAxMjUuNDc4NDA4LDEuMTYzNjUwNjggQzEzMC4zNjc4OTksLTAuMjg0MzY0MDA1IDEzNC45NTg1MjYsLTAuNDIyMzE3OTc4IDEzOS4xMzg5MzYsMC45ODMwMzEwMjEgQzE0My41NTE2MzEsMi40NjY0Njg0NCAxNDcuMDY3NjYsNS41MzI5NDg4OCAxNDkuNTQ4MzE0LDkuODI4MTA5MTIgQzE1My42NDIyODgsMTYuOTE2NjczNSAxNTQuNzIxOTE4LDI2LjIzMTA5ODMgMTUzLjE5NTU5NSwzNy43MzIwMjQzIEMxNTIuNTczNDUxLDQyLjQxOTkxMTIgMTUxLjUwOTg1LDQ3LjUyNjM4MzEgMTUwLjAwNzA5NCw1My4wNTkzMTUzIEMxNTAuNTc0MDQ1LDUzLjEyNzcwODYgMTUxLjE0MjQxNiw1My4yNTMyODA4IDE1MS43MDUwNDEsNTMuNDM5NTI5NyBDMTY2LjE5MzkzMiw1OC4yMzU4Njc4IDE3Ni40NTM1ODIsNjMuMzkzNzQ2MiAxODIuNjY1MDIxLDY5LjI4ODI4MzkgQzE4Ni4zNjA2NjksNzIuNzk1MzgzMSAxODguNzczOTcyLDc2LjY5OTg0MzQgMTg5LjY0NjM2NSw4MS4wMjE4MjA0IEMxOTAuNTY3MTc2LDg1LjU4MzY3NDYgMTg5LjY2OTMxMyw5MC4xNTkzMzE2IDE4Ny4xOTE1NDgsOTQuNDUxMjk2NyBDMTgzLjEwNTIxMSwxMDEuNTI5NjE0IDE3NS41OTE2NDMsMTA3LjExMjIxIDE2NC44ODc1ODcsMTExLjUzNDAzMSBDMTYwLjU4OTU1MiwxMTMuMzA5NTM5IDE1NS43MjY1NzksMTE0LjkxNzU1OSAxNTAuMjkzMjU5LDExNi4zNjM3NDggQzE1MC41NDExNzYsMTE2LjkyMjkyIDE1MC43MzM1MjEsMTE3LjUxNjc1OSAxNTAuODYyMTM4LDExOC4xMzk3NTggQzE1My45NTQ4ODYsMTMzLjEyMDUwNSAxNTQuNjE4NTk4LDE0NC42MTA2MSAxNTIuNjE5NDc3LDE1Mi45NTQwMjcgQzE1MS40MzA1MTMsMTU3LjkxNjIxNCAxNDkuMjU2ODAxLDE2MS45NjQyOTcgMTQ1Ljk1MTUwMywxNjQuODg0OTE5IEMxNDIuNDYxOTcsMTY3Ljk2ODMzNCAxMzguMDUwMDc3LDE2OS40ODEzNyAxMzMuMDkyODUzLDE2OS40ODEzNyBDMTI0LjkxNDkwOCwxNjkuNDgxMzcgMTE2LjMxNzg1LDE2NS43NTYwNjEgMTA3LjEzMDM4NSwxNTguNjc4OTU2IEMxMDMuMzQzMTA0LDE1NS43NjE2MTMgOTkuNDEwODY1NSwxNTIuMjM4ODM5IDk1LjMyNTQzMzcsMTQ4LjEwODYxOSBDOTQuOTA1MDc1MywxNDguNzY1NDc0IDk0LjM4ODk2ODEsMTQ5LjM3NjAxMSA5My43Nzg1Njk5LDE0OS45MTkzODUgQzgyLjM1OTAxOTgsMTYwLjA4NTAyOCA3Mi43NDQ3NTUsMTY2LjQwMTA3MyA2NC41MjE1OTE1LDE2OC44MzYzNDkgQzU5LjYzMjEwMDksMTcwLjI4NDM2NCA1NS4wNDE0NzM2LDE3MC40MjIzMTggNTAuODYxMDYzNiwxNjkuMDE2OTY5IEM0Ni40NDgzNjg2LDE2Ny41MzM1MzIgNDIuOTMyMzQwNCwxNjQuNDY3MDUxIDQwLjQ1MTY4NjIsMTYwLjE3MTg5MSBDMzYuMzU3NzExNiwxNTMuMDgzMzI3IDM1LjI3ODA4MjMsMTQzLjc2ODkwMiAzNi44MDQ0MDUzLDEzMi4yNjc5NzYgQzM3LjQ0OTAzOCwxMjcuNDEwNjM0IDM4LjU2NzYyLDEyMi4xMDM4OTggNDAuMTU3NTg5MSwxMTYuMzM5MDA5IEMzOS41MzYxMDQxLDExNi4yNzYxMDQgMzguOTEyMDc1NCwxMTYuMTQ0ODE2IDM4LjI5NDk1OTEsMTE1Ljk0MDUyOSBDMjMuODA2MDY4NCwxMTEuMTQ0MTkxIDEzLjU0NjQxODQsMTA1Ljk4NjMxMiA3LjMzNDk3ODkyLDEwMC4wOTE3NzUgQzMuNjM5MzMxMjEsOTYuNTg0Njc1NCAxLjIyNjAyNzUyLDkyLjY4MDIxNTEgMC4zNTM2MzUyMzUsODguMzU4MjM4MSBDLTAuNTY3MTc2MzMzLDgzLjc5NjM4MzkgMC4zMzA2ODY1ODEsNzkuMjIwNzI2OSAyLjgwODQ1MjM2LDc0LjkyODc2MTggQzYuODk0Nzg4NjMsNjcuODUwNDQ0MyAxNC40MDgzNTY1LDYyLjI2Nzg0ODEgMjUuMTEyNDEzMyw1Ny44NDYwMjczIEMyOS41Mzg1MTQzLDU2LjAxNzYxNTQgMzQuNTYzNzIwOCw1NC4zNjY4MjIgNDAuMTkzOTM5NCw1Mi44ODc0Njc0IEMzOS45OTMzMzkzLDUyLjM5NjkxNzEgMzkuODM0OTM3NCw1MS44ODExMjM1IDM5LjcyMzk3MTIsNTEuMzQzNjIzNyBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIlBhdGhcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMDAyQzRCXCJcbiAgICAgICAgICAgICAgICBmaWxsUnVsZT1cIm5vbnplcm9cIlxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg5NS4wMDAwMDAsIDg1LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOTUuMDAwMDAwLCAtODUuMDAwMDAwKSBcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNOTEuNzM1LDExMCBMOTEuNzM1LDExNiBMODAuNjMyMjA1MSwxMTYgQzc4Ljg0MTEyODYsMTE2IDc3LjE4Njg2MTQsMTE1LjA0MTk3NSA3Ni4yOTU0NDg5LDExMy40ODg0ODMgTDc0LjI5NCwxMTAgTDkxLjczNSwxMTAgWiBNMTE2LjE4MSwxMTAgTDExNC4xODAyNTYsMTEzLjQ4ODQ4MyBDMTEzLjI4ODg0NCwxMTUuMDQxOTc1IDExMS42MzQ1NzYsMTE2IDEwOS44NDM1LDExNiBMOTguNzM1LDExNiBMOTguNzM1LDExMCBMMTE2LjE4MSwxMTAgWiBNOTEuNzM1LDk2IEw5MS43MzUsMTAzIEw3MC4yNzcsMTAzIEw2Ni4yNiw5NiBMOTEuNzM1LDk2IFogTTEyNC4yMTUsOTYgTDEyMC4xOTgsMTAzIEw5OC43MzUsMTAzIEw5OC43MzUsOTYgTDEyNC4yMTUsOTYgWiBNOTEuNzM1LDgyIEw5MS43MzUsODkgTDYyLjI0NCw4OSBMNjEuNjYzMjQzOCw4Ny45ODg0ODI2IEM2MC43Nzg5MTg3LDg2LjQ0NzM0MTcgNjAuNzc4OTE4Nyw4NC41NTI2NTgzIDYxLjY2MzI0MzgsODMuMDExNTE3NCBMNjIuMjQzLDgyIEw5MS43MzUsODIgWiBNMTI4LjIzMiw4MiBMMTI4LjgxMjQ2MSw4My4wMTE1MTc0IEMxMjkuNjk2Nzg2LDg0LjU1MjY1ODMgMTI5LjY5Njc4Niw4Ni40NDczNDE3IDEyOC44MTI0NjEsODcuOTg4NDgyNiBMMTI4LjIzMSw4OSBMOTguNzM1LDg5IEw5OC43MzUsODIgTDEyOC4yMzIsODIgWiBNOTEuNzM1LDY4IEw5MS43MzUsNzUgTDY2LjI2LDc1IEw3MC4yNzcsNjggTDkxLjczNSw2OCBaIE0xMjAuMTk4LDY4IEwxMjQuMjE1LDc1IEw5OC43MzUsNzUgTDk4LjczNSw2OCBMMTIwLjE5OCw2OCBaIE05MS43MzUsNTUgTDkxLjczNSw2MSBMNzQuMjkzLDYxIEw3Ni4yOTU0NDg5LDU3LjUxMTUxNzQgQzc3LjE4Njg2MTQsNTUuOTU4MDI1IDc4Ljg0MTEyODYsNTUgODAuNjMyMjA1MSw1NSBMOTEuNzM1LDU1IFogTTEwOS44NDM1LDU1IEMxMTEuNjM0NTc2LDU1IDExMy4yODg4NDQsNTUuOTU4MDI1IDExNC4xODAyNTYsNTcuNTExNTE3NCBMMTE2LjE4Miw2MSBMOTguNzM1LDYxIEw5OC43MzUsNTUgTDEwOS44NDM1LDU1IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUG9seWdvbi0yXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGRDk0Q1wiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk01NC44NjAxNzI5LDk4LjM1Nzc1NzggQzU2LjE3MTUyMjQsOTcuNjA4Mjg1NiA1Ny44MzYwMjQ2LDk4LjA3NDYwMTQgNTguNTc3OTQyNCw5OS4zOTkzMDM0IEw1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU5LjA1MjU4NDMsMTAwLjI0MzUyIEM2Mi44NTYzMzkyLDEwNi45ODI5OTMgNjYuODE5MDExNiwxMTMuMzgwMTc2IDcwLjk0MDYwMTYsMTE5LjQzNTA2OCBDNzUuODA3ODgwOCwxMjYuNTg1NDI3IDgxLjI4MTg0LDEzMy44MjQxMSA4Ny4zNjI0NzkyLDE0MS4xNTExMTUgQzg4LjMxNjg3NzgsMTQyLjMwMTE0IDg4LjE4NDk0MzcsMTQ0LjAxMTE3NiA4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODcuMDY1Njg2LDE0NC45OTc5MzcgTDg2LjQ1NDIwODUsMTQ1LjUzNDYyNSBDNjYuMzQ2NTM4OSwxNjMuMTAzMzE0IDUzLjI3NzgxODgsMTY2LjYxMjU1MiA0Ny4yNDgwNDgyLDE1Ni4wNjIzNDEgQzQxLjM1MDA2NTIsMTQ1Ljc0MjcxNyA0My40ODQ0OTE1LDEyNi45ODI4ODggNTMuNjUxMzI3NCw5OS43ODI4NTI2IEM1My44NzY4MTgsOTkuMTc5NTgyMSA1NC4zMDQ1ODYxLDk4LjY3NTI5MSA1NC44NjAxNzI5LDk4LjM1Nzc1NzggWiBNMTQwLjUzNDE3NywxMTkuMDQxNTA0IEMxNDEuOTg2MTMxLDExOC43ODUxNzcgMTQzLjM3NTQ5NiwxMTkuNzQyMTM4IDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuNjU5NjMsMTIxLjE5NDI0MiBMMTQzLjgxMjgxNSwxMjEuOTg2Mzc2IEMxNDguNzgyMzY1LDE0Ny45OTU0NTkgMTQ1LjI4MzM0OCwxNjEgMTMzLjMxNTc2NCwxNjEgQzEyMS42MDk3NDUsMTYxIDEwNi43MDg3MjQsMTQ5LjkwOTAwNyA4OC42MTI3MDE4LDEyNy43MjcwMjIgQzg4LjIxMTM0OTUsMTI3LjIzNTA0NyA4Ny45OTQ1NzIzLDEyNi42MTczNzEgODgsMTI1Ljk4MTUwOSBDODguMDEzMTU4LDEyNC40ODA2ODYgODkuMjM1Nzg1NCwxMjMuMjc0NjUxIDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MC43MzA5MTgsMTIzLjI4Nzc1NiBMOTEuNjg0NjU0NCwxMjMuMjk0NTMxIEM5OS4zMDU2OTc5LDEyMy4zMzU5OTQgMTA2LjcxNDM4NywxMjMuMDcxNTkxIDExMy45MTA3MjMsMTIyLjUwMTMyMyBDMTIyLjQwOTAzOSwxMjEuODI3ODggMTMxLjI4MzUyMywxMjAuNjc0NjA3IDE0MC41MzQxNzcsMTE5LjA0MTUwNCBaIE0xNDcuNDA4NzI2LDYzLjgxMTk2NjMgQzE0Ny45MzIxMzksNjIuNDAyNjkwMyAxNDkuNTA4Mzg2LDYxLjY2MzQ1MzcgMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MC45NTQ1ODEsNjIuMTQ5MDEyIEwxNTEuNzQyNTUyLDYyLjQxNTQ4NTQgQzE3Ny41ODM3NjMsNzEuMjE3OTIyIDE4Ny40MDIzNTYsODAuODkxNjgwNSAxODEuMTk4MzMyLDkxLjQzNjc2MDkgQzE3NS4xMjk5MDQsMTAxLjc1MTM2NiAxNTcuNDg0MzQ3LDEwOS4yNjAzMzkgMTI4LjI2MTY2LDExMy45NjM2NzggQzEyNy42MTM1MjksMTE0LjA2Nzk5NCAxMjYuOTQ4NjQzLDExMy45NDU5NjkgMTI2LjM4MjczNSwxMTMuNjE4ODQzIEMxMjUuMDQ3MDI1LDExMi44NDY3MjkgMTI0LjYwMjA0NiwxMTEuMTU4MjE0IDEyNS4zODg4NDgsMTA5Ljg0NzQzOCBMMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuODg5MzI4LDEwOS4wMTA1IEMxMjkuODc3MTgzLDEwMi4zMTYzMyAxMzMuNDgxMzU4LDk1LjY1NDI2MjEgMTM2LjcwMTg1NCw4OS4wMjQyOTU3IEMxNDAuNTA1MDEsODEuMTk0ODE3OSAxNDQuMDczOTY3LDcyLjc5MDcwODEgMTQ3LjQwODcyNiw2My44MTE5NjYzIFogTTYxLjczODMzOTgsNTYuMDM2MzIxOCBDNjIuMzg2NDcwOCw1NS45MzIwMDYzIDYzLjA1MTM1NjUsNTYuMDU0MDMxNSA2My42MTcyNjQ2LDU2LjM4MTE1NzMgQzY0Ljk1Mjk3NTQsNTcuMTUzMjcxIDY1LjM5Nzk1MzgsNTguODQxNzg2MiA2NC42MTExNTE3LDYwLjE1MjU2MTUgTDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuMTEwNjcxOCw2MC45ODk1MDAxIEM2MC4xMjI4MTY4LDY3LjY4MzY2OTkgNTYuNTE4NjQxNiw3NC4zNDU3Mzc5IDUzLjI5ODE0NjIsODAuOTc1NzA0MyBDNDkuNDk0OTksODguODA1MTgyMSA0NS45MjYwMzI4LDk3LjIwOTI5MTkgNDIuNTkxMjc0NCwxMDYuMTg4MDM0IEM0Mi4wNjc4NjA4LDEwNy41OTczMSA0MC40OTE2MTQyLDEwOC4zMzY1NDYgMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM5LjA0NTQxOSwxMDcuODUwOTg4IEwzOC4yNTc0NDc1LDEwNy41ODQ1MTUgQzEyLjQxNjIzNzIsOTguNzgyMDc4IDIuNTk3NjQzOTgsODkuMTA4MzE5NSA4LjgwMTY2Nzg2LDc4LjU2MzIzOTEgQzE0Ljg3MDA5NTcsNjguMjQ4NjMzNSAzMi41MTU2NTMsNjAuNzM5NjYxMSA2MS43MzgzMzk4LDU2LjAzNjMyMTggWiBNMTAzLjU0NTc5MiwyNC40NjUzNzQ2IEMxMjMuNjUzNDYxLDYuODk2Njg2NDEgMTM2LjcyMjE4MSwzLjM4NzQ0Nzc4IDE0Mi43NTE5NTIsMTMuOTM3NjU4NyBDMTQ4LjY0OTkzNSwyNC4yNTcyODI2IDE0Ni41MTU1MDgsNDMuMDE3MTEyMiAxMzYuMzQ4NjczLDcwLjIxNzE0NzQgQzEzNi4xMjMxODIsNzAuODIwNDE3OSAxMzUuNjk1NDE0LDcxLjMyNDcwOSAxMzUuMTM5ODI3LDcxLjY0MjI0MjIgQzEzMy44Mjg0NzgsNzIuMzkxNzE0NCAxMzIuMTYzOTc1LDcxLjkyNTM5ODYgMTMxLjQyMjA1OCw3MC42MDA2OTY2IEwxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMC45NDc0MTYsNjkuNzU2NDc5OCBDMTI3LjE0MzY2MSw2My4wMTcwMDY1IDEyMy4xODA5ODgsNTYuNjE5ODIzOSAxMTkuMDU5Mzk4LDUwLjU2NDkzMiBDMTE0LjE5MjExOSw0My40MTQ1NzI3IDEwOC43MTgxNiwzNi4xNzU4OTAzIDEwMi42Mzc1MjEsMjguODQ4ODg0NyBDMTAxLjY4MzEyMiwyNy42OTg4NjAyIDEwMS44MTUwNTYsMjUuOTg4ODI0MyAxMDIuOTM0MzE0LDI1LjAwMjA2MjkgTDEwMi45MzQzMTQsMjUuMDAyMDYyOSBaIE01Ny42ODQyMzYxLDggQzY5LjM5MDI1NTEsOCA4NC4yOTEyNzU4LDE5LjA5MDk5MjYgMTAyLjM4NzI5OCw0MS4yNzI5Nzc3IEMxMDIuNzg4NjUxLDQxLjc2NDk1MjcgMTAzLjAwNTQyOCw0Mi4zODI2Mjg4IDEwMyw0My4wMTg0OTExIEMxMDIuOTg2ODQyLDQ0LjUxOTMxNDQgMTAxLjc2NDIxNSw0NS43MjUzNDg5IDEwMC4yNjkwODIsNDUuNzEyMjQ0NSBMMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEw5OS4zMTUzNDU2LDQ1LjcwNTQ2ODkgQzkxLjY5NDMwMjEsNDUuNjY0MDA2MyA4NC4yODU2MTI2LDQ1LjkyODQwOTEgNzcuMDg5Mjc3Miw0Ni40OTg2NzczIEM2OC41OTA5NjEyLDQ3LjE3MjEyIDU5LjcxNjQ3NjcsNDguMzI1MzkzIDUwLjQ2NTgyMzUsNDkuOTU4NDk2MiBDNDkuMDEzODY5MSw1MC4yMTQ4MjMxIDQ3LjYyNDUwNDQsNDkuMjU3ODYxOCA0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMzQwMzY5Nyw0Ny44MDU3NTggTDQ3LjE4NzE4NDYsNDcuMDEzNjIzNSBDNDIuMjE3NjM0NywyMS4wMDQ1NDEyIDQ1LjcxNjY1MTksOCA1Ny42ODQyMzYxLDggWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJDb21iaW5lZC1TaGFwZVwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiNGRjQxNTRcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtdGFibGUnXG5cbmltcG9ydCB1c2VMb2NhbFN0b3JhZ2UgZnJvbSAnLi91c2VMb2NhbFN0b3JhZ2UnXG5pbXBvcnQgeyB1c2VJc01vdW50ZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5pbXBvcnQgeyBQYW5lbCwgQnV0dG9uIH0gZnJvbSAnLi9zdHlsZWRDb21wb25lbnRzJ1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciwgZGVmYXVsdFRoZW1lIGFzIHRoZW1lIH0gZnJvbSAnLi90aGVtZSdcbi8vIGltcG9ydCB7IGdldFF1ZXJ5U3RhdHVzTGFiZWwsIGdldFF1ZXJ5U3RhdHVzQ29sb3IgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IEV4cGxvcmVyIGZyb20gJy4vRXhwbG9yZXInXG5pbXBvcnQgTG9nbyBmcm9tICcuL0xvZ28nXG5cbmludGVyZmFjZSBEZXZ0b29sc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0cnVlIGlmIHlvdSB3YW50IHRoZSBkZXYgdG9vbHMgdG8gZGVmYXVsdCB0byBiZWluZyBvcGVuXG4gICAqL1xuICBpbml0aWFsSXNPcGVuPzogYm9vbGVhblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSBwYW5lbC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgZXRjLlxuICAgKi9cbiAgcGFuZWxQcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PixcbiAgICBIVE1MRGl2RWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIGNsb3NlIGJ1dHRvbi4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgb25DbGljayAoZXh0ZW5kIGRlZmF1bHQgaGFuZGxlciksIGV0Yy5cbiAgICovXG4gIGNsb3NlQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSB0b2dnbGUgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgdG9nZ2xlQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcmVuZGVyIHRoZSBkZXZ0b29scyBpbnNpZGUgYSBkaWZmZXJlbnQgdHlwZSBvZiBjb250YWluZXIgZWxlbWVudCBmb3IgYTExeSBwdXJwb3Nlcy5cbiAgICogQW55IHN0cmluZyB3aGljaCBjb3JyZXNwb25kcyB0byBhIHZhbGlkIGludHJpbnNpYyBKU1ggZWxlbWVudCBpcyBhbGxvd2VkLlxuICAgKiBEZWZhdWx0cyB0byAnZm9vdGVyJy5cbiAgICovXG4gIGNvbnRhaW5lckVsZW1lbnQ/OiBzdHJpbmcgfCBhbnlcbn1cblxuaW50ZXJmYWNlIERldnRvb2xzUGFuZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByZWFjdCB0YWJsZSB0byBhdHRhY2ggdGhlIGRldnRvb2xzIHRvLlxuICAgKi9cbiAgdGFibGU6IGFueVxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIFJlYWN0IHN0eWxlIG9iamVjdCB1c2VkIHRvIHN0eWxlIGEgY29tcG9uZW50IHdpdGggaW5saW5lIHN0eWxlc1xuICAgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3QgY2xhc3NOYW1lIHByb3BlcnR5IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBjbGFzc2VzXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEEgYm9vbGVhbiB2YXJpYWJsZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHBhbmVsIGlzIG9wZW4gb3IgY2xvc2VkXG4gICAqL1xuICBpc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgdG9nZ2xlcyB0aGUgb3BlbiBhbmQgY2xvc2Ugc3RhdGUgb2YgdGhlIHBhbmVsXG4gICAqL1xuICBzZXRJc09wZW46IChpc09wZW46IGJvb2xlYW4pID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0VGFibGVEZXZ0b29scyh7XG4gIGluaXRpYWxJc09wZW4sXG4gIHRhYmxlLFxuICBwYW5lbFByb3BzID0ge30sXG4gIHRvZ2dsZUJ1dHRvblByb3BzID0ge30sXG4gIGNvbnRhaW5lckVsZW1lbnQ6IENvbnRhaW5lciA9ICdmb290ZXInLFxufTogRGV2dG9vbHNPcHRpb25zKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHJvb3RSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBhbmVsUmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICdyZWFjdFRhYmxlRGV2dG9vbHNPcGVuJyxcbiAgICBpbml0aWFsSXNPcGVuXG4gIClcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcblxuICBjb25zdCB7IHN0eWxlOiBwYW5lbFN0eWxlID0ge30sIC4uLm90aGVyUGFuZWxQcm9wcyB9ID0gcGFuZWxQcm9wc1xuXG4gIGNvbnN0IHtcbiAgICBzdHlsZTogdG9nZ2xlQnV0dG9uU3R5bGUgPSB7fSxcbiAgICBvbkNsaWNrOiBvblRvZ2dsZUNsaWNrLFxuICAgIC4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHNcbiAgfSA9IHRvZ2dsZUJ1dHRvblByb3BzXG5cbiAgLy8gRG8gbm90IHJlbmRlciBvbiB0aGUgc2VydmVyXG4gIGlmICghaXNNb3VudGVkKCkpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIHJlZj17cm9vdFJlZn0gY2xhc3NOYW1lPVwiUmVhY3RUYWJsZURldnRvb2xzXCI+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICB7IWlzT3BlbiA/IChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHsuLi5vdGhlclRvZ2dsZUJ1dHRvblByb3BzfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk9wZW4gUmVhY3QgVGFibGUgRGV2dG9vbHNcIlxuICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgICAgICAgICBvblRvZ2dsZUNsaWNrICYmIG9uVG9nZ2xlQ2xpY2soZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnbm9uZScsXG4gICAgICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgICAgbWFyZ2luOiAnLjVyZW0nLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICBmb250U2l6ZTogJzEuNWVtJyxcbiAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgIHdpZHRoOiAnZml0LWNvbnRlbnQnLFxuICAgICAgICAgICAgICAuLi50b2dnbGVCdXR0b25TdHlsZSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ28gYXJpYS1oaWRkZW4gLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UmVhY3RUYWJsZURldnRvb2xzUGFuZWxcbiAgICAgICAgICAgIHJlZj17cGFuZWxSZWYgYXMgYW55fVxuICAgICAgICAgICAgey4uLm90aGVyUGFuZWxQcm9wc31cbiAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIGlzT3Blbj17aXNPcGVufVxuICAgICAgICAgICAgc2V0SXNPcGVuPXtzZXRJc09wZW59XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICc4MHZoJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgLi4ucGFuZWxTdHlsZSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgRGV2dG9vbHNQYW5lbE9wdGlvbnNcbj4oZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzUGFuZWwocHJvcHMsIHJlZik6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHtcbiAgICB0YWJsZSxcbiAgICBpc09wZW4gPSB0cnVlLFxuICAgIHNldElzT3BlbixcbiAgICAuLi5wYW5lbFByb3BzXG4gIH0gPSBwcm9wcyBhcyBEZXZ0b29sc1BhbmVsT3B0aW9ucyAmIHtcbiAgICB0YWJsZTogVGFibGU8YW55PlxuICB9XG5cbiAgLy8gY29uc3QgW2FjdGl2ZU1hdGNoSWQsIHNldEFjdGl2ZVJvdXRlSWRdID0gdXNlTG9jYWxTdG9yYWdlKFxuICAvLyAgICdyZWFjdFRhYmxlRGV2dG9vbHNBY3RpdmVSb3V0ZUlkJyxcbiAgLy8gICAnJyxcbiAgLy8gKVxuXG4gIHJldHVybiAoXG4gICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgIDxQYW5lbCByZWY9e3JlZn0gY2xhc3NOYW1lPVwiUmVhY3RUYWJsZURldnRvb2xzUGFuZWxcIiB7Li4ucGFuZWxQcm9wc30+XG4gICAgICAgIDxzdHlsZVxuICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICBfX2h0bWw6IGBcbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqIHtcbiAgICAgICAgICAgICAgc2Nyb2xsYmFyLWNvbG9yOiAke3RoZW1lLmJhY2tncm91bmRBbHR9ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhciwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhciB7XG4gICAgICAgICAgICAgIHdpZHRoOiAxZW07XG4gICAgICAgICAgICAgIGhlaWdodDogMWVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2ssIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXItdHJhY2sge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmJhY2tncm91bmRBbHR9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIsIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXItdGh1bWIge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmdyYXl9O1xuICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAuNWVtO1xuICAgICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAke3RoZW1lLmJhY2tncm91bmRBbHR9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBmbGV4OiAnMSAxIDUwMHB4JyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzQwJScsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke3RoZW1lLmdyYXlBbHR9YCxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRoZW1lLmJhY2tncm91bmRBbHQsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMb2dvXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogJ2NsYW1wKC44cmVtLCAydncsIDEuM3JlbSknLFxuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVhY3QgVGFibGV7JyAnfVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAxMDAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIERldnRvb2xzXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2xvc2VcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgICAgICAgICAgICBmbGV4OiAnMScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJJbnN0YW5jZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLjVyZW0nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiU3RhdGVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRTdGF0ZSgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLjVyZW0nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEFsbENvbHVtbnMoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZmxleDogJzEgMSBhdXRvJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29yZSBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldENvcmVSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRmlsdGVyZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTb3J0ZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRTb3J0ZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiR3JvdXBlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEdyb3VwZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRXhwYW5kZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRFeHBhbmRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgey8qIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJSb3cgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj4gKi99XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9QYW5lbD5cbiAgICA8L1RoZW1lUHJvdmlkZXI+XG4gIClcbn0pXG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZnVuY3Rpb24gU2tlbGV0b24oeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50Pikge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtYW5pbWF0ZS1wdWxzZSBwcy1yb3VuZGVkLW1kIHBzLWJnLWZvcmVncm91bmQvMTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgU2tlbGV0b24gfTtcbiIsICJpbXBvcnQgeyBmbGV4UmVuZGVyLCB0eXBlIEhlYWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEFycm93RG93bldpZGVOYXJyb3csIEFycm93VXBXaWRlTmFycm93LCBDaGV2cm9uRG93biwgTW92ZURvd24sIE1vdmVVcCwgUGluLCBQaW5PZmYsIFggfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUl0ZW0sXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG59IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlclByb3BzPFREYXRhPiB7XG4gIGhlYWRlcjogSGVhZGVyPFREYXRhLCB1bmtub3duPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXI8VERhdGE+KHByb3BzOiBIZWFkZXJQcm9wczxURGF0YT4pIHtcbiAgY29uc3QgeyBoZWFkZXIsIGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW5cIiwgY2xhc3NOYW1lKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy1mb250LW1vbm8gcHMtdGV4dC14c1wiPlxuICAgICAgICAgIHtoZWFkZXIuaXNQbGFjZWhvbGRlciA/IG51bGwgOiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLW1pbi13LTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtbWluLXctMCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LWZvcmVncm91bmQvOTBcIj5cbiAgICAgICAgICAgICAgICB7ZmxleFJlbmRlcihoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIsIGhlYWRlci5nZXRDb250ZXh0KCkpfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1zaHJpbmstMCBwcy1nYXAtMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLW1sLTFcIj5cbiAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNTb3J0ZWQoKSA9PT0gXCJkZXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImRlc2NcIlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiAtNCB9fVxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB5OiAwIH19XG4gICAgICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZURvd24gc2l6ZT17MTR9IGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICApIDogaGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9XCJhc2NcIlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogNCB9fVxuICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4yIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1vdmVVcCBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblBpbigpICYmIGhlYWRlci5jb2x1bW4uaWQgIT09IFwic2VsZWN0XCIgJiYgKFxuICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInBzLXB4LTAgcHMtaC02IHBzLXctNlwiPlxuICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duIHNpemU9ezEyfSAvPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblNvcnQoKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51SXRlbSBvbkNsaWNrPXsoKSA9PiBoZWFkZXIuY29sdW1uLnRvZ2dsZVNvcnRpbmcoKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd0Rvd25XaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGRlc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldE5leHRTb3J0aW5nT3JkZXIoKSA9PT0gXCJhc2NcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd1VwV2lkZU5hcnJvdyBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBhc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8WCBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsIHNvcnRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4ucGluKGhlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IGZhbHNlIDogXCJsZWZ0XCIpfT5cbiAgICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldElzUGlubmVkKCkgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBpbk9mZiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICBVbnBpbiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFBpbiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUl0ZW0+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUmVzaXplKCkgJiYgKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgb25Nb3VzZURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uVG91Y2hTdGFydD17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIgfHwgZS5rZXkgPT09IFwiIFwiKSB7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcInBzLWFic29sdXRlIHBzLXJpZ2h0LTAgcHMtdG9wLTAgcHMtaC1mdWxsIHBzLXctcHggcHMtY3Vyc29yLWNvbC1yZXNpemUgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBob3Zlcjpwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVzaXplIGNvbHVtblwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIERyb3Bkb3duTWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRyb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93bk1lbnUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgRHJvcGRvd25NZW51VHJpZ2dlciA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBEcm9wZG93bk1lbnVHcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51UG9ydGFsID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9Hcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0b1wiIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkRyb3Bkb3duTWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bdmFyKC0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpXSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZFwiLFxuICAgICAgICBcImRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ecm9wZG93bk1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MCBbJj5zdmddOnBzLXNpemUtNCBbJj5zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51SXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2lyY2xlIGNsYXNzTmFtZT1cInBzLWgtMiBwcy13LTIgcHMtZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51TGFiZWwuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2hvcnRjdXQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLW9wYWNpdHktNjBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn07XG5Ecm9wZG93bk1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgRHJvcGRvd25NZW51LFxuICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVDb250ZW50LFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgRHJvcGRvd25NZW51TGFiZWwsXG4gIERyb3Bkb3duTWVudVNlcGFyYXRvcixcbiAgRHJvcGRvd25NZW51U2hvcnRjdXQsXG4gIERyb3Bkb3duTWVudUdyb3VwLFxuICBEcm9wZG93bk1lbnVQb3J0YWwsXG4gIERyb3Bkb3duTWVudVN1YixcbiAgRHJvcGRvd25NZW51U3ViQ29udGVudCxcbiAgRHJvcGRvd25NZW51U3ViVHJpZ2dlcixcbiAgRHJvcGRvd25NZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkTG9hZGluZ0Jhcih7IGNsYXNzTmFtZSB9OiBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtbG9hZGluZy1iYXJcbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLVsycHhdIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtYmctdGFibGUtYm9yZGVyIHBzLXotNTBcIiwgY2xhc3NOYW1lKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWFuaW1hdGUtaW5kZXRlcm1pbmF0ZS1iYXIgcHMtaC1mdWxsIHBzLXctMS8zIHBzLXJvdW5kZWQtci1mdWxsIHBzLWJnLXByaW1hcnlcIiAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCwgQ2hldnJvbnNMZWZ0LCBDaGV2cm9uc1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHZhcmlhbnQ/OiBcImJhc2ljXCIgfCBcIm51bWVyaWNcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkUGFnaW5hdGlvbihwcm9wczogRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZSwgdmFyaWFudCA9IFwiYmFzaWNcIiB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBwYWdlSW5kZXggfSA9IHRhYmxlLmdldFN0YXRlKCkucGFnaW5hdGlvbjtcbiAgY29uc3QgcGFnZUNvdW50ID0gdGFibGUuZ2V0UGFnZUNvdW50KCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJvdW5kZWQtYi1sZyBwcy1vdmVyZmxvdy1jbGlwIHBzLXN0aWNreSBwcy1ib3R0b20tMCBwcy1sZWZ0LTAgcHMtYm9yZGVyLXQtMCB3LWZ1bGwgcHMtei0yMCBwcy1wLTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXNwYWNlLXgtMiBwcy1weS0yIHBzLXB4LTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy1iYWNrZHJvcC1ibHVyLXNtIHBzLWJnLXRhYmxlLWhlYWQvOTBcIj5cbiAgICAgICAge3ZhcmlhbnQgPT09IFwiYmFzaWNcIiA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQcmV2aW91c1xuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC05XCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBOZXh0XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleCgwKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy10ZXh0LXhzIHBzLWZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgUGFnZVxuICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBtaW49ezF9XG4gICAgICAgICAgICAgICAgICBtYXg9e3BhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYWdlSW5kZXggKyAxfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0xNlwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZUluZGV4ID0gZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIC0gMSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXNocmluay0wIHBzLXctbWF4XCI+b2Yge3BhZ2VDb3VudH08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUNvdW50IC0gMSl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zUmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtblBpbm5pbmdTdHlsZXMoY29sdW1uOiBDb2x1bW48UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBraW5kOiBcImhlYWRlclwiIHwgXCJjZWxsXCIpIHtcbiAgY29uc3QgaXNQaW5uZWQgPSBjb2x1bW4uZ2V0SXNQaW5uZWQoKTtcbiAgY29uc3QgaXNMZWZ0UGlubmVkID0gaXNQaW5uZWQgPT09IFwibGVmdFwiO1xuICBjb25zdCBpc1JpZ2h0UGlubmVkID0gaXNQaW5uZWQgPT09IFwicmlnaHRcIjtcbiAgY29uc3QgaXNTZWxlY3RDb2x1bW4gPSBjb2x1bW4uaWQgPT09IFwiX19wc19zZWxlY3RcIjtcblxuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZTogY24oXG4gICAgICBcInBzLWdyb3VwIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgIFwicHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXRleHQtZWxsaXBzaXNcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYgXCJwcy1zdGlja3lcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJoZWFkZXJcIiAmJiAoaXNTZWxlY3RDb2x1bW4gPyBcInBzLXotMzBcIiA6IFwicHMtei0yMFwiKSxcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJjZWxsXCIgJiYgKGlzU2VsZWN0Q29sdW1uID8gXCJwcy16LTEwXCIgOiBcInBzLXotMFwiKSxcbiAgICAgIGlzTGVmdFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bMnB4XzBfNXB4Xy0ycHhfcmdiYSgwLDAsMCwwLjEpXVwiLFxuICAgICAgaXNSaWdodFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bLTJweF8wXzVweF8tMnB4X3JnYmEoMCwwLDAsMC4xKV1cIixcbiAgICApLFxuICAgIHN0eWxlOiB7XG4gICAgICBtaW5XaWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICB3aWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICBsZWZ0OiBpc0xlZnRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0U3RhcnQoXCJsZWZ0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiBpc1JpZ2h0UGlubmVkID8gYCR7Y29sdW1uLmdldEFmdGVyKFwicmlnaHRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcG9zaXRpb246IGlzUGlubmVkID8gKFwic3RpY2t5XCIgYXMgY29uc3QpIDogdW5kZWZpbmVkLFxuICAgIH0gYXMgQ1NTUHJvcGVydGllcyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgKiBhcyBUb29sdGlwUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdG9vbHRpcFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRvb2x0aXBQcm92aWRlciA9IFRvb2x0aXBQcmltaXRpdmUuUHJvdmlkZXI7XG5cbmNvbnN0IFRvb2x0aXAgPSBUb29sdGlwUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRvb2x0aXBUcmlnZ2VyID0gVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBUb29sdGlwQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1iZy1wcmltYXJ5IHBzLXB4LTMgcHMtcHktMS41IHBzLXRleHQteHMgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtYW5pbWF0ZS1pbiBwcy1mYWRlLWluLTAgcHMtem9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1Rvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ub29sdGlwQ29udGVudC5kaXNwbGF5TmFtZSA9IFRvb2x0aXBQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgVG9vbHRpcCwgVG9vbHRpcFRyaWdnZXIsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIgfTtcbiIsICJpbXBvcnQgeyBLZXlSb3VuZCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90b29sdGlwXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlckNlbGwoeyBjb2x1bW4gfTogeyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAge2NvbHVtbi5pc0luUHJpbWFyeUtleSAmJiAoXG4gICAgICAgIDxUb29sdGlwUHJvdmlkZXIgZGVsYXlEdXJhdGlvbj17MTIwfT5cbiAgICAgICAgICA8VG9vbHRpcD5cbiAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICA8S2V5Um91bmQgc2l6ZT17MTJ9IGNsYXNzTmFtZT1cInBzLXRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50IHNpZGU9XCJib3R0b21cIiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlByaW1hcnkgS2V5PC9zcGFuPlxuICAgICAgICAgICAgPC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvVG9vbHRpcFByb3ZpZGVyPlxuICAgICAgKX1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtbWVkaXVtIHBzLXRydW5jYXRlXCI+e2NvbHVtbi5uYW1lfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC83MCBwcy1sb3dlcmNhc2UgcHMtdHJ1bmNhdGVcIj5cbiAgICAgICAge2NvbHVtbi5kYXRhdHlwZS5uYW1lfVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiLi9Cb29sZWFuSW5wdXRcIjtcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gXCIuL0RhdGVJbnB1dFwiO1xuaW1wb3J0IHsgRW51bUlucHV0IH0gZnJvbSBcIi4vRW51bUlucHV0XCI7XG5pbXBvcnQgeyBKc29uSW5wdXQgfSBmcm9tIFwiLi9Kc29uSW5wdXRcIjtcbmltcG9ydCB7IE51bWVyaWNJbnB1dCB9IGZyb20gXCIuL051bWVyaWNJbnB1dFwiO1xuaW1wb3J0IHsgUmF3SW5wdXQgfSBmcm9tIFwiLi9SYXdJbnB1dFwiO1xuaW1wb3J0IHsgVGltZUlucHV0IH0gZnJvbSBcIi4vVGltZUlucHV0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dChwcm9wczoge1xuICBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0OiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCB7IGNlbGwsIGNvbHVtbiwgb25TdWJtaXQgfSA9IHByb3BzO1xuICBjb25zdCB7IGdyb3VwLCBvcHRpb25zLCBpc0FycmF5IH0gPSBjb2x1bW4uZGF0YXR5cGU7XG4gIGNvbnN0IHJlYWRvbmx5ID0gY29sdW1uLmlzQ29tcHV0ZWQgfHwgcHJvcHMucmVhZG9ubHk7XG5cbiAgY29uc3QgY2VsbFZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIC8vIG9uIHJvdyBpbnNlcnRpb25zLCB3ZSB0cmVhdCB1bmRlZmluZWQgYXMgZW1wdHkgaW5wdXRcbiAgY29uc3QgdmFsdWUgPSBjZWxsVmFsdWUgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBjZWxsVmFsdWU7XG5cbiAgaWYgKGdyb3VwID09PSBcImRhdGV0aW1lXCIpIHtcbiAgICByZXR1cm4gPERhdGVJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImpzb25cIiB8fCBpc0FycmF5KSB7XG4gICAgcmV0dXJuIDxKc29uSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiA8Qm9vbGVhbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gb3B0aW9ucz17b3B0aW9uc30gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UmF3SW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17aXNPYmplY3RUeXBlKHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9sYWJlbFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQm9vbGVhbklucHV0KHByb3BzOiBCb29sZWFuSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCA/IGZhbHNlIDogKHZhbHVlIGFzIGJvb2xlYW4pKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlVG9TdWJtaXQgPSBzZXRUb051bGwgPyBudWxsIDogY3VycmVudFZhbHVlO1xuICAgIGlmICh2YWx1ZVRvU3VibWl0ICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQodmFsdWVUb1N1Ym1pdCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMCBwcy1weC0yXCI+XG4gICAgICAgIDxMYWJlbCBodG1sRm9yPVwiYm9vbGVhbi1pbnB1dFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIj5cbiAgICAgICAgICBCb29sZWFuXG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMjQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgIGlkPVwiYm9vbGVhbi1pbnB1dFwiXG4gICAgICAgICAgICBjaGVja2VkPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGRhdGEtdmFsdWVcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtZm9udC1tb25vXCJcbiAgICAgICAgICBpbml0aWFsPXt7IHg6IC00MCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgeDogMCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTIsIGRlbGF5OiAwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7c2V0VG9OdWxsID8gXCJOVUxMXCIgOiBTdHJpbmcoY3VycmVudFZhbHVlKX1cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgTGFiZWxQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1sYWJlbFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBsYWJlbFZhcmlhbnRzID0gY3ZhKFxuICBcInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtbGVhZGluZy1ub25lIHBlZXItZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIHBlZXItZGlzYWJsZWQ6cHMtb3BhY2l0eS03MFwiLFxuKTtcblxuY29uc3QgTGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PiAmIFZhcmlhbnRQcm9wczx0eXBlb2YgbGFiZWxWYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPExhYmVsUHJpbWl0aXZlLlJvb3QgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24obGFiZWxWYXJpYW50cygpLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcbkxhYmVsLmRpc3BsYXlOYW1lID0gTGFiZWxQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgTGFiZWwgfTtcbiIsICJpbXBvcnQgKiBhcyBTd2l0Y2hQcmltaXRpdmVzIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc3dpdGNoXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU3dpdGNoID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTd2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTd2l0Y2hQcmltaXRpdmVzLlJvb3RcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWlubGluZS1mbGV4IHBzLWgtNSBwcy13LTkgcHMtc2hyaW5rLTAgcHMtY3Vyc29yLXBvaW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtZnVsbCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0yIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGZvY3VzLXZpc2libGU6cHMtcmluZy1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLWJnLWlucHV0XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gICAgcmVmPXtyZWZ9XG4gID5cbiAgICA8U3dpdGNoUHJpbWl0aXZlcy5UaHVtYlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1wb2ludGVyLWV2ZW50cy1ub25lIHBzLWJsb2NrIHBzLWgtNCBwcy13LTQgcHMtcm91bmRlZC1mdWxsIHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LWxnIHBzLXJpbmctMCBwcy10cmFuc2l0aW9uLXRyYW5zZm9ybSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10cmFuc2xhdGUteC00IGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtMFwiLFxuICAgICAgKX1cbiAgICAvPlxuICA8L1N3aXRjaFByaW1pdGl2ZXMuUm9vdD5cbikpO1xuU3dpdGNoLmRpc3BsYXlOYW1lID0gU3dpdGNoUHJpbWl0aXZlcy5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBTd2l0Y2ggfTtcbiIsICJpbXBvcnQgeyBDb3JuZXJEb3duTGVmdCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc3dpdGNoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRBY3Rpb25zUHJvcHMge1xuICBvblNhdmU/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBvbk51bGxDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaXNOdWxsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBJbnB1dEFjdGlvbnMgPSAoe1xuICBvblNhdmUsXG4gIG9uQ2FuY2VsLFxuICBvbkNsb3NlLFxuICBvbk51bGxDaGFuZ2UsXG4gIGlzTnVsbCA9IGZhbHNlLFxuICByZWFkb25seSxcbn06IElucHV0QWN0aW9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChvbk51bGxDaGFuZ2UpIG9uTnVsbENoYW5nZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gKCkgPT4ge1xuICAgIGlmIChvblNhdmUpIG9uU2F2ZSgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGlmIChvbkNhbmNlbCkgb25DYW5jZWwoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdGV4dC14cyBwcy1cIj5cbiAgICAgIHshcmVhZG9ubHkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTIgcHMtbXItYXV0b1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZVNhdmV9PlxuICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgPENvcm5lckRvd25MZWZ0IHNpemU9ezEyfSBzdHJva2VXaWR0aD17Mn0gLz5cbiAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICBTYXZlIGNoYW5nZXNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH0+XG4gICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtdGV4dC1bOHB4XSBwcy1sZWFkaW5nLW5vbmUgcHMtZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgIEVzY1xuICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgIENhbmNlbCBjaGFuZ2VzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7b25OdWxsQ2hhbmdlICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyXCIgaHRtbEZvcj1cInNldC1udWxsYWJsZVwiPlxuICAgICAgICAgICAgICAgIDxTd2l0Y2ggaWQ9XCJzZXQtbnVsbGFibGVcIiBjaGVja2VkPXtpc051bGx9IG9uQ2hlY2tlZENoYW5nZT17aGFuZGxlTnVsbENoYW5nZX0gLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5TZXQgdG8gTlVMTDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVJbnB1dChwcm9wczogRGF0ZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICAvLyBGb3JtYXQgdGhlIGRhdGUgdXNpbmcgZGF5anMgYmFzZWQgb24gZGV0ZWN0ZWQgZm9ybWF0XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKCFkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIC8vIERldGVjdCBpZiBpbnB1dCBoYXMgdGltZSBjb21wb25lbnRcbiAgICAgIGNvbnN0IGhhc1RpbWUgPSBpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKTtcblxuICAgICAgLy8gSHVtYW4tcmVhZGFibGUgZm9ybWF0IChsb2NhbGl6ZWQpXG4gICAgICBpZiAoaGFzVGltZSkge1xuICAgICAgICAvLyBGb3IgdGltZXN0YW1wcywgc2hvdyBmdWxsIGRhdGUgYW5kIHRpbWVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTEwgTFRTXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIGRhdGVzLCBqdXN0IHNob3cgdGhlIGRhdGVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTExcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWREYXRlfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlSW5wdXRQcm9wcyB7XG4gIGluaXRpYWxWYWx1ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlucHV0KHByb3BzOiBVc2VJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlIH0gPSBwcm9wcztcblxuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlID8/IFwiXCIpO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgYmFkZ2VWYXJpYW50cyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtSW5wdXQocHJvcHM6IEVudW1JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIGNvbHVtbiwgdmFsdWUsIG9wdGlvbnMgPSBbXSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGwsIHZhbHVlXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7IC8vIFJlc2V0IG51bGwgc3RhdGUgYXMgd2VsbFxuICB9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLWZvbnQtbW9ubyBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1weC0yIHBzLXB5LTAgcHMtdy1mdWxsIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgIHtjdXJyZW50VmFsdWV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1mbGV4LXdyYXAgcHMtZ2FwLTIgcHMtcC0yIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXSBwcy1tYXgtdy1bNTAwcHhdIHctZnVsbCBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLW92ZXJmbG93LXktc2Nyb2xsIHBzLW1heC1oLTMyXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAga2V5PXtvcHRpb259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQ6IG9wdGlvbiA9PT0gY3VycmVudFZhbHVlID8gXCJkZWZhdWx0XCIgOiBcIm91dGxpbmVcIiB9KX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSnNvbklucHV0KHByb3BzOiBKc29uSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogKEpTT04ucGFyc2UoY3VycmVudFZhbHVlKSBhcyBvYmplY3QpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGpzb25WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGpzb25WYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByb3dzPXs1fVxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtYmFzZSBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNJbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0lucHV0KHByb3BzOiBOdW1lcmljSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSkpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gbnVtYmVyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcihjdXJyZW50VmFsdWUpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KG51bWVyaWNWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cIm51bWVyaWMtaW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgTnVtZXJpY1xuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0lucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3SW5wdXQocHJvcHM6IFJhd0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lSW5wdXQocHJvcHM6IFRpbWVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRpbWUgdmFsdWVzIGluIGEgaHVtYW4tcmVhZGFibGUgbWFubmVyXG4gIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIGNvbnN0IGhhc1RpbWV6b25lID0gL1srLV1cXGR7Mn0oOlxcZHsyfSk/JC8udGVzdChpbnB1dFZhbHVlKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhgMjAwMC0wMS0wMSAke2lucHV0VmFsdWV9YCk7XG4gICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiaDptbSBBXCIpICsgKGhhc1RpbWV6b25lID8gYCAoJHtkYXRlLmZvcm1hdChcIlpcIil9KWAgOiBcIlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZVJlZ2V4ID0gLyhcXGR7MSwyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC5cXGQrKT8oWystXVxcZHsyfSg/OjpcXGR7Mn0pPyk/LztcbiAgICAgIGNvbnN0IG1hdGNoID0gaW5wdXRWYWx1ZS5tYXRjaCh0aW1lUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQobWF0Y2hbMV0gfHwgXCIxMlwiLCAxMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtYXRjaFsyXSB8fCBcIjAwXCI7XG4gICAgICAgIGNvbnN0IHR6T2Zmc2V0ID0gbWF0Y2hbNF0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgcGVyaW9kID0gaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG4gICAgICAgIGNvbnN0IGhvdXIxMiA9IGhvdXJzICUgMTIgPT09IDAgPyAxMiA6IGhvdXJzICUgMTI7XG5cbiAgICAgICAgcmV0dXJuIGAke2hvdXIxMn06JHttaW51dGVzfSAke3BlcmlvZH0ke3R6T2Zmc2V0ID8gYCAoJHt0ek9mZnNldH0pYCA6IFwiXCJ9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWRUaW1lfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IENvbHVtbkRlZiwgVGFibGUsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5cbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IENlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vY2VsbC9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgc3RhZ2VkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgc2V0U3RhZ2VkUm93czogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0YWdlZFJvd3MocHJvcHM6IFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGU6IHBhcmVudFRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH0gPSBwcm9wcztcbiAgY29uc3QgcmVhZG9ubHkgPSBCb29sZWFuKHVzZUlzSW5zZXJ0aW5nKCkpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YWdlZFJvdyhyb3dJbmRleDogbnVtYmVyLCBwYXJ0aWFsUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHNldFN0YWdlZFJvd3MoKHByZXZSb3dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnByZXZSb3dzXTtcbiAgICAgIG5ld1Jvd3Nbcm93SW5kZXhdID0geyAuLi5uZXdSb3dzW3Jvd0luZGV4XSwgLi4ucGFydGlhbFJvdyB9O1xuXG4gICAgICByZXR1cm4gbmV3Um93cztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudFRhYmxlLm9wdGlvbnMuY29sdW1ucykubWFwKChjb2x1bW4pID0+IHtcbiAgICBpZiAoY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgY2VsbCgpIHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gPEVtcHR5Q2VsbCAvPjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLCBwcm9wcyB9KX1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YWdlZFJvdyhwcm9wcy5yb3dJbmRleCwgeyBbY29sdW1uLmlkIV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgLi4ucGFyZW50VGFibGUub3B0aW9ucyxcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZTogdW5kZWZpbmVkLFxuICAgIG9uU29ydGluZ0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHN0YWdlZFJvd3MsXG4gICAgc3RhdGU6IG9taXQocGFyZW50VGFibGUub3B0aW9ucy5zdGF0ZSwgW1wicGFnaW5hdGlvblwiLCBcInNvcnRpbmdcIl0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgIDxUYWJsZVJvdyBrZXk9e2l9PlxuICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfT47XG4gICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxDZWxsIGtleT17an0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0gcm93SW5kZXg9e2l9IC8+O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IFRhYmxlMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbnR5cGUgTmF2aWdhdGlvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvbih7IGNsYXNzTmFtZSB9OiBOYXZpZ2F0aW9uUHJvcHMpIHtcbiAgLy8gVXNlIHRoZSBjdXN0b20gaG9vayB0byBnZXQgYWxsIG5lY2Vzc2FyeSBzdGF0ZSBhbmQgaGFuZGxlcnNcbiAgY29uc3QgeyB0YWJsZXMsIGFjdGl2ZVRhYmxlLCBpc0xvYWRpbmcsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuXG4gIGNvbnN0IHNpZGVCYXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctNDggcHMtZ2FwLTQgcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtMCBwcy10ZXh0LWNhcmQtZm9yZWdyb3VuZCBwcy1zaGFkb3cteHNcIixcbiAgICBjbGFzc05hbWUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c2lkZUJhckNsYXNzZXN9PlxuICAgICAgey8qIFRPRE86IHNjaGVtYSBzZWxlY3Rvci4gKi99XG4gICAgICA8TmF2aWdhdGlvbi5CbG9jayBsYWJlbD1cIlRhYmxlc1wiPlxuICAgICAgICB7dGFibGVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgdGFibGVzLm1hcCgodGFibGUpID0+IChcbiAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgJHt0YWJsZS5zY2hlbWF9LSR7dGFibGUubmFtZX1gfVxuICAgICAgICAgICAgICBhc0NoaWxkXG4gICAgICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVUYWJsZSA9PT0gdGFibGV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBzLXB5LTEgcHMtZm9udC1tb25vIHBzLXRleHQteHMgcHMtdGV4dC1mb3JlZ3JvdW5kLzYwIGhvdmVyOnBzLXRleHQtZm9yZWdyb3VuZCBwcy10cmFuc2l0aW9uLWFsbCBwcy1jdXJzb3ItcG9pbnRlciBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtYmctc2xhdGUtMjAwIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1mb3JlZ3JvdW5kIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy10ZXh0LWZvcmVncm91bmRgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YSBocmVmPXtgI3RhYmxlPSR7dGFibGUubmFtZX0mc2NoZW1hPSR7dGFibGUuc2NoZW1hfWB9Pnt0YWJsZS5uYW1lfTwvYT5cbiAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICkgOiBpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgQXJyYXkoNClcbiAgICAgICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKChfLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtIGtleT17aW5kZXh9IHdyYXBDaGlsZHJlbkluU3Bhbj17ZmFsc2V9PlxuICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTMgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgICApKVxuICAgICAgICApIDogKFxuICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0+Tm8gdGFibGVzIGZvdW5kPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICl9XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IEJsb2NrID0gKHsgY2xhc3NOYW1lLCBsYWJlbCwgY2hpbGRyZW4sIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIHsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gey4uLnByb3BzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgICAgPFRhYmxlMiBzaXplPXsxNn0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCIgLz5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW1cIj57bGFiZWx9PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5hdiBhcmlhLWxhYmVsPXtsYWJlbH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtcHggcHMtcGItMyBwcy1wLTJcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBJdGVtID0gKHtcbiAgY2xhc3NOYW1lLFxuICBhc0NoaWxkID0gZmFsc2UsXG4gIGlzQWN0aXZlLFxuICBzaXplLFxuICBjaGlsZHJlbixcbiAgd3JhcENoaWxkcmVuSW5TcGFuID0gdHJ1ZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiYnV0dG9uXCI+ICYge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCI7XG4gIHdyYXBDaGlsZHJlbkluU3Bhbj86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudS1idXR0b25cIlxuICAgICAgZGF0YS1zaXplPXtzaXplfVxuICAgICAgZGF0YS1hY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1weS0xLjUgcHMtcHgtMiBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXJvdW5kZWQtbWQgcHMtZmxleCBwcy1nYXAtMiBwcy1pdGVtcy1jZW50ZXIgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy10cmFuc3BhcmVudFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHt3cmFwQ2hpbGRyZW5JblNwYW4gPyA8c3BhbiBjbGFzc05hbWU9XCJwcy10cnVuY2F0ZVwiPntjaGlsZHJlbn08L3NwYW4+IDogY2hpbGRyZW59XG4gICAgPC9Db21wPlxuICApO1xufTtcblxuTmF2aWdhdGlvbi5CbG9jayA9IEJsb2NrO1xuTmF2aWdhdGlvbi5JdGVtID0gSXRlbTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IFRhYmxlIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBrZXlNYXAsIHVzZVF1ZXJ5U3RhdGUsIHVzZVF1ZXJ5U3RhdGVzIH0gZnJvbSBcIi4vbnVxc1wiO1xuaW1wb3J0IHsgSU5JVElBTF9EQVRBX1VQREFURURfQVQsIHVzZUludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi91c2UtaW50cm9zcGVjdGlvblwiO1xuXG4vKipcbiAqIEhvb2sgdG8gZW5jYXBzdWxhdGUgYWxsIGxvZ2ljIGZvciBtYW5hZ2luZyB0aGUgYWN0aXZlIHRhYmxlIHNlbGVjdGlvbi5cbiAqIEhhbmRsZXMgc3luY2luZyB3aXRoIFVSTCBwYXJhbXMsIGRlZmF1bHQgc2VsZWN0aW9uLCBhbmQgZXhwb3NlcyBhIHNpbXBsZSBBUEkgZm9yIGNvbnN1bWVycy5cbiAqIFNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aGluIFN0dWRpbyBjb250ZXh0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlLCBhZGFwdGVyLCBlbWl0VGVsZW1ldHJ5RXZlbnQgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGRhdGFVcGRhdGVkQXQgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgaXNMb2FkaW5nID0gZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQ7XG5cbiAgLy8gR2V0IGFsbCB0YWJsZXMgZm9yIHRoZSBjdXJyZW50IHNjaGVtYVxuICBjb25zdCB0YWJsZXM6IFRhYmxlW10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXNbYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwiZGJcIl0/LnRhYmxlcyB8fCB7fSk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXMsIGFkYXB0ZXIuZGVmYXVsdFNjaGVtYV0pO1xuXG4gIC8vIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgdGFibGVzIGFjcm9zcyBhbGwgc2NoZW1hc1xuICBjb25zdCB0b3RhbFRhYmxlQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXMpLnJlZHVjZSgoc3VtLCBzY2hlbWEpID0+IHtcbiAgICAgIHJldHVybiBzdW0gKyBPYmplY3Qua2V5cyhzY2hlbWEudGFibGVzKS5sZW5ndGg7XG4gICAgfSwgMCk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXNdKTtcblxuICBjb25zdCBbZmlyc3RUYWJsZV0gPSB0YWJsZXM7XG5cbiAgY29uc3QgW3RhYmxlQW5kU2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYV0gPSB1c2VRdWVyeVN0YXRlcyhcbiAgICBrZXlNYXAoe1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG4gIC8vIEFkZCBxdWVyeSBzdGF0ZSBmb3IgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXNcbiAgY29uc3QgWywgc2V0UGFnZVBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJwYWdlSW5kZXhcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuICBjb25zdCBbLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInNvcnRcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIEVmZmVjdCB0byBzeW5jIGFjdGl2ZSB0YWJsZSB3aXRoIFVSTCBwYXJhbSBhbmQgZGVmYXVsdHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNMb2FkaW5nKSByZXR1cm47XG4gICAgLy8gSWYgc2NoZW1hIGFuZCB0YWJsZSBwYXJhbXMgaW4gVVJMLCB0cnkgdG8gc2V0IHRoYXQgdGFibGVcbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnRhYmxlICYmIHRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0YWJsZUZyb21QYXJhbSA9IHRhYmxlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IHRhYmxlQW5kU2NoZW1hLnRhYmxlKTtcblxuICAgICAgaWYgKHRhYmxlRnJvbVBhcmFtKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKHRhYmxlRnJvbVBhcmFtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiBubyBzY2hlbWEvdGFibGUgcGFyYW1zIG9yIG5vdCBmb3VuZCwgc2V0IGZpcnN0IHRhYmxlIGFzIGRlZmF1bHRcbiAgICBpZiAodGFibGVzLmxlbmd0aCA+IDAgJiYgIWFjdGl2ZVRhYmxlKSB7XG4gICAgICBzZXRBY3RpdmVUYWJsZShmaXJzdFRhYmxlIHx8IG51bGwpO1xuICAgICAgaWYgKGZpcnN0VGFibGUpIHtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBmaXJzdFRhYmxlLm5hbWUsIHNjaGVtYTogZmlyc3RUYWJsZS5zY2hlbWEgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNMb2FkaW5nLCB0YWJsZUFuZFNjaGVtYSwgdGFibGVzLCBmaXJzdFRhYmxlLCBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hXSk7XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgYWN0aXZlIHRhYmxlIGFuZCB1cGRhdGUgdGhlIFVSTCBwYXJhbS5cbiAgICogQWxzbyBjbGVhcnMgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlVGFibGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VGFibGU6IFRhYmxlKSA9PiB7XG4gICAgICBpZiAoYWN0aXZlVGFibGUgIT09IG5ld1RhYmxlKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKG5ld1RhYmxlKTtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBuZXdUYWJsZS5uYW1lLCBzY2hlbWE6IG5ld1RhYmxlLnNjaGVtYSB9KTtcbiAgICAgICAgLy8gQ2xlYXIgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzXG4gICAgICAgIHZvaWQgc2V0UGFnZVBhcmFtKG51bGwpO1xuICAgICAgICB2b2lkIHNldFNvcnRQYXJhbShudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hLCBzZXRQYWdlUGFyYW0sIHNldFNvcnRQYXJhbV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUT0RPOiByZXBsYWNlIHdpdGggaXNMb2FkaW5nXG4gICAgaWYgKGRhdGFVcGRhdGVkQXQgIT09IC0xKSB7XG4gICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQoe1xuICAgICAgICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIixcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIGV2ZW50X2lkOiB1dWlkdjQoKSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB0YWJsZV9jb3VudDogdG90YWxUYWJsZUNvdW50LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbdGFibGVzLCBlbWl0VGVsZW1ldHJ5RXZlbnQsIGRhdGFVcGRhdGVkQXQsIHRvdGFsVGFibGVDb3VudF0pO1xuXG4gIHJldHVybiB7XG4gICAgdGFibGVzLFxuICAgIGFjdGl2ZVRhYmxlLFxuICAgIGlzTG9hZGluZyxcbiAgICBoYW5kbGVUYWJsZUNoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA9IC0xO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW50cm9zcGVjdGlvbigpIHtcbiAgY29uc3QgeyBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIGluaXRpYWxEYXRhOiB7XG4gICAgICBzY2hlbWFzOiB7XG4gICAgICAgIFthZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJkYlwiXToge1xuICAgICAgICAgIHRhYmxlczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGltZXpvbmU6IFwiVVRDXCIsXG4gICAgICBmaWx0ZXJPcGVyYXRvcnM6IFtdLFxuICAgIH0gc2F0aXNmaWVzIEludHJvc3BlY3Rpb24sXG4gICAgaW5pdGlhbERhdGFVcGRhdGVkQXQ6IElOSVRJQUxfREFUQV9VUERBVEVEX0FULFxuICAgIHF1ZXJ5Rm46IGFzeW5jICh7IHNpZ25hbCB9KSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIGludHJvc3BlY3Rpb25dID0gYXdhaXQgYWRhcHRlci5pbnRyb3NwZWN0KHsgYWJvcnRTaWduYWw6IHNpZ25hbCB9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW50cm9zcGVjdGlvbjtcbiAgICB9LFxuICAgIHF1ZXJ5S2V5OiBbXCJpbnRyb3NwZWN0aW9uXCJdLFxuICAgIC8vIGlmIGlzIGluaXRpYWwgZGF0YSwgcmVmZXRjaCBpbW1lZGlhdGVseSwgb3RoZXJ3aXNlLCBuZXZlciByZWZldGNoIGF1dG9tYXRpY2FsbHkgaW4gdGhlIGJhY2tncm91bmQuXG4gICAgLy8gd2UgY2FuIHN0aWxsIHJlZmV0Y2ggbWFudWFsbHkgdXNpbmcgdGhlIHF1ZXJ5IGNsaWVudCAtIHByb2JhYmx5IHRyaWdnZXJlZCBieSBhIGJ1dHRvbi5cbiAgICBzdGFsZVRpbWU6IChjdHgpID0+IChjdHguc3RhdGUuZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQgPyAwIDogSW5maW5pdHkpLFxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI0TUFBQSxPQUFTLG1CQUFBQSxHQUFpQixVQUFBQyxPQUFjLGVDQ3hDLE9BQTBCLFFBQUFDLE9BQVksT0NxQnRDLElBQU1DLEdBQXVCLElBRWhCQyxHQUF5QkMsR0FBeUIsQ0FDM0QsSUFBTUMsRUFBV0MsR0FBZUYsQ0FBTSxFQUNoQyxDQUFFRyx1QkFBQUEsRUFBd0JDLCtCQUFBQSxDQUFnQyxFQUFHSixFQTBCbkUsTUFBTyxDQUNISyxnQkF6QnFCQyxHQUFxQixDQUMxQyxJQUFNQyxFQUFhRCxFQUFVRSxNQUFNVixFQUFvQixFQUd2RCxPQUFJUyxFQUFXLENBQUMsSUFBTSxJQUFNQSxFQUFXRSxTQUFXLEdBQzlDRixFQUFXRyxNQUFLLEVBR2JDLEdBQWtCSixFQUFZTixDQUFRLEdBQUtXLEdBQStCTixDQUFTLENBQzlGLEVBaUJJTyw0QkFmZ0NBLENBQ2hDQyxFQUNBQyxJQUNBLENBQ0EsSUFBTUMsRUFBWWIsRUFBdUJXLENBQVksR0FBSyxDQUFBLEVBRTFELE9BQUlDLEdBQXNCWCxFQUErQlUsQ0FBWSxFQUMxRCxDQUFDLEdBQUdFLEVBQVcsR0FBR1osRUFBK0JVLENBQVksQ0FBRSxFQUduRUUsQ0FDWCxFQU1KLEVBRU1MLEdBQW9CQSxDQUN0QkosRUFDQVUsSUFDa0MsQ0FDbEMsR0FBSVYsRUFBV0UsU0FBVyxFQUN0QixPQUFPUSxFQUFnQkgsYUFHM0IsSUFBTUksRUFB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QyxDQUFFLEVBSzlDLGNBQWUsQ0FBQyxDQUFFK0csR0FBSSxDQUFDL0csQ0FBa0IsQ0FBQyxDQUFFLEVBTTVDZ0gsUUFBUyxDQUFDLENBQUVBLFFBQVMsQ0FBQ3hILENBQVksQ0FBQyxDQUFFLEVBS3JDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxXQUFZLENBQUMsQ0FBRXlILE9BQVEsQ0FBQ3ZILENBQVcsQ0FBQyxDQUFFLEVBS3RDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFX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QVUsRUFDdEQsQ0FBQyxTQUFVLENBQUUsR0FBSSxJQUFLLEdBQUksS0FBTSxFQUFHLElBQUssSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxTQUFVLENBQUUsR0FBSSxLQUFNLEdBQUksS0FBTSxFQUFHLElBQUssSUFBSyxRQUFBLENBQVUsRUFDeEQsQ0FBQyxTQUFVLENBQUUsR0FBSSxLQUFNLEdBQUksSUFBSyxFQUFHLElBQUssSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxTQUFVLENBQUUsR0FBSSxLQUFNLEdBQUksS0FBTSxFQUFHLElBQUssSUFBSyxRQUFBLENBQVUsQ0FDMUQsQ0FBQyxFQ1BLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FDRSxPQUNBLENBQ0UsRUFBRyw2S0FDSCxJQUFLLFFBQ1AsQ0FDRixFQUNBLENBQUMsU0FBVSxDQUFFLEdBQUksT0FBUSxHQUFJLE1BQU8sRUFBRyxLQUFNLEtBQU0sZUFBZ0IsSUFBSyxRQUFBLENBQVUsQ0FDcEYsQ0FBQyxFQ1RLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FBQyxPQUFRLENBQUUsRUFBRyx5QkFBMEIsSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxPQUFRLENBQUUsRUFBRywyQkFBNEIsSUFBSyxRQUFBLENBQVUsRUFDekQsQ0FBQyxPQUFRLENBQUUsRUFBRywwQkFBMkIsSUFBSyxRQUFBLENBQVUsRUFDeEQsQ0FBQyxPQUFRLENBQUUsRUFBRyw0QkFBNkIsSUFBSyxRQUFBLENBQVUsQ0FDNUQsQ0FBQyxFQ0xLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FBQyxPQUFRLENBQUUsRUFBRyx5QkFBMEIsSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxPQUFRLENBQUUsRUFBRywyQkFBNEIsSUFBSyxRQUFBLENBQVUsRUFDekQsQ0FBQyxPQUFRLENBQUUsRUFBRywwQkFBMkIsSUFBSyxRQUFBLENBQVUsRUFDeEQsQ0FBQyxPQUFRLENBQUUsRUFBRyw0QkFBNkIsSUFBSyxRQUFBLENBQVUsQ0FDNUQsQ0FB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QUFLQyxFQU1ISixHQUFDTyxHQUFBLENBQXNCLFFBQVNILEVBQVMsUUFBU0MsRUFBUyxpQkFBa0JDLEVBQzNFLFNBQUFOLEdBQUNRLEdBQUEsRUFBYyxFQUNqQixHQVBBLFFBQVEsTUFBTSx5Q0FBeUMsRUFDaERSLEdBQUMsT0FBSSxzQ0FBMEIsRUFRMUMsQ0FFQSxTQUFTUSxJQUFnQixDQUN2QixHQUFNLENBQUUsYUFBQUMsRUFBYyxpQkFBQUMsQ0FBaUIsRUFBSUMsRUFBVSxFQUUvQ0MsRUFBbUJDLEVBQ3ZCLHlEQUNBSixHQUFnQix5REFDbEIsRUFFQSxPQUNFVCxHQUFDLE9BQUksa0JBQWlCUyxFQUFjLFVBQVdHLEVBQzdDLFNBQUFYLEdBQUMsT0FBSSxVQUFVLG9HQUNiLFVBQUFELEdBQUNjLEdBQUEsQ0FBZ0IsS0FBSyxPQUNuQixTQUFBSixHQUNDVixHQUFDZSxHQUFPLElBQVAsQ0FDQyxRQUFTLENBQUUsTUFBTyxFQUFHLFFBQVMsQ0FBRSxFQUNoQyxRQUFTLENBQUUsTUFBTyxPQUFRLFFBQVMsQ0FBRSxFQUNyQyxLQUFNLENBQUUsTUFBTyxFQUFHLFFBQVMsQ0FBRSxFQUM3QixXQUFZLENBQUUsU0FBVSxHQUFLLEVBRTdCLFNBQUFmLEdBQUNnQixHQUFBLEVBQVcsRUFDZCxFQUVKLEVBRUFoQixHQUFDZSxHQUFPLElBQVAsQ0FDQyxVQUFVLDZJQUNWLFdBQVksQ0FBRSxTQUFVLEdBQUssRUFFN0IsU0FBQWYsR0FBQ2lCLEdBQUEsRUFBZ0IsRUFDbkIsR0FDRixFQUNGLENBRUoiLAogICJuYW1lcyI6IFsiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJjbHN4IiwgIkNMQVNTX1BBUlRfU0VQQVJBVE9SIiwgImNyZWF0ZUNsYXNzR3JvdXBVdGlscyIsICJjb25maWciLCAiY2xhc3NNYXAiLCAiY3JlYXRlQ2xhc3NNYXAiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAiZ2V0Q2xhc3NHcm91cElkIiwgImNsYXNzTmFtZSIsICJjbGFzc1BhcnRzIiwgInNwbGl0IiwgImxlbmd0aCIsICJzaGlmdCIsICJnZXRHcm91cFJlY3Vyc2l2ZSIsICJnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkiLCAiZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzIiwgImNsYXNzR3JvdXBJZCIsICJoYXNQb3N0Zml4TW9kaWZpZXIiLCAiY29uZmxpY3RzIiwgImNsYXNzUGFydE9iamVjdCIsICJjdXJyZW50Q2xhc3NQYXJ0IiwgIm5leHRDbGFzc1BhcnRPYmplY3QiLCAibmV4dFBhcnQiLCAiZ2V0IiwgImNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCIsICJzbGljZSIsICJ1bmRlZmluZWQiLCAidmFsaWRhdG9ycyIsICJjbGFzc1Jlc3QiLCAiam9pbiIsICJmaW5kIiwgInZhbGlkYXRvciIsICJhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4IiwgInRlc3QiLCAiYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUiLCAiZXhlYyIsICJwcm9wZXJ0eSIsICJzdWJzdHJpbmciLCAiaW5kZXhPZiIsICJ0aGVtZSIsICJwcmVmaXgiLCAiTWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMiLCAiZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJjbGFzc0dyb3VwcyIsICJmb3JFYWNoIiwgImNsYXNzR3JvdXAiLCAicHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSIsICJjbGFzc0RlZmluaXRpb24iLCAiY2xhc3NQYXJ0T2JqZWN0VG9FZGl0IiwgImdldFBhcnQiLCAiaXNUaGVtZUdldHRlciIsICJwdXNoIiwgImtleSIsICJwYXRoIiwgImN1cnJlbnRDbGFzc1BhcnRPYmplY3QiLCAicGF0aFBhcnQiLCAiaGFzIiwgInNldCIsICJmdW5jIiwgImNsYXNzR3JvdXBFbnRyaWVzIiwgIm1hcCIsICJwcmVmaXhlZENsYXNzR3JvdXAiLCAiZnJvbUVudHJpZXMiLCAidmFsdWUiLCAiY3JlYXRlTHJ1Q2FjaGUiLCAibWF4Q2FjaGVTaXplIiwgImNhY2hlU2l6ZSIsICJjYWNoZSIsICJwcmV2aW91c0NhY2hlIiwgInVwZGF0ZSIsICJJTVBPUlRBTlRfTU9ESUZJRVIiLCAiY3JlYXRlUGFyc2VDbGFzc05hbWUiLCAic2VwYXJhdG9yIiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIiwgImZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyIiwgInNlcGFyYXRvckxlbmd0aCIsICJwYXJzZUNsYXNzTmFtZSIsICJtb2RpZmllcnMiLCAiYnJhY2tldERlcHRoIiwgIm1vZGlmaWVyU3RhcnQiLCAicG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAiaW5kZXgiLCAiY3VycmVudENoYXJhY3RlciIsICJiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyIiwgImhhc0ltcG9ydGFudE1vZGlmaWVyIiwgInN0YXJ0c1dpdGgiLCAiYmFzZUNsYXNzTmFtZSIsICJtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIiwgInNvcnRNb2RpZmllcnMiLCAic29ydGVkTW9kaWZpZXJzIiwgInVuc29ydGVkTW9kaWZpZXJzIiwgIm1vZGlmaWVyIiwgInNvcnQiLCAiY3JlYXRlQ29uZmlnVXRpbHMiLCAiU1BMSVRfQ0xBU1NFU19SRUdFWCIsICJtZXJnZUNsYXNzTGlzdCIsICJjbGFzc0xpc3QiLCAiY29uZmlnVXRpbHMiLCAiY2xhc3NHcm91cHNJbkNvbmZsaWN0IiwgImNsYXNzTmFtZXMiLCAidHJpbSIsICJyZXN1bHQiLCAib3JpZ2luYWxDbGFzc05hbWUiLCAiQm9vbGVhbiIsICJ2YXJpYW50TW9kaWZpZXIiLCAibW9kaWZpZXJJZCIsICJjbGFzc0lkIiwgImluY2x1ZGVzIiwgImNvbmZsaWN0R3JvdXBzIiwgImkiLCAiZ3JvdXAiLCAidHdKb2luIiwgImFyZ3VtZW50IiwgInJlc29sdmVkVmFsdWUiLCAic3RyaW5nIiwgImFyZ3VtZW50cyIsICJ0b1ZhbHVlIiwgIm1peCIsICJrIiwgImNyZWF0ZVRhaWx3aW5kTWVyZ2UiLCAiY3JlYXRlQ29uZmlnRmlyc3QiLCAiY3JlYXRlQ29uZmlnUmVzdCIsICJjYWNoZUdldCIsICJjYWNoZVNldCIsICJmdW5jdGlvblRvQ2FsbCIsICJpbml0VGFpbHdpbmRNZXJnZSIsICJyZWR1Y2UiLCAicHJldmlvdXNDb25maWciLCAiY3JlYXRlQ29uZmlnQ3VycmVudCIsICJ0YWlsd2luZE1lcmdlIiwgImNhY2hlZFJlc3VsdCIsICJhcHBseSIsICJmcm9tVGhlbWUiLCAidGhlbWVHZXR0ZXIiLCAiYXJiaXRyYXJ5VmFsdWVSZWdleCIsICJmcmFjdGlvblJlZ2V4IiwgInN0cmluZ0xlbmd0aHMiLCAiU2V0IiwgInRzaGlydFVuaXRSZWdleCIsICJsZW5ndGhVbml0UmVnZXgiLCAiY29sb3JGdW5jdGlvblJlZ2V4IiwgInNoYWRvd1JlZ2V4IiwgImltYWdlUmVnZXgiLCAiaXNMZW5ndGgiLCAiaXNOdW1iZXIiLCAiaXNBcmJpdHJhcnlMZW5ndGgiLCAiZ2V0SXNBcmJpdHJhcnlWYWx1ZSIsICJpc0xlbmd0aE9ubHkiLCAiTnVtYmVyIiwgImlzTmFOIiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgImlzSW50ZWdlciIsICJpc1BlcmNlbnQiLCAiZW5kc1dpdGgiLCAiaXNBcmJpdHJhcnlWYWx1ZSIsICJpc1RzaGlydFNpemUiLCAic2l6ZUxhYmVscyIsICJpc0FyYml0cmFyeVNpemUiLCAiaXNOZXZlciIsICJpc0FyYml0cmFyeVBvc2l0aW9uIiwgImltYWdlTGFiZWxzIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiaXNJbWFnZSIsICJpc0FyYml0cmFyeVNoYWRvdyIsICJpc1NoYWRvdyIsICJpc0FueSIsICJsYWJlbCIsICJ0ZXN0VmFsdWUiLCAiZ2V0RGVmYXVsdENvbmZpZyIsICJjb2xvcnMiLCAiZnJvbVRoZW1lIiwgInNwYWNpbmciLCAiYmx1ciIsICJicmlnaHRuZXNzIiwgImJvcmRlckNvbG9yIiwgImJvcmRlclJhZGl1cyIsICJib3JkZXJTcGFjaW5nIiwgImJvcmRlcldpZHRoIiwgImNvbnRyYXN0IiwgImdyYXlzY2FsZSIsICJodWVSb3RhdGUiLCAiaW52ZXJ0IiwgImdhcCIsICJncmFkaWVudENvbG9yU3RvcHMiLCAiZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMiLCAiaW5zZXQiLCAibWFyZ2luIiwgIm9wYWNpdHkiLCAicGFkZGluZyIsICJzYXR1cmF0ZSIsICJzY2FsZSIsICJzZXBpYSIsICJza2V3IiwgInNwYWNlIiwgInRyYW5zbGF0ZSIsICJnZXRPdmVyc2Nyb2xsIiwgImdldE92ZXJmbG93IiwgImdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc0FyYml0cmFyeVZhbHVlIiwgImdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5IiwgImdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSIsICJpc0xlbmd0aCIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc051bWJlciIsICJnZXRQb3NpdGlvbnMiLCAiZ2V0TGluZVN0eWxlcyIsICJnZXRCbGVuZE1vZGVzIiwgImdldEFsaWduIiwgImdldFplcm9BbmRFbXB0eSIsICJnZXRCcmVha3MiLCAiZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5IiwgImNhY2hlU2l6ZSIsICJzZXBhcmF0b3IiLCAidGhlbWUiLCAiaXNBbnkiLCAiaXNUc2hpcnRTaXplIiwgImlzUGVyY2VudCIsICJjbGFzc0dyb3VwcyIsICJhc3BlY3QiLCAiY29udGFpbmVyIiwgImNvbHVtbnMiLCAiYm94IiwgImRpc3BsYXkiLCAiZmxvYXQiLCAiY2xlYXIiLCAiaXNvbGF0aW9uIiwgIm9iamVjdCIsICJvdmVyZmxvdyIsICJvdmVyc2Nyb2xsIiwgInBvc2l0aW9uIiwgInN0YXJ0IiwgImVuZCIsICJ0b3AiLCAicmlnaHQiLCAiYm90dG9tIiwgImxlZnQiLCAidmlzaWJpbGl0eSIsICJ6IiwgImlzSW50ZWdlciIsICJiYXNpcyIsICJmbGV4IiwgImdyb3ciLCAic2hyaW5rIiwgIm9yZGVyIiwgImNvbCIsICJzcGFuIiwgInJvdyIsICJqdXN0aWZ5IiwgImNvbnRlbnQiLCAiaXRlbXMiLCAic2VsZiIsICJwIiwgInB4IiwgInB5IiwgInBzIiwgInBlIiwgInB0IiwgInByIiwgInBiIiwgInBsIiwgIm0iLCAibXgiLCAibXkiLCAibXMiLCAibWUiLCAibXQiLCAibXIiLCAibWIiLCAibWwiLCAidyIsICJzY3JlZW4iLCAiaCIsICJzaXplIiwgInRleHQiLCAiZm9udCIsICJpc0FyYml0cmFyeU51bWJlciIsICJ0cmFja2luZyIsICJsZWFkaW5nIiwgImxpc3QiLCAicGxhY2Vob2xkZXIiLCAiZGVjb3JhdGlvbiIsICJpbmRlbnQiLCAiYWxpZ24iLCAid2hpdGVzcGFjZSIsICJicmVhayIsICJoeXBoZW5zIiwgImJnIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAicmVwZWF0IiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc0FyYml0cmFyeUltYWdlIiwgImZyb20iLCAidmlhIiwgInRvIiwgInJvdW5kZWQiLCAiYm9yZGVyIiwgImRpdmlkZSIsICJvdXRsaW5lIiwgInJpbmciLCAic2hhZG93IiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImZpbHRlciIsICJ0YWJsZSIsICJjYXB0aW9uIiwgInRyYW5zaXRpb24iLCAiZHVyYXRpb24iLCAiZWFzZSIsICJkZWxheSIsICJhbmltYXRlIiwgInRyYW5zZm9ybSIsICJyb3RhdGUiLCAib3JpZ2luIiwgImFjY2VudCIsICJhcHBlYXJhbmNlIiwgImN1cnNvciIsICJjYXJldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNuYXAiLCAidG91Y2giLCAic2VsZWN0IiwgImZpbGwiLCAic3Ryb2tlIiwgInNyIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cHMiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIiwgIm1lcmdlQ29uZmlncyIsICJiYXNlQ29uZmlnIiwgInByZWZpeCIsICJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsICJleHRlbmQiLCAib3ZlcnJpZGUiLCAib3ZlcnJpZGVQcm9wZXJ0eSIsICJjb25maWdLZXkiLCAib3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzIiwgImtleSIsICJtZXJnZUNvbmZpZ1Byb3BlcnRpZXMiLCAiYmFzZU9iamVjdCIsICJvdmVycmlkZUtleSIsICJvdmVycmlkZVZhbHVlIiwgInVuZGVmaW5lZCIsICJvdmVycmlkZU9iamVjdCIsICJtZXJnZU9iamVjdCIsICJtZXJnZVZhbHVlIiwgImNvbmNhdCIsICJleHRlbmRUYWlsd2luZE1lcmdlIiwgImNvbmZpZ0V4dGVuc2lvbiIsICJjcmVhdGVDb25maWciLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJ0d01lcmdlIiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY24iLCAiaW5wdXRzIiwgImNsc3giLCAidXNlSXNNdXRhdGluZyIsICJ0b0tlYmFiQ2FzZSIsICJzdHJpbmciLCAibWVyZ2VDbGFzc2VzIiwgImNsYXNzZXMiLCAiY2xhc3NOYW1lIiwgImluZGV4IiwgImFycmF5IiwgImRlZmF1bHRBdHRyaWJ1dGVzIiwgIkljb24iLCAiZm9yd2FyZFJlZiIsICJjb2xvciIsICJzaXplIiwgInN0cm9rZVdpZHRoIiwgImFic29sdXRlU3Ryb2tlV2lkdGgiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgImljb25Ob2RlIiwgInJlc3QiLCAicmVmIiwgImNyZWF0ZUVsZW1lbnQiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAibWVyZ2VDbGFzc2VzIiwgInRhZyIsICJhdHRycyIsICJjcmVhdGVMdWNpZGVJY29uIiwgImljb25OYW1lIiwgImljb25Ob2RlIiwgIkNvbXBvbmVudCIsICJmb3J3YXJkUmVmIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJJY29uIiwgIm1lcmdlQ2xhc3NlcyIsICJ0b0tlYmFiQ2FzZSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGVjayIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25Eb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uUmlnaHQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc0xlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ29weSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcm5lckRvd25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiRmlsdGVyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiR3JpcFZlcnRpY2FsIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiS2V5Um91bmQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNYXhpbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1pbmltaXplIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZURvd24iLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNb3ZlVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRDbG9zZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBhbmVsTGVmdE9wZW4iLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQaW5PZmYiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQaW4iLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJUYWJsZTIiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJYIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQW5pbWF0ZU51bWJlciIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidG9hc3QiLCAiY3ZhIiwgImpzeCIsICJiYWRnZVZhcmlhbnRzIiwgImN2YSIsICJCYWRnZSIsICJjbGFzc05hbWUiLCAidmFyaWFudCIsICJwcm9wcyIsICJjbiIsICJTbG90IiwgImN2YSIsICJSZWFjdCIsICJqc3giLCAiYnV0dG9uVmFyaWFudHMiLCAiY3ZhIiwgIkJ1dHRvbiIsICJjbGFzc05hbWUiLCAidmFyaWFudCIsICJzaXplIiwgImFzQ2hpbGQiLCAicHJvcHMiLCAicmVmIiwgIlNsb3QiLCAiY24iLCAiUG9wb3ZlclByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiUG9wb3ZlciIsICJQb3BvdmVyVHJpZ2dlciIsICJQb3BvdmVyQ29udGVudCIsICJjbGFzc05hbWUiLCAiYWxpZ24iLCAic2lkZU9mZnNldCIsICJwcm9wcyIsICJyZWYiLCAianN4IiwgImNuIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3QiLCAib25saW5lTWFuYWdlciIsICJ1c2VRdWVyeUNsaWVudCIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAiI2NsaWVudCIsICIjb25saW5lTWFuYWdlciIsICIjcXVlcnlGbGF2b3IiLCAiI3ZlcnNpb24iLCAiI2lzTW91bnRlZCIsICIjc3R5bGVOb25jZSIsICIjc2hhZG93RE9NVGFyZ2V0IiwgIiNidXR0b25Qb3NpdGlvbiIsICIjcG9zaXRpb24iLCAiI2luaXRpYWxJc09wZW4iLCAiI2Vycm9yVHlwZXMiLCAiI0NvbXBvbmVudCIsICIjZGlzcG9zZSIsICJjb25maWciLCAiY2xpZW50IiwgInF1ZXJ5Rmxhdm9yIiwgInZlcnNpb24iLCAib25saW5lTWFuYWdlciIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJpbml0aWFsSXNPcGVuIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiY3JlYXRlU2lnbmFsIiwgImlzT3BlbiIsICJlbCIsICJkaXNwb3NlIiwgInJlbmRlciIsICJfc2VsZiQiLCAiYnRuUG9zaXRpb24iLCAicG9zIiwgImVycm9ycyIsICJxdWVyeUNsaWVudCIsICJEZXZ0b29scyIsICJsYXp5IiwgInNldHVwU3R5bGVTaGVldCIsICJjcmVhdGVDb21wb25lbnQiLCAibWVyZ2VQcm9wcyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICIjb25DbG9zZSIsICJvbkNsb3NlIiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMiLCAicHJvcHMiLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicmVmIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAib25saW5lTWFuYWdlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJjcmVhdGVDb250ZXh0IiwgInVzZUNvbnRleHQiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJTb25uZXIiLCAianN4IiwgIlRvYXN0ZXIiLCAicHJvcHMiLCAiY3JlYXRlQWRhcHRlclByb3ZpZGVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VIYXNoQWRhcHRlciIsICJyYXdIYXNoIiwgImhhc2hQYXJhbXMiLCAic2V0SGFzaFBhcmFtcyIsICJ1cGRhdGVVcmwiLCAidXBkYXRlZCIsICJoaXN0b3J5IiwgInBhdGhuYW1lIiwgInNlYXJjaCIsICJoYXNoIiwgInVybCIsICJnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCIsICJyYXciLCAiaGFuZGxlSGFzaENoYW5nZSIsICJOdXFzSGFzaEFkYXB0ZXIiLCAianN4IiwgImpzeHMiLCAicXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiU3R1ZGlvQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlN0dWRpb0NvbnRleHRQcm92aWRlciIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJvdGhlclByb3BzIiwgImFjdGl2ZVRhYmxlIiwgInNldEFjdGl2ZVRhYmxlIiwgInVzZVN0YXRlIiwgImlzRnVsbHNjcmVlbiIsICJzZXRJc0Z1bGxzY3JlZW4iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJzZXRJc05hdmlnYXRpb25PcGVuIiwgIm9uRXJyb3IiLCAiZXJyb3IiLCAidG9hc3QiLCAiZW1pdFRlbGVtZXRyeUV2ZW50IiwgInVzZU1lbW8iLCAidG9nZ2xlRnVsbHNjcmVlbiIsICJwcmV2IiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiUXVlcnlDbGllbnRQcm92aWRlciIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMyIiwgIlRvYXN0ZXIiLCAiTnVxc0hhc2hBZGFwdGVyIiwgInVzZVN0dWRpbyIsICJjb250ZXh0IiwgInVzZUNvbnRleHQiLCAiZ2V0Um93SWQiLCAicm93IiwgInRhYmxlIiwgImlkIiwgImluZmVyUm93RmlsdGVyIiwgImFkZFJvd0lkVG9Sb3ciLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJyZXN1bHQiLCAicm93cyIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJuZXdEYXRhIiwgIm9sZERhdGEiLCAidXNlUXVlcnkiLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJwcm9wcyIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic29ydE9yZGVyIiwgImZpbHRlciIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJwcmV2aW91c0RhdGEiLCAicHJldmlvdXNRdWVyeSIsICJzY2hlbWEiLCAidGFibGUiLCAic2lnbmFsIiwgImVycm9yIiwgInJlc3VsdHMiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJpdGVtIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicXVlcnlLZXlQcmVmaXgiLCAidXNlTXV0YXRpb24iLCAicGFyYW1zIiwgImVycm9yIiwgInJlc3VsdCIsICJjaGFuZ2VzIiwgInJvdyIsICJvdmVyd3JpdGVDYWNoZWRSb3ciLCAiY2hhbmdlZFJvdyIsICJyb3dGaWx0ZXIiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiY2FjaGVkUm93IiwgImNvbHVtbk5hbWUiLCAidmFsdWUiLCAib3JpZ2luYWxWYWx1ZXMiLCAiZGV0YWlscyIsICJ1bmNoYW5nZWRSb3ciLCAiX19wc191cGRhdGVkX2F0X18iLCAiZ2V0RmluZGVyRm4iLCAidGFibGUiLCAidXBkYXRlckZuIiwgImZpbmRlciIsICJjYWNoZWRSZXN1bHQiLCAiY2FjaGVkUm93cyIsICJjYWNoZWRSb3dJbmRleCIsICJuZXdSb3ciLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAibnVxc19leHBvcnRzIiwgIl9fZXhwb3J0IiwgImtleU1hcCIsICJ1cmxLZXlzIiwgInVzZVF1ZXJ5U3RhdGUiLCAidXNlUXVlcnlTdGF0ZXMiLCAiX19yZUV4cG9ydCIsICJudXFzX2V4cG9ydHMiLCAibnVxc19zdGFyIiwgInVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCIsICJ1c2VRdWVyeVN0YXRlc09yaWdpbmFsIiwgImtleU1hcCIsICJ1cmxLZXlzIiwgIl9CUkFORF9TWU1CT0wiLCAidXNlUXVlcnlTdGF0ZSIsICJrZXkiLCAib3B0aW9ucyIsICJ1c2VRdWVyeVN0YXRlcyIsICJkZWZhdWx0RmlsdGVyIiwgImRlZmF1bHRFbXB0eUZpbHRlciIsICJjb3VudEZpbHRlcnNSZWN1cnNpdmUiLCAiZmlsdGVyR3JvdXAiLCAiY291bnQiLCAiZmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJmaWx0ZXJQYXJhbSIsICJzZXRGaWx0ZXJQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAidXNlTWVtbyIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VJc011dGF0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgIm11dGF0aW9uS2V5IiwgInVzZUNhbGxiYWNrIiwgIkRFRkFVTFRfUEFHRV9TSVpFIiwgInBhZ2luYXRpb25QYXJzZXJzIiwgInVzZVBhZ2luYXRpb24iLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNldFBhZ2luYXRpb24iLCAidXNlUXVlcnlTdGF0ZXMiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJuZXdTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgInVzZVNlbGVjdGlvbiIsICJkYXRhIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVN0YXRlIiwgImlzU2VsZWN0aW5nIiwgIm11dGF0ZSIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJ1c2VFZmZlY3QiLCAiZGVsZXRlU2VsZWN0aW9uIiwgInJvd3MiLCAicm93IiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInNvcnRQYXJhbSIsICJzZXRTb3J0UGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJwYXJzZVNvcnRpbmciLCAiaXRlbSIsICJjb2x1bW4iLCAiZGlyZWN0aW9uIiwgImUiLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAibmV3U29ydGluZ1N0YXRlIiwgIm5ld1N0YXRlIiwgInJlc29sdmVkU3RhdGUiLCAic29ydFN0cmluZyIsICJpc09iamVjdFR5cGUiLCAiZm9yd2FyZFJlZiIsICJSZWFjdCIsICJqc3giLCAiVGFibGUiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJUYWJsZUhlYWRlciIsICJUYWJsZUJvZHkiLCAiVGFibGVGb290ZXIiLCAiVGFibGVSb3ciLCAiVGFibGVIZWFkIiwgIlRhYmxlQ2VsbCIsICJUYWJsZUNhcHRpb24iLCAiaXNWYWxpZEVsZW1lbnQiLCAiQ29udGV4dE1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiQ29udGV4dE1lbnUiLCAiQ29udGV4dE1lbnVUcmlnZ2VyIiwgIkNvbnRleHRNZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJDb250ZXh0TWVudVN1YkNvbnRlbnQiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJDb250ZXh0TWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkNvbnRleHRNZW51UmFkaW9JdGVtIiwgIkNpcmNsZSIsICJDb250ZXh0TWVudUxhYmVsIiwgIkNvbnRleHRNZW51U2VwYXJhdG9yIiwgIkNvbnRleHRNZW51U2hvcnRjdXQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiQ29udGV4dE1lbnUiLCAiQ29udGV4dE1lbnVUcmlnZ2VyIiwgIkNvbnRleHRNZW51Q29udGVudCIsICJDb250ZXh0TWVudUl0ZW0iLCAiY29udGVudCIsICJleHRyYWN0VGV4dENvbnRlbnQiLCAiZXJyb3IiLCAiQ29weSIsICJub2RlIiwgImlzVmFsaWRFbGVtZW50IiwgImpzeCIsICJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJyZWYiLCAic3R5bGUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiVGFibGVDZWxsIiwgImNuIiwgIkRhdGFHcmlkQ2VsbENvbnRleHRNZW51IiwgImpzeCIsICJCb29sZWFuQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkRhdGVDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRW1wdHlDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRW51bUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAib3B0aW9ucyIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkpTT05DZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiTnVsbENlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJOdW1lcmljQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIlJhd0NlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJUaW1lQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImpzeCIsICJnZXRDZWxsIiwgImNlbGwiLCAiY29sdW1uIiwgInByb3BzIiwgInZhbHVlIiwgIkVtcHR5Q2VsbCIsICJOdWxsQ2VsbCIsICJncm91cCIsICJvcHRpb25zIiwgImlzQXJyYXkiLCAiSlNPTkNlbGwiLCAiUmF3Q2VsbCIsICJFbnVtQ2VsbCIsICJCb29sZWFuQ2VsbCIsICJEYXRlQ2VsbCIsICJUaW1lQ2VsbCIsICJOdW1lcmljQ2VsbCIsICJpc09iamVjdFR5cGUiLCAiZm9yd2FyZFJlZiIsICJDaGVja2JveFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiQ2hlY2tib3giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJDaGVjayIsICJqc3giLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJ0YWJsZSIsICJyZWFkb25seSIsICJjbGFzc05hbWUiLCAic3R5bGUiLCAicmVzdCIsICJDaGVja2JveCIsICJ2YWx1ZSIsICJmb3J3YXJkUmVmIiwgIkZyYWdtZW50IiwgImpzeCIsICJTZWxlY3RDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJyZWYiLCAic3R5bGUiLCAiaXNIZWFkZXIiLCAiZm9yd2FyZGVkUHJvcHMiLCAic2VsZWN0Q2xhc3NlcyIsICJjbiIsICJUYWJsZUhlYWQiLCAiVGFibGVDZWxsIiwgImpzeCIsICJTZWxlY3RSb3dDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgInJvdyIsICJyZWFkb25seSIsICJjbGFzc05hbWUiLCAic3R5bGUiLCAicmVzdCIsICJTZWxlY3RDZWxsIiwgIkNoZWNrYm94IiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXJDZWxsQ29udGV4dCIsICJQb3BvdmVyQ2VsbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJvcGVuIiwgInNldE9wZW4iLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIm9uRG91YmxlQ2xpY2siLCAiY2xhc3NOYW1lIiwgInJlZiIsICJ0cmlnZ2VyUmVmIiwgIm5vZGUiLCAiY24iLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAiZXZlbnQiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYWN0aW9ucyIsICJjb250ZXh0IiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgImhhbmRsZUtleURvd24iLCAianN4IiwgImpzeHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJwcm9wcyIsICJjZWxsQ29tcG9uZW50IiwgImlucHV0Q29tcG9uZW50IiwgIlBvcG92ZXJDZWxsIiwgIlBvcG92ZXJDZWxsVHJpZ2dlciIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiY24iLCAiY2xvc2VzdENlbnRlciIsICJEbmRDb250ZXh0IiwgIkRyYWdPdmVybGF5IiwgIktleWJvYXJkU2Vuc29yIiwgIlBvaW50ZXJTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgIlNvcnRhYmxlQ29udGV4dCIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAidXNlU29ydGFibGUiLCAidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIkNTUyIsICJtb3Rpb24iLCAiQW5pbWF0ZU51bWJlciIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1c2VSZWYiLCAidXNlU3RhdGUiLCAiY3JlYXRlUG9ydGFsIiwgInV1aWR2NCIsICJSZWFjdCIsICJqc3giLCAiSW5wdXQiLCAiY2xhc3NOYW1lIiwgInR5cGUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlNlbGVjdFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJTZWxlY3QiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0VHJpZ2dlciIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25Eb3duIiwgIlNlbGVjdFNjcm9sbFVwQnV0dG9uIiwgIkNoZXZyb25VcCIsICJTZWxlY3RTY3JvbGxEb3duQnV0dG9uIiwgIlNlbGVjdENvbnRlbnQiLCAicG9zaXRpb24iLCAiU2VsZWN0TGFiZWwiLCAiU2VsZWN0SXRlbSIsICJDaGVjayIsICJTZWxlY3RTZXBhcmF0b3IiLCAianN4IiwgImpzeHMiLCAiU29ydGFibGVGaWx0ZXJJdGVtIiwgImRuZEl0ZW1JZCIsICJmaWx0ZXIiLCAib25VcGRhdGUiLCAib25EZWxldGUiLCAicGFyZW50RG5kSWQiLCAiaXNMYXN0IiwgInRhYmxlIiwgImF0dHJpYnV0ZXMiLCAibGlzdGVuZXJzIiwgInNldE5vZGVSZWYiLCAidHJhbnNmb3JtIiwgInRyYW5zaXRpb24iLCAiaXNEcmFnZ2luZyIsICJ1c2VTb3J0YWJsZSIsICJzdHlsZSIsICJDU1MiLCAiRmlsdGVyQ29uZGl0aW9uIiwgIkZpbHRlckdyb3VwIiwgImRyYWdIYW5kbGVQcm9wcyIsICJoYW5kbGVDb2x1bW5DaGFuZ2UiLCAidmFsdWUiLCAiaGFuZGxlT3BlcmF0b3JDaGFuZ2UiLCAiaGFuZGxlVmFsdWVDaGFuZ2UiLCAiZSIsICJoYW5kbGVBZnRlckNoYW5nZSIsICJtb3Rpb24iLCAiR3JpcFZlcnRpY2FsIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiY29sdW1uIiwgIlNlbGVjdEl0ZW0iLCAiSW5wdXQiLCAiQnV0dG9uIiwgIlgiLCAiZG5kSWQiLCAiZ3JvdXAiLCAiaXNSb290IiwgImlzRXhwYW5kZWQiLCAic2V0SXNFeHBhbmRlZCIsICJ1c2VTdGF0ZSIsICJhY3RpdmVEcmFnSWQiLCAic2V0QWN0aXZlRHJhZ0lkIiwgImZpbHRlcnMiLCAic3RhYmxlSWRNYXAiLCAidXNlUmVmIiwgImdldFN0YWJsZUlkRm9ySXRlbSIsICJ1c2VDYWxsYmFjayIsICJpdGVtIiwgInV1aWR2NCIsICJzb3J0YWJsZUl0ZW1JZHMiLCAidXNlTWVtbyIsICJzZW5zb3JzIiwgInVzZVNlbnNvcnMiLCAidXNlU2Vuc29yIiwgIlBvaW50ZXJTZW5zb3IiLCAiS2V5Ym9hcmRTZW5zb3IiLCAic29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwgInVzZUVmZmVjdCIsICJmaXJzdEZpbHRlciIsICJmaXJzdENvbHVtbiIsICJoYW5kbGVBZGRGaWx0ZXIiLCAibmV3RmlsdGVyIiwgImhhbmRsZUFkZEdyb3VwIiwgIm5ld0dyb3VwIiwgInVwZGF0ZUZpbHRlciIsICJpbmRleCIsICJ1cGRhdGVkRmlsdGVyIiwgIm5ld0ZpbHRlcnMiLCAiZGVsZXRlRmlsdGVyIiwgImhhbmRsZURyYWdTdGFydCIsICJldmVudCIsICJoYW5kbGVEcmFnRW5kIiwgImFjdGl2ZSIsICJvdmVyIiwgIm9sZEluZGV4IiwgIm5ld0luZGV4IiwgImFycmF5TW92ZSIsICJyZW5kZXJHcm91cENvbnRlbnQiLCAiY24iLCAiRG5kQ29udGV4dCIsICJjbG9zZXN0Q2VudGVyIiwgIlNvcnRhYmxlQ29udGV4dCIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiY3JlYXRlUG9ydGFsIiwgIkRyYWdPdmVybGF5IiwgImFjdGl2ZUZpbHRlciIsICJmIiwgIkNoZXZyb25Eb3duIiwgIkNoZXZyb25SaWdodCIsICJCYWRnZSIsICJBbmltYXRlTnVtYmVyIiwgIkZpbHRlclRyZWUiLCAic2V0RmlsdGVyIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAicm9vdERuZElkIiwgIkRuZENvbnRleHQiLCAiTW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ1c2VTb3J0YWJsZSIsICJDU1MiLCAiZ2V0Q29yZVJvd01vZGVsIiwgInVzZVJlYWN0VGFibGUiLCAiZ2V0SXRlbSIsICJrZXkiLCAiaXRlbVZhbHVlIiwgImxvY2FsU3RvcmFnZSIsICJKU09OIiwgInBhcnNlIiwgInVzZUxvY2FsU3RvcmFnZSIsICJkZWZhdWx0VmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgImluaXRpYWxWYWx1ZSIsICJzZXR0ZXIiLCAidXNlQ2FsbGJhY2siLCAidXBkYXRlciIsICJvbGQiLCAibmV3VmFsIiwgInNldEl0ZW0iLCAic3RyaW5naWZ5IiwgImRlZmF1bHRUaGVtZSIsICJiYWNrZ3JvdW5kIiwgImJhY2tncm91bmRBbHQiLCAiZm9yZWdyb3VuZCIsICJncmF5IiwgImdyYXlBbHQiLCAiaW5wdXRCYWNrZ3JvdW5kQ29sb3IiLCAiaW5wdXRUZXh0Q29sb3IiLCAic3VjY2VzcyIsICJkYW5nZXIiLCAiYWN0aXZlIiwgIndhcm5pbmciLCAiVGhlbWVDb250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiVGhlbWVQcm92aWRlciIsICJfcmVmIiwgInRoZW1lIiwgInJlc3QiLCAiY3JlYXRlRWxlbWVudCIsICJQcm92aWRlciIsICJfZXh0ZW5kcyIsICJ1c2VUaGVtZSIsICJ1c2VDb250ZXh0IiwgInVzZU1lZGlhUXVlcnkiLCAicXVlcnkiLCAiaXNNYXRjaCIsICJzZXRJc01hdGNoIiwgIndpbmRvdyIsICJtYXRjaE1lZGlhIiwgIm1hdGNoZXMiLCAibWF0Y2hlciIsICJvbkNoYW5nZSIsICJhZGRMaXN0ZW5lciIsICJyZW1vdmVMaXN0ZW5lciIsICJpc1NlcnZlciIsICJzdHlsZWQiLCAidHlwZSIsICJuZXdTdHlsZXMiLCAicXVlcmllcyIsICJmb3J3YXJkUmVmIiwgInJlZiIsICJzdHlsZSIsICJtZWRpYVN0eWxlcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJyZWR1Y2UiLCAiY3VycmVudCIsICJfcmVmMiIsICJ1c2VJc01vdW50ZWQiLCAibW91bnRlZFJlZiIsICJ1c2VSZWYiLCAiaXNNb3VudGVkIiwgIlBhbmVsIiwgIl9wcm9wcyIsICJmb250U2l6ZSIsICJmb250RmFtaWx5IiwgImRpc3BsYXkiLCAiYmFja2dyb3VuZENvbG9yIiwgImNvbG9yIiwgImZsZXhEaXJlY3Rpb24iLCAiZmxleCIsICJvdmVyZmxvdyIsICJoZWlnaHQiLCAiKG1heC13aWR0aDogNzAwcHgpIiwgImJvcmRlclRvcCIsICJCdXR0b24iLCAicHJvcHMiLCAiYXBwZWFyYW5jZSIsICJmb250V2VpZ2h0IiwgImJvcmRlciIsICJib3JkZXJSYWRpdXMiLCAicGFkZGluZyIsICJvcGFjaXR5IiwgImRpc2FibGVkIiwgInVuZGVmaW5lZCIsICJjdXJzb3IiLCAibGluZUhlaWdodCIsICJXZWJraXRBcHBlYXJhbmNlIiwgImJhY2tncm91bmRJbWFnZSIsICJiYWNrZ3JvdW5kUmVwZWF0IiwgImJhY2tncm91bmRQb3NpdGlvbiIsICJiYWNrZ3JvdW5kU2l6ZSIsICJFbnRyeSIsICJvdXRsaW5lIiwgIndvcmRCcmVhayIsICJMYWJlbCIsICJWYWx1ZSIsICJTdWJFbnRyaWVzIiwgIm1hcmdpbkxlZnQiLCAicGFkZGluZ0xlZnQiLCAiYm9yZGVyTGVmdCIsICJJbmZvIiwgIkV4cGFuZGVyIiwgImV4cGFuZGVkIiwgInRyYW5zaXRpb24iLCAidHJhbnNmb3JtIiwgIkRlZmF1bHRSZW5kZXJlciIsICJoYW5kbGVFbnRyeSIsICJsYWJlbCIsICJzdWJFbnRyaWVzIiwgInN1YkVudHJ5UGFnZXMiLCAidG9nZ2xlIiwgInBhZ2VTaXplIiwgInJlbmRlcmVyIiwgInZhbHVlU25hcHNob3QiLCAic2V0VmFsdWVTbmFwc2hvdCIsICJleHBhbmRlZFBhZ2VzIiwgInNldEV4cGFuZGVkUGFnZXMiLCAicmVmcmVzaFZhbHVlU25hcHNob3QiLCAibGVuZ3RoIiwgIkZyYWdtZW50IiwgIm9uQ2xpY2siLCAiU3RyaW5nIiwgInRvTG93ZXJDYXNlIiwgIm1hcCIsICJlbnRyeSIsICJpbmRleCIsICJpbmNsdWRlcyIsICJmaWx0ZXIiLCAiZCIsICJFeHBsb3JlciIsICJkZWZhdWx0RXhwYW5kZWQiLCAiZ2V0T3duUHJvcGVydHlOYW1lcyIsICJfcmVmMyIsICJkZXB0aCIsICJzZXRFeHBhbmRlZCIsICJzZXQiLCAicGF0aCIsICJtYWtlUHJvcGVydHkiLCAic3ViIiwgIm5ld1BhdGgiLCAiY29uY2F0IiwgInN1YkRlZmF1bHRFeHBhbmRlZCIsICJzdWJQYXRoIiwgIkFycmF5IiwgImlzQXJyYXkiLCAiaSIsICJTeW1ib2wiLCAiaXRlcmF0b3IiLCAiZnJvbSIsICJ2YWwiLCAiX3JlZjQiLCAicHVzaCIsICJzbGljZSIsICJMb2dvIiwgIndpZHRoIiwgInZpZXdCb3giLCAidmVyc2lvbiIsICJzdHJva2UiLCAic3Ryb2tlV2lkdGgiLCAiZmlsbCIsICJmaWxsUnVsZSIsICJpZCIsICJSZWFjdFRhYmxlRGV2dG9vbHMiLCAiaW5pdGlhbElzT3BlbiIsICJ0YWJsZSIsICJwYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblByb3BzIiwgImNvbnRhaW5lckVsZW1lbnQiLCAiQ29udGFpbmVyIiwgInJvb3RSZWYiLCAicGFuZWxSZWYiLCAiaXNPcGVuIiwgInNldElzT3BlbiIsICJwYW5lbFN0eWxlIiwgIm90aGVyUGFuZWxQcm9wcyIsICJ0b2dnbGVCdXR0b25TdHlsZSIsICJvblRvZ2dsZUNsaWNrIiwgIm90aGVyVG9nZ2xlQnV0dG9uUHJvcHMiLCAiY2xhc3NOYW1lIiwgIlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIiwgIm1heEhlaWdodCIsICJlIiwgIm1hcmdpbiIsICJkYW5nZXJvdXNseVNldElubmVySFRNTCIsICJfX2h0bWwiLCAibWluSGVpZ2h0IiwgImJvcmRlclJpZ2h0IiwgImp1c3RpZnlDb250ZW50IiwgImFsaWduSXRlbXMiLCAibWFyZ2luUmlnaHQiLCAiZmxleFdyYXAiLCAib3ZlcmZsb3dZIiwgImdldFN0YXRlIiwgImdldEFsbENvbHVtbnMiLCAiZ2V0Q29yZVJvd01vZGVsIiwgImdldEZpbHRlcmVkUm93TW9kZWwiLCAiZ2V0U29ydGVkUm93TW9kZWwiLCAiZ2V0R3JvdXBlZFJvd01vZGVsIiwgImdldEV4cGFuZGVkUm93TW9kZWwiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJqc3giLCAiU2tlbGV0b24iLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgImNuIiwgImZsZXhSZW5kZXIiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJEcm9wZG93bk1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJEcm9wZG93bk1lbnVTdWJDb250ZW50IiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAic2lkZU9mZnNldCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkRyb3Bkb3duTWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIkRyb3Bkb3duTWVudVNob3J0Y3V0IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyIiwgInByb3BzIiwgImhlYWRlciIsICJjbGFzc05hbWUiLCAiY24iLCAiZmxleFJlbmRlciIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIk1vdmVEb3duIiwgIk1vdmVVcCIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJCdXR0b24iLCAiQ2hldnJvbkRvd24iLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkFycm93RG93bldpZGVOYXJyb3ciLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiWCIsICJQaW5PZmYiLCAiUGluIiwgImUiLCAianN4IiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJjbGFzc05hbWUiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgInByb3BzIiwgInRhYmxlIiwgInZhcmlhbnQiLCAicGFnZUluZGV4IiwgInBhZ2VDb3VudCIsICJCdXR0b24iLCAiQ2hldnJvbnNMZWZ0IiwgIkNoZXZyb25MZWZ0IiwgIklucHV0IiwgImUiLCAiQ2hldnJvblJpZ2h0IiwgIkNoZXZyb25zUmlnaHQiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJjb2x1bW4iLCAia2luZCIsICJpc1Bpbm5lZCIsICJpc0xlZnRQaW5uZWQiLCAiaXNSaWdodFBpbm5lZCIsICJpc1NlbGVjdENvbHVtbiIsICJjbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEcmFnZ2FibGVIZWFkZXJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJoZWFkZXIiLCAiY29tbW9uU3R5bGUiLCAiZGlzYWJsZURyYWdnaW5nIiwgImF0dHJpYnV0ZXMiLCAibGlzdGVuZXJzIiwgInRyYW5zZm9ybSIsICJ0cmFuc2l0aW9uIiwgInNldE5vZGVSZWYiLCAiaXNEcmFnZ2luZyIsICJ1c2VTb3J0YWJsZSIsICJkcmFnU3R5bGUiLCAiQ1NTIiwgImNvbW1vbkNsYXNzIiwgImNuIiwgImRyYWdDbGFzcyIsICJUYWJsZUhlYWQiLCAiRGF0YUdyaWQiLCAiY29sdW1uRGVmcyIsICJnZXRCZWZvcmVSb3dzIiwgImlzTG9hZGluZyIsICJpc1Byb2Nlc3NpbmciLCAib25QYWdpbmF0aW9uQ2hhbmdlIiwgIm9uUm93U2VsZWN0aW9uQ2hhbmdlIiwgIm9uU29ydGluZ0NoYW5nZSIsICJwYWdlQ291bnQiLCAicGFnaW5hdGlvblN0YXRlIiwgInJvd3MiLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic29ydGluZ1N0YXRlIiwgImNvbHVtbk9yZGVyIiwgInNldENvbHVtbk9yZGVyIiwgInVzZVN0YXRlIiwgImNvbHVtblBpbm5pbmciLCAic2V0Q29sdW1uUGlubmluZyIsICJjb2x1bW5TaXppbmciLCAic2V0Q29sdW1uU2l6aW5nIiwgInNvcnRpbmciLCAidXNlTWVtbyIsICJ0b1NvcnRpbmdTdGF0ZSIsICJkaXNwbGF5TG9hZGVyIiwgInVzZUVmZmVjdCIsICJhY2Nlc3NvcktleSIsICJoYW5kbGVEcmFnRW5kIiwgImFjdGl2ZSIsICJvdmVyIiwgIm9yZGVyIiwgImFjdGl2ZUluZGV4IiwgIm92ZXJJbmRleCIsICJhcnJheU1vdmUiLCAibW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgIk1vdXNlU2Vuc29yIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ0YWJsZSIsICJ1c2VSZWFjdFRhYmxlIiwgImdldENvcmVSb3dNb2RlbCIsICJfX3BzX3Jvd2lkIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJ0b1NvcnRPcmRlckl0ZW1zIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJEYXRhR3JpZExvYWRpbmdCYXIiLCAiRG5kQ29udGV4dCIsICJUYWJsZSIsICJUYWJsZUhlYWRlciIsICJoZWFkZXJHcm91cCIsICJUYWJsZVJvdyIsICJTb3J0YWJsZUNvbnRleHQiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiaGVhZGVyRm4iLCAiSGVhZGVyQ29tcG9uZW50IiwgInBpbm5pbmdTdHlsZXMiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJEYXRhR3JpZEhlYWRlciIsICJUYWJsZUJvZHkiLCAicm93IiwgImNlbGwiLCAiaSIsICJDZWxsIiwgIlRhYmxlQ2VsbCIsICJTa2VsZXRvbiIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJmcm9tIiwgIml0ZW0iLCAiVG9vbHRpcFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiY2xhc3NOYW1lIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjb2x1bW4iLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiS2V5Um91bmQiLCAiVG9vbHRpcENvbnRlbnQiLCAiaXNPYmplY3RUeXBlIiwgIm1vdGlvbiIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJMYWJlbFByaW1pdGl2ZSIsICJjdmEiLCAiUmVhY3QiLCAianN4IiwgImxhYmVsVmFyaWFudHMiLCAiY3ZhIiwgIkxhYmVsIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU3dpdGNoUHJpbWl0aXZlcyIsICJSZWFjdCIsICJqc3giLCAiU3dpdGNoIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiSW5wdXRBY3Rpb25zIiwgIm9uU2F2ZSIsICJvbkNhbmNlbCIsICJvbkNsb3NlIiwgIm9uTnVsbENoYW5nZSIsICJpc051bGwiLCAicmVhZG9ubHkiLCAiQ29ybmVyRG93bkxlZnQiLCAiU3dpdGNoIiwgImNoZWNrZWQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQm9vbGVhbklucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJ2YWx1ZVRvU3VibWl0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJtb3Rpb24iLCAiU3dpdGNoIiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ1c2VJbnB1dCIsICJwcm9wcyIsICJpbml0aWFsVmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiZXZlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIkRhdGVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJmb3JtYXR0ZWREYXRlIiwgInVzZU1lbW8iLCAiZGF0ZSIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgInVzZUNhbGxiYWNrIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkVudW1JbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAidmFsdWUiLCAib3B0aW9ucyIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImluaXRpYWxWYWx1ZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaGFuZGxlU2VsZWN0T3B0aW9uIiwgIm9wdGlvbiIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImJhZGdlVmFyaWFudHMiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkpzb25JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZUNoYW5nZSIsICJlIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJqc29uVmFsdWUiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJOdW1lcmljSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAibnVtZXJpY1ZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiUmF3SW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlTWVtbyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAiVGltZUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImZvcm1hdHRlZFRpbWUiLCAidXNlTWVtbyIsICJoYXNUaW1lem9uZSIsICJkYXRlIiwgInRpbWVSZWdleCIsICJtYXRjaCIsICJob3VycyIsICJtaW51dGVzIiwgInR6T2Zmc2V0IiwgInBlcmlvZCIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgImpzeCIsICJnZXRJbnB1dCIsICJwcm9wcyIsICJjZWxsIiwgImNvbHVtbiIsICJvblN1Ym1pdCIsICJncm91cCIsICJvcHRpb25zIiwgImlzQXJyYXkiLCAicmVhZG9ubHkiLCAiY2VsbFZhbHVlIiwgInZhbHVlIiwgIkRhdGVJbnB1dCIsICJUaW1lSW5wdXQiLCAiSnNvbklucHV0IiwgIkJvb2xlYW5JbnB1dCIsICJFbnVtSW5wdXQiLCAiTnVtZXJpY0lucHV0IiwgIlJhd0lucHV0IiwgImlzT2JqZWN0VHlwZSIsICJ1c2VSZWFjdFRhYmxlIiwgIm9taXQiLCAiRnJhZ21lbnQiLCAianN4IiwgIlN0YWdlZFJvd3MiLCAicHJvcHMiLCAicGFyZW50VGFibGUiLCAic3RhZ2VkUm93cyIsICJzZXRTdGFnZWRSb3dzIiwgInJlYWRvbmx5IiwgInVzZUlzSW5zZXJ0aW5nIiwgInVwZGF0ZVN0YWdlZFJvdyIsICJyb3dJbmRleCIsICJwYXJ0aWFsUm93IiwgInByZXZSb3dzIiwgIm5ld1Jvd3MiLCAiY29sdW1uRGVmcyIsICJjb2x1bW4iLCAiRW1wdHlDZWxsIiwgImNlbGwiLCAiV3JpdGVhYmxlQ2VsbCIsICJnZXRDZWxsIiwgImdldElucHV0IiwgInZhbHVlIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJyb3ciLCAiaSIsICJUYWJsZVJvdyIsICJqIiwgIkNlbGwiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJBY3RpdmVUYWJsZVZpZXciLCAiX3Byb3BzIiwgImlzTXV0YXRpbmciLCAidXNlSXNNdXRhdGluZyIsICJhY3RpdmVUYWJsZSIsICJvbkVycm9yIiwgImlzRnVsbHNjcmVlbiIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInBhZ2luYXRpb25TdGF0ZSIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlUGFnaW5hdGlvbiIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAidXNlU3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUZpbHRlcmluZyIsICJkYXRhIiwgImlzRmV0Y2hpbmciLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJkZWxldGVTZWxlY3Rpb24iLCAiaXNTZWxlY3RpbmciLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU2VsZWN0aW9uIiwgInJlYWRvbmx5IiwgImNvbHVtbiIsICJpc0luc2VydGluZyIsICJ1c2VJc0luc2VydGluZyIsICJpbnNlcnQiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAidXBkYXRlIiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgInVzZUVmZmVjdCIsICJzYXZlU3RhZ2VkUm93cyIsICJ0b2FzdCIsICJuZXdTdGFnZWRSb3ciLCAib2xkIiwgImRyb3BTdGFnZWRSb3dzIiwgImhhbmRsZUNlbGxJbnB1dFN1Ym1pdCIsICJ2YWx1ZSIsICJyb3ciLCAib25GaWx0ZXJPcGVuQ2hhbmdlIiwgIm9wZW4iLCAiZGVmYXVsdEVtcHR5RmlsdGVyIiwgImNvbmNyZXRlQ29sdW1uRGVmcyIsICJEYXRhR3JpZEhlYWRlckNlbGwiLCAiY2VsbCIsICJwcm9wcyIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiZ2V0SW5wdXQiLCAidmlydHVhbENvbHVtbkRlZnMiLCAidGFibGUiLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJTZWxlY3RSb3dDZWxsIiwgImNvbHVtbkRlZnMiLCAiZGVmYXVsdENvbHVtblNvcnRpbmciLCAiQnV0dG9uIiwgIlBhbmVsTGVmdENsb3NlIiwgIlBhbmVsTGVmdE9wZW4iLCAiUG9wb3ZlciIsICJQb3BvdmVyVHJpZ2dlciIsICJjbiIsICJGaWx0ZXIiLCAiQmFkZ2UiLCAiQW5pbWF0ZU51bWJlciIsICJQb3BvdmVyQ29udGVudCIsICJGaWx0ZXJUcmVlIiwgImZpbHRlciIsICJNaW5pbWl6ZSIsICJNYXhpbWl6ZSIsICJEYXRhR3JpZCIsICJTdGFnZWRSb3dzIiwgImdldFBhZ2VDb3VudCIsICJyb3dDb3VudCIsICJwYWdlU2l6ZSIsICJwYWdlQ291bnQiLCAiYSIsICJiIiwgImFNZXRhIiwgImJNZXRhIiwgIlNsb3QiLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXVpZHY0IiwgInVzZVF1ZXJ5IiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAic2lnbmFsIiwgImVycm9yIiwgImludHJvc3BlY3Rpb24iLCAiY3R4IiwgInVzZUFjdGl2ZVRhYmxlIiwgImFjdGl2ZVRhYmxlIiwgInNldEFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAiZW1pdFRlbGVtZXRyeUV2ZW50IiwgInVzZVN0dWRpbyIsICJpbnRyb3NwZWN0aW9uIiwgImRhdGFVcGRhdGVkQXQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJpc0xvYWRpbmciLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAidGFibGVzIiwgInVzZU1lbW8iLCAidG90YWxUYWJsZUNvdW50IiwgInN1bSIsICJzY2hlbWEiLCAiZmlyc3RUYWJsZSIsICJ0YWJsZUFuZFNjaGVtYSIsICJzZXRUYWJsZUFuZFNjaGVtYSIsICJ1c2VRdWVyeVN0YXRlcyIsICJ2IiwgInNldFBhZ2VQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgInNldFNvcnRQYXJhbSIsICJ1c2VFZmZlY3QiLCAidGFibGVGcm9tUGFyYW0iLCAidCIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VDYWxsYmFjayIsICJuZXdUYWJsZSIsICJ1dWlkdjQiLCAianN4IiwgImpzeHMiLCAiTmF2aWdhdGlvbiIsICJjbGFzc05hbWUiLCAidGFibGVzIiwgImFjdGl2ZVRhYmxlIiwgImlzTG9hZGluZyIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VBY3RpdmVUYWJsZSIsICJzaWRlQmFyQ2xhc3NlcyIsICJjbiIsICJ0YWJsZSIsICJfIiwgImluZGV4IiwgIlNrZWxldG9uIiwgIkJsb2NrIiwgImxhYmVsIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIlRhYmxlMiIsICJJdGVtIiwgImFzQ2hpbGQiLCAiaXNBY3RpdmUiLCAic2l6ZSIsICJ3cmFwQ2hpbGRyZW5JblNwYW4iLCAiU2xvdCIsICJqc3giLCAianN4cyIsICJTdHVkaW8iLCAicHJvcHMiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgIm9uVGVsZW1ldHJ5RXZlbnQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgIlN0dWRpb0NvbnRlbnQiLCAiaXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgImNvbnRhaW5lckNsYXNzZXMiLCAiY24iLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJOYXZpZ2F0aW9uIiwgIkFjdGl2ZVRhYmxlVmlldyJdCn0K
|
|
283
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvbGliL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jbGFzcy1ncm91cC11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbHJ1LWNhY2hlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9wYXJzZS1jbGFzcy1uYW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jb25maWctdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNsYXNzbGlzdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctam9pbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY3JlYXRlLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9mcm9tLXRoZW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi92YWxpZGF0b3JzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9kZWZhdWx0LWNvbmZpZy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY29uZmlncy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZXh0ZW5kLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1tZXJnZS50cyIsICIuLi8uLi91aS9zdHVkaW8vQWN0aXZlVGFibGVWaWV3LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9zaGFyZWQvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvZGVmYXVsdEF0dHJpYnV0ZXMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9JY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvY3JlYXRlTHVjaWRlSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZWNrLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtaGVscC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NvcHkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3JuZXItZG93bi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZmlsdGVyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZ3JpcC12ZXJ0aWNhbC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2tleS1yb3VuZC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21heGltaXplLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWluaW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLWRvd24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLXVwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3BhbmVsLWxlZnQtb3Blbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3Bpbi1vZmYudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy90YWJsZS0yLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMveC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9jaGVja2JveC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9wb3BvdmVyLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydC50cyIsICIuLi8uLi91aS9zdHVkaW8vY29udGV4dC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3F1ZXJ5LWRldnRvb2xzQDUuNzIuMi9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzL2J1aWxkL2luZGV4LmpzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9pbmRleC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3Nvbm5lci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL051cXNIYXNoQWRhcHRlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHQudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXVwZGF0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtZmlsdGVyaW5nLnRzIiwgIi4uLy4uL3VpL2hvb2tzL251cXMudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWlzLWluc2VydGluZy50cyIsICIuLi8uLi91aS9ob29rcy91c2UtcGFnaW5hdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc2VsZWN0aW9uLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zb3J0aW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL2dldC1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Cb29sZWFuQ2VsbC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90YWJsZS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9EYXRlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW1wdHlDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9FbnVtQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvSlNPTkNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL051bGxDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdW1lcmljQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvUmF3Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvVGltZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdFJvd0NlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Xcml0ZWFibGVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vRmlsdGVyVHJlZS50c3giLCAiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlscy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRMb2FkaW5nQmFyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZFBhZ2luYXRpb24udHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nLnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdG9vbHRpcC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvZ2V0LWlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvQm9vbGVhbklucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2xhYmVsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3N3aXRjaC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2lucHV0LWFjdGlvbnMudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9EYXRlSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC91c2UtaW5wdXQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0VudW1JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0pzb25JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L051bWVyaWNJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1Jhd0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvVGltZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vU3RhZ2VkUm93cy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL05hdmlnYXRpb24udHN4IiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vZGF0YVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBBY3RpdmVUYWJsZVZpZXcgfSBmcm9tIFwiLi9BY3RpdmVUYWJsZVZpZXdcIjtcbmltcG9ydCB7IFN0dWRpb0NvbnRleHRQcm92aWRlciwgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gXCIuL05hdmlnYXRpb25cIjtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgPSB7XG4gIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiO1xuICBwYXlsb2FkOiB7XG4gICAgZXZlbnRfaWQ6IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IHN0cmluZztcbiAgICB1c2VyX2lkPzogc3RyaW5nO1xuICAgIHdvcmtzcGFjZV9pZD86IHN0cmluZztcbiAgICBvcmdhbml6YXRpb25faWQ/OiBzdHJpbmc7XG4gICAgZW1iZWRkaW5nX3R5cGU/OiBzdHJpbmc7XG4gICAgdmVuZG9yX2lkPzogc3RyaW5nO1xuICAgIHRhYmxlX2NvdW50OiBudW1iZXI7XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb1Byb3BzIHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogTWFpbiBTdHVkaW8gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgZGF0YWJhc2UgdmlzdWFsaXphdGlvbiBhbmQgbWFuYWdlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvKHByb3BzOiBTdHVkaW9Qcm9wcykge1xuICBjb25zdCB7IGFkYXB0ZXIsIG9uRXJyb3IsIG9uVGVsZW1ldHJ5RXZlbnQgfSA9IHByb3BzO1xuXG4gIGlmICghYWRhcHRlcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJObyBhZGFwdGVyIHByb3ZpZGVkIHRvIFN0dWRpbyBjb21wb25lbnRcIik7XG4gICAgcmV0dXJuIDxkaXY+RXJyb3I6IE5vIGFkYXB0ZXIgcHJvdmlkZWQ8L2Rpdj47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdHVkaW9Db250ZXh0UHJvdmlkZXIgYWRhcHRlcj17YWRhcHRlcn0gb25FcnJvcj17b25FcnJvcn0gb25UZWxlbWV0cnlFdmVudD17b25UZWxlbWV0cnlFdmVudH0+XG4gICAgICA8U3R1ZGlvQ29udGVudCAvPlxuICAgIDwvU3R1ZGlvQ29udGV4dFByb3ZpZGVyPlxuICApO1xufVxuXG5mdW5jdGlvbiBTdHVkaW9Db250ZW50KCkge1xuICBjb25zdCB7IGlzRnVsbHNjcmVlbiwgaXNOYXZpZ2F0aW9uT3BlbiB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgY29uc3QgY29udGFpbmVyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGwgcHMtbWluLWgtMCBwcy1tYXgtaC1mdWxsXCIsXG4gICAgaXNGdWxsc2NyZWVuICYmIFwicHMtZml4ZWQgcHMtaW5zZXQtMCBwcy16LVs5OTk5XSBwcy1iZy1iYWNrZ3JvdW5kIHBzLXAtMlwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NvbnRhaW5lckNsYXNzZXN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWdhcC0wIHBzLXctZnVsbCBwcy1iZy1uZXV0cmFsLTUwIHBzLXJlbGF0aXZlIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtZnVsbCBwcy1yb3VuZGVkLWxnXCI+XG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiAmJiAoXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgd2lkdGg6IFwiYXV0b1wiLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgd2lkdGg6IDAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbiAvPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuXG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC0xMDAgcHMtZmxleC1jb2wgcHMtcC1weCBwcy1yb3VuZGVkLWxnIHBzLXNlbGYtc3RhcnQgcHMtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtbWF4LWgtZnVsbCBwcy1vdmVyZmxvdy1jbGlwXCJcbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjE0IH19XG4gICAgICAgID5cbiAgICAgICAgICA8QWN0aXZlVGFibGVWaWV3IC8+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgIi8vIHNoYWRjbiB1dGlsc1xuaW1wb3J0IHsgdHlwZSBDbGFzc1ZhbHVlLCBjbHN4IH0gZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IGV4dGVuZFRhaWx3aW5kTWVyZ2UgfSBmcm9tIFwidGFpbHdpbmQtbWVyZ2VcIjtcblxuZXhwb3J0IGNvbnN0IHR3TWVyZ2UgPSBleHRlbmRUYWlsd2luZE1lcmdlKHtcbiAgcHJlZml4OiBcInBzLVwiLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjbiguLi5pbnB1dHM6IENsYXNzVmFsdWVbXSkge1xuICByZXR1cm4gdHdNZXJnZShjbHN4KGlucHV0cykpO1xufVxuIiwgImltcG9ydCB7XG4gICAgQ2xhc3NHcm91cCxcbiAgICBDbGFzc1ZhbGlkYXRvcixcbiAgICBDb25maWcsXG4gICAgR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgR2VuZXJpY0NvbmZpZyxcbiAgICBHZW5lcmljVGhlbWVHcm91cElkcyxcbiAgICBUaGVtZUdldHRlcixcbiAgICBUaGVtZU9iamVjdCxcbn0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGludGVyZmFjZSBDbGFzc1BhcnRPYmplY3Qge1xuICAgIG5leHRQYXJ0OiBNYXA8c3RyaW5nLCBDbGFzc1BhcnRPYmplY3Q+XG4gICAgdmFsaWRhdG9yczogQ2xhc3NWYWxpZGF0b3JPYmplY3RbXVxuICAgIGNsYXNzR3JvdXBJZD86IEdlbmVyaWNDbGFzc0dyb3VwSWRzXG59XG5cbmludGVyZmFjZSBDbGFzc1ZhbGlkYXRvck9iamVjdCB7XG4gICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkc1xuICAgIHZhbGlkYXRvcjogQ2xhc3NWYWxpZGF0b3Jcbn1cblxuY29uc3QgQ0xBU1NfUEFSVF9TRVBBUkFUT1IgPSAnLSdcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IHtcbiAgICBjb25zdCBjbGFzc01hcCA9IGNyZWF0ZUNsYXNzTWFwKGNvbmZpZylcbiAgICBjb25zdCB7IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHMsIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyB9ID0gY29uZmlnXG5cbiAgICBjb25zdCBnZXRDbGFzc0dyb3VwSWQgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY2xhc3NQYXJ0cyA9IGNsYXNzTmFtZS5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUilcblxuICAgICAgICAvLyBDbGFzc2VzIGxpa2UgYC1pbnNldC0xYCBwcm9kdWNlIGFuIGVtcHR5IHN0cmluZyBhcyBmaXJzdCBjbGFzc1BhcnQuIFdlIGFzc3VtZSB0aGF0IGNsYXNzZXMgZm9yIG5lZ2F0aXZlIHZhbHVlcyBhcmUgdXNlZCBjb3JyZWN0bHkgYW5kIHJlbW92ZSBpdCBmcm9tIGNsYXNzUGFydHMuXG4gICAgICAgIGlmIChjbGFzc1BhcnRzWzBdID09PSAnJyAmJiBjbGFzc1BhcnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgY2xhc3NQYXJ0cy5zaGlmdCgpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cywgY2xhc3NNYXApIHx8IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eShjbGFzc05hbWUpXG4gICAgfVxuXG4gICAgY29uc3QgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzID0gKFxuICAgICAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXI6IGJvb2xlYW4sXG4gICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbmZsaWN0cyA9IGNvbmZsaWN0aW5nQ2xhc3NHcm91cHNbY2xhc3NHcm91cElkXSB8fCBbXVxuXG4gICAgICAgIGlmIChoYXNQb3N0Zml4TW9kaWZpZXIgJiYgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0pIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY29uZmxpY3RzLCAuLi5jb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSFdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uZmxpY3RzXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0Q2xhc3NHcm91cElkLFxuICAgICAgICBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMsXG4gICAgfVxufVxuXG5jb25zdCBnZXRHcm91cFJlY3Vyc2l2ZSA9IChcbiAgICBjbGFzc1BhcnRzOiBzdHJpbmdbXSxcbiAgICBjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCxcbik6IEdlbmVyaWNDbGFzc0dyb3VwSWRzIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoY2xhc3NQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzUGFydE9iamVjdC5jbGFzc0dyb3VwSWRcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q2xhc3NQYXJ0ID0gY2xhc3NQYXJ0c1swXSFcbiAgICBjb25zdCBuZXh0Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChjdXJyZW50Q2xhc3NQYXJ0KVxuICAgIGNvbnN0IGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCA9IG5leHRDbGFzc1BhcnRPYmplY3RcbiAgICAgICAgPyBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLnNsaWNlKDEpLCBuZXh0Q2xhc3NQYXJ0T2JqZWN0KVxuICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgaWYgKGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCkge1xuICAgICAgICByZXR1cm4gY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0XG4gICAgfVxuXG4gICAgaWYgKGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY2xhc3NSZXN0ID0gY2xhc3NQYXJ0cy5qb2luKENMQVNTX1BBUlRfU0VQQVJBVE9SKVxuXG4gICAgcmV0dXJuIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLmZpbmQoKHsgdmFsaWRhdG9yIH0pID0+IHZhbGlkYXRvcihjbGFzc1Jlc3QpKT8uY2xhc3NHcm91cElkXG59XG5cbmNvbnN0IGFyYml0cmFyeVByb3BlcnR5UmVnZXggPSAvXlxcWyguKylcXF0kL1xuXG5jb25zdCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoYXJiaXRyYXJ5UHJvcGVydHlSZWdleC50ZXN0KGNsYXNzTmFtZSkpIHtcbiAgICAgICAgY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUgPSBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LmV4ZWMoY2xhc3NOYW1lKSFbMV1cbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZT8uc3Vic3RyaW5nKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lLmluZGV4T2YoJzonKSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgLy8gSSB1c2UgdHdvIGRvdHMgaGVyZSBiZWNhdXNlIG9uZSBkb3QgaXMgdXNlZCBhcyBwcmVmaXggZm9yIGNsYXNzIGdyb3VwcyBpbiBwbHVnaW5zXG4gICAgICAgICAgICByZXR1cm4gJ2FyYml0cmFyeS4uJyArIHByb3BlcnR5XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NNYXAgPSAoY29uZmlnOiBDb25maWc8R2VuZXJpY0NsYXNzR3JvdXBJZHMsIEdlbmVyaWNUaGVtZUdyb3VwSWRzPikgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWUsIHByZWZpeCB9ID0gY29uZmlnXG4gICAgY29uc3QgY2xhc3NNYXA6IENsYXNzUGFydE9iamVjdCA9IHtcbiAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXA8c3RyaW5nLCBDbGFzc1BhcnRPYmplY3Q+KCksXG4gICAgICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhjb25maWcuY2xhc3NHcm91cHMpLFxuICAgICAgICBwcmVmaXgsXG4gICAgKVxuXG4gICAgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcy5mb3JFYWNoKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KGNsYXNzR3JvdXAsIGNsYXNzTWFwLCBjbGFzc0dyb3VwSWQsIHRoZW1lKVxuICAgIH0pXG5cbiAgICByZXR1cm4gY2xhc3NNYXBcbn1cblxuY29uc3QgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSA9IChcbiAgICBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPixcbiAgICBjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCxcbiAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgIHRoZW1lOiBUaGVtZU9iamVjdDxHZW5lcmljVGhlbWVHcm91cElkcz4sXG4pID0+IHtcbiAgICBjbGFzc0dyb3VwLmZvckVhY2goKGNsYXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzUGFydE9iamVjdFRvRWRpdCA9XG4gICAgICAgICAgICAgICAgY2xhc3NEZWZpbml0aW9uID09PSAnJyA/IGNsYXNzUGFydE9iamVjdCA6IGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBjbGFzc0RlZmluaXRpb24pXG4gICAgICAgICAgICBjbGFzc1BhcnRPYmplY3RUb0VkaXQuY2xhc3NHcm91cElkID0gY2xhc3NHcm91cElkXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAoaXNUaGVtZUdldHRlcihjbGFzc0RlZmluaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NEZWZpbml0aW9uKHRoZW1lKSxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0LFxuICAgICAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yOiBjbGFzc0RlZmluaXRpb24sXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLmZvckVhY2goKFtrZXksIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXAsXG4gICAgICAgICAgICAgICAgZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGtleSksXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgIH0pXG59XG5cbmNvbnN0IGdldFBhcnQgPSAoY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsIHBhdGg6IHN0cmluZykgPT4ge1xuICAgIGxldCBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY2xhc3NQYXJ0T2JqZWN0XG5cbiAgICBwYXRoLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKS5mb3JFYWNoKChwYXRoUGFydCkgPT4ge1xuICAgICAgICBpZiAoIWN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuaGFzKHBhdGhQYXJ0KSkge1xuICAgICAgICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5zZXQocGF0aFBhcnQsIHtcbiAgICAgICAgICAgICAgICBuZXh0UGFydDogbmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmdldChwYXRoUGFydCkhXG4gICAgfSlcblxuICAgIHJldHVybiBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0XG59XG5cbmNvbnN0IGlzVGhlbWVHZXR0ZXIgPSAoZnVuYzogQ2xhc3NWYWxpZGF0b3IgfCBUaGVtZUdldHRlcik6IGZ1bmMgaXMgVGhlbWVHZXR0ZXIgPT5cbiAgICAoZnVuYyBhcyBUaGVtZUdldHRlcikuaXNUaGVtZUdldHRlclxuXG5jb25zdCBnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gKFxuICAgIGNsYXNzR3JvdXBFbnRyaWVzOiBBcnJheTxbY2xhc3NHcm91cElkOiBzdHJpbmcsIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+XT4sXG4gICAgcHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBBcnJheTxbY2xhc3NHcm91cElkOiBzdHJpbmcsIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+XT4gPT4ge1xuICAgIGlmICghcHJlZml4KSB7XG4gICAgICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllc1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc0dyb3VwRW50cmllcy5tYXAoKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZWZpeGVkQ2xhc3NHcm91cCA9IGNsYXNzR3JvdXAubWFwKChjbGFzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyBjbGFzc0RlZmluaXRpb25cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW3ByZWZpeCArIGtleSwgdmFsdWVdKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjbGFzc0RlZmluaXRpb25cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gW2NsYXNzR3JvdXBJZCwgcHJlZml4ZWRDbGFzc0dyb3VwXVxuICAgIH0pXG59XG4iLCAiLy8gRXhwb3J0IGlzIG5lZWRlZCBiZWNhdXNlIFR5cGVTY3JpcHQgY29tcGxhaW5zIGFib3V0IGFuIGVycm9yIG90aGVyd2lzZTpcbi8vIEVycm9yOiBcdTIwMjYvdGFpbHdpbmQtbWVyZ2Uvc3JjL2NvbmZpZy11dGlscy50cyg4LDE3KTogc2VtYW50aWMgZXJyb3IgVFM0MDU4OiBSZXR1cm4gdHlwZSBvZiBleHBvcnRlZCBmdW5jdGlvbiBoYXMgb3IgaXMgdXNpbmcgbmFtZSAnTHJ1Q2FjaGUnIGZyb20gZXh0ZXJuYWwgbW9kdWxlIFwiXHUyMDI2L3RhaWx3aW5kLW1lcmdlL3NyYy9scnUtY2FjaGVcIiBidXQgY2Fubm90IGJlIG5hbWVkLlxuZXhwb3J0IGludGVyZmFjZSBMcnVDYWNoZTxLZXksIFZhbHVlPiB7XG4gICAgZ2V0KGtleTogS2V5KTogVmFsdWUgfCB1bmRlZmluZWRcbiAgICBzZXQoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSk6IHZvaWRcbn1cblxuLy8gTFJVIGNhY2hlIGluc3BpcmVkIGZyb20gaGFzaGxydSAoaHR0cHM6Ly9naXRodWIuY29tL2RvbWluaWN0YXJyL2hhc2hscnUvYmxvYi92MS4wLjQvaW5kZXguanMpIGJ1dCBvYmplY3QgcmVwbGFjZWQgd2l0aCBNYXAgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZVxuZXhwb3J0IGNvbnN0IGNyZWF0ZUxydUNhY2hlID0gPEtleSwgVmFsdWU+KG1heENhY2hlU2l6ZTogbnVtYmVyKTogTHJ1Q2FjaGU8S2V5LCBWYWx1ZT4gPT4ge1xuICAgIGlmIChtYXhDYWNoZVNpemUgPCAxKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNldDogKCkgPT4ge30sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgY2FjaGVTaXplID0gMFxuICAgIGxldCBjYWNoZSA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKVxuICAgIGxldCBwcmV2aW91c0NhY2hlID0gbmV3IE1hcDxLZXksIFZhbHVlPigpXG5cbiAgICBjb25zdCB1cGRhdGUgPSAoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSkgPT4ge1xuICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgY2FjaGVTaXplKytcblxuICAgICAgICBpZiAoY2FjaGVTaXplID4gbWF4Q2FjaGVTaXplKSB7XG4gICAgICAgICAgICBjYWNoZVNpemUgPSAwXG4gICAgICAgICAgICBwcmV2aW91c0NhY2hlID0gY2FjaGVcbiAgICAgICAgICAgIGNhY2hlID0gbmV3IE1hcCgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXQoa2V5KSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBjYWNoZS5nZXQoa2V5KVxuXG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IHByZXZpb3VzQ2FjaGUuZ2V0KGtleSkpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBJTVBPUlRBTlRfTU9ESUZJRVIgPSAnISdcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4ge1xuICAgIGNvbnN0IHsgc2VwYXJhdG9yLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSB9ID0gY29uZmlnXG4gICAgY29uc3QgaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgPSBzZXBhcmF0b3IubGVuZ3RoID09PSAxXG4gICAgY29uc3QgZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgPSBzZXBhcmF0b3JbMF1cbiAgICBjb25zdCBzZXBhcmF0b3JMZW5ndGggPSBzZXBhcmF0b3IubGVuZ3RoXG5cbiAgICAvLyBwYXJzZUNsYXNzTmFtZSBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2Jsb2IvdjMuMi4yL3NyYy91dGlsL3NwbGl0QXRUb3BMZXZlbE9ubHkuanNcbiAgICBjb25zdCBwYXJzZUNsYXNzTmFtZSA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBtb2RpZmllcnMgPSBbXVxuXG4gICAgICAgIGxldCBicmFja2V0RGVwdGggPSAwXG4gICAgICAgIGxldCBtb2RpZmllclN0YXJ0ID0gMFxuICAgICAgICBsZXQgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZFxuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjbGFzc05hbWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudENoYXJhY3RlciA9IGNsYXNzTmFtZVtpbmRleF1cblxuICAgICAgICAgICAgaWYgKGJyYWNrZXREZXB0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENoYXJhY3RlciA9PT0gZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgKGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoKSA9PT0gc2VwYXJhdG9yKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMucHVzaChjbGFzc05hbWUuc2xpY2UobW9kaWZpZXJTdGFydCwgaW5kZXgpKVxuICAgICAgICAgICAgICAgICAgICBtb2RpZmllclN0YXJ0ID0gaW5kZXggKyBzZXBhcmF0b3JMZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJy8nKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICBicmFja2V0RGVwdGgrK1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICBicmFja2V0RGVwdGgtLVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciA9XG4gICAgICAgICAgICBtb2RpZmllcnMubGVuZ3RoID09PSAwID8gY2xhc3NOYW1lIDogY2xhc3NOYW1lLnN1YnN0cmluZyhtb2RpZmllclN0YXJ0KVxuICAgICAgICBjb25zdCBoYXNJbXBvcnRhbnRNb2RpZmllciA9XG4gICAgICAgICAgICBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN0YXJ0c1dpdGgoSU1QT1JUQU5UX01PRElGSUVSKVxuICAgICAgICBjb25zdCBiYXNlQ2xhc3NOYW1lID0gaGFzSW1wb3J0YW50TW9kaWZpZXJcbiAgICAgICAgICAgID8gYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdWJzdHJpbmcoMSlcbiAgICAgICAgICAgIDogYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllclxuXG4gICAgICAgIGNvbnN0IG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPVxuICAgICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gJiYgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPiBtb2RpZmllclN0YXJ0XG4gICAgICAgICAgICAgICAgPyBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAtIG1vZGlmaWVyU3RhcnRcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb2RpZmllcnMsXG4gICAgICAgICAgICBoYXNJbXBvcnRhbnRNb2RpZmllcixcbiAgICAgICAgICAgIGJhc2VDbGFzc05hbWUsXG4gICAgICAgICAgICBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKSB7XG4gICAgICAgIHJldHVybiAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKHsgY2xhc3NOYW1lLCBwYXJzZUNsYXNzTmFtZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwYXJzZUNsYXNzTmFtZVxufVxuXG4vKipcbiAqIFNvcnRzIG1vZGlmaWVycyBhY2NvcmRpbmcgdG8gZm9sbG93aW5nIHNjaGVtYTpcbiAqIC0gUHJlZGVmaW5lZCBtb2RpZmllcnMgYXJlIHNvcnRlZCBhbHBoYWJldGljYWxseVxuICogLSBXaGVuIGFuIGFyYml0cmFyeSB2YXJpYW50IGFwcGVhcnMsIGl0IG11c3QgYmUgcHJlc2VydmVkIHdoaWNoIG1vZGlmaWVycyBhcmUgYmVmb3JlIGFuZCBhZnRlciBpdFxuICovXG5leHBvcnQgY29uc3Qgc29ydE1vZGlmaWVycyA9IChtb2RpZmllcnM6IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYgKG1vZGlmaWVycy5sZW5ndGggPD0gMSkge1xuICAgICAgICByZXR1cm4gbW9kaWZpZXJzXG4gICAgfVxuXG4gICAgY29uc3Qgc29ydGVkTW9kaWZpZXJzOiBzdHJpbmdbXSA9IFtdXG4gICAgbGV0IHVuc29ydGVkTW9kaWZpZXJzOiBzdHJpbmdbXSA9IFtdXG5cbiAgICBtb2RpZmllcnMuZm9yRWFjaCgobW9kaWZpZXIpID0+IHtcbiAgICAgICAgY29uc3QgaXNBcmJpdHJhcnlWYXJpYW50ID0gbW9kaWZpZXJbMF0gPT09ICdbJ1xuXG4gICAgICAgIGlmIChpc0FyYml0cmFyeVZhcmlhbnQpIHtcbiAgICAgICAgICAgIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSwgbW9kaWZpZXIpXG4gICAgICAgICAgICB1bnNvcnRlZE1vZGlmaWVycyA9IFtdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bnNvcnRlZE1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHNvcnRlZE1vZGlmaWVycy5wdXNoKC4uLnVuc29ydGVkTW9kaWZpZXJzLnNvcnQoKSlcblxuICAgIHJldHVybiBzb3J0ZWRNb2RpZmllcnNcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVDbGFzc0dyb3VwVXRpbHMgfSBmcm9tICcuL2NsYXNzLWdyb3VwLXV0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlTHJ1Q2FjaGUgfSBmcm9tICcuL2xydS1jYWNoZSdcbmltcG9ydCB7IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lIH0gZnJvbSAnLi9wYXJzZS1jbGFzcy1uYW1lJ1xuaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCB0eXBlIENvbmZpZ1V0aWxzID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ29uZmlnVXRpbHM+XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb25maWdVdGlscyA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+ICh7XG4gICAgY2FjaGU6IGNyZWF0ZUxydUNhY2hlPHN0cmluZywgc3RyaW5nPihjb25maWcuY2FjaGVTaXplKSxcbiAgICBwYXJzZUNsYXNzTmFtZTogY3JlYXRlUGFyc2VDbGFzc05hbWUoY29uZmlnKSxcbiAgICAuLi5jcmVhdGVDbGFzc0dyb3VwVXRpbHMoY29uZmlnKSxcbn0pXG4iLCAiaW1wb3J0IHsgQ29uZmlnVXRpbHMgfSBmcm9tICcuL2NvbmZpZy11dGlscydcbmltcG9ydCB7IElNUE9SVEFOVF9NT0RJRklFUiwgc29ydE1vZGlmaWVycyB9IGZyb20gJy4vcGFyc2UtY2xhc3MtbmFtZSdcblxuY29uc3QgU1BMSVRfQ0xBU1NFU19SRUdFWCA9IC9cXHMrL1xuXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc0xpc3QgPSAoY2xhc3NMaXN0OiBzdHJpbmcsIGNvbmZpZ1V0aWxzOiBDb25maWdVdGlscykgPT4ge1xuICAgIGNvbnN0IHsgcGFyc2VDbGFzc05hbWUsIGdldENsYXNzR3JvdXBJZCwgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzIH0gPSBjb25maWdVdGlsc1xuXG4gICAgLyoqXG4gICAgICogU2V0IG9mIGNsYXNzR3JvdXBJZHMgaW4gZm9sbG93aW5nIGZvcm1hdDpcbiAgICAgKiBge2ltcG9ydGFudE1vZGlmaWVyfXt2YXJpYW50TW9kaWZpZXJzfXtjbGFzc0dyb3VwSWR9YFxuICAgICAqIEBleGFtcGxlICdmbG9hdCdcbiAgICAgKiBAZXhhbXBsZSAnaG92ZXI6Zm9jdXM6YmctY29sb3InXG4gICAgICogQGV4YW1wbGUgJ21kOiFwcidcbiAgICAgKi9cbiAgICBjb25zdCBjbGFzc0dyb3Vwc0luQ29uZmxpY3Q6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBjbGFzc05hbWVzID0gY2xhc3NMaXN0LnRyaW0oKS5zcGxpdChTUExJVF9DTEFTU0VTX1JFR0VYKVxuXG4gICAgbGV0IHJlc3VsdCA9ICcnXG5cbiAgICBmb3IgKGxldCBpbmRleCA9IGNsYXNzTmFtZXMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXggLT0gMSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbENsYXNzTmFtZSA9IGNsYXNzTmFtZXNbaW5kZXhdIVxuXG4gICAgICAgIGNvbnN0IHsgbW9kaWZpZXJzLCBoYXNJbXBvcnRhbnRNb2RpZmllciwgYmFzZUNsYXNzTmFtZSwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiB9ID1cbiAgICAgICAgICAgIHBhcnNlQ2xhc3NOYW1lKG9yaWdpbmFsQ2xhc3NOYW1lKVxuXG4gICAgICAgIGxldCBoYXNQb3N0Zml4TW9kaWZpZXIgPSBCb29sZWFuKG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pXG4gICAgICAgIGxldCBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoXG4gICAgICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXJcbiAgICAgICAgICAgICAgICA/IGJhc2VDbGFzc05hbWUuc3Vic3RyaW5nKDAsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24pXG4gICAgICAgICAgICAgICAgOiBiYXNlQ2xhc3NOYW1lLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKCFjbGFzc0dyb3VwSWQpIHtcbiAgICAgICAgICAgIGlmICghaGFzUG9zdGZpeE1vZGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGFzc0dyb3VwSWQgPSBnZXRDbGFzc0dyb3VwSWQoYmFzZUNsYXNzTmFtZSlcblxuICAgICAgICAgICAgaWYgKCFjbGFzc0dyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllciA9IGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYW50TW9kaWZpZXIgPSBzb3J0TW9kaWZpZXJzKG1vZGlmaWVycykuam9pbignOicpXG5cbiAgICAgICAgY29uc3QgbW9kaWZpZXJJZCA9IGhhc0ltcG9ydGFudE1vZGlmaWVyXG4gICAgICAgICAgICA/IHZhcmlhbnRNb2RpZmllciArIElNUE9SVEFOVF9NT0RJRklFUlxuICAgICAgICAgICAgOiB2YXJpYW50TW9kaWZpZXJcblxuICAgICAgICBjb25zdCBjbGFzc0lkID0gbW9kaWZpZXJJZCArIGNsYXNzR3JvdXBJZFxuXG4gICAgICAgIGlmIChjbGFzc0dyb3Vwc0luQ29uZmxpY3QuaW5jbHVkZXMoY2xhc3NJZCkpIHtcbiAgICAgICAgICAgIC8vIFRhaWx3aW5kIGNsYXNzIG9taXR0ZWQgZHVlIHRvIGNvbmZsaWN0XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2goY2xhc3NJZClcblxuICAgICAgICBjb25zdCBjb25mbGljdEdyb3VwcyA9IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyhjbGFzc0dyb3VwSWQsIGhhc1Bvc3RmaXhNb2RpZmllcilcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25mbGljdEdyb3Vwcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBjb25mbGljdEdyb3Vwc1tpXSFcbiAgICAgICAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKG1vZGlmaWVySWQgKyBncm91cClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRhaWx3aW5kIGNsYXNzIG5vdCBpbiBjb25mbGljdFxuICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG4iLCAiLyoqXG4gKiBUaGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgY29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4IGFuZCBtb2RpZmllZCB0byBzdWl0IHRoZSBuZWVkcyBvZiB0YWlsd2luZC1tZXJnZSBiZXR0ZXIuXG4gKlxuICogU3BlY2lmaWNhbGx5OlxuICogLSBSdW50aW1lIGNvZGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvc3JjL2luZGV4LmpzXG4gKiAtIFR5cGVTY3JpcHQgdHlwZXMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3gvYmxvYi92MS4yLjEvY2xzeC5kLnRzXG4gKlxuICogT3JpZ2luYWwgY29kZSBoYXMgTUlUIGxpY2Vuc2U6IENvcHlyaWdodCAoYykgTHVrZSBFZHdhcmRzIDxsdWtlLmVkd2FyZHMwNUBnbWFpbC5jb20+IChsdWtlZWQuY29tKVxuICovXG5cbmV4cG9ydCB0eXBlIENsYXNzTmFtZVZhbHVlID0gQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgMCB8IDBuIHwgZmFsc2VcbnR5cGUgQ2xhc3NOYW1lQXJyYXkgPSBDbGFzc05hbWVWYWx1ZVtdXG5cbmV4cG9ydCBmdW5jdGlvbiB0d0pvaW4oLi4uY2xhc3NMaXN0czogQ2xhc3NOYW1lVmFsdWVbXSk6IHN0cmluZ1xuZXhwb3J0IGZ1bmN0aW9uIHR3Sm9pbigpIHtcbiAgICBsZXQgaW5kZXggPSAwXG4gICAgbGV0IGFyZ3VtZW50OiBDbGFzc05hbWVWYWx1ZVxuICAgIGxldCByZXNvbHZlZFZhbHVlOiBzdHJpbmdcbiAgICBsZXQgc3RyaW5nID0gJydcblxuICAgIHdoaWxlIChpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKChhcmd1bWVudCA9IGFyZ3VtZW50c1tpbmRleCsrXSkpIHtcbiAgICAgICAgICAgIGlmICgocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUoYXJndW1lbnQpKSkge1xuICAgICAgICAgICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJylcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmdcbn1cblxuY29uc3QgdG9WYWx1ZSA9IChtaXg6IENsYXNzTmFtZUFycmF5IHwgc3RyaW5nKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBtaXggPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBtaXhcbiAgICB9XG5cbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZTogc3RyaW5nXG4gICAgbGV0IHN0cmluZyA9ICcnXG5cbiAgICBmb3IgKGxldCBrID0gMDsgayA8IG1peC5sZW5ndGg7IGsrKykge1xuICAgICAgICBpZiAobWl4W2tdKSB7XG4gICAgICAgICAgICBpZiAoKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKG1peFtrXSBhcyBDbGFzc05hbWVBcnJheSB8IHN0cmluZykpKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKVxuICAgICAgICAgICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ29uZmlnVXRpbHMgfSBmcm9tICcuL2NvbmZpZy11dGlscydcbmltcG9ydCB7IG1lcmdlQ2xhc3NMaXN0IH0gZnJvbSAnLi9tZXJnZS1jbGFzc2xpc3QnXG5pbXBvcnQgeyBDbGFzc05hbWVWYWx1ZSwgdHdKb2luIH0gZnJvbSAnLi90dy1qb2luJ1xuaW1wb3J0IHsgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbnR5cGUgQ3JlYXRlQ29uZmlnRmlyc3QgPSAoKSA9PiBHZW5lcmljQ29uZmlnXG50eXBlIENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiBHZW5lcmljQ29uZmlnXG50eXBlIFRhaWx3aW5kTWVyZ2UgPSAoLi4uY2xhc3NMaXN0czogQ2xhc3NOYW1lVmFsdWVbXSkgPT4gc3RyaW5nXG50eXBlIENvbmZpZ1V0aWxzID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQ29uZmlnVXRpbHM+XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWlsd2luZE1lcmdlKFxuICAgIGNyZWF0ZUNvbmZpZ0ZpcnN0OiBDcmVhdGVDb25maWdGaXJzdCxcbiAgICAuLi5jcmVhdGVDb25maWdSZXN0OiBDcmVhdGVDb25maWdTdWJzZXF1ZW50W11cbik6IFRhaWx3aW5kTWVyZ2Uge1xuICAgIGxldCBjb25maWdVdGlsczogQ29uZmlnVXRpbHNcbiAgICBsZXQgY2FjaGVHZXQ6IENvbmZpZ1V0aWxzWydjYWNoZSddWydnZXQnXVxuICAgIGxldCBjYWNoZVNldDogQ29uZmlnVXRpbHNbJ2NhY2hlJ11bJ3NldCddXG4gICAgbGV0IGZ1bmN0aW9uVG9DYWxsID0gaW5pdFRhaWx3aW5kTWVyZ2VcblxuICAgIGZ1bmN0aW9uIGluaXRUYWlsd2luZE1lcmdlKGNsYXNzTGlzdDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGNyZWF0ZUNvbmZpZ1Jlc3QucmVkdWNlKFxuICAgICAgICAgICAgKHByZXZpb3VzQ29uZmlnLCBjcmVhdGVDb25maWdDdXJyZW50KSA9PiBjcmVhdGVDb25maWdDdXJyZW50KHByZXZpb3VzQ29uZmlnKSxcbiAgICAgICAgICAgIGNyZWF0ZUNvbmZpZ0ZpcnN0KCkgYXMgR2VuZXJpY0NvbmZpZyxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbmZpZ1V0aWxzID0gY3JlYXRlQ29uZmlnVXRpbHMoY29uZmlnKVxuICAgICAgICBjYWNoZUdldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLmdldFxuICAgICAgICBjYWNoZVNldCA9IGNvbmZpZ1V0aWxzLmNhY2hlLnNldFxuICAgICAgICBmdW5jdGlvblRvQ2FsbCA9IHRhaWx3aW5kTWVyZ2VcblxuICAgICAgICByZXR1cm4gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3QpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGFpbHdpbmRNZXJnZShjbGFzc0xpc3Q6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZUdldChjbGFzc0xpc3QpXG5cbiAgICAgICAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbWVyZ2VDbGFzc0xpc3QoY2xhc3NMaXN0LCBjb25maWdVdGlscylcbiAgICAgICAgY2FjaGVTZXQoY2xhc3NMaXN0LCByZXN1bHQpXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiBjYWxsVGFpbHdpbmRNZXJnZSgpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uVG9DYWxsKHR3Sm9pbi5hcHBseShudWxsLCBhcmd1bWVudHMgYXMgYW55KSlcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgRGVmYXVsdFRoZW1lR3JvdXBJZHMsIE5vSW5mZXIsIFRoZW1lR2V0dGVyLCBUaGVtZU9iamVjdCB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBmcm9tVGhlbWUgPSA8XG4gICAgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgICBEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIGV4dGVuZHMgc3RyaW5nID0gRGVmYXVsdFRoZW1lR3JvdXBJZHMsXG4+KGtleTogTm9JbmZlcjxEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHM+KTogVGhlbWVHZXR0ZXIgPT4ge1xuICAgIGNvbnN0IHRoZW1lR2V0dGVyID0gKHRoZW1lOiBUaGVtZU9iamVjdDxEZWZhdWx0VGhlbWVHcm91cElkc0lubmVyIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHM+KSA9PlxuICAgICAgICB0aGVtZVtrZXldIHx8IFtdXG5cbiAgICB0aGVtZUdldHRlci5pc1RoZW1lR2V0dGVyID0gdHJ1ZSBhcyBjb25zdFxuXG4gICAgcmV0dXJuIHRoZW1lR2V0dGVyXG59XG4iLCAiY29uc3QgYXJiaXRyYXJ5VmFsdWVSZWdleCA9IC9eXFxbKD86KFthLXotXSspOik/KC4rKVxcXSQvaVxuY29uc3QgZnJhY3Rpb25SZWdleCA9IC9eXFxkK1xcL1xcZCskL1xuY29uc3Qgc3RyaW5nTGVuZ3RocyA9IG5ldyBTZXQoWydweCcsICdmdWxsJywgJ3NjcmVlbiddKVxuY29uc3QgdHNoaXJ0VW5pdFJlZ2V4ID0gL14oXFxkKyhcXC5cXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkL1xuY29uc3QgbGVuZ3RoVW5pdFJlZ2V4ID1cbiAgICAvXFxkKyglfHB4fHI/ZW18W3NkbF0/dihbaHdpYl18bWlufG1heCl8cHR8cGN8aW58Y218bW18Y2FwfGNofGV4fHI/bGh8Y3Eod3xofGl8YnxtaW58bWF4KSl8XFxiKGNhbGN8bWlufG1heHxjbGFtcClcXCguK1xcKXxeMCQvXG5jb25zdCBjb2xvckZ1bmN0aW9uUmVnZXggPSAvXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCkpXFwoLitcXCkkL1xuLy8gU2hhZG93IGFsd2F5cyBiZWdpbnMgd2l0aCB4IGFuZCB5IG9mZnNldCBzZXBhcmF0ZWQgYnkgdW5kZXJzY29yZSBvcHRpb25hbGx5IHByZXBlbmRlZCBieSBpbnNldFxuY29uc3Qgc2hhZG93UmVnZXggPSAvXihpbnNldF8pPy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApXy0/KChcXGQrKT9cXC4/KFxcZCspW2Etel0rfDApL1xuY29uc3QgaW1hZ2VSZWdleCA9XG4gICAgL14odXJsfGltYWdlfGltYWdlLXNldHxjcm9zcy1mYWRlfGVsZW1lbnR8KHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsfGNvbmljKS1ncmFkaWVudClcXCguK1xcKSQvXG5cbmV4cG9ydCBjb25zdCBpc0xlbmd0aCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGlzTnVtYmVyKHZhbHVlKSB8fCBzdHJpbmdMZW5ndGhzLmhhcyh2YWx1ZSkgfHwgZnJhY3Rpb25SZWdleC50ZXN0KHZhbHVlKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlMZW5ndGggPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbGVuZ3RoJywgaXNMZW5ndGhPbmx5KVxuXG5leHBvcnQgY29uc3QgaXNOdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4gQm9vbGVhbih2YWx1ZSkgJiYgIU51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlOdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ251bWJlcicsIGlzTnVtYmVyKVxuXG5leHBvcnQgY29uc3QgaXNJbnRlZ2VyID0gKHZhbHVlOiBzdHJpbmcpID0+IEJvb2xlYW4odmFsdWUpICYmIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKHZhbHVlKSlcblxuZXhwb3J0IGNvbnN0IGlzUGVyY2VudCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS5lbmRzV2l0aCgnJScpICYmIGlzTnVtYmVyKHZhbHVlLnNsaWNlKDAsIC0xKSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5VmFsdWUgPSAodmFsdWU6IHN0cmluZykgPT4gYXJiaXRyYXJ5VmFsdWVSZWdleC50ZXN0KHZhbHVlKVxuXG5leHBvcnQgY29uc3QgaXNUc2hpcnRTaXplID0gKHZhbHVlOiBzdHJpbmcpID0+IHRzaGlydFVuaXRSZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBzaXplTGFiZWxzID0gbmV3IFNldChbJ2xlbmd0aCcsICdzaXplJywgJ3BlcmNlbnRhZ2UnXSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5U2l6ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBzaXplTGFiZWxzLCBpc05ldmVyKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlQb3NpdGlvbiA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdwb3NpdGlvbicsIGlzTmV2ZXIpXG5cbmNvbnN0IGltYWdlTGFiZWxzID0gbmV3IFNldChbJ2ltYWdlJywgJ3VybCddKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlJbWFnZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCBpbWFnZUxhYmVscywgaXNJbWFnZSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5U2hhZG93ID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICcnLCBpc1NoYWRvdylcblxuZXhwb3J0IGNvbnN0IGlzQW55ID0gKCkgPT4gdHJ1ZVxuXG5jb25zdCBnZXRJc0FyYml0cmFyeVZhbHVlID0gKFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgbGFiZWw6IHN0cmluZyB8IFNldDxzdHJpbmc+LFxuICAgIHRlc3RWYWx1ZTogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW4sXG4pID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhcmJpdHJhcnlWYWx1ZVJlZ2V4LmV4ZWModmFsdWUpXG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGlmIChyZXN1bHRbMV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnID8gcmVzdWx0WzFdID09PSBsYWJlbCA6IGxhYmVsLmhhcyhyZXN1bHRbMV0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGVzdFZhbHVlKHJlc3VsdFsyXSEpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbmNvbnN0IGlzTGVuZ3RoT25seSA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIC8vIGBjb2xvckZ1bmN0aW9uUmVnZXhgIGNoZWNrIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGNvbG9yIGZ1bmN0aW9ucyBjYW4gaGF2ZSBwZXJjZW50YWdlcyBpbiB0aGVtIHdoaWNoIHdoaWNoIHdvdWxkIGJlIGluY29ycmVjdGx5IGNsYXNzaWZpZWQgYXMgbGVuZ3Rocy5cbiAgICAvLyBGb3IgZXhhbXBsZSwgYGhzbCgwIDAlIDAlKWAgd291bGQgYmUgY2xhc3NpZmllZCBhcyBhIGxlbmd0aCB3aXRob3V0IHRoaXMgY2hlY2suXG4gICAgLy8gSSBjb3VsZCBhbHNvIHVzZSBsb29rYmVoaW5kIGFzc2VydGlvbiBpbiBgbGVuZ3RoVW5pdFJlZ2V4YCBidXQgdGhhdCBpc24ndCBzdXBwb3J0ZWQgd2lkZWx5IGVub3VnaC5cbiAgICBsZW5ndGhVbml0UmVnZXgudGVzdCh2YWx1ZSkgJiYgIWNvbG9yRnVuY3Rpb25SZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBpc05ldmVyID0gKCkgPT4gZmFsc2VcblxuY29uc3QgaXNTaGFkb3cgPSAodmFsdWU6IHN0cmluZykgPT4gc2hhZG93UmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3QgaXNJbWFnZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBpbWFnZVJlZ2V4LnRlc3QodmFsdWUpXG4iLCAiaW1wb3J0IHsgZnJvbVRoZW1lIH0gZnJvbSAnLi9mcm9tLXRoZW1lJ1xuaW1wb3J0IHsgQ29uZmlnLCBEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHtcbiAgICBpc0FueSxcbiAgICBpc0FyYml0cmFyeUltYWdlLFxuICAgIGlzQXJiaXRyYXJ5TGVuZ3RoLFxuICAgIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICAgIGlzQXJiaXRyYXJ5UG9zaXRpb24sXG4gICAgaXNBcmJpdHJhcnlTaGFkb3csXG4gICAgaXNBcmJpdHJhcnlTaXplLFxuICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgaXNJbnRlZ2VyLFxuICAgIGlzTGVuZ3RoLFxuICAgIGlzTnVtYmVyLFxuICAgIGlzUGVyY2VudCxcbiAgICBpc1RzaGlydFNpemUsXG59IGZyb20gJy4vdmFsaWRhdG9ycydcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRDb25maWcgPSAoKSA9PiB7XG4gICAgY29uc3QgY29sb3JzID0gZnJvbVRoZW1lKCdjb2xvcnMnKVxuICAgIGNvbnN0IHNwYWNpbmcgPSBmcm9tVGhlbWUoJ3NwYWNpbmcnKVxuICAgIGNvbnN0IGJsdXIgPSBmcm9tVGhlbWUoJ2JsdXInKVxuICAgIGNvbnN0IGJyaWdodG5lc3MgPSBmcm9tVGhlbWUoJ2JyaWdodG5lc3MnKVxuICAgIGNvbnN0IGJvcmRlckNvbG9yID0gZnJvbVRoZW1lKCdib3JkZXJDb2xvcicpXG4gICAgY29uc3QgYm9yZGVyUmFkaXVzID0gZnJvbVRoZW1lKCdib3JkZXJSYWRpdXMnKVxuICAgIGNvbnN0IGJvcmRlclNwYWNpbmcgPSBmcm9tVGhlbWUoJ2JvcmRlclNwYWNpbmcnKVxuICAgIGNvbnN0IGJvcmRlcldpZHRoID0gZnJvbVRoZW1lKCdib3JkZXJXaWR0aCcpXG4gICAgY29uc3QgY29udHJhc3QgPSBmcm9tVGhlbWUoJ2NvbnRyYXN0JylcbiAgICBjb25zdCBncmF5c2NhbGUgPSBmcm9tVGhlbWUoJ2dyYXlzY2FsZScpXG4gICAgY29uc3QgaHVlUm90YXRlID0gZnJvbVRoZW1lKCdodWVSb3RhdGUnKVxuICAgIGNvbnN0IGludmVydCA9IGZyb21UaGVtZSgnaW52ZXJ0JylcbiAgICBjb25zdCBnYXAgPSBmcm9tVGhlbWUoJ2dhcCcpXG4gICAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BzID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcHMnKVxuICAgIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zID0gZnJvbVRoZW1lKCdncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucycpXG4gICAgY29uc3QgaW5zZXQgPSBmcm9tVGhlbWUoJ2luc2V0JylcbiAgICBjb25zdCBtYXJnaW4gPSBmcm9tVGhlbWUoJ21hcmdpbicpXG4gICAgY29uc3Qgb3BhY2l0eSA9IGZyb21UaGVtZSgnb3BhY2l0eScpXG4gICAgY29uc3QgcGFkZGluZyA9IGZyb21UaGVtZSgncGFkZGluZycpXG4gICAgY29uc3Qgc2F0dXJhdGUgPSBmcm9tVGhlbWUoJ3NhdHVyYXRlJylcbiAgICBjb25zdCBzY2FsZSA9IGZyb21UaGVtZSgnc2NhbGUnKVxuICAgIGNvbnN0IHNlcGlhID0gZnJvbVRoZW1lKCdzZXBpYScpXG4gICAgY29uc3Qgc2tldyA9IGZyb21UaGVtZSgnc2tldycpXG4gICAgY29uc3Qgc3BhY2UgPSBmcm9tVGhlbWUoJ3NwYWNlJylcbiAgICBjb25zdCB0cmFuc2xhdGUgPSBmcm9tVGhlbWUoJ3RyYW5zbGF0ZScpXG5cbiAgICBjb25zdCBnZXRPdmVyc2Nyb2xsID0gKCkgPT4gWydhdXRvJywgJ2NvbnRhaW4nLCAnbm9uZSddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0T3ZlcmZsb3cgPSAoKSA9PiBbJ2F1dG8nLCAnaGlkZGVuJywgJ2NsaXAnLCAndmlzaWJsZScsICdzY3JvbGwnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkgPSAoKSA9PiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkgPSAoKSA9PiBbJycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSA9ICgpID0+IFsnYXV0bycsIGlzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFBvc2l0aW9ucyA9ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgJ2NlbnRlcicsXG4gICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAnbGVmdC1ib3R0b20nLFxuICAgICAgICAgICAgJ2xlZnQtdG9wJyxcbiAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAncmlnaHQtYm90dG9tJyxcbiAgICAgICAgICAgICdyaWdodC10b3AnLFxuICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgIF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRMaW5lU3R5bGVzID0gKCkgPT4gWydzb2xpZCcsICdkYXNoZWQnLCAnZG90dGVkJywgJ2RvdWJsZScsICdub25lJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRCbGVuZE1vZGVzID0gKCkgPT5cbiAgICAgICAgW1xuICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAnbXVsdGlwbHknLFxuICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAnb3ZlcmxheScsXG4gICAgICAgICAgICAnZGFya2VuJyxcbiAgICAgICAgICAgICdsaWdodGVuJyxcbiAgICAgICAgICAgICdjb2xvci1kb2RnZScsXG4gICAgICAgICAgICAnY29sb3ItYnVybicsXG4gICAgICAgICAgICAnaGFyZC1saWdodCcsXG4gICAgICAgICAgICAnc29mdC1saWdodCcsXG4gICAgICAgICAgICAnZGlmZmVyZW5jZScsXG4gICAgICAgICAgICAnZXhjbHVzaW9uJyxcbiAgICAgICAgICAgICdodWUnLFxuICAgICAgICAgICAgJ3NhdHVyYXRpb24nLFxuICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICdsdW1pbm9zaXR5JyxcbiAgICAgICAgXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEFsaWduID0gKCkgPT5cbiAgICAgICAgWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2JldHdlZW4nLCAnYXJvdW5kJywgJ2V2ZW5seScsICdzdHJldGNoJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRaZXJvQW5kRW1wdHkgPSAoKSA9PiBbJycsICcwJywgaXNBcmJpdHJhcnlWYWx1ZV0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRCcmVha3MgPSAoKSA9PlxuICAgICAgICBbJ2F1dG8nLCAnYXZvaWQnLCAnYWxsJywgJ2F2b2lkLXBhZ2UnLCAncGFnZScsICdsZWZ0JywgJ3JpZ2h0JywgJ2NvbHVtbiddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5ID0gKCkgPT4gW2lzTnVtYmVyLCBpc0FyYml0cmFyeVZhbHVlXVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FjaGVTaXplOiA1MDAsXG4gICAgICAgIHNlcGFyYXRvcjogJzonLFxuICAgICAgICB0aGVtZToge1xuICAgICAgICAgICAgY29sb3JzOiBbaXNBbnldLFxuICAgICAgICAgICAgc3BhY2luZzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICAgICAgICBibHVyOiBbJ25vbmUnLCAnJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgICAgICAgIGJyaWdodG5lc3M6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IFtjb2xvcnNdLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBbJ25vbmUnLCAnJywgJ2Z1bGwnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgICAgICAgYm9yZGVyU3BhY2luZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGJvcmRlcldpZHRoOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGNvbnRyYXN0OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGdyYXlzY2FsZTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBodWVSb3RhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgaW52ZXJ0OiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIGdhcDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTdG9wczogW2NvbG9yc10sXG4gICAgICAgICAgICBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uczogW2lzUGVyY2VudCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgICAgICAgaW5zZXQ6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgbWFyZ2luOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIG9wYWNpdHk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgcGFkZGluZzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNhdHVyYXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNjYWxlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNlcGlhOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIHNrZXc6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc3BhY2U6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzR3JvdXBzOiB7XG4gICAgICAgICAgICAvLyBMYXlvdXRcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXNwZWN0IFJhdGlvXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXNwZWN0LXJhdGlvXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFzcGVjdDogW3sgYXNwZWN0OiBbJ2F1dG8nLCAnc3F1YXJlJywgJ3ZpZGVvJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRhaW5lclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRhaW5lclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250YWluZXI6IFsnY29udGFpbmVyJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbHVtbnM6IFt7IGNvbHVtbnM6IFtpc1RzaGlydFNpemVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBBZnRlclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWFmdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1hZnRlcic6IFt7ICdicmVhay1hZnRlcic6IGdldEJyZWFrcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBCZWZvcmVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1iZWZvcmVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWJlZm9yZSc6IFt7ICdicmVhay1iZWZvcmUnOiBnZXRCcmVha3MoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgSW5zaWRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstaW5zaWRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1pbnNpZGUnOiBbeyAnYnJlYWstaW5zaWRlJzogWydhdXRvJywgJ2F2b2lkJywgJ2F2b2lkLXBhZ2UnLCAnYXZvaWQtY29sdW1uJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBEZWNvcmF0aW9uIEJyZWFrXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LWRlY29yYXRpb24tYnJlYWtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JveC1kZWNvcmF0aW9uJzogW3sgJ2JveC1kZWNvcmF0aW9uJzogWydzbGljZScsICdjbG9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2l6aW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNpemluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBib3g6IFt7IGJveDogWydib3JkZXInLCAnY29udGVudCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXNwbGF5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGlzcGxheVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkaXNwbGF5OiBbXG4gICAgICAgICAgICAgICAgJ2Jsb2NrJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lJyxcbiAgICAgICAgICAgICAgICAnZmxleCcsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1mbGV4JyxcbiAgICAgICAgICAgICAgICAndGFibGUnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtdGFibGUnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jYXB0aW9uJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY2VsbCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNvbHVtbicsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNvbHVtbi1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWZvb3Rlci1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWhlYWRlci1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLXJvdy1ncm91cCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLXJvdycsXG4gICAgICAgICAgICAgICAgJ2Zsb3ctcm9vdCcsXG4gICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtZ3JpZCcsXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnRzJyxcbiAgICAgICAgICAgICAgICAnbGlzdC1pdGVtJyxcbiAgICAgICAgICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsb2F0c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Zsb2F0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZsb2F0OiBbeyBmbG9hdDogWydyaWdodCcsICdsZWZ0JywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENsZWFyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2xlYXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2xlYXI6IFt7IGNsZWFyOiBbJ2xlZnQnLCAncmlnaHQnLCAnYm90aCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJc29sYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pc29sYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaXNvbGF0aW9uOiBbJ2lzb2xhdGUnLCAnaXNvbGF0aW9uLWF1dG8nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT2JqZWN0IEZpdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1maXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ29iamVjdC1maXQnOiBbeyBvYmplY3Q6IFsnY29udGFpbicsICdjb3ZlcicsICdmaWxsJywgJ25vbmUnLCAnc2NhbGUtZG93biddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPYmplY3QgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ29iamVjdC1wb3NpdGlvbic6IFt7IG9iamVjdDogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvdmVyZmxvdzogW3sgb3ZlcmZsb3c6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93IFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcmZsb3cteCc6IFt7ICdvdmVyZmxvdy14JzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3cgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyZmxvdy15JzogW3sgJ292ZXJmbG93LXknOiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvdmVyc2Nyb2xsOiBbeyBvdmVyc2Nyb2xsOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJzY3JvbGwteCc6IFt7ICdvdmVyc2Nyb2xsLXgnOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3IgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJzY3JvbGwteSc6IFt7ICdvdmVyc2Nyb2xsLXknOiBnZXRPdmVyc2Nyb2xsKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcG9zaXRpb246IFsnc3RhdGljJywgJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3JlbGF0aXZlJywgJ3N0aWNreSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3AgLyBSaWdodCAvIEJvdHRvbSAvIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5zZXQ6IFt7IGluc2V0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaWdodCAvIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2luc2V0LXgnOiBbeyAnaW5zZXQteCc6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcCAvIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaW5zZXQteSc6IFt7ICdpbnNldC15JzogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3RhcnQ6IFt7IHN0YXJ0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZW5kOiBbeyBlbmQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0b3A6IFt7IHRvcDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmlnaHQ6IFt7IHJpZ2h0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYm90dG9tOiBbeyBib3R0b206IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGVmdDogW3sgbGVmdDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmlzaWJpbGl0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Zpc2liaWxpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogWyd2aXNpYmxlJywgJ2ludmlzaWJsZScsICdjb2xsYXBzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBaLUluZGV4XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvei1pbmRleFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB6OiBbeyB6OiBbJ2F1dG8nLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gRmxleGJveCBhbmQgR3JpZFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IEJhc2lzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1iYXNpc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBiYXNpczogW3sgYmFzaXM6IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IERpcmVjdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZGlyZWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmbGV4LWRpcmVjdGlvbic6IFt7IGZsZXg6IFsncm93JywgJ3Jvdy1yZXZlcnNlJywgJ2NvbCcsICdjb2wtcmV2ZXJzZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IFdyYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXdyYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZsZXgtd3JhcCc6IFt7IGZsZXg6IFsnd3JhcCcsICd3cmFwLXJldmVyc2UnLCAnbm93cmFwJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZsZXg6IFt7IGZsZXg6IFsnMScsICdhdXRvJywgJ2luaXRpYWwnLCAnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IEdyb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWdyb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ3JvdzogW3sgZ3JvdzogZ2V0WmVyb0FuZEVtcHR5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggU2hyaW5rXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1zaHJpbmtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hyaW5rOiBbeyBzaHJpbms6IGdldFplcm9BbmRFbXB0eSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPcmRlclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29yZGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9yZGVyOiBbeyBvcmRlcjogWydmaXJzdCcsICdsYXN0JywgJ25vbmUnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFRlbXBsYXRlIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLWNvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtY29scyc6IFt7ICdncmlkLWNvbHMnOiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBTdGFydCAvIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtc3RhcnQtZW5kJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29sOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNwYW46IFsnZnVsbCcsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1zdGFydCc6IFt7ICdjb2wtc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLWVuZCc6IFt7ICdjb2wtZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBUZW1wbGF0ZSBSb3dzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1yb3dzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLXJvd3MnOiBbeyAnZ3JpZC1yb3dzJzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgU3RhcnQgLyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LXN0YXJ0LWVuZCc6IFtcbiAgICAgICAgICAgICAgICB7IHJvdzogWydhdXRvJywgeyBzcGFuOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9LCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LXN0YXJ0JzogW3sgJ3Jvdy1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctZW5kJzogW3sgJ3Jvdy1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gRmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1mbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLWZsb3cnOiBbeyAnZ3JpZC1mbG93JzogWydyb3cnLCAnY29sJywgJ2RlbnNlJywgJ3Jvdy1kZW5zZScsICdjb2wtZGVuc2UnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIENvbHVtbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYXV0by1jb2xzJzogW3sgJ2F1dG8tY29scyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBSb3dzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLXJvd3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2F1dG8tcm93cyc6IFt7ICdhdXRvLXJvd3MnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ2FwOiBbeyBnYXA6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXAgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ2FwLXgnOiBbeyAnZ2FwLXgnOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dhcC15JzogW3sgJ2dhcC15JzogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogW3sganVzdGlmeTogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktaXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktaXRlbXMnOiBbeyAnanVzdGlmeS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3RpZnktc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1zZWxmJzogW3sgJ2p1c3RpZnktc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLWNvbnRlbnQnOiBbeyBjb250ZW50OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCksICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1pdGVtcyc6IFt7IGl0ZW1zOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24tc2VsZic6IFt7IHNlbGY6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLWNvbnRlbnQnOiBbeyAncGxhY2UtY29udGVudCc6IFsuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2UtaXRlbXMnOiBbeyAncGxhY2UtaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmFzZWxpbmUnLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Utc2VsZlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Utc2VsZic6IFt7ICdwbGFjZS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLy8gU3BhY2luZ1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwOiBbeyBwOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHg6IFt7IHB4OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHk6IFt7IHB5OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBzOiBbeyBwczogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGU6IFt7IHBlOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwdDogW3sgcHQ6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHI6IFt7IHByOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwYjogW3sgcGI6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwbDogW3sgcGw6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG06IFt7IG06IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBteDogW3sgbXg6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBteTogW3sgbXk6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXM6IFt7IG1zOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtZTogW3sgbWU6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG10OiBbeyBtdDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtcjogW3sgbXI6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1iOiBbeyBtYjogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1sOiBbeyBtbDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS14JzogW3sgJ3NwYWNlLXgnOiBbc3BhY2VdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFggUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS14LXJldmVyc2UnOiBbJ3NwYWNlLXgtcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteSc6IFt7ICdzcGFjZS15JzogW3NwYWNlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBZIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteS1yZXZlcnNlJzogWydzcGFjZS15LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8vIFNpemluZ1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2x2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZHZ3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaW4tV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4td2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21pbi13JzogW3sgJ21pbi13JzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXgtV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21heC13JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ21heC13JzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZnVsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncHJvc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzY3JlZW46IFtpc1RzaGlydFNpemVdIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RzaGlydFNpemUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2hlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBoOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2x2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZHZoJyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWluLUhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21pbi1oJzogW1xuICAgICAgICAgICAgICAgIHsgJ21pbi1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXgtSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWF4LWgnOiBbXG4gICAgICAgICAgICAgICAgeyAnbWF4LWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNpemU6IFt7IHNpemU6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZpdCddIH1dLFxuICAgICAgICAgICAgLy8gVHlwb2dyYXBoeVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFt7IHRleHQ6IFsnYmFzZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFNtb290aGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc21vb3RoaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXNtb290aGluZyc6IFsnYW50aWFsaWFzZWQnLCAnc3VicGl4ZWwtYW50aWFsaWFzZWQnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnOiBbJ2l0YWxpYycsICdub3QtaXRhbGljJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgV2VpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC13ZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtd2VpZ2h0JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhbGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2VtaWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxhY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgRmFtaWx5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1mYW1pbHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtZmFtaWx5JzogW3sgZm9udDogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLW5vcm1hbCc6IFsnbm9ybWFsLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLW9yZGluYWwnOiBbJ29yZGluYWwnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnc2xhc2hlZC16ZXJvJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2xpbmluZy1udW1zJywgJ29sZHN0eWxlLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLXNwYWNpbmcnOiBbJ3Byb3BvcnRpb25hbC1udW1zJywgJ3RhYnVsYXItbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2RpYWdvbmFsLWZyYWN0aW9ucycsICdzdGFja2VkLWZyYWN0b25zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExldHRlciBTcGFjaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGV0dGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhY2tpbmc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNraW5nOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGVzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaW5lIENsYW1wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1jbGFtcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGluZS1jbGFtcCc6IFt7ICdsaW5lLWNsYW1wJzogWydub25lJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5TnVtYmVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGluZSBIZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZWFkaW5nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZWFkaW5nOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NudWcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmVsYXhlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbG9vc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIEltYWdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1pbWFnZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1pbWFnZSc6IFt7ICdsaXN0LWltYWdlJzogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgVHlwZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1zdHlsZS10eXBlJzogW3sgbGlzdDogWydub25lJywgJ2Rpc2MnLCAnZGVjaW1hbCcsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbGlzdC1zdHlsZS1wb3NpdGlvbic6IFt7IGxpc3Q6IFsnaW5zaWRlJywgJ291dHNpZGUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2Vob2xkZXIgQ29sb3JcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItY29sb3InOiBbeyBwbGFjZWhvbGRlcjogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlaG9sZGVyIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZWhvbGRlci1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW3sgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgQWxpZ25tZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1hbGlnbm1lbnQnOiBbeyB0ZXh0OiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0JywgJ2p1c3RpZnknLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWNvbG9yJzogW3sgdGV4dDogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1vcGFjaXR5JzogW3sgJ3RleHQtb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24nOiBbJ3VuZGVybGluZScsICdvdmVybGluZScsICdsaW5lLXRocm91Z2gnLCAnbm8tdW5kZXJsaW5lJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLXN0eWxlJzogW3sgZGVjb3JhdGlvbjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ3dhdnknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFRoaWNrbmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MnOiBbXG4gICAgICAgICAgICAgICAgeyBkZWNvcmF0aW9uOiBbJ2F1dG8nLCAnZnJvbS1mb250JywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBVbmRlcmxpbmUgT2Zmc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC11bmRlcmxpbmUtb2Zmc2V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd1bmRlcmxpbmUtb2Zmc2V0JzogW3sgJ3VuZGVybGluZS1vZmZzZXQnOiBbJ2F1dG8nLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvbi1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJzogW3sgZGVjb3JhdGlvbjogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgVHJhbnNmb3JtXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC10cmFuc2Zvcm1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtdHJhbnNmb3JtJzogWyd1cHBlcmNhc2UnLCAnbG93ZXJjYXNlJywgJ2NhcGl0YWxpemUnLCAnbm9ybWFsLWNhc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBPdmVyZmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtb3ZlcmZsb3cnOiBbJ3RydW5jYXRlJywgJ3RleHQtZWxsaXBzaXMnLCAndGV4dC1jbGlwJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgV3JhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtd3JhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC13cmFwJzogW3sgdGV4dDogWyd3cmFwJywgJ25vd3JhcCcsICdiYWxhbmNlJywgJ3ByZXR0eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IEluZGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtaW5kZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGluZGVudDogW3sgaW5kZW50OiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWZXJ0aWNhbCBBbGlnbm1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92ZXJ0aWNhbC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndmVydGljYWwtYWxpZ24nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBhbGlnbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2VsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pZGRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXRvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1ib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1YicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3VwZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2hpdGVzcGFjZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3doaXRlc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgd2hpdGVzcGFjZTogW1xuICAgICAgICAgICAgICAgIHsgd2hpdGVzcGFjZTogWydub3JtYWwnLCAnbm93cmFwJywgJ3ByZScsICdwcmUtbGluZScsICdwcmUtd3JhcCcsICdicmVhay1zcGFjZXMnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV29yZCBCcmVha1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dvcmQtYnJlYWtcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnJlYWs6IFt7IGJyZWFrOiBbJ25vcm1hbCcsICd3b3JkcycsICdhbGwnLCAna2VlcCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIeXBoZW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHlwaGVuc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBoeXBoZW5zOiBbeyBoeXBoZW5zOiBbJ25vbmUnLCAnbWFudWFsJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udGVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udGVudDogW3sgY29udGVudDogWydub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBCYWNrZ3JvdW5kc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEF0dGFjaG1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWF0dGFjaG1lbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWF0dGFjaG1lbnQnOiBbeyBiZzogWydmaXhlZCcsICdsb2NhbCcsICdzY3JvbGwnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBDbGlwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jbGlwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1jbGlwJzogW3sgJ2JnLWNsaXAnOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnLCAndGV4dCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLW9wYWNpdHknOiBbeyAnYmctb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBPcmlnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLW9yaWdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctb3JpZ2luJzogW3sgJ2JnLW9yaWdpbic6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctcG9zaXRpb24nOiBbeyBiZzogWy4uLmdldFBvc2l0aW9ucygpLCBpc0FyYml0cmFyeVBvc2l0aW9uXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBSZXBlYXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXJlcGVhdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctcmVwZWF0JzogW3sgYmc6IFsnbm8tcmVwZWF0JywgeyByZXBlYXQ6IFsnJywgJ3gnLCAneScsICdyb3VuZCcsICdzcGFjZSddIH1dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXNpemUnOiBbeyBiZzogWydhdXRvJywgJ2NvdmVyJywgJ2NvbnRhaW4nLCBpc0FyYml0cmFyeVNpemVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEltYWdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1pbWFnZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctaW1hZ2UnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyAnZ3JhZGllbnQtdG8nOiBbJ3QnLCAndHInLCAncicsICdicicsICdiJywgJ2JsJywgJ2wnLCAndGwnXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWNvbG9yJzogW3sgYmc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LWZyb20tcG9zJzogW3sgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXZpYS1wb3MnOiBbeyB2aWE6IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvIFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXRvLXBvcyc6IFt7IHRvOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBGcm9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LWZyb20nOiBbeyBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVmlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXZpYSc6IFt7IHZpYTogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFRvXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JhZGllbnQtY29sb3Itc3RvcHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyYWRpZW50LXRvJzogW3sgdG86IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLy8gQm9yZGVyc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByb3VuZGVkOiBbeyByb3VuZGVkOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtcyc6IFt7ICdyb3VuZGVkLXMnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWUnOiBbeyAncm91bmRlZC1lJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10JzogW3sgJ3JvdW5kZWQtdCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1yJzogW3sgJ3JvdW5kZWQtcic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYic6IFt7ICdyb3VuZGVkLWInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1sJzogW3sgJ3JvdW5kZWQtbCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zcyc6IFt7ICdyb3VuZGVkLXNzJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zZSc6IFt7ICdyb3VuZGVkLXNlJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZWUnOiBbeyAncm91bmRlZC1lZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZXMnOiBbeyAncm91bmRlZC1lcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10bCc6IFt7ICdyb3VuZGVkLXRsJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC10cic6IFt7ICdyb3VuZGVkLXRyJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1icic6IFt7ICdyb3VuZGVkLWJyJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWJsJzogW3sgJ3JvdW5kZWQtYmwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdyc6IFt7IGJvcmRlcjogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXgnOiBbeyAnYm9yZGVyLXgnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcteSc6IFt7ICdib3JkZXIteSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctcyc6IFt7ICdib3JkZXItcyc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWUnOiBbeyAnYm9yZGVyLWUnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy10JzogW3sgJ2JvcmRlci10JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1yJzogW3sgJ2JvcmRlci1yJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctYic6IFt7ICdib3JkZXItYic6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1sJzogW3sgJ2JvcmRlci1sJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLW9wYWNpdHknOiBbeyAnYm9yZGVyLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXN0eWxlJzogW3sgYm9yZGVyOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnaGlkZGVuJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteCc6IFt7ICdkaXZpZGUteCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBYIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS14LXJldmVyc2UnOiBbJ2RpdmlkZS14LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS15JzogW3sgJ2RpdmlkZS15JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFkgUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXktcmV2ZXJzZSc6IFsnZGl2aWRlLXktcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtb3BhY2l0eSc6IFt7ICdkaXZpZGUtb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtc3R5bGUnOiBbeyBkaXZpZGU6IGdldExpbmVTdHlsZXMoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3InOiBbeyBib3JkZXI6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3IteCc6IFt7ICdib3JkZXIteCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3IteSc6IFt7ICdib3JkZXIteSc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci10JzogW3sgJ2JvcmRlci10JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3Itcic6IFt7ICdib3JkZXItcic6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1iJzogW3sgJ2JvcmRlci1iJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1sJzogW3sgJ2JvcmRlci1sJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUtY29sb3InOiBbeyBkaXZpZGU6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLXN0eWxlJzogW3sgb3V0bGluZTogWycnLCAuLi5nZXRMaW5lU3R5bGVzKCldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIE9mZnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtb2Zmc2V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLW9mZnNldCc6IFt7ICdvdXRsaW5lLW9mZnNldCc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLXcnOiBbeyBvdXRsaW5lOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtY29sb3InOiBbeyBvdXRsaW5lOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctdyc6IFt7IHJpbmc6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIFdpZHRoIEluc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy13LWluc2V0JzogWydyaW5nLWluc2V0J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLWNvbG9yJzogW3sgcmluZzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vcGFjaXR5JzogW3sgJ3Jpbmctb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPZmZzZXQgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vZmZzZXQtdyc6IFt7ICdyaW5nLW9mZnNldCc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9mZnNldCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9mZnNldC1jb2xvcic6IFt7ICdyaW5nLW9mZnNldCc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLy8gRWZmZWN0c1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2hhZG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaGFkb3c6IFt7IHNoYWRvdzogWycnLCAnaW5uZXInLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlTaGFkb3ddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggU2hhZG93IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm94LXNoYWRvdy1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2hhZG93LWNvbG9yJzogW3sgc2hhZG93OiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvcGFjaXR5OiBbeyBvcGFjaXR5OiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1peCBCbGVuZCBNb2RlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWl4LWJsZW5kLW1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21peC1ibGVuZCc6IFt7ICdtaXgtYmxlbmQnOiBbLi4uZ2V0QmxlbmRNb2RlcygpLCAncGx1cy1saWdodGVyJywgJ3BsdXMtZGFya2VyJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQmxlbmQgTW9kZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYmxlbmQtbW9kZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctYmxlbmQnOiBbeyAnYmctYmxlbmQnOiBnZXRCbGVuZE1vZGVzKCkgfV0sXG4gICAgICAgICAgICAvLyBGaWx0ZXJzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZpbHRlclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbHRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWx0ZXI6IFt7IGZpbHRlcjogWycnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCbHVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmx1clxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBibHVyOiBbeyBibHVyOiBbYmx1cl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyaWdodG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmlnaHRuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJyaWdodG5lc3M6IFt7IGJyaWdodG5lc3M6IFticmlnaHRuZXNzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udHJhc3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250cmFzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250cmFzdDogW3sgY29udHJhc3Q6IFtjb250cmFzdF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERyb3AgU2hhZG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZHJvcC1zaGFkb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Ryb3Atc2hhZG93JzogW3sgJ2Ryb3Atc2hhZG93JzogWycnLCAnbm9uZScsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYXlzY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYXlzY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBncmF5c2NhbGU6IFt7IGdyYXlzY2FsZTogW2dyYXlzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEh1ZSBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9odWUtcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdodWUtcm90YXRlJzogW3sgJ2h1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSW52ZXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaW52ZXJ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGludmVydDogW3sgaW52ZXJ0OiBbaW52ZXJ0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2F0dXJhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zYXR1cmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzYXR1cmF0ZTogW3sgc2F0dXJhdGU6IFtzYXR1cmF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNlcGlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2VwaWFcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2VwaWE6IFt7IHNlcGlhOiBbc2VwaWFdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBGaWx0ZXJcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1maWx0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWZpbHRlcic6IFt7ICdiYWNrZHJvcC1maWx0ZXInOiBbJycsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEJsdXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ibHVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1ibHVyJzogW3sgJ2JhY2tkcm9wLWJsdXInOiBbYmx1cl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEJyaWdodG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1icmlnaHRuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW3sgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbYnJpZ2h0bmVzc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIENvbnRyYXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtY29udHJhc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW3sgJ2JhY2tkcm9wLWNvbnRyYXN0JzogW2NvbnRyYXN0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgR3JheXNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZ3JheXNjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbeyAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW2dyYXlzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEh1ZSBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1odWUtcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1odWUtcm90YXRlJzogW3sgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbaHVlUm90YXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgSW52ZXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaW52ZXJ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1pbnZlcnQnOiBbeyAnYmFja2Ryb3AtaW52ZXJ0JzogW2ludmVydF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1vcGFjaXR5JzogW3sgJ2JhY2tkcm9wLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIFNhdHVyYXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2F0dXJhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3sgJ2JhY2tkcm9wLXNhdHVyYXRlJzogW3NhdHVyYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgU2VwaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zZXBpYVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atc2VwaWEnOiBbeyAnYmFja2Ryb3Atc2VwaWEnOiBbc2VwaWFdIH1dLFxuICAgICAgICAgICAgLy8gVGFibGVzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xsYXBzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xsYXBzZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbGxhcHNlJzogW3sgYm9yZGVyOiBbJ2NvbGxhcHNlJywgJ3NlcGFyYXRlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogW3sgJ2JvcmRlci1zcGFjaW5nJzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXgnOiBbeyAnYm9yZGVyLXNwYWNpbmcteCc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZy15JzogW3sgJ2JvcmRlci1zcGFjaW5nLXknOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRhYmxlIExheW91dFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RhYmxlLWxheW91dFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGFibGUtbGF5b3V0JzogW3sgdGFibGU6IFsnYXV0bycsICdmaXhlZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDYXB0aW9uIFNpZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jYXB0aW9uLXNpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY2FwdGlvbjogW3sgY2FwdGlvbjogWyd0b3AnLCAnYm90dG9tJ10gfV0sXG4gICAgICAgICAgICAvLyBUcmFuc2l0aW9ucyBhbmQgQW5pbWF0aW9uXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5pc2l0aW9uIFByb3BlcnR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1wcm9wZXJ0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9ycycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hhZG93JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBEdXJhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZHVyYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZHVyYXRpb246IFt7IGR1cmF0aW9uOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBUaW1pbmcgRnVuY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlYXNlOiBbeyBlYXNlOiBbJ2xpbmVhcicsICdpbicsICdvdXQnLCAnaW4tb3V0JywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gRGVsYXlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWRlbGF5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGRlbGF5OiBbeyBkZWxheTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFuaW1hdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FuaW1hdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhbmltYXRlOiBbeyBhbmltYXRlOiBbJ25vbmUnLCAnc3BpbicsICdwaW5nJywgJ3B1bHNlJywgJ2JvdW5jZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gVHJhbnNmb3Jtc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2Zvcm1cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBbeyB0cmFuc2Zvcm06IFsnJywgJ2dwdScsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2NhbGU6IFt7IHNjYWxlOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZSBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NjYWxlLXgnOiBbeyAnc2NhbGUteCc6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2NhbGUteSc6IFt7ICdzY2FsZS15JzogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvcm90YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJvdGF0ZTogW3sgcm90YXRlOiBbaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNsYXRlIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zbGF0ZS14JzogW3sgJ3RyYW5zbGF0ZS14JzogW3RyYW5zbGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zbGF0ZSBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2xhdGUteSc6IFt7ICd0cmFuc2xhdGUteSc6IFt0cmFuc2xhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTa2V3IFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdza2V3LXgnOiBbeyAnc2tldy14JzogW3NrZXddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTa2V3IFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9za2V3XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdza2V3LXknOiBbeyAnc2tldy15JzogW3NrZXddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2Zvcm0gT3JpZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtLW9yaWdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNmb3JtLW9yaWdpbic6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtcmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tcmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBJbnRlcmFjdGl2aXR5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFjY2VudCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FjY2VudC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhY2NlbnQ6IFt7IGFjY2VudDogWydhdXRvJywgY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXBwZWFyYW5jZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FwcGVhcmFuY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXBwZWFyYW5jZTogW3sgYXBwZWFyYW5jZTogWydub25lJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ3Vyc29yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY3Vyc29yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGN1cnNvcjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2FpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbW92ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnaGVscCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm90LWFsbG93ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQtbWVudScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncHJvZ3Jlc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NlbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Nyb3NzaGFpcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAndmVydGljYWwtdGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxpYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vLWRyb3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dyYWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dyYWJiaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGwtc2Nyb2xsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2wtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyb3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3MtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmUtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdudy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdldy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25zLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmVzdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ253c2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd6b29tLWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd6b29tLW91dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDYXJldCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2p1c3QtaW4tdGltZS1tb2RlI2NhcmV0LWNvbG9yLXV0aWxpdGllc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY2FyZXQtY29sb3InOiBbeyBjYXJldDogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBvaW50ZXIgRXZlbnRzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcG9pbnRlci1ldmVudHNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BvaW50ZXItZXZlbnRzJzogW3sgJ3BvaW50ZXItZXZlbnRzJzogWydub25lJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmVzaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmVzaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJlc2l6ZTogW3sgcmVzaXplOiBbJ25vbmUnLCAneScsICd4JywgJyddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgQmVoYXZpb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1iZWhhdmlvcic6IFt7IHNjcm9sbDogWydhdXRvJywgJ3Ntb290aCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW0nOiBbeyAnc2Nyb2xsLW0nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXgnOiBbeyAnc2Nyb2xsLW14JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW15JzogW3sgJ3Njcm9sbC1teSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXMnOiBbeyAnc2Nyb2xsLW1zJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWUnOiBbeyAnc2Nyb2xsLW1lJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXQnOiBbeyAnc2Nyb2xsLW10JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tcic6IFt7ICdzY3JvbGwtbXInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tYic6IFt7ICdzY3JvbGwtbWInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWwnOiBbeyAnc2Nyb2xsLW1sJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXAnOiBbeyAnc2Nyb2xsLXAnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1weCc6IFt7ICdzY3JvbGwtcHgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1weSc6IFt7ICdzY3JvbGwtcHknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHMnOiBbeyAnc2Nyb2xsLXBzJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wZSc6IFt7ICdzY3JvbGwtcGUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB0JzogW3sgJ3Njcm9sbC1wdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wcic6IFt7ICdzY3JvbGwtcHInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBiJzogW3sgJ3Njcm9sbC1wYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBsJzogW3sgJ3Njcm9sbC1wbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIEFsaWduXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtYWxpZ24nOiBbeyBzbmFwOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYWxpZ24tbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBTdG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtc3RvcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1zdG9wJzogW3sgc25hcDogWydub3JtYWwnLCAnYWx3YXlzJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXR5cGUnOiBbeyBzbmFwOiBbJ25vbmUnLCAneCcsICd5JywgJ2JvdGgnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZSBTdHJpY3RuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1zdHJpY3RuZXNzJzogW3sgc25hcDogWydtYW5kYXRvcnknLCAncHJveGltaXR5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0b3VjaDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdG91Y2g6IFsnYXV0bycsICdub25lJywgJ21hbmlwdWxhdGlvbiddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gteCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICd0b3VjaC1wYW4nOiBbJ3gnLCAnbGVmdCcsICdyaWdodCddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gteSc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICd0b3VjaC1wYW4nOiBbJ3knLCAndXAnLCAnZG93biddLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb24gUGluY2ggWm9vbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvdWNoLWFjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndG91Y2gtcHonOiBbJ3RvdWNoLXBpbmNoLXpvb20nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVXNlciBTZWxlY3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy91c2VyLXNlbGVjdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzZWxlY3Q6IFt7IHNlbGVjdDogWydub25lJywgJ3RleHQnLCAnYWxsJywgJ2F1dG8nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2lsbCBDaGFuZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWxsLWNoYW5nZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnd2lsbC1jaGFuZ2UnOiBbXG4gICAgICAgICAgICAgICAgeyAnd2lsbC1jaGFuZ2UnOiBbJ2F1dG8nLCAnc2Nyb2xsJywgJ2NvbnRlbnRzJywgJ3RyYW5zZm9ybScsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gU1ZHXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZpbGxcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWxsXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZpbGw6IFt7IGZpbGw6IFtjb2xvcnMsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0cm9rZSBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3Ryb2tlLXcnOiBbeyBzdHJva2U6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGgsIGlzQXJiaXRyYXJ5TnVtYmVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3Ryb2tlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0cm9rZTogW3sgc3Ryb2tlOiBbY29sb3JzLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLy8gQWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JlZW4gUmVhZGVyc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjcmVlbi1yZWFkZXJzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNyOiBbJ3NyLW9ubHknLCAnbm90LXNyLW9ubHknXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9yY2VkIENvbG9yIEFkanVzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvcmNlZC1jb2xvci1hZGp1c3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbeyAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFsnYXV0bycsICdub25lJ10gfV0sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6IHtcbiAgICAgICAgICAgIG92ZXJmbG93OiBbJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAgICAgICAgICAgb3ZlcnNjcm9sbDogWydvdmVyc2Nyb2xsLXgnLCAnb3ZlcnNjcm9sbC15J10sXG4gICAgICAgICAgICBpbnNldDogWydpbnNldC14JywgJ2luc2V0LXknLCAnc3RhcnQnLCAnZW5kJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICAgICAgICAgICAgJ2luc2V0LXgnOiBbJ3JpZ2h0JywgJ2xlZnQnXSxcbiAgICAgICAgICAgICdpbnNldC15JzogWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICAgICAgICBmbGV4OiBbJ2Jhc2lzJywgJ2dyb3cnLCAnc2hyaW5rJ10sXG4gICAgICAgICAgICBnYXA6IFsnZ2FwLXgnLCAnZ2FwLXknXSxcbiAgICAgICAgICAgIHA6IFsncHgnLCAncHknLCAncHMnLCAncGUnLCAncHQnLCAncHInLCAncGInLCAncGwnXSxcbiAgICAgICAgICAgIHB4OiBbJ3ByJywgJ3BsJ10sXG4gICAgICAgICAgICBweTogWydwdCcsICdwYiddLFxuICAgICAgICAgICAgbTogWydteCcsICdteScsICdtcycsICdtZScsICdtdCcsICdtcicsICdtYicsICdtbCddLFxuICAgICAgICAgICAgbXg6IFsnbXInLCAnbWwnXSxcbiAgICAgICAgICAgIG15OiBbJ210JywgJ21iJ10sXG4gICAgICAgICAgICBzaXplOiBbJ3cnLCAnaCddLFxuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgICAgICAgJ2Z2bi1ub3JtYWwnOiBbXG4gICAgICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJyxcbiAgICAgICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybycsXG4gICAgICAgICAgICAgICAgJ2Z2bi1maWd1cmUnLFxuICAgICAgICAgICAgICAgICdmdm4tc3BhY2luZycsXG4gICAgICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLXNsYXNoZWQtemVybyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1maWd1cmUnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tc3BhY2luZyc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2xpbmUtY2xhbXAnOiBbJ2Rpc3BsYXknLCAnb3ZlcmZsb3cnXSxcbiAgICAgICAgICAgIHJvdW5kZWQ6IFtcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10JyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1yJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1iJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1sJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtc2UnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWVlJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdGwnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXRyJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1icicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYmwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXMnOiBbJ3JvdW5kZWQtc3MnLCAncm91bmRlZC1lcyddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtZSc6IFsncm91bmRlZC1zZScsICdyb3VuZGVkLWVlJ10sXG4gICAgICAgICAgICAncm91bmRlZC10JzogWydyb3VuZGVkLXRsJywgJ3JvdW5kZWQtdHInXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXInOiBbJ3JvdW5kZWQtdHInLCAncm91bmRlZC1iciddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtYic6IFsncm91bmRlZC1icicsICdyb3VuZGVkLWJsJ10sXG4gICAgICAgICAgICAncm91bmRlZC1sJzogWydyb3VuZGVkLXRsJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZyc6IFsnYm9yZGVyLXNwYWNpbmcteCcsICdib3JkZXItc3BhY2luZy15J10sXG4gICAgICAgICAgICAnYm9yZGVyLXcnOiBbXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXMnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1lJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctdCcsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXInLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1iJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2JvcmRlci13LXgnOiBbJ2JvcmRlci13LXInLCAnYm9yZGVyLXctbCddLFxuICAgICAgICAgICAgJ2JvcmRlci13LXknOiBbJ2JvcmRlci13LXQnLCAnYm9yZGVyLXctYiddLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvcic6IFtcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXQnLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItcicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1iJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3IteCc6IFsnYm9yZGVyLWNvbG9yLXInLCAnYm9yZGVyLWNvbG9yLWwnXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3IteSc6IFsnYm9yZGVyLWNvbG9yLXQnLCAnYm9yZGVyLWNvbG9yLWInXSxcbiAgICAgICAgICAgICdzY3JvbGwtbSc6IFtcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW14JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW15JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1zJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1lJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW10JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1yJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1iJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLW1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnc2Nyb2xsLW14JzogWydzY3JvbGwtbXInLCAnc2Nyb2xsLW1sJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLW15JzogWydzY3JvbGwtbXQnLCAnc2Nyb2xsLW1iJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLXAnOiBbXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1weCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1weScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wcycsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wZScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wdCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wcicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wYicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1wbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3Njcm9sbC1weCc6IFsnc2Nyb2xsLXByJywgJ3Njcm9sbC1wbCddLFxuICAgICAgICAgICAgJ3Njcm9sbC1weSc6IFsnc2Nyb2xsLXB0JywgJ3Njcm9sbC1wYiddLFxuICAgICAgICAgICAgdG91Y2g6IFsndG91Y2gteCcsICd0b3VjaC15JywgJ3RvdWNoLXB6J10sXG4gICAgICAgICAgICAndG91Y2gteCc6IFsndG91Y2gnXSxcbiAgICAgICAgICAgICd0b3VjaC15JzogWyd0b3VjaCddLFxuICAgICAgICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaCddLFxuICAgICAgICB9LFxuICAgICAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6IHtcbiAgICAgICAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICAgfSxcbiAgICB9IGFzIGNvbnN0IHNhdGlzZmllcyBDb25maWc8RGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzPlxufVxuIiwgImltcG9ydCB7IENvbmZpZ0V4dGVuc2lvbiwgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbi8qKlxuICogQHBhcmFtIGJhc2VDb25maWcgQ29uZmlnIHdoZXJlIG90aGVyIGNvbmZpZyB3aWxsIGJlIG1lcmdlZCBpbnRvLiBUaGlzIG9iamVjdCB3aWxsIGJlIG11dGF0ZWQuXG4gKiBAcGFyYW0gY29uZmlnRXh0ZW5zaW9uIFBhcnRpYWwgY29uZmlnIHRvIG1lcmdlIGludG8gdGhlIGBiYXNlQ29uZmlnYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlQ29uZmlncyA9IDxDbGFzc0dyb3VwSWRzIGV4dGVuZHMgc3RyaW5nLCBUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXI+KFxuICAgIGJhc2VDb25maWc6IEdlbmVyaWNDb25maWcsXG4gICAge1xuICAgICAgICBjYWNoZVNpemUsXG4gICAgICAgIHByZWZpeCxcbiAgICAgICAgc2VwYXJhdG9yLFxuICAgICAgICBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSxcbiAgICAgICAgZXh0ZW5kID0ge30sXG4gICAgICAgIG92ZXJyaWRlID0ge30sXG4gICAgfTogQ29uZmlnRXh0ZW5zaW9uPENsYXNzR3JvdXBJZHMsIFRoZW1lR3JvdXBJZHM+LFxuKSA9PiB7XG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnY2FjaGVTaXplJywgY2FjaGVTaXplKVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3ByZWZpeCcsIHByZWZpeClcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdzZXBhcmF0b3InLCBzZXBhcmF0b3IpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUnLCBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSlcblxuICAgIGZvciAoY29uc3QgY29uZmlnS2V5IGluIG92ZXJyaWRlKSB7XG4gICAgICAgIG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgIGJhc2VDb25maWdbY29uZmlnS2V5IGFzIGtleW9mIHR5cGVvZiBvdmVycmlkZV0sXG4gICAgICAgICAgICBvdmVycmlkZVtjb25maWdLZXkgYXMga2V5b2YgdHlwZW9mIG92ZXJyaWRlXSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIGV4dGVuZCkge1xuICAgICAgICBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBiYXNlQ29uZmlnW2tleSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5kXSxcbiAgICAgICAgICAgIGV4dGVuZFtrZXkgYXMga2V5b2YgdHlwZW9mIGV4dGVuZF0sXG4gICAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gYmFzZUNvbmZpZ1xufVxuXG5jb25zdCBvdmVycmlkZVByb3BlcnR5ID0gPFQgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyBrZXlvZiBUPihcbiAgICBiYXNlT2JqZWN0OiBULFxuICAgIG92ZXJyaWRlS2V5OiBLLFxuICAgIG92ZXJyaWRlVmFsdWU6IFRbS10gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAob3ZlcnJpZGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJhc2VPYmplY3Rbb3ZlcnJpZGVLZXldID0gb3ZlcnJpZGVWYWx1ZVxuICAgIH1cbn1cblxuY29uc3Qgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzID0gKFxuICAgIGJhc2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4sXG4gICAgb3ZlcnJpZGVPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAob3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb3ZlcnJpZGVPYmplY3QpIHtcbiAgICAgICAgICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZU9iamVjdCwga2V5LCBvdmVycmlkZU9iamVjdFtrZXldKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5jb25zdCBtZXJnZUNvbmZpZ1Byb3BlcnRpZXMgPSAoXG4gICAgYmFzZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PixcbiAgICBtZXJnZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PiB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChtZXJnZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXJnZU9iamVjdCkge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VWYWx1ZSA9IG1lcmdlT2JqZWN0W2tleV1cblxuICAgICAgICAgICAgaWYgKG1lcmdlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGJhc2VPYmplY3Rba2V5XSA9IChiYXNlT2JqZWN0W2tleV0gfHwgW10pLmNvbmNhdChtZXJnZVZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UgfSBmcm9tICcuL2NyZWF0ZS10YWlsd2luZC1tZXJnZSdcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJ1xuaW1wb3J0IHsgbWVyZ2VDb25maWdzIH0gZnJvbSAnLi9tZXJnZS1jb25maWdzJ1xuaW1wb3J0IHsgQ29uZmlnRXh0ZW5zaW9uLCBEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHMsIEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiBHZW5lcmljQ29uZmlnXG5cbmV4cG9ydCBjb25zdCBleHRlbmRUYWlsd2luZE1lcmdlID0gPFxuICAgIEFkZGl0aW9uYWxDbGFzc0dyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gICAgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbj4oXG4gICAgY29uZmlnRXh0ZW5zaW9uOlxuICAgICAgICB8IENvbmZpZ0V4dGVuc2lvbjxcbiAgICAgICAgICAgICAgRGVmYXVsdENsYXNzR3JvdXBJZHMgfCBBZGRpdGlvbmFsQ2xhc3NHcm91cElkcyxcbiAgICAgICAgICAgICAgRGVmYXVsdFRoZW1lR3JvdXBJZHMgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkc1xuICAgICAgICAgID5cbiAgICAgICAgfCBDcmVhdGVDb25maWdTdWJzZXF1ZW50LFxuICAgIC4uLmNyZWF0ZUNvbmZpZzogQ3JlYXRlQ29uZmlnU3Vic2VxdWVudFtdXG4pID0+XG4gICAgdHlwZW9mIGNvbmZpZ0V4dGVuc2lvbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZywgY29uZmlnRXh0ZW5zaW9uLCAuLi5jcmVhdGVDb25maWcpXG4gICAgICAgIDogY3JlYXRlVGFpbHdpbmRNZXJnZShcbiAgICAgICAgICAgICAgKCkgPT4gbWVyZ2VDb25maWdzKGdldERlZmF1bHRDb25maWcoKSwgY29uZmlnRXh0ZW5zaW9uKSxcbiAgICAgICAgICAgICAgLi4uY3JlYXRlQ29uZmlnLFxuICAgICAgICAgIClcbiIsICJpbXBvcnQgeyBjcmVhdGVUYWlsd2luZE1lcmdlIH0gZnJvbSAnLi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZydcblxuZXhwb3J0IGNvbnN0IHR3TWVyZ2UgPSBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcpXG4iLCAiaW1wb3J0IHsgdXNlSXNNdXRhdGluZyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCB7IHR5cGUgQ29sdW1uRGVmIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgRmlsdGVySWNvbiwgTWF4aW1pemUsIE1pbmltaXplLCBQYW5lbExlZnRDbG9zZSwgUGFuZWxMZWZ0T3BlbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmlnSW50U3RyaW5nLCBOdW1lcmljU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2RhdGEvdHlwZS11dGlsc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2NoZWNrYm94XCI7XG5pbXBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlclRyaWdnZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9wb3BvdmVyXCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZUluc2VydCB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydFwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVRdWVyeSB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXF1ZXJ5XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZVVwZGF0ZSB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXVwZGF0ZVwiO1xuaW1wb3J0IHsgdXNlRmlsdGVyaW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1maWx0ZXJpbmdcIjtcbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IHVzZVBhZ2luYXRpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXBhZ2luYXRpb25cIjtcbmltcG9ydCB7IHVzZVNlbGVjdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2Utc2VsZWN0aW9uXCI7XG5pbXBvcnQgeyB1c2VTb3J0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1zb3J0aW5nXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RSb3dDZWxsIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RSb3dDZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBGaWx0ZXJUcmVlIH0gZnJvbSBcIi4vRmlsdGVyVHJlZVwiO1xuaW1wb3J0IHsgRGF0YUdyaWQgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkXCI7XG5pbXBvcnQgeyBEYXRhR3JpZEhlYWRlckNlbGwgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkSGVhZGVyQ2VsbFwiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcbmltcG9ydCB7IFN0YWdlZFJvd3MgfSBmcm9tIFwiLi9TdGFnZWRSb3dzXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZlVGFibGVWaWV3UHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGl2ZVRhYmxlVmlldyhfcHJvcHM6IEFjdGl2ZVRhYmxlVmlld1Byb3BzKSB7XG4gIGNvbnN0IGlzTXV0YXRpbmcgPSBCb29sZWFuKHVzZUlzTXV0YXRpbmcoKSk7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IsIGlzRnVsbHNjcmVlbiwgdG9nZ2xlRnVsbHNjcmVlbiwgdG9nZ2xlTmF2aWdhdGlvbiwgaXNOYXZpZ2F0aW9uT3BlbiB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgc29ydGluZ1N0YXRlLCBzZXRTb3J0aW5nU3RhdGUgfSA9IHVzZVNvcnRpbmcoKTtcbiAgY29uc3QgeyBwYWdpbmF0aW9uU3RhdGUsIHNldFBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93c10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPihbXSk7XG4gIGNvbnN0IHsgYXBwbGllZEZpbHRlciwgc2V0QXBwbGllZEZpbHRlciwgZWRpdGluZ0ZpbHRlciwgc2V0RWRpdGluZ0ZpbHRlciB9ID0gdXNlRmlsdGVyaW5nKCk7XG5cbiAgY29uc3QgeyBkYXRhLCBpc0ZldGNoaW5nIH0gPSB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHtcbiAgICAuLi5wYWdpbmF0aW9uU3RhdGUsXG4gICAgc29ydE9yZGVyOiBzb3J0aW5nU3RhdGUsXG4gICAgZmlsdGVyOiBhcHBsaWVkRmlsdGVyLFxuICB9KTtcbiAgY29uc3QgeyBkZWxldGVTZWxlY3Rpb24sIGlzU2VsZWN0aW5nLCByb3dTZWxlY3Rpb25TdGF0ZSwgc2V0Um93U2VsZWN0aW9uU3RhdGUgfSA9IHVzZVNlbGVjdGlvbihkYXRhKTtcblxuICBjb25zdCByZWFkb25seSA9ICFPYmplY3QudmFsdWVzKGFjdGl2ZVRhYmxlPy5jb2x1bW5zID8/IHt9KS5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5pc0luUHJpbWFyeUtleSk7XG4gIGNvbnN0IGlzSW5zZXJ0aW5nID0gdXNlSXNJbnNlcnRpbmcoKTtcbiAgY29uc3QgaW5zZXJ0ID0gdXNlQWN0aXZlVGFibGVJbnNlcnQoKTtcbiAgY29uc3QgdXBkYXRlID0gdXNlQWN0aXZlVGFibGVVcGRhdGUoKTtcblxuICAvLyByZXNldCBpbnNlcnRSb3dzIHdoZW4gYWN0aXZlVGFibGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4gc2V0U3RhZ2VkUm93cyhbXSksIFthY3RpdmVUYWJsZV0pO1xuXG4gIGlmICghYWN0aXZlVGFibGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNhdmVTdGFnZWRSb3dzKCkge1xuICAgIGluc2VydC5tdXRhdGUoc3RhZ2VkUm93cywge1xuICAgICAgb25FcnJvcixcbiAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgdG9hc3Quc3VjY2VzcyhcIlJvd3MgaW5zZXJ0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuICAgICAgICBzZXRTdGFnZWRSb3dzKFtdKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBuZXdTdGFnZWRSb3coKSB7XG4gICAgLy8gVE9ETzogdGhlIG5ldyBvYmplY3Qgc2hvdWxkIGhhdmUgc29tZSB0aGluZ3Mgc2V0IHRvIG51bGwgaWYgdGhleSdyZSBudWxsYWJsZSBvciBoYXZlIGEgZGVmYXVsdCB2YWx1ZT9cbiAgICBzZXRTdGFnZWRSb3dzKChvbGQpID0+IFsuLi5vbGQsIHt9XSk7XG4gIH1cblxuICBmdW5jdGlvbiBkcm9wU3RhZ2VkUm93cygpIHtcbiAgICBzZXRTdGFnZWRSb3dzKFtdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNlbGxJbnB1dFN1Ym1pdCh2YWx1ZTogdW5rbm93biwgY29sdW1uOiBDb2x1bW4sIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB1cGRhdGUubXV0YXRlKHtcbiAgICAgIGRldGFpbHM6IHsgY2hhbmdlczogeyBbY29sdW1uLm5hbWVdOiB2YWx1ZSB9LCByb3csIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSxcbiAgICAgIG9wdGlvbnM6IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gb25GaWx0ZXJPcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pIHtcbiAgICBpZiAob3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgc2V0RWRpdGluZ0ZpbHRlcihhcHBsaWVkRmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0QXBwbGllZEZpbHRlcihlZGl0aW5nRmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyByZWFsIGNvbHVtbiBkZWZpbml0aW9ucyB0aGF0IGNvcnJlc3BvbmQgdG8gZGF0YWJhc2UgY29sdW1uc1xuICBjb25zdCBjb25jcmV0ZUNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKGFjdGl2ZVRhYmxlPy5jb2x1bW5zID8/IHt9KS5tYXAoKGNvbHVtbikgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogY29sdW1uLm5hbWUsXG4gICAgICBhY2Nlc3NvcktleTogY29sdW1uLm5hbWUsXG4gICAgICBtZXRhOiBjb2x1bW4sXG4gICAgICBoZWFkZXIoKSB7XG4gICAgICAgIHJldHVybiBEYXRhR3JpZEhlYWRlckNlbGwoeyBjb2x1bW4gfSk7XG4gICAgICB9LFxuICAgICAgY2VsbCh7IGNlbGwgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbiwgcHJvcHMgfSl9XG4gICAgICAgICAgICBpbnB1dENvbXBvbmVudD17Z2V0SW5wdXQoe1xuICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWUsIGNvbHVtbiwgY2VsbC5yb3cub3JpZ2luYWwpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgfSk7XG5cbiAgLy8gdGhlc2UgYXJlIGNvbHVtbnMgdGhhdCBleGlzdCB2aXJ0dWFsbHkgYW5kIGFyZSBub3QgZGIgY29sdW1uc1xuICBjb25zdCB2aXJ0dWFsQ29sdW1uRGVmcyA9IFtcbiAgICB7XG4gICAgICBpZDogXCJfX3BzX3NlbGVjdFwiLFxuICAgICAgYWNjZXNzb3JLZXk6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGVuYWJsZVBpbm5pbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlUmVzaXppbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgICBkaXNhYmxlRHJhZ2dpbmc6IHRydWUsXG4gICAgICBzaXplOiAwLFxuICAgICAgaGVhZGVyKHsgdGFibGUgfSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgY2hlY2tlZD17dGFibGUuZ2V0SXNBbGxSb3dzU2VsZWN0ZWQoKX1cbiAgICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17KHZhbHVlKSA9PiB0YWJsZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQoISF2YWx1ZSl9XG4gICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBjZWxsKHsgcm93IH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIDxTZWxlY3RSb3dDZWxsIHJvdz17cm93fSByZWFkb25seT17cmVhZG9ubHl9IHsuLi5wcm9wc30gLz47XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gIF0gc2F0aXNmaWVzIChDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+ICYgeyBkaXNhYmxlRHJhZ2dpbmc/OiBib29sZWFuIH0pW107XG5cbiAgY29uc3QgY29sdW1uRGVmcyA9IFsuLi5jb25jcmV0ZUNvbHVtbkRlZnMsIC4uLnZpcnR1YWxDb2x1bW5EZWZzXS5zb3J0KGRlZmF1bHRDb2x1bW5Tb3J0aW5nKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWJnLXN0dWRpby1oZWFkZXItYmFja2dyb3VuZCBwcy1mbGV4IHBzLXctZnVsbCBwcy1wLTIgcHMtcHktMyBwcy1ib3JkZXItYiBwcy1iZy1jYXJkIHBzLXJvdW5kZWQtdC1sZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGwgcHMtZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1ncm93IHBzLWp1c3RpZnktYmV0d2VlbiBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3RvZ2dsZU5hdmlnYXRpb259PlxuICAgICAgICAgICAgICAgIHtpc05hdmlnYXRpb25PcGVuID8gPFBhbmVsTGVmdENsb3NlIC8+IDogPFBhbmVsTGVmdE9wZW4gLz59XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8UG9wb3ZlciBvbk9wZW5DaGFuZ2U9e29uRmlsdGVyT3BlbkNoYW5nZX0+XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyQ29udGVudCBhbGlnbj1cInN0YXJ0XCIgc2lkZT1cImJvdHRvbVwiIGNsYXNzTmFtZT1cInBzLXctbWluXCI+XG4gICAgICAgICAgICAgICAgICA8RmlsdGVyVHJlZSBmaWx0ZXI9e2VkaXRpbmdGaWx0ZXJ9IHNldEZpbHRlcj17c2V0RWRpdGluZ0ZpbHRlcn0gdGFibGU9e2FjdGl2ZVRhYmxlfSAvPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e25ld1N0YWdlZFJvd30gZGlzYWJsZWQ9e2lzSW5zZXJ0aW5nID4gMH0+XG4gICAgICAgICAgICAgICAgSW5zZXJ0IHJvd1xuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAge3N0YWdlZFJvd3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInNlY29uZGFyeVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3NhdmVTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICB7LyogTmVlZHMgc29tZSBpbXByb3ZlbWVudCAqL31cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZHJvcFN0YWdlZFJvd3N9PlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNTZWxlY3RpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtkZWxldGVTZWxlY3Rpb259PlxuICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9e3RvZ2dsZUZ1bGxzY3JlZW59PlxuICAgICAgICAgICAgICB7aXNGdWxsc2NyZWVuID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8RGF0YUdyaWRcbiAgICAgICAgY29sdW1uRGVmcz17Y29sdW1uRGVmc31cbiAgICAgICAgZ2V0QmVmb3JlUm93cz17KHRhYmxlKSA9PiA8U3RhZ2VkUm93cyB7Li4ueyB0YWJsZSwgc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93cyB9fSAvPn1cbiAgICAgICAgaXNMb2FkaW5nPXtpc0ZldGNoaW5nfVxuICAgICAgICBpc1Byb2Nlc3Npbmc9e2lzTXV0YXRpbmd9XG4gICAgICAgIG9uUGFnaW5hdGlvbkNoYW5nZT17c2V0UGFnaW5hdGlvblN0YXRlfVxuICAgICAgICBvblJvd1NlbGVjdGlvbkNoYW5nZT17c2V0Um93U2VsZWN0aW9uU3RhdGV9XG4gICAgICAgIG9uU29ydGluZ0NoYW5nZT17c2V0U29ydGluZ1N0YXRlfVxuICAgICAgICBwYWdlQ291bnQ9e2dldFBhZ2VDb3VudChkYXRhPy5maWx0ZXJlZFJvd0NvdW50ID8/IEluZmluaXR5LCBwYWdpbmF0aW9uU3RhdGUucGFnZVNpemUpfVxuICAgICAgICBwYWdpbmF0aW9uU3RhdGU9e3BhZ2luYXRpb25TdGF0ZX1cbiAgICAgICAgcm93cz17ZGF0YT8ucm93cyA/PyBbXX1cbiAgICAgICAgcm93U2VsZWN0aW9uU3RhdGU9e3Jvd1NlbGVjdGlvblN0YXRlfVxuICAgICAgICBzb3J0aW5nU3RhdGU9e3NvcnRpbmdTdGF0ZX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldFBhZ2VDb3VudChyb3dDb3VudDogbnVtYmVyIHwgYmlnaW50IHwgTnVtZXJpY1N0cmluZyB8IEJpZ0ludFN0cmluZywgcGFnZVNpemU6IG51bWJlcik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGlmIChyb3dDb3VudCA9PT0gSW5maW5pdHkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYWdlQ291bnQgPSBOdW1iZXIoKEJpZ0ludChyb3dDb3VudCkgKyBCaWdJbnQocGFnZVNpemUpIC0gQmlnSW50KDEpKSAvIEJpZ0ludChwYWdlU2l6ZSkpO1xuXG4gIHJldHVybiBOdW1iZXIuaXNTYWZlSW50ZWdlcihwYWdlQ291bnQpID8gcGFnZUNvdW50IDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRDb2x1bW5Tb3J0aW5nKGE6IENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sIGI6IENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pIHtcbiAgY29uc3QgYU1ldGEgPSBhLm1ldGEgYXMgQ29sdW1uIHwgdW5kZWZpbmVkO1xuICBjb25zdCBiTWV0YSA9IGIubWV0YSBhcyBDb2x1bW4gfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGEuaWQgPT09IFwiX19wc19zZWxlY3RcIiB8fCBiLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChhTWV0YSA9PT0gdW5kZWZpbmVkIHx8IGJNZXRhID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gMDsgLy8gY2FuJ3QgYmUgY29tcGFyZWQsIHNob3VsZG4ndCBoYXBwZW5cbiAgfVxuXG4gIGlmIChhTWV0YS5pc0luUHJpbWFyeUtleSAmJiAhYk1ldGEuaXNJblByaW1hcnlLZXkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKCFhTWV0YS5pc0luUHJpbWFyeUtleSAmJiBiTWV0YS5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIGFNZXRhLm5hbWUubG9jYWxlQ29tcGFyZShiTWV0YS5uYW1lKTtcbn1cbiIsICJpbXBvcnQgeyBDYW1lbFRvUGFzY2FsIH0gZnJvbSAnLi91dGlsaXR5LXR5cGVzJztcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8ga2ViYWIgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEga2ViYWJpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9LZWJhYkNhc2UgPSAoc3RyaW5nOiBzdHJpbmcpID0+XG4gIHN0cmluZy5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKS50b0xvd2VyQ2FzZSgpO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBjYW1lbCBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBjYW1lbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0NhbWVsQ2FzZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihzdHJpbmc6IFQpID0+XG4gIHN0cmluZy5yZXBsYWNlKC9eKFtBLVpdKXxbXFxzLV9dKyhcXHcpL2csIChtYXRjaCwgcDEsIHAyKSA9PlxuICAgIHAyID8gcDIudG9VcHBlckNhc2UoKSA6IHAxLnRvTG93ZXJDYXNlKCksXG4gICk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIHBhc2NhbCBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBwYXNjYWxpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9QYXNjYWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCk6IENhbWVsVG9QYXNjYWw8VD4gPT4ge1xuICBjb25zdCBjYW1lbENhc2UgPSB0b0NhbWVsQ2FzZShzdHJpbmcpO1xuXG4gIHJldHVybiAoY2FtZWxDYXNlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY2FtZWxDYXNlLnNsaWNlKDEpKSBhcyBDYW1lbFRvUGFzY2FsPFQ+O1xufTtcblxuLyoqXG4gKiBNZXJnZXMgY2xhc3NlcyBpbnRvIGEgc2luZ2xlIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7YXJyYXl9IGNsYXNzZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgc3RyaW5nIG9mIGNsYXNzZXNcbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlQ2xhc3NlcyA9IDxDbGFzc1R5cGUgPSBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPiguLi5jbGFzc2VzOiBDbGFzc1R5cGVbXSkgPT5cbiAgY2xhc3Nlc1xuICAgIC5maWx0ZXIoKGNsYXNzTmFtZSwgaW5kZXgsIGFycmF5KSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBCb29sZWFuKGNsYXNzTmFtZSkgJiZcbiAgICAgICAgKGNsYXNzTmFtZSBhcyBzdHJpbmcpLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgYXJyYXkuaW5kZXhPZihjbGFzc05hbWUpID09PSBpbmRleFxuICAgICAgKTtcbiAgICB9KVxuICAgIC5qb2luKCcgJylcbiAgICAudHJpbSgpO1xuIiwgImV4cG9ydCBkZWZhdWx0IHtcbiAgeG1sbnM6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gIHdpZHRoOiAyNCxcbiAgaGVpZ2h0OiAyNCxcbiAgdmlld0JveDogJzAgMCAyNCAyNCcsXG4gIGZpbGw6ICdub25lJyxcbiAgc3Ryb2tlOiAnY3VycmVudENvbG9yJyxcbiAgc3Ryb2tlV2lkdGg6IDIsXG4gIHN0cm9rZUxpbmVjYXA6ICdyb3VuZCcsXG4gIHN0cm9rZUxpbmVqb2luOiAncm91bmQnLFxufTtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGRlZmF1bHRBdHRyaWJ1dGVzIGZyb20gJy4vZGVmYXVsdEF0dHJpYnV0ZXMnO1xuaW1wb3J0IHsgSWNvbk5vZGUsIEx1Y2lkZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBtZXJnZUNsYXNzZXMgfSBmcm9tICdAbHVjaWRlL3NoYXJlZCc7XG5cbmludGVyZmFjZSBJY29uQ29tcG9uZW50UHJvcHMgZXh0ZW5kcyBMdWNpZGVQcm9wcyB7XG4gIGljb25Ob2RlOiBJY29uTm9kZTtcbn1cblxuLyoqXG4gKiBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqXG4gKiBAY29tcG9uZW50IEljb25cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNvbG9yIC0gVGhlIGNvbG9yIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2l6ZSAtIFRoZSBzaXplIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc3Ryb2tlV2lkdGggLSBUaGUgc3Ryb2tlIHdpZHRoIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHByb3BzLmFic29sdXRlU3Ryb2tlV2lkdGggLSBXaGV0aGVyIHRvIHVzZSBhYnNvbHV0ZSBzdHJva2Ugd2lkdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5jbGFzc05hbWUgLSBUaGUgY2xhc3MgbmFtZSBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuY2hpbGRyZW4gLSBUaGUgY2hpbGRyZW4gb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7SWNvbk5vZGV9IHByb3BzLmljb25Ob2RlIC0gVGhlIGljb24gbm9kZSBvZiB0aGUgaWNvblxuICpcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IEljb24gPSBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Db21wb25lbnRQcm9wcz4oXG4gIChcbiAgICB7XG4gICAgICBjb2xvciA9ICdjdXJyZW50Q29sb3InLFxuICAgICAgc2l6ZSA9IDI0LFxuICAgICAgc3Ryb2tlV2lkdGggPSAyLFxuICAgICAgYWJzb2x1dGVTdHJva2VXaWR0aCxcbiAgICAgIGNsYXNzTmFtZSA9ICcnLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBpY29uTm9kZSxcbiAgICAgIC4uLnJlc3RcbiAgICB9LFxuICAgIHJlZixcbiAgKSA9PiB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXG4gICAgICAnc3ZnJyxcbiAgICAgIHtcbiAgICAgICAgcmVmLFxuICAgICAgICAuLi5kZWZhdWx0QXR0cmlidXRlcyxcbiAgICAgICAgd2lkdGg6IHNpemUsXG4gICAgICAgIGhlaWdodDogc2l6ZSxcbiAgICAgICAgc3Ryb2tlOiBjb2xvcixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IGFic29sdXRlU3Ryb2tlV2lkdGggPyAoTnVtYmVyKHN0cm9rZVdpZHRoKSAqIDI0KSAvIE51bWJlcihzaXplKSA6IHN0cm9rZVdpZHRoLFxuICAgICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcygnbHVjaWRlJywgY2xhc3NOYW1lKSxcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgIH0sXG4gICAgICBbXG4gICAgICAgIC4uLmljb25Ob2RlLm1hcCgoW3RhZywgYXR0cnNdKSA9PiBjcmVhdGVFbGVtZW50KHRhZywgYXR0cnMpKSxcbiAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4gOiBbY2hpbGRyZW5dKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfSxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IEljb247XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcywgdG9LZWJhYkNhc2UgfSBmcm9tICdAbHVjaWRlL3NoYXJlZCc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBJY29uIGZyb20gJy4vSWNvbic7XG5cbi8qKlxuICogQ3JlYXRlIGEgTHVjaWRlIGljb24gY29tcG9uZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gaWNvbk5hbWVcbiAqIEBwYXJhbSB7YXJyYXl9IGljb25Ob2RlXG4gKiBAcmV0dXJucyB7Rm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudH0gTHVjaWRlSWNvblxuICovXG5jb25zdCBjcmVhdGVMdWNpZGVJY29uID0gKGljb25OYW1lOiBzdHJpbmcsIGljb25Ob2RlOiBJY29uTm9kZSkgPT4ge1xuICBjb25zdCBDb21wb25lbnQgPSBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEx1Y2lkZVByb3BzPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT5cbiAgICBjcmVhdGVFbGVtZW50KEljb24sIHtcbiAgICAgIHJlZixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgY2xhc3NOYW1lOiBtZXJnZUNsYXNzZXMoYGx1Y2lkZS0ke3RvS2ViYWJDYXNlKGljb25OYW1lKX1gLCBjbGFzc05hbWUpLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSksXG4gICk7XG5cbiAgQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYCR7aWNvbk5hbWV9YDtcblxuICByZXR1cm4gQ29tcG9uZW50O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlTHVjaWRlSWNvbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEFycm93RG93bldpZGVOYXJyb3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE15QXhOaUEwSURRZ05DMDBJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDNJREl3VmpRaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElEUm9NVEFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURob055SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1URWdNVEpvTkNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd0Rvd25XaWRlTmFycm93ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dEb3duV2lkZU5hcnJvdycsIFtcbiAgWydwYXRoJywgeyBkOiAnbTMgMTYgNCA0IDQtNCcsIGtleTogJzFjbzZ3aicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ003IDIwVjQnLCBrZXk6ICcxeW94ZWMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgNGgxMCcsIGtleTogJzF3ODdnYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSA4aDcnLCBrZXk6ICdkanllMzQnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTJoNCcsIGtleTogJ3E4dGloNCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQXJyb3dEb3duV2lkZU5hcnJvdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEFycm93VXBXaWRlTmFycm93XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNeUE0SURRdE5DQTBJRFFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVGNnTkhZeE5pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1URWdNVEpvTVRBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElERTJhRGNpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURJd2FEUWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93VXBXaWRlTmFycm93ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dVcFdpZGVOYXJyb3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20zIDggNC00IDQgNCcsIGtleTogJzExd2w3dScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ003IDR2MTYnLCBrZXk6ICcxZ2xmY3gnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTJoMTAnLCBrZXk6ICcxNDM4amknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMTZoNycsIGtleTogJ3Vvc2lzdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAyMGg0Jywga2V5OiAnMWtyYzMyJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd1VwV2lkZU5hcnJvdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZWNrXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NakFnTmlBNUlERTNiQzAxTFRVaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZWNrXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hlY2sgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGVjaycsIFtbJ3BhdGgnLCB7IGQ6ICdNMjAgNiA5IDE3bC01LTUnLCBrZXk6ICcxZ21mMmMnIH1dXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbkRvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQTVJRFlnTmlBMkxUWWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25Eb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtNiA5IDYgNiA2LTYnLCBrZXk6ICdxcnVuc2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25Eb3duO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbkxlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UVWdNVGd0TmkwMklEWXROaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkxlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uTGVmdCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTE1IDE4LTYtNiA2LTYnLCBrZXk6ICcxd25mZzMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvblJpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRPU0F4T0NBMkxUWXROaTAySWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25SaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25SaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTkgMTggNi02LTYtNicsIGtleTogJ210aGh3cScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvblJpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvblVwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRVdE5pMDJMVFlnTmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uVXAnLCBbWydwYXRoJywgeyBkOiAnbTE4IDE1LTYtNi02IDYnLCBrZXk6ICcxNTN1ZHonIH1dXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25VcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25zTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRFZ01UY3ROUzAxSURVdE5TSWdMejRLSUNBOGNHRjBhQ0JrUFNKdE1UZ2dNVGN0TlMwMUlEVXROU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbnMtbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25zTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25zTGVmdCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTExIDE3LTUtNSA1LTUnLCBrZXk6ICcxM3poYWYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTggMTctNS01IDUtNScsIGtleTogJ2g4YThldCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbnNMZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbnNSaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TmlBeE55QTFMVFV0TlMwMUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weE15QXhOeUExTFRVdE5TMDFJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9ucy1yaWdodFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25zUmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uc1JpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtNiAxNyA1LTUtNS01Jywga2V5OiAneG5qd3EnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTMgMTcgNS01LTUtNScsIGtleTogJzE3eG1tZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbnNSaWdodDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZUhlbHBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9TNHdPU0E1WVRNZ015QXdJREFnTVNBMUxqZ3pJREZqTUNBeUxUTWdNeTB6SURNaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeUlERTNhQzR3TVNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZS1oZWxwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlSGVscCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZUhlbHAnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005LjA5IDlhMyAzIDAgMCAxIDUuODMgMWMwIDItMyAzLTMgMycsIGtleTogJzF1NzczcycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN2guMDEnLCBrZXk6ICdwMzJwMDUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZUhlbHA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSXhNaUlnWTNrOUlqRXlJaUJ5UFNJeE1DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGUgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGUnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICcxMicsIHI6ICcxMCcsIGtleTogJzFtZ2xheScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29weVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UUWlJR2hsYVdkb2REMGlNVFFpSUhnOUlqZ2lJSGs5SWpnaUlISjRQU0l5SWlCeWVUMGlNaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5OQ0F4Tm1NdE1TNHhJREF0TWkwdU9TMHlMVEpXTkdNd0xURXVNUzQ1TFRJZ01pMHlhREV3WXpFdU1TQXdJRElnTGprZ01pQXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3B5XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29weSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NvcHknLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxNCcsIGhlaWdodDogJzE0JywgeDogJzgnLCB5OiAnOCcsIHJ4OiAnMicsIHJ5OiAnMicsIGtleTogJzE3anllYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ000IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDInLCBrZXk6ICd6aXg5dWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcHk7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3JuZXJEb3duTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXeHBibVVnY0c5cGJuUnpQU0k1SURFd0lEUWdNVFVnT1NBeU1DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOSFkzWVRRZ05DQXdJREFnTVMwMElEUklOQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29ybmVyLWRvd24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcm5lckRvd25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ29ybmVyRG93bkxlZnQnLCBbXG4gIFsncG9seWxpbmUnLCB7IHBvaW50czogJzkgMTAgNCAxNSA5IDIwJywga2V5OiAncjNqcHJ2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIwIDR2N2E0IDQgMCAwIDEtNCA0SDQnLCBrZXk6ICc2bzViN2wnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvcm5lckRvd25MZWZ0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgRmlsdGVyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVdkdmJpQndiMmx1ZEhNOUlqSXlJRE1nTWlBeklERXdJREV5TGpRMklERXdJREU1SURFMElESXhJREUwSURFeUxqUTJJREl5SURNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2ZpbHRlclxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEZpbHRlciA9IGNyZWF0ZUx1Y2lkZUljb24oJ0ZpbHRlcicsIFtcbiAgWydwb2x5Z29uJywgeyBwb2ludHM6ICcyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzJywga2V5OiAnMXlnNzdmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBHcmlwVmVydGljYWxcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOFkybHlZMnhsSUdONFBTSTVJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpVaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJakU1SWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlNVFVpSUdONVBTSTFJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1Ua2lJSEk5SWpFaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2dyaXAtdmVydGljYWxcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBHcmlwVmVydGljYWwgPSBjcmVhdGVMdWNpZGVJY29uKCdHcmlwVmVydGljYWwnLCBbXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdmN0Z2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICdocDB0Y2YnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZmtqamY2JyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzEyJywgcjogJzEnLCBrZXk6ICcxdG1haWonIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnMTlsMjhlJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdmNHpvajMnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEdyaXBWZXJ0aWNhbDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEtleVJvdW5kXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NaTQxT0RZZ01UY3VOREUwUVRJZ01pQXdJREFnTUNBeUlERTRMamd5T0ZZeU1XRXhJREVnTUNBd0lEQWdNU0F4YUROaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhREZoTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFDNHhOekpoTWlBeUlEQWdNQ0F3SURFdU5ERTBMUzQxT0Rac0xqZ3hOQzB1T0RFMFlUWXVOU0EyTGpVZ01DQXhJREF0TkMwMGVpSWdMejRLSUNBOFkybHlZMnhsSUdONFBTSXhOaTQxSWlCamVUMGlOeTQxSWlCeVBTSXVOU0lnWm1sc2JEMGlZM1Z5Y21WdWRFTnZiRzl5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMva2V5LXJvdW5kXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgS2V5Um91bmQgPSBjcmVhdGVMdWNpZGVJY29uKCdLZXlSb3VuZCcsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTIuNTg2IDE3LjQxNEEyIDIgMCAwIDAgMiAxOC44MjhWMjFhMSAxIDAgMCAwIDEgMWgzYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMCAxLTF2LTFhMSAxIDAgMCAxIDEtMWguMTcyYTIgMiAwIDAgMCAxLjQxNC0uNTg2bC44MTQtLjgxNGE2LjUgNi41IDAgMSAwLTQtNHonLFxuICAgICAga2V5OiAnMXM2dDd0JyxcbiAgICB9LFxuICBdLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNi41JywgY3k6ICc3LjUnLCByOiAnLjUnLCBmaWxsOiAnY3VycmVudENvbG9yJywga2V5OiAndzBla3BnJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBLZXlSb3VuZDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1heGltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNbll6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNFZqVmhNaUF5SURBZ01DQXdMVEl0TW1ndE15SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObll6WVRJZ01pQXdJREFnTUNBeUlESm9NeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGb00yRXlJRElnTUNBd0lEQWdNaTB5ZGkweklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21heGltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWF4aW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNYXhpbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM0g1YTIgMiAwIDAgMC0yIDJ2MycsIGtleTogJzFkY21pdCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4VjVhMiAyIDAgMCAwLTItMmgtMycsIGtleTogJzFlNGd0MycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2djNhMiAyIDAgMCAwIDIgMmgzJywga2V5OiAnd3NsNXNjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxaDNhMiAyIDAgMCAwIDItMnYtMycsIGtleTogJzE4dHJlaycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWF4aW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNaW5pbWl6ZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBemRqTmhNaUF5SURBZ01DQXhMVElnTWtneklpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQTRhQzB6WVRJZ01pQXdJREFnTVMweUxUSldNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NeUF4Tm1nellUSWdNaUF3SURBZ01TQXlJREoyTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRZZ01qRjJMVE5oTWlBeUlEQWdNQ0F4SURJdE1tZ3pJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9taW5pbWl6ZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1pbmltaXplID0gY3JlYXRlTHVjaWRlSWNvbignTWluaW1pemUnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDN2M2EyIDIgMCAwIDEtMiAySDMnLCBrZXk6ICdob2hidHInIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgOGgtM2EyIDIgMCAwIDEtMi0yVjMnLCBrZXk6ICc1ancxZjMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxNmgzYTIgMiAwIDAgMSAyIDJ2MycsIGtleTogJzE5OHR2cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNiAyMXYtM2EyIDIgMCAwIDEgMi0yaDMnLCBrZXk6ICdwaDhteHAnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbmltaXplO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTW92ZURvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXhPRXd4TWlBeU1rd3hOaUF4T0NJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01sWXlNaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbW92ZS1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZURvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggMThMMTIgMjJMMTYgMTgnLCBrZXk6ICdjc2t2ZnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMlYyMicsIGtleTogJ3I4OXJ6aycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTW92ZURvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQTJUREV5SURKTU1UWWdOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZVVwID0gY3JlYXRlTHVjaWRlSWNvbignTW92ZVVwJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCA2TDEyIDJMMTYgNicsIGtleTogJzF5dmt5eCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRDbG9zZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGdpSUhnOUlqTWlJSGs5SWpNaUlISjRQU0l5SWlBdlBnb2dJRHh3WVhSb0lHUTlJazA1SUROMk1UZ2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaWJURTJJREUxTFRNdE15QXpMVE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdENsb3NlID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0Q2xvc2UnLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxOCcsIGhlaWdodDogJzE4JywgeDogJzMnLCB5OiAnMycsIHJ4OiAnMicsIGtleTogJ2FmaXR2NycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005IDN2MTgnLCBrZXk6ICdmaDNocWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTYgMTUtMy0zIDMtMycsIGtleTogJzE0eTk5eicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0Q2xvc2U7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRPcGVuXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMElEa2dNeUF6TFRNZ015SWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LW9wZW5cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQYW5lbExlZnRPcGVuID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0T3BlbicsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNCA5IDMgMy0zIDMnLCBrZXk6ICc4MDEwZWUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsTGVmdE9wZW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5PZmZcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRVZ09TNHpORlkzWVRFZ01TQXdJREFnTVNBeExURWdNaUF5SURBZ01DQXdJREF0TkVnM0xqZzVJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHlJRElnTWpBZ01qQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUa2dPWFl4TGpjMllUSWdNaUF3SURBZ01TMHhMakV4SURFdU56bHNMVEV1TnpndU9VRXlJRElnTUNBd0lEQWdOU0F4TlM0eU5GWXhObUV4SURFZ01DQXdJREFnTVNBeGFERXhJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9waW4tb2ZmXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluT2ZmID0gY3JlYXRlTHVjaWRlSWNvbignUGluT2ZmJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNSA5LjM0VjdhMSAxIDAgMCAxIDEtMSAyIDIgMCAwIDAgMC00SDcuODknLCBrZXk6ICd6bnduenEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMiAyIDIwIDIwJywga2V5OiAnMW9vZXd5JyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgOXYxLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDExJyxcbiAgICAgIGtleTogJ2M5cWhtMicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW5PZmY7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT1NBeE1DNDNObUV5SURJZ01DQXdJREV0TVM0eE1TQXhMamM1YkMweExqYzRMamxCTWlBeUlEQWdNQ0F3SURVZ01UVXVNalJXTVRaaE1TQXhJREFnTUNBd0lERWdNV2d4TW1FeElERWdNQ0F3SURBZ01TMHhkaTB1TnpaaE1pQXlJREFnTUNBd0xURXVNVEV0TVM0M09Xd3RNUzQzT0MwdU9VRXlJRElnTUNBd0lERWdNVFVnTVRBdU56WldOMkV4SURFZ01DQXdJREVnTVMweElESWdNaUF3SURBZ01DQXdMVFJJT0dFeUlESWdNQ0F3SURBZ01DQTBJREVnTVNBd0lEQWdNU0F4SURGNklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BpblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBpbiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BpbicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3djUnLCBrZXk6ICdiYjFkdTknIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAxMC43NmEyIDIgMCAwIDEtMS4xMSAxLjc5bC0xLjc4LjlBMiAyIDAgMCAwIDUgMTUuMjRWMTZhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0uNzZhMiAyIDAgMCAwLTEuMTEtMS43OWwtMS43OC0uOUEyIDIgMCAwIDEgMTUgMTAuNzZWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRIOGEyIDIgMCAwIDAgMCA0IDEgMSAwIDAgMSAxIDF6JyxcbiAgICAgIGtleTogJzFua3o4YicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBUYWJsZTJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9TQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWTBiVFl0Tm1neE1HRXlJRElnTUNBd0lERWdNaUF5ZGpSTk9TQXpkakU0YlRBZ01HZ3hNR0V5SURJZ01DQXdJREFnTWkweVZqbE5PU0F5TVVnMVlUSWdNaUF3SURBZ01TMHlMVEpXT1cwd0lEQm9NVGdpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvdGFibGUtMlxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFRhYmxlMiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1RhYmxlMicsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgM0g1YTIgMiAwIDAgMC0yIDJ2NG02LTZoMTBhMiAyIDAgMCAxIDIgMnY0TTkgM3YxOG0wIDBoMTBhMiAyIDAgMCAwIDItMlY5TTkgMjFINWEyIDIgMCAwIDEtMi0yVjltMCAwaDE4JyxcbiAgICAgIGtleTogJ2d1Z2o4MycsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBUYWJsZTI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBYXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVGdnTmlBMklERTRJaUF2UGdvZ0lEeHdZWFJvSUdROUltMDJJRFlnTVRJZ01USWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy94XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgWCA9IGNyZWF0ZUx1Y2lkZUljb24oJ1gnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xOCA2IDYgMTgnLCBrZXk6ICcxYmw1ZjgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtNiA2IDEyIDEyJywga2V5OiAnZDhiazZ2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBYO1xuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYnV0dG9uVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWdhcC0yIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXJvdW5kZWQtbWQgcHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS85MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTogXCJwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzkwXCIsXG4gICAgICAgIG91dGxpbmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGdob3N0OiBcImhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGxpbms6IFwicHMtdGV4dC1wcmltYXJ5IHBzLXVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjpwcy11bmRlcmxpbmVcIixcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtaC05IHBzLXB4LTQgcHMtcHktMlwiLFxuICAgICAgICB4czogXCJwcy1oLTYgcHMtcm91bmRlZC1tZCBwcy1weC0yIHBzLXRleHQteHNcIixcbiAgICAgICAgc206IFwicHMtaC04IHBzLXJvdW5kZWQtbWQgcHMtcHgtMyBwcy10ZXh0LXhzXCIsXG4gICAgICAgIGxnOiBcInBzLWgtMTAgcHMtcm91bmRlZC1tZCBwcy1weC04XCIsXG4gICAgICAgIGljb246IFwicHMtaC05IHBzLXctOVwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgICBzaXplOiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xuICBleHRlbmRzIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxCdXR0b25FbGVtZW50LCBCdXR0b25Qcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdmFyaWFudCwgc2l6ZSwgYXNDaGlsZCA9IGZhbHNlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuICAgIHJldHVybiA8Q29tcCBjbGFzc05hbWU9e2NuKGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSwgY2xhc3NOYW1lIH0pKX0gcmVmPXtyZWZ9IHsuLi5wcm9wc30gLz47XG4gIH0sXG4pO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gXCJCdXR0b25cIjtcblxuZXhwb3J0IHsgQnV0dG9uLCBidXR0b25WYXJpYW50cyB9O1xuIiwgImltcG9ydCAqIGFzIENoZWNrYm94UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY2hlY2tib3hcIjtcbmltcG9ydCB7IENoZWNrIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENoZWNrYm94UHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWgtNCBwcy13LTQgcHMtc2hyaW5rLTAgcHMtcm91bmRlZC1zbSBwcy1ib3JkZXIgcHMtYm9yZGVyLXByaW1hcnkgcHMtc2hhZG93IGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3IgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXRleHQtY3VycmVudFwiKX0+XG4gICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgPC9DaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3I+XG4gIDwvQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbikpO1xuQ2hlY2tib3guZGlzcGxheU5hbWUgPSBDaGVja2JveFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBDaGVja2JveCB9O1xuIiwgImltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgUG9wb3ZlciA9IFBvcG92ZXJQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgUG9wb3ZlclRyaWdnZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IFBvcG92ZXJBbmNob3IgPSBQb3BvdmVyUHJpbWl0aXZlLkFuY2hvcjtcblxuY29uc3QgUG9wb3ZlckNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBhbGlnbiA9IFwiY2VudGVyXCIsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFBvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy13LTcyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC00IHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1wb3BvdmVyLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ29udGVudC5kaXNwbGF5TmFtZSA9IFBvcG92ZXJQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgUG9wb3ZlciwgUG9wb3ZlclRyaWdnZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyQW5jaG9yIH07XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJpbnNlcnRcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmluc2VydCh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdCwgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhuZXdEYXRhKSB7XG4gICAgICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YTxBZGFwdGVyUXVlcnlSZXN1bHQ+KFxuICAgICAgICB7XG4gICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgIC8vIGhlcmUgd2UgcGFydGlhbGx5IG1hdGNoIHRoZSBxdWVyeSBrZXkgdG8gZ2V0IHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgICAgfSxcbiAgICAgICAgKG9sZERhdGEpID0+IHtcbiAgICAgICAgICBpZiAob2xkRGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2xkRGF0YTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub2xkRGF0YSxcbiAgICAgICAgICAgIHJvd3M6IFsuLi5uZXdEYXRhLnJvd3MsIC4uLm9sZERhdGEucm93c10sXG4gICAgICAgICAgfSBzYXRpc2ZpZXMgQWRhcHRlclF1ZXJ5UmVzdWx0O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlDbGllbnQsIFF1ZXJ5Q2xpZW50UHJvdmlkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyBSZWFjdFF1ZXJ5RGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zb25uZXJcIjtcbmltcG9ydCB7IE51cXNIYXNoQWRhcHRlciB9IGZyb20gXCIuL051cXNIYXNoQWRhcHRlclwiO1xuaW1wb3J0IHsgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgfSBmcm9tIFwiLi9TdHVkaW9cIjtcblxuLyoqXG4gKiBTdHVkaW8gY29udGV4dCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuaW50ZXJmYWNlIFN0dWRpb0NvbnRleHRWYWx1ZSB7XG4gIGFjdGl2ZVRhYmxlOiBUYWJsZSB8IG51bGw7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIHNldEFjdGl2ZVRhYmxlOiAodGFibGU6IFRhYmxlIHwgbnVsbCkgPT4gdm9pZDtcbiAgb25FcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgZW1pdFRlbGVtZXRyeUV2ZW50OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG4gIC8vIFVJIHN0YXRlXG4gIGlzRnVsbHNjcmVlbjogYm9vbGVhbjtcbiAgdG9nZ2xlRnVsbHNjcmVlbjogKCkgPT4gdm9pZDtcbiAgaXNOYXZpZ2F0aW9uT3BlbjogYm9vbGVhbjtcbiAgdG9nZ2xlTmF2aWdhdGlvbjogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgcXVlcnlDbGllbnQgPSBuZXcgUXVlcnlDbGllbnQoKTtcblxuLyoqXG4gKiBDb250ZXh0IGZvciBzaGFyaW5nIFN0dWRpbyBzdGF0ZSBhY3Jvc3MgY29tcG9uZW50c1xuICovXG5jb25zdCBTdHVkaW9Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxTdHVkaW9Db250ZXh0VmFsdWUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmV4cG9ydCB0eXBlIFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgb25UZWxlbWV0cnlFdmVudD86IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbn0+O1xuXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvQ29udGV4dFByb3ZpZGVyKHByb3BzOiBTdHVkaW9Db250ZXh0UHJvdmlkZXJQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCAuLi5vdGhlclByb3BzIH0gPSBwcm9wcztcbiAgY29uc3QgW2FjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZV0gPSB1c2VTdGF0ZTxUYWJsZSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbaXNGdWxsc2NyZWVuLCBzZXRJc0Z1bGxzY3JlZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNOYXZpZ2F0aW9uT3Blbiwgc2V0SXNOYXZpZ2F0aW9uT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICBsZXQgb25FcnJvciA9IHByb3BzLm9uRXJyb3I7XG4gIG9uRXJyb3IgPz89IChlcnJvcjogRXJyb3IpID0+IHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGVtaXRUZWxlbWV0cnlFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5vblRlbGVtZXRyeUV2ZW50ID8/ICgoKSA9PiB7fSk7XG4gIH0sIFtwcm9wcy5vblRlbGVtZXRyeUV2ZW50XSk7XG5cbiAgY29uc3QgdG9nZ2xlRnVsbHNjcmVlbiA9ICgpID0+IHNldElzRnVsbHNjcmVlbigocHJldikgPT4gIXByZXYpO1xuICBjb25zdCB0b2dnbGVOYXZpZ2F0aW9uID0gKCkgPT4gc2V0SXNOYXZpZ2F0aW9uT3BlbigocHJldikgPT4gIXByZXYpO1xuICByZXR1cm4gKFxuICAgIDxRdWVyeUNsaWVudFByb3ZpZGVyIGNsaWVudD17cXVlcnlDbGllbnR9PlxuICAgICAgPFJlYWN0UXVlcnlEZXZ0b29scyAvPlxuICAgICAgPFRvYXN0ZXIgLz5cbiAgICAgIDxOdXFzSGFzaEFkYXB0ZXI+XG4gICAgICAgIDxTdHVkaW9Db250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgIC4uLm90aGVyUHJvcHMsXG4gICAgICAgICAgICBhY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIGlzRnVsbHNjcmVlbixcbiAgICAgICAgICAgIHNldEFjdGl2ZVRhYmxlLFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCxcbiAgICAgICAgICAgIHRvZ2dsZUZ1bGxzY3JlZW4sXG4gICAgICAgICAgICBpc05hdmlnYXRpb25PcGVuLFxuICAgICAgICAgICAgdG9nZ2xlTmF2aWdhdGlvbixcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1N0dWRpb0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L051cXNIYXNoQWRhcHRlcj5cbiAgICA8L1F1ZXJ5Q2xpZW50UHJvdmlkZXI+XG4gICk7XG59XG5cbi8qKlxuICogSG9vayB0byBhY2Nlc3MgU3R1ZGlvIGNvbnRleHRcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdXNlZCBvdXRzaWRlIG9mIFN0dWRpby5Qcm92aWRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3R1ZGlvKCk6IFN0dWRpb0NvbnRleHRWYWx1ZSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFN0dWRpb0NvbnRleHQpO1xuXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImB1c2VTdHVkaW9gIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgU3R1ZGlvQ29udGV4dC5Qcm92aWRlcmBcIik7XG4gIH1cblxuICByZXR1cm4gY29udGV4dDtcbn1cbiIsICIndXNlIGNsaWVudCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgb25saW5lTWFuYWdlciwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5pbXBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7XG4gIERldnRvb2xzQnV0dG9uUG9zaXRpb24sXG4gIERldnRvb2xzRXJyb3JUeXBlLFxuICBEZXZ0b29sc1Bvc2l0aW9uLFxufSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuXG5leHBvcnQgaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0cnVlIGlmIHlvdSB3YW50IHRoZSBkZXYgdG9vbHMgdG8gZGVmYXVsdCB0byBiZWluZyBvcGVuXG4gICAqL1xuICBpbml0aWFsSXNPcGVuPzogYm9vbGVhblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBSZWFjdCBRdWVyeSBsb2dvIHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBkZXZ0b29scyBwYW5lbC5cbiAgICogJ3RvcC1sZWZ0JyB8ICd0b3AtcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyB8ICdib3R0b20tcmlnaHQnXG4gICAqIERlZmF1bHRzIHRvICdib3R0b20tcmlnaHQnLlxuICAgKi9cbiAgYnV0dG9uUG9zaXRpb24/OiBEZXZ0b29sc0J1dHRvblBvc2l0aW9uXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIFJlYWN0IFF1ZXJ5IGRldnRvb2xzIHBhbmVsLlxuICAgKiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0J1xuICAgKiBEZWZhdWx0cyB0byAnYm90dG9tJy5cbiAgICovXG4gIHBvc2l0aW9uPzogRGV2dG9vbHNQb3NpdGlvblxuICAvKipcbiAgICogQ3VzdG9tIGluc3RhbmNlIG9mIFF1ZXJ5Q2xpZW50XG4gICAqL1xuICBjbGllbnQ/OiBRdWVyeUNsaWVudFxuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBkZWZpbmUgY3VzdG9tIGVycm9ycyB0aGF0IGNhbiBiZSBzaG93biBpbiB0aGUgZGV2dG9vbHMuXG4gICAqL1xuICBlcnJvclR5cGVzPzogQXJyYXk8RGV2dG9vbHNFcnJvclR5cGU+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBwYXNzIGEgbm9uY2UgdG8gdGhlIHN0eWxlIHRhZyB0aGF0IGlzIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKENTUCkgbm9uY2UgdG8gYWxsb3cgaW5saW5lIHN0eWxlcy5cbiAgICovXG4gIHN0eWxlTm9uY2U/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gYXR0YWNoIHRoZSBkZXZ0b29sJ3Mgc3R5bGVzIHRvIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIERPTS5cbiAgICovXG4gIHNoYWRvd0RPTVRhcmdldD86IFNoYWRvd1Jvb3Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0UXVlcnlEZXZ0b29scyhcbiAgcHJvcHM6IERldnRvb2xzT3B0aW9ucyxcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KHByb3BzLmNsaWVudClcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7XG4gICAgYnV0dG9uUG9zaXRpb24sXG4gICAgcG9zaXRpb24sXG4gICAgaW5pdGlhbElzT3BlbixcbiAgICBlcnJvclR5cGVzLFxuICAgIHN0eWxlTm9uY2UsXG4gICAgc2hhZG93RE9NVGFyZ2V0LFxuICB9ID0gcHJvcHNcbiAgY29uc3QgW2RldnRvb2xzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgIG5ldyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMoe1xuICAgICAgY2xpZW50OiBxdWVyeUNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yOiAnUmVhY3QgUXVlcnknLFxuICAgICAgdmVyc2lvbjogJzUnLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgfSksXG4gIClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldENsaWVudChxdWVyeUNsaWVudClcbiAgfSwgW3F1ZXJ5Q2xpZW50LCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYnV0dG9uUG9zaXRpb24pIHtcbiAgICAgIGRldnRvb2xzLnNldEJ1dHRvblBvc2l0aW9uKGJ1dHRvblBvc2l0aW9uKVxuICAgIH1cbiAgfSwgW2J1dHRvblBvc2l0aW9uLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgIGRldnRvb2xzLnNldFBvc2l0aW9uKHBvc2l0aW9uKVxuICAgIH1cbiAgfSwgW3Bvc2l0aW9uLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRJbml0aWFsSXNPcGVuKGluaXRpYWxJc09wZW4gfHwgZmFsc2UpXG4gIH0sIFtpbml0aWFsSXNPcGVuLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRFcnJvclR5cGVzKGVycm9yVHlwZXMgfHwgW10pXG4gIH0sIFtlcnJvclR5cGVzLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIGRldnRvb2xzLm1vdW50KHJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkZXZ0b29scy51bm1vdW50KClcbiAgICB9XG4gIH0sIFtkZXZ0b29sc10pXG5cbiAgcmV0dXJuIDxkaXYgZGlyPVwibHRyXCIgY2xhc3NOYW1lPVwidHNxZC1wYXJlbnQtY29udGFpbmVyXCIgcmVmPXtyZWZ9PjwvZGl2PlxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNpZ25hbCwgcmVuZGVyLCBsYXp5LCBzZXR1cFN0eWxlU2hlZXQsIGNyZWF0ZUNvbXBvbmVudCwgbWVyZ2VQcm9wcyB9IGZyb20gJy4vY2h1bmsvSFI3WVhaNUguanMnO1xuXG4vLyBzcmMvVGFuc3RhY2tRdWVyeURldnRvb2xzLnRzeFxudmFyIFRhbnN0YWNrUXVlcnlEZXZ0b29scyA9IGNsYXNzIHtcbiAgI2NsaWVudDtcbiAgI29ubGluZU1hbmFnZXI7XG4gICNxdWVyeUZsYXZvcjtcbiAgI3ZlcnNpb247XG4gICNpc01vdW50ZWQgPSBmYWxzZTtcbiAgI3N0eWxlTm9uY2U7XG4gICNzaGFkb3dET01UYXJnZXQ7XG4gICNidXR0b25Qb3NpdGlvbjtcbiAgI3Bvc2l0aW9uO1xuICAjaW5pdGlhbElzT3BlbjtcbiAgI2Vycm9yVHlwZXM7XG4gICNDb21wb25lbnQ7XG4gICNkaXNwb3NlO1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcixcbiAgICAgIHZlcnNpb24sXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldFxuICAgIH0gPSBjb25maWc7XG4gICAgdGhpcy4jY2xpZW50ID0gY3JlYXRlU2lnbmFsKGNsaWVudCk7XG4gICAgdGhpcy4jcXVlcnlGbGF2b3IgPSBxdWVyeUZsYXZvcjtcbiAgICB0aGlzLiN2ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLiNvbmxpbmVNYW5hZ2VyID0gb25saW5lTWFuYWdlcjtcbiAgICB0aGlzLiNzdHlsZU5vbmNlID0gc3R5bGVOb25jZTtcbiAgICB0aGlzLiNzaGFkb3dET01UYXJnZXQgPSBzaGFkb3dET01UYXJnZXQ7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb24gPSBjcmVhdGVTaWduYWwoYnV0dG9uUG9zaXRpb24pO1xuICAgIHRoaXMuI3Bvc2l0aW9uID0gY3JlYXRlU2lnbmFsKHBvc2l0aW9uKTtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuID0gY3JlYXRlU2lnbmFsKGluaXRpYWxJc09wZW4pO1xuICAgIHRoaXMuI2Vycm9yVHlwZXMgPSBjcmVhdGVTaWduYWwoZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0QnV0dG9uUG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0UG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNwb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0SW5pdGlhbElzT3Blbihpc09wZW4pIHtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuWzFdKGlzT3Blbik7XG4gIH1cbiAgc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzKSB7XG4gICAgdGhpcy4jZXJyb3JUeXBlc1sxXShlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRDbGllbnQoY2xpZW50KSB7XG4gICAgdGhpcy4jY2xpZW50WzFdKGNsaWVudCk7XG4gIH1cbiAgbW91bnQoZWwpIHtcbiAgICBpZiAodGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBhbHJlYWR5IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGRpc3Bvc2UgPSByZW5kZXIoKCkgPT4ge1xuICAgICAgY29uc3QgX3NlbGYkID0gdGhpcztcbiAgICAgIGNvbnN0IFtidG5Qb3NpdGlvbl0gPSB0aGlzLiNidXR0b25Qb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtwb3NdID0gdGhpcy4jcG9zaXRpb247XG4gICAgICBjb25zdCBbaXNPcGVuXSA9IHRoaXMuI2luaXRpYWxJc09wZW47XG4gICAgICBjb25zdCBbZXJyb3JzXSA9IHRoaXMuI2Vycm9yVHlwZXM7XG4gICAgICBjb25zdCBbcXVlcnlDbGllbnRdID0gdGhpcy4jY2xpZW50O1xuICAgICAgbGV0IERldnRvb2xzO1xuICAgICAgaWYgKHRoaXMuI0NvbXBvbmVudCkge1xuICAgICAgICBEZXZ0b29scyA9IHRoaXMuI0NvbXBvbmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERldnRvb2xzID0gbGF6eSgoKSA9PiBpbXBvcnQoJy4vRGV2dG9vbHNDb21wb25lbnQvQ1BJT1pTNVguanMnKSk7XG4gICAgICAgIHRoaXMuI0NvbXBvbmVudCA9IERldnRvb2xzO1xuICAgICAgfVxuICAgICAgc2V0dXBTdHlsZVNoZWV0KHRoaXMuI3N0eWxlTm9uY2UsIHRoaXMuI3NoYWRvd0RPTVRhcmdldCk7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERldnRvb2xzLCBtZXJnZVByb3BzKHtcbiAgICAgICAgZ2V0IHF1ZXJ5Rmxhdm9yKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3F1ZXJ5Rmxhdm9yO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiN2ZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25saW5lTWFuYWdlcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNvbmxpbmVNYW5hZ2VyO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgc2hhZG93RE9NVGFyZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3NoYWRvd0RPTVRhcmdldDtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBnZXQgY2xpZW50KCkge1xuICAgICAgICAgIHJldHVybiBxdWVyeUNsaWVudCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgYnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIGJ0blBvc2l0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcG9zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBpbml0aWFsSXNPcGVuKCkge1xuICAgICAgICAgIHJldHVybiBpc09wZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yVHlwZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9ycygpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSwgZWwpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IHRydWU7XG4gICAgdGhpcy4jZGlzcG9zZSA9IGRpc3Bvc2U7XG4gIH1cbiAgdW5tb3VudCgpIHtcbiAgICBpZiAoIXRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgbm90IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIHRoaXMuI2Rpc3Bvc2U/LigpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IGZhbHNlO1xuICB9XG59O1xuXG4vLyBzcmMvVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwudHN4XG52YXIgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgPSBjbGFzcyB7XG4gICNjbGllbnQ7XG4gICNvbmxpbmVNYW5hZ2VyO1xuICAjcXVlcnlGbGF2b3I7XG4gICN2ZXJzaW9uO1xuICAjaXNNb3VudGVkID0gZmFsc2U7XG4gICNzdHlsZU5vbmNlO1xuICAjc2hhZG93RE9NVGFyZ2V0O1xuICAjYnV0dG9uUG9zaXRpb247XG4gICNwb3NpdGlvbjtcbiAgI2luaXRpYWxJc09wZW47XG4gICNlcnJvclR5cGVzO1xuICAjb25DbG9zZTtcbiAgI0NvbXBvbmVudDtcbiAgI2Rpc3Bvc2U7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yLFxuICAgICAgdmVyc2lvbixcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgICAgb25DbG9zZVxuICAgIH0gPSBjb25maWc7XG4gICAgdGhpcy4jY2xpZW50ID0gY3JlYXRlU2lnbmFsKGNsaWVudCk7XG4gICAgdGhpcy4jcXVlcnlGbGF2b3IgPSBxdWVyeUZsYXZvcjtcbiAgICB0aGlzLiN2ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLiNvbmxpbmVNYW5hZ2VyID0gb25saW5lTWFuYWdlcjtcbiAgICB0aGlzLiNzdHlsZU5vbmNlID0gc3R5bGVOb25jZTtcbiAgICB0aGlzLiNzaGFkb3dET01UYXJnZXQgPSBzaGFkb3dET01UYXJnZXQ7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb24gPSBjcmVhdGVTaWduYWwoYnV0dG9uUG9zaXRpb24pO1xuICAgIHRoaXMuI3Bvc2l0aW9uID0gY3JlYXRlU2lnbmFsKHBvc2l0aW9uKTtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuID0gY3JlYXRlU2lnbmFsKGluaXRpYWxJc09wZW4pO1xuICAgIHRoaXMuI2Vycm9yVHlwZXMgPSBjcmVhdGVTaWduYWwoZXJyb3JUeXBlcyk7XG4gICAgdGhpcy4jb25DbG9zZSA9IGNyZWF0ZVNpZ25hbChvbkNsb3NlKTtcbiAgfVxuICBzZXRCdXR0b25Qb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRQb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI3Bvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRJbml0aWFsSXNPcGVuKGlzT3Blbikge1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW5bMV0oaXNPcGVuKTtcbiAgfVxuICBzZXRFcnJvclR5cGVzKGVycm9yVHlwZXMpIHtcbiAgICB0aGlzLiNlcnJvclR5cGVzWzFdKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldENsaWVudChjbGllbnQpIHtcbiAgICB0aGlzLiNjbGllbnRbMV0oY2xpZW50KTtcbiAgfVxuICBzZXRPbkNsb3NlKG9uQ2xvc2UpIHtcbiAgICB0aGlzLiNvbkNsb3NlWzFdKCgpID0+IG9uQ2xvc2UpO1xuICB9XG4gIG1vdW50KGVsKSB7XG4gICAgaWYgKHRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgYWxyZWFkeSBtb3VudGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCBkaXNwb3NlID0gcmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IF9zZWxmJCA9IHRoaXM7XG4gICAgICBjb25zdCBbYnRuUG9zaXRpb25dID0gdGhpcy4jYnV0dG9uUG9zaXRpb247XG4gICAgICBjb25zdCBbcG9zXSA9IHRoaXMuI3Bvc2l0aW9uO1xuICAgICAgY29uc3QgW2lzT3Blbl0gPSB0aGlzLiNpbml0aWFsSXNPcGVuO1xuICAgICAgY29uc3QgW2Vycm9yc10gPSB0aGlzLiNlcnJvclR5cGVzO1xuICAgICAgY29uc3QgW3F1ZXJ5Q2xpZW50XSA9IHRoaXMuI2NsaWVudDtcbiAgICAgIGNvbnN0IFtvbkNsb3NlXSA9IHRoaXMuI29uQ2xvc2U7XG4gICAgICBsZXQgRGV2dG9vbHM7XG4gICAgICBpZiAodGhpcy4jQ29tcG9uZW50KSB7XG4gICAgICAgIERldnRvb2xzID0gdGhpcy4jQ29tcG9uZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRGV2dG9vbHMgPSBsYXp5KCgpID0+IGltcG9ydCgnLi9EZXZ0b29sc1BhbmVsQ29tcG9uZW50L09LRjZFNDVSLmpzJykpO1xuICAgICAgICB0aGlzLiNDb21wb25lbnQgPSBEZXZ0b29scztcbiAgICAgIH1cbiAgICAgIHNldHVwU3R5bGVTaGVldCh0aGlzLiNzdHlsZU5vbmNlLCB0aGlzLiNzaGFkb3dET01UYXJnZXQpO1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEZXZ0b29scywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGdldCBxdWVyeUZsYXZvcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNxdWVyeUZsYXZvcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jdmVyc2lvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9ubGluZU1hbmFnZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jb25saW5lTWFuYWdlcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHNoYWRvd0RPTVRhcmdldCgpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNzaGFkb3dET01UYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZ2V0IGNsaWVudCgpIHtcbiAgICAgICAgICByZXR1cm4gcXVlcnlDbGllbnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJ1dHRvblBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBidG5Qb3NpdGlvbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHBvcygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgaW5pdGlhbElzT3BlbigpIHtcbiAgICAgICAgICByZXR1cm4gaXNPcGVuKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvclR5cGVzKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcnMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9uQ2xvc2UoKSB7XG4gICAgICAgICAgcmV0dXJuIG9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0sIGVsKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuI2Rpc3Bvc2UgPSBkaXNwb3NlO1xuICB9XG4gIHVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIG5vdCBtb3VudGVkXCIpO1xuICAgIH1cbiAgICB0aGlzLiNkaXNwb3NlPy4oKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzLCBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCB9O1xuIiwgIid1c2UgY2xpZW50J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBvbmxpbmVNYW5hZ2VyLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcbmltcG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBEZXZ0b29sc0Vycm9yVHlwZSB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGluc3RhbmNlIG9mIFF1ZXJ5Q2xpZW50XG4gICAqL1xuICBjbGllbnQ/OiBRdWVyeUNsaWVudFxuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBkZWZpbmUgY3VzdG9tIGVycm9ycyB0aGF0IGNhbiBiZSBzaG93biBpbiB0aGUgZGV2dG9vbHMuXG4gICAqL1xuICBlcnJvclR5cGVzPzogQXJyYXk8RGV2dG9vbHNFcnJvclR5cGU+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBwYXNzIGEgbm9uY2UgdG8gdGhlIHN0eWxlIHRhZyB0aGF0IGlzIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKENTUCkgbm9uY2UgdG8gYWxsb3cgaW5saW5lIHN0eWxlcy5cbiAgICovXG4gIHN0eWxlTm9uY2U/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gYXR0YWNoIHRoZSBkZXZ0b29sJ3Mgc3R5bGVzIHRvIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIERPTS5cbiAgICovXG4gIHNoYWRvd0RPTVRhcmdldD86IFNoYWRvd1Jvb3RcblxuICAvKipcbiAgICogQ3VzdG9tIHN0eWxlcyBmb3IgdGhlIGRldnRvb2xzIHBhbmVsXG4gICAqIEBkZWZhdWx0IHsgaGVpZ2h0OiAnNTAwcHgnIH1cbiAgICogQGV4YW1wbGUgeyBoZWlnaHQ6ICcxMDAlJyB9XG4gICAqIEBleGFtcGxlIHsgaGVpZ2h0OiAnMTAwJScsIHdpZHRoOiAnMTAwJScgfVxuICAgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGRldnRvb2xzIHBhbmVsIGlzIGNsb3NlZFxuICAgKi9cbiAgb25DbG9zZT86ICgpID0+IHVua25vd25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsKFxuICBwcm9wczogRGV2dG9vbHNQYW5lbE9wdGlvbnMsXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudChwcm9wcy5jbGllbnQpXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBlcnJvclR5cGVzLCBzdHlsZU5vbmNlLCBzaGFkb3dET01UYXJnZXQgfSA9IHByb3BzXG4gIGNvbnN0IFtkZXZ0b29sc10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICBuZXcgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwoe1xuICAgICAgY2xpZW50OiBxdWVyeUNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yOiAnUmVhY3QgUXVlcnknLFxuICAgICAgdmVyc2lvbjogJzUnLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uOiAnYm90dG9tLWxlZnQnLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgaW5pdGlhbElzT3BlbjogdHJ1ZSxcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgICAgb25DbG9zZTogcHJvcHMub25DbG9zZSxcbiAgICB9KSxcbiAgKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0Q2xpZW50KHF1ZXJ5Q2xpZW50KVxuICB9LCBbcXVlcnlDbGllbnQsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldE9uQ2xvc2UocHJvcHMub25DbG9zZSA/PyAoKCkgPT4ge30pKVxuICB9LCBbcHJvcHMub25DbG9zZSwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzIHx8IFtdKVxuICB9LCBbZXJyb3JUeXBlcywgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICBkZXZ0b29scy5tb3VudChyZWYuY3VycmVudClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGV2dG9vbHMudW5tb3VudCgpXG4gICAgfVxuICB9LCBbZGV2dG9vbHNdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgc3R5bGU9e3sgaGVpZ2h0OiAnNTAwcHgnLCAuLi5wcm9wcy5zdHlsZSB9fVxuICAgICAgY2xhc3NOYW1lPVwidHNxZC1wYXJlbnQtY29udGFpbmVyXCJcbiAgICAgIHJlZj17cmVmfVxuICAgID48L2Rpdj5cbiAgKVxufVxuIiwgIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgKiBhcyBEZXZ0b29scyBmcm9tICcuL1JlYWN0UXVlcnlEZXZ0b29scydcbmltcG9ydCAqIGFzIERldnRvb2xzUGFuZWwgZnJvbSAnLi9SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCdcblxuZXhwb3J0IGNvbnN0IFJlYWN0UXVlcnlEZXZ0b29sczogKHR5cGVvZiBEZXZ0b29scylbJ1JlYWN0UXVlcnlEZXZ0b29scyddID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICA6IERldnRvb2xzLlJlYWN0UXVlcnlEZXZ0b29sc1xuXG5leHBvcnQgY29uc3QgUmVhY3RRdWVyeURldnRvb2xzUGFuZWw6ICh0eXBlb2YgRGV2dG9vbHNQYW5lbClbJ1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsJ10gPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50J1xuICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIDogRGV2dG9vbHNQYW5lbC5SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbFxuIiwgImltcG9ydCB7IFRvYXN0ZXIgYXMgU29ubmVyIH0gZnJvbSBcInNvbm5lclwiO1xuXG4vLyBpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAL3VpL3N0dWRpby91dGlsL3RoZW1lLXByb3ZpZGVyXCI7XG5cbnR5cGUgVG9hc3RlclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNvbm5lcj47XG5cbmNvbnN0IFRvYXN0ZXIgPSAoeyAuLi5wcm9wcyB9OiBUb2FzdGVyUHJvcHMpID0+IHtcbiAgLy8gY29uc3QgeyB0aGVtZSA9IFwic3lzdGVtXCIgfSA9IHVzZVRoZW1lKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8U29ubmVyXG4gICAgICAvLyB0aGVtZT17dGhlbWUgYXMgVG9hc3RlclByb3BzW1widGhlbWVcIl19XG4gICAgICBjbGFzc05hbWU9XCJwcy10b2FzdGVyIHBzLWdyb3VwXCJcbiAgICAgIHRvYXN0T3B0aW9ucz17e1xuICAgICAgICBjbGFzc05hbWVzOiB7XG4gICAgICAgICAgdG9hc3Q6XG4gICAgICAgICAgICBcImdyb3VwIHRvYXN0IGdyb3VwLVsudG9hc3Rlcl06YmctYmFja2dyb3VuZCBncm91cC1bLnRvYXN0ZXJdOnRleHQtZm9yZWdyb3VuZCBncm91cC1bLnRvYXN0ZXJdOmJvcmRlci1ib3JkZXIgZ3JvdXAtWy50b2FzdGVyXTpzaGFkb3ctbGdcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJncm91cC1bLnRvYXN0XTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgICBhY3Rpb25CdXR0b246IFwiZ3JvdXAtWy50b2FzdF06YmctcHJpbWFyeSBncm91cC1bLnRvYXN0XTp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgICAgICAgIGNhbmNlbEJ1dHRvbjogXCJncm91cC1bLnRvYXN0XTpiZy1tdXRlZCBncm91cC1bLnRvYXN0XTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFRvYXN0ZXIgfTtcbiIsICJpbXBvcnQge1xuICB1bnN0YWJsZV9BZGFwdGVyT3B0aW9ucyBhcyBBZGFwdGVyT3B0aW9ucyxcbiAgdW5zdGFibGVfY3JlYXRlQWRhcHRlclByb3ZpZGVyIGFzIGNyZWF0ZUFkYXB0ZXJQcm92aWRlcixcbn0gZnJvbSBcIm51cXMvYWRhcHRlcnMvY3VzdG9tXCI7XG5pbXBvcnQgeyBGQywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IHR5cGUgeyBkZWZhdWx0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogSG9vayB0aGF0IE51cXMgd2lsbCBjYWxsIHRvIHJlYWQgJiB3cml0ZSBVUkwgc3RhdGUuXG4gKi9cbmZ1bmN0aW9uIHVzZUhhc2hBZGFwdGVyKCkge1xuICAvLyByZWFkIGN1cnJlbnQgc3RhdGUgZnJvbSBldmVyeXRoaW5nIGFmdGVyIHRoZSBcdTIwMUMjXHUyMDFEXG4gIGNvbnN0IHJhd0hhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcbiAgY29uc3QgW2hhc2hQYXJhbXMsIHNldEhhc2hQYXJhbXNdID0gdXNlU3RhdGUobmV3IFVSTFNlYXJjaFBhcmFtcyhyYXdIYXNoKSk7XG5cbiAgLy8gd3JpdGUgbmV3IHN0YXRlIGJhY2sgaW50byB0aGUgaGFzaCBmcmFnbWVudFxuICBmdW5jdGlvbiB1cGRhdGVVcmwodXBkYXRlZDogVVJMU2VhcmNoUGFyYW1zLCB7IGhpc3RvcnkgfTogQWRhcHRlck9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHBhdGhuYW1lLCBzZWFyY2ggfSA9IHdpbmRvdy5sb2NhdGlvbjtcbiAgICBjb25zdCBoYXNoID0gdXBkYXRlZC50b1N0cmluZygpO1xuICAgIGNvbnN0IHVybCA9IGAke3BhdGhuYW1lfSR7c2VhcmNofSMke2hhc2h9YDtcblxuICAgIGlmIChoaXN0b3J5ID09PSBcInB1c2hcIikge1xuICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsIFwiXCIsIHVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgIH1cblxuICAgIHNldEhhc2hQYXJhbXModXBkYXRlZCk7XG4gIH1cblxuICAvLyBleHBvc2UgYSBzbmFwc2hvdCBvZiB0aGUgY3VycmVudCBwYXJhbXNcbiAgZnVuY3Rpb24gZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QoKSB7XG4gICAgY29uc3QgcmF3ID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG5cbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhyYXcpO1xuICB9XG5cbiAgLy8gc3luYyBzdGF0ZSB3aGVuIHVzZXIgbmF2aWdhdGVzIHZpYSBicm93c2VyIGNvbnRyb2xzIG9yIGV4dGVybmFsIHNjcmlwdFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIGhhbmRsZUhhc2hDaGFuZ2UoKSB7XG4gICAgICBjb25zdCByYXdIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG4gICAgICBzZXRIYXNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIiwgaGFuZGxlSGFzaENoYW5nZSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4geyBzZWFyY2hQYXJhbXM6IGhhc2hQYXJhbXMsIHVwZGF0ZVVybCwgZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QgfTtcbn1cblxuLyoqXG4gKiBUaGUgYWRhcHRlciBwcm92aWRlciBjb21wb25lbnQgeW91IHdyYXAgeW91ciBhcHAgaW4uXG4gKi9cbmV4cG9ydCBjb25zdCBOdXFzSGFzaEFkYXB0ZXIgPSBjcmVhdGVBZGFwdGVyUHJvdmlkZXIodXNlSGFzaEFkYXB0ZXIpIGFzIEZDPFByb3BzV2l0aENoaWxkcmVuPjtcbiIsICJpbXBvcnQgeyBpbmZlclJvd0ZpbHRlciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmZ1bmN0aW9uIGdldFJvd0lkKHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRhYmxlOiBUYWJsZSkge1xuICBjb25zdCBpZCA9IHtcbiAgICBmaWx0ZXI6IGluZmVyUm93RmlsdGVyKHJvdywgdGFibGUuY29sdW1ucyksXG4gICAgdGFibGU6IGAke3RhYmxlLnNjaGVtYX0uJHt0YWJsZS5uYW1lfWAsXG4gIH07XG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGlkKTtcbn1cblxuZnVuY3Rpb24gYWRkUm93SWRUb1Jvdyhyb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0YWJsZTogVGFibGUpIHtcbiAgcmV0dXJuIHsgLi4ucm93LCBfX3BzX3Jvd2lkOiBnZXRSb3dJZChyb3csIHRhYmxlKSB9O1xufVxuXG50eXBlIEFkYXB0ZXJSZXN1bHQgPSB7XG4gIHJvdz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByb3dzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRSb3dJZFRvUmVzdWx0PFQgZXh0ZW5kcyBBZGFwdGVyUmVzdWx0PihyZXN1bHQ6IFQsIHRhYmxlOiBUYWJsZSkge1xuICBjb25zdCB7IHJvdywgcm93cyB9ID0gcmVzdWx0O1xuXG4gIGlmIChyb3cgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7IC4uLnJlc3VsdCwgcm93OiBhZGRSb3dJZFRvUm93KHJvdywgdGFibGUpIH07XG4gIH1cbiAgaWYgKHJvd3MgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7IC4uLnJlc3VsdCwgcm93czogcm93cy5tYXAoKHJvdykgPT4gYWRkUm93SWRUb1Jvdyhyb3csIHRhYmxlKSkgfTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgdXNlUXVlcnkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlclF1ZXJ5UmVzdWx0LCBGaWx0ZXJHcm91cCwgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgYWRkUm93SWRUb1Jlc3VsdCB9IGZyb20gXCIuL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlQWN0aXZlVGFibGVRdWVyeVByb3BzIHtcbiAgcGFnZUluZGV4OiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHNvcnRPcmRlcjogU29ydE9yZGVySXRlbVtdO1xuICBmaWx0ZXI6IEZpbHRlckdyb3VwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVRdWVyeShwcm9wczogVXNlQWN0aXZlVGFibGVRdWVyeVByb3BzKSB7XG4gIGNvbnN0IHsgcGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydE9yZGVyLCBmaWx0ZXIgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgZW5hYmxlZDogQm9vbGVhbihhY3RpdmVUYWJsZSksXG4gICAgZ2NUaW1lOiAwLFxuICAgIHBsYWNlaG9sZGVyRGF0YShwcmV2aW91c0RhdGE6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCwgcHJldmlvdXNRdWVyeSkge1xuICAgICAgY29uc3QgWywgc2NoZW1hLCAsIHRhYmxlXSA9IHByZXZpb3VzUXVlcnk/LnF1ZXJ5S2V5IHx8IFtdO1xuXG4gICAgICBpZiAoc2NoZW1hICE9PSBhY3RpdmVUYWJsZT8uc2NoZW1hIHx8IHRhYmxlICE9PSBhY3RpdmVUYWJsZT8ubmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c0RhdGE7XG4gICAgfSxcbiAgICBhc3luYyBxdWVyeUZuKHsgc2lnbmFsIH0pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0c10gPSBhd2FpdCBhZGFwdGVyLnF1ZXJ5KFxuICAgICAgICB7IHBhZ2VJbmRleCwgcGFnZVNpemUsIHNvcnRPcmRlciwgdGFibGU6IGFjdGl2ZVRhYmxlISwgZmlsdGVyIH0sXG4gICAgICAgIHsgYWJvcnRTaWduYWw6IHNpZ25hbCB9LFxuICAgICAgKTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWRkUm93SWRUb1Jlc3VsdChyZXN1bHRzLCBhY3RpdmVUYWJsZSEpO1xuICAgIH0sXG4gICAgcXVlcnlLZXk6IFtcbiAgICAgIFwic2NoZW1hXCIsXG4gICAgICBhY3RpdmVUYWJsZT8uc2NoZW1hIHx8IG51bGwsXG4gICAgICBcInRhYmxlXCIsXG4gICAgICBhY3RpdmVUYWJsZT8ubmFtZSB8fCBudWxsLFxuICAgICAgXCJxdWVyeVwiLFxuICAgICAgXCJzb3J0T3JkZXJcIixcbiAgICAgIHNvcnRPcmRlci5tYXAoKGl0ZW0pID0+IGAke2l0ZW0uY29sdW1ufToke2l0ZW0uZGlyZWN0aW9ufWApLmpvaW4oXCIsXCIpIHx8IFwibmF0dXJhbFwiLFxuICAgICAgXCJwYWdlSW5kZXhcIixcbiAgICAgIHBhZ2VJbmRleCxcbiAgICAgIFwicGFnZVNpemVcIixcbiAgICAgIHBhZ2VTaXplLFxuICAgICAgXCJmaWx0ZXJcIixcbiAgICAgIEpTT04uc3RyaW5naWZ5KGZpbHRlciksXG4gICAgXSxcbiAgICBzdGFsZVRpbWU6IEluZmluaXR5LFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyB0eXBlIFF1ZXJ5Q2xpZW50LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlclF1ZXJ5UmVzdWx0LCBBZGFwdGVyVXBkYXRlRGV0YWlscywgQWRhcHRlclVwZGF0ZU9wdGlvbnMsIFRhYmxlIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgaW5mZXJSb3dGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vZGF0YS9xdWVyeVwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlQWN0aXZlVGFibGVVcGRhdGVQYXJhbXMge1xuICBkZXRhaWxzOiBBZGFwdGVyVXBkYXRlRGV0YWlscztcbiAgb3B0aW9uczogQWRhcHRlclVwZGF0ZU9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZVVwZGF0ZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciwgb25FcnJvciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICBjb25zdCBxdWVyeUtleVByZWZpeCA9IFtcInNjaGVtYVwiLCBhY3RpdmVUYWJsZT8uc2NoZW1hID8/IG51bGwsIFwidGFibGVcIiwgYWN0aXZlVGFibGU/Lm5hbWUgPz8gbnVsbF0gYXMgY29uc3Q7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAocGFyYW1zOiBVc2VBY3RpdmVUYWJsZVVwZGF0ZVBhcmFtcykgPT4ge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci51cGRhdGUocGFyYW1zLmRldGFpbHMsIHBhcmFtcy5vcHRpb25zKTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgbXV0YXRpb25LZXk6IFsuLi5xdWVyeUtleVByZWZpeCwgXCJ1cGRhdGVcIl0sXG4gICAgb25FcnJvcihlcnJvciwgcGFyYW1zKSB7XG4gICAgICBjb25zdCB7IGNoYW5nZXMsIHJvdyB9ID0gcGFyYW1zLmRldGFpbHM7XG5cbiAgICAgIG9uRXJyb3IoZXJyb3IpO1xuXG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCBjaGFuZ2VkUm93ID0geyAuLi5yb3csIC4uLmNoYW5nZXMgfTtcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKGNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiByZXZlcnRDaGFuZ2VzKGNhY2hlZFJvdykge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jYWNoZWRSb3csXG4gICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhjaGFuZ2VzKS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChvcmlnaW5hbFZhbHVlcywgY29sdW1uTmFtZSkgPT4gKHsgLi4ub3JpZ2luYWxWYWx1ZXMsIFtjb2x1bW5OYW1lXTogcm93W2NvbHVtbk5hbWVdIH0pLFxuICAgICAgICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25NdXRhdGUocGFyYW1zKSB7XG4gICAgICBjb25zdCB7IGRldGFpbHMgfSA9IHBhcmFtcztcblxuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgeyByb3c6IHVuY2hhbmdlZFJvdyB9ID0gZGV0YWlscztcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKHVuY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIGFwcGx5Q2hhbmdlcyhjYWNoZWRSb3cpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5jYWNoZWRSb3csIC4uLmRldGFpbHMuY2hhbmdlcyB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MocmVzdWx0LCBwYXJhbXMpIHtcbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IHsgY2hhbmdlcywgcm93IH0gPSBwYXJhbXMuZGV0YWlscztcblxuICAgICAgICAgIGNvbnN0IGNoYW5nZWRSb3cgPSB7IC4uLnJvdywgLi4uY2hhbmdlcyB9O1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIoY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIGFwcGx5UmVhbERhdGFXaGVuRnJlc2hlcihjYWNoZWRSb3cpIHtcbiAgICAgICAgICBjb25zdCB7IF9fcHNfdXBkYXRlZF9hdF9fIH0gPSBjYWNoZWRSb3c7XG4gICAgICAgICAgY29uc3QgeyByb3cgfSA9IHJlc3VsdDtcblxuICAgICAgICAgIC8vIHJlc3VsdCByb3cgaXMgc3RhbGUuXG4gICAgICAgICAgaWYgKF9fcHNfdXBkYXRlZF9hdF9fICE9IG51bGwgJiYgcm93Ll9fcHNfdXBkYXRlZF9hdF9fIDw9IF9fcHNfdXBkYXRlZF9hdF9fKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkUm93O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7IC4uLmNhY2hlZFJvdywgLi4ucm93IH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG92ZXJ3cml0ZUNhY2hlZFJvdyhwYXJhbXM6IHtcbiAgZ2V0RmluZGVyRm46ICgpID0+IChjYWNoZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBib29sZWFuO1xuICB0YWJsZTogVGFibGU7XG4gIHVwZGF0ZXJGbjogKGNhY2hlZFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBxdWVyeUNsaWVudDogUXVlcnlDbGllbnQ7XG59KSB7XG4gIGNvbnN0IHsgZ2V0RmluZGVyRm4sIHF1ZXJ5Q2xpZW50LCB0YWJsZSwgdXBkYXRlckZuIH0gPSBwYXJhbXM7XG5cbiAgbGV0IGZpbmRlcjogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0RmluZGVyRm4+O1xuXG4gIHF1ZXJ5Q2xpZW50LnNldFF1ZXJpZXNEYXRhKFxuICAgIHsgZXhhY3Q6IGZhbHNlLCBxdWVyeUtleTogW1wic2NoZW1hXCIsIHRhYmxlLnNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZS5uYW1lLCBcInF1ZXJ5XCJdIH0sXG4gICAgKGNhY2hlZFJlc3VsdDogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkKTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGNvbnN0IHsgcm93czogY2FjaGVkUm93cyA9IFtdIH0gPSBjYWNoZWRSZXN1bHQgfHwge307XG5cbiAgICAgIGlmIChjYWNoZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZWRSb3dJbmRleCA9IGNhY2hlZFJvd3MuZmluZEluZGV4KChmaW5kZXIgPz89IGdldEZpbmRlckZuKCkpKTtcblxuICAgICAgaWYgKGNhY2hlZFJvd0luZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdSb3cgPSB1cGRhdGVyRm4oY2FjaGVkUm93c1tjYWNoZWRSb3dJbmRleF0hKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY2FjaGVkUmVzdWx0ISxcbiAgICAgICAgcm93czogWy4uLmNhY2hlZFJvd3Muc2xpY2UoMCwgY2FjaGVkUm93SW5kZXgpLCBuZXdSb3csIC4uLmNhY2hlZFJvd3Muc2xpY2UoY2FjaGVkUm93SW5kZXggKyAxKV0sXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgRmlsdGVyR3JvdXAgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEZpbHRlcjogRmlsdGVyR3JvdXAgPSB7XG4gIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgZmlsdGVyczogW10sXG4gIGFmdGVyOiBcImFuZFwiLFxuICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VGaWx0ZXJpbmcoKSB7XG4gIGNvbnN0IFtmaWx0ZXJQYXJhbSwgc2V0RmlsdGVyUGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcImZpbHRlclwiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBKU09OLnN0cmluZ2lmeShkZWZhdWx0RmlsdGVyKSxcbiAgfSk7XG5cbiAgY29uc3QgYXBwbGllZEZpbHRlciA9IHVzZU1lbW8oKCkgPT4gSlNPTi5wYXJzZShmaWx0ZXJQYXJhbSkgYXMgRmlsdGVyR3JvdXAsIFtmaWx0ZXJQYXJhbV0pO1xuICBjb25zdCBzZXRBcHBsaWVkRmlsdGVyID0gKGZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQgc2V0RmlsdGVyUGFyYW0oSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSk7XG5cbiAgY29uc3QgW2VkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXJdID0gdXNlU3RhdGU8RmlsdGVyR3JvdXA+KGFwcGxpZWRGaWx0ZXIpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RWRpdGluZ0ZpbHRlcihhcHBsaWVkRmlsdGVyKTtcbiAgfSwgW2FwcGxpZWRGaWx0ZXJdKTtcblxuICByZXR1cm4ge1xuICAgIGFwcGxpZWRGaWx0ZXIsXG4gICAgc2V0QXBwbGllZEZpbHRlcixcbiAgICBlZGl0aW5nRmlsdGVyLFxuICAgIHNldEVkaXRpbmdGaWx0ZXIsXG4gIH07XG59XG4iLCAiLy8gd2UncmUgZW5zdXJpbmcgdGhhdCBrZXlzIGFyZSB0eXBlLXNhZmUuIHRoZXJlIGlzIG5vIHByb3BlciB3YXkgdG8gYWNoaWV2ZSBpdCBpbiBgbnVxc2AuXG4vLyB0aGUgYGRlY2xhcmUgbW9kdWxlYCB0ZWNobmlxdWUgcmVzdWx0cyBpbiBhZGRpbmcgb3ZlcmxvYWRzLCBub3Qgb3ZlcnJpZGluZyB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zLlxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQge1xuICB0eXBlIE9wdGlvbnMsXG4gIHR5cGUgUGFyc2VyLFxuICB1c2VRdWVyeVN0YXRlIGFzIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlT3B0aW9ucyxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlUmV0dXJuLFxuICB1c2VRdWVyeVN0YXRlcyBhcyB1c2VRdWVyeVN0YXRlc09yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzT3B0aW9ucyxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlc1JldHVybixcbn0gZnJvbSBcIm51cXNcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuZXhwb3J0ICogZnJvbSBcIm51cXNcIjtcblxuZXhwb3J0IHR5cGUgU3RhdGVLZXkgPSBcInBhZ2VJbmRleFwiIHwgXCJwYWdlU2l6ZVwiIHwgXCJ0YWJsZVwiIHwgXCJzb3J0XCIgfCBcInNjaGVtYVwiIHwgXCJ0ZXN0XCIgfCBcImZpbHRlclwiO1xuXG4vLyBsaWZ0ZWQgZnJvbSBAcHJpc21hL2NsaWVudC9ydW50aW1lXG50eXBlIEV4YWN0PEEsIFc+ID1cbiAgfCAoQSBleHRlbmRzIHVua25vd25cbiAgICAgID8gVyBleHRlbmRzIEFcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBbSyBpbiBrZXlvZiBBXTogRXhhY3Q8QVtLXSwgV1tLXT47XG4gICAgICAgICAgfVxuICAgICAgICA6IFdcbiAgICAgIDogbmV2ZXIpXG4gIHwgKEEgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgfCBib29sZWFuIHwgW10gPyBBIDogbmV2ZXIpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGtleU1hcDxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBrZXlNYXA6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiBrZXlNYXAgYXMgbmV2ZXI7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXJsS2V5czxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgc3RyaW5nPj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1cmxLZXlzOiBFeGFjdDxNYXAsIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4sXG4pOiBCcmFuZGVkS2V5TWFwPE1hcD4ge1xuICByZXR1cm4gdXJsS2V5cyBhcyBuZXZlcjtcbn1cblxuY29uc3QgX0JSQU5EX1NZTUJPTCA9IFN5bWJvbChcIkJSQU5EX1NZTUJPTFwiKTtcblxudHlwZSBCcmFuZGVkS2V5TWFwPE1hcD4gPSBNYXAgJiB7XG4gIFtLIGluIHR5cGVvZiBfQlJBTkRfU1lNQk9MXTogbmV2ZXI7XG59O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+ICYge1xuICAgIGRlZmF1bHRWYWx1ZTogVDtcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48Tm9uTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygb3B0aW9ucy5wYXJzZT4+LCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZztcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFBpY2s8VXNlUXVlcnlTdGF0ZU9wdGlvbnM8c3RyaW5nPiwga2V5b2YgT3B0aW9ucz4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXkpOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShrZXk6IFN0YXRlS2V5LCBvcHRpb25zPzogYW55KTogYW55IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbChrZXksIG9wdGlvbnMpO1xufVxuXG50eXBlIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcDxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+ID0gUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+LFxuPiA9IHtcbiAgW0tleSBpbiBrZXlvZiBNYXBdOiBLZXlNYXBWYWx1ZTxNYXBbS2V5XT47XG59O1xuXG50eXBlIEtleU1hcFZhbHVlPFR5cGU+ID0gUGFyc2VyPFR5cGU+ICZcbiAgT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU/OiBUeXBlO1xuICB9O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlczxLZXlNYXAgZXh0ZW5kcyBVc2VRdWVyeVN0YXRlc0tleXNNYXA+KFxuICBrZXlNYXA6IEJyYW5kZWRLZXlNYXA8S2V5TWFwPixcbiAgb3B0aW9ucz86IFBhcnRpYWw8VXNlUXVlcnlTdGF0ZXNPcHRpb25zPEtleU1hcD4+LFxuKTogVXNlUXVlcnlTdGF0ZXNSZXR1cm48S2V5TWFwPiB7XG4gIHJldHVybiB1c2VRdWVyeVN0YXRlc09yaWdpbmFsKGtleU1hcCBhcyBuZXZlciwgb3B0aW9ucyk7XG59XG4iLCAiaW1wb3J0IHsgdXNlSXNNdXRhdGluZyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuLyoqXG4gKiBIb29rIHRvIGtub3cgd2hldGhlciBhbiBpbnNlcnQgaXMgY3VycmVudGx5IG9uZ29pbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc0luc2VydGluZygpIHtcbiAgcmV0dXJuIHVzZUlzTXV0YXRpbmcoe1xuICAgIHByZWRpY2F0ZSh7IG9wdGlvbnM6IHsgbXV0YXRpb25LZXkgfSB9KSB7XG4gICAgICByZXR1cm4gbXV0YXRpb25LZXk/Lls0XSA9PT0gXCJpbnNlcnRcIjtcbiAgICB9LFxuICB9KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE9uQ2hhbmdlRm4sIFBhZ2luYXRpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGtleU1hcCwgcGFyc2VBc0luZGV4LCBwYXJzZUFzSW50ZWdlciwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5cbi8vIFRPRE86IGV2ZW50dWFsbHkgY29uZmlndXJhYmxlIC8gY29udHJvbGxlZCBieSB1c2VyLiBiYWJ5IHN0ZXBzLi5cbmNvbnN0IERFRkFVTFRfUEFHRV9TSVpFID0gMjU7XG5cbmNvbnN0IHBhZ2luYXRpb25QYXJzZXJzID0ga2V5TWFwKHtcbiAgcGFnZUluZGV4OiBwYXJzZUFzSW5kZXgud2l0aERlZmF1bHQoMCksIC8vIHplcm8tYmFzZWRcbiAgcGFnZVNpemU6IHBhcnNlQXNJbnRlZ2VyLndpdGhEZWZhdWx0KERFRkFVTFRfUEFHRV9TSVpFKSxcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUGFnaW5hdGlvbigpIHtcbiAgY29uc3QgW3sgcGFnZUluZGV4LCBwYWdlU2l6ZSB9LCBzZXRQYWdpbmF0aW9uXSA9IHVzZVF1ZXJ5U3RhdGVzKHBhZ2luYXRpb25QYXJzZXJzKTtcblxuICAvLyBDb21wYXRpYmxlIHdpdGggVGFuU3RhY2sgVGFibGUncyBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT5cbiAgY29uc3Qgc2V0UGFnaW5hdGlvblN0YXRlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT4gPSB1c2VDYWxsYmFjayhcbiAgICAodXBkYXRlck9yVmFsdWUpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB2b2lkIHNldFBhZ2luYXRpb24oKG9sZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdXBkYXRlck9yVmFsdWUob2xkKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGFnZUluZGV4OiBuZXdTdGF0ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgICBwYWdlU2l6ZTogbmV3U3RhdGUucGFnZVNpemUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2b2lkIHNldFBhZ2luYXRpb24oe1xuICAgICAgICAgIHBhZ2VJbmRleDogdXBkYXRlck9yVmFsdWUucGFnZUluZGV4LFxuICAgICAgICAgIHBhZ2VTaXplOiB1cGRhdGVyT3JWYWx1ZS5wYWdlU2l6ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2V0UGFnaW5hdGlvbl0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYWdpbmF0aW9uU3RhdGU6IHsgcGFnZUluZGV4LCBwYWdlU2l6ZSB9LFxuICAgIHNldFBhZ2luYXRpb25TdGF0ZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFkYXB0ZXJRdWVyeVJlc3VsdCB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZURlbGV0ZSB9IGZyb20gXCIuL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4vdXNlLXBhZ2luYXRpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdGlvbihkYXRhOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgb25FcnJvciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlIH0gPSB1c2VQYWdpbmF0aW9uKCk7XG4gIGNvbnN0IFtyb3dTZWxlY3Rpb25TdGF0ZSwgc2V0Um93U2VsZWN0aW9uU3RhdGVdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KTtcbiAgY29uc3QgaXNTZWxlY3RpbmcgPSBPYmplY3Qua2V5cyhyb3dTZWxlY3Rpb25TdGF0ZSkubGVuZ3RoICE9PSAwO1xuICBjb25zdCB7IG11dGF0ZSB9ID0gdXNlQWN0aXZlVGFibGVEZWxldGUoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gc2V0Um93U2VsZWN0aW9uU3RhdGUoe30pLCBbYWN0aXZlVGFibGUsIHBhZ2luYXRpb25TdGF0ZS5wYWdlSW5kZXhdKTtcblxuICBmdW5jdGlvbiBkZWxldGVTZWxlY3Rpb24oKSB7XG4gICAgY29uc3Qgcm93cyA9IGRhdGE/LnJvd3MuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgIHJldHVybiByb3dTZWxlY3Rpb25TdGF0ZVtyb3cuX19wc19yb3dpZCBhcyBzdHJpbmddO1xuICAgIH0pO1xuXG4gICAgbXV0YXRlKHJvd3MgPz8gW10sIHtcbiAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgc2V0Um93U2VsZWN0aW9uU3RhdGUoe30pO1xuICAgICAgfSxcbiAgICAgIG9uRXJyb3IsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRlbGV0ZVNlbGVjdGlvbixcbiAgICBzZXRSb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBpc1NlbGVjdGluZyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeUtleSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJkZWxldGVcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmRlbGV0ZSh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBhc3luYyBvblN1Y2Nlc3MoKSB7XG4gICAgICBhd2FpdCBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7XG4gICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwicXVlcnlcIl0gYXMgbmV2ZXIgYXMgUXVlcnlLZXksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU29ydGluZygpIHtcbiAgLy8gVXNlIG51cXMgdG8gbWFuYWdlIHNvcnRpbmcgc3RhdGUgaW4gVVJMXG4gIGNvbnN0IFtzb3J0UGFyYW0sIHNldFNvcnRQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwic29ydFwiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICB9KTtcblxuICAvLyBQYXJzZSBzb3J0aW5nIGZyb20gVVJMIHBhcmFtZXRlclxuICBjb25zdCBwYXJzZVNvcnRpbmcgPSAoc29ydFBhcmFtOiBzdHJpbmcgfCBudWxsKTogU29ydE9yZGVySXRlbVtdID0+IHtcbiAgICBpZiAoIXNvcnRQYXJhbSkgcmV0dXJuIFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEZvcm1hdDogY29sdW1uOmRpcmVjdGlvbixjb2x1bW46ZGlyZWN0aW9uXG4gICAgICByZXR1cm4gc29ydFBhcmFtXG4gICAgICAgIC5zcGxpdChcIixcIilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtjb2x1bW4sIGRpcmVjdGlvbl0gPSBpdGVtLnNwbGl0KFwiOlwiKTtcbiAgICAgICAgICBpZiAoIWNvbHVtbiB8fCAhZGlyZWN0aW9uIHx8ICFbXCJhc2NcIiwgXCJkZXNjXCJdLmluY2x1ZGVzKGRpcmVjdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyBjb2x1bW4sIGRpcmVjdGlvbjogZGlyZWN0aW9uIGFzIFwiYXNjXCIgfCBcImRlc2NcIiB9O1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFNvcnRPcmRlckl0ZW1bXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIHNvcnRpbmcgcGFyYW1ldGVyOlwiLCBlKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgLy8gQ3JlYXRlIGEgc3RhYmxlIHNvcnRpbmcgc3RhdGUgdGhhdCdzIGRlcml2ZWQgZnJvbSBVUkwgcGFyYW1ldGVyc1xuICBjb25zdCBbc29ydGluZ1N0YXRlLCBzZXRTb3J0aW5nU3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSkpO1xuXG4gIC8vIEtlZXAgaW50ZXJuYWwgc3RhdGUgc3luY2hyb25pemVkIHdpdGggVVJMIHBhcmFtZXRlcnNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXdTb3J0aW5nU3RhdGUgPSBwYXJzZVNvcnRpbmcoc29ydFBhcmFtKTtcbiAgICBzZXRTb3J0aW5nU3RhdGUobmV3U29ydGluZ1N0YXRlKTtcbiAgfSwgW3NvcnRQYXJhbV0pO1xuXG4gIC8vIFVwZGF0ZSBVUkwgd2hlbiBzb3J0aW5nIGNoYW5nZXMgZnJvbSB0aGUgVUlcbiAgY29uc3QgaGFuZGxlU29ydGluZ0NoYW5nZSA9IChuZXdTdGF0ZTogU29ydE9yZGVySXRlbVtdIHwgKChvbGQ6IFNvcnRPcmRlckl0ZW1bXSkgPT4gU29ydE9yZGVySXRlbVtdKSkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkU3RhdGUgPSB0eXBlb2YgbmV3U3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IG5ld1N0YXRlKHNvcnRpbmdTdGF0ZSkgOiBuZXdTdGF0ZTtcbiAgICBzZXRTb3J0aW5nU3RhdGUocmVzb2x2ZWRTdGF0ZSk7XG5cbiAgICAvLyBTZXJpYWxpemUgc29ydGluZyBzdGF0ZSB0byBVUkwgcGFyYW1ldGVyXG4gICAgY29uc3Qgc29ydFN0cmluZyA9XG4gICAgICByZXNvbHZlZFN0YXRlLmxlbmd0aCA+IDAgPyByZXNvbHZlZFN0YXRlLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgOiBudWxsO1xuXG4gICAgdm9pZCBzZXRTb3J0UGFyYW0oc29ydFN0cmluZyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzb3J0aW5nU3RhdGUsXG4gICAgc2V0U29ydGluZ1N0YXRlOiBoYW5kbGVTb3J0aW5nQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbkNlbGwgfSBmcm9tIFwiLi9Cb29sZWFuQ2VsbFwiO1xuaW1wb3J0IHR5cGUgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5pbXBvcnQgeyBEYXRlQ2VsbCB9IGZyb20gXCIuL0RhdGVDZWxsXCI7XG5pbXBvcnQgeyBFbXB0eUNlbGwgfSBmcm9tIFwiLi9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IEVudW1DZWxsIH0gZnJvbSBcIi4vRW51bUNlbGxcIjtcbmltcG9ydCB7IEpTT05DZWxsIH0gZnJvbSBcIi4vSlNPTkNlbGxcIjtcbmltcG9ydCB7IE51bGxDZWxsIH0gZnJvbSBcIi4vTnVsbENlbGxcIjtcbmltcG9ydCB7IE51bWVyaWNDZWxsIH0gZnJvbSBcIi4vTnVtZXJpY0NlbGxcIjtcbmltcG9ydCB7IFJhd0NlbGwgfSBmcm9tIFwiLi9SYXdDZWxsXCI7XG5pbXBvcnQgeyBUaW1lQ2VsbCB9IGZyb20gXCIuL1RpbWVDZWxsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZWxsKHtcbiAgY2VsbCxcbiAgY29sdW1uLFxuICBwcm9wcyxcbn06IHtcbiAgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIGNvbHVtbjogQ29sdW1uO1xuICBwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xufSkge1xuICBjb25zdCB2YWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiA8RW1wdHlDZWxsIC8+O1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIDxOdWxsQ2VsbCAvPjtcbiAgfVxuXG4gIGNvbnN0IHsgZ3JvdXAsIG9wdGlvbnMsIGlzQXJyYXkgfSA9IGNvbHVtbi5kYXRhdHlwZTtcblxuICBpZiAoZ3JvdXAgPT09IFwianNvblwiIHx8IGlzQXJyYXkpIHtcbiAgICByZXR1cm4gPEpTT05DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiA8UmF3Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gb3B0aW9ucz17b3B0aW9uc30gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIDxCb29sZWFuQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIHJldHVybiA8RGF0ZUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0NlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInJhd1wiKSB7XG4gICAgaWYgKGlzT2JqZWN0VHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiA8SlNPTkNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiA8UmF3Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZX0gLz47XG4gIH1cblxuICBncm91cCBzYXRpc2ZpZXMgbmV2ZXI7XG4gIHRocm93IG5ldyBFcnJvcihgRGF0YXR5cGUgZ3JvdXAgXCIke2dyb3VwIGFzIHN0cmluZ31cIiB3YXMgbm90IGhhbmRsZWQgaW4gJy9jZWxsL2dldC1jZWxsLnRzeCdgKTtcbn1cbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IEJvb2xlYW5DZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEJvb2xlYW5DZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJib29sZWFuXCI+e1N0cmluZyhCb29sZWFuKHZhbHVlKSl9PC9kaXY+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5Cb29sZWFuQ2VsbC5kaXNwbGF5TmFtZSA9IFwiQm9vbGVhbkNlbGxcIjtcblxuZXhwb3J0IHsgQm9vbGVhbkNlbGwgfTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgVGFibGUgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJlbGF0aXZlIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1hdXRvIHBzLWZsZXggcHMtaXRlbXMtc3RhcnQgcHMtaC1mdWxsXCI+XG4gICAgICA8dGFibGUgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy13LWZ1bGwgcHMtY2FwdGlvbi1ib3R0b20gcHMtdGV4dC1zbVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICAgPC9kaXY+XG4gICksXG4pO1xuVGFibGUuZGlzcGxheU5hbWUgPSBcIlRhYmxlXCI7XG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0aGVhZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRlclwiO1xuXG5jb25zdCBUYWJsZUJvZHkgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0Ym9keSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcIlsmX3RyOmxhc3QtY2hpbGRdOnBzLWJvcmRlci0wXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUJvZHkuZGlzcGxheU5hbWUgPSBcIlRhYmxlQm9keVwiO1xuXG5jb25zdCBUYWJsZUZvb3RlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRmb290XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1ib3JkZXItdCBwcy1iZy1tdXRlZC81MCBwcy1mb250LW1lZGl1bSBbJj50cl06bGFzdDpwcy1ib3JkZXItYi0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZUZvb3Rlci5kaXNwbGF5TmFtZSA9IFwiVGFibGVGb290ZXJcIjtcblxuY29uc3QgVGFibGVSb3cgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVJvd0VsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dHJcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1ib3JkZXItYiBwcy10cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjpwcy1iZy1tdXRlZC81MCBkYXRhLVtzdGF0ZT1zZWxlY3RlZF06cHMtYmctbXV0ZWRcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlUm93LmRpc3BsYXlOYW1lID0gXCJUYWJsZVJvd1wiO1xuXG5jb25zdCBUYWJsZUhlYWQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBSZWFjdC5UaEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRoXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLTEwIHBzLXB4LTIgcHMtdGV4dC1sZWZ0IHBzLWFsaWduLW1pZGRsZSBwcy1mb250LW1lZGl1bSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkXCI7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRkSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0ZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLWFsaWduLW1pZGRsZVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGFibGVDZWxsXCI7XG5cbmNvbnN0IFRhYmxlQ2FwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGNhcHRpb24gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy1tdC00IHBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUNhcHRpb24uZGlzcGxheU5hbWUgPSBcIlRhYmxlQ2FwdGlvblwiO1xuXG5leHBvcnQgeyBUYWJsZSwgVGFibGVIZWFkZXIsIFRhYmxlQm9keSwgVGFibGVGb290ZXIsIFRhYmxlSGVhZCwgVGFibGVSb3csIFRhYmxlQ2VsbCwgVGFibGVDYXB0aW9uIH07XG4iLCAiaW1wb3J0IHsgQ29weSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IGlzVmFsaWRFbGVtZW50LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0TWVudSwgQ29udGV4dE1lbnVDb250ZW50LCBDb250ZXh0TWVudUl0ZW0sIENvbnRleHRNZW51VHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudVwiO1xuXG5leHBvcnQgdHlwZSBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48b2JqZWN0PjtcblxuLy8gVE9ETzogVGhpcyBuZWVkcyB0byBiZSBpbnZlcnNpZmllZCAtIHRvIG1ha2UgaXQgZXh0ZW5zaWJsZSwgYW5kIGFkYXB0YWJsZSB0byBkaWZmZXJlbnQgc2l0dWF0aW9ucy5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZENlbGxDb250ZXh0TWVudShwcm9wczogRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0TWVudT5cbiAgICAgIDxDb250ZXh0TWVudVRyaWdnZXIgY2xhc3NOYW1lPVwicHMtYmxvY2sgcHMtdy1mdWxsIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV0gcHMtbGVhZGluZy1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtdGV4dC14cyBwcy1mb250LW1vbm8gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250ZXh0TWVudVRyaWdnZXI+XG4gICAgICA8Q29udGV4dE1lbnVDb250ZW50PlxuICAgICAgICA8Q29udGV4dE1lbnVJdGVtXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGV4dHJhY3RUZXh0Q29udGVudChjaGlsZHJlbik7XG4gICAgICAgICAgICB2b2lkIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnRlbnQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHkgdG8gY2xpcGJvYXJkOlwiLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxDb3B5IHNpemU9ezEyfSAvPlxuICAgICAgICAgIENvcHlcbiAgICAgICAgPC9Db250ZXh0TWVudUl0ZW0+XG4gICAgICA8L0NvbnRleHRNZW51Q29udGVudD5cbiAgICA8L0NvbnRleHRNZW51PlxuICApO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VGV4dENvbnRlbnQobm9kZTogUmVhY3ROb2RlKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBub2RlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBub2RlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBub2RlID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiBTdHJpbmcobm9kZSk7XG4gIH1cblxuICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChpc1ZhbGlkRWxlbWVudChub2RlKSkge1xuICAgIGNvbnN0IHByb3BzID0gbm9kZS5wcm9wcyBhcyB7IHRleHQ/OiBzdHJpbmc7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH07XG5cbiAgICAvLyBIYW5kbGUgUmV2ZWFsVGV4dCBjb21wb25lbnQgc3BlY2lmaWNhbGx5XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiUmV2ZWFsVGV4dFwiKSB7XG4gICAgICByZXR1cm4gcHJvcHMudGV4dCB8fCBcIlwiO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBOdWxsVmFsdWUgY29tcG9uZW50XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiTnVsbFZhbHVlXCIpIHtcbiAgICAgIHJldHVybiBcIk5VTExcIjtcbiAgICB9XG5cbiAgICAvLyBSZWN1cnNpdmVseSBleHRyYWN0IHRleHQgZnJvbSBjaGlsZHJlblxuICAgIGlmIChwcm9wcy5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGV4dHJhY3RUZXh0Q29udGVudChwcm9wcy5jaGlsZHJlbiBhcyBSZWFjdE5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5tYXAoZXh0cmFjdFRleHRDb250ZW50KS5qb2luKFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG4iLCAiaW1wb3J0ICogYXMgQ29udGV4dE1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0LW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDb250ZXh0TWVudSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IENvbnRleHRNZW51VHJpZ2dlciA9IENvbnRleHRNZW51UHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IENvbnRleHRNZW51R3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgQ29udGV4dE1lbnVQb3J0YWwgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvR3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YlRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0byBwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Db250ZXh0TWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVN1YkNvbnRlbnQuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcbkNvbnRleHRNZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Db250ZXh0TWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaXJjbGUgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1maWxsLWN1cnJlbnRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Db250ZXh0TWVudVJhZGlvSXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkIHBzLXRleHQtZm9yZWdyb3VuZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51TGFiZWwuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctYm9yZGVyXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTaG9ydGN1dCA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICk7XG59O1xuQ29udGV4dE1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiQ29udGV4dE1lbnVTaG9ydGN1dFwiO1xuXG5leHBvcnQge1xuICBDb250ZXh0TWVudSxcbiAgQ29udGV4dE1lbnVUcmlnZ2VyLFxuICBDb250ZXh0TWVudUNvbnRlbnQsXG4gIENvbnRleHRNZW51SXRlbSxcbiAgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0sXG4gIENvbnRleHRNZW51UmFkaW9JdGVtLFxuICBDb250ZXh0TWVudUxhYmVsLFxuICBDb250ZXh0TWVudVNlcGFyYXRvcixcbiAgQ29udGV4dE1lbnVTaG9ydGN1dCxcbiAgQ29udGV4dE1lbnVHcm91cCxcbiAgQ29udGV4dE1lbnVQb3J0YWwsXG4gIENvbnRleHRNZW51U3ViLFxuICBDb250ZXh0TWVudVN1YkNvbnRlbnQsXG4gIENvbnRleHRNZW51U3ViVHJpZ2dlcixcbiAgQ29udGV4dE1lbnVSYWRpb0dyb3VwLFxufTtcbiIsICJpbXBvcnQgeyB0eXBlIENTU1Byb3BlcnRpZXMsIERldGFpbGVkSFRNTFByb3BzLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlQ2VsbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IERhdGFHcmlkQ2VsbENvbnRleHRNZW51IH0gZnJvbSBcIi4uL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDZWxsUHJvcHMgZXh0ZW5kcyBQcm9wc1dpdGhDaGlsZHJlbiwgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8dW5rbm93bj4sIHVua25vd24+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDZWxsKHByb3BzOiBDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCByZWYsIHN0eWxlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVDZWxsXG4gICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXAtMCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgICAgICAvLyBcImRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctMiBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluZGlnby00MDAgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbnNldFwiLFxuICAgICAgICBcInBzLWN1cnNvci1wb2ludGVyXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICA+XG4gICAgICA8RGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+e2NoaWxkcmVufTwvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnU+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyO1xufVxuXG5jb25zdCBEYXRlQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBEYXRlQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkRhdGVDZWxsLmRpc3BsYXlOYW1lID0gXCJEYXRlQ2VsbFwiO1xuXG5leHBvcnQgeyBEYXRlQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuY29uc3QgRW1wdHlDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEVtcHR5Q2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9IC8+O1xufSk7XG5FbXB0eUNlbGwuZGlzcGxheU5hbWUgPSBcIkVtcHR5Q2VsbFwiO1xuXG5leHBvcnQgeyBFbXB0eUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuY29uc3QgRW51bUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogRW51bUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCBvcHRpb25zLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5FbnVtQ2VsbC5kaXNwbGF5TmFtZSA9IFwiRW51bUNlbGxcIjtcblxuZXhwb3J0IHsgRW51bUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpTT05DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdO1xufVxuXG5jb25zdCBKU09OQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBKU09OQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7SlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuSlNPTkNlbGwuZGlzcGxheU5hbWUgPSBcIkpTT05DZWxsXCI7XG5cbmV4cG9ydCB7IEpTT05DZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOdWxsQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59XG5cbmNvbnN0IE51bGxDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IE51bGxDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAgPGNvZGUgY2xhc3NOYW1lPVwicHMtdGV4dC1ncmF5LTUwMFwiPk5VTEw8L2NvZGU+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5OdWxsQ2VsbC5kaXNwbGF5TmFtZSA9IFwiTnVsbENlbGxcIjtcblxuZXhwb3J0IHsgTnVsbENlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IE51bWVyaWNDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IE51bWVyaWNDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJudW1lcmljXCI+e3ZhbHVlID09PSBudWxsID8gXCJOVUxMXCIgOiBTdHJpbmcodmFsdWUpfTwvZGl2PlxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuTnVtZXJpY0NlbGwuZGlzcGxheU5hbWUgPSBcIk51bWVyaWNDZWxsXCI7XG5cbmV4cG9ydCB7IE51bWVyaWNDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSYXdDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IFJhd0NlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogUmF3Q2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcblJhd0NlbGwuZGlzcGxheU5hbWUgPSBcIlJhd0NlbGxcIjtcblxuZXhwb3J0IHsgUmF3Q2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuY29uc3QgVGltZUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogVGltZUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5UaW1lQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGltZUNlbGxcIjtcblxuZXhwb3J0IHsgVGltZUNlbGwgfTtcbiIsICJpbXBvcnQgeyBSb3cgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5pbXBvcnQgeyBDZWxsIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdFJvd0NlbGxQcm9wcyB7XG4gIHJvdzogUm93PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuY29uc3QgU2VsZWN0Um93Q2VsbCA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIFNlbGVjdFJvd0NlbGxQcm9wcz4oKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyByb3csIHJlYWRvbmx5LCAuLi5yZXN0IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHJlZj17cmVmfSB7Li4ucmVzdH0+XG4gICAgICA8Q2hlY2tib3hcbiAgICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgICAgZGlzYWJsZWQ9eyFyb3cuZ2V0Q2FuU2VsZWN0KCkgfHwgcmVhZG9ubHl9XG4gICAgICAgIG9uQ2hlY2tlZENoYW5nZT17cm93LmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcigpfVxuICAgICAgLz5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcblxuU2VsZWN0Um93Q2VsbC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0Um93Q2VsbFwiO1xuXG5leHBvcnQgeyBTZWxlY3RSb3dDZWxsIH07XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5pbnRlcmZhY2UgUG9wb3ZlckNlbGxDb250ZXh0VmFsdWUge1xuICBvcGVuOiBib29sZWFuO1xuICBzZXRPcGVuOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBQb3BvdmVyQ2VsbCA9ICh7IGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBQb3BvdmVyUHJpbWl0aXZlLlBvcG92ZXJQcm9wcykgPT4ge1xuICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IG9wZW4sIHNldE9wZW4gfX0+XG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5Sb290IG9wZW49e29wZW59IG9uT3BlbkNoYW5nZT17c2V0T3Blbn0gey4uLnByb3BzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Qb3BvdmVyUHJpbWl0aXZlLlJvb3Q+XG4gICAgPC9Qb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuUG9wb3ZlckNlbGwuZGlzcGxheU5hbWUgPSBcIlBvcG92ZXJDZWxsXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbFRyaWdnZXJQcm9wcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiB7XG4gIG9uRG91YmxlQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj4sIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzPihcbiAgKHsgY2hpbGRyZW4sIG9uRG91YmxlQ2xpY2ssIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgLy8gY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcbiAgICAvLyBjb25zdCBbaXNGb2N1c2VkLCBzZXRJc0ZvY3VzZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuXG4gICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgIC8vIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICBjb25zdCBoYW5kbGVEb2N1bWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgLy8gICAgIGlmICh0cmlnZ2VyUmVmLmN1cnJlbnQgJiYgIXRyaWdnZXJSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgLy8gICAgICAgLy8gY29uc29sZS5sb2coXCJPdXRzaWRlIGNsaWNrIC0gcmVtb3ZpbmcgZm9jdXNcIik7XG4gICAgLy8gICAgICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfTtcblxuICAgIC8vICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAvLyB9LCBbXSk7XG5cbiAgICAvLyBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgLy8gICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgLy8gICBzZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gICAgLy8gICBjb250ZXh0Py5zZXRPcGVuKHRydWUpO1xuXG4gICAgLy8gICBpZiAoZS5kZXRhaWwgPT09IDIgJiYgb25Eb3VibGVDbGljaykge1xuICAgIC8vICAgICBvbkRvdWJsZUNsaWNrKCk7XG4gICAgLy8gICB9XG4gICAgLy8gfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgICAgIHJlZj17KG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gXCJmdW5jdGlvblwiKSByZWYobm9kZSk7XG4gICAgICAgICAgZWxzZSBpZiAocmVmKSByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPIG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZFxuICAgICAgICAgIHRyaWdnZXJSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH19XG4gICAgICAgIC8vIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAvLyBkYXRhLWZvY3VzPXtpc0ZvY3VzZWQudG9TdHJpbmcoKX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcInctZnVsbCBoLWZ1bGwgY3Vyc29yLXBvaW50ZXJcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj5cbiAgICApO1xuICB9LFxuKTtcblBvcG92ZXJDZWxsVHJpZ2dlci5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxUcmlnZ2VyXCI7XG5cbmNvbnN0IFBvcG92ZXJDZWxsQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yIHBzLXotNTAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMlwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgLy8gd2UgYXJlIGhhbmRsaW5nIHRoaXMgb3Vyc2VsdmVzLCBkbyBub3QgbGV0IHJhZGl4IHRha2Ugb3ZlclxuICAgICAgb25Fc2NhcGVLZXlEb3duPXsoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNlbGxDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUG9wb3ZlckFjdGlvbnMoYWN0aW9uczoge1xuICBvblNhdmU/OiAoKSA9PiBib29sZWFuIHwgdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25TYXZlKSB7XG4gICAgICBhY3Rpb25zLm9uU2F2ZSgpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH0sIFthY3Rpb25zLm9uU2F2ZSwgY29udGV4dF0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWN0aW9ucy5yZWFkb25seSkge1xuICAgICAgY29udGV4dD8uc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICAgIGlmIChhY3Rpb25zLm9uQ2FuY2VsKSB7XG4gICAgICBhY3Rpb25zLm9uQ2FuY2VsKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25DYW5jZWwsIGNvbnRleHRdKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIC8vIGNoZWNrIGlmIGVudGVyIGlzIHByZXNzZWQgYW5kIHByZXNzZWQgd2l0aG91dCBzaGlmdFxuICAgICAgaWYgKChldmVudC5rZXkgPT09IFwiRW50ZXJcIiB8fCBldmVudC5rZXkgPT09IFwiUmV0dXJuXCIpICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICBoYW5kbGVTYXZlKCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICBoYW5kbGVDYW5jZWwoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gIH0sIFtoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWxdKTtcblxuICByZXR1cm4geyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfTtcbn1cblxuZXhwb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsVHJpZ2dlciwgUG9wb3ZlckNlbGxDb250ZW50IH07XG4iLCAiaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsQ29udGVudCwgUG9wb3ZlckNlbGxUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGVhYmxlQ2VsbFByb3BzIHtcbiAgY2VsbENvbXBvbmVudDogUmVhY3ROb2RlO1xuICBpbnB1dENvbXBvbmVudDogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gV3JpdGVhYmxlQ2VsbChwcm9wczogV3JpdGVhYmxlQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgY2VsbENvbXBvbmVudCwgaW5wdXRDb21wb25lbnQgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFBvcG92ZXJDZWxsPlxuICAgICAgPFBvcG92ZXJDZWxsVHJpZ2dlciBhc0NoaWxkPntjZWxsQ29tcG9uZW50fTwvUG9wb3ZlckNlbGxUcmlnZ2VyPlxuICAgICAgPFBvcG92ZXJDZWxsQ29udGVudFxuICAgICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICAgICAgYWxpZ25PZmZzZXQ9ey0xfVxuICAgICAgICBjbGFzc05hbWU9XCJwcy1taW4tdy1jZWxsIHBzLXJvdW5kZWQtbm9uZSBwcy1iZy1tdXRlZCBwcy1wLTAgcHMtei0zMCBwcy1nYXAtMCBwcy1ib3JkZXItYmx1ZS01MDAgcHMtbWluLXctW2NhbGModmFyKC0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLXdpZHRoKSArIDFweCldXCJcbiAgICAgICAgc2lkZU9mZnNldD17LTQwfVxuICAgICAgPlxuICAgICAgICB7aW5wdXRDb21wb25lbnR9XG4gICAgICA8L1BvcG92ZXJDZWxsQ29udGVudD5cbiAgICA8L1BvcG92ZXJDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7XG4gIGNsb3Nlc3RDZW50ZXIsXG4gIERuZENvbnRleHQsXG4gIHR5cGUgRHJhZ0VuZEV2ZW50LFxuICBEcmFnT3ZlcmxheSxcbiAgdHlwZSBEcmFnU3RhcnRFdmVudCxcbiAgS2V5Ym9hcmRTZW5zb3IsXG4gIFBvaW50ZXJTZW5zb3IsXG4gIHR5cGUgVW5pcXVlSWRlbnRpZmllcixcbiAgdXNlU2Vuc29yLFxuICB1c2VTZW5zb3JzLFxufSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHtcbiAgYXJyYXlNb3ZlLFxuICBTb3J0YWJsZUNvbnRleHQsXG4gIHNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyxcbiAgdXNlU29ydGFibGUsXG4gIHZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSxcbn0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBDaGV2cm9uRG93biwgQ2hldnJvblJpZ2h0LCBHcmlwVmVydGljYWwsIEhlbHBDaXJjbGUsIFggfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW5GaWx0ZXIsIEZpbHRlckdyb3VwLCBGaWx0ZXJPcGVyYXRvciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IGNvZXJjZVRvU3RyaW5nLCBjb2VyY2VUb1ZhbHVlIH0gZnJvbSBcIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgRHJvcGRvd25NZW51LCBEcm9wZG93bk1lbnVDb250ZW50LCBEcm9wZG93bk1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbmNvbnN0IExlYWRpbmdPcGVyYXRvclNlbGVjdCA9ICh7XG4gIHZhbHVlLFxuICBvblZhbHVlQ2hhbmdlLFxuICBkaXNhYmxlZCxcbiAgdHJpZ2dlckNsYXNzTmFtZSA9IFwicHMtdy0yMCBwcy10ZXh0LXhzIHBzLWgtOFwiLFxufToge1xuICB2YWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uVmFsdWVDaGFuZ2U6ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0cmlnZ2VyQ2xhc3NOYW1lPzogc3RyaW5nO1xufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTZWxlY3QgdmFsdWU9e3ZhbHVlfSBvblZhbHVlQ2hhbmdlPXtvblZhbHVlQ2hhbmdlfSBkaXNhYmxlZD17ZGlzYWJsZWR9PlxuICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPXt0cmlnZ2VyQ2xhc3NOYW1lfT5cbiAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiTG9naWNcIiAvPlxuICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiYW5kXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+QU5EPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPk9SPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICA8L1NlbGVjdD5cbiAgKTtcbn07XG5cbi8vIFJlbmRlcnMgdGhlIHByZXZpZXcgb2YgdGhlIGl0ZW0gYmVpbmcgZHJhZ2dlZCBpbiB0aGUgRHJhZ092ZXJsYXkuXG5jb25zdCBEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyA9ICh7XG4gIGFjdGl2ZUlkLFxuICBpdGVtcyxcbiAgdGFibGUsXG59OiB7XG4gIGFjdGl2ZUlkOiBVbmlxdWVJZGVudGlmaWVyO1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICB0YWJsZTogVGFibGU7XG59KSA9PiB7XG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG4gIGlmICghYWN0aXZlSXRlbSkgcmV0dXJuIG51bGw7XG5cbiAgbGV0IGxlYWRpbmdPcGVyYXRvclZhbHVlOiBcImFuZFwiIHwgXCJvclwiID0gXCJhbmRcIjsgLy8gRGVmYXVsdFxuICBsZXQgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSBmYWxzZTtcbiAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG5cbiAgaWYgKGFjdGl2ZUl0ZW1JbmRleCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0l0ZW0gPSBpdGVtc1thY3RpdmVJdGVtSW5kZXggLSAxXTtcbiAgICBpZiAocHJldmlvdXNJdGVtKSB7XG4gICAgICAvLyAnYWZ0ZXInIGZyb20gdGhlIHByZXZpb3VzIGl0ZW0gZGV0ZXJtaW5lcyB0aGUgb3BlcmF0b3IgbGVhZGluZyBpbnRvIHRoZSBjdXJyZW50IGl0ZW1cbiAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlID0gcHJldmlvdXNJdGVtLmFmdGVyO1xuICAgICAgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhY3RpdmVJdGVtLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICBmaWx0ZXI9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIHVwZGF0ZXNcbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fSAvLyBPdmVybGF5IGlzIG5vbi1pbnRlcmFjdGl2ZSBmb3IgZGVsZXRlc1xuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX0gLy8gTm9uLWludGVyYWN0aXZlXG4gICAgICAvPlxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudFxuICAgICAgICBncm91cD17YWN0aXZlSXRlbX1cbiAgICAgICAgb25VcGRhdGU9eygpID0+IHt9fVxuICAgICAgICBvbkRlbGV0ZT17KCkgPT4ge319XG4gICAgICAgIGlzUm9vdD17ZmFsc2V9IC8vIERyYWdnZWQgaXRlbSBpbiBvdmVybGF5IGlzIG5vdCB0aGUgcm9vdFxuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX1cbiAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtmYWxzZX0gLy8gTm9uLWludGVyYWN0aXZlIGZvciBwcmV2aWV3XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn07XG5cbi8vIE1hbmFnZXMgRE5EIGNvbnRleHQgYW5kIHJlbmRlcmluZyBvZiBzb3J0YWJsZSBmaWx0ZXIgaXRlbXMgZm9yIGEgZ3JvdXAuXG5jb25zdCBGaWx0ZXJMaXN0SXRlbXMgPSAoe1xuICBpdGVtcyxcbiAgcGFyZW50R3JvdXBJZCxcbiAgdGFibGUsXG4gIG9uVXBkYXRlSXRlbSxcbiAgb25EZWxldGVJdGVtLFxuICBvblJlb3JkZXJJdGVtcyxcbiAgYWN0aXZlRHJhZ0lkLFxuICBvbkRyYWdTdGFydCxcbiAgb25EcmFnRW5kU2lnbmFsLFxufToge1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICBwYXJlbnRHcm91cElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIG9uVXBkYXRlSXRlbTogKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRJdGVtOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGVJdGVtOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25SZW9yZGVySXRlbXM6IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBhY3RpdmVEcmFnSWQ6IFVuaXF1ZUlkZW50aWZpZXIgfCBudWxsO1xuICBvbkRyYWdTdGFydDogKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4gdm9pZDtcbiAgb25EcmFnRW5kU2lnbmFsOiAoKSA9PiB2b2lkOyAvLyBDYWxsYmFjayB0byBzaWduYWwgZHJhZyBvcGVyYXRpb24gY29tcGxldGlvblxufSkgPT4ge1xuICBjb25zdCBzb3J0YWJsZUl0ZW1JZHMgPSB1c2VNZW1vKCgpID0+IGl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCksIFtpdGVtc10pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhcbiAgICB1c2VTZW5zb3IoUG9pbnRlclNlbnNvciwgeyBhY3RpdmF0aW9uQ29uc3RyYWludDogeyBkaXN0YW5jZTogOCB9IH0pLFxuICAgIHVzZVNlbnNvcihLZXlib2FyZFNlbnNvciwgeyBjb29yZGluYXRlR2V0dGVyOiBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMgfSksXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlSW50ZXJuYWxEcmFnRW5kID0gKGV2ZW50OiBEcmFnRW5kRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IGFjdGl2ZSwgb3ZlciB9ID0gZXZlbnQ7XG4gICAgaWYgKG92ZXIgJiYgYWN0aXZlLmlkICE9PSBvdmVyLmlkKSB7XG4gICAgICBjb25zdCBvbGRJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlLmlkKTtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBvdmVyLmlkKTtcbiAgICAgIGlmIChvbGRJbmRleCAhPT0gLTEgJiYgbmV3SW5kZXggIT09IC0xKSB7XG4gICAgICAgIG9uUmVvcmRlckl0ZW1zKG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICAgIG9uRHJhZ0VuZFNpZ25hbCgpOyAvLyBTaWduYWwgdG8gcGFyZW50IHRoYXQgZHJhZyBoYXMgZW5kZWQgKGUuZy4sIHRvIGNsZWFyIGFjdGl2ZURyYWdJZClcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxEbmRDb250ZXh0XG4gICAgICBzZW5zb3JzPXtzZW5zb3JzfVxuICAgICAgY29sbGlzaW9uRGV0ZWN0aW9uPXtjbG9zZXN0Q2VudGVyfVxuICAgICAgb25EcmFnU3RhcnQ9e29uRHJhZ1N0YXJ0fVxuICAgICAgb25EcmFnRW5kPXtoYW5kbGVJbnRlcm5hbERyYWdFbmR9XG4gICAgPlxuICAgICAgPFNvcnRhYmxlQ29udGV4dCBpdGVtcz17c29ydGFibGVJdGVtSWRzfSBzdHJhdGVneT17dmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5fT5cbiAgICAgICAge2l0ZW1zLm1hcCgoY3VycmVudEZpbHRlckl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHNob3dMZWFkaW5nT3AgPSBmYWxzZTtcbiAgICAgICAgICBsZXQgbGVhZGluZ09wVmFsOiBcImFuZFwiIHwgXCJvclwiIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBvbkxlYWRpbmdPcENoYW5nZUZuOiAoKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICBzaG93TGVhZGluZ09wID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZJdGVtID0gaXRlbXNbaW5kZXggLSAxXSE7XG4gICAgICAgICAgICBsZWFkaW5nT3BWYWwgPSBwcmV2SXRlbS5hZnRlcjtcbiAgICAgICAgICAgIG9uTGVhZGluZ09wQ2hhbmdlRm4gPSAobmV3VmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByZXZJdGVtID0geyAuLi5wcmV2SXRlbSwgYWZ0ZXI6IG5ld1ZhbHVlIH07XG4gICAgICAgICAgICAgIG9uVXBkYXRlSXRlbShpbmRleCAtIDEsIHVwZGF0ZWRQcmV2SXRlbSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gaW5kZXggLSAxID09PSBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U29ydGFibGVGaWx0ZXJJdGVtXG4gICAgICAgICAgICAgIGtleT17Y3VycmVudEZpbHRlckl0ZW0uaWR9XG4gICAgICAgICAgICAgIGZpbHRlcj17Y3VycmVudEZpbHRlckl0ZW19XG4gICAgICAgICAgICAgIG9uVXBkYXRlPXsodXBkYXRlZEZpbHRlcikgPT4gb25VcGRhdGVJdGVtKGluZGV4LCB1cGRhdGVkRmlsdGVyKX1cbiAgICAgICAgICAgICAgb25EZWxldGU9eygpID0+IG9uRGVsZXRlSXRlbShpbmRleCl9XG4gICAgICAgICAgICAgIHBhcmVudERuZElkPXtwYXJlbnRHcm91cElkfVxuICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3B9XG4gICAgICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BWYWx9XG4gICAgICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcENoYW5nZUZufVxuICAgICAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgIHtjcmVhdGVQb3J0YWwoXG4gICAgICAgIDxEcmFnT3ZlcmxheT5cbiAgICAgICAgICB7YWN0aXZlRHJhZ0lkID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1vcGFjaXR5LTgwXCI+XG4gICAgICAgICAgICAgIDxEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyBhY3RpdmVJZD17YWN0aXZlRHJhZ0lkfSBpdGVtcz17aXRlbXN9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L0RyYWdPdmVybGF5PixcbiAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICl9XG4gICAgPC9EbmRDb250ZXh0PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNvcnRhYmxlIGZpbHRlciBpdGVtXG5jb25zdCBTb3J0YWJsZUZpbHRlckl0ZW0gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgcGFyZW50RG5kSWQsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cDtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIHBhcmVudERuZElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGZpbHRlci5pZCxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiBmaWx0ZXIua2luZCxcbiAgICAgIHBhcmVudElkOiBwYXJlbnREbmRJZCxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIG9wYWNpdHk6IGlzRHJhZ2dpbmcgPyAwLjUgOiAxLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3NldE5vZGVSZWZ9IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtZ2FwLTJcIj5cbiAgICAgIHtmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIiA/IChcbiAgICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApIDogKFxuICAgICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgICBncm91cD17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNpbmdsZSBmaWx0ZXIgY29uZGl0aW9uXG5jb25zdCBGaWx0ZXJDb25kaXRpb24gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlcikgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlQ29sdW1uQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgY29sdW1uOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVyYXRvckNoYW5nZSA9ICh2YWx1ZTogRmlsdGVyT3BlcmF0b3IpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgb3BlcmF0b3I6IHZhbHVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICBjb25zdCBjb2x1bW5JbmZvID0gdGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXTtcblxuICAgIGlmIChjb2x1bW5JbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlVG9WYWx1ZShjb2x1bW5JbmZvLCBmaWx0ZXIub3BlcmF0b3IsIHJhd1ZhbHVlKTtcblxuICAgICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIHZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgW2VkaXRlZFZhbHVlLCBzZXRFZGl0ZWRWYWx1ZV0gPSB1c2VTdGF0ZShcbiAgICBjb2VyY2VUb1N0cmluZyh0YWJsZS5jb2x1bW5zW2ZpbHRlci5jb2x1bW5dLCBmaWx0ZXIub3BlcmF0b3IsIGZpbHRlci52YWx1ZSksXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdlxuICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCJcbiAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCI+XG4gICAgICAgICAgPEdyaXBWZXJ0aWNhbCBjbGFzc05hbWU9XCJwcy10ZXh0LWdyYXktNTAwXCIgc2l6ZT17MTZ9IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICB7c2hvd0xlYWRpbmdPcGVyYXRvciAmJiBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSA/IChcbiAgICAgICAgICAgIDxMZWFkaW5nT3BlcmF0b3JTZWxlY3RcbiAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIuY29sdW1ufSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVDb2x1bW5DaGFuZ2V9PlxuICAgICAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdy0yOCBwcy10ZXh0LXhzIHBzLWgtOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY29sdW1uXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICB7T2JqZWN0LmtleXModGFibGUuY29sdW1ucykubWFwKChjb2x1bW4pID0+IChcbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e2NvbHVtbn0gdmFsdWU9e2NvbHVtbn0+XG4gICAgICAgICAgICAgICAgICB7Y29sdW1ufVxuICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIub3BlcmF0b3J9IG9uVmFsdWVDaGFuZ2U9eyh2YWx1ZSkgPT4gaGFuZGxlT3BlcmF0b3JDaGFuZ2UodmFsdWUgYXMgRmlsdGVyT3BlcmF0b3IpfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiT3BlcmF0b3JcIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPVwiPj08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiIT1cIj4hPTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+XCI+Jmd0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+PVwiPiZndDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjxcIj4mbHQ7PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjw9XCI+Jmx0Oz08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXNcIj5pczwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpcyBub3RcIj5pcyBub3Q8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibGlrZVwiPmxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm90IGxpa2VcIj5ub3QgbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpbGlrZVwiPmlsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBpbGlrZVwiPm5vdCBpbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICA8L1NlbGVjdD5cblxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgdmFsdWU9e2VkaXRlZFZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgIHNldEVkaXRlZFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UoZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy13LTI0IHBzLXRleHQteHMgcHMtaC04XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBmaWx0ZXIgZ3JvdXAgKEFORC9PUilcbmNvbnN0IEZpbHRlckdyb3VwQ29tcG9uZW50ID0gKHtcbiAgZ3JvdXAsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICBpc1Jvb3QgPSBmYWxzZSxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBncm91cDogRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEdyb3VwOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgaXNSb290PzogYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFthY3RpdmVEcmFnSWQsIHNldEFjdGl2ZURyYWdJZF0gPSB1c2VTdGF0ZTxVbmlxdWVJZGVudGlmaWVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQWRkRmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcjogQ29sdW1uRmlsdGVyID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkNvbHVtbkZpbHRlclwiLFxuICAgICAgY29sdW1uOiBPYmplY3Qua2V5cyh0YWJsZS5jb2x1bW5zKVswXSEsXG4gICAgICBvcGVyYXRvcjogXCI9XCIsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgfTtcblxuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IFsuLi5ncm91cC5maWx0ZXJzLCBuZXdGaWx0ZXJdIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFkZEdyb3VwID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0dyb3VwOiBGaWx0ZXJHcm91cCA9IHtcbiAgICAgIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxuICAgICAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICAgICAgZmlsdGVyczogW10sXG4gICAgICBhZnRlcjogXCJhbmRcIixcbiAgICB9O1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogWy4uLmdyb3VwLmZpbHRlcnMsIG5ld0dyb3VwXSB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVJdGVtSW5Hcm91cCA9IChpbmRleDogbnVtYmVyLCB1cGRhdGVkRmlsdGVyT3JHcm91cDogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gWy4uLmdyb3VwLmZpbHRlcnNdO1xuICAgIG5ld0ZpbHRlcnNbaW5kZXhdID0gdXBkYXRlZEZpbHRlck9yR3JvdXA7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBkZWxldGVJdGVtRnJvbUdyb3VwID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gWy4uLmdyb3VwLmZpbHRlcnNdO1xuICAgIG5ld0ZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBuZXdGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IChldmVudDogRHJhZ1N0YXJ0RXZlbnQpID0+IHtcbiAgICBzZXRBY3RpdmVEcmFnSWQoZXZlbnQuYWN0aXZlLmlkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEcmFnRW5kU2lnbmFsID0gKCkgPT4ge1xuICAgIHNldEFjdGl2ZURyYWdJZChudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVSZW9yZGVySXRlbXMgPSAob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmIChvbGRJbmRleCA9PT0gbmV3SW5kZXgpIHJldHVybjtcbiAgICBjb25zdCByZW9yZGVyZWRGaWx0ZXJzID0gYXJyYXlNb3ZlKGdyb3VwLmZpbHRlcnMsIG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogcmVvcmRlcmVkRmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJHcm91cENvbnRlbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0V4cGFuZGVkKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIWdyb3VwLmZpbHRlcnMgfHwgZ3JvdXAuZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcGwtNiBwcy10ZXh0LXNtIHBzLXRleHQtbmV1dHJhbC01MDAgcHMtaXRhbGljXCI+XG4gICAgICAgICAgVGhpcyBncm91cCBpcyBlbXB0eS4gQWRkIGEgZmlsdGVyIG9yIGFub3RoZXIgZ3JvdXAuXG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPG1vdGlvbi5kaXYgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1yZWxhdGl2ZSBwcy1nYXAtMlwiLCBpc1Jvb3QgPyBcIlwiIDogXCJwcy1wYi0yXCIpfT5cbiAgICAgICAgICA8RmlsdGVyTGlzdEl0ZW1zXG4gICAgICAgICAgICBpdGVtcz17Z3JvdXAuZmlsdGVyc31cbiAgICAgICAgICAgIHBhcmVudEdyb3VwSWQ9e2dyb3VwLmlkfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgb25VcGRhdGVJdGVtPXt1cGRhdGVJdGVtSW5Hcm91cH1cbiAgICAgICAgICAgIG9uRGVsZXRlSXRlbT17ZGVsZXRlSXRlbUZyb21Hcm91cH1cbiAgICAgICAgICAgIG9uUmVvcmRlckl0ZW1zPXtoYW5kbGVSZW9yZGVySXRlbXN9XG4gICAgICAgICAgICBhY3RpdmVEcmFnSWQ9e2FjdGl2ZURyYWdJZH1cbiAgICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgICBvbkRyYWdFbmRTaWduYWw9e2hhbmRsZURyYWdFbmRTaWduYWx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21vdGlvbi5kaXY+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxtb3Rpb24uZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctZnVsbFwiLCBpc0V4cGFuZGVkID8gXCJwcy1nYXAtMlwiIDogXCJcIil9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLCBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnNcbiAgICAgICAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfT5cbiAgICAgICAgICAgICAgICB7aXNFeHBhbmRlZCA/IDxDaGV2cm9uRG93biBzaXplPXsxNn0gLz4gOiA8Q2hldnJvblJpZ2h0IHNpemU9ezE2fSAvPn1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7c2hvd0xlYWRpbmdPcGVyYXRvciAmJiBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSAmJiAhaXNSb290ICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxMZWFkaW5nT3BlcmF0b3JTZWxlY3RcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBZGRGaWx0ZXJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBvdmVyZmxvdy1oaWRkZW4gcHMtdHJhbnNpdGlvbi1hbGxcIil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFkZCBGaWx0ZXJcbiAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPEJhZGdlIGNsYXNzTmFtZT1cInBzLXRyYW5zaXRpb24tYWxsXCI+XG4gICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19Pntncm91cC5maWx0ZXJzLmxlbmd0aH08L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17aGFuZGxlQWRkR3JvdXB9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xXCI+XG4gICAgICAgICAgICAgIEFkZCBHcm91cFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAge2lzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxIZWxwQ2lyY2xlIGNsYXNzTmFtZT1cInBzLXNpemUtNFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQgYWxpZ249XCJjZW50ZXJcIiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIHtncm91cC5maWx0ZXJzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wLTQgcHMtdGV4dC1jZW50ZXIgcHMtdGV4dC1zbSBwcy10ZXh0LW5ldXRyYWwtNjAwIHBzLWZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAgICAgICAgIE5vIGZpbHRlcnMgYXBwbGllZCB5ZXQuIEFkZCBmaWx0ZXJzIHRvIHByZXZpZXcgeW91ciBxdWVyeS5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtMiBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLWJnLW5ldXRyYWwtMTAwIHBzLXJvdW5kZWQtc21cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UXVlcnlWaXN1YWxpemVyIGZpbHRlcj17Z3JvdXB9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHshaXNSb290ICYmIChcbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwieHNcIiBvbkNsaWNrPXtvbkRlbGV0ZX0+XG4gICAgICAgICAgICAgICAgPFggc2l6ZT17MTR9IC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihpc1Jvb3QgPyBcIlwiIDogXCJwcy1tbC02XCIpfT57cmVuZGVyR3JvdXBDb250ZW50KCl9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21vdGlvbi5kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgdG8gdmlzdWFsaXplIHRoZSBxdWVyeSBzdHJpbmdcbmNvbnN0IFF1ZXJ5VmlzdWFsaXplciA9ICh7IGZpbHRlciB9OiB7IGZpbHRlcjogRmlsdGVyR3JvdXAgfSk6IFJlYWN0Tm9kZSA9PiB7XG4gIGxldCBpc0FuZEdyb3VwT3BlbiA9IDA7XG5cbiAgaWYgKGZpbHRlci5maWx0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiKCApXCI7XG5cbiAgY29uc3QgZ3JvdXAgPSBmaWx0ZXIuZmlsdGVycy5tYXAoKGYsIGkpID0+IHtcbiAgICBsZXQgcmVzdWx0OiBSZWFjdE5vZGU7XG4gICAgY29uc3QgaXNMYXN0ID0gZmlsdGVyLmZpbHRlcnMubGVuZ3RoIC0gMSA9PT0gaTtcblxuICAgIGlmIChpc0FuZEdyb3VwT3BlbiA9PT0gLTEpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuID0gMDtcbiAgICB9XG5cbiAgICBpZiAoZi5hZnRlciA9PT0gXCJhbmRcIiAmJiAhaXNMYXN0KSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiArPSAxO1xuICAgIH1cbiAgICBpZiAoaXNBbmRHcm91cE9wZW4gJiYgKGlzTGFzdCB8fCBmLmFmdGVyID09PSBcIm9yXCIpKSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiA9IC0xO1xuICAgIH1cblxuICAgIGlmIChmLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICAgIGNvbnN0IHsgY29sdW1uLCBvcGVyYXRvciB9ID0gZjtcblxuICAgICAgcmVzdWx0ID0gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxzcGFuPiB7Y29sdW1ufSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+IHtvcGVyYXRvcn0gPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPiA/IDwvc3Bhbj5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSA8UXVlcnlWaXN1YWxpemVyIGZpbHRlcj17Zn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGcmFnbWVudCBrZXk9e2YuaWR9PlxuICAgICAgICB7aXNBbmRHcm91cE9wZW4gPT09IDEgPyA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+KDwvc3Bhbj4gOiBcIlwifVxuICAgICAgICB7cmVzdWx0fVxuICAgICAgICB7aXNBbmRHcm91cE9wZW4gPT09IC0xID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPik8L3NwYW4+IDogXCJcIn1cbiAgICAgICAgeyFpc0xhc3QgJiYgPHNwYW4gY2xhc3NOYW1lPVwicHMtdXBwZXJjYXNlIHBzLXRleHQtYmx1ZS01MDAgcHMtZm9udC1zZW1pYm9sZFwiPiB7Zi5hZnRlcn0gPC9zcGFuPn1cbiAgICAgIDwvRnJhZ21lbnQ+XG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuIDxzcGFuPntncm91cH08L3NwYW4+O1xufTtcblxuLy8gTWFpbiBjb21wb25lbnRcbmV4cG9ydCBmdW5jdGlvbiBGaWx0ZXJUcmVlKHtcbiAgZmlsdGVyLFxuICBzZXRGaWx0ZXIsXG4gIHRhYmxlLFxufToge1xuICBmaWx0ZXI6IEZpbHRlckdyb3VwO1xuICBzZXRGaWx0ZXI6ICh1cGRhdGVkRmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgdGFibGU6IFRhYmxlO1xufSkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgZ3JvdXA9e2ZpbHRlcn1cbiAgICAgICAgb25VcGRhdGU9e3NldEZpbHRlcn1cbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fSAvLyBSb290IGNhbm5vdCBiZSBkZWxldGVkXG4gICAgICAgIGlzUm9vdD17dHJ1ZX1cbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENvbHVtbiwgRmlsdGVyT3BlcmF0b3IgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VUb1ZhbHVlKGNvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkLCBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsIHZhbHVlOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgY29uc3QgZGF0YVR5cGVHcm91cCA9IGNvbHVtbj8uZGF0YXR5cGUuZ3JvdXA7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKG9wZXJhdG9yID09PSBcImlzXCIgfHwgb3BlcmF0b3IgPT09IFwiaXMgbm90XCIpIHtcbiAgICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJudWxsXCIgPyBudWxsIDogdmFsdWU7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJib29sZWFuXCIpIHJldHVybiB2YWx1ZSA9PT0gXCJ0cnVlXCI7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImRhdGV0aW1lXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZW51bVwiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInJhd1wiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInN0cmluZ1wiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInRpbWVcIikgcmV0dXJuIHZhbHVlO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImpzb25cIikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSkgYXMgdW5rbm93bjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IFwiXCIgPyBudWxsIDogTnVtYmVyKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVRvU3RyaW5nKFxuICBjb2x1bW46IENvbHVtbiB8IHVuZGVmaW5lZCxcbiAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yIHwgdW5kZWZpbmVkLFxuICB2YWx1ZTogdW5rbm93bixcbik6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFUeXBlR3JvdXAgPSBjb2x1bW4/LmRhdGF0eXBlLmdyb3VwO1xuXG4gIGlmIChvcGVyYXRvciAmJiAob3BlcmF0b3IgPT09IFwiaXNcIiB8fCBvcGVyYXRvciA9PT0gXCJpcyBub3RcIikpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgPyBcIm51bGxcIiA6IFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImJvb2xlYW5cIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImRhdGV0aW1lXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJlbnVtXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJudW1lcmljXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJyYXdcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInN0cmluZ1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwidGltZVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJqc29uXCIpIHtcbiAgICBpZiAodmFsdWUgPT09IFwiXCIpIHJldHVybiBcIlwiO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG4iLCAiaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBiYWRnZVZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1weC0yLjUgcHMtcHktMC41IHBzLXRleHQteHMgcHMtZm9udC1zZW1pYm9sZCBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0yIGZvY3VzOnBzLXJpbmctcmluZyBmb2N1czpwcy1yaW5nLW9mZnNldC0yXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzgwXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgIFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvODBcIixcbiAgICAgICAgb3V0bGluZTogXCJwcy10ZXh0LWZvcmVncm91bmRcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhZGdlUHJvcHMgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIFZhcmlhbnRQcm9wczx0eXBlb2YgYmFkZ2VWYXJpYW50cz4ge31cblxuZnVuY3Rpb24gQmFkZ2UoeyBjbGFzc05hbWUsIHZhcmlhbnQsIC4uLnByb3BzIH06IEJhZGdlUHJvcHMpIHtcbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbihiYWRnZVZhcmlhbnRzKHsgdmFyaWFudCB9KSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgQmFkZ2UsIGJhZGdlVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgKiBhcyBEcm9wZG93bk1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25NZW51ID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IERyb3Bkb3duTWVudVRyaWdnZXIgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgRHJvcGRvd25NZW51R3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IERyb3Bkb3duTWVudVBvcnRhbCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YiA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvR3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG9cIiAvPlxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtW3ZhcigtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0KV0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWRcIixcbiAgICAgICAgXCJkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuRHJvcGRvd25NZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTAgWyY+c3ZnXTpwcy1zaXplLTQgWyY+c3ZnXTpwcy1zaHJpbmstMFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTIgcHMtdy0yIHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuRHJvcGRvd25NZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUxhYmVsLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy1vcGFjaXR5LTYwXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59O1xuRHJvcGRvd25NZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLFxuICBEcm9wZG93bk1lbnVSYWRpb0l0ZW0sXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG4gIERyb3Bkb3duTWVudVNob3J0Y3V0LFxuICBEcm9wZG93bk1lbnVHcm91cCxcbiAgRHJvcGRvd25NZW51UG9ydGFsLFxuICBEcm9wZG93bk1lbnVTdWIsXG4gIERyb3Bkb3duTWVudVN1YkNvbnRlbnQsXG4gIERyb3Bkb3duTWVudVN1YlRyaWdnZXIsXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJpbnB1dFwiPj4oXG4gICh7IGNsYXNzTmFtZSwgdHlwZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTEgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZpbGU6cHMtYm9yZGVyLTAgZmlsZTpwcy1iZy10cmFuc3BhcmVudCBmaWxlOnBzLXRleHQtc20gZmlsZTpwcy1mb250LW1lZGl1bSBmaWxlOnBzLXRleHQtZm9yZWdyb3VuZCBwbGFjZWhvbGRlcjpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTBcIixcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuSW5wdXQuZGlzcGxheU5hbWUgPSBcIklucHV0XCI7XG5cbmV4cG9ydCB7IElucHV0IH07XG4iLCAiaW1wb3J0ICogYXMgU2VsZWN0UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvbkRvd24sIENoZXZyb25VcCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBTZWxlY3QgPSBTZWxlY3RQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgU2VsZWN0R3JvdXAgPSBTZWxlY3RQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IFNlbGVjdFZhbHVlID0gU2VsZWN0UHJpbWl0aXZlLlZhbHVlO1xuXG5jb25zdCBTZWxlY3RUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMiBwcy10ZXh0LXNtIHBzLXNoYWRvdy1zbSBwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRhdGEtW3BsYWNlaG9sZGVyXTpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMSBmb2N1czpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyY+c3Bhbl06cHMtbGluZS1jbGFtcC0xXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1vcGFjaXR5LTUwXCIgLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5JY29uPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuKSk7XG5TZWxlY3RUcmlnZ2VyLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbFVwQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uVXAgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgcG9zaXRpb24gPSBcInBvcHBlclwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcmVsYXRpdmUgcHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICBcImRhdGEtW3NpZGU9Ym90dG9tXTpwcy10cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06cHMtLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06cHMtdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06cHMtLXRyYW5zbGF0ZS15LTFcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXAtMVwiLFxuICAgICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgICBcInBzLWgtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHBzLXctZnVsbCBwcy1taW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXVwiLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydD5cbiAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5TZWxlY3RDb250ZW50LmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5TZWxlY3RMYWJlbC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtdy1mdWxsIHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC0yIHBzLXByLTggcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLXJpZ2h0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD57Y2hpbGRyZW59PC9TZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4pKTtcblNlbGVjdEl0ZW0uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5TZWxlY3RTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBTZWxlY3QsXG4gIFNlbGVjdEdyb3VwLFxuICBTZWxlY3RWYWx1ZSxcbiAgU2VsZWN0VHJpZ2dlcixcbiAgU2VsZWN0Q29udGVudCxcbiAgU2VsZWN0TGFiZWwsXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdFNlcGFyYXRvcixcbiAgU2VsZWN0U2Nyb2xsVXBCdXR0b24sXG4gIFNlbGVjdFNjcm9sbERvd25CdXR0b24sXG59O1xuIiwgImltcG9ydCB7IERuZENvbnRleHQsIHR5cGUgRHJhZ0VuZEV2ZW50LCBNb3VzZVNlbnNvciwgdXNlU2Vuc29yLCB1c2VTZW5zb3JzIH0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7IGFycmF5TW92ZSwgaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3ksIFNvcnRhYmxlQ29udGV4dCwgdXNlU29ydGFibGUgfSBmcm9tIFwiQGRuZC1raXQvc29ydGFibGVcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCJAZG5kLWtpdC91dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgQWNjZXNzb3JLZXlDb2x1bW5EZWZCYXNlLCBSb3dTZWxlY3Rpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29sdW1uUGlubmluZ1N0YXRlLFxuICB0eXBlIENvbHVtblNpemluZ1N0YXRlLFxuICBnZXRDb3JlUm93TW9kZWwsXG4gIHR5cGUgSGVhZGVyLFxuICB0eXBlIE9uQ2hhbmdlRm4sXG4gIHR5cGUgUGFnaW5hdGlvblN0YXRlLFxuICB0eXBlIFNvcnRpbmdTdGF0ZSxcbiAgdHlwZSBUYWJsZSBhcyBSZWFjdFRhYmxlLFxuICB1c2VSZWFjdFRhYmxlLFxufSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBSZWFjdFRhYmxlRGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzXCI7XG5pbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCB7XG4gIENvbXBvbmVudFR5cGUsXG4gIHR5cGUgQ1NTUHJvcGVydGllcyxcbiAgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbixcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3NrZWxldG9uXCI7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZCwgVGFibGVIZWFkZXIsIFRhYmxlUm93IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBEYXRhR3JpZEhlYWRlciB9IGZyb20gXCIuL0RhdGFHcmlkSGVhZGVyXCI7XG5pbXBvcnQgeyBEYXRhR3JpZExvYWRpbmdCYXIgfSBmcm9tIFwiLi9EYXRhR3JpZExvYWRpbmdCYXJcIjtcbmltcG9ydCB7IERhdGFHcmlkUGFnaW5hdGlvbiB9IGZyb20gXCIuL0RhdGFHcmlkUGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyB9IGZyb20gXCIuL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nXCI7XG5cbi8vIEFkZCB0aGlzIG5ldyBjb21wb25lbnQgZm9yIGRyYWdnYWJsZSBoZWFkZXIgY2VsbHNcbnR5cGUgRHJhZ2dhYmxlSGVhZGVyQ2VsbFByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgaGVhZGVyOiBIZWFkZXI8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBzdHlsZTogQ1NTUHJvcGVydGllcztcbiAgdGFibGU6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+Pjtcbn0+O1xuXG5jb25zdCBEcmFnZ2FibGVIZWFkZXJDZWxsID0gKHByb3BzOiBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBoZWFkZXIsIHN0eWxlOiBjb21tb25TdHlsZSB9ID0gcHJvcHM7XG4gIGNvbnN0IGRpc2FibGVEcmFnZ2luZyA9IFwiZGlzYWJsZURyYWdnaW5nXCIgaW4gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWY7XG5cbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgc2V0Tm9kZVJlZiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBoZWFkZXIuaWQsXG4gIH0pO1xuXG4gIGNvbnN0IGRyYWdTdHlsZSA9IHtcbiAgICAuLi5jb21tb25TdHlsZSxcbiAgICBjdXJzb3I6IFwiZ3JhYlwiLFxuICAgIHRvdWNoQWN0aW9uOiBcIm5vbmVcIixcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICB9IGFzIENTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3QgY29tbW9uQ2xhc3MgPSBjbihjbGFzc05hbWUsIFwicHMtc2VsZWN0LW5vbmUgcHMtdG91Y2gtbm9uZSBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctdGFibGUtaGVhZFwiKTtcbiAgY29uc3QgZHJhZ0NsYXNzID0gY24oY29tbW9uQ2xhc3MsIGlzRHJhZ2dpbmcgJiYgXCIhcHMtei01MCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdmlvbGV0LTUwMFwiKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUhlYWRcbiAgICAgIHJlZj17c2V0Tm9kZVJlZn1cbiAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgICAgey4uLmxpc3RlbmVyc31cbiAgICAgIHN0eWxlPXtkaXNhYmxlRHJhZ2dpbmcgPyBjb21tb25TdHlsZSA6IGRyYWdTdHlsZX1cbiAgICAgIGNsYXNzTmFtZT17ZGlzYWJsZURyYWdnaW5nID8gY29tbW9uQ2xhc3MgOiBkcmFnQ2xhc3N9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9UYWJsZUhlYWQ+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUHJvcHMge1xuICBjb2x1bW5EZWZzOiBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+W107XG4gIGdldEJlZm9yZVJvd3M/KHRoaXM6IHZvaWQsIHRhYmxlOiBSZWFjdFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pik6IFJlYWN0Tm9kZTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW47XG4gIG9uUGFnaW5hdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+O1xuICBvblJvd1NlbGVjdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxSb3dTZWxlY3Rpb25TdGF0ZT47XG4gIG9uU29ydGluZ0NoYW5nZT86IE9uQ2hhbmdlRm48U29ydE9yZGVySXRlbVtdPjtcbiAgcGFnZUNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHBhZ2luYXRpb25TdGF0ZTogUGFnaW5hdGlvblN0YXRlO1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICByb3dTZWxlY3Rpb25TdGF0ZTogUm93U2VsZWN0aW9uU3RhdGU7XG4gIHNvcnRpbmdTdGF0ZT86IFNvcnRPcmRlckl0ZW1bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkKHByb3BzOiBEYXRhR3JpZFByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjb2x1bW5EZWZzLFxuICAgIGdldEJlZm9yZVJvd3MsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzUHJvY2Vzc2luZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlLFxuICAgIHBhZ2VDb3VudCxcbiAgICBwYWdpbmF0aW9uU3RhdGUsXG4gICAgcm93cyxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBzb3J0aW5nU3RhdGUsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBbY29sdW1uT3JkZXIsIHNldENvbHVtbk9yZGVyXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XG4gIGNvbnN0IFtjb2x1bW5QaW5uaW5nLCBzZXRDb2x1bW5QaW5uaW5nXSA9IHVzZVN0YXRlPENvbHVtblBpbm5pbmdTdGF0ZT4oeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICBjb25zdCBbY29sdW1uU2l6aW5nLCBzZXRDb2x1bW5TaXppbmddID0gdXNlU3RhdGU8Q29sdW1uU2l6aW5nU3RhdGU+KHt9KTtcbiAgY29uc3Qgc29ydGluZyA9IHVzZU1lbW8oKCkgPT4gdG9Tb3J0aW5nU3RhdGUoc29ydGluZ1N0YXRlKSwgW3NvcnRpbmdTdGF0ZV0pO1xuICBjb25zdCBkaXNwbGF5TG9hZGVyID0gaXNMb2FkaW5nIHx8IGlzUHJvY2Vzc2luZztcblxuICAvLyBzZXQgdGhlIGluaXRhbCBjb2x1bW4gb3JkZXIgdGhlbiBsZXQgdGhlIHRhYmxlIG1hbmFnZSBpdFxuICB1c2VFZmZlY3QoKCkgPT4gc2V0Q29sdW1uT3JkZXIoY29sdW1uRGVmcy5tYXAoKHsgYWNjZXNzb3JLZXkgfSkgPT4gYWNjZXNzb3JLZXkpKSwgW10pO1xuXG4gIC8vIGhhbmRsZXMgbW92aW5nIGFuZCByZS1vcmRlcmluZyBvZiB0aGUgY29sdW1ucyBhbmQgc3RhdGVcbiAgZnVuY3Rpb24gaGFuZGxlRHJhZ0VuZCh7IGFjdGl2ZSwgb3ZlciB9OiBEcmFnRW5kRXZlbnQpIHtcbiAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgIHNldENvbHVtbk9yZGVyKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IG9yZGVyLmluZGV4T2YoYWN0aXZlLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IG92ZXJJbmRleCA9IG9yZGVyLmluZGV4T2Yob3Zlci5pZCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4gYXJyYXlNb3ZlKG9yZGVyLCBhY3RpdmVJbmRleCwgb3ZlckluZGV4KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbmZpZ3VyZSB0aGUgbW91c2Ugc2Vuc29yIGZvciBkcmFnIGFuZCBkcm9wXG4gIGNvbnN0IG1vdXNlU2Vuc29yID0gdXNlU2Vuc29yKE1vdXNlU2Vuc29yLCB7XG4gICAgLy8gUmVxdWlyZSB0aGUgbW91c2UgdG8gbW92ZSBieSAxMCBwaXhlbHMgYmVmb3JlIGFjdGl2YXRpbmdcbiAgICBhY3RpdmF0aW9uQ29uc3RyYWludDoge1xuICAgICAgZGlzdGFuY2U6IDEwLFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhtb3VzZVNlbnNvcik7XG5cbiAgY29uc3QgdGFibGUgPSB1c2VSZWFjdFRhYmxlKHtcbiAgICBjb2x1bW5SZXNpemVNb2RlOiBcIm9uQ2hhbmdlXCIsXG4gICAgY29sdW1uczogY29sdW1uRGVmcyxcbiAgICBkYXRhOiByb3dzLFxuICAgIGRlZmF1bHRDb2x1bW46IHsgc2l6ZTogMjAwLCBtaW5TaXplOiA1MCwgbWF4U2l6ZTogNTAwIH0sXG4gICAgZW5hYmxlQ29sdW1uUGlubmluZzogdHJ1ZSxcbiAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcbiAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXG4gICAgZW5hYmxlU29ydGluZzogQm9vbGVhbihvblNvcnRpbmdDaGFuZ2UgJiYgc29ydGluZ1N0YXRlKSxcbiAgICBnZXRDb3JlUm93TW9kZWw6IGdldENvcmVSb3dNb2RlbCgpLFxuICAgIGdldFJvd0lkOiAoeyBfX3BzX3Jvd2lkIH0pID0+IF9fcHNfcm93aWQgYXMgc3RyaW5nLFxuICAgIG1hbnVhbFBhZ2luYXRpb246IHRydWUsXG4gICAgbWFudWFsU29ydGluZzogdHJ1ZSxcbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlOiBzZXRDb2x1bW5PcmRlcixcbiAgICBvbkNvbHVtblBpbm5pbmdDaGFuZ2U6IHNldENvbHVtblBpbm5pbmcsXG4gICAgb25Db2x1bW5TaXppbmdDaGFuZ2U6IHNldENvbHVtblNpemluZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlOiAodXBkYXRlck9yVmFsdWUpID0+XG4gICAgICBvblNvcnRpbmdDaGFuZ2U/Ligob2xkKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHVwZGF0ZXJPclZhbHVlID0gdXBkYXRlck9yVmFsdWUodG9Tb3J0aW5nU3RhdGUob2xkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Tb3J0T3JkZXJJdGVtcyh1cGRhdGVyT3JWYWx1ZSk7XG4gICAgICB9KSxcbiAgICBwYWdlQ291bnQsXG4gICAgc3RhdGU6IHtcbiAgICAgIGNvbHVtbk9yZGVyLFxuICAgICAgY29sdW1uUGlubmluZyxcbiAgICAgIGNvbHVtblNpemluZyxcbiAgICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb25TdGF0ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgICBzb3J0aW5nLFxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHsvKiBUT0RPOiBwYXRjaCBzbyBpdCBpcyBub3QgYnVuZGxlZCBsaWtlIHJlYWN0LXF1ZXJ5IGRldnRvb2xzLCBvciByZW1vdmUgY29tcGxldGVseSBvbmNlIGRhdGEgZ3JpZCBpcyBzdGFibGUgYW5kIHRlc3RlZC4gKi99XG4gICAgICB7cHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gbnVsbCA6IDxSZWFjdFRhYmxlRGV2dG9vbHMgdGFibGU9e3RhYmxlfSAvPn1cbiAgICAgIDxkaXYgZGF0YS1zdHVkaW89XCJjb250ZW50XCIgY2xhc3NOYW1lPVwicHMtZmxleC0xIHBzLXctMCBwcy1oLTAgcHMtbWluLXctZnVsbCBwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlXCI+XG4gICAgICAgIDxkaXY+e2Rpc3BsYXlMb2FkZXIgJiYgPERhdGFHcmlkTG9hZGluZ0JhciBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSAtcHMtdG9wLVsxcHhdIHBzLWxlZnQtMCBwcy1yaWdodC0wXCIgLz59PC9kaXY+XG4gICAgICAgIDxEbmRDb250ZXh0IHNlbnNvcnM9e3NlbnNvcnN9IG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH0+XG4gICAgICAgICAgPFRhYmxlIGNsYXNzTmFtZT1cInBzLXRhYmxlLWZpeGVkIHBzLWJvcmRlci1zZXBhcmF0ZSBwcy1ib3JkZXItc3BhY2luZy0wIHBzLWJveC1ib3JkZXIgcHMtdy1hdXRvXCI+XG4gICAgICAgICAgICA8VGFibGVIZWFkZXI+XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRIZWFkZXJHcm91cHMoKS5tYXAoKGhlYWRlckdyb3VwKSA9PiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93IGtleT17aGVhZGVyR3JvdXAuaWR9PlxuICAgICAgICAgICAgICAgICAgPFNvcnRhYmxlQ29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpdGVtcz17aGVhZGVyR3JvdXAuaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGhlYWRlcikgPT4gIShcImRpc2FibGVEcmFnZ2luZ1wiIGluIGhlYWRlci5jb2x1bW4uY29sdW1uRGVmKSlcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKChoZWFkZXIpID0+IGhlYWRlci5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5PXtob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2hlYWRlckdyb3VwLmhlYWRlcnMubWFwKChoZWFkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPERyYWdnYWJsZUhlYWRlckNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcj17aGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGhlYWRlci5jb2x1bW4sIFwiaGVhZGVyXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8RGF0YUdyaWRIZWFkZXIgaGVhZGVyPXtoZWFkZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0RyYWdnYWJsZUhlYWRlckNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvVGFibGVIZWFkZXI+XG4gICAgICAgICAgICA8VGFibGVCb2R5PlxuICAgICAgICAgICAgICB7Z2V0QmVmb3JlUm93cz8uKHRhYmxlKX1cbiAgICAgICAgICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIHRhYmxlLmdldFJvd01vZGVsKCkucm93cy5tYXAoKHJvdykgPT4gKFxuICAgICAgICAgICAgICAgICAgPFRhYmxlUm93XG4gICAgICAgICAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwicHMtYmctdGFibGUtcm93IHBzLW9kZDpiZy10YWJsZS1yb3ctb2RkIHBzLWdyb3VwIFsmOmxhc3Qtb2YtdHlwZV90ZF06cHMtYm9yZGVyLWItMFwiKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3Jvdy5nZXRWaXNpYmxlQ2VsbHMoKS5tYXAoKGNlbGwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgQ2VsbCA9IENvbXBvbmVudFR5cGU8T21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+PjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8Q2VsbCBrZXk9e2l9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9IC8+O1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW49e2NvbHVtbkRlZnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTI0IHBzLXRleHQtbGVmdCBwcy1wLVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00LzVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTIvM1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9UYWJsZUJvZHk+XG4gICAgICAgICAgPC9UYWJsZT5cbiAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICB7IXBhZ2VDb3VudCB8fCBwYWdlQ291bnQgPCAyID8gbnVsbCA6IDxEYXRhR3JpZFBhZ2luYXRpb24gdGFibGU9e3RhYmxlfSB2YXJpYW50PVwibnVtZXJpY1wiIC8+fVxuXG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZyAmJiAhaXNQcm9jZXNzaW5nICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWFic29sdXRlIC1wcy1pbnNldC0wIHBzLXBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Tm8gcmVzdWx0cyBmb3VuZDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgIEl0IGRvZXNuJmFwb3M7dCBsb29rIGxpa2UgeW91IGhhdmUgYW55IGRhdGEgaW4gdGhpcyB0YWJsZS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0aW5nU3RhdGUoZnJvbTogU29ydE9yZGVySXRlbVtdIHwgdW5kZWZpbmVkKTogU29ydGluZ1N0YXRlIHtcbiAgcmV0dXJuIGZyb20/Lm1hcCgoaXRlbSkgPT4gKHsgaWQ6IGl0ZW0uY29sdW1uLCBkZXNjOiBpdGVtLmRpcmVjdGlvbiA9PT0gXCJkZXNjXCIgfSkpIHx8IFtdO1xufVxuXG5mdW5jdGlvbiB0b1NvcnRPcmRlckl0ZW1zKGZyb206IFNvcnRpbmdTdGF0ZSk6IFNvcnRPcmRlckl0ZW1bXSB7XG4gIHJldHVybiBmcm9tLm1hcCgoaXRlbSkgPT4gKHtcbiAgICBjb2x1bW46IGl0ZW0uaWQsXG4gICAgZGlyZWN0aW9uOiBpdGVtLmRlc2MgPyBcImRlc2NcIiA6IFwiYXNjXCIsXG4gIH0pKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGdldEl0ZW0gPSAoa2V5OiBzdHJpbmcpOiB1bmtub3duID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gICAgaWYgKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShpdGVtVmFsdWUpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZTxUPihcbiAga2V5OiBzdHJpbmcsXG4gIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZFxuKTogW1QgfCB1bmRlZmluZWQsIChuZXdWYWw6IFQgfCAoKHByZXZWYWw6IFQpID0+IFQpKSA9PiB2b2lkXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGU8VD4oKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0SXRlbShrZXkpIGFzIFQgfCB1bmRlZmluZWRcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBpbml0aWFsVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHNldFZhbHVlKFxuICAgICAgICB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoaW5pdGlhbFZhbHVlKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRWYWx1ZSwga2V5XSlcblxuICBjb25zdCBzZXR0ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAodXBkYXRlcjogYW55KSA9PiB7XG4gICAgICBzZXRWYWx1ZShvbGQgPT4ge1xuICAgICAgICBsZXQgbmV3VmFsID0gdXBkYXRlclxuXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlciA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgbmV3VmFsID0gdXBkYXRlcihvbGQpXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkpXG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICByZXR1cm4gbmV3VmFsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2tleV1cbiAgKVxuXG4gIHJldHVybiBbdmFsdWUsIHNldHRlcl1cbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWUgPSB7XG4gIGJhY2tncm91bmQ6ICcjMGIxNTIxJyxcbiAgYmFja2dyb3VuZEFsdDogJyMxMzIzMzcnLFxuICBmb3JlZ3JvdW5kOiAnd2hpdGUnLFxuICBncmF5OiAnIzNmNGU2MCcsXG4gIGdyYXlBbHQ6ICcjMjIyZTNlJyxcbiAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgaW5wdXRUZXh0Q29sb3I6ICcjMDAwJyxcbiAgc3VjY2VzczogJyMwMGFiNTInLFxuICBkYW5nZXI6ICcjZmYwMDg1JyxcbiAgYWN0aXZlOiAnIzAwNmJmZicsXG4gIHdhcm5pbmc6ICcjZmZiMjAwJyxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgVGhlbWUgPSB0eXBlb2YgZGVmYXVsdFRoZW1lXG5pbnRlcmZhY2UgUHJvdmlkZXJQcm9wcyB7XG4gIHRoZW1lOiBUaGVtZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5jb25zdCBUaGVtZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGRlZmF1bHRUaGVtZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoeyB0aGVtZSwgLi4ucmVzdCB9OiBQcm92aWRlclByb3BzKSB7XG4gIHJldHVybiA8VGhlbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGVtZX0gey4uLnJlc3R9IC8+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIC8vIEtlZXAgdHJhY2sgb2YgdGhlIHByZWZlcmVuY2UgaW4gc3RhdGUsIHN0YXJ0IHdpdGggdGhlIGN1cnJlbnQgbWF0Y2hcbiAgY29uc3QgW2lzTWF0Y2gsIHNldElzTWF0Y2hdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzXG4gICAgfVxuICB9KVxuXG4gIC8vIFdhdGNoIGZvciBjaGFuZ2VzXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoIXdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBtYXRjaGVyXG4gICAgICBjb25zdCBtYXRjaGVyID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpXG5cbiAgICAgIC8vIENyZWF0ZSBvdXIgaGFuZGxlclxuICAgICAgY29uc3Qgb25DaGFuZ2UgPSAoeyBtYXRjaGVzIH06IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PlxuICAgICAgICBzZXRJc01hdGNoKG1hdGNoZXMpXG5cbiAgICAgIC8vIExpc3RlbiBmb3IgY2hhbmdlc1xuICAgICAgbWF0Y2hlci5hZGRMaXN0ZW5lcihvbkNoYW5nZSlcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgLy8gU3RvcCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXNcbiAgICAgICAgbWF0Y2hlci5yZW1vdmVMaXN0ZW5lcihvbkNoYW5nZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc01hdGNoLCBxdWVyeSwgc2V0SXNNYXRjaF0pXG5cbiAgcmV0dXJuIGlzTWF0Y2hcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFRoZW1lLCB1c2VUaGVtZSB9IGZyb20gJy4vdGhlbWUnXG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknXG5cbmNvbnN0IGlzU2VydmVyID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcblxudHlwZSBTdHlsZWRDb21wb25lbnQ8VD4gPSBUIGV4dGVuZHMgJ2J1dHRvbidcbiAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICAgIEhUTUxCdXR0b25FbGVtZW50XG4gICAgPlxuICA6IFQgZXh0ZW5kcyAnaW5wdXQnXG4gICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgSFRNTElucHV0RWxlbWVudFxuICAgICAgPlxuICAgIDogVCBleHRlbmRzICdzZWxlY3QnXG4gICAgICA/IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgICAgICAgIFJlYWN0LlNlbGVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxTZWxlY3RFbGVtZW50PixcbiAgICAgICAgICBIVE1MU2VsZWN0RWxlbWVudFxuICAgICAgICA+XG4gICAgICA6IFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXBcbiAgICAgICAgPyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF0+XG4gICAgICAgIDogbmV2ZXJcblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0NvbG9yKG1hdGNoOiBSb3V0ZU1hdGNoLCB0aGVtZTogVGhlbWUpIHtcbi8vICAgcmV0dXJuIG1hdGNoLmlzTG9hZGluZ1xuLy8gICAgID8gdGhlbWUuYWN0aXZlXG4vLyAgICAgOiBtYXRjaC5zdGF0dXMgPT09ICdyZWplY3RlZCdcbi8vICAgICA/IHRoZW1lLmRhbmdlclxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncGVuZGluZydcbi8vICAgICA/IHRoZW1lLndhcm5pbmdcbi8vICAgICA6IHRoZW1lLnN1Y2Nlc3Ncbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5U3RhdHVzTGFiZWwocXVlcnk6IFF1ZXJ5KSB7XG4vLyAgIHJldHVybiBxdWVyeS5zdGF0ZS5pc0ZldGNoaW5nXG4vLyAgICAgPyAnZmV0Y2hpbmcnXG4vLyAgICAgOiAhcXVlcnkuZ2V0T2JzZXJ2ZXJzQ291bnQoKVxuLy8gICAgID8gJ2luYWN0aXZlJ1xuLy8gICAgIDogcXVlcnkuaXNTdGFsZSgpXG4vLyAgICAgPyAnc3RhbGUnXG4vLyAgICAgOiAnZnJlc2gnXG4vLyB9XG5cbnR5cGUgU3R5bGVzID1cbiAgfCBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIHwgKChwcm9wczogUmVjb3JkPHN0cmluZywgYW55PiwgdGhlbWU6IFRoZW1lKSA9PiBSZWFjdC5DU1NQcm9wZXJ0aWVzKVxuXG5leHBvcnQgZnVuY3Rpb24gc3R5bGVkPFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0eXBlOiBULFxuICBuZXdTdHlsZXM6IFN0eWxlcyxcbiAgcXVlcmllczogUmVjb3JkPHN0cmluZywgU3R5bGVzPiA9IHt9XG4pIHtcbiAgcmV0dXJuIFJlYWN0LmZvcndhcmRSZWY8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdLCBTdHlsZWRDb21wb25lbnQ8VD4+KFxuICAgICh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG5cbiAgICAgIGNvbnN0IG1lZGlhU3R5bGVzID0gT2JqZWN0LmVudHJpZXMocXVlcmllcykucmVkdWNlKFxuICAgICAgICAoY3VycmVudCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoa2V5KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocmVzdCwgdGhlbWUpIDogdmFsdWUpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGN1cnJlbnRcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcblxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodHlwZSwge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLih0eXBlb2YgbmV3U3R5bGVzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IG5ld1N0eWxlcyhyZXN0LCB0aGVtZSlcbiAgICAgICAgICAgIDogbmV3U3R5bGVzKSxcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAuLi5tZWRpYVN0eWxlcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmLFxuICAgICAgfSlcbiAgICB9XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzTW91bnRlZCgpIHtcbiAgY29uc3QgbW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNb3VudGVkID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gbW91bnRlZFJlZi5jdXJyZW50LCBbXSlcblxuICBSZWFjdFtpc1NlcnZlciA/ICd1c2VFZmZlY3QnIDogJ3VzZUxheW91dEVmZmVjdCddKCgpID0+IHtcbiAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gaXNNb3VudGVkXG59XG5cbi8qKlxuICogVGhpcyBob29rIGlzIGEgc2FmZSB1c2VTdGF0ZSB2ZXJzaW9uIHdoaWNoIHNjaGVkdWxlcyBzdGF0ZSB1cGRhdGVzIGluIG1pY3JvdGFza3NcbiAqIHRvIHByZXZlbnQgdXBkYXRpbmcgYSBjb21wb25lbnQgc3RhdGUgd2hpbGUgUmVhY3QgaXMgcmVuZGVyaW5nIGRpZmZlcmVudCBjb21wb25lbnRzXG4gKiBvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IG1vdW50ZWQgYW55bW9yZS5cbiAqL1xuZnVuY3Rpb24gdXNlU2FmZVN0YXRlPFQ+KGluaXRpYWxTdGF0ZTogVCk6IFtULCAodmFsdWU6IFQpID0+IHZvaWRdIHtcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsU3RhdGUpXG5cbiAgY29uc3Qgc2FmZVNldFN0YXRlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBUKSA9PiB7XG4gICAgICBzY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGlmIChpc01vdW50ZWQoKSkge1xuICAgICAgICAgIHNldFN0YXRlKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgW2lzTW91bnRlZF1cbiAgKVxuXG4gIHJldHVybiBbc3RhdGUsIHNhZmVTZXRTdGF0ZV1cbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBtaWNyb3Rhc2suXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2NoZWR1bGUgc3RhdGUgdXBkYXRlcyBhZnRlciByZW5kZXJpbmcuXG4gKi9cbmZ1bmN0aW9uIHNjaGVkdWxlTWljcm90YXNrKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGVycm9yID0+XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH0pXG4gICAgKVxufVxuIiwgImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBjb25zdCBQYW5lbCA9IHN0eWxlZChcbiAgJ2RpdicsXG4gIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICAgIGZvbnRTaXplOiAnY2xhbXAoMTJweCwgMS41dncsIDE0cHgpJyxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzoge1xuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgfSxcbiAgICAnKG1heC13aWR0aDogNjAwcHgpJzoge1xuICAgICAgZm9udFNpemU6ICcuOWVtJyxcbiAgICAgIC8vIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gIH1cbilcblxuY29uc3QgQWN0aXZlUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoKSA9PiAoe1xuICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA3MDBweCknOiAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICAgIGJvcmRlclRvcDogYDJweCBzb2xpZCAke3RoZW1lLmdyYXl9YCxcbiAgICB9KSxcbiAgfVxuKVxuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gc3R5bGVkKCdidXR0b24nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgYmFja2dyb3VuZDogdGhlbWUuZ3JheSxcbiAgYm9yZGVyOiAnMCcsXG4gIGJvcmRlclJhZGl1czogJy4zZW0nLFxuICBjb2xvcjogJ3doaXRlJyxcbiAgcGFkZGluZzogJy41ZW0nLFxuICBvcGFjaXR5OiBwcm9wcy5kaXNhYmxlZCA/ICcuNScgOiB1bmRlZmluZWQsXG4gIGN1cnNvcjogJ3BvaW50ZXInLFxufSkpXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleXMgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuLy8gICBmb250U2l6ZTogJzAuOWVtJyxcbi8vIH0pXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleSA9IHN0eWxlZCgnc3BhbicsIHtcbi8vICAgZGlzcGxheTogJ2lubGluZS1mbGV4Jyxcbi8vICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4vLyAgIHBhZGRpbmc6ICcuMmVtIC40ZW0nLFxuLy8gICBmb250V2VpZ2h0OiAnYm9sZCcsXG4vLyAgIHRleHRTaGFkb3c6ICcwIDAgMTBweCBibGFjaycsXG4vLyAgIGJvcmRlclJhZGl1czogJy4yZW0nLFxuLy8gfSlcblxuY29uc3QgQ29kZSA9IHN0eWxlZCgnY29kZScsIHtcbiAgZm9udFNpemU6ICcuOWVtJyxcbn0pXG5cbmNvbnN0IElucHV0ID0gc3R5bGVkKCdpbnB1dCcsIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICBib3JkZXI6IDAsXG4gIGJvcmRlclJhZGl1czogJy4yZW0nLFxuICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGxpbmVIZWlnaHQ6IGAxLjNgLFxuICBwYWRkaW5nOiAnLjNlbSAuNGVtJyxcbn0pKVxuXG5jb25zdCBTZWxlY3QgPSBzdHlsZWQoXG4gICdzZWxlY3QnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBkaXNwbGF5OiBgaW5saW5lLWJsb2NrYCxcbiAgICBmb250U2l6ZTogYC45ZW1gLFxuICAgIGZvbnRGYW1pbHk6IGBzYW5zLXNlcmlmYCxcbiAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgICBwYWRkaW5nOiBgLjNlbSAxLjVlbSAuM2VtIC41ZW1gLFxuICAgIGhlaWdodDogJ2F1dG8nLFxuICAgIGJvcmRlcjogMCxcbiAgICBib3JkZXJSYWRpdXM6IGAuMmVtYCxcbiAgICBhcHBlYXJhbmNlOiBgbm9uZWAsXG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuaW5wdXRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSclMjM0NDQ0NDQnPjxwb2x5Z29uIHBvaW50cz0nMCwyNSAxMDAsMjUgNTAsNzUnLz48L3N2Zz5cIilgLFxuICAgIGJhY2tncm91bmRSZXBlYXQ6IGBuby1yZXBlYXRgLFxuICAgIGJhY2tncm91bmRQb3NpdGlvbjogYHJpZ2h0IC41NWVtIGNlbnRlcmAsXG4gICAgYmFja2dyb3VuZFNpemU6IGAuNjVlbSBhdXRvLCAxMDAlYCxcbiAgICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDUwMHB4KSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9XG4pXG4iLCAiLy8gQHRzLW5vY2hlY2tcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBFbnRyeSA9IHN0eWxlZCgnZGl2Jywge1xuICBmb250RmFtaWx5OiAnTWVubG8sIG1vbm9zcGFjZScsXG4gIGZvbnRTaXplOiAnMC43cmVtJyxcbiAgbGluZUhlaWdodDogJzEuNycsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59KVxuXG5jb25zdCBMYWJlbCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIGNvbG9yOiAnd2hpdGUnLFxufSlcblxuY29uc3QgVmFsdWUgPSBzdHlsZWQoJ3NwYW4nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBjb2xvcjogdGhlbWUuZGFuZ2VyLFxufSkpXG5cbmNvbnN0IFN1YkVudHJpZXMgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbWFyZ2luTGVmdDogJy4xcmVtJyxcbiAgcGFkZGluZ0xlZnQ6ICcxcmVtJyxcbiAgYm9yZGVyTGVmdDogJzJweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSknLFxufSlcblxuY29uc3QgSW5mbyA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY29sb3I6ICdncmV5JyxcbiAgZm9udFNpemU6ICcuN3JlbScsXG59KVxuXG5jb25zdCBFeHBhbmRlciA9ICh7IGV4cGFuZGVkLCBzdHlsZSA9IHt9LCAuLi5yZXN0IH0pID0+IChcbiAgPHNwYW5cbiAgICBzdHlsZT17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICB0cmFuc2l0aW9uOiAnYWxsIC4xcyBlYXNlJyxcbiAgICAgIHRyYW5zZm9ybTogYHJvdGF0ZSgke2V4cGFuZGVkID8gOTAgOiAwfWRlZykgJHtzdHlsZS50cmFuc2Zvcm0gfHwgJyd9YCxcbiAgICAgIC4uLnN0eWxlLFxuICAgIH19XG4gID5cbiAgICDilrZcbiAgPC9zcGFuPlxuKVxuXG5jb25zdCBEZWZhdWx0UmVuZGVyZXIgPSAoe1xuICBoYW5kbGVFbnRyeSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAvLyBwYXRoLFxuICBzdWJFbnRyaWVzLFxuICBzdWJFbnRyeVBhZ2VzLFxuICB0eXBlLFxuICAvLyBkZXB0aCxcbiAgZXhwYW5kZWQsXG4gIHRvZ2dsZSxcbiAgcGFnZVNpemUsXG4gIHJlbmRlcmVyLFxufSkgPT4ge1xuICBjb25zdCBbdmFsdWVTbmFwc2hvdCwgc2V0VmFsdWVTbmFwc2hvdF0gPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpXG4gIGNvbnN0IFtleHBhbmRlZFBhZ2VzLCBzZXRFeHBhbmRlZFBhZ2VzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxuXG4gIGNvbnN0IHJlZnJlc2hWYWx1ZVNuYXBzaG90ID0gKCkgPT4ge1xuICAgIHNldFZhbHVlU25hcHNob3QodmFsdWUoKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEVudHJ5IGtleT17bGFiZWx9PlxuICAgICAge3N1YkVudHJ5UGFnZXM/Lmxlbmd0aCA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWwgb25DbGljaz17KCkgPT4gdG9nZ2xlKCl9PlxuICAgICAgICAgICAgPEV4cGFuZGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gLz4ge2xhYmVsfXsnICd9XG4gICAgICAgICAgICA8SW5mbz5cbiAgICAgICAgICAgICAge1N0cmluZyh0eXBlKS50b0xvd2VyQ2FzZSgpID09PSAnaXRlcmFibGUnID8gJyhJdGVyYWJsZSkgJyA6ICcnfVxuICAgICAgICAgICAgICB7c3ViRW50cmllcy5sZW5ndGh9IHtzdWJFbnRyaWVzLmxlbmd0aCA+IDEgPyBgaXRlbXNgIDogYGl0ZW1gfVxuICAgICAgICAgICAgPC9JbmZvPlxuICAgICAgICAgIDwvTGFiZWw+XG4gICAgICAgICAge2V4cGFuZGVkID8gKFxuICAgICAgICAgICAgc3ViRW50cnlQYWdlcy5sZW5ndGggPT09IDEgPyAoXG4gICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgIHtzdWJFbnRyaWVzLm1hcChlbnRyeSA9PiBoYW5kbGVFbnRyeShlbnRyeSkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cnlQYWdlcy5tYXAoKGVudHJpZXMsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICA8RW50cnk+XG4gICAgICAgICAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBhbmRlZFBhZ2VzKG9sZCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5pbmNsdWRlcyhpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb2xkLmZpbHRlcihkID0+IGQgIT09IGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbLi4ub2xkLCBpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IFt7aW5kZXggKiBwYWdlU2l6ZX0gLi4ueycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCAqIHBhZ2VTaXplICsgcGFnZVNpemUgLSAxfV1cbiAgICAgICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZFBhZ2VzLmluY2x1ZGVzKGluZGV4KSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9FbnRyeT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IHR5cGUgPT09ICdmdW5jdGlvbicgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICByZW5kZXJlcj17cmVuZGVyZXJ9XG4gICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17cmVmcmVzaFZhbHVlU25hcHNob3R9PlxuICAgICAgICAgICAgICAgIDxMYWJlbD57bGFiZWx9PC9MYWJlbD4g8J+UhHsnICd9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlU25hcHNob3R9XG4gICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e3t9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWw+e2xhYmVsfTo8L0xhYmVsPnsnICd9XG4gICAgICAgICAgPFZhbHVlPlxuICAgICAgICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QodmFsdWUpKSl9XG4gICAgICAgICAgPC9WYWx1ZT5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvRW50cnk+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhwbG9yZXIoe1xuICB2YWx1ZSxcbiAgZGVmYXVsdEV4cGFuZGVkLFxuICByZW5kZXJlciA9IERlZmF1bHRSZW5kZXJlcixcbiAgcGFnZVNpemUgPSAxMDAsXG4gIGRlcHRoID0gMCxcbiAgLi4ucmVzdFxufSkge1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRFeHBhbmRlZClcblxuICBjb25zdCB0b2dnbGUgPSBzZXQgPT4ge1xuICAgIHNldEV4cGFuZGVkKG9sZCA9PiAodHlwZW9mIHNldCAhPT0gJ3VuZGVmaW5lZCcgPyBzZXQgOiAhb2xkKSlcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBbXVxuXG4gIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG4gIGxldCBzdWJFbnRyaWVzXG4gIGNvbnN0IHN1YkVudHJ5UGFnZXMgPSBbXVxuXG4gIGNvbnN0IG1ha2VQcm9wZXJ0eSA9IHN1YiA9PiB7XG4gICAgY29uc3QgbmV3UGF0aCA9IHBhdGguY29uY2F0KHN1Yi5sYWJlbClcbiAgICBjb25zdCBzdWJEZWZhdWx0RXhwYW5kZWQgPVxuICAgICAgZGVmYXVsdEV4cGFuZGVkID09PSB0cnVlXG4gICAgICAgID8geyBbc3ViLmxhYmVsXTogdHJ1ZSB9XG4gICAgICAgIDogZGVmYXVsdEV4cGFuZGVkPy5bc3ViLmxhYmVsXVxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdWIsXG4gICAgICBzdWJQYXRoOiBzdWIsXG4gICAgICBwYXRoOiBuZXdQYXRoLFxuICAgICAgZGVwdGg6IGRlcHRoICsgMSxcbiAgICAgIGRlZmF1bHRFeHBhbmRlZDogc3ViRGVmYXVsdEV4cGFuZGVkLFxuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHR5cGUgPSAnYXJyYXknXG4gICAgc3ViRW50cmllcyA9IHZhbHVlLm1hcCgoZCwgaSkgPT5cbiAgICAgIG1ha2VQcm9wZXJ0eSh7XG4gICAgICAgIGxhYmVsOiBpLFxuICAgICAgICB2YWx1ZTogZCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHR5cGUgPSAnSXRlcmFibGUnXG4gICAgc3ViRW50cmllcyA9IEFycmF5LmZyb20odmFsdWUsICh2YWwsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHR5cGUgPSAnZnVuY3Rpb24nXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHR5cGUgPSAnb2JqZWN0J1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgICBzdWJFbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdWJFbnRyaWVzKSB7XG4gICAgbGV0IGkgPSAwXG5cbiAgICB3aGlsZSAoaSA8IHN1YkVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBzdWJFbnRyeVBhZ2VzLnB1c2goc3ViRW50cmllcy5zbGljZShpLCBpICsgcGFnZVNpemUpKVxuICAgICAgaSA9IGkgKyBwYWdlU2l6ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW5kZXJlcih7XG4gICAgaGFuZGxlRW50cnk6IGVudHJ5ID0+IChcbiAgICAgIDxFeHBsb3JlciBrZXk9e2VudHJ5LmxhYmVsfSByZW5kZXJlcj17cmVuZGVyZXJ9IHsuLi5yZXN0fSB7Li4uZW50cnl9IC8+XG4gICAgKSxcbiAgICB0eXBlLFxuICAgIHN1YkVudHJpZXMsXG4gICAgc3ViRW50cnlQYWdlcyxcbiAgICBkZXB0aCxcbiAgICB2YWx1ZSxcbiAgICBwYXRoLFxuICAgIGV4cGFuZGVkLFxuICAgIHRvZ2dsZSxcbiAgICBwYWdlU2l6ZSxcbiAgICAuLi5yZXN0LFxuICB9KVxufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dvKHByb3BzOiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjQwcHhcIlxuICAgICAgaGVpZ2h0PVwiNDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE5MCAxOTBcIlxuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZVdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbFJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIGlkPVwib2ctd2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTI4LjAwMDAwMCwgLTIxLjAwMDAwMClcIj5cbiAgICAgICAgICA8ZyBpZD1cIkdyb3VwLTJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjguMDAwMDAwLCAzMS4wMDAwMDApXCI+XG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLCAxMC4wMDAwMDApXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0zOS43MjM5NzEyLDUxLjM0MzYyMzcgQzM2LjYzMTIyNCwzNi4zNjI4NzcgMzUuOTY3NTExMiwyNC44NzI3NzIyIDM3Ljk2NjYzMzEsMTYuNTI5MzU1MSBDMzkuMTU1NTk2NSwxMS41NjcxNjc4IDQxLjMyOTMwODgsNy41MTkwODQ2MiA0NC42MzQ2MDY0LDQuNTk4NDYzMDUgQzQ4LjEyNDEzOTQsMS41MTUwNDc3NyA1Mi41MzYwMzI3LDAuMDAyMDEyMTY2MDYgNTcuNDkzMjU3LDAuMDAyMDEyMTY2MDYgQzY1LjY3MTIwMTMsMC4wMDIwMTIxNjYwNiA3NC4yNjgyNjAyLDMuNzI3MzIxNDMgODMuNDU1NzI0NiwxMC44MDQ0MjY0IEM4Ny4yMDMxMjAzLDEzLjY5MTA0NTggOTEuMDkyNDM2NiwxNy4xNzA0MTEgOTUuMTMxNjUxNSwyMS4yNDQ0NzQ2IEM5NS40NTMxNDA0LDIwLjgzMTAyNjUgOTUuODE2NTQxNiwyMC40NDEwNDUzIDk2LjIyMTQzMDEsMjAuMDgwNjE1MiBDMTA3LjY0MDk4LDkuOTE0OTcxNTggMTE3LjI1NTI0NSwzLjU5ODkyNzE2IDEyNS40Nzg0MDgsMS4xNjM2NTA2OCBDMTMwLjM2Nzg5OSwtMC4yODQzNjQwMDUgMTM0Ljk1ODUyNiwtMC40MjIzMTc5NzggMTM5LjEzODkzNiwwLjk4MzAzMTAyMSBDMTQzLjU1MTYzMSwyLjQ2NjQ2ODQ0IDE0Ny4wNjc2Niw1LjUzMjk0ODg4IDE0OS41NDgzMTQsOS44MjgxMDkxMiBDMTUzLjY0MjI4OCwxNi45MTY2NzM1IDE1NC43MjE5MTgsMjYuMjMxMDk4MyAxNTMuMTk1NTk1LDM3LjczMjAyNDMgQzE1Mi41NzM0NTEsNDIuNDE5OTExMiAxNTEuNTA5ODUsNDcuNTI2MzgzMSAxNTAuMDA3MDk0LDUzLjA1OTMxNTMgQzE1MC41NzQwNDUsNTMuMTI3NzA4NiAxNTEuMTQyNDE2LDUzLjI1MzI4MDggMTUxLjcwNTA0MSw1My40Mzk1Mjk3IEMxNjYuMTkzOTMyLDU4LjIzNTg2NzggMTc2LjQ1MzU4Miw2My4zOTM3NDYyIDE4Mi42NjUwMjEsNjkuMjg4MjgzOSBDMTg2LjM2MDY2OSw3Mi43OTUzODMxIDE4OC43NzM5NzIsNzYuNjk5ODQzNCAxODkuNjQ2MzY1LDgxLjAyMTgyMDQgQzE5MC41NjcxNzYsODUuNTgzNjc0NiAxODkuNjY5MzEzLDkwLjE1OTMzMTYgMTg3LjE5MTU0OCw5NC40NTEyOTY3IEMxODMuMTA1MjExLDEwMS41Mjk2MTQgMTc1LjU5MTY0MywxMDcuMTEyMjEgMTY0Ljg4NzU4NywxMTEuNTM0MDMxIEMxNjAuNTg5NTUyLDExMy4zMDk1MzkgMTU1LjcyNjU3OSwxMTQuOTE3NTU5IDE1MC4yOTMyNTksMTE2LjM2Mzc0OCBDMTUwLjU0MTE3NiwxMTYuOTIyOTIgMTUwLjczMzUyMSwxMTcuNTE2NzU5IDE1MC44NjIxMzgsMTE4LjEzOTc1OCBDMTUzLjk1NDg4NiwxMzMuMTIwNTA1IDE1NC42MTg1OTgsMTQ0LjYxMDYxIDE1Mi42MTk0NzcsMTUyLjk1NDAyNyBDMTUxLjQzMDUxMywxNTcuOTE2MjE0IDE0OS4yNTY4MDEsMTYxLjk2NDI5NyAxNDUuOTUxNTAzLDE2NC44ODQ5MTkgQzE0Mi40NjE5NywxNjcuOTY4MzM0IDEzOC4wNTAwNzcsMTY5LjQ4MTM3IDEzMy4wOTI4NTMsMTY5LjQ4MTM3IEMxMjQuOTE0OTA4LDE2OS40ODEzNyAxMTYuMzE3ODUsMTY1Ljc1NjA2MSAxMDcuMTMwMzg1LDE1OC42Nzg5NTYgQzEwMy4zNDMxMDQsMTU1Ljc2MTYxMyA5OS40MTA4NjU1LDE1Mi4yMzg4MzkgOTUuMzI1NDMzNywxNDguMTA4NjE5IEM5NC45MDUwNzUzLDE0OC43NjU0NzQgOTQuMzg4OTY4MSwxNDkuMzc2MDExIDkzLjc3ODU2OTksMTQ5LjkxOTM4NSBDODIuMzU5MDE5OCwxNjAuMDg1MDI4IDcyLjc0NDc1NSwxNjYuNDAxMDczIDY0LjUyMTU5MTUsMTY4LjgzNjM0OSBDNTkuNjMyMTAwOSwxNzAuMjg0MzY0IDU1LjA0MTQ3MzYsMTcwLjQyMjMxOCA1MC44NjEwNjM2LDE2OS4wMTY5NjkgQzQ2LjQ0ODM2ODYsMTY3LjUzMzUzMiA0Mi45MzIzNDA0LDE2NC40NjcwNTEgNDAuNDUxNjg2MiwxNjAuMTcxODkxIEMzNi4zNTc3MTE2LDE1My4wODMzMjcgMzUuMjc4MDgyMywxNDMuNzY4OTAyIDM2LjgwNDQwNTMsMTMyLjI2Nzk3NiBDMzcuNDQ5MDM4LDEyNy40MTA2MzQgMzguNTY3NjIsMTIyLjEwMzg5OCA0MC4xNTc1ODkxLDExNi4zMzkwMDkgQzM5LjUzNjEwNDEsMTE2LjI3NjEwNCAzOC45MTIwNzU0LDExNi4xNDQ4MTYgMzguMjk0OTU5MSwxMTUuOTQwNTI5IEMyMy44MDYwNjg0LDExMS4xNDQxOTEgMTMuNTQ2NDE4NCwxMDUuOTg2MzEyIDcuMzM0OTc4OTIsMTAwLjA5MTc3NSBDMy42MzkzMzEyMSw5Ni41ODQ2NzU0IDEuMjI2MDI3NTIsOTIuNjgwMjE1MSAwLjM1MzYzNTIzNSw4OC4zNTgyMzgxIEMtMC41NjcxNzYzMzMsODMuNzk2MzgzOSAwLjMzMDY4NjU4MSw3OS4yMjA3MjY5IDIuODA4NDUyMzYsNzQuOTI4NzYxOCBDNi44OTQ3ODg2Myw2Ny44NTA0NDQzIDE0LjQwODM1NjUsNjIuMjY3ODQ4MSAyNS4xMTI0MTMzLDU3Ljg0NjAyNzMgQzI5LjUzODUxNDMsNTYuMDE3NjE1NCAzNC41NjM3MjA4LDU0LjM2NjgyMiA0MC4xOTM5Mzk0LDUyLjg4NzQ2NzQgQzM5Ljk5MzMzOTMsNTIuMzk2OTE3MSAzOS44MzQ5Mzc0LDUxLjg4MTEyMzUgMzkuNzIzOTcxMiw1MS4zNDM2MjM3IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUGF0aFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMwMDJDNEJcIlxuICAgICAgICAgICAgICAgIGZpbGxSdWxlPVwibm9uemVyb1wiXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDk1LjAwMDAwMCwgODUuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05NS4wMDAwMDAsIC04NS4wMDAwMDApIFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk05MS43MzUsMTEwIEw5MS43MzUsMTE2IEw4MC42MzIyMDUxLDExNiBDNzguODQxMTI4NiwxMTYgNzcuMTg2ODYxNCwxMTUuMDQxOTc1IDc2LjI5NTQ0ODksMTEzLjQ4ODQ4MyBMNzQuMjk0LDExMCBMOTEuNzM1LDExMCBaIE0xMTYuMTgxLDExMCBMMTE0LjE4MDI1NiwxMTMuNDg4NDgzIEMxMTMuMjg4ODQ0LDExNS4wNDE5NzUgMTExLjYzNDU3NiwxMTYgMTA5Ljg0MzUsMTE2IEw5OC43MzUsMTE2IEw5OC43MzUsMTEwIEwxMTYuMTgxLDExMCBaIE05MS43MzUsOTYgTDkxLjczNSwxMDMgTDcwLjI3NywxMDMgTDY2LjI2LDk2IEw5MS43MzUsOTYgWiBNMTI0LjIxNSw5NiBMMTIwLjE5OCwxMDMgTDk4LjczNSwxMDMgTDk4LjczNSw5NiBMMTI0LjIxNSw5NiBaIE05MS43MzUsODIgTDkxLjczNSw4OSBMNjIuMjQ0LDg5IEw2MS42NjMyNDM4LDg3Ljk4ODQ4MjYgQzYwLjc3ODkxODcsODYuNDQ3MzQxNyA2MC43Nzg5MTg3LDg0LjU1MjY1ODMgNjEuNjYzMjQzOCw4My4wMTE1MTc0IEw2Mi4yNDMsODIgTDkxLjczNSw4MiBaIE0xMjguMjMyLDgyIEwxMjguODEyNDYxLDgzLjAxMTUxNzQgQzEyOS42OTY3ODYsODQuNTUyNjU4MyAxMjkuNjk2Nzg2LDg2LjQ0NzM0MTcgMTI4LjgxMjQ2MSw4Ny45ODg0ODI2IEwxMjguMjMxLDg5IEw5OC43MzUsODkgTDk4LjczNSw4MiBMMTI4LjIzMiw4MiBaIE05MS43MzUsNjggTDkxLjczNSw3NSBMNjYuMjYsNzUgTDcwLjI3Nyw2OCBMOTEuNzM1LDY4IFogTTEyMC4xOTgsNjggTDEyNC4yMTUsNzUgTDk4LjczNSw3NSBMOTguNzM1LDY4IEwxMjAuMTk4LDY4IFogTTkxLjczNSw1NSBMOTEuNzM1LDYxIEw3NC4yOTMsNjEgTDc2LjI5NTQ0ODksNTcuNTExNTE3NCBDNzcuMTg2ODYxNCw1NS45NTgwMjUgNzguODQxMTI4Niw1NSA4MC42MzIyMDUxLDU1IEw5MS43MzUsNTUgWiBNMTA5Ljg0MzUsNTUgQzExMS42MzQ1NzYsNTUgMTEzLjI4ODg0NCw1NS45NTgwMjUgMTE0LjE4MDI1Niw1Ny41MTE1MTc0IEwxMTYuMTgyLDYxIEw5OC43MzUsNjEgTDk4LjczNSw1NSBMMTA5Ljg0MzUsNTUgWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJQb2x5Z29uLTJcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZEOTRDXCJcbiAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTU0Ljg2MDE3MjksOTguMzU3NzU3OCBDNTYuMTcxNTIyNCw5Ny42MDgyODU2IDU3LjgzNjAyNDYsOTguMDc0NjAxNCA1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU4LjU3Nzk0MjQsOTkuMzk5MzAzNCBMNTkuMDUyNTg0MywxMDAuMjQzNTIgQzYyLjg1NjMzOTIsMTA2Ljk4Mjk5MyA2Ni44MTkwMTE2LDExMy4zODAxNzYgNzAuOTQwNjAxNiwxMTkuNDM1MDY4IEM3NS44MDc4ODA4LDEyNi41ODU0MjcgODEuMjgxODQsMTMzLjgyNDExIDg3LjM2MjQ3OTIsMTQxLjE1MTExNSBDODguMzE2ODc3OCwxNDIuMzAxMTQgODguMTg0OTQzNywxNDQuMDExMTc2IDg3LjA2NTY4NiwxNDQuOTk3OTM3IEw4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODYuNDU0MjA4NSwxNDUuNTM0NjI1IEM2Ni4zNDY1Mzg5LDE2My4xMDMzMTQgNTMuMjc3ODE4OCwxNjYuNjEyNTUyIDQ3LjI0ODA0ODIsMTU2LjA2MjM0MSBDNDEuMzUwMDY1MiwxNDUuNzQyNzE3IDQzLjQ4NDQ5MTUsMTI2Ljk4Mjg4OCA1My42NTEzMjc0LDk5Ljc4Mjg1MjYgQzUzLjg3NjgxOCw5OS4xNzk1ODIxIDU0LjMwNDU4NjEsOTguNjc1MjkxIDU0Ljg2MDE3MjksOTguMzU3NzU3OCBaIE0xNDAuNTM0MTc3LDExOS4wNDE1MDQgQzE0MS45ODYxMzEsMTE4Ljc4NTE3NyAxNDMuMzc1NDk2LDExOS43NDIxMzggMTQzLjY1OTYzLDEyMS4xOTQyNDIgTDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuODEyODE1LDEyMS45ODYzNzYgQzE0OC43ODIzNjUsMTQ3Ljk5NTQ1OSAxNDUuMjgzMzQ4LDE2MSAxMzMuMzE1NzY0LDE2MSBDMTIxLjYwOTc0NSwxNjEgMTA2LjcwODcyNCwxNDkuOTA5MDA3IDg4LjYxMjcwMTgsMTI3LjcyNzAyMiBDODguMjExMzQ5NSwxMjcuMjM1MDQ3IDg3Ljk5NDU3MjMsMTI2LjYxNzM3MSA4OCwxMjUuOTgxNTA5IEM4OC4wMTMxNTgsMTI0LjQ4MDY4NiA4OS4yMzU3ODU0LDEyMy4yNzQ2NTEgOTAuNzMwOTE4LDEyMy4yODc3NTYgTDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MS42ODQ2NTQ0LDEyMy4yOTQ1MzEgQzk5LjMwNTY5NzksMTIzLjMzNTk5NCAxMDYuNzE0Mzg3LDEyMy4wNzE1OTEgMTEzLjkxMDcyMywxMjIuNTAxMzIzIEMxMjIuNDA5MDM5LDEyMS44Mjc4OCAxMzEuMjgzNTIzLDEyMC42NzQ2MDcgMTQwLjUzNDE3NywxMTkuMDQxNTA0IFogTTE0Ny40MDg3MjYsNjMuODExOTY2MyBDMTQ3LjkzMjEzOSw2Mi40MDI2OTAzIDE0OS41MDgzODYsNjEuNjYzNDUzNyAxNTAuOTU0NTgxLDYyLjE0OTAxMiBMMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MS43NDI1NTIsNjIuNDE1NDg1NCBDMTc3LjU4Mzc2Myw3MS4yMTc5MjIgMTg3LjQwMjM1Niw4MC44OTE2ODA1IDE4MS4xOTgzMzIsOTEuNDM2NzYwOSBDMTc1LjEyOTkwNCwxMDEuNzUxMzY2IDE1Ny40ODQzNDcsMTA5LjI2MDMzOSAxMjguMjYxNjYsMTEzLjk2MzY3OCBDMTI3LjYxMzUyOSwxMTQuMDY3OTk0IDEyNi45NDg2NDMsMTEzLjk0NTk2OSAxMjYuMzgyNzM1LDExMy42MTg4NDMgQzEyNS4wNDcwMjUsMTEyLjg0NjcyOSAxMjQuNjAyMDQ2LDExMS4xNTgyMTQgMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuMzg4ODQ4LDEwOS44NDc0MzggTDEyNS44ODkzMjgsMTA5LjAxMDUgQzEyOS44NzcxODMsMTAyLjMxNjMzIDEzMy40ODEzNTgsOTUuNjU0MjYyMSAxMzYuNzAxODU0LDg5LjAyNDI5NTcgQzE0MC41MDUwMSw4MS4xOTQ4MTc5IDE0NC4wNzM5NjcsNzIuNzkwNzA4MSAxNDcuNDA4NzI2LDYzLjgxMTk2NjMgWiBNNjEuNzM4MzM5OCw1Ni4wMzYzMjE4IEM2Mi4zODY0NzA4LDU1LjkzMjAwNjMgNjMuMDUxMzU2NSw1Ni4wNTQwMzE1IDYzLjYxNzI2NDYsNTYuMzgxMTU3MyBDNjQuOTUyOTc1NCw1Ny4xNTMyNzEgNjUuMzk3OTUzOCw1OC44NDE3ODYyIDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuNjExMTUxNyw2MC4xNTI1NjE1IEw2NC4xMTA2NzE4LDYwLjk4OTUwMDEgQzYwLjEyMjgxNjgsNjcuNjgzNjY5OSA1Ni41MTg2NDE2LDc0LjM0NTczNzkgNTMuMjk4MTQ2Miw4MC45NzU3MDQzIEM0OS40OTQ5OSw4OC44MDUxODIxIDQ1LjkyNjAzMjgsOTcuMjA5MjkxOSA0Mi41OTEyNzQ0LDEwNi4xODgwMzQgQzQyLjA2Nzg2MDgsMTA3LjU5NzMxIDQwLjQ5MTYxNDIsMTA4LjMzNjU0NiAzOS4wNDU0MTksMTA3Ljg1MDk4OCBMMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM4LjI1NzQ0NzUsMTA3LjU4NDUxNSBDMTIuNDE2MjM3Miw5OC43ODIwNzggMi41OTc2NDM5OCw4OS4xMDgzMTk1IDguODAxNjY3ODYsNzguNTYzMjM5MSBDMTQuODcwMDk1Nyw2OC4yNDg2MzM1IDMyLjUxNTY1Myw2MC43Mzk2NjExIDYxLjczODMzOTgsNTYuMDM2MzIxOCBaIE0xMDMuNTQ1NzkyLDI0LjQ2NTM3NDYgQzEyMy42NTM0NjEsNi44OTY2ODY0MSAxMzYuNzIyMTgxLDMuMzg3NDQ3NzggMTQyLjc1MTk1MiwxMy45Mzc2NTg3IEMxNDguNjQ5OTM1LDI0LjI1NzI4MjYgMTQ2LjUxNTUwOCw0My4wMTcxMTIyIDEzNi4zNDg2NzMsNzAuMjE3MTQ3NCBDMTM2LjEyMzE4Miw3MC44MjA0MTc5IDEzNS42OTU0MTQsNzEuMzI0NzA5IDEzNS4xMzk4MjcsNzEuNjQyMjQyMiBDMTMzLjgyODQ3OCw3Mi4zOTE3MTQ0IDEzMi4xNjM5NzUsNzEuOTI1Mzk4NiAxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMS40MjIwNTgsNzAuNjAwNjk2NiBMMTMwLjk0NzQxNiw2OS43NTY0Nzk4IEMxMjcuMTQzNjYxLDYzLjAxNzAwNjUgMTIzLjE4MDk4OCw1Ni42MTk4MjM5IDExOS4wNTkzOTgsNTAuNTY0OTMyIEMxMTQuMTkyMTE5LDQzLjQxNDU3MjcgMTA4LjcxODE2LDM2LjE3NTg5MDMgMTAyLjYzNzUyMSwyOC44NDg4ODQ3IEMxMDEuNjgzMTIyLDI3LjY5ODg2MDIgMTAxLjgxNTA1NiwyNS45ODg4MjQzIDEwMi45MzQzMTQsMjUuMDAyMDYyOSBMMTAyLjkzNDMxNCwyNS4wMDIwNjI5IFogTTU3LjY4NDIzNjEsOCBDNjkuMzkwMjU1MSw4IDg0LjI5MTI3NTgsMTkuMDkwOTkyNiAxMDIuMzg3Mjk4LDQxLjI3Mjk3NzcgQzEwMi43ODg2NTEsNDEuNzY0OTUyNyAxMDMuMDA1NDI4LDQyLjM4MjYyODggMTAzLDQzLjAxODQ5MTEgQzEwMi45ODY4NDIsNDQuNTE5MzE0NCAxMDEuNzY0MjE1LDQ1LjcyNTM0ODkgMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEwxMDAuMjY5MDgyLDQ1LjcxMjI0NDUgTDk5LjMxNTM0NTYsNDUuNzA1NDY4OSBDOTEuNjk0MzAyMSw0NS42NjQwMDYzIDg0LjI4NTYxMjYsNDUuOTI4NDA5MSA3Ny4wODkyNzcyLDQ2LjQ5ODY3NzMgQzY4LjU5MDk2MTIsNDcuMTcyMTIgNTkuNzE2NDc2Nyw0OC4zMjUzOTMgNTAuNDY1ODIzNSw0OS45NTg0OTYyIEM0OS4wMTM4NjkxLDUwLjIxNDgyMzEgNDcuNjI0NTA0NCw0OS4yNTc4NjE4IDQ3LjM0MDM2OTcsNDcuODA1NzU4IEw0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMTg3MTg0Niw0Ny4wMTM2MjM1IEM0Mi4yMTc2MzQ3LDIxLjAwNDU0MTIgNDUuNzE2NjUxOSw4IDU3LjY4NDIzNjEsOCBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIkNvbWJpbmVkLVNoYXBlXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGNDE1NFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gIClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSdcblxuaW1wb3J0IHVzZUxvY2FsU3RvcmFnZSBmcm9tICcuL3VzZUxvY2FsU3RvcmFnZSdcbmltcG9ydCB7IHVzZUlzTW91bnRlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmltcG9ydCB7IFBhbmVsLCBCdXR0b24gfSBmcm9tICcuL3N0eWxlZENvbXBvbmVudHMnXG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBkZWZhdWx0VGhlbWUgYXMgdGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuLy8gaW1wb3J0IHsgZ2V0UXVlcnlTdGF0dXNMYWJlbCwgZ2V0UXVlcnlTdGF0dXNDb2xvciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgRXhwbG9yZXIgZnJvbSAnLi9FeHBsb3JlcidcbmltcG9ydCBMb2dvIGZyb20gJy4vTG9nbydcblxuaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVhY3QgdGFibGUgdG8gYXR0YWNoIHRoZSBkZXZ0b29scyB0by5cbiAgICovXG4gIHRhYmxlOiBhbnlcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHBhbmVsLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBldGMuXG4gICAqL1xuICBwYW5lbFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LFxuICAgIEhUTUxEaXZFbGVtZW50XG4gID5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGFkZCBwcm9wcyB0byB0aGUgY2xvc2UgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgY2xvc2VCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHRvZ2dsZSBidXR0b24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBjbGFzc05hbWUsIHN0eWxlIChtZXJnZSBhbmQgb3ZlcnJpZGUgZGVmYXVsdCBzdHlsZSksIG9uQ2xpY2sgKGV4dGVuZCBkZWZhdWx0IGhhbmRsZXIpLCBldGMuXG4gICAqL1xuICB0b2dnbGVCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byByZW5kZXIgdGhlIGRldnRvb2xzIGluc2lkZSBhIGRpZmZlcmVudCB0eXBlIG9mIGNvbnRhaW5lciBlbGVtZW50IGZvciBhMTF5IHB1cnBvc2VzLlxuICAgKiBBbnkgc3RyaW5nIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgdmFsaWQgaW50cmluc2ljIEpTWCBlbGVtZW50IGlzIGFsbG93ZWQuXG4gICAqIERlZmF1bHRzIHRvICdmb290ZXInLlxuICAgKi9cbiAgY29udGFpbmVyRWxlbWVudD86IHN0cmluZyB8IGFueVxufVxuXG5pbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3Qgc3R5bGUgb2JqZWN0IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBpbmxpbmUgc3R5bGVzXG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBSZWFjdCBjbGFzc05hbWUgcHJvcGVydHkgdXNlZCB0byBzdHlsZSBhIGNvbXBvbmVudCB3aXRoIGNsYXNzZXNcbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogQSBib29sZWFuIHZhcmlhYmxlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGFuZWwgaXMgb3BlbiBvciBjbG9zZWRcbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0b2dnbGVzIHRoZSBvcGVuIGFuZCBjbG9zZSBzdGF0ZSBvZiB0aGUgcGFuZWxcbiAgICovXG4gIHNldElzT3BlbjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzKHtcbiAgaW5pdGlhbElzT3BlbixcbiAgdGFibGUsXG4gIHBhbmVsUHJvcHMgPSB7fSxcbiAgdG9nZ2xlQnV0dG9uUHJvcHMgPSB7fSxcbiAgY29udGFpbmVyRWxlbWVudDogQ29udGFpbmVyID0gJ2Zvb3RlcicsXG59OiBEZXZ0b29sc09wdGlvbnMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3Qgcm9vdFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcGFuZWxSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gICAgJ3JlYWN0VGFibGVEZXZ0b29sc09wZW4nLFxuICAgIGluaXRpYWxJc09wZW5cbiAgKVxuICBjb25zdCBpc01vdW50ZWQgPSB1c2VJc01vdW50ZWQoKVxuXG4gIGNvbnN0IHsgc3R5bGU6IHBhbmVsU3R5bGUgPSB7fSwgLi4ub3RoZXJQYW5lbFByb3BzIH0gPSBwYW5lbFByb3BzXG5cbiAgY29uc3Qge1xuICAgIHN0eWxlOiB0b2dnbGVCdXR0b25TdHlsZSA9IHt9LFxuICAgIG9uQ2xpY2s6IG9uVG9nZ2xlQ2xpY2ssXG4gICAgLi4ub3RoZXJUb2dnbGVCdXR0b25Qcm9wc1xuICB9ID0gdG9nZ2xlQnV0dG9uUHJvcHNcblxuICAvLyBEbyBub3QgcmVuZGVyIG9uIHRoZSBzZXJ2ZXJcbiAgaWYgKCFpc01vdW50ZWQoKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgcmVmPXtyb290UmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNcIj5cbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIHshaXNPcGVuID8gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgey4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiT3BlbiBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICAgICAgICAgIG9uVG9nZ2xlQ2xpY2sgJiYgb25Ub2dnbGVDbGljayhlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICBtYXJnaW46ICcuNXJlbScsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMS41ZW0nLFxuICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgICAgICAgICAgIC4uLnRvZ2dsZUJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TG9nbyBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFxuICAgICAgICAgICAgcmVmPXtwYW5lbFJlZiBhcyBhbnl9XG4gICAgICAgICAgICB7Li4ub3RoZXJQYW5lbFByb3BzfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICBzZXRJc09wZW49e3NldElzT3Blbn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAuLi5wYW5lbFN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgIDwvQ29udGFpbmVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBEZXZ0b29sc1BhbmVsT3B0aW9uc1xuPihmdW5jdGlvbiBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbChwcm9wcywgcmVmKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3Qge1xuICAgIHRhYmxlLFxuICAgIGlzT3BlbiA9IHRydWUsXG4gICAgc2V0SXNPcGVuLFxuICAgIC4uLnBhbmVsUHJvcHNcbiAgfSA9IHByb3BzIGFzIERldnRvb2xzUGFuZWxPcHRpb25zICYge1xuICAgIHRhYmxlOiBUYWJsZTxhbnk+XG4gIH1cblxuICAvLyBjb25zdCBbYWN0aXZlTWF0Y2hJZCwgc2V0QWN0aXZlUm91dGVJZF0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gIC8vICAgJ3JlYWN0VGFibGVEZXZ0b29sc0FjdGl2ZVJvdXRlSWQnLFxuICAvLyAgICcnLFxuICAvLyApXG5cbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgPFBhbmVsIHJlZj17cmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFwiIHsuLi5wYW5lbFByb3BzfT5cbiAgICAgICAgPHN0eWxlXG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYFxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICoge1xuICAgICAgICAgICAgICBzY3JvbGxiYXItY29sb3I6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH0gJHt0aGVtZS5ncmF5fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICo6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10cmFjaywgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IC41ZW07XG4gICAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNDAlJyxcbiAgICAgICAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7dGhlbWUuZ3JheUFsdH1gLFxuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdGhlbWUuYmFja2dyb3VuZEFsdCxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ29cbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnY2xhbXAoLjhyZW0sIDJ2dywgMS4zcmVtKScsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZWFjdCBUYWJsZXsnICd9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRGV2dG9vbHNcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIFJlYWN0IFRhYmxlIERldnRvb2xzXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDbG9zZVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIGZsZXg6ICcxJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkluc3RhbmNlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGV9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTdGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFN0YXRlKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0QWxsQ29sdW1ucygpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb3JlIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0Q29yZVJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJGaWx0ZXJlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEZpbHRlcmVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlNvcnRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFNvcnRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJHcm91cGVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0R3JvdXBlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJFeHBhbmRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEV4cGFuZGVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7LyogPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlJvdyBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1BhbmVsPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKVxufSlcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5mdW5jdGlvbiBTa2VsZXRvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1hbmltYXRlLXB1bHNlIHBzLXJvdW5kZWQtbWQgcHMtYmctcHJpbWFyeS8xMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwgImltcG9ydCB7IGZsZXhSZW5kZXIsIHR5cGUgSGVhZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQXJyb3dEb3duV2lkZU5hcnJvdywgQXJyb3dVcFdpZGVOYXJyb3csIENoZXZyb25Eb3duLCBNb3ZlRG93biwgTW92ZVVwLCBQaW4sIFBpbk9mZiwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbn0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUHJvcHM8VERhdGE+IHtcbiAgaGVhZGVyOiBIZWFkZXI8VERhdGEsIHVua25vd24+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlcjxURGF0YT4ocHJvcHM6IEhlYWRlclByb3BzPFREYXRhPikge1xuICBjb25zdCB7IGhlYWRlciwgY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzXCI+XG4gICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyID8gbnVsbCA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1taW4tdy0wIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtZm9yZWdyb3VuZC85MFwiPlxuICAgICAgICAgICAgICAgIHtmbGV4UmVuZGVyKGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlciwgaGVhZGVyLmdldENvbnRleHQoKSl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXNocmluay0wIHBzLWdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtbWwtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlRG93biBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZVVwIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUGluKCkgJiYgaGVhZGVyLmNvbHVtbi5pZCAhPT0gXCJzZWxlY3RcIiAmJiAoXG4gICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtcHgtMCBwcy1oLTYgcHMtdy02XCI+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpICYmIChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4udG9nZ2xlU29ydGluZygpfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93bldpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXBXaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGFzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwgc29ydGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi5waW4oaGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gZmFsc2UgOiBcImxlZnRcIil9PlxuICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluT2ZmIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFVucGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW4gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgUGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5SZXNpemUoKSAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiB8fCBlLmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMCBwcy10b3AtMCBwcy1oLWZ1bGwgcHMtdy1weCBwcy1jdXJzb3ItY29sLXJlc2l6ZSBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOnBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgICApfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgY29sdW1uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkTG9hZGluZ0Jhcih7IGNsYXNzTmFtZSB9OiBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXYgZGF0YS1sb2FkaW5nLWJhciBjbGFzc05hbWU9e2NuKFwicHMtaC1bMnB4XSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLWJnLWdyYXktMjAwIHBzLXotNTBcIiwgY2xhc3NOYW1lKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWFuaW1hdGUtaW5kZXRlcm1pbmF0ZS1iYXIgcHMtaC1mdWxsIHBzLXctMS8zIHBzLXJvdW5kZWQtci1mdWxsIHBzLWJnLXB1cnBsZS02MDBcIiAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCwgQ2hldnJvbnNMZWZ0LCBDaGV2cm9uc1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHZhcmlhbnQ/OiBcImJhc2ljXCIgfCBcIm51bWVyaWNcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkUGFnaW5hdGlvbihwcm9wczogRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZSwgdmFyaWFudCA9IFwiYmFzaWNcIiB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBwYWdlSW5kZXggfSA9IHRhYmxlLmdldFN0YXRlKCkucGFnaW5hdGlvbjtcbiAgY29uc3QgcGFnZUNvdW50ID0gdGFibGUuZ2V0UGFnZUNvdW50KCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJvdW5kZWQtYi1sZyBwcy1vdmVyZmxvdy1jbGlwIHBzLXN0aWNreSBwcy1ib3R0b20tMCBwcy1sZWZ0LTAgcHMtYm9yZGVyLXQtMCB3LWZ1bGwgcHMtei0yMCBwcy1wLTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXNwYWNlLXgtMiBwcy1weS0yIHBzLXB4LTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy1iYWNrZHJvcC1ibHVyLXNtIHBzLWJnLXRhYmxlLWhlYWQvOTBcIj5cbiAgICAgICAge3ZhcmlhbnQgPT09IFwiYmFzaWNcIiA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQcmV2aW91c1xuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC05XCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBOZXh0XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleCgwKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy10ZXh0LXhzIHBzLWZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgUGFnZVxuICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBtaW49ezF9XG4gICAgICAgICAgICAgICAgICBtYXg9e3BhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYWdlSW5kZXggKyAxfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0xNlwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZUluZGV4ID0gZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIC0gMSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXNocmluay0wIHBzLXctbWF4XCI+b2Yge3BhZ2VDb3VudH08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUNvdW50IC0gMSl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zUmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNvbHVtbjogQ29sdW1uPFJlY29yZDxzdHJpbmcsIHVua25vd24+Piwga2luZDogXCJoZWFkZXJcIiB8IFwiY2VsbFwiKSB7XG4gIGNvbnN0IGlzUGlubmVkID0gY29sdW1uLmdldElzUGlubmVkKCk7XG4gIGNvbnN0IGlzRmlyc3RMZWZ0UGlubmVkQ29sdW1uID0gaXNQaW5uZWQgPT09IFwibGVmdFwiICYmIGNvbHVtbi5nZXRJc0ZpcnN0Q29sdW1uKFwibGVmdFwiKTtcbiAgY29uc3QgaXNGaXJzdFJpZ2h0UGlubmVkQ29sdW1uID0gaXNQaW5uZWQgPT09IFwicmlnaHRcIiAmJiBjb2x1bW4uZ2V0SXNGaXJzdENvbHVtbihcInJpZ2h0XCIpO1xuICBjb25zdCBpc0ZpcnN0TGVmdE9yUmlnaHRQaW5uZWRDb2x1bW4gPSBpc0ZpcnN0TGVmdFBpbm5lZENvbHVtbiB8fCBpc0ZpcnN0UmlnaHRQaW5uZWRDb2x1bW47XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IGNuKFxuICAgICAgXCJwcy1ncm91cCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICBcInBzLW92ZXJmbG93LWhpZGRlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy10ZXh0LWVsbGlwc2lzXCIsXG4gICAgICBpc0ZpcnN0TGVmdE9yUmlnaHRQaW5uZWRDb2x1bW4gJiYga2luZCA9PT0gXCJoZWFkZXJcIiAmJiBcInBzLXN0aWNreSBwcy16LTEwXCIsXG4gICAgICBpc0ZpcnN0TGVmdE9yUmlnaHRQaW5uZWRDb2x1bW4gJiYga2luZCA9PT0gXCJjZWxsXCIgJiYgXCJwcy1zdGlja3kgcHMtei05XCIsXG4gICAgICBpc0ZpcnN0TGVmdE9yUmlnaHRQaW5uZWRDb2x1bW4gJiYgXCJwcy1zaGFkb3ctWy0xcHhfMF8wXzBfaHNsKHZhcigtLWJvcmRlcikpXVwiLFxuICAgICksXG4gICAgc3R5bGU6IHtcbiAgICAgIHdpZHRoOiBjb2x1bW4uY29sdW1uRGVmLnNpemUsXG4gICAgICBsZWZ0OiBpc0ZpcnN0TGVmdFBpbm5lZENvbHVtbiA/IGAke2NvbHVtbi5nZXRTdGFydChcImxlZnRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IGlzRmlyc3RSaWdodFBpbm5lZENvbHVtbiA/IGAke2NvbHVtbi5nZXRBZnRlcihcInJpZ2h0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICB9LFxuICB9O1xufVxuIiwgImltcG9ydCAqIGFzIFRvb2x0aXBQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC10b29sdGlwXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgVG9vbHRpcFByb3ZpZGVyID0gVG9vbHRpcFByaW1pdGl2ZS5Qcm92aWRlcjtcblxuY29uc3QgVG9vbHRpcCA9IFRvb2x0aXBQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgVG9vbHRpcFRyaWdnZXIgPSBUb29sdGlwUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IFRvb2x0aXBDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8VG9vbHRpcFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFRvb2x0aXBQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJnLXByaW1hcnkgcHMtcHgtMyBwcy1weS0xLjUgcHMtdGV4dC14cyBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1hbmltYXRlLWluIHBzLWZhZGUtaW4tMCBwcy16b29tLWluLTk1IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXRvb2x0aXAtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvVG9vbHRpcFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblRvb2x0aXBDb250ZW50LmRpc3BsYXlOYW1lID0gVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBUb29sdGlwLCBUb29sdGlwVHJpZ2dlciwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciB9O1xuIiwgImltcG9ydCB7IEtleVJvdW5kIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBUb29sdGlwLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFByb3ZpZGVyLCBUb29sdGlwVHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3Rvb2x0aXBcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkSGVhZGVyQ2VsbCh7IGNvbHVtbiB9OiB7IGNvbHVtbjogQ29sdW1uIH0pIHtcbiAgaWYgKGNvbHVtbi5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAoXG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWZvbnQtbWVkaXVtIHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMVwiPlxuICAgICAgICA8VG9vbHRpcFByb3ZpZGVyIGRlbGF5RHVyYXRpb249ezMwMH0+XG4gICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgPEtleVJvdW5kIHNpemU9ezEyfSAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAgPHA+UHJpbWFyeSBLZXk8L3A+XG4gICAgICAgICAgICA8L1Rvb2x0aXBDb250ZW50PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9Ub29sdGlwUHJvdmlkZXI+XG4gICAgICAgIHtjb2x1bW4ubmFtZX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LW1lZGl1bSBwcy10cnVuY2F0ZVwiPntjb2x1bW4ubmFtZX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNzAgcHMtbG93ZXJjYXNlIHBzLXRydW5jYXRlXCI+XG4gICAgICAgIHtjb2x1bW4uZGF0YXR5cGUubmFtZX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSBcIi4vQm9vbGVhbklucHV0XCI7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tIFwiLi9EYXRlSW5wdXRcIjtcbmltcG9ydCB7IEVudW1JbnB1dCB9IGZyb20gXCIuL0VudW1JbnB1dFwiO1xuaW1wb3J0IHsgSnNvbklucHV0IH0gZnJvbSBcIi4vSnNvbklucHV0XCI7XG5pbXBvcnQgeyBOdW1lcmljSW5wdXQgfSBmcm9tIFwiLi9OdW1lcmljSW5wdXRcIjtcbmltcG9ydCB7IFJhd0lucHV0IH0gZnJvbSBcIi4vUmF3SW5wdXRcIjtcbmltcG9ydCB7IFRpbWVJbnB1dCB9IGZyb20gXCIuL1RpbWVJbnB1dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXQocHJvcHM6IHtcbiAgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdDogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgeyBjZWxsLCBjb2x1bW4sIG9uU3VibWl0IH0gPSBwcm9wcztcbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuICBjb25zdCByZWFkb25seSA9IGNvbHVtbi5pc0NvbXB1dGVkIHx8IHByb3BzLnJlYWRvbmx5O1xuXG4gIGNvbnN0IGNlbGxWYWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICAvLyBvbiByb3cgaW5zZXJ0aW9ucywgd2UgdHJlYXQgdW5kZWZpbmVkIGFzIGVtcHR5IGlucHV0XG4gIGNvbnN0IHZhbHVlID0gY2VsbFZhbHVlID09PSB1bmRlZmluZWQgPyBcIlwiIDogY2VsbFZhbHVlO1xuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SnNvbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IG9wdGlvbnM9e29wdGlvbnN9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFJhd0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e2lzT2JqZWN0VHlwZSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zd2l0Y2hcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJvb2xlYW5JbnB1dChwcm9wczogQm9vbGVhbklucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gZmFsc2UgOiAodmFsdWUgYXMgYm9vbGVhbik7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZVRvU3VibWl0ID0gc2V0VG9OdWxsID8gbnVsbCA6IGN1cnJlbnRWYWx1ZTtcbiAgICBpZiAodmFsdWVUb1N1Ym1pdCAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KHZhbHVlVG9TdWJtaXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWdhcC00IHBzLXB5LTAgcHMtcHgtMlwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cImJvb2xlYW4taW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgQm9vbGVhblxuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjI0IH19XG4gICAgICAgID5cbiAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICBpZD1cImJvb2xlYW4taW5wdXRcIlxuICAgICAgICAgICAgY2hlY2tlZD17Y3VycmVudFZhbHVlfVxuICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBkYXRhLXZhbHVlXG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLWZvbnQtbW9ub1wiXG4gICAgICAgICAgaW5pdGlhbD17eyB4OiAtNDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IHg6IDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjEyLCBkZWxheTogMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3NldFRvTnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtbGFiZWxcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgbGFiZWxWYXJpYW50cyA9IGN2YShcbiAgXCJwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLWxlYWRpbmctbm9uZSBwZWVyLWRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBwZWVyLWRpc2FibGVkOnBzLW9wYWNpdHktNzBcIixcbik7XG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4gJiBWYXJpYW50UHJvcHM8dHlwZW9mIGxhYmVsVmFyaWFudHM+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxMYWJlbFByaW1pdGl2ZS5Sb290IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGxhYmVsVmFyaWFudHMoKSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5MYWJlbC5kaXNwbGF5TmFtZSA9IExhYmVsUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IExhYmVsIH07XG4iLCAiaW1wb3J0ICogYXMgU3dpdGNoUHJpbWl0aXZlcyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXN3aXRjaFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFN3aXRjaCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U3dpdGNoUHJpbWl0aXZlcy5Sb290XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1pbmxpbmUtZmxleCBwcy1oLTUgcHMtdy05IHBzLXNocmluay0wIHBzLWN1cnNvci1wb2ludGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLWZ1bGwgcHMtYm9yZGVyLTIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1zbSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpwcy1iZy1pbnB1dFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAgIHJlZj17cmVmfVxuICA+XG4gICAgPFN3aXRjaFByaW1pdGl2ZXMuVGh1bWJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcG9pbnRlci1ldmVudHMtbm9uZSBwcy1ibG9jayBwcy1oLTQgcHMtdy00IHBzLXJvdW5kZWQtZnVsbCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1sZyBwcy1yaW5nLTAgcHMtdHJhbnNpdGlvbi10cmFuc2Zvcm0gZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtNCBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLXRyYW5zbGF0ZS14LTBcIixcbiAgICAgICl9XG4gICAgLz5cbiAgPC9Td2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4pKTtcblN3aXRjaC5kaXNwbGF5TmFtZSA9IFN3aXRjaFByaW1pdGl2ZXMuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU3dpdGNoIH07XG4iLCAiaW1wb3J0IHsgQ29ybmVyRG93bkxlZnQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0QWN0aW9uc1Byb3BzIHtcbiAgb25TYXZlPzogKCkgPT4gdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAgb25OdWxsQ2hhbmdlPzogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGlzTnVsbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgSW5wdXRBY3Rpb25zID0gKHtcbiAgb25TYXZlLFxuICBvbkNhbmNlbCxcbiAgb25DbG9zZSxcbiAgb25OdWxsQ2hhbmdlLFxuICBpc051bGwgPSBmYWxzZSxcbiAgcmVhZG9ubHksXG59OiBJbnB1dEFjdGlvbnNQcm9wcykgPT4ge1xuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAob25OdWxsQ2hhbmdlKSBvbk51bGxDaGFuZ2UoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU2F2ZSA9ICgpID0+IHtcbiAgICBpZiAob25TYXZlKSBvblNhdmUoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBpZiAob25DYW5jZWwpIG9uQ2FuY2VsKCk7XG4gICAgaWYgKG9uQ2xvc2UpIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLXRleHQteHMgcHMtXCI+XG4gICAgICB7IXJlYWRvbmx5ICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLW1yLWF1dG9cIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXIgcHMtY3Vyc29yLXBvaW50ZXJcIiBvbkNsaWNrPXtoYW5kbGVTYXZlfT5cbiAgICAgICAgICAgICAgPGtiZCBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1qdXN0aWZ5LWNlbnRlciBwcy1pdGVtcy1jZW50ZXIgcHMtaC02IHBzLXctNiBwcy1yb3VuZGVkLW1kIHBzLWJnLW11dGVkIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgIDxDb3JuZXJEb3duTGVmdCBzaXplPXsxMn0gc3Ryb2tlV2lkdGg9ezJ9IC8+XG4gICAgICAgICAgICAgIDwva2JkPntcIiBcIn1cbiAgICAgICAgICAgICAgU2F2ZSBjaGFuZ2VzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXIgcHMtY3Vyc29yLXBvaW50ZXJcIiBvbkNsaWNrPXtoYW5kbGVDYW5jZWx9PlxuICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLXRleHQtWzhweF0gcHMtbGVhZGluZy1ub25lIHBzLWZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICBFc2NcbiAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICBDYW5jZWwgY2hhbmdlc1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge29uTnVsbENoYW5nZSAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlclwiIGh0bWxGb3I9XCJzZXQtbnVsbGFibGVcIj5cbiAgICAgICAgICAgICAgICA8U3dpdGNoIGlkPVwic2V0LW51bGxhYmxlXCIgY2hlY2tlZD17aXNOdWxsfSBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZU51bGxDaGFuZ2V9IC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+U2V0IHRvIE5VTEw8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlSW5wdXQocHJvcHM6IERhdGVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRoZSBkYXRlIHVzaW5nIGRheWpzIGJhc2VkIG9uIGRldGVjdGVkIGZvcm1hdFxuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhpbnB1dFZhbHVlKTtcbiAgICAgIGlmICghZGF0ZS5pc1ZhbGlkKCkpIHJldHVybiBpbnB1dFZhbHVlO1xuXG4gICAgICAvLyBEZXRlY3QgaWYgaW5wdXQgaGFzIHRpbWUgY29tcG9uZW50XG4gICAgICBjb25zdCBoYXNUaW1lID0gaW5wdXRWYWx1ZS5pbmNsdWRlcyhcIjpcIik7XG5cbiAgICAgIC8vIEh1bWFuLXJlYWRhYmxlIGZvcm1hdCAobG9jYWxpemVkKVxuICAgICAgaWYgKGhhc1RpbWUpIHtcbiAgICAgICAgLy8gRm9yIHRpbWVzdGFtcHMsIHNob3cgZnVsbCBkYXRlIGFuZCB0aW1lXG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcIkxMIExUU1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciBkYXRlcywganVzdCBzaG93IHRoZSBkYXRlXG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcIkxMXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfVxuICB9LCBbaW5wdXRWYWx1ZV0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uU3VibWl0KGV2ZW50OiBGb3JtRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2lucHV0VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXRdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPElucHV0XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgPC9mb3JtPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXAtMiBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5Gb3JtYXR0ZWQgdmFsdWU8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LWZvcmVncm91bmRcIj57Zm9ybWF0dGVkRGF0ZX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9ucyBvblNhdmU9e2hhbmRsZVNhdmV9IG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUlucHV0UHJvcHMge1xuICBpbml0aWFsVmFsdWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnB1dChwcm9wczogVXNlSW5wdXRQcm9wcykge1xuICBjb25zdCB7IGluaXRpYWxWYWx1ZSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KGluaXRpYWxWYWx1ZSA/PyBcIlwiKTtcblxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBzZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZSB9O1xufVxuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IGJhZGdlVmFyaWFudHMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbnVtSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBvcHRpb25zPzogc3RyaW5nW107XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRW51bUlucHV0KHByb3BzOiBFbnVtSW5wdXRQcm9wcykge1xuICBjb25zdCB7IG9uU3VibWl0LCBjb2x1bW4sIHZhbHVlLCBvcHRpb25zID0gW10sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gKG9wdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKG9wdGlvbik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZXRUb051bGwpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBvblN1Ym1pdChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChjdXJyZW50VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsLCB2YWx1ZV0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpOyAvLyBSZXNldCBudWxsIHN0YXRlIGFzIHdlbGxcbiAgfTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1mb250LW1vbm8gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtcHgtMiBwcy1weS0wIHBzLXctZnVsbCBwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICB7Y3VycmVudFZhbHVlfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZmxleC13cmFwIHBzLWdhcC0yIHBzLXAtMiBwcy1taW4tdy1bdmFyKC0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLXdpZHRoKV0gcHMtbWF4LXctbWluIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtb3ZlcmZsb3cteS1zY3JvbGwgcHMtbWF4LWgtMzJcIj5cbiAgICAgICAge29wdGlvbnMubWFwKChvcHRpb24pID0+IChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBrZXk9e29wdGlvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtiYWRnZVZhcmlhbnRzKHsgdmFyaWFudDogb3B0aW9uID09PSBjdXJyZW50VmFsdWUgPyBcImRlZmF1bHRcIiA6IFwib3V0bGluZVwiIH0pfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3NldFRvTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3B0aW9ufVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbklucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBKc29uSW5wdXQocHJvcHM6IEpzb25JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUsIG9uU3VibWl0LCBjb2x1bW4sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBcIlwiIDogSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nPihpbml0aWFsVmFsdWUpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGpzb25WYWx1ZSA9IGN1cnJlbnRWYWx1ZSA9PT0gXCJcIiA/IG51bGwgOiAoSlNPTi5wYXJzZShjdXJyZW50VmFsdWUpIGFzIG9iamVjdCk7XG5cbiAgICAvLyBPbmx5IHN1Ym1pdCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICBpZiAoanNvblZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQoanNvblZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIHZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpO1xuICB9O1xuXG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgaGFuZGxlcnMgdGhhdCBpbmNsdWRlIHBvcG92ZXIgY2xvc2luZ1xuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtNCBwcy1weS0wXCI+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIHJvd3M9ezV9XG4gICAgICAgICAgdmFsdWU9e2N1cnJlbnRWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1iYXNlIHBzLWFwcGVhcmFuY2Utbm9uZSBwcy13LWZ1bGwgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLW91dGxpbmUtbm9uZSBwcy1zaGFkb3ctbm9uZSBwcy1iZy10cmFuc3BhcmVudCBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtZXJpY0lucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBOdW1lcmljSW5wdXQocHJvcHM6IE51bWVyaWNJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUsIG9uU3VibWl0LCBjb2x1bW4sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4odmFsdWUgPT09IG51bGwgPyBcIlwiIDogU3RyaW5nKHZhbHVlKSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZXRUb051bGwpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBvblN1Ym1pdChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCB0byBudW1iZXJcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogTnVtYmVyKGN1cnJlbnRWYWx1ZSk7XG5cbiAgICAvLyBPbmx5IHN1Ym1pdCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQobnVtZXJpY1ZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIHZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpO1xuICB9O1xuXG4gIC8vIFVzZSBvdXIgaG9vayB0byBnZXQgaGFuZGxlcnMgdGhhdCBpbmNsdWRlIHBvcG92ZXIgY2xvc2luZ1xuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWl0ZW1zLWNlbnRlciBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1nYXAtNCBwcy1weS0wXCI+XG4gICAgICAgIDxMYWJlbCBodG1sRm9yPVwibnVtZXJpYy1pbnB1dFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIj5cbiAgICAgICAgICBOdW1lcmljXG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBpbnB1dE1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICBwYXR0ZXJuPVwiXFxkKlwiXG4gICAgICAgICAgdmFsdWU9e2N1cnJlbnRWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWFwcGVhcmFuY2Utbm9uZSBwcy13LWZ1bGwgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLW91dGxpbmUtbm9uZSBwcy1zaGFkb3ctbm9uZSBwcy1iZy10cmFuc3BhcmVudCBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBzdGVwPVwiYW55XCJcbiAgICAgICAgICBsYW5nPVwiZW5fRU5cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF3SW5wdXRQcm9wcyB7XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYXdJbnB1dChwcm9wczogUmF3SW5wdXRQcm9wcykge1xuICBjb25zdCB7IG9uU3VibWl0LCB2YWx1ZSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgeyBoYW5kbGVPbkNoYW5nZSwgdmFsdWU6IGlucHV0VmFsdWUgfSA9IHVzZUlucHV0KHsgaW5pdGlhbFZhbHVlIH0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uU3VibWl0KGV2ZW50OiBGb3JtRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2lucHV0VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXRdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPElucHV0XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCIgLz5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxJbnB1dEFjdGlvbnMgb25TYXZlPXtoYW5kbGVTYXZlfSBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRpbWVJbnB1dChwcm9wczogVGltZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICAvLyBGb3JtYXQgdGltZSB2YWx1ZXMgaW4gYSBodW1hbi1yZWFkYWJsZSBtYW5uZXJcbiAgY29uc3QgZm9ybWF0dGVkVGltZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWlucHV0VmFsdWUuaW5jbHVkZXMoXCI6XCIpKSByZXR1cm4gaW5wdXRWYWx1ZTtcblxuICAgICAgY29uc3QgaGFzVGltZXpvbmUgPSAvWystXVxcZHsyfSg6XFxkezJ9KT8kLy50ZXN0KGlucHV0VmFsdWUpO1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGAyMDAwLTAxLTAxICR7aW5wdXRWYWx1ZX1gKTtcbiAgICAgIGlmIChkYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoXCJoOm1tIEFcIikgKyAoaGFzVGltZXpvbmUgPyBgICgke2RhdGUuZm9ybWF0KFwiWlwiKX0pYCA6IFwiXCIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lUmVnZXggPSAvKFxcZHsxLDJ9KTooXFxkezJ9KTooXFxkezJ9KSg/OlxcLlxcZCspPyhbKy1dXFxkezJ9KD86OlxcZHsyfSk/KT8vO1xuICAgICAgY29uc3QgbWF0Y2ggPSBpbnB1dFZhbHVlLm1hdGNoKHRpbWVSZWdleCk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgY29uc3QgaG91cnMgPSBwYXJzZUludChtYXRjaFsxXSB8fCBcIjEyXCIsIDEwKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IG1hdGNoWzJdIHx8IFwiMDBcIjtcbiAgICAgICAgY29uc3QgdHpPZmZzZXQgPSBtYXRjaFs0XSB8fCBcIlwiO1xuICAgICAgICBjb25zdCBwZXJpb2QgPSBob3VycyA+PSAxMiA/IFwiUE1cIiA6IFwiQU1cIjtcbiAgICAgICAgY29uc3QgaG91cjEyID0gaG91cnMgJSAxMiA9PT0gMCA/IDEyIDogaG91cnMgJSAxMjtcblxuICAgICAgICByZXR1cm4gYCR7aG91cjEyfToke21pbnV0ZXN9ICR7cGVyaW9kfSR7dHpPZmZzZXQgPyBgICgke3R6T2Zmc2V0fSlgIDogXCJcIn1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICAgIH1cbiAgfSwgW2lucHV0VmFsdWVdKTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCIgLz5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Rm9ybWF0dGVkIHZhbHVlPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy1mb250LW1vbm8gcHMtdGV4dC1mb3JlZ3JvdW5kXCI+e2Zvcm1hdHRlZFRpbWV9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnMgb25TYXZlPXtoYW5kbGVTYXZlfSBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ29sdW1uRGVmLCBUYWJsZSwgdXNlUmVhY3RUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50VHlwZSwgRGlzcGF0Y2gsIFNldFN0YXRlQWN0aW9uIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBvbWl0IH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcblxuaW1wb3J0IHsgdXNlSXNJbnNlcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWlzLWluc2VydGluZ1wiO1xuaW1wb3J0IHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBFbXB0eUNlbGwgfSBmcm9tIFwiLi9jZWxsL0VtcHR5Q2VsbFwiO1xuaW1wb3J0IHsgZ2V0Q2VsbCB9IGZyb20gXCIuL2NlbGwvZ2V0LWNlbGxcIjtcbmltcG9ydCB7IFdyaXRlYWJsZUNlbGwgfSBmcm9tIFwiLi9jZWxsL1dyaXRlYWJsZUNlbGxcIjtcbmltcG9ydCB7IGdldENvbHVtblBpbm5pbmdTdHlsZXMgfSBmcm9tIFwiLi9ncmlkL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nXCI7XG5pbXBvcnQgeyBnZXRJbnB1dCB9IGZyb20gXCIuL2lucHV0L2dldC1pbnB1dFwiO1xuXG50eXBlIFByb3BzID0ge1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBzdGFnZWRSb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICBzZXRTdGFnZWRSb3dzOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPj47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gU3RhZ2VkUm93cyhwcm9wczogUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZTogcGFyZW50VGFibGUsIHN0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3MgfSA9IHByb3BzO1xuICBjb25zdCByZWFkb25seSA9IEJvb2xlYW4odXNlSXNJbnNlcnRpbmcoKSk7XG5cbiAgZnVuY3Rpb24gdXBkYXRlU3RhZ2VkUm93KHJvd0luZGV4OiBudW1iZXIsIHBhcnRpYWxSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgc2V0U3RhZ2VkUm93cygocHJldlJvd3MpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Jvd3MgPSBbLi4ucHJldlJvd3NdO1xuICAgICAgbmV3Um93c1tyb3dJbmRleF0gPSB7IC4uLm5ld1Jvd3Nbcm93SW5kZXhdLCAuLi5wYXJ0aWFsUm93IH07XG5cbiAgICAgIHJldHVybiBuZXdSb3dzO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY29sdW1uRGVmcyA9IE9iamVjdC52YWx1ZXMocGFyZW50VGFibGUub3B0aW9ucy5jb2x1bW5zKS5tYXAoKGNvbHVtbikgPT4ge1xuICAgIGlmIChjb2x1bW4uaWQgPT09IFwiX19wc19zZWxlY3RcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICBjZWxsKCkge1xuICAgICAgICAgIHJldHVybiAoKSA9PiA8RW1wdHlDZWxsIC8+O1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29sdW1uLFxuICAgICAgY2VsbCh7IGNlbGwgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfSkgPT4gKFxuICAgICAgICAgIDxXcml0ZWFibGVDZWxsXG4gICAgICAgICAgICBjZWxsQ29tcG9uZW50PXtnZXRDZWxsKHsgY2VsbCwgY29sdW1uOiBjb2x1bW4ubWV0YSBhcyBDb2x1bW4sIHByb3BzIH0pfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4ubWV0YSBhcyBDb2x1bW4sXG4gICAgICAgICAgICAgIG9uU3VibWl0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RhZ2VkUm93KHByb3BzLnJvd0luZGV4LCB7IFtjb2x1bW4uaWQhXTogdmFsdWUgfSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgfSk7XG5cbiAgY29uc3QgdGFibGUgPSB1c2VSZWFjdFRhYmxlKHtcbiAgICAuLi5wYXJlbnRUYWJsZS5vcHRpb25zLFxuICAgIGNvbHVtbnM6IGNvbHVtbkRlZnMsXG4gICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgb25QYWdpbmF0aW9uQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgb25Tb3J0aW5nQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgZGF0YTogc3RhZ2VkUm93cyxcbiAgICBzdGF0ZTogb21pdChwYXJlbnRUYWJsZS5vcHRpb25zLnN0YXRlLCBbXCJwYWdpbmF0aW9uXCIsIFwic29ydGluZ1wiXSksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHt0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3MubWFwKChyb3csIGkpID0+IChcbiAgICAgICAgPFRhYmxlUm93IGtleT17aX0+XG4gICAgICAgICAge3Jvdy5nZXRWaXNpYmxlQ2VsbHMoKS5tYXAoKGNlbGwsIGopID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICB0eXBlIENlbGwgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPiAmIHsgcm93SW5kZXg6IG51bWJlciB9PjtcbiAgICAgICAgICAgICAgY29uc3QgQ2VsbCA9IGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsKGNlbGwuZ2V0Q29udGV4dCgpKSBhcyBDZWxsO1xuICAgICAgICAgICAgICByZXR1cm4gPENlbGwga2V5PXtqfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfSByb3dJbmRleD17aX0gLz47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHsgVGFibGUyIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NrZWxldG9uXCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZSB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXRhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcblxudHlwZSBOYXZpZ2F0aW9uUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn0gJiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG5cbmV4cG9ydCBmdW5jdGlvbiBOYXZpZ2F0aW9uKHsgY2xhc3NOYW1lIH06IE5hdmlnYXRpb25Qcm9wcykge1xuICAvLyBVc2UgdGhlIGN1c3RvbSBob29rIHRvIGdldCBhbGwgbmVjZXNzYXJ5IHN0YXRlIGFuZCBoYW5kbGVyc1xuICBjb25zdCB7IHRhYmxlcywgYWN0aXZlVGFibGUsIGlzTG9hZGluZywgaGFuZGxlVGFibGVDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG5cbiAgY29uc3Qgc2lkZUJhckNsYXNzZXMgPSBjbihcbiAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy00OCBwcy1nYXAtNCBwcy1vdmVyZmxvdy15LWF1dG8gcHMtbWF4LWgtZnVsbCBwcy1taW4taC0wIHBzLXRleHQtY2FyZC1mb3JlZ3JvdW5kIHBzLXNoYWRvdy14c1wiLFxuICAgIGNsYXNzTmFtZSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzaWRlQmFyQ2xhc3Nlc30+XG4gICAgICB7LyogVE9ETzogc2NoZW1hIHNlbGVjdG9yLiAqL31cbiAgICAgIDxOYXZpZ2F0aW9uLkJsb2NrIGxhYmVsPVwiVGFibGVzXCI+XG4gICAgICAgIHt0YWJsZXMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICB0YWJsZXMubWFwKCh0YWJsZSkgPT4gKFxuICAgICAgICAgICAgPE5hdmlnYXRpb24uSXRlbVxuICAgICAgICAgICAgICBrZXk9e2Ake3RhYmxlLnNjaGVtYX0tJHt0YWJsZS5uYW1lfWB9XG4gICAgICAgICAgICAgIGFzQ2hpbGRcbiAgICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZVRhYmxlID09PSB0YWJsZX1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZVRhYmxlQ2hhbmdlKHRhYmxlKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHMtcHktMSBwcy1mb250LW1vbm8gcHMtdGV4dC14cyBwcy10ZXh0LWZvcmVncm91bmQvNjAgaG92ZXI6cHMtdGV4dC1mb3JlZ3JvdW5kIHBzLXRyYW5zaXRpb24tYWxsIHBzLWN1cnNvci1wb2ludGVyIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1iZy1zbGF0ZS0yMDAgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWZvcmVncm91bmQgZGF0YS1bYWN0aXZlPXRydWVdOnBzLXRleHQtZm9yZWdyb3VuZGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxhIGhyZWY9e2AjdGFibGU9JHt0YWJsZS5uYW1lfSZzY2hlbWE9JHt0YWJsZS5zY2hlbWF9YH0+e3RhYmxlLm5hbWV9PC9hPlxuICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgKSlcbiAgICAgICAgKSA6IGlzTG9hZGluZyA/IChcbiAgICAgICAgICBBcnJheSg0KVxuICAgICAgICAgICAgLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0ga2V5PXtpbmRleH0gd3JhcENoaWxkcmVuSW5TcGFuPXtmYWxzZX0+XG4gICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtMyBwcy13LWZ1bGxcIiAvPlxuICAgICAgICAgICAgICA8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgICAgICkpXG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE5hdmlnYXRpb24uSXRlbT5ObyB0YWJsZXMgZm91bmQ8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgKX1cbiAgICAgIDwvTmF2aWdhdGlvbi5CbG9jaz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3QgQmxvY2sgPSAoeyBjbGFzc05hbWUsIGxhYmVsLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+ICYgeyBsYWJlbDogc3RyaW5nIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSB7Li4ucHJvcHN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy1wdC00IHBzLXBiLTIgcHMtcHgtNCBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctc2xhdGUtNTAvNTAgcHMtYmFja2Ryb3AtYmx1ci1zbVwiPlxuICAgICAgICA8VGFibGUyIHNpemU9ezE2fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNjBcIiAvPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwicHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bVwiPntsYWJlbH08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmF2IGFyaWEtbGFiZWw9e2xhYmVsfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC1weCBwcy1wYi0zIHBzLXAtMlwiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L25hdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IEl0ZW0gPSAoe1xuICBjbGFzc05hbWUsXG4gIGFzQ2hpbGQgPSBmYWxzZSxcbiAgaXNBY3RpdmUsXG4gIHNpemUsXG4gIGNoaWxkcmVuLFxuICB3cmFwQ2hpbGRyZW5JblNwYW4gPSB0cnVlLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJidXR0b25cIj4gJiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIHNpemU/OiBcImRlZmF1bHRcIiB8IFwic21cIjtcbiAgd3JhcENoaWxkcmVuSW5TcGFuPzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIjtcblxuICByZXR1cm4gKFxuICAgIDxDb21wXG4gICAgICBkYXRhLXNpZGViYXI9XCJtZW51LWJ1dHRvblwiXG4gICAgICBkYXRhLXNpemU9e3NpemV9XG4gICAgICBkYXRhLWFjdGl2ZT17aXNBY3RpdmV9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXB5LTEuNSBwcy1weC0yIHBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtcm91bmRlZC1tZCBwcy1mbGV4IHBzLWdhcC0yIHBzLWl0ZW1zLWNlbnRlciBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXRyYW5zcGFyZW50XCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge3dyYXBDaGlsZHJlbkluU3BhbiA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLXRydW5jYXRlXCI+e2NoaWxkcmVufTwvc3Bhbj4gOiBjaGlsZHJlbn1cbiAgICA8L0NvbXA+XG4gICk7XG59O1xuXG5OYXZpZ2F0aW9uLkJsb2NrID0gQmxvY2s7XG5OYXZpZ2F0aW9uLkl0ZW0gPSBJdGVtO1xuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGtleU1hcCwgdXNlUXVlcnlTdGF0ZSwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5pbXBvcnQgeyBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCwgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8qKlxuICogSG9vayB0byBlbmNhcHN1bGF0ZSBhbGwgbG9naWMgZm9yIG1hbmFnaW5nIHRoZSBhY3RpdmUgdGFibGUgc2VsZWN0aW9uLlxuICogSGFuZGxlcyBzeW5jaW5nIHdpdGggVVJMIHBhcmFtcywgZGVmYXVsdCBzZWxlY3Rpb24sIGFuZCBleHBvc2VzIGEgc2ltcGxlIEFQSSBmb3IgY29uc3VtZXJzLlxuICogU2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoaW4gU3R1ZGlvIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIGFkYXB0ZXIsIGVtaXRUZWxlbWV0cnlFdmVudCB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgZGF0YVVwZGF0ZWRBdCB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCBpc0xvYWRpbmcgPSBkYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVDtcblxuICAvLyBHZXQgYWxsIHRhYmxlcyBmb3IgdGhlIGN1cnJlbnQgc2NoZW1hXG4gIGNvbnN0IHRhYmxlczogVGFibGVbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hc1thZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJkYlwiXT8udGFibGVzIHx8IHt9KTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hcywgYWRhcHRlci5kZWZhdWx0U2NoZW1hXSk7XG5cbiAgLy8gQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiB0YWJsZXMgYWNyb3NzIGFsbCBzY2hlbWFzXG4gIGNvbnN0IHRvdGFsVGFibGVDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hcykucmVkdWNlKChzdW0sIHNjaGVtYSkgPT4ge1xuICAgICAgcmV0dXJuIHN1bSArIE9iamVjdC5rZXlzKHNjaGVtYS50YWJsZXMpLmxlbmd0aDtcbiAgICB9LCAwKTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hc10pO1xuXG4gIGNvbnN0IFtmaXJzdFRhYmxlXSA9IHRhYmxlcztcblxuICBjb25zdCBbdGFibGVBbmRTY2hlbWEsIHNldFRhYmxlQW5kU2NoZW1hXSA9IHVzZVF1ZXJ5U3RhdGVzKFxuICAgIGtleU1hcCh7XG4gICAgICB0YWJsZToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgICAgIHBhcnNlOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdixcbiAgICAgICAgc2VyaWFsaXplOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiA/PyBcIlwiLFxuICAgICAgfSxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IFwiXCIsXG4gICAgICAgIHBhcnNlOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdixcbiAgICAgICAgc2VyaWFsaXplOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiA/PyBcIlwiLFxuICAgICAgfSxcbiAgICB9KSxcbiAgKTtcbiAgLy8gQWRkIHF1ZXJ5IHN0YXRlIGZvciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtc1xuICBjb25zdCBbLCBzZXRQYWdlUGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInBhZ2VJbmRleFwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG4gIGNvbnN0IFssIHNldFNvcnRQYXJhbV0gPSB1c2VRdWVyeVN0YXRlPHN0cmluZyB8IG51bGw+KFwic29ydFwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG5cbiAgLy8gRWZmZWN0IHRvIHN5bmMgYWN0aXZlIHRhYmxlIHdpdGggVVJMIHBhcmFtIGFuZCBkZWZhdWx0c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmcpIHJldHVybjtcbiAgICAvLyBJZiBzY2hlbWEgYW5kIHRhYmxlIHBhcmFtcyBpbiBVUkwsIHRyeSB0byBzZXQgdGhhdCB0YWJsZVxuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8udGFibGUgJiYgdGFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHRhYmxlRnJvbVBhcmFtID0gdGFibGVzLmZpbmQoKHQpID0+IHQubmFtZSA9PT0gdGFibGVBbmRTY2hlbWEudGFibGUpO1xuXG4gICAgICBpZiAodGFibGVGcm9tUGFyYW0pIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUodGFibGVGcm9tUGFyYW0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIG5vIHNjaGVtYS90YWJsZSBwYXJhbXMgb3Igbm90IGZvdW5kLCBzZXQgZmlyc3QgdGFibGUgYXMgZGVmYXVsdFxuICAgIGlmICh0YWJsZXMubGVuZ3RoID4gMCAmJiAhYWN0aXZlVGFibGUpIHtcbiAgICAgIHNldEFjdGl2ZVRhYmxlKGZpcnN0VGFibGUgfHwgbnVsbCk7XG4gICAgICBpZiAoZmlyc3RUYWJsZSkge1xuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IGZpcnN0VGFibGUubmFtZSwgc2NoZW1hOiBmaXJzdFRhYmxlLnNjaGVtYSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc0xvYWRpbmcsIHRhYmxlQW5kU2NoZW1hLCB0YWJsZXMsIGZpcnN0VGFibGUsIGFjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWFdKTtcblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBhY3RpdmUgdGFibGUgYW5kIHVwZGF0ZSB0aGUgVVJMIHBhcmFtLlxuICAgKiBBbHNvIGNsZWFycyBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXMuXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWJsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdUYWJsZTogVGFibGUpID0+IHtcbiAgICAgIGlmIChhY3RpdmVUYWJsZSAhPT0gbmV3VGFibGUpIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobmV3VGFibGUpO1xuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IG5ld1RhYmxlLm5hbWUsIHNjaGVtYTogbmV3VGFibGUuc2NoZW1hIH0pO1xuICAgICAgICAvLyBDbGVhciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXNcbiAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWEsIHNldFBhZ2VQYXJhbSwgc2V0U29ydFBhcmFtXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBpc0xvYWRpbmdcbiAgICBpZiAoZGF0YVVwZGF0ZWRBdCAhPT0gLTEpIHtcbiAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCh7XG4gICAgICAgIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgZXZlbnRfaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIHRhYmxlX2NvdW50OiB0b3RhbFRhYmxlQ291bnQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFt0YWJsZXMsIGVtaXRUZWxlbWV0cnlFdmVudCwgZGF0YVVwZGF0ZWRBdCwgdG90YWxUYWJsZUNvdW50XSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0YWJsZXMsXG4gICAgYWN0aXZlVGFibGUsXG4gICAgaXNMb2FkaW5nLFxuICAgIGhhbmRsZVRhYmxlQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID0gLTE7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnRyb3NwZWN0aW9uKCkge1xuICBjb25zdCB7IGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgaW5pdGlhbERhdGE6IHtcbiAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgW2FkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcImRiXCJdOiB7XG4gICAgICAgICAgdGFibGVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aW1lem9uZTogXCJVVENcIixcbiAgICAgIGZpbHRlck9wZXJhdG9yczogW10sXG4gICAgfSBzYXRpc2ZpZXMgSW50cm9zcGVjdGlvbixcbiAgICBpbml0aWFsRGF0YVVwZGF0ZWRBdDogSU5JVElBTF9EQVRBX1VQREFURURfQVQsXG4gICAgcXVlcnlGbjogYXN5bmMgKHsgc2lnbmFsIH0pID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgaW50cm9zcGVjdGlvbl0gPSBhd2FpdCBhZGFwdGVyLmludHJvc3BlY3QoeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnRyb3NwZWN0aW9uO1xuICAgIH0sXG4gICAgcXVlcnlLZXk6IFtcImludHJvc3BlY3Rpb25cIl0sXG4gICAgLy8gaWYgaXMgaW5pdGlhbCBkYXRhLCByZWZldGNoIGltbWVkaWF0ZWx5LCBvdGhlcndpc2UsIG5ldmVyIHJlZmV0Y2ggYXV0b21hdGljYWxseSBpbiB0aGUgYmFja2dyb3VuZC5cbiAgICAvLyB3ZSBjYW4gc3RpbGwgcmVmZXRjaCBtYW51YWxseSB1c2luZyB0aGUgcXVlcnkgY2xpZW50IC0gcHJvYmFibHkgdHJpZ2dlcmVkIGJ5IGEgYnV0dG9uLlxuICAgIHN0YWxlVGltZTogKGN0eCkgPT4gKGN0eC5zdGF0ZS5kYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA/IDAgOiBJbmZpbml0eSksXG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjRNQUFBLE9BQVMsbUJBQUFBLEdBQWlCLFVBQUFDLE9BQWMsZUNDeEMsT0FBMEIsUUFBQUMsT0FBWSxPQ3FCdEMsSUFBTUMsR0FBdUIsSUFFaEJDLEdBQXlCQyxHQUF5QixDQUMzRCxJQUFNQyxFQUFXQyxHQUFlRixDQUFNLEVBQ2hDLENBQUVHLHVCQUFBQSxFQUF3QkMsK0JBQUFBLENBQWdDLEVBQUdKLEVBMEJuRSxNQUFPLENBQ0hLLGdCQXpCcUJDLEdBQXFCLENBQzFDLElBQU1DLEVBQWFELEVBQVVFLE1BQU1WLEVBQW9CLEVBR3ZELE9BQUlTLEVBQVcsQ0FBQyxJQUFNLElBQU1BLEVBQVdFLFNBQVcsR0FDOUNGLEVBQVdHLE1BQUssRUFHYkMsR0FBa0JKLEVBQVlOLENBQVEsR0FBS1csR0FBK0JOLENBQVMsQ0FDOUYsRUFpQklPLDRCQWZnQ0EsQ0FDaENDLEVBQ0FDLElBQ0EsQ0FDQSxJQUFNQyxFQUFZYixFQUF1QlcsQ0FBWSxHQUFLLENBQUEsRUFFMUQsT0FBSUMsR0FBc0JYLEVBQStCVSxDQUFZLEVBQzFELENBQUMsR0FBR0UsRUFBVyxHQUFHWixFQUErQlUsQ0FBWSxDQUFFLEVBR25FRSxDQUNYLEVBTUosRUFFTUwsR0FBb0JBLENBQ3RCSixFQUNBVSxJQUNrQyxDQUNsQyxHQUFJVixFQUFXRSxTQUFXLEVBQ3RCLE9BQU9RLEVBQWdCSCxhQUczQixJQUFNSSxFQUFtQlgsRUFBVyxDQUFDLEVBQy9CWSxFQUFzQkYsRUFBZ0JHLFNBQVNDLElBQUlILENBQWdCLEVBQ25FSSxFQUE4QkgsRUFDOUJSLEdBQWtCSixFQUFXZ0IsTUFBTSxDQUFDLEVBQUdKLENBQW1CLEVBQzFESyxPQUVOLEdBQUlGLEVBQ0EsT0FBT0EsRUFHWCxHQUFJTCxFQUFnQlEsV0FBV2hCLFNBQVcsRUFDdEMsT0FHSixJQUFNaUIsRUFBWW5CLEVBQVdvQixLQUFLN0IsRUFBb0IsRUFFdEQsT0FBT21CLEVBQWdCUSxXQUFXRyxLQUFLLENBQUMsQ0FBRUMsVUFBQUEsQ0FBVyxJQUFLQSxFQUFVSCxDQUFTLENBQUMsR0FBR1osWUFDckYsRUFFTWdCLEdBQXlCLGFBRXpCbEIsR0FBa0NOLEdBQXFCLENBQ3pELEdBQUl3QixHQUF1QkMsS0FBS3pCLENBQVMsRUFBRyxDQUN4QyxJQUFNMEIsRUFBNkJGLEdBQXVCRyxLQUFLM0IsQ0FBUyxFQUFHLENBQUMsRUFDdEU0QixFQUFXRixHQUE0QkcsVUFDekMsRUFDQUgsRUFBMkJJLFFBQVEsR0FBRyxDQUFDLEVBRzNDLEdBQUlGLEVBRUEsTUFBTyxjQUFnQkEsQ0FFOUIsQ0FDTCxFQUthaEMsR0FBa0JGLEdBQThELENBQ3pGLEdBQU0sQ0FBRXFDLE1BQUFBLEVBQU9DLE9BQUFBLENBQVEsRUFBR3RDLEVBQ3BCQyxFQUE0QixDQUM5Qm1CLFNBQVUsSUFBSW1CLElBQ2RkLFdBQVksQ0FBQSxHQVFoQmUsT0FMa0NDLEdBQzlCQyxPQUFPQyxRQUFRM0MsRUFBTzRDLFdBQVcsRUFDakNOLENBQU0sRUFHZ0JPLFFBQVEsQ0FBQyxDQUFDL0IsRUFBY2dDLENBQVUsSUFBSyxDQUM3REMsR0FBMEJELEVBQVk3QyxFQUFVYSxFQUFjdUIsQ0FBSyxDQUN2RSxDQUFDLEVBRU1wQyxDQUNYLEVBRU04QyxHQUE0QkEsQ0FDOUJELEVBQ0E3QixFQUNBSCxFQUNBdUIsSUFDQSxDQUNBUyxFQUFXRCxRQUFTRyxHQUFtQixDQUNuQyxHQUFJLE9BQU9BLEdBQW9CLFNBQVUsQ0FDckMsSUFBTUMsRUFDRkQsSUFBb0IsR0FBSy9CLEVBQWtCaUMsR0FBUWpDLEVBQWlCK0IsQ0FBZSxFQUN2RkMsRUFBc0JuQyxhQUFlQSxFQUNyQyxNQUNILENBRUQsR0FBSSxPQUFPa0MsR0FBb0IsV0FBWSxDQUN2QyxHQUFJRyxHQUFjSCxDQUFlLEVBQUcsQ0FDaENELEdBQ0lDLEVBQWdCWCxDQUFLLEVBQ3JCcEIsRUFDQUgsRUFDQXVCLENBQUssRUFFVCxNQUNILENBRURwQixFQUFnQlEsV0FBVzJCLEtBQUssQ0FDNUJ2QixVQUFXbUIsRUFDWGxDLGFBQUFBLENBQ0gsQ0FBQSxFQUVELE1BQ0gsQ0FFRDRCLE9BQU9DLFFBQVFLLENBQWUsRUFBRUgsUUFBUSxDQUFDLENBQUNRLEVBQUtQLENBQVUsSUFBSyxDQUMxREMsR0FDSUQsRUFDQUksR0FBUWpDLEVBQWlCb0MsQ0FBRyxFQUM1QnZDLEVBQ0F1QixDQUFLLENBRWIsQ0FBQyxDQUNMLENBQUMsQ0FDTCxFQUVNYSxHQUFVQSxDQUFDakMsRUFBa0NxQyxJQUFnQixDQUMvRCxJQUFJQyxFQUF5QnRDLEVBRTdCcUMsT0FBQUEsRUFBSzlDLE1BQU1WLEVBQW9CLEVBQUUrQyxRQUFTVyxHQUFZLENBQzdDRCxFQUF1Qm5DLFNBQVNxQyxJQUFJRCxDQUFRLEdBQzdDRCxFQUF1Qm5DLFNBQVNzQyxJQUFJRixFQUFVLENBQzFDcEMsU0FBVSxJQUFJbUIsSUFDZGQsV0FBWSxDQUFBLENBQ2YsQ0FBQSxFQUdMOEIsRUFBeUJBLEVBQXVCbkMsU0FBU0MsSUFBSW1DLENBQVEsQ0FDekUsQ0FBQyxFQUVNRCxDQUNYLEVBRU1KLEdBQWlCUSxHQUNsQkEsRUFBcUJSLGNBRXBCVixHQUErQkEsQ0FDakNtQixFQUNBdEIsSUFFS0EsRUFJRXNCLEVBQWtCQyxJQUFJLENBQUMsQ0FBQy9DLEVBQWNnQyxDQUFVLElBQUssQ0FDeEQsSUFBTWdCLEVBQXFCaEIsRUFBV2UsSUFBS2IsR0FDbkMsT0FBT0EsR0FBb0IsU0FDcEJWLEVBQVNVLEVBR2hCLE9BQU9BLEdBQW9CLFNBQ3BCTixPQUFPcUIsWUFDVnJCLE9BQU9DLFFBQVFLLENBQWUsRUFBRWEsSUFBSSxDQUFDLENBQUNSLEVBQUtXLENBQUssSUFBTSxDQUFDMUIsRUFBU2UsRUFBS1csQ0FBSyxDQUFDLENBQUMsRUFJN0VoQixDQUNWLEVBRUQsTUFBTyxDQUFDbEMsRUFBY2dELENBQWtCLENBQzVDLENBQUMsRUFuQlVGLEVDekxGSyxHQUE4QkMsR0FBOEMsQ0FDckYsR0FBSUEsRUFBZSxFQUNmLE1BQU8sQ0FDSDdDLElBQUtBLElBQUEsR0FDTHFDLElBQUtBLElBQUssQ0FBRyxHQUlyQixJQUFJUyxFQUFZLEVBQ1pDLEVBQVEsSUFBSTdCLElBQ1o4QixFQUFnQixJQUFJOUIsSUFFbEIrQixFQUFTQSxDQUFDakIsRUFBVVcsSUFBZ0IsQ0FDdENJLEVBQU1WLElBQUlMLEVBQUtXLENBQUssRUFDcEJHLElBRUlBLEVBQVlELElBQ1pDLEVBQVksRUFDWkUsRUFBZ0JELEVBQ2hCQSxFQUFRLElBQUk3QixJQUVwQixFQUVBLE1BQU8sQ0FDSGxCLElBQUlnQyxFQUFHLENBQ0gsSUFBSVcsRUFBUUksRUFBTS9DLElBQUlnQyxDQUFHLEVBRXpCLEdBQUlXLElBQVV4QyxPQUNWLE9BQU93QyxFQUVYLElBQUtBLEVBQVFLLEVBQWNoRCxJQUFJZ0MsQ0FBRyxLQUFPN0IsT0FDckM4QyxPQUFBQSxFQUFPakIsRUFBS1csQ0FBSyxFQUNWQSxDQUVkLEVBQ0ROLElBQUlMLEVBQUtXLEVBQUssQ0FDTkksRUFBTVgsSUFBSUosQ0FBRyxFQUNiZSxFQUFNVixJQUFJTCxFQUFLVyxDQUFLLEVBRXBCTSxFQUFPakIsRUFBS1csQ0FBSyxDQUV4QixFQUVULEVDakRhTyxHQUFxQixJQUVyQkMsR0FBd0J4RSxHQUF5QixDQUMxRCxHQUFNLENBQUV5RSxVQUFBQSxFQUFXQywyQkFBQUEsQ0FBNEIsRUFBRzFFLEVBQzVDMkUsRUFBNkJGLEVBQVVoRSxTQUFXLEVBQ2xEbUUsRUFBMEJILEVBQVUsQ0FBQyxFQUNyQ0ksRUFBa0JKLEVBQVVoRSxPQUc1QnFFLEVBQWtCeEUsR0FBcUIsQ0FDekMsSUFBTXlFLEVBQVksQ0FBQSxFQUVkQyxFQUFlLEVBQ2ZDLEVBQWdCLEVBQ2hCQyxFQUVKLFFBQVNDLEVBQVEsRUFBR0EsRUFBUTdFLEVBQVVHLE9BQVEwRSxJQUFTLENBQ25ELElBQUlDLEVBQW1COUUsRUFBVTZFLENBQUssRUFFdEMsR0FBSUgsSUFBaUIsRUFBRyxDQUNwQixHQUNJSSxJQUFxQlIsSUFDcEJELEdBQ0dyRSxFQUFVaUIsTUFBTTRELEVBQU9BLEVBQVFOLENBQWUsSUFBTUosR0FDMUQsQ0FDRU0sRUFBVTNCLEtBQUs5QyxFQUFVaUIsTUFBTTBELEVBQWVFLENBQUssQ0FBQyxFQUNwREYsRUFBZ0JFLEVBQVFOLEVBQ3hCLFFBQ0gsQ0FFRCxHQUFJTyxJQUFxQixJQUFLLENBQzFCRixFQUEwQkMsRUFDMUIsUUFDSCxDQUNKLENBRUdDLElBQXFCLElBQ3JCSixJQUNPSSxJQUFxQixLQUM1QkosR0FFUCxDQUVELElBQU1LLEVBQ0ZOLEVBQVV0RSxTQUFXLEVBQUlILEVBQVlBLEVBQVU2QixVQUFVOEMsQ0FBYSxFQUNwRUssRUFDRkQsRUFBbUNFLFdBQVdoQixFQUFrQixFQUM5RGlCLEVBQWdCRixFQUNoQkQsRUFBbUNsRCxVQUFVLENBQUMsRUFDOUNrRCxFQUVBSSxFQUNGUCxHQUEyQkEsRUFBMEJELEVBQy9DQyxFQUEwQkQsRUFDMUJ6RCxPQUVWLE1BQU8sQ0FDSHVELFVBQUFBLEVBQ0FPLHFCQUFBQSxFQUNBRSxjQUFBQSxFQUNBQyw2QkFBQUEsRUFFUixFQUVBLE9BQUlmLEVBQ1FwRSxHQUFzQm9FLEVBQTJCLENBQUVwRSxVQUFBQSxFQUFXd0UsZUFBQUEsQ0FBZ0IsQ0FBQSxFQUduRkEsQ0FDWCxFQU9hWSxHQUFpQlgsR0FBdUIsQ0FDakQsR0FBSUEsRUFBVXRFLFFBQVUsRUFDcEIsT0FBT3NFLEVBR1gsSUFBTVksRUFBNEIsQ0FBQSxFQUM5QkMsRUFBOEIsQ0FBQSxFQUVsQ2IsT0FBQUEsRUFBVWxDLFFBQVNnRCxHQUFZLENBQ0FBLEVBQVMsQ0FBQyxJQUFNLEtBR3ZDRixFQUFnQnZDLEtBQUssR0FBR3dDLEVBQWtCRSxLQUFNLEVBQUVELENBQVEsRUFDMURELEVBQW9CLENBQUEsR0FFcEJBLEVBQWtCeEMsS0FBS3lDLENBQVEsQ0FFdkMsQ0FBQyxFQUVERixFQUFnQnZDLEtBQUssR0FBR3dDLEVBQWtCRSxLQUFNLENBQUEsRUFFekNILENBQ1gsRUM3RmFJLEdBQXFCL0YsSUFBMkIsQ0FDekRvRSxNQUFPSCxHQUErQmpFLEVBQU9tRSxTQUFTLEVBQ3REVyxlQUFnQk4sR0FBcUJ4RSxDQUFNLEVBQzNDLEdBQUdELEdBQXNCQyxDQUFNLENBQ2xDLEdDUktnRyxHQUFzQixNQUVmQyxHQUFpQkEsQ0FBQ0MsRUFBbUJDLElBQTRCLENBQzFFLEdBQU0sQ0FBRXJCLGVBQUFBLEVBQWdCekUsZ0JBQUFBLEVBQWlCUSw0QkFBQUEsQ0FBMkIsRUFBS3NGLEVBU25FQyxFQUFrQyxDQUFBLEVBQ2xDQyxFQUFhSCxFQUFVSSxLQUFNLEVBQUM5RixNQUFNd0YsRUFBbUIsRUFFekRPLEVBQVMsR0FFYixRQUFTcEIsRUFBUWtCLEVBQVc1RixPQUFTLEVBQUcwRSxHQUFTLEVBQUdBLEdBQVMsRUFBRyxDQUM1RCxJQUFNcUIsRUFBb0JILEVBQVdsQixDQUFLLEVBRXBDLENBQUVKLFVBQUFBLEVBQVdPLHFCQUFBQSxFQUFzQkUsY0FBQUEsRUFBZUMsNkJBQUFBLEdBQ3BEWCxFQUFlMEIsQ0FBaUIsRUFFaEN6RixFQUFxQjBGLEVBQVFoQixFQUM3QjNFLEVBQWVULEVBQ2ZVLEVBQ015RSxFQUFjckQsVUFBVSxFQUFHc0QsQ0FBNEIsRUFDdkRELENBQWEsRUFHdkIsR0FBSSxDQUFDMUUsRUFBYyxDQUNmLEdBQUksQ0FBQ0MsRUFBb0IsQ0FFckJ3RixFQUFTQyxHQUFxQkQsRUFBTzlGLE9BQVMsRUFBSSxJQUFNOEYsRUFBU0EsR0FDakUsUUFDSCxDQUlELEdBRkF6RixFQUFlVCxFQUFnQm1GLENBQWEsRUFFeEMsQ0FBQzFFLEVBQWMsQ0FFZnlGLEVBQVNDLEdBQXFCRCxFQUFPOUYsT0FBUyxFQUFJLElBQU04RixFQUFTQSxHQUNqRSxRQUNILENBRUR4RixFQUFxQixFQUN4QixDQUVELElBQU0yRixFQUFrQmhCLEdBQWNYLENBQVMsRUFBRXBELEtBQUssR0FBRyxFQUVuRGdGLEVBQWFyQixFQUNib0IsRUFBa0JuQyxHQUNsQm1DLEVBRUFFLEVBQVVELEVBQWE3RixFQUU3QixHQUFJc0YsRUFBc0JTLFNBQVNELENBQU8sRUFFdEMsU0FHSlIsRUFBc0JoRCxLQUFLd0QsQ0FBTyxFQUVsQyxJQUFNRSxFQUFpQmpHLEVBQTRCQyxFQUFjQyxDQUFrQixFQUNuRixRQUFTZ0csRUFBSSxFQUFHQSxFQUFJRCxFQUFlckcsT0FBUSxFQUFFc0csRUFBRyxDQUM1QyxJQUFNQyxHQUFRRixFQUFlQyxDQUFDLEVBQzlCWCxFQUFzQmhELEtBQUt1RCxFQUFhSyxFQUFLLENBQ2hELENBR0RULEVBQVNDLEdBQXFCRCxFQUFPOUYsT0FBUyxFQUFJLElBQU04RixFQUFTQSxFQUNwRSxDQUVELE9BQU9BLENBQ1gsV0MvRGdCVSxJQUFNLENBQ2xCLElBQUk5QixFQUFRLEVBQ1IrQixFQUNBQyxFQUNBQyxFQUFTLEdBRWIsS0FBT2pDLEVBQVFrQyxVQUFVNUcsU0FDaEJ5RyxFQUFXRyxVQUFVbEMsR0FBTyxLQUN4QmdDLEVBQWdCRyxHQUFRSixDQUFRLEtBQ2pDRSxJQUFXQSxHQUFVLEtBQ3JCQSxHQUFVRCxHQUl0QixPQUFPQyxDQUNYLENBRUEsSUFBTUUsR0FBV0MsR0FBZ0MsQ0FDN0MsR0FBSSxPQUFPQSxHQUFRLFNBQ2YsT0FBT0EsRUFHWCxJQUFJSixFQUNBQyxFQUFTLEdBRWIsUUFBU0ksRUFBSSxFQUFHQSxFQUFJRCxFQUFJOUcsT0FBUStHLElBQ3hCRCxFQUFJQyxDQUFDLElBQ0FMLEVBQWdCRyxHQUFRQyxFQUFJQyxDQUFDLENBQTRCLEtBQzFESixJQUFXQSxHQUFVLEtBQ3JCQSxHQUFVRCxHQUt0QixPQUFPQyxDQUNYLFdDdkNnQkssR0FDWkMsS0FDR0MsRUFBMEMsQ0FFN0MsSUFBSXhCLEVBQ0F5QixFQUNBQyxFQUNBQyxFQUFpQkMsRUFFckIsU0FBU0EsRUFBa0I3QixFQUFpQixDQUN4QyxJQUFNbEcsRUFBUzJILEVBQWlCSyxPQUM1QixDQUFDQyxFQUFnQkMsSUFBd0JBLEVBQW9CRCxDQUFjLEVBQzNFUCxFQUFpQixDQUFtQixFQUd4Q3ZCLE9BQUFBLEVBQWNKLEdBQWtCL0YsQ0FBTSxFQUN0QzRILEVBQVd6QixFQUFZL0IsTUFBTS9DLElBQzdCd0csRUFBVzFCLEVBQVkvQixNQUFNVixJQUM3Qm9FLEVBQWlCSyxFQUVWQSxFQUFjakMsQ0FBUyxDQUNqQyxDQUVELFNBQVNpQyxFQUFjakMsRUFBaUIsQ0FDcEMsSUFBTWtDLEVBQWVSLEVBQVMxQixDQUFTLEVBRXZDLEdBQUlrQyxFQUNBLE9BQU9BLEVBR1gsSUFBTTdCLEVBQVNOLEdBQWVDLEVBQVdDLENBQVcsRUFDcEQwQixPQUFBQSxFQUFTM0IsRUFBV0ssQ0FBTSxFQUVuQkEsQ0FDVixDQUVELE9BQU8sVUFBMEIsQ0FDN0IsT0FBT3VCLEVBQWViLEdBQU9vQixNQUFNLEtBQU1oQixTQUFnQixDQUFDLENBQzlELENBQ0osQ0MvQ2EsSUFBQWlCLEVBR1hqRixHQUFrRixDQUNoRixJQUFNa0YsRUFBZWxHLEdBQ2pCQSxFQUFNZ0IsQ0FBRyxHQUFLLENBQUEsRUFFbEJrRixPQUFBQSxFQUFZcEYsY0FBZ0IsR0FFckJvRixDQUNYLEVDWk1DLEdBQXNCLDZCQUN0QkMsR0FBZ0IsYUFDaEJDLEdBQWdCLElBQUlDLElBQUksQ0FBQyxLQUFNLE9BQVEsUUFBUSxDQUFDLEVBQ2hEQyxHQUFrQixtQ0FDbEJDLEdBQ0YsNEhBQ0VDLEdBQXFCLDJDQUVyQkMsR0FBYyxrRUFDZEMsR0FDRiwrRkFFU0MsR0FBWWpGLEdBQ3JCa0YsR0FBU2xGLENBQUssR0FBSzBFLEdBQWNqRixJQUFJTyxDQUFLLEdBQUt5RSxHQUFjMUcsS0FBS2lDLENBQUssRUFFOURtRixHQUFxQm5GLEdBQzlCb0YsR0FBb0JwRixFQUFPLFNBQVVxRixFQUFZLEVBRXhDSCxHQUFZbEYsR0FBa0J5QyxFQUFRekMsR0FBVSxDQUFDc0YsT0FBT0MsTUFBTUQsT0FBT3RGLENBQUssQ0FBQyxFQUUzRXdGLEdBQXFCeEYsR0FBa0JvRixHQUFvQnBGLEVBQU8sU0FBVWtGLEVBQVEsRUFFcEZPLEdBQWF6RixHQUFrQnlDLEVBQVF6QyxHQUFVc0YsT0FBT0csVUFBVUgsT0FBT3RGLENBQUssQ0FBQyxFQUUvRTBGLEdBQWExRixHQUFrQkEsRUFBTTJGLFNBQVMsR0FBRyxHQUFLVCxHQUFTbEYsRUFBTXpDLE1BQU0sRUFBRyxFQUFFLENBQUMsRUFFakZxSSxFQUFvQjVGLEdBQWtCd0UsR0FBb0J6RyxLQUFLaUMsQ0FBSyxFQUVwRTZGLEdBQWdCN0YsR0FBa0I0RSxHQUFnQjdHLEtBQUtpQyxDQUFLLEVBRW5FOEYsR0FBYSxJQUFJbkIsSUFBSSxDQUFDLFNBQVUsT0FBUSxZQUFZLENBQUMsRUFFOUNvQixHQUFtQi9GLEdBQWtCb0YsR0FBb0JwRixFQUFPOEYsR0FBWUUsRUFBTyxFQUVuRkMsR0FBdUJqRyxHQUNoQ29GLEdBQW9CcEYsRUFBTyxXQUFZZ0csRUFBTyxFQUU1Q0UsR0FBYyxJQUFJdkIsSUFBSSxDQUFDLFFBQVMsS0FBSyxDQUFDLEVBRS9Cd0IsR0FBb0JuRyxHQUFrQm9GLEdBQW9CcEYsRUFBT2tHLEdBQWFFLEVBQU8sRUFFckZDLEdBQXFCckcsR0FBa0JvRixHQUFvQnBGLEVBQU8sR0FBSXNHLEVBQVEsRUFFOUVDLEdBQVFBLElBQU0sR0FFckJuQixHQUFzQkEsQ0FDeEJwRixFQUNBd0csRUFDQUMsSUFDQSxDQUNBLElBQU1sRSxFQUFTaUMsR0FBb0J2RyxLQUFLK0IsQ0FBSyxFQUU3QyxPQUFJdUMsRUFDSUEsRUFBTyxDQUFDLEVBQ0QsT0FBT2lFLEdBQVUsU0FBV2pFLEVBQU8sQ0FBQyxJQUFNaUUsRUFBUUEsRUFBTS9HLElBQUk4QyxFQUFPLENBQUMsQ0FBQyxFQUd6RWtFLEVBQVVsRSxFQUFPLENBQUMsQ0FBRSxFQUd4QixFQUNYLEVBRU04QyxHQUFnQnJGLEdBSWxCNkUsR0FBZ0I5RyxLQUFLaUMsQ0FBSyxHQUFLLENBQUM4RSxHQUFtQi9HLEtBQUtpQyxDQUFLLEVBRTNEZ0csR0FBVUEsSUFBTSxHQUVoQk0sR0FBWXRHLEdBQWtCK0UsR0FBWWhILEtBQUtpQyxDQUFLLEVBRXBEb0csR0FBV3BHLEdBQWtCZ0YsR0FBV2pILEtBQUtpQyxDQUFLLEVDdkRqRCxJQUFNMEcsR0FBbUJBLElBQUssQ0FDakMsSUFBTUMsRUFBU0MsRUFBVSxRQUFRLEVBQzNCQyxFQUFVRCxFQUFVLFNBQVMsRUFDN0JFLEVBQU9GLEVBQVUsTUFBTSxFQUN2QkcsRUFBYUgsRUFBVSxZQUFZLEVBQ25DSSxFQUFjSixFQUFVLGFBQWEsRUFDckNLLEVBQWVMLEVBQVUsY0FBYyxFQUN2Q00sRUFBZ0JOLEVBQVUsZUFBZSxFQUN6Q08sRUFBY1AsRUFBVSxhQUFhLEVBQ3JDUSxFQUFXUixFQUFVLFVBQVUsRUFDL0JTLEVBQVlULEVBQVUsV0FBVyxFQUNqQ1UsRUFBWVYsRUFBVSxXQUFXLEVBQ2pDVyxFQUFTWCxFQUFVLFFBQVEsRUFDM0JZLEVBQU1aLEVBQVUsS0FBSyxFQUNyQmEsRUFBcUJiLEVBQVUsb0JBQW9CLEVBQ25EYyxFQUE2QmQsRUFBVSw0QkFBNEIsRUFDbkVlLEVBQVFmLEVBQVUsT0FBTyxFQUN6QmdCLEVBQVNoQixFQUFVLFFBQVEsRUFDM0JpQixFQUFVakIsRUFBVSxTQUFTLEVBQzdCa0IsRUFBVWxCLEVBQVUsU0FBUyxFQUM3Qm1CLEVBQVduQixFQUFVLFVBQVUsRUFDL0JvQixFQUFRcEIsRUFBVSxPQUFPLEVBQ3pCcUIsR0FBUXJCLEVBQVUsT0FBTyxFQUN6QnNCLEVBQU90QixFQUFVLE1BQU0sRUFDdkJ1QixFQUFRdkIsRUFBVSxPQUFPLEVBQ3pCd0IsRUFBWXhCLEVBQVUsV0FBVyxFQUVqQ3lCLEVBQWdCQSxJQUFNLENBQUMsT0FBUSxVQUFXLE1BQU0sRUFDaERDLEVBQWNBLElBQU0sQ0FBQyxPQUFRLFNBQVUsT0FBUSxVQUFXLFFBQVEsRUFDbEVDLEdBQWlDQSxJQUFNLENBQUMsT0FBUUMsRUFBa0IzQixDQUFPLEVBQ3pFNEIsRUFBMEJBLElBQU0sQ0FBQ0QsRUFBa0IzQixDQUFPLEVBQzFENkIsR0FBaUNBLElBQU0sQ0FBQyxHQUFJQyxHQUFVQyxFQUFpQixFQUN2RUMsR0FBZ0NBLElBQU0sQ0FBQyxPQUFRQyxHQUFVTixDQUFnQixFQUN6RU8sR0FBZUEsSUFDakIsQ0FDSSxTQUNBLFNBQ0EsT0FDQSxjQUNBLFdBQ0EsUUFDQSxlQUNBLFlBQ0EsS0FBSyxFQUVQQyxHQUFnQkEsSUFBTSxDQUFDLFFBQVMsU0FBVSxTQUFVLFNBQVUsTUFBTSxFQUNwRUMsR0FBZ0JBLElBQ2xCLENBQ0ksU0FDQSxXQUNBLFNBQ0EsVUFDQSxTQUNBLFVBQ0EsY0FDQSxhQUNBLGFBQ0EsYUFDQSxhQUNBLFlBQ0EsTUFDQSxhQUNBLFFBQ0EsWUFBWSxFQUVkQyxHQUFXQSxJQUNiLENBQUMsUUFBUyxNQUFPLFNBQVUsVUFBVyxTQUFVLFNBQVUsU0FBUyxFQUNqRUMsR0FBa0JBLElBQU0sQ0FBQyxHQUFJLElBQUtYLENBQWdCLEVBQ2xEWSxFQUFZQSxJQUNkLENBQUMsT0FBUSxRQUFTLE1BQU8sYUFBYyxPQUFRLE9BQVEsUUFBUyxRQUFRLEVBQ3RFQyxFQUF3QkEsSUFBTSxDQUFDUCxHQUFVTixDQUFnQixFQUUvRCxNQUFPLENBQ0hjLFVBQVcsSUFDWEMsVUFBVyxJQUNYQyxNQUFPLENBQ0g3QyxPQUFRLENBQUM4QyxFQUFLLEVBQ2Q1QyxRQUFTLENBQUM4QixHQUFVQyxFQUFpQixFQUNyQzlCLEtBQU0sQ0FBQyxPQUFRLEdBQUk0QyxHQUFjbEIsQ0FBZ0IsRUFDakR6QixXQUFZc0MsRUFBdUIsRUFDbkNyQyxZQUFhLENBQUNMLENBQU0sRUFDcEJNLGFBQWMsQ0FBQyxPQUFRLEdBQUksT0FBUXlDLEdBQWNsQixDQUFnQixFQUNqRXRCLGNBQWV1QixFQUF5QixFQUN4Q3RCLFlBQWF1QixHQUFnQyxFQUM3Q3RCLFNBQVVpQyxFQUF1QixFQUNqQ2hDLFVBQVc4QixHQUFpQixFQUM1QjdCLFVBQVcrQixFQUF1QixFQUNsQzlCLE9BQVE0QixHQUFpQixFQUN6QjNCLElBQUtpQixFQUF5QixFQUM5QmhCLG1CQUFvQixDQUFDZCxDQUFNLEVBQzNCZSwyQkFBNEIsQ0FBQ2lDLEdBQVdmLEVBQWlCLEVBQ3pEakIsTUFBT1ksR0FBZ0MsRUFDdkNYLE9BQVFXLEdBQWdDLEVBQ3hDVixRQUFTd0IsRUFBdUIsRUFDaEN2QixRQUFTVyxFQUF5QixFQUNsQ1YsU0FBVXNCLEVBQXVCLEVBQ2pDckIsTUFBT3FCLEVBQXVCLEVBQzlCcEIsTUFBT2tCLEdBQWlCLEVBQ3hCakIsS0FBTW1CLEVBQXVCLEVBQzdCbEIsTUFBT00sRUFBeUIsRUFDaENMLFVBQVdLLEVBQXlCLENBQ3ZDLEVBQ0RtQixZQUFhLENBTVRDLE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUMsT0FBUSxTQUFVLFFBQVNyQixDQUFnQixFQUFHLEVBS2xFc0IsVUFBVyxDQUFDLFdBQVcsRUFLdkJDLFFBQVMsQ0FBQyxDQUFFQSxRQUFTLENBQUNMLEVBQVksQ0FBQyxDQUFFLEVBS3JDLGNBQWUsQ0FBQyxDQUFFLGNBQWVOLEVBQVcsQ0FBQSxDQUFFLEVBSzlDLGVBQWdCLENBQUMsQ0FBRSxlQUFnQkEsRUFBVyxDQUFBLENBQUUsRUFLaEQsZUFBZ0IsQ0FBQyxDQUFFLGVBQWdCLENBQUMsT0FBUSxRQUFTLGFBQWMsY0FBYyxFQUFHLEVBS3BGLGlCQUFrQixDQUFDLENBQUUsaUJBQWtCLENBQUMsUUFBUyxPQUFPLENBQUMsQ0FBRSxFQUszRFksSUFBSyxDQUFDLENBQUVBLElBQUssQ0FBQyxTQUFVLFNBQVMsQ0FBQyxDQUFFLEVBS3BDQyxRQUFTLENBQ0wsUUFDQSxlQUNBLFNBQ0EsT0FDQSxjQUNBLFFBQ0EsZUFDQSxnQkFDQSxhQUNBLGVBQ0EscUJBQ0EscUJBQ0EscUJBQ0Esa0JBQ0EsWUFDQSxZQUNBLE9BQ0EsY0FDQSxXQUNBLFlBQ0EsUUFBUSxFQU1aQyxNQUFPLENBQUMsQ0FBRUEsTUFBTyxDQUFDLFFBQVMsT0FBUSxPQUFRLFFBQVMsS0FBSyxFQUFHLEVBSzVEQyxNQUFPLENBQUMsQ0FBRUEsTUFBTyxDQUFDLE9BQVEsUUFBUyxPQUFRLE9BQVEsUUFBUyxLQUFLLEVBQUcsRUFLcEVDLFVBQVcsQ0FBQyxVQUFXLGdCQUFnQixFQUt2QyxhQUFjLENBQUMsQ0FBRUMsT0FBUSxDQUFDLFVBQVcsUUFBUyxPQUFRLE9BQVEsWUFBWSxFQUFHLEVBSzdFLGtCQUFtQixDQUFDLENBQUVBLE9BQVEsQ0FBQyxHQUFHdEIsR0FBYyxFQUFFUCxDQUFnQixFQUFHLEVBS3JFOEIsU0FBVSxDQUFDLENBQUVBLFNBQVVoQyxFQUFhLENBQUEsQ0FBRSxFQUt0QyxhQUFjLENBQUMsQ0FBRSxhQUFjQSxFQUFhLENBQUEsQ0FBRSxFQUs5QyxhQUFjLENBQUMsQ0FBRSxhQUFjQSxFQUFhLENBQUEsQ0FBRSxFQUs5Q2lDLFdBQVksQ0FBQyxDQUFFQSxXQUFZbEMsRUFBZSxDQUFBLENBQUUsRUFLNUMsZUFBZ0IsQ0FBQyxDQUFFLGVBQWdCQSxFQUFlLENBQUEsQ0FBRSxFQUtwRCxlQUFnQixDQUFDLENBQUUsZUFBZ0JBLEVBQWUsQ0FBQSxDQUFFLEVBS3BEbUMsU0FBVSxDQUFDLFNBQVUsUUFBUyxXQUFZLFdBQVksUUFBUSxFQUs5RDdDLE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUNBLENBQUssQ0FBQyxDQUFFLEVBSzFCLFVBQVcsQ0FBQyxDQUFFLFVBQVcsQ0FBQ0EsQ0FBSyxDQUFDLENBQUUsRUFLbEMsVUFBVyxDQUFDLENBQUUsVUFBVyxDQUFDQSxDQUFLLENBQUMsQ0FBRSxFQUtsQzhDLE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUM5QyxDQUFLLENBQUMsQ0FBRSxFQUsxQitDLElBQUssQ0FBQyxDQUFFQSxJQUFLLENBQUMvQyxDQUFLLENBQUMsQ0FBRSxFQUt0QmdELElBQUssQ0FBQyxDQUFFQSxJQUFLLENBQUNoRCxDQUFLLENBQUMsQ0FBRSxFQUt0QmlELE1BQU8sQ0FBQyxDQUFFQSxNQUFPLENBQUNqRCxDQUFLLENBQUMsQ0FBRSxFQUsxQmtELE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUNsRCxDQUFLLENBQUMsQ0FBRSxFQUs1Qm1ELEtBQU0sQ0FBQyxDQUFFQSxLQUFNLENBQUNuRCxDQUFLLENBQUMsQ0FBRSxFQUt4Qm9ELFdBQVksQ0FBQyxVQUFXLFlBQWEsVUFBVSxFQUsvQ0MsRUFBRyxDQUFDLENBQUVBLEVBQUcsQ0FBQyxPQUFRQyxHQUFXekMsQ0FBZ0IsRUFBRyxFQU1oRDBDLE1BQU8sQ0FBQyxDQUFFQSxNQUFPM0MsR0FBZ0MsQ0FBQSxDQUFFLEVBS25ELGlCQUFrQixDQUFDLENBQUU0QyxLQUFNLENBQUMsTUFBTyxjQUFlLE1BQU8sYUFBYSxFQUFHLEVBS3pFLFlBQWEsQ0FBQyxDQUFFQSxLQUFNLENBQUMsT0FBUSxlQUFnQixRQUFRLEVBQUcsRUFLMURBLEtBQU0sQ0FBQyxDQUFFQSxLQUFNLENBQUMsSUFBSyxPQUFRLFVBQVcsT0FBUTNDLENBQWdCLEVBQUcsRUFLbkU0QyxLQUFNLENBQUMsQ0FBRUEsS0FBTWpDLEdBQWlCLENBQUEsQ0FBRSxFQUtsQ2tDLE9BQVEsQ0FBQyxDQUFFQSxPQUFRbEMsR0FBaUIsQ0FBQSxDQUFFLEVBS3RDbUMsTUFBTyxDQUFDLENBQUVBLE1BQU8sQ0FBQyxRQUFTLE9BQVEsT0FBUUwsR0FBV3pDLENBQWdCLEVBQUcsRUFLekUsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDaUIsRUFBSyxDQUFDLENBQUUsRUFLdEMsZ0JBQWlCLENBQ2IsQ0FDSThCLElBQUssQ0FDRCxPQUNBLENBQUVDLEtBQU0sQ0FBQyxPQUFRUCxHQUFXekMsQ0FBZ0IsQ0FBRyxFQUMvQ0EsQ0FBZ0IsQ0FFdkIsQ0FBQSxFQU1MLFlBQWEsQ0FBQyxDQUFFLFlBQWFLLEdBQStCLENBQUEsQ0FBRSxFQUs5RCxVQUFXLENBQUMsQ0FBRSxVQUFXQSxHQUErQixDQUFBLENBQUUsRUFLMUQsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDWSxFQUFLLENBQUMsQ0FBRSxFQUt0QyxnQkFBaUIsQ0FDYixDQUFFZ0MsSUFBSyxDQUFDLE9BQVEsQ0FBRUQsS0FBTSxDQUFDUCxHQUFXekMsQ0FBZ0IsR0FBS0EsQ0FBZ0IsQ0FBRyxDQUFBLEVBTWhGLFlBQWEsQ0FBQyxDQUFFLFlBQWFLLEdBQStCLENBQUEsQ0FBRSxFQUs5RCxVQUFXLENBQUMsQ0FBRSxVQUFXQSxHQUErQixDQUFBLENBQUUsRUFLMUQsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDLE1BQU8sTUFBTyxRQUFTLFlBQWEsV0FBVyxFQUFHLEVBS2hGLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQyxPQUFRLE1BQU8sTUFBTyxLQUFNTCxDQUFnQixFQUFHLEVBSzdFLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQyxPQUFRLE1BQU8sTUFBTyxLQUFNQSxDQUFnQixFQUFHLEVBSzdFaEIsSUFBSyxDQUFDLENBQUVBLElBQUssQ0FBQ0EsQ0FBRyxDQUFDLENBQUUsRUFLcEIsUUFBUyxDQUFDLENBQUUsUUFBUyxDQUFDQSxDQUFHLENBQUMsQ0FBRSxFQUs1QixRQUFTLENBQUMsQ0FBRSxRQUFTLENBQUNBLENBQUcsQ0FBQyxDQUFFLEVBSzVCLGtCQUFtQixDQUFDLENBQUVrRSxRQUFTLENBQUMsU0FBVSxHQUFHeEMsR0FBVSxDQUFBLEVBQUcsRUFLMUQsZ0JBQWlCLENBQUMsQ0FBRSxnQkFBaUIsQ0FBQyxRQUFTLE1BQU8sU0FBVSxTQUFTLEVBQUcsRUFLNUUsZUFBZ0IsQ0FBQyxDQUFFLGVBQWdCLENBQUMsT0FBUSxRQUFTLE1BQU8sU0FBVSxTQUFTLEVBQUcsRUFLbEYsZ0JBQWlCLENBQUMsQ0FBRXlDLFFBQVMsQ0FBQyxTQUFVLEdBQUd6QyxHQUFVLEVBQUUsVUFBVSxFQUFHLEVBS3BFLGNBQWUsQ0FBQyxDQUFFMEMsTUFBTyxDQUFDLFFBQVMsTUFBTyxTQUFVLFdBQVksU0FBUyxFQUFHLEVBSzVFLGFBQWMsQ0FBQyxDQUFFQyxLQUFNLENBQUMsT0FBUSxRQUFTLE1BQU8sU0FBVSxVQUFXLFVBQVUsRUFBRyxFQUtsRixnQkFBaUIsQ0FBQyxDQUFFLGdCQUFpQixDQUFDLEdBQUczQyxHQUFVLEVBQUUsVUFBVSxFQUFHLEVBS2xFLGNBQWUsQ0FBQyxDQUFFLGNBQWUsQ0FBQyxRQUFTLE1BQU8sU0FBVSxXQUFZLFNBQVMsRUFBRyxFQUtwRixhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUMsT0FBUSxRQUFTLE1BQU8sU0FBVSxTQUFTLEVBQUcsRUFNOUU0QyxFQUFHLENBQUMsQ0FBRUEsRUFBRyxDQUFDaEUsQ0FBTyxDQUFDLENBQUUsRUFLcEJpRSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDakUsQ0FBTyxDQUFDLENBQUUsRUFLdEJrRSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDbEUsQ0FBTyxDQUFDLENBQUUsRUFLdEJtRSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDbkUsQ0FBTyxDQUFDLENBQUUsRUFLdEJvRSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDcEUsQ0FBTyxDQUFDLENBQUUsRUFLdEJxRSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDckUsQ0FBTyxDQUFDLENBQUUsRUFLdEJzRSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDdEUsQ0FBTyxDQUFDLENBQUUsRUFLdEJ1RSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDdkUsQ0FBTyxDQUFDLENBQUUsRUFLdEJ3RSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDeEUsQ0FBTyxDQUFDLENBQUUsRUFLdEJ5RSxFQUFHLENBQUMsQ0FBRUEsRUFBRyxDQUFDM0UsQ0FBTSxDQUFDLENBQUUsRUFLbkI0RSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDNUUsQ0FBTSxDQUFDLENBQUUsRUFLckI2RSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDN0UsQ0FBTSxDQUFDLENBQUUsRUFLckI4RSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDOUUsQ0FBTSxDQUFDLENBQUUsRUFLckIrRSxHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDL0UsQ0FBTSxDQUFDLENBQUUsRUFLckJnRixHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDaEYsQ0FBTSxDQUFDLENBQUUsRUFLckJpRixHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDakYsQ0FBTSxDQUFDLENBQUUsRUFLckJrRixHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDbEYsQ0FBTSxDQUFDLENBQUUsRUFLckJtRixHQUFJLENBQUMsQ0FBRUEsR0FBSSxDQUFDbkYsQ0FBTSxDQUFDLENBQUUsRUFLckIsVUFBVyxDQUFDLENBQUUsVUFBVyxDQUFDTyxDQUFLLENBQUMsQ0FBRSxFQUtsQyxrQkFBbUIsQ0FBQyxpQkFBaUIsRUFLckMsVUFBVyxDQUFDLENBQUUsVUFBVyxDQUFDQSxDQUFLLENBQUMsQ0FBRSxFQUtsQyxrQkFBbUIsQ0FBQyxpQkFBaUIsRUFNckM2RSxFQUFHLENBQ0MsQ0FDSUEsRUFBRyxDQUNDLE9BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0F4RSxFQUNBM0IsQ0FBTyxDQUVkLENBQUEsRUFNTCxRQUFTLENBQUMsQ0FBRSxRQUFTLENBQUMyQixFQUFrQjNCLEVBQVMsTUFBTyxNQUFPLEtBQUssRUFBRyxFQUt2RSxRQUFTLENBQ0wsQ0FDSSxRQUFTLENBQ0wyQixFQUNBM0IsRUFDQSxPQUNBLE9BQ0EsTUFDQSxNQUNBLE1BQ0EsUUFDQSxDQUFFb0csT0FBUSxDQUFDdkQsRUFBWSxDQUFHLEVBQzFCQSxFQUFZLENBRW5CLENBQUEsRUFNTHdELEVBQUcsQ0FDQyxDQUNJQSxFQUFHLENBQ0MxRSxFQUNBM0IsRUFDQSxPQUNBLE1BQ0EsTUFDQSxNQUNBLE1BQ0EsTUFDQSxLQUFLLENBRVosQ0FBQSxFQU1MLFFBQVMsQ0FDTCxDQUFFLFFBQVMsQ0FBQzJCLEVBQWtCM0IsRUFBUyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sS0FBSyxDQUFHLENBQUEsRUFNdEYsUUFBUyxDQUNMLENBQUUsUUFBUyxDQUFDMkIsRUFBa0IzQixFQUFTLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxLQUFLLENBQUcsQ0FBQSxFQU10RnNHLEtBQU0sQ0FBQyxDQUFFQSxLQUFNLENBQUMzRSxFQUFrQjNCLEVBQVMsT0FBUSxNQUFPLE1BQU8sS0FBSyxFQUFHLEVBTXpFLFlBQWEsQ0FBQyxDQUFFdUcsS0FBTSxDQUFDLE9BQVExRCxHQUFjZCxFQUFpQixFQUFHLEVBS2pFLGlCQUFrQixDQUFDLGNBQWUsc0JBQXNCLEVBS3hELGFBQWMsQ0FBQyxTQUFVLFlBQVksRUFLckMsY0FBZSxDQUNYLENBQ0l5RSxLQUFNLENBQ0YsT0FDQSxhQUNBLFFBQ0EsU0FDQSxTQUNBLFdBQ0EsT0FDQSxZQUNBLFFBQ0FDLEVBQWlCLENBRXhCLENBQUEsRUFNTCxjQUFlLENBQUMsQ0FBRUQsS0FBTSxDQUFDNUQsRUFBSyxDQUFDLENBQUUsRUFLakMsYUFBYyxDQUFDLGFBQWEsRUFLNUIsY0FBZSxDQUFDLFNBQVMsRUFLekIsbUJBQW9CLENBQUMsY0FBYyxFQUtuQyxhQUFjLENBQUMsY0FBZSxlQUFlLEVBSzdDLGNBQWUsQ0FBQyxvQkFBcUIsY0FBYyxFQUtuRCxlQUFnQixDQUFDLHFCQUFzQixrQkFBa0IsRUFLekQ4RCxTQUFVLENBQ04sQ0FDSUEsU0FBVSxDQUNOLFVBQ0EsUUFDQSxTQUNBLE9BQ0EsUUFDQSxTQUNBL0UsQ0FBZ0IsQ0FFdkIsQ0FBQSxFQU1MLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQyxPQUFRTSxHQUFVd0UsRUFBaUIsRUFBRyxFQUt0RUUsUUFBUyxDQUNMLENBQ0lBLFFBQVMsQ0FDTCxPQUNBLFFBQ0EsT0FDQSxTQUNBLFVBQ0EsUUFDQTdFLEdBQ0FILENBQWdCLENBRXZCLENBQUEsRUFNTCxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUMsT0FBUUEsQ0FBZ0IsQ0FBQyxDQUFFLEVBSzNELGtCQUFtQixDQUFDLENBQUVpRixLQUFNLENBQUMsT0FBUSxPQUFRLFVBQVdqRixDQUFnQixFQUFHLEVBSzNFLHNCQUF1QixDQUFDLENBQUVpRixLQUFNLENBQUMsU0FBVSxTQUFTLENBQUMsQ0FBRSxFQU12RCxvQkFBcUIsQ0FBQyxDQUFFQyxZQUFhLENBQUMvRyxDQUFNLENBQUMsQ0FBRSxFQUsvQyxzQkFBdUIsQ0FBQyxDQUFFLHNCQUF1QixDQUFDa0IsQ0FBTyxDQUFDLENBQUUsRUFLNUQsaUJBQWtCLENBQUMsQ0FBRXVGLEtBQU0sQ0FBQyxPQUFRLFNBQVUsUUFBUyxVQUFXLFFBQVMsS0FBSyxFQUFHLEVBS25GLGFBQWMsQ0FBQyxDQUFFQSxLQUFNLENBQUN6RyxDQUFNLENBQUMsQ0FBRSxFQUtqQyxlQUFnQixDQUFDLENBQUUsZUFBZ0IsQ0FBQ2tCLENBQU8sQ0FBQyxDQUFFLEVBSzlDLGtCQUFtQixDQUFDLFlBQWEsV0FBWSxlQUFnQixjQUFjLEVBSzNFLHdCQUF5QixDQUFDLENBQUU4RixXQUFZLENBQUMsR0FBRzNFLEdBQWUsRUFBRSxNQUFNLEVBQUcsRUFLdEUsNEJBQTZCLENBQ3pCLENBQUUyRSxXQUFZLENBQUMsT0FBUSxZQUFhaEYsR0FBVUMsRUFBaUIsQ0FBRyxDQUFBLEVBTXRFLG1CQUFvQixDQUFDLENBQUUsbUJBQW9CLENBQUMsT0FBUUQsR0FBVUgsQ0FBZ0IsRUFBRyxFQUtqRix3QkFBeUIsQ0FBQyxDQUFFbUYsV0FBWSxDQUFDaEgsQ0FBTSxDQUFDLENBQUUsRUFLbEQsaUJBQWtCLENBQUMsWUFBYSxZQUFhLGFBQWMsYUFBYSxFQUt4RSxnQkFBaUIsQ0FBQyxXQUFZLGdCQUFpQixXQUFXLEVBSzFELFlBQWEsQ0FBQyxDQUFFeUcsS0FBTSxDQUFDLE9BQVEsU0FBVSxVQUFXLFFBQVEsRUFBRyxFQUsvRFEsT0FBUSxDQUFDLENBQUVBLE9BQVFuRixFQUF5QixDQUFBLENBQUUsRUFLOUMsaUJBQWtCLENBQ2QsQ0FDSW9GLE1BQU8sQ0FDSCxXQUNBLE1BQ0EsU0FDQSxTQUNBLFdBQ0EsY0FDQSxNQUNBLFFBQ0FyRixDQUFnQixDQUV2QixDQUFBLEVBTUxzRixXQUFZLENBQ1IsQ0FBRUEsV0FBWSxDQUFDLFNBQVUsU0FBVSxNQUFPLFdBQVksV0FBWSxjQUFjLENBQUcsQ0FBQSxFQU12RkMsTUFBTyxDQUFDLENBQUVBLE1BQU8sQ0FBQyxTQUFVLFFBQVMsTUFBTyxNQUFNLEVBQUcsRUFLckRDLFFBQVMsQ0FBQyxDQUFFQSxRQUFTLENBQUMsT0FBUSxTQUFVLE1BQU0sRUFBRyxFQUtqRHJDLFFBQVMsQ0FBQyxDQUFFQSxRQUFTLENBQUMsT0FBUW5ELENBQWdCLENBQUMsQ0FBRSxFQU1qRCxnQkFBaUIsQ0FBQyxDQUFFeUYsR0FBSSxDQUFDLFFBQVMsUUFBUyxRQUFRLEVBQUcsRUFLdEQsVUFBVyxDQUFDLENBQUUsVUFBVyxDQUFDLFNBQVUsVUFBVyxVQUFXLE1BQU0sRUFBRyxFQU1uRSxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNwRyxDQUFPLENBQUMsQ0FBRSxFQUsxQyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUMsU0FBVSxVQUFXLFNBQVMsRUFBRyxFQUsvRCxjQUFlLENBQUMsQ0FBRW9HLEdBQUksQ0FBQyxHQUFHbEYsR0FBYyxFQUFFbUYsRUFBbUIsRUFBRyxFQUtoRSxZQUFhLENBQUMsQ0FBRUQsR0FBSSxDQUFDLFlBQWEsQ0FBRUUsT0FBUSxDQUFDLEdBQUksSUFBSyxJQUFLLFFBQVMsT0FBTyxDQUFDLENBQUUsQ0FBQyxDQUFFLEVBS2pGLFVBQVcsQ0FBQyxDQUFFRixHQUFJLENBQUMsT0FBUSxRQUFTLFVBQVdHLEVBQWUsRUFBRyxFQUtqRSxXQUFZLENBQ1IsQ0FDSUgsR0FBSSxDQUNBLE9BQ0EsQ0FBRSxjQUFlLENBQUMsSUFBSyxLQUFNLElBQUssS0FBTSxJQUFLLEtBQU0sSUFBSyxJQUFJLENBQUcsRUFDL0RJLEVBQWdCLENBRXZCLENBQUEsRUFNTCxXQUFZLENBQUMsQ0FBRUosR0FBSSxDQUFDdEgsQ0FBTSxDQUFDLENBQUUsRUFLN0Isb0JBQXFCLENBQUMsQ0FBRTJILEtBQU0sQ0FBQzVHLENBQTBCLENBQUMsQ0FBRSxFQUs1RCxtQkFBb0IsQ0FBQyxDQUFFNkcsSUFBSyxDQUFDN0csQ0FBMEIsQ0FBQyxDQUFFLEVBSzFELGtCQUFtQixDQUFDLENBQUU4RyxHQUFJLENBQUM5RyxDQUEwQixDQUFDLENBQUUsRUFLeEQsZ0JBQWlCLENBQUMsQ0FBRTRHLEtBQU0sQ0FBQzdHLENBQWtCLENBQUMsQ0FBRSxFQUtoRCxlQUFnQixDQUFDLENBQUU4RyxJQUFLLENBQUM5RyxDQUFrQixDQUFDLENBQUUsRUFLOUMsY0FBZSxDQUFDLENBQUUrRyxHQUFJLENBQUMvRyxDQUFrQixDQUFDLENBQUUsRUFNNUNnSCxRQUFTLENBQUMsQ0FBRUEsUUFBUyxDQUFDeEgsQ0FBWSxDQUFDLENBQUUsRUFLckMsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLFdBQVksQ0FBQyxDQUFFeUgsT0FBUSxDQUFDdkgsQ0FBVyxDQUFDLENBQUUsRUFLdEMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGlCQUFrQixDQUFDLENBQUUsaUJBQWtCLENBQUNVLENBQU8sQ0FBQyxDQUFFLEVBS2xELGVBQWdCLENBQUMsQ0FBRTZHLE9BQVEsQ0FBQyxHQUFHMUYsR0FBZSxFQUFFLFFBQVEsRUFBRyxFQUszRCxXQUFZLENBQUMsQ0FBRSxXQUFZLENBQUM3QixDQUFXLENBQUMsQ0FBRSxFQUsxQyxtQkFBb0IsQ0FBQyxrQkFBa0IsRUFLdkMsV0FBWSxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUsxQyxtQkFBb0IsQ0FBQyxrQkFBa0IsRUFLdkMsaUJBQWtCLENBQUMsQ0FBRSxpQkFBa0IsQ0FBQ1UsQ0FBTyxDQUFDLENBQUUsRUFLbEQsZUFBZ0IsQ0FBQyxDQUFFOEcsT0FBUTNGLEdBQWUsQ0FBQSxDQUFFLEVBSzVDLGVBQWdCLENBQUMsQ0FBRTBGLE9BQVEsQ0FBQzFILENBQVcsQ0FBQyxDQUFFLEVBSzFDLGlCQUFrQixDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUtoRCxpQkFBa0IsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLaEQsaUJBQWtCLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBS2hELGlCQUFrQixDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUtoRCxpQkFBa0IsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLaEQsaUJBQWtCLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBS2hELGVBQWdCLENBQUMsQ0FBRTJILE9BQVEsQ0FBQzNILENBQVcsQ0FBQyxDQUFFLEVBSzFDLGdCQUFpQixDQUFDLENBQUU0SCxRQUFTLENBQUMsR0FBSSxHQUFHNUYsR0FBZSxDQUFBLEVBQUcsRUFLdkQsaUJBQWtCLENBQUMsQ0FBRSxpQkFBa0IsQ0FBQ0wsR0FBVUgsQ0FBZ0IsQ0FBQyxDQUFFLEVBS3JFLFlBQWEsQ0FBQyxDQUFFb0csUUFBUyxDQUFDakcsR0FBVUMsRUFBaUIsQ0FBQyxDQUFFLEVBS3hELGdCQUFpQixDQUFDLENBQUVnRyxRQUFTLENBQUNqSSxDQUFNLENBQUMsQ0FBRSxFQUt2QyxTQUFVLENBQUMsQ0FBRWtJLEtBQU1uRyxHQUFnQyxDQUFBLENBQUUsRUFLckQsZUFBZ0IsQ0FBQyxZQUFZLEVBSzdCLGFBQWMsQ0FBQyxDQUFFbUcsS0FBTSxDQUFDbEksQ0FBTSxDQUFDLENBQUUsRUFLakMsZUFBZ0IsQ0FBQyxDQUFFLGVBQWdCLENBQUNrQixDQUFPLENBQUMsQ0FBRSxFQUs5QyxnQkFBaUIsQ0FBQyxDQUFFLGNBQWUsQ0FBQ2MsR0FBVUMsRUFBaUIsQ0FBQyxDQUFFLEVBS2xFLG9CQUFxQixDQUFDLENBQUUsY0FBZSxDQUFDakMsQ0FBTSxDQUFDLENBQUUsRUFNakRtSSxPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDLEdBQUksUUFBUyxPQUFRcEYsR0FBY3FGLEVBQWlCLEVBQUcsRUFLM0UsZUFBZ0IsQ0FBQyxDQUFFRCxPQUFRLENBQUNyRixFQUFLLENBQUMsQ0FBRSxFQUtwQzVCLFFBQVMsQ0FBQyxDQUFFQSxRQUFTLENBQUNBLENBQU8sQ0FBQyxDQUFFLEVBS2hDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQyxHQUFHb0IsR0FBYSxFQUFJLGVBQWdCLGFBQWEsRUFBRyxFQUtsRixXQUFZLENBQUMsQ0FBRSxXQUFZQSxHQUFlLENBQUEsQ0FBRSxFQU81QytGLE9BQVEsQ0FBQyxDQUFFQSxPQUFRLENBQUMsR0FBSSxNQUFNLENBQUMsQ0FBRSxFQUtqQ2xJLEtBQU0sQ0FBQyxDQUFFQSxLQUFNLENBQUNBLENBQUksQ0FBQyxDQUFFLEVBS3ZCQyxXQUFZLENBQUMsQ0FBRUEsV0FBWSxDQUFDQSxDQUFVLENBQUMsQ0FBRSxFQUt6Q0ssU0FBVSxDQUFDLENBQUVBLFNBQVUsQ0FBQ0EsQ0FBUSxDQUFDLENBQUUsRUFLbkMsY0FBZSxDQUFDLENBQUUsY0FBZSxDQUFDLEdBQUksT0FBUXNDLEdBQWNsQixDQUFnQixFQUFHLEVBSy9FbkIsVUFBVyxDQUFDLENBQUVBLFVBQVcsQ0FBQ0EsQ0FBUyxDQUFDLENBQUUsRUFLdEMsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQyxDQUFTLENBQUMsQ0FBRSxFQUs1Q0MsT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQ0EsQ0FBTSxDQUFDLENBQUUsRUFLN0JRLFNBQVUsQ0FBQyxDQUFFQSxTQUFVLENBQUNBLENBQVEsQ0FBQyxDQUFFLEVBS25DRSxNQUFPLENBQUMsQ0FBRUEsTUFBTyxDQUFDQSxFQUFLLENBQUMsQ0FBRSxFQU0xQixrQkFBbUIsQ0FBQyxDQUFFLGtCQUFtQixDQUFDLEdBQUksTUFBTSxDQUFDLENBQUUsRUFLdkQsZ0JBQWlCLENBQUMsQ0FBRSxnQkFBaUIsQ0FBQ25CLENBQUksQ0FBQyxDQUFFLEVBSzdDLHNCQUF1QixDQUFDLENBQUUsc0JBQXVCLENBQUNDLENBQVUsQ0FBQyxDQUFFLEVBSy9ELG9CQUFxQixDQUFDLENBQUUsb0JBQXFCLENBQUNLLENBQVEsQ0FBQyxDQUFFLEVBS3pELHFCQUFzQixDQUFDLENBQUUscUJBQXNCLENBQUNDLENBQVMsQ0FBQyxDQUFFLEVBSzVELHNCQUF1QixDQUFDLENBQUUsc0JBQXVCLENBQUNDLENBQVMsQ0FBQyxDQUFFLEVBSzlELGtCQUFtQixDQUFDLENBQUUsa0JBQW1CLENBQUNDLENBQU0sQ0FBQyxDQUFFLEVBS25ELG1CQUFvQixDQUFDLENBQUUsbUJBQW9CLENBQUNNLENBQU8sQ0FBQyxDQUFFLEVBS3RELG9CQUFxQixDQUFDLENBQUUsb0JBQXFCLENBQUNFLENBQVEsQ0FBQyxDQUFFLEVBS3pELGlCQUFrQixDQUFDLENBQUUsaUJBQWtCLENBQUNFLEVBQUssQ0FBQyxDQUFFLEVBTWhELGtCQUFtQixDQUFDLENBQUV5RyxPQUFRLENBQUMsV0FBWSxVQUFVLENBQUMsQ0FBRSxFQUt4RCxpQkFBa0IsQ0FBQyxDQUFFLGlCQUFrQixDQUFDeEgsQ0FBYSxDQUFDLENBQUUsRUFLeEQsbUJBQW9CLENBQUMsQ0FBRSxtQkFBb0IsQ0FBQ0EsQ0FBYSxDQUFDLENBQUUsRUFLNUQsbUJBQW9CLENBQUMsQ0FBRSxtQkFBb0IsQ0FBQ0EsQ0FBYSxDQUFDLENBQUUsRUFLNUQsZUFBZ0IsQ0FBQyxDQUFFK0gsTUFBTyxDQUFDLE9BQVEsT0FBTyxDQUFDLENBQUUsRUFLN0NDLFFBQVMsQ0FBQyxDQUFFQSxRQUFTLENBQUMsTUFBTyxRQUFRLENBQUMsQ0FBRSxFQU14Q0MsV0FBWSxDQUNSLENBQ0lBLFdBQVksQ0FDUixPQUNBLE1BQ0EsR0FDQSxTQUNBLFVBQ0EsU0FDQSxZQUNBM0csQ0FBZ0IsQ0FFdkIsQ0FBQSxFQU1MNEcsU0FBVSxDQUFDLENBQUVBLFNBQVUvRixFQUF1QixDQUFBLENBQUUsRUFLaERnRyxLQUFNLENBQUMsQ0FBRUEsS0FBTSxDQUFDLFNBQVUsS0FBTSxNQUFPLFNBQVU3RyxDQUFnQixFQUFHLEVBS3BFOEcsTUFBTyxDQUFDLENBQUVBLE1BQU9qRyxFQUF1QixDQUFBLENBQUUsRUFLMUNrRyxRQUFTLENBQUMsQ0FBRUEsUUFBUyxDQUFDLE9BQVEsT0FBUSxPQUFRLFFBQVMsU0FBVS9HLENBQWdCLEVBQUcsRUFNcEZnSCxVQUFXLENBQUMsQ0FBRUEsVUFBVyxDQUFDLEdBQUksTUFBTyxNQUFNLEVBQUcsRUFLOUN4SCxNQUFPLENBQUMsQ0FBRUEsTUFBTyxDQUFDQSxDQUFLLENBQUMsQ0FBRSxFQUsxQixVQUFXLENBQUMsQ0FBRSxVQUFXLENBQUNBLENBQUssQ0FBQyxDQUFFLEVBS2xDLFVBQVcsQ0FBQyxDQUFFLFVBQVcsQ0FBQ0EsQ0FBSyxDQUFDLENBQUUsRUFLbEN5SCxPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDeEUsR0FBV3pDLENBQWdCLENBQUMsQ0FBRSxFQUtsRCxjQUFlLENBQUMsQ0FBRSxjQUFlLENBQUNKLENBQVMsQ0FBQyxDQUFFLEVBSzlDLGNBQWUsQ0FBQyxDQUFFLGNBQWUsQ0FBQ0EsQ0FBUyxDQUFDLENBQUUsRUFLOUMsU0FBVSxDQUFDLENBQUUsU0FBVSxDQUFDRixDQUFJLENBQUMsQ0FBRSxFQUsvQixTQUFVLENBQUMsQ0FBRSxTQUFVLENBQUNBLENBQUksQ0FBQyxDQUFFLEVBSy9CLG1CQUFvQixDQUNoQixDQUNJd0gsT0FBUSxDQUNKLFNBQ0EsTUFDQSxZQUNBLFFBQ0EsZUFDQSxTQUNBLGNBQ0EsT0FDQSxXQUNBbEgsQ0FBZ0IsQ0FFdkIsQ0FBQSxFQU9MbUgsT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQyxPQUFRaEosQ0FBTSxDQUFDLENBQUUsRUFLckNpSixXQUFZLENBQUMsQ0FBRUEsV0FBWSxDQUFDLE9BQVEsTUFBTSxDQUFDLENBQUUsRUFLN0NDLE9BQVEsQ0FDSixDQUNJQSxPQUFRLENBQ0osT0FDQSxVQUNBLFVBQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxjQUNBLE9BQ0EsZUFDQSxXQUNBLE9BQ0EsWUFDQSxnQkFDQSxRQUNBLE9BQ0EsVUFDQSxPQUNBLFdBQ0EsYUFDQSxhQUNBLGFBQ0EsV0FDQSxXQUNBLFdBQ0EsV0FDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxjQUNBLGNBQ0EsVUFDQSxXQUNBckgsQ0FBZ0IsQ0FFdkIsQ0FBQSxFQU1MLGNBQWUsQ0FBQyxDQUFFc0gsTUFBTyxDQUFDbkosQ0FBTSxDQUFDLENBQUUsRUFLbkMsaUJBQWtCLENBQUMsQ0FBRSxpQkFBa0IsQ0FBQyxPQUFRLE1BQU0sQ0FBQyxDQUFFLEVBS3pEb0osT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQyxPQUFRLElBQUssSUFBSyxFQUFFLEVBQUcsRUFLM0Msa0JBQW1CLENBQUMsQ0FBRUMsT0FBUSxDQUFDLE9BQVEsUUFBUSxDQUFDLENBQUUsRUFLbEQsV0FBWSxDQUFDLENBQUUsV0FBWXZILEVBQXlCLENBQUEsQ0FBRSxFQUt0RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFdBQVksQ0FBQyxDQUFFLFdBQVlBLEVBQXlCLENBQUEsQ0FBRSxFQUt0RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELFlBQWEsQ0FBQyxDQUFFLFlBQWFBLEVBQXlCLENBQUEsQ0FBRSxFQUt4RCxZQUFhLENBQUMsQ0FBRSxZQUFhQSxFQUF5QixDQUFBLENBQUUsRUFLeEQsWUFBYSxDQUFDLENBQUUsWUFBYUEsRUFBeUIsQ0FBQSxDQUFFLEVBS3hELGFBQWMsQ0FBQyxDQUFFd0gsS0FBTSxDQUFDLFFBQVMsTUFBTyxTQUFVLFlBQVksRUFBRyxFQUtqRSxZQUFhLENBQUMsQ0FBRUEsS0FBTSxDQUFDLFNBQVUsUUFBUSxDQUFDLENBQUUsRUFLNUMsWUFBYSxDQUFDLENBQUVBLEtBQU0sQ0FBQyxPQUFRLElBQUssSUFBSyxNQUFNLEVBQUcsRUFLbEQsa0JBQW1CLENBQUMsQ0FBRUEsS0FBTSxDQUFDLFlBQWEsV0FBVyxDQUFDLENBQUUsRUFLeERDLE1BQU8sQ0FDSCxDQUNJQSxNQUFPLENBQUMsT0FBUSxPQUFRLGNBQWMsQ0FDekMsQ0FBQSxFQU1MLFVBQVcsQ0FDUCxDQUNJLFlBQWEsQ0FBQyxJQUFLLE9BQVEsT0FBTyxDQUNyQyxDQUFBLEVBTUwsVUFBVyxDQUNQLENBQ0ksWUFBYSxDQUFDLElBQUssS0FBTSxNQUFNLENBQ2xDLENBQUEsRUFNTCxXQUFZLENBQUMsa0JBQWtCLEVBSy9CQyxPQUFRLENBQUMsQ0FBRUEsT0FBUSxDQUFDLE9BQVEsT0FBUSxNQUFPLE1BQU0sRUFBRyxFQUtwRCxjQUFlLENBQ1gsQ0FBRSxjQUFlLENBQUMsT0FBUSxTQUFVLFdBQVksWUFBYTNILENBQWdCLENBQUcsQ0FBQSxFQU9wRjRILEtBQU0sQ0FBQyxDQUFFQSxLQUFNLENBQUN6SixFQUFRLE1BQU0sQ0FBQyxDQUFFLEVBS2pDLFdBQVksQ0FBQyxDQUFFMEosT0FBUSxDQUFDMUgsR0FBVUMsR0FBbUIwRSxFQUFpQixFQUFHLEVBS3pFK0MsT0FBUSxDQUFDLENBQUVBLE9BQVEsQ0FBQzFKLEVBQVEsTUFBTSxDQUFDLENBQUUsRUFNckMySixHQUFJLENBQUMsVUFBVyxhQUFhLEVBSzdCLHNCQUF1QixDQUFDLENBQUUsc0JBQXVCLENBQUMsT0FBUSxNQUFNLENBQUMsQ0FBRSxDQUN0RSxFQUNEQyx1QkFBd0IsQ0FDcEJqRyxTQUFVLENBQUMsYUFBYyxZQUFZLEVBQ3JDQyxXQUFZLENBQUMsZUFBZ0IsY0FBYyxFQUMzQzVDLE1BQU8sQ0FBQyxVQUFXLFVBQVcsUUFBUyxNQUFPLE1BQU8sUUFBUyxTQUFVLE1BQU0sRUFDOUUsVUFBVyxDQUFDLFFBQVMsTUFBTSxFQUMzQixVQUFXLENBQUMsTUFBTyxRQUFRLEVBQzNCd0QsS0FBTSxDQUFDLFFBQVMsT0FBUSxRQUFRLEVBQ2hDM0QsSUFBSyxDQUFDLFFBQVMsT0FBTyxFQUN0QnNFLEVBQUcsQ0FBQyxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLElBQUksRUFDbERDLEdBQUksQ0FBQyxLQUFNLElBQUksRUFDZkMsR0FBSSxDQUFDLEtBQU0sSUFBSSxFQUNmTyxFQUFHLENBQUMsS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxJQUFJLEVBQ2xEQyxHQUFJLENBQUMsS0FBTSxJQUFJLEVBQ2ZDLEdBQUksQ0FBQyxLQUFNLElBQUksRUFDZlUsS0FBTSxDQUFDLElBQUssR0FBRyxFQUNmLFlBQWEsQ0FBQyxTQUFTLEVBQ3ZCLGFBQWMsQ0FDVixjQUNBLG1CQUNBLGFBQ0EsY0FDQSxjQUFjLEVBRWxCLGNBQWUsQ0FBQyxZQUFZLEVBQzVCLG1CQUFvQixDQUFDLFlBQVksRUFDakMsYUFBYyxDQUFDLFlBQVksRUFDM0IsY0FBZSxDQUFDLFlBQVksRUFDNUIsZUFBZ0IsQ0FBQyxZQUFZLEVBQzdCLGFBQWMsQ0FBQyxVQUFXLFVBQVUsRUFDcENzQixRQUFTLENBQ0wsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsYUFDQSxhQUNBLGFBQ0EsYUFDQSxhQUNBLGFBQ0EsYUFDQSxZQUFZLEVBRWhCLFlBQWEsQ0FBQyxhQUFjLFlBQVksRUFDeEMsWUFBYSxDQUFDLGFBQWMsWUFBWSxFQUN4QyxZQUFhLENBQUMsYUFBYyxZQUFZLEVBQ3hDLFlBQWEsQ0FBQyxhQUFjLFlBQVksRUFDeEMsWUFBYSxDQUFDLGFBQWMsWUFBWSxFQUN4QyxZQUFhLENBQUMsYUFBYyxZQUFZLEVBQ3hDLGlCQUFrQixDQUFDLG1CQUFvQixrQkFBa0IsRUFDekQsV0FBWSxDQUNSLGFBQ0EsYUFDQSxhQUNBLGFBQ0EsYUFDQSxZQUFZLEVBRWhCLGFBQWMsQ0FBQyxhQUFjLFlBQVksRUFDekMsYUFBYyxDQUFDLGFBQWMsWUFBWSxFQUN6QyxlQUFnQixDQUNaLGlCQUNBLGlCQUNBLGlCQUNBLGdCQUFnQixFQUVwQixpQkFBa0IsQ0FBQyxpQkFBa0IsZ0JBQWdCLEVBQ3JELGlCQUFrQixDQUFDLGlCQUFrQixnQkFBZ0IsRUFDckQsV0FBWSxDQUNSLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsV0FBVyxFQUVmLFlBQWEsQ0FBQyxZQUFhLFdBQVcsRUFDdEMsWUFBYSxDQUFDLFlBQWEsV0FBVyxFQUN0QyxXQUFZLENBQ1IsWUFDQSxZQUNBLFlBQ0EsWUFDQSxZQUNBLFlBQ0EsWUFDQSxXQUFXLEVBRWYsWUFBYSxDQUFDLFlBQWEsV0FBVyxFQUN0QyxZQUFhLENBQUMsWUFBYSxXQUFXLEVBQ3RDeUIsTUFBTyxDQUFDLFVBQVcsVUFBVyxVQUFVLEVBQ3hDLFVBQVcsQ0FBQyxPQUFPLEVBQ25CLFVBQVcsQ0FBQyxPQUFPLEVBQ25CLFdBQVksQ0FBQyxPQUFPLENBQ3ZCLEVBQ0RNLCtCQUFnQyxDQUM1QixZQUFhLENBQUMsU0FBUyxDQUMxQixFQUVULEVDajBEYUMsR0FBZUEsQ0FDeEJDLEVBQ0EsQ0FDSXBILFVBQUFBLEVBQ0FxSCxPQUFBQSxFQUNBcEgsVUFBQUEsRUFDQXFILDJCQUFBQSxFQUNBQyxPQUFBQSxFQUFTLENBQUEsRUFDVEMsU0FBQUEsRUFBVyxDQUFFLENBQUEsSUFFakIsQ0FDQUMsR0FBaUJMLEVBQVksWUFBYXBILENBQVMsRUFDbkR5SCxHQUFpQkwsRUFBWSxTQUFVQyxDQUFNLEVBQzdDSSxHQUFpQkwsRUFBWSxZQUFhbkgsQ0FBUyxFQUNuRHdILEdBQWlCTCxFQUFZLDZCQUE4QkUsQ0FBMEIsRUFFckYsUUFBV0ksS0FBYUYsRUFDcEJHLEdBQ0lQLEVBQVdNLENBQWtDLEVBQzdDRixFQUFTRSxDQUFrQyxDQUFDLEVBSXBELFFBQVdFLEtBQU9MLEVBQ2RNLEdBQ0lULEVBQVdRLENBQTBCLEVBQ3JDTCxFQUFPSyxDQUEwQixDQUFDLEVBSTFDLE9BQU9SLENBQ1gsRUFFTUssR0FBbUJBLENBQ3JCSyxFQUNBQyxFQUNBQyxJQUNBLENBQ0lBLElBQWtCQyxTQUNsQkgsRUFBV0MsQ0FBVyxFQUFJQyxFQUVsQyxFQUVNTCxHQUEyQkEsQ0FDN0JHLEVBQ0FJLElBQ0EsQ0FDQSxHQUFJQSxFQUNBLFFBQVdOLEtBQU9NLEVBQ2RULEdBQWlCSyxFQUFZRixFQUFLTSxFQUFlTixDQUFHLENBQUMsQ0FHakUsRUFFTUMsR0FBd0JBLENBQzFCQyxFQUNBSyxJQUNBLENBQ0EsR0FBSUEsRUFDQSxRQUFXUCxLQUFPTyxFQUFhLENBQzNCLElBQU1DLEVBQWFELEVBQVlQLENBQUcsRUFFOUJRLElBQWVILFNBQ2ZILEVBQVdGLENBQUcsR0FBS0UsRUFBV0YsQ0FBRyxHQUFLLENBQUEsR0FBSVMsT0FBT0QsQ0FBVSxFQUVsRSxDQUVULEVDbEVhRSxHQUFzQkEsQ0FJL0JDLEtBTUdDLElBRUgsT0FBT0QsR0FBb0IsV0FDckJFLEdBQW9CckwsR0FBa0JtTCxFQUFpQixHQUFHQyxDQUFZLEVBQ3RFQyxHQUNJLElBQU10QixHQUFhL0osR0FBa0IsRUFBRW1MLENBQWUsRUFDdEQsR0FBR0MsQ0FBWSxFWm5CdEIsSUFBTUUsR0FBVUMsR0FBb0IsQ0FDekMsT0FBUSxLQUNWLENBQUMsRUFFTSxTQUFTQyxLQUFNQyxFQUFzQixDQUMxQyxPQUFPSCxHQUFRSSxHQUFLRCxDQUFNLENBQUMsQ0FDN0IsQ2NWQSxPQUFTLGlCQUFBRSxPQUFxQixnRkNRakIsSUFBQUMsR0FBZUMsR0FDMUJBLEVBQU8sUUFBUSxxQkFBc0IsT0FBTyxFQUFFLFlBQVksRUErQi9DQyxHQUFlLElBQTJDQyxJQUNyRUEsRUFDRyxPQUFPLENBQUNDLEVBQVdDLEVBQU9DLElBRXZCLEVBQVFGLEdBQ1BBLEVBQXFCLEtBQUEsSUFBVyxJQUNqQ0UsRUFBTSxRQUFRRixDQUFTLElBQU1DLENBRWhDLEVBQ0EsS0FBSyxHQUFHLEVBQ1IsS0FBSywwRENsRFYsSUFBZUUsR0FBQSxDQUNiLE1BQU8sNkJBQ1AsTUFBTyxHQUNQLE9BQVEsR0FDUixRQUFTLFlBQ1QsS0FBTSxPQUNOLE9BQVEsZUFDUixZQUFhLEVBQ2IsY0FBZSxRQUNmLGVBQWdCLE9BQ2xCLEVDY0EsSUFBTUMsR0FBT0MsR0FDWCxDQUNFLENBQ0UsTUFBQUMsRUFBUSxlQUNSLEtBQUFDLEVBQU8sR0FDUCxZQUFBQyxFQUFjLEVBQ2Qsb0JBQUFDLEVBQ0EsVUFBQUMsRUFBWSxHQUNaLFNBQUFDLEVBQ0EsU0FBQUMsRUFDQSxHQUFHQyxDQUFBLEVBRUxDLElBRU9DLEdBQ0wsTUFDQSxDQUNFLElBQUFELEVBQ0EsR0FBR0UsR0FDSCxNQUFPVCxFQUNQLE9BQVFBLEVBQ1IsT0FBUUQsRUFDUixZQUFhRyxFQUF1QixPQUFPRCxDQUFXLEVBQUksR0FBTSxPQUFPRCxDQUFJLEVBQUlDLEVBQy9FLFVBQVdTLEdBQWEsU0FBVVAsQ0FBUyxFQUMzQyxHQUFHRyxDQUNMLEVBQ0EsQ0FDRSxHQUFHRCxFQUFTLElBQUksQ0FBQyxDQUFDTSxFQUFLQyxDQUFLLElBQU1KLEdBQWNHLEVBQUtDLENBQUssQ0FBQyxFQUMzRCxHQUFJLE1BQU0sUUFBUVIsQ0FBUSxFQUFJQSxFQUFXLENBQUNBLENBQVEsQ0FDcEQsQ0FBQSxDQUdOLEVDN0NNLElBQUFTLEVBQW1CLENBQUNDLEVBQWtCQyxJQUF1QixDQUNqRSxJQUFNQyxFQUFZQyxHQUF1QyxDQUFDLENBQUUsVUFBQUMsRUFBVyxHQUFHQyxDQUFTLEVBQUFDLElBQ2pGQyxHQUFjQyxHQUFNLENBQ2xCLElBQUFGLEVBQ0EsU0FBQUwsRUFDQSxVQUFXUSxHQUFhLFVBQVVDLEdBQVlWLENBQVEsQ0FBQyxHQUFJSSxDQUFTLEVBQ3BFLEdBQUdDLENBQUEsQ0FDSixDQUFBLEVBR08sT0FBQUgsRUFBQSxZQUFjLEdBQUdGLENBQVEsR0FFNUJFLENBQ1QsRUNYTSxJQUFBUyxHQUFzQkMsRUFBaUIsc0JBQXVCLENBQ2xFLENBQUMsT0FBUSxDQUFFLEVBQUcsZ0JBQWlCLElBQUssUUFBQSxDQUFVLEVBQzlDLENBQUMsT0FBUSxDQUFFLEVBQUcsVUFBVyxJQUFLLFFBQUEsQ0FBVSxFQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFdBQVksSUFBSyxRQUFBLENBQVUsRUFDekMsQ0FBQyxPQUFRLENBQUUsRUFBRyxVQUFXLElBQUssUUFBQSxDQUFVLEVBQ3hDLENBQUMsT0FBUSxDQUFFLEVBQUcsV0FBWSxJQUFLLFFBQUEsQ0FBVSxDQUMzQyxDQUFDLEVDTkssSUFBQUMsR0FBb0JDLEVBQWlCLG9CQUFxQixDQUM5RCxDQUFDLE9BQVEsQ0FBRSxFQUFHLGVBQWdCLElBQUssUUFBQSxDQUFVLEVBQzdDLENBQUMsT0FBUSxDQUFFLEVBQUcsVUFBVyxJQUFLLFFBQUEsQ0FBVSxFQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFlBQWEsSUFBSyxRQUFBLENBQVUsRUFDMUMsQ0FBQyxPQUFRLENBQUUsRUFBRyxXQUFZLElBQUssUUFBQSxDQUFVLEVBQ3pDLENBQUMsT0FBUSxDQUFFLEVBQUcsV0FBWSxJQUFLLFFBQUEsQ0FBVSxDQUMzQyxDQUFDLEVDTkQsSUFBTUMsR0FBUUMsRUFBaUIsUUFBUyxDQUFDLENBQUMsT0FBUSxDQUFFLEVBQUcsa0JBQW1CLElBQUssUUFBUyxDQUFDLENBQUMsQ0FBQyxFQ0FyRixJQUFBQyxHQUFjQyxFQUFpQixjQUFlLENBQ2xELENBQUMsT0FBUSxDQUFFLEVBQUcsZUFBZ0IsSUFBSyxRQUFBLENBQVUsQ0FDL0MsQ0FBQyxFQ0ZLLElBQUFDLEdBQWNDLEVBQWlCLGNBQWUsQ0FDbEQsQ0FBQyxPQUFRLENBQUUsRUFBRyxpQkFBa0IsSUFBSyxRQUFBLENBQVUsQ0FDakQsQ0FBQyxFQ0ZLLElBQUFDLEdBQWVDLEVBQWlCLGVBQWdCLENBQ3BELENBQUMsT0FBUSxDQUFFLEVBQUcsZ0JBQWlCLElBQUssUUFBQSxDQUFVLENBQ2hELENBQUMsRUNGRCxJQUFNQyxHQUFZQyxFQUFpQixZQUFhLENBQUMsQ0FBQyxPQUFRLENBQUUsRUFBRyxpQkFBa0IsSUFBSyxRQUFTLENBQUMsQ0FBQyxDQUFDLEVDQTVGLElBQUFDLEdBQWVDLEVBQWlCLGVBQWdCLENBQ3BELENBQUMsT0FBUSxDQUFFLEVBQUcsaUJBQWtCLElBQUssUUFBQSxDQUFVLEVBQy9DLENBQUMsT0FBUSxDQUFFLEVBQUcsaUJBQWtCLElBQUssUUFBQSxDQUFVLENBQ2pELENBQUMsRUNISyxJQUFBQyxHQUFnQkMsRUFBaUIsZ0JBQWlCLENBQ3RELENBQUMsT0FBUSxDQUFFLEVBQUcsZ0JBQWlCLElBQUssT0FBQSxDQUFTLEVBQzdDLENBQUMsT0FBUSxDQUFFLEVBQUcsaUJBQWtCLElBQUssUUFBQSxDQUFVLENBQ2pELENBQUMsRUNISyxJQUFBQyxHQUFhQyxFQUFpQixhQUFjLENBQ2hELENBQUMsU0FBVSxDQUFFLEdBQUksS0FBTSxHQUFJLEtBQU0sRUFBRyxLQUFNLElBQUssUUFBQSxDQUFVLEVBQ3pELENBQUMsT0FBUSxDQUFFLEVBQUcsdUNBQXdDLElBQUssUUFBQSxDQUFVLEVBQ3JFLENBQUMsT0FBUSxDQUFFLEVBQUcsYUFBYyxJQUFLLFFBQUEsQ0FBVSxDQUM3QyxDQUFDLEVDSkssSUFBQUMsR0FBU0MsRUFBaUIsU0FBVSxDQUN4QyxDQUFDLFNBQVUsQ0FBRSxHQUFJLEtBQU0sR0FBSSxLQUFNLEVBQUcsS0FBTSxJQUFLLFFBQUEsQ0FBVSxDQUMzRCxDQUFDLEVDRkssSUFBQUMsR0FBT0MsRUFBaUIsT0FBUSxDQUNwQyxDQUFDLE9BQVEsQ0FBRSxNQUFPLEtBQU0sT0FBUSxLQUFNLEVBQUcsSUFBSyxFQUFHLElBQUssR0FBSSxJQUFLLEdBQUksSUFBSyxJQUFLLFFBQUEsQ0FBVSxFQUN2RixDQUFDLE9BQVEsQ0FBRSxFQUFHLDBEQUEyRCxJQUFLLFFBQUEsQ0FBVSxDQUMxRixDQUFDLEVDSEssSUFBQUMsR0FBaUJDLEVBQWlCLGlCQUFrQixDQUN4RCxDQUFDLFdBQVksQ0FBRSxPQUFRLGlCQUFrQixJQUFLLFFBQUEsQ0FBVSxFQUN4RCxDQUFDLE9BQVEsQ0FBRSxFQUFHLDBCQUEyQixJQUFLLFFBQUEsQ0FBVSxDQUMxRCxDQUFDLEVDSEssSUFBQUMsR0FBU0MsRUFBaUIsU0FBVSxDQUN4QyxDQUFDLFVBQVcsQ0FBRSxPQUFRLDhDQUErQyxJQUFLLFFBQUEsQ0FBVSxDQUN0RixDQUFDLEVDRkssSUFBQUMsR0FBZUMsRUFBaUIsZUFBZ0IsQ0FDcEQsQ0FBQyxTQUFVLENBQUUsR0FBSSxJQUFLLEdBQUksS0FBTSxFQUFHLElBQUssSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxTQUFVLENBQUUsR0FBSSxJQUFLLEdBQUksSUFBSyxFQUFHLElBQUssSUFBSyxRQUFBLENBQVUsRUFDdEQsQ0FBQyxTQUFVLENBQUUsR0FBSSxJQUFLLEdBQUksS0FBTSxFQUFHLElBQUssSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxTQUFVLENBQUUsR0FBSSxLQUFNLEdBQUksS0FBTSxFQUFHLElBQUssSUFBSyxRQUFBLENBQVUsRUFDeEQsQ0FBQyxTQUFVLENBQUUsR0FBSSxLQUFNLEdBQUksSUFBSyxFQUFHLElBQUssSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxTQUFVLENBQUUsR0FBSSxLQUFNLEdBQUksS0FBTSxFQUFHLElBQUssSUFBSyxRQUFBLENBQVUsQ0FDMUQsQ0FBQyxFQ1BLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FDRSxPQUNBLENBQ0UsRUFBRyw2S0FDSCxJQUFLLFFBQ1AsQ0FDRixFQUNBLENBQUMsU0FBVSxDQUFFLEdBQUksT0FBUSxHQUFJLE1BQU8sRUFBRyxLQUFNLEtBQU0sZUFBZ0IsSUFBSyxRQUFBLENBQVUsQ0FDcEYsQ0FBQyxFQ1RLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FBQyxPQUFRLENBQUUsRUFBRyx5QkFBMEIsSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxPQUFRLENBQUUsRUFBRywyQkFBNEIsSUFBSyxRQUFBLENBQVUsRUFDekQsQ0FBQyxPQUFRLENBQUUsRUFBRywwQkFBMkIsSUFBSyxRQUFBLENBQVUsRUFDeEQsQ0FBQyxPQUFRLENBQUUsRUFBRyw0QkFBNkIsSUFBSyxRQUFBLENBQVUsQ0FDNUQsQ0FBQyxFQ0xLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FBQyxPQUFRLENBQUUsRUFBRyx5QkFBMEIsSUFBSyxRQUFBLENBQVUsRUFDdkQsQ0FBQyxPQUFRLENBQUUsRUFBRywyQkFBNEIsSUFBSyxRQUFBLENBQVUsRUFDekQsQ0FBQyxPQUFRLENBQUUsRUFBRywwQkFBMkIsSUFBSyxRQUFBLENBQVUsRUFDeEQsQ0FBQyxPQUFRLENBQUUsRUFBRyw0QkFBNkIsSUFBSyxRQUFBLENBQVUsQ0FDNUQsQ0FBQyxFQ0xLLElBQUFDLEdBQVdDLEVBQWlCLFdBQVksQ0FDNUMsQ0FBQyxPQUFRLENBQUUsRUFBRyxvQkFBcUIsSUFBSyxRQUFBLENBQVUsRUFDbEQsQ0FBQyxPQUFRLENBQUUsRUFBRyxXQUFZLElBQUssUUFBQSxDQUFVLENBQzNDLENBQUMsRUNISyxJQUFBQyxHQUFTQyxFQUFpQixTQUFVLENBQ3hDLENBQUMsT0FBUSxDQUFFLEVBQUcsaUJBQWtCLElBQUssUUFBQSxDQUFVLEVBQy9DLENBQUMsT0FBUSxDQUFFLEVBQUcsV0FBWSxJQUFLLFFBQUEsQ0FBVSxDQUMzQyxDQUFDLEVDSEssSUFBQUMsR0FBaUJDLEVBQWlCLGlCQUFrQixDQUN4RCxDQUFDLE9BQVEsQ0FBRSxNQUFPLEtBQU0sT0FBUSxLQUFNLEVBQUcsSUFBSyxFQUFHLElBQUssR0FBSSxJQUFLLElBQUssUUFBQSxDQUFVLEVBQzlFLENBQUMsT0FBUSxDQUFFLEVBQUcsVUFBVyxJQUFLLFFBQUEsQ0FBVSxFQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLGlCQUFrQixJQUFLLFFBQUEsQ0FBVSxDQUNqRCxDQUFDLEVDSkssSUFBQUMsR0FBZ0JDLEVBQWlCLGdCQUFpQixDQUN0RCxDQUFDLE9BQVEsQ0FBRSxNQUFPLEtBQU0sT0FBUSxLQUFNLEVBQUcsSUFBSyxFQUFHLElBQUssR0FBSSxJQUFLLElBQUssUUFBQSxDQUFVLEVBQzlFLENBQUMsT0FBUSxDQUFFLEVBQUcsVUFBVyxJQUFLLFFBQUEsQ0FBVSxFQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLGdCQUFpQixJQUFLLFFBQUEsQ0FBVSxDQUNoRCxDQUFDLEVDSkssSUFBQUMsR0FBU0MsRUFBaUIsU0FBVSxDQUN4QyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFdBQVksSUFBSyxRQUFBLENBQVUsRUFDekMsQ0FBQyxPQUFRLENBQUUsRUFBRyw4Q0FBK0MsSUFBSyxRQUFBLENBQVUsRUFDNUUsQ0FBQyxPQUFRLENBQUUsRUFBRyxhQUFjLElBQUssUUFBQSxDQUFVLEVBQzNDLENBQ0UsT0FDQSxDQUNFLEVBQUcsOEVBQ0gsSUFBSyxRQUNQLENBQ0YsQ0FDRixDQUFDLEVDWEssSUFBQUMsR0FBTUMsRUFBaUIsTUFBTyxDQUNsQyxDQUFDLE9BQVEsQ0FBRSxFQUFHLFdBQVksSUFBSyxRQUFBLENBQVUsRUFDekMsQ0FDRSxPQUNBLENBQ0UsRUFBRyw2TUFDSCxJQUFLLFFBQ1AsQ0FDRixDQUNGLENBQUMsRUNUSyxJQUFBQyxHQUFTQyxFQUFpQixTQUFVLENBQ3hDLENBQ0UsT0FDQSxDQUNFLEVBQUcsNEdBQ0gsSUFBSyxRQUNQLENBQ0YsQ0FDRixDQUFDLEVDUkssSUFBQUMsR0FBSUMsRUFBaUIsSUFBSyxDQUM5QixDQUFDLE9BQVEsQ0FBRSxFQUFHLGFBQWMsSUFBSyxRQUFBLENBQVUsRUFDM0MsQ0FBQyxPQUFRLENBQUUsRUFBRyxhQUFjLElBQUssUUFBQSxDQUFVLENBQzdDLENBQUMsRTlCYkQsT0FBUyxhQUFBQyxHQUFXLFlBQUFDLE9BQWdCLFFBQ3BDLE9BQVMsU0FBQUMsT0FBYSxTK0JKdEIsT0FBUyxRQUFBQyxPQUFZLHVCQUNyQixPQUFTLE9BQUFDLE9BQThCLDJCQUN2QyxVQUFZQyxPQUFXLFFBeUNaLGNBQUFDLE9BQUEsb0JBckNYLElBQU1DLEdBQWlCQyxHQUNyQiwyVkFDQSxDQUNFLFNBQVUsQ0FDUixRQUFTLENBQ1AsUUFBUyw0RUFDVCxZQUFhLDJGQUNiLFFBQ0UsNkdBQ0YsVUFBVyxxRkFDWCxNQUFPLHFEQUNQLEtBQU0sMERBQ1IsRUFDQSxLQUFNLENBQ0osUUFBUyx5QkFDVCxHQUFJLDBDQUNKLEdBQUksMENBQ0osR0FBSSxnQ0FDSixLQUFNLGVBQ1IsQ0FDRixFQUNBLGdCQUFpQixDQUNmLFFBQVMsVUFDVCxLQUFNLFNBQ1IsQ0FDRixDQUNGLEVBUU1DLEVBQWUsY0FDbkIsQ0FBQyxDQUFFLFVBQUFDLEVBQVcsUUFBQUMsRUFBUyxLQUFBQyxFQUFNLFFBQUFDLEVBQVUsR0FBTyxHQUFHQyxDQUFNLEVBQUdDLElBRWpEVCxHQURNTyxFQUFVRyxHQUFPLFNBQ3RCLENBQUssVUFBV0MsRUFBR1YsR0FBZSxDQUFFLFFBQUFJLEVBQVMsS0FBQUMsRUFBTSxVQUFBRixDQUFVLENBQUMsQ0FBQyxFQUFHLElBQUtLLEVBQU0sR0FBR0QsRUFBTyxDQUVuRyxFQUNBTCxFQUFPLFlBQWMsU0M5Q3JCLFVBQVlTLE9BQXVCLDJCQUVuQyxVQUFZQyxPQUFXLFFBaUJqQixjQUFBQyxPQUFBLG9CQWJOLElBQU1DLEdBQWlCLGNBR3JCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFDMUJKLEdBQW1CLFFBQWxCLENBQ0MsSUFBS0ksRUFDTCxVQUFXQyxFQUNULGtUQUNBSCxDQUNGLEVBQ0MsR0FBR0MsRUFFSixTQUFBSCxHQUFtQixhQUFsQixDQUE0QixVQUFXSyxFQUFHLDJEQUEyRCxFQUNwRyxTQUFBTCxHQUFDTSxHQUFBLENBQU0sVUFBVSxnQkFBZ0IsRUFDbkMsRUFDRixDQUNELEVBQ0RMLEdBQVMsWUFBZ0MsUUFBSyxZQ3ZCOUMsVUFBWU0sT0FBc0IsMEJBQ2xDLFVBQVlDLE9BQVcsUUFlbkIsY0FBQUMsT0FBQSxvQkFYSixJQUFNQyxHQUEyQixRQUUzQkMsR0FBa0MsV0FJeEMsSUFBTUMsR0FBdUIsY0FHM0IsQ0FBQyxDQUFFLFVBQUFDLEVBQVcsTUFBQUMsRUFBUSxTQUFVLFdBQUFDLEVBQWEsRUFBRyxHQUFHQyxDQUFNLEVBQUdDLElBQzVEQyxHQUFrQixVQUFqQixDQUNDLFNBQUFBLEdBQWtCLFdBQWpCLENBQ0MsSUFBS0QsRUFDTCxNQUFPSCxFQUNQLFdBQVlDLEVBQ1osVUFBV0ksRUFDVCwyaEJBQ0FOLENBQ0YsRUFDQyxHQUFHRyxFQUNOLEVBQ0YsQ0FDRCxFQUNESixHQUFlLFlBQStCLFdBQVEsWUM1QnRELE9BQW1CLGVBQUFRLEdBQWEsa0JBQUFDLE9BQXNCLHdCQ0F0RCxPQUFTLGVBQUFDLEdBQWEsdUJBQUFDLE9BQTJCLHdCQ0NqRCxVQUFZQyxPQUFXLFFBQ3ZCLE9BQVMsaUJBQUFDLEdBQWUsa0JBQUFDLE9BQXNCLHdCQ0M5QyxJQUFJQyxHQUF3QixLQUFNLENBQ2hDQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUFhLEdBQ2JDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0EsWUFBWUMsRUFBUSxDQUNsQixHQUFNLENBQ0osT0FBQUMsRUFDQSxZQUFBQyxFQUNBLFFBQUFDLEVBQ0EsY0FBQUMsRUFDQSxlQUFBQyxFQUNBLFNBQUFDLEVBQ0EsY0FBQUMsRUFDQSxXQUFBQyxFQUNBLFdBQUFDLEVBQ0EsZ0JBQUFDLENBQ0YsRUFBSVYsRUFDSixLQUFLYixHQUFVd0IsR0FBYVYsQ0FBTSxFQUNsQyxLQUFLWixHQUFlYSxFQUNwQixLQUFLWixHQUFXYSxFQUNoQixLQUFLZixHQUFpQmdCLEVBQ3RCLEtBQUtaLEdBQWNpQixFQUNuQixLQUFLaEIsR0FBbUJpQixFQUN4QixLQUFLaEIsR0FBa0JpQixHQUFhTixDQUFjLEVBQ2xELEtBQUtWLEdBQVlnQixHQUFhTCxDQUFRLEVBQ3RDLEtBQUtWLEdBQWlCZSxHQUFhSixDQUFhLEVBQ2hELEtBQUtWLEdBQWNjLEdBQWFILENBQVUsQ0FDNUMsQ0FDQSxrQkFBa0JGLEVBQVUsQ0FDMUIsS0FBS1osR0FBZ0IsQ0FBQyxFQUFFWSxDQUFRLENBQ2xDLENBQ0EsWUFBWUEsRUFBVSxDQUNwQixLQUFLWCxHQUFVLENBQUMsRUFBRVcsQ0FBUSxDQUM1QixDQUNBLGlCQUFpQk0sRUFBUSxDQUN2QixLQUFLaEIsR0FBZSxDQUFDLEVBQUVnQixDQUFNLENBQy9CLENBQ0EsY0FBY0osRUFBWSxDQUN4QixLQUFLWCxHQUFZLENBQUMsRUFBRVcsQ0FBVSxDQUNoQyxDQUNBLFVBQVVQLEVBQVEsQ0FDaEIsS0FBS2QsR0FBUSxDQUFDLEVBQUVjLENBQU0sQ0FDeEIsQ0FDQSxNQUFNWSxFQUFJLENBQ1IsR0FBSSxLQUFLdEIsR0FDUCxNQUFNLElBQUksTUFBTSw2QkFBNkIsRUFFL0MsSUFBTXVCLEVBQVVDLEdBQU8sSUFBTSxDQUMzQixJQUFNQyxFQUFTLEtBQ1QsQ0FBQ0MsQ0FBVyxFQUFJLEtBQUt2QixHQUNyQixDQUFDd0IsQ0FBRyxFQUFJLEtBQUt2QixHQUNiLENBQUNpQixDQUFNLEVBQUksS0FBS2hCLEdBQ2hCLENBQUN1QixDQUFNLEVBQUksS0FBS3RCLEdBQ2hCLENBQUN1QixDQUFXLEVBQUksS0FBS2pDLEdBQ3ZCa0MsRUFDSixPQUFJLEtBQUt2QixHQUNQdUIsRUFBVyxLQUFLdkIsSUFFaEJ1QixFQUFXQyxHQUFLLElBQU0sT0FBTyx5QkFBaUMsQ0FBQyxFQUMvRCxLQUFLeEIsR0FBYXVCLEdBRXBCRSxHQUFnQixLQUFLL0IsR0FBYSxLQUFLQyxFQUFnQixFQUNoRCtCLEdBQWdCSCxFQUFVSSxHQUFXLENBQzFDLElBQUksYUFBYyxDQUNoQixPQUFPVCxFQUFPM0IsRUFDaEIsRUFDQSxJQUFJLFNBQVUsQ0FDWixPQUFPMkIsRUFBTzFCLEVBQ2hCLEVBQ0EsSUFBSSxlQUFnQixDQUNsQixPQUFPMEIsRUFBTzVCLEVBQ2hCLEVBQ0EsSUFBSSxpQkFBa0IsQ0FDcEIsT0FBTzRCLEVBQU92QixFQUNoQixDQUNGLEVBQUcsQ0FDRCxJQUFJLFFBQVMsQ0FDWCxPQUFPMkIsRUFBWSxDQUNyQixFQUNBLElBQUksZ0JBQWlCLENBQ25CLE9BQU9ILEVBQVksQ0FDckIsRUFDQSxJQUFJLFVBQVcsQ0FDYixPQUFPQyxFQUFJLENBQ2IsRUFDQSxJQUFJLGVBQWdCLENBQ2xCLE9BQU9OLEVBQU8sQ0FDaEIsRUFDQSxJQUFJLFlBQWEsQ0FDZixPQUFPTyxFQUFPLENBQ2hCLENBQ0YsQ0FBQyxDQUFDLENBQ0osRUFBR04sQ0FBRSxFQUNMLEtBQUt0QixHQUFhLEdBQ2xCLEtBQUtRLEdBQVdlLENBQ2xCLENBQ0EsU0FBVSxDQUNSLEdBQUksQ0FBQyxLQUFLdkIsR0FDUixNQUFNLElBQUksTUFBTSx5QkFBeUIsRUFFM0MsS0FBS1EsS0FBVyxFQUNoQixLQUFLUixHQUFhLEVBQ3BCLENBQ0YsRUFHSW1DLEdBQTZCLEtBQU0sQ0FDckN2QyxHQUNBQyxHQUNBQyxHQUNBQyxHQUNBQyxHQUFhLEdBQ2JDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0E4QixHQUNBN0IsR0FDQUMsR0FDQSxZQUFZQyxFQUFRLENBQ2xCLEdBQU0sQ0FDSixPQUFBQyxFQUNBLFlBQUFDLEVBQ0EsUUFBQUMsRUFDQSxjQUFBQyxFQUNBLGVBQUFDLEVBQ0EsU0FBQUMsRUFDQSxjQUFBQyxFQUNBLFdBQUFDLEVBQ0EsV0FBQUMsRUFDQSxnQkFBQUMsRUFDQSxRQUFBa0IsQ0FDRixFQUFJNUIsRUFDSixLQUFLYixHQUFVd0IsR0FBYVYsQ0FBTSxFQUNsQyxLQUFLWixHQUFlYSxFQUNwQixLQUFLWixHQUFXYSxFQUNoQixLQUFLZixHQUFpQmdCLEVBQ3RCLEtBQUtaLEdBQWNpQixFQUNuQixLQUFLaEIsR0FBbUJpQixFQUN4QixLQUFLaEIsR0FBa0JpQixHQUFhTixDQUFjLEVBQ2xELEtBQUtWLEdBQVlnQixHQUFhTCxDQUFRLEVBQ3RDLEtBQUtWLEdBQWlCZSxHQUFhSixDQUFhLEVBQ2hELEtBQUtWLEdBQWNjLEdBQWFILENBQVUsRUFDMUMsS0FBS21CLEdBQVdoQixHQUFhaUIsQ0FBTyxDQUN0QyxDQUNBLGtCQUFrQnRCLEVBQVUsQ0FDMUIsS0FBS1osR0FBZ0IsQ0FBQyxFQUFFWSxDQUFRLENBQ2xDLENBQ0EsWUFBWUEsRUFBVSxDQUNwQixLQUFLWCxHQUFVLENBQUMsRUFBRVcsQ0FBUSxDQUM1QixDQUNBLGlCQUFpQk0sRUFBUSxDQUN2QixLQUFLaEIsR0FBZSxDQUFDLEVBQUVnQixDQUFNLENBQy9CLENBQ0EsY0FBY0osRUFBWSxDQUN4QixLQUFLWCxHQUFZLENBQUMsRUFBRVcsQ0FBVSxDQUNoQyxDQUNBLFVBQVVQLEVBQVEsQ0FDaEIsS0FBS2QsR0FBUSxDQUFDLEVBQUVjLENBQU0sQ0FDeEIsQ0FDQSxXQUFXMkIsRUFBUyxDQUNsQixLQUFLRCxHQUFTLENBQUMsRUFBRSxJQUFNQyxDQUFPLENBQ2hDLENBQ0EsTUFBTWYsRUFBSSxDQUNSLEdBQUksS0FBS3RCLEdBQ1AsTUFBTSxJQUFJLE1BQU0sNkJBQTZCLEVBRS9DLElBQU11QixFQUFVQyxHQUFPLElBQU0sQ0FDM0IsSUFBTUMsRUFBUyxLQUNULENBQUNDLENBQVcsRUFBSSxLQUFLdkIsR0FDckIsQ0FBQ3dCLENBQUcsRUFBSSxLQUFLdkIsR0FDYixDQUFDaUIsQ0FBTSxFQUFJLEtBQUtoQixHQUNoQixDQUFDdUIsQ0FBTSxFQUFJLEtBQUt0QixHQUNoQixDQUFDdUIsQ0FBVyxFQUFJLEtBQUtqQyxHQUNyQixDQUFDeUMsQ0FBTyxFQUFJLEtBQUtELEdBQ25CTixFQUNKLE9BQUksS0FBS3ZCLEdBQ1B1QixFQUFXLEtBQUt2QixJQUVoQnVCLEVBQVdDLEdBQUssSUFBTSxPQUFPLHlCQUFzQyxDQUFDLEVBQ3BFLEtBQUt4QixHQUFhdUIsR0FFcEJFLEdBQWdCLEtBQUsvQixHQUFhLEtBQUtDLEVBQWdCLEVBQ2hEK0IsR0FBZ0JILEVBQVVJLEdBQVcsQ0FDMUMsSUFBSSxhQUFjLENBQ2hCLE9BQU9ULEVBQU8zQixFQUNoQixFQUNBLElBQUksU0FBVSxDQUNaLE9BQU8yQixFQUFPMUIsRUFDaEIsRUFDQSxJQUFJLGVBQWdCLENBQ2xCLE9BQU8wQixFQUFPNUIsRUFDaEIsRUFDQSxJQUFJLGlCQUFrQixDQUNwQixPQUFPNEIsRUFBT3ZCLEVBQ2hCLENBQ0YsRUFBRyxDQUNELElBQUksUUFBUyxDQUNYLE9BQU8yQixFQUFZLENBQ3JCLEVBQ0EsSUFBSSxnQkFBaUIsQ0FDbkIsT0FBT0gsRUFBWSxDQUNyQixFQUNBLElBQUksVUFBVyxDQUNiLE9BQU9DLEVBQUksQ0FDYixFQUNBLElBQUksZUFBZ0IsQ0FDbEIsT0FBT04sRUFBTyxDQUNoQixFQUNBLElBQUksWUFBYSxDQUNmLE9BQU9PLEVBQU8sQ0FDaEIsRUFDQSxJQUFJLFNBQVUsQ0FDWixPQUFPUyxFQUFRLENBQ2pCLENBQ0YsQ0FBQyxDQUFDLENBQ0osRUFBR2YsQ0FBRSxFQUNMLEtBQUt0QixHQUFhLEdBQ2xCLEtBQUtRLEdBQVdlLENBQ2xCLENBQ0EsU0FBVSxDQUNSLEdBQUksQ0FBQyxLQUFLdkIsR0FDUixNQUFNLElBQUksTUFBTSx5QkFBeUIsRUFFM0MsS0FBS1EsS0FBVyxFQUNoQixLQUFLUixHQUFhLEVBQ3BCLENBQ0YsRUR0SVMsT0FBQSxPQUFBc0MsT0FBQSxvQkE5REYsU0FBU0MsR0FDZEMsRUFDMkIsQ0FDM0IsSUFBTUMsRUFBY0MsR0FBZUYsRUFBTSxNQUFNLEVBQ3pDRyxFQUFZLFVBQXVCLElBQUksRUFDdkMsQ0FDSixlQUFBQyxFQUNBLFNBQUFDLEVBQ0EsY0FBQUMsRUFDQSxXQUFBQyxFQUNBLFdBQUFDLEVBQ0EsZ0JBQUFDLENBQ0YsRUFBSVQsRUFDRSxDQUFDVSxDQUFRLEVBQVUsWUFDdkIsSUFBSUMsR0FBc0IsQ0FDeEIsT0FBUVYsRUFDUixZQUFhLGNBQ2IsUUFBUyxJQUNULGNBQUFXLEdBQ0EsZUFBQVIsRUFDQSxTQUFBQyxFQUNBLGNBQUFDLEVBQ0EsV0FBQUMsRUFDQSxXQUFBQyxFQUNBLGdCQUFBQyxDQUNGLENBQUMsQ0FDSCxFQUVNLE9BQUEsYUFBVSxJQUFNLENBQ3BCQyxFQUFTLFVBQVVULENBQVcsQ0FDaEMsRUFBRyxDQUFDQSxFQUFhUyxDQUFRLENBQUMsRUFFcEIsYUFBVSxJQUFNLENBQ2hCTixHQUNGTSxFQUFTLGtCQUFrQk4sQ0FBYyxDQUU3QyxFQUFHLENBQUNBLEVBQWdCTSxDQUFRLENBQUMsRUFFdkIsYUFBVSxJQUFNLENBQ2hCTCxHQUNGSyxFQUFTLFlBQVlMLENBQVEsQ0FFakMsRUFBRyxDQUFDQSxFQUFVSyxDQUFRLENBQUMsRUFFakIsYUFBVSxJQUFNLENBQ3BCQSxFQUFTLGlCQUFpQkosR0FBaUIsRUFBSyxDQUNsRCxFQUFHLENBQUNBLEVBQWVJLENBQVEsQ0FBQyxFQUV0QixhQUFVLElBQU0sQ0FDcEJBLEVBQVMsY0FBY0gsR0FBYyxDQUFDLENBQUMsQ0FDekMsRUFBRyxDQUFDQSxFQUFZRyxDQUFRLENBQUMsRUFFbkIsYUFBVSxLQUNWUCxFQUFJLFNBQ05PLEVBQVMsTUFBTVAsRUFBSSxPQUFPLEVBR3JCLElBQU0sQ0FDWE8sRUFBUyxRQUFRLENBQ25CLEdBQ0MsQ0FBQ0EsQ0FBUSxDQUFDLEVBRU5aLEdBQUMsTUFBQSxDQUFJLElBQUksTUFBTSxVQUFVLHdCQUF3QixJQUFBSyxDQUFBLENBQVUsQ0FDcEUsQ0U1R0EsVUFBWVUsT0FBVyxRQUN2QixPQUFTLGlCQUFBQyxHQUFlLGtCQUFBQyxPQUFzQix3QkFrRjFDLE9BQUEsT0FBQUMsT0FBQSxvQkE3Q0csU0FBU0MsR0FDZEMsRUFDMkIsQ0FDM0IsSUFBTUMsRUFBY0MsR0FBZUYsRUFBTSxNQUFNLEVBQ3pDRyxFQUFZLFVBQXVCLElBQUksRUFDdkMsQ0FBRSxXQUFBQyxFQUFZLFdBQUFDLEVBQVksZ0JBQUFDLENBQWdCLEVBQUlOLEVBQzlDLENBQUNPLENBQVEsRUFBVSxZQUN2QixJQUFJQyxHQUEyQixDQUM3QixPQUFRUCxFQUNSLFlBQWEsY0FDYixRQUFTLElBQ1QsY0FBQVEsR0FDQSxlQUFnQixjQUNoQixTQUFVLFNBQ1YsY0FBZSxHQUNmLFdBQUFMLEVBQ0EsV0FBQUMsRUFDQSxnQkFBQUMsRUFDQSxRQUFTTixFQUFNLE9BQ2pCLENBQUMsQ0FDSCxFQUVNLE9BQUEsYUFBVSxJQUFNLENBQ3BCTyxFQUFTLFVBQVVOLENBQVcsQ0FDaEMsRUFBRyxDQUFDQSxFQUFhTSxDQUFRLENBQUMsRUFFcEIsYUFBVSxJQUFNLENBQ3BCQSxFQUFTLFdBQVdQLEVBQU0sVUFBWSxJQUFNLENBQUMsRUFBRSxDQUNqRCxFQUFHLENBQUNBLEVBQU0sUUFBU08sQ0FBUSxDQUFDLEVBRXRCLGFBQVUsSUFBTSxDQUNwQkEsRUFBUyxjQUFjSCxHQUFjLENBQUMsQ0FBQyxDQUN6QyxFQUFHLENBQUNBLEVBQVlHLENBQVEsQ0FBQyxFQUVuQixhQUFVLEtBQ1ZKLEVBQUksU0FDTkksRUFBUyxNQUFNSixFQUFJLE9BQU8sRUFHckIsSUFBTSxDQUNYSSxFQUFTLFFBQVEsQ0FDbkIsR0FDQyxDQUFDQSxDQUFRLENBQUMsRUFHWFQsR0FBQyxNQUFBLENBQ0MsTUFBTyxDQUFFLE9BQVEsUUFBUyxHQUFHRSxFQUFNLEtBQU0sRUFDekMsVUFBVSx3QkFDVixJQUFBRyxDQUFBLENBQ0QsQ0FFTCxDQ3JGTyxJQUFNTyxHQUNYLFFBQVEsSUFBSSxXQUFhLGNBQ3JCLFVBQVksQ0FDVixPQUFPLElBQ1QsRUFDU0EsR0FFRkMsR0FDWCxRQUFRLElBQUksV0FBYSxjQUNyQixVQUFZLENBQ1YsT0FBTyxJQUNULEVBQ2NBLEdKZnBCLE9BQVMsaUJBQUFDLEdBQXVDLGNBQUFDLEdBQVksV0FBQUMsR0FBUyxZQUFBQyxPQUFnQixRQUNyRixPQUFTLFNBQUFDLE9BQWEsU0tIdEIsT0FBUyxXQUFXQyxPQUFjLFNBVTlCLGNBQUFDLE9BQUEsb0JBSkosSUFBTUMsR0FBVSxDQUFDLENBQUUsR0FBR0MsQ0FBTSxJQUl4QkYsR0FBQ0QsR0FBQSxDQUVDLFVBQVUsc0JBQ1YsYUFBYyxDQUNaLFdBQVksQ0FDVixNQUNFLHdJQUNGLFlBQWEsdUNBQ2IsYUFBYyxtRUFDZCxhQUFjLDhEQUNoQixDQUNGLEVBQ0MsR0FBR0csRUFDTixFQ3ZCSixPQUVFLGtDQUFrQ0MsT0FDN0IsdUJBQ1AsT0FBcUMsYUFBQUMsR0FBVyxZQUFBQyxPQUFnQixRQU1oRSxTQUFTQyxJQUFpQixDQUV4QixJQUFNQyxFQUFVLE9BQU8sU0FBUyxLQUFLLE1BQU0sQ0FBQyxFQUN0QyxDQUFDQyxFQUFZQyxDQUFhLEVBQUlKLEdBQVMsSUFBSSxnQkFBZ0JFLENBQU8sQ0FBQyxFQUd6RSxTQUFTRyxFQUFVQyxFQUEwQixDQUFFLFFBQUFDLENBQVEsRUFBbUIsQ0FDeEUsR0FBTSxDQUFFLFNBQUFDLEVBQVUsT0FBQUMsQ0FBTyxFQUFJLE9BQU8sU0FDOUJDLEVBQU9KLEVBQVEsU0FBUyxFQUN4QkssRUFBTSxHQUFHSCxDQUFRLEdBQUdDLENBQU0sSUFBSUMsQ0FBSSxHQUVwQ0gsSUFBWSxPQUNkLE9BQU8sUUFBUSxVQUFVLEtBQU0sR0FBSUksQ0FBRyxFQUV0QyxPQUFPLFFBQVEsYUFBYSxLQUFNLEdBQUlBLENBQUcsRUFHM0NQLEVBQWNFLENBQU8sQ0FDdkIsQ0FHQSxTQUFTTSxHQUEwQixDQUNqQyxJQUFNQyxFQUFNLE9BQU8sU0FBUyxLQUFLLE1BQU0sQ0FBQyxFQUV4QyxPQUFPLElBQUksZ0JBQWdCQSxDQUFHLENBQ2hDLENBR0EsT0FBQWQsR0FBVSxJQUFNLENBQ2QsU0FBU2UsR0FBbUIsQ0FDMUIsSUFBTVosRUFBVSxPQUFPLFNBQVMsS0FBSyxNQUFNLENBQUMsRUFDNUNFLEVBQWMsSUFBSSxnQkFBZ0JGLENBQU8sQ0FBQyxDQUM1QyxDQUVBLGNBQU8saUJBQWlCLGFBQWNZLENBQWdCLEVBRS9DLElBQU0sT0FBTyxvQkFBb0IsYUFBY0EsQ0FBZ0IsQ0FDeEUsRUFBRyxDQUFDLENBQUMsRUFFRSxDQUFFLGFBQWNYLEVBQVksVUFBQUUsRUFBVyx3QkFBQU8sQ0FBd0IsQ0FDeEUsQ0FLTyxJQUFNRyxHQUFrQmpCLEdBQXNCRyxFQUFjLEVOQy9ELE9BQ0UsT0FBQWUsR0FERixRQUFBQyxPQUFBLG9CQTdCSixJQUFNQyxHQUFjLElBQUlDLEdBS2xCQyxHQUFnQkMsR0FBOEMsTUFBUyxFQVF0RSxTQUFTQyxHQUFzQkMsRUFBbUMsQ0FDdkUsR0FBTSxDQUFFLFNBQUFDLEVBQVUsR0FBR0MsQ0FBVyxFQUFJRixFQUM5QixDQUFDRyxFQUFhQyxDQUFjLEVBQUlDLEdBQXVCLElBQUksRUFDM0QsQ0FBQ0MsRUFBY0MsQ0FBZSxFQUFJRixHQUFTLEVBQUssRUFDaEQsQ0FBQ0csRUFBa0JDLENBQW1CLEVBQUlKLEdBQVMsRUFBSSxFQUV6REssRUFBVVYsRUFBTSxRQUNwQlUsSUFBYUMsR0FBaUJDLEdBQU0sTUFBTUQsRUFBTSxPQUFPLEVBRXZELElBQU1FLEVBQXFCQyxHQUFRLElBQzFCZCxFQUFNLG1CQUFxQixJQUFNLENBQUMsR0FDeEMsQ0FBQ0EsRUFBTSxnQkFBZ0IsQ0FBQyxFQUVyQmUsRUFBbUIsSUFBTVIsRUFBaUJTLEdBQVMsQ0FBQ0EsQ0FBSSxFQUN4REMsRUFBbUIsSUFBTVIsRUFBcUJPLEdBQVMsQ0FBQ0EsQ0FBSSxFQUNsRSxPQUNFdEIsR0FBQ3dCLEdBQUEsQ0FBb0IsT0FBUXZCLEdBQzNCLFVBQUFGLEdBQUMwQixHQUFBLEVBQW1CLEVBQ3BCMUIsR0FBQzJCLEdBQUEsRUFBUSxFQUNUM0IsR0FBQzRCLEdBQUEsQ0FDQyxTQUFBNUIsR0FBQ0ksR0FBYyxTQUFkLENBQ0MsTUFBTyxDQUNMLEdBQUdLLEVBQ0gsWUFBQUMsRUFDQSxhQUFBRyxFQUNBLGVBQUFGLEVBQ0EsUUFBQU0sRUFDQSxtQkFBQUcsRUFDQSxpQkFBQUUsRUFDQSxpQkFBQVAsRUFDQSxpQkFBQVMsQ0FDRixFQUVDLFNBQUFoQixFQUNILEVBQ0YsR0FDRixDQUVKLENBTU8sU0FBU3FCLEdBQWdDLENBQzlDLElBQU1DLEVBQVVDLEdBQVczQixFQUFhLEVBRXhDLEdBQUksQ0FBQzBCLEVBQ0gsTUFBTSxJQUFJLE1BQU0sNERBQTRELEVBRzlFLE9BQU9BLENBQ1QsQ08xRkEsU0FBU0UsR0FBU0MsRUFBOEJDLEVBQWMsQ0FDNUQsSUFBTUMsRUFBSyxDQUNULE9BQVFDLEdBQWVILEVBQUtDLEVBQU0sT0FBTyxFQUN6QyxNQUFPLEdBQUdBLEVBQU0sTUFBTSxJQUFJQSxFQUFNLElBQUksRUFDdEMsRUFFQSxPQUFPLEtBQUssVUFBVUMsQ0FBRSxDQUMxQixDQUVBLFNBQVNFLEdBQWNKLEVBQThCQyxFQUFjLENBQ2pFLE1BQU8sQ0FBRSxHQUFHRCxFQUFLLFdBQVlELEdBQVNDLEVBQUtDLENBQUssQ0FBRSxDQUNwRCxDQU9PLFNBQVNJLEdBQTBDQyxFQUFXTCxFQUFjLENBQ2pGLEdBQU0sQ0FBRSxJQUFBRCxFQUFLLEtBQUFPLENBQUssRUFBSUQsRUFFdEIsT0FBSU4sSUFBUSxPQUNILENBQUUsR0FBR00sRUFBUSxJQUFLRixHQUFjSixFQUFLQyxDQUFLLENBQUUsRUFFakRNLElBQVMsT0FDSixDQUFFLEdBQUdELEVBQVEsS0FBTUMsRUFBSyxJQUFLUCxHQUFRSSxHQUFjSixFQUFLQyxDQUFLLENBQUMsQ0FBRSxFQUdsRUssQ0FDVCxDUnpCTyxTQUFTRSxJQUF1QixDQUNyQyxHQUFNLENBQUUsWUFBQUMsRUFBYSxRQUFBQyxDQUFRLEVBQUlDLEVBQVUsRUFDckNDLEVBQWNDLEdBQWUsRUFDN0IsQ0FBRSxPQUFBQyxFQUFTLEtBQU0sS0FBTUMsRUFBUSxJQUFLLEVBQUlOLEdBQWUsQ0FBQyxFQUU5RCxPQUFPTyxHQUFZLENBQ2pCLFlBQWEsQ0FBQyxTQUFVRixFQUFRLFFBQVNDLEVBQU8sUUFBUSxFQUN4RCxNQUFNLFdBQVdFLEVBQWlDLENBQ2hELEdBQU0sQ0FBQ0MsRUFBT0MsQ0FBTSxFQUFJLE1BQU1ULEVBQVEsT0FBTyxDQUFFLEtBQUFPLEVBQU0sTUFBT1IsQ0FBYSxFQUFHLENBQUMsQ0FBQyxFQUU5RSxHQUFJUyxFQUNGLE1BQU1BLEVBR1IsT0FBT0UsR0FBaUJELEVBQVFWLENBQVksQ0FDOUMsRUFDQSxVQUFVWSxFQUFTLENBQ2pCVCxFQUFZLGVBQ1YsQ0FDRSxNQUFPLEdBRVAsU0FBVSxDQUFDLFNBQVVFLEVBQVEsUUFBU0MsRUFBTyxPQUFPLENBQ3RELEVBQ0NPLEdBQ0tBLEdBQVcsS0FDTkEsRUFHRixDQUNMLEdBQUdBLEVBQ0gsS0FBTSxDQUFDLEdBQUdELEVBQVEsS0FBTSxHQUFHQyxFQUFRLElBQUksQ0FDekMsQ0FFSixDQUNGLEVBQ0EsTUFBTyxFQUNULENBQUMsQ0FDSCxDUzNDQSxPQUFTLFlBQUFDLE9BQWdCLHdCQWFsQixTQUFTQyxHQUFvQkMsRUFBaUMsQ0FDbkUsR0FBTSxDQUFFLFVBQUFDLEVBQVcsU0FBQUMsRUFBVSxVQUFBQyxFQUFXLE9BQUFDLENBQU8sRUFBSUosRUFFN0MsQ0FBRSxZQUFBSyxFQUFhLFFBQUFDLENBQVEsRUFBSUMsRUFBVSxFQUUzQyxPQUFPQyxHQUFTLENBQ2QsUUFBUyxFQUFRSCxFQUNqQixPQUFRLEVBQ1IsZ0JBQWdCSSxFQUE4Q0MsRUFBZSxDQUMzRSxHQUFNLENBQUMsQ0FBRUMsRUFBUSxDQUFFQyxDQUFLLEVBQUlGLEdBQWUsVUFBWSxDQUFDLEVBRXhELEdBQUksRUFBQUMsSUFBV04sR0FBYSxRQUFVTyxJQUFVUCxHQUFhLE1BSTdELE9BQU9JLENBQ1QsRUFDQSxNQUFNLFFBQVEsQ0FBRSxPQUFBSSxDQUFPLEVBQUcsQ0FDeEIsR0FBTSxDQUFDQyxFQUFPQyxDQUFPLEVBQUksTUFBTVQsRUFBUSxNQUNyQyxDQUFFLFVBQUFMLEVBQVcsU0FBQUMsRUFBVSxVQUFBQyxFQUFXLE1BQU9FLEVBQWMsT0FBQUQsQ0FBTyxFQUM5RCxDQUFFLFlBQWFTLENBQU8sQ0FDeEIsRUFFQSxHQUFJQyxFQUNGLE1BQU1BLEVBR1IsT0FBT0UsR0FBaUJELEVBQVNWLENBQVksQ0FDL0MsRUFDQSxTQUFVLENBQ1IsU0FDQUEsR0FBYSxRQUFVLEtBQ3ZCLFFBQ0FBLEdBQWEsTUFBUSxLQUNyQixRQUNBLFlBQ0FGLEVBQVUsSUFBS2MsR0FBUyxHQUFHQSxFQUFLLE1BQU0sSUFBSUEsRUFBSyxTQUFTLEVBQUUsRUFBRSxLQUFLLEdBQUcsR0FBSyxVQUN6RSxZQUNBaEIsRUFDQSxXQUNBQyxFQUNBLFNBQ0EsS0FBSyxVQUFVRSxDQUFNLENBQ3ZCLEVBQ0EsVUFBVyxHQUNiLENBQUMsQ0FDSCxDQzNEQSxPQUEyQixlQUFBYyxHQUFhLGtCQUFBQyxPQUFzQix3QkFXdkQsU0FBU0MsSUFBdUIsQ0FDckMsR0FBTSxDQUFFLFlBQUFDLEVBQWEsUUFBQUMsRUFBUyxRQUFBQyxDQUFRLEVBQUlDLEVBQVUsRUFDOUNDLEVBQWNDLEdBQWUsRUFFN0JDLEVBQWlCLENBQUMsU0FBVU4sR0FBYSxRQUFVLEtBQU0sUUFBU0EsR0FBYSxNQUFRLElBQUksRUFFakcsT0FBT08sR0FBWSxDQUNqQixXQUFZLE1BQU9DLEdBQXVDLENBQ3hELEdBQU0sQ0FBQ0MsRUFBT0MsQ0FBTSxFQUFJLE1BQU1ULEVBQVEsT0FBT08sRUFBTyxRQUFTQSxFQUFPLE9BQU8sRUFFM0UsR0FBSUMsRUFDRixNQUFNQSxFQUdSLE9BQU9DLENBQ1QsRUFDQSxZQUFhLENBQUMsR0FBR0osRUFBZ0IsUUFBUSxFQUN6QyxRQUFRRyxFQUFPRCxFQUFRLENBQ3JCLEdBQU0sQ0FBRSxRQUFBRyxFQUFTLElBQUFDLENBQUksRUFBSUosRUFBTyxRQUVoQ04sRUFBUU8sQ0FBSyxFQUViSSxHQUFtQixDQUNqQixhQUFjLENBQ1osSUFBTUMsRUFBYSxDQUFFLEdBQUdGLEVBQUssR0FBR0QsQ0FBUSxFQUVsQ0ksRUFBWUMsR0FBZUYsRUFBWWQsRUFBYSxPQUFPLEVBRWpFLE9BQVFpQixHQUFjRixFQUFVLE1BQU0sQ0FBQyxDQUFDRyxFQUFZQyxDQUFLLElBQU1GLEVBQVVDLENBQVUsSUFBTUMsQ0FBSyxDQUNoRyxFQUNBLFlBQUFmLEVBQ0EsTUFBT0osRUFDUCxVQUFXLFNBQXVCaUIsRUFBVyxDQUMzQyxNQUFPLENBQ0wsR0FBR0EsRUFDSCxHQUFHLE9BQU8sS0FBS04sQ0FBTyxFQUFFLE9BQ3RCLENBQUNTLEVBQWdCRixLQUFnQixDQUFFLEdBQUdFLEVBQWdCLENBQUNGLENBQVUsRUFBR04sRUFBSU0sQ0FBVSxDQUFFLEdBQ3BGLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUFDLENBQ0gsRUFDQSxTQUFTVixFQUFRLENBQ2YsR0FBTSxDQUFFLFFBQUFhLENBQVEsRUFBSWIsRUFFcEJLLEdBQW1CLENBQ2pCLGFBQWMsQ0FDWixHQUFNLENBQUUsSUFBS1MsQ0FBYSxFQUFJRCxFQUV4Qk4sRUFBWUMsR0FBZU0sRUFBY3RCLEVBQWEsT0FBTyxFQUVuRSxPQUFRaUIsR0FBY0YsRUFBVSxNQUFNLENBQUMsQ0FBQ0csRUFBWUMsQ0FBSyxJQUFNRixFQUFVQyxDQUFVLElBQU1DLENBQUssQ0FDaEcsRUFDQSxZQUFBZixFQUNBLE1BQU9KLEVBQ1AsVUFBVyxTQUFzQmlCLEVBQVcsQ0FDMUMsTUFBTyxDQUFFLEdBQUdBLEVBQVcsR0FBR0ksRUFBUSxPQUFRLENBQzVDLENBQ0YsQ0FBQyxDQUNILEVBQ0EsVUFBVVgsRUFBUUYsRUFBUSxDQUN4QkssR0FBbUIsQ0FDakIsYUFBYyxDQUNaLEdBQU0sQ0FBRSxRQUFBRixFQUFTLElBQUFDLENBQUksRUFBSUosRUFBTyxRQUUxQk0sRUFBYSxDQUFFLEdBQUdGLEVBQUssR0FBR0QsQ0FBUSxFQUVsQ0ksRUFBWUMsR0FBZUYsRUFBWWQsRUFBYSxPQUFPLEVBRWpFLE9BQVFpQixHQUFjRixFQUFVLE1BQU0sQ0FBQyxDQUFDRyxFQUFZQyxDQUFLLElBQU1GLEVBQVVDLENBQVUsSUFBTUMsQ0FBSyxDQUNoRyxFQUNBLFlBQUFmLEVBQ0EsTUFBT0osRUFDUCxVQUFXLFNBQWtDaUIsRUFBVyxDQUN0RCxHQUFNLENBQUUsa0JBQUFNLENBQWtCLEVBQUlOLEVBQ3hCLENBQUUsSUFBQUwsQ0FBSSxFQUFJRixFQUdoQixPQUFJYSxHQUFxQixNQUFRWCxFQUFJLG1CQUFxQlcsRUFDakROLEVBR0YsQ0FBRSxHQUFHQSxFQUFXLEdBQUdMLENBQUksQ0FDaEMsQ0FDRixDQUFDLENBQ0gsRUFDQSxNQUFPLEVBQ1QsQ0FBQyxDQUNILENBRUEsU0FBU0MsR0FBbUJMLEVBS3pCLENBQ0QsR0FBTSxDQUFFLFlBQUFnQixFQUFhLFlBQUFwQixFQUFhLE1BQUFxQixFQUFPLFVBQUFDLENBQVUsRUFBSWxCLEVBRW5EbUIsRUFFSnZCLEVBQVksZUFDVixDQUFFLE1BQU8sR0FBTyxTQUFVLENBQUMsU0FBVXFCLEVBQU0sT0FBUSxRQUFTQSxFQUFNLEtBQU0sT0FBTyxDQUFFLEVBQ2hGRyxHQUFpRixDQUNoRixHQUFNLENBQUUsS0FBTUMsRUFBYSxDQUFDLENBQUUsRUFBSUQsR0FBZ0IsQ0FBQyxFQUVuRCxHQUFJQyxFQUFXLFNBQVcsRUFDeEIsT0FBT0QsRUFHVCxJQUFNRSxFQUFpQkQsRUFBVyxVQUFXRixJQUFXSCxFQUFZLENBQUUsRUFFdEUsR0FBSU0sSUFBbUIsR0FDckIsT0FBT0YsRUFHVCxJQUFNRyxFQUFTTCxFQUFVRyxFQUFXQyxDQUFjLENBQUUsRUFFcEQsTUFBTyxDQUNMLEdBQUdGLEVBQ0gsS0FBTSxDQUFDLEdBQUdDLEVBQVcsTUFBTSxFQUFHQyxDQUFjLEVBQUdDLEVBQVEsR0FBR0YsRUFBVyxNQUFNQyxFQUFpQixDQUFDLENBQUMsQ0FDaEcsQ0FDRixDQUNGLENBQ0YsQ0N2SUEsT0FBUyxhQUFBRSxHQUFXLFdBQUFDLEdBQVMsWUFBQUMsT0FBZ0IsUUFDN0MsT0FBT0MsT0FBVyxhQ0RsQixJQUFBQyxFQUFBLEdBQUFDLEdBQUFELEVBQUEsWUFBQUUsR0FBQSxZQUFBQyxHQUFBLGtCQUFBQyxHQUFBLG1CQUFBQyxLQWdCQUMsR0FBQUMsRUFBQUMsSUFaQSxPQUdFLGlCQUFpQkMsR0FHakIsa0JBQWtCQyxPQUdiLE9BR1AsVUFBQUYsT0FBYyxPQWdCUCxTQUFTRyxHQUVkQSxFQUNvQixDQUNwQixPQUFPQSxDQUNULENBR08sU0FBU0MsR0FFZEEsRUFDb0IsQ0FDcEIsT0FBT0EsQ0FDVCxDQUVBLElBQU1DLEdBQWdCLE9BQU8sY0FBYyxFQStCcEMsU0FBU0MsR0FBY0MsRUFBZUMsRUFBb0IsQ0FFL0QsT0FBT1AsR0FBc0JNLEVBQUtDLENBQU8sQ0FDM0MsQ0FpQk8sU0FBU0MsR0FDZE4sRUFDQUssRUFDOEIsQ0FDOUIsT0FBT04sR0FBdUJDLEVBQWlCSyxDQUFPLENBQ3hELENEakdPLElBQU1FLEdBQTZCLENBQ3hDLEtBQU0sY0FDTixRQUFTLENBQUMsRUFDVixNQUFPLE1BQ1AsR0FBSUMsR0FBTSxTQUFTLENBQ3JCLEVBRU8sU0FBU0MsSUFBZSxDQUM3QixHQUFNLENBQUNDLEVBQWFDLENBQWMsRUFBSUMsR0FBYyxTQUFVLENBQzVELGFBQWMsS0FBSyxVQUFVTCxFQUFhLENBQzVDLENBQUMsRUFFS00sRUFBZ0JDLEdBQVEsSUFBTSxLQUFLLE1BQU1KLENBQVcsRUFBa0IsQ0FBQ0EsQ0FBVyxDQUFDLEVBQ25GSyxFQUFvQkMsR0FBd0IsS0FBS0wsRUFBZSxLQUFLLFVBQVVLLENBQU0sQ0FBQyxFQUV0RixDQUFDQyxFQUFlQyxDQUFnQixFQUFJQyxHQUFzQk4sQ0FBYSxFQUU3RSxPQUFBTyxHQUFVLElBQU0sQ0FDZEYsRUFBaUJMLENBQWEsQ0FDaEMsRUFBRyxDQUFDQSxDQUFhLENBQUMsRUFFWCxDQUNMLGNBQUFBLEVBQ0EsaUJBQUFFLEVBQ0EsY0FBQUUsRUFDQSxpQkFBQUMsQ0FDRixDQUNGLENFakNBLE9BQVMsaUJBQUFHLE9BQXFCLHdCQUt2QixTQUFTQyxJQUFpQixDQUMvQixPQUFPRCxHQUFjLENBQ25CLFVBQVUsQ0FBRSxRQUFTLENBQUUsWUFBQUUsQ0FBWSxDQUFFLEVBQUcsQ0FDdEMsT0FBT0EsSUFBYyxDQUFDLElBQU0sUUFDOUIsQ0FDRixDQUFDLENBQ0gsQ0NWQSxPQUFTLGVBQUFDLE9BQW1CLFFBSzVCLElBQU1DLEdBQW9CLEdBRXBCQyxHQUEyQixDQUMvQixVQUFXLGVBQWEsWUFBWSxDQUFDLEVBQ3JDLFNBQVUsaUJBQWUsWUFBWUQsRUFBaUIsQ0FDeEQsRUFFTyxTQUFTRSxJQUFnQixDQUM5QixHQUFNLENBQUMsQ0FBRSxVQUFBQyxFQUFXLFNBQUFDLENBQVMsRUFBR0MsQ0FBYSxFQUFJQyxHQUFlTCxFQUFpQixFQUczRU0sRUFBa0RDLEdBQ3JEQyxHQUFtQixDQUVYSixFQURILE9BQU9JLEdBQW1CLFdBQ1JDLEdBQVEsQ0FDMUIsSUFBTUMsRUFBV0YsRUFBZUMsQ0FBRyxFQUNuQyxNQUFPLENBQ0wsVUFBV0MsRUFBUyxVQUNwQixTQUFVQSxFQUFTLFFBQ3JCLENBQ0YsRUFFbUIsQ0FDakIsVUFBV0YsRUFBZSxVQUMxQixTQUFVQSxFQUFlLFFBQzNCLENBTEMsQ0FPTCxFQUNBLENBQUNKLENBQWEsQ0FDaEIsRUFFQSxNQUFPLENBQ0wsZ0JBQWlCLENBQUUsVUFBQUYsRUFBVyxTQUFBQyxDQUFTLEVBQ3ZDLG1CQUFBRyxDQUNGLENBQ0YsQ0N6Q0EsT0FBUyxhQUFBSyxHQUFXLFlBQUFDLE9BQWdCLFFDQXBDLE9BQW1CLGVBQUFDLEdBQWEsa0JBQUFDLE9BQXNCLHdCQUkvQyxTQUFTQyxJQUF1QixDQUNyQyxHQUFNLENBQUUsWUFBQUMsRUFBYSxRQUFBQyxDQUFRLEVBQUlDLEVBQVUsRUFDckNDLEVBQWNDLEdBQWUsRUFDN0IsQ0FBRSxPQUFBQyxFQUFTLEtBQU0sS0FBTUMsRUFBUSxJQUFLLEVBQUlOLEdBQWUsQ0FBQyxFQUU5RCxPQUFPTyxHQUFZLENBQ2pCLFlBQWEsQ0FBQyxTQUFVRixFQUFRLFFBQVNDLEVBQU8sUUFBUSxFQUN4RCxNQUFNLFdBQVdFLEVBQWlDLENBQ2hELEdBQU0sQ0FBQ0MsRUFBT0MsQ0FBTSxFQUFJLE1BQU1ULEVBQVEsT0FBTyxDQUFFLEtBQUFPLEVBQU0sTUFBT1IsQ0FBYSxFQUFHLENBQUMsQ0FBQyxFQUU5RSxHQUFJUyxFQUNGLE1BQU1BLEVBR1IsT0FBT0MsQ0FDVCxFQUNBLE1BQU0sV0FBWSxDQUNoQixNQUFNUCxFQUFZLGtCQUFrQixDQUNsQyxNQUFPLEdBQ1AsU0FBVSxDQUFDLFNBQVVFLEVBQVEsUUFBU0MsRUFBTyxPQUFPLENBQ3RELENBQUMsQ0FDSCxFQUNBLE1BQU8sRUFDVCxDQUFDLENBQ0gsQ0RwQk8sU0FBU0ssR0FBYUMsRUFBc0MsQ0FDakUsR0FBTSxDQUFFLFlBQUFDLEVBQWEsUUFBQUMsQ0FBUSxFQUFJQyxFQUFVLEVBQ3JDLENBQUUsZ0JBQUFDLENBQWdCLEVBQUlDLEdBQWMsRUFDcEMsQ0FBQ0MsRUFBbUJDLENBQW9CLEVBQUlDLEdBQWtDLENBQUMsQ0FBQyxFQUNoRkMsRUFBYyxPQUFPLEtBQUtILENBQWlCLEVBQUUsU0FBVyxFQUN4RCxDQUFFLE9BQUFJLENBQU8sRUFBSUMsR0FBcUIsRUFFeENDLEdBQVUsSUFBTUwsRUFBcUIsQ0FBQyxDQUFDLEVBQUcsQ0FBQ04sRUFBYUcsRUFBZ0IsU0FBUyxDQUFDLEVBRWxGLFNBQVNTLEdBQWtCLENBQ3pCLElBQU1DLEVBQU9kLEdBQU0sS0FBSyxPQUFRZSxHQUN2QlQsRUFBa0JTLEVBQUksVUFBb0IsQ0FDbEQsRUFFREwsRUFBT0ksR0FBUSxDQUFDLEVBQUcsQ0FDakIsV0FBWSxDQUNWUCxFQUFxQixDQUFDLENBQUMsQ0FDekIsRUFDQSxRQUFBTCxDQUNGLENBQUMsQ0FDSCxDQUVBLE1BQU8sQ0FDTCxnQkFBQVcsRUFDQSxxQkFBQU4sRUFDQSxrQkFBQUQsRUFDQSxZQUFBRyxDQUNGLENBQ0YsQ0VwQ0EsT0FBUyxhQUFBTyxHQUFXLFlBQUFDLE9BQWdCLFFBSzdCLFNBQVNDLElBQWEsQ0FFM0IsR0FBTSxDQUFDQyxFQUFXQyxDQUFZLEVBQUlDLEdBQWMsT0FBUSxDQUN0RCxhQUFjLEVBQ2hCLENBQUMsRUFHS0MsRUFBZ0JILEdBQThDLENBQ2xFLEdBQUksQ0FBQ0EsRUFBVyxNQUFPLENBQUMsRUFFeEIsR0FBSSxDQUVGLE9BQU9BLEVBQ0osTUFBTSxHQUFHLEVBQ1QsSUFBS0ksR0FBUyxDQUNiLEdBQU0sQ0FBQ0MsRUFBUUMsQ0FBUyxFQUFJRixFQUFLLE1BQU0sR0FBRyxFQUMxQyxNQUFJLENBQUNDLEdBQVUsQ0FBQ0MsR0FBYSxDQUFDLENBQUMsTUFBTyxNQUFNLEVBQUUsU0FBU0EsQ0FBUyxFQUN2RCxLQUVGLENBQUUsT0FBQUQsRUFBUSxVQUFXQyxDQUE0QixDQUMxRCxDQUFDLEVBQ0EsT0FBTyxPQUFPLENBQ25CLE9BQVNDLEVBQUcsQ0FDVixlQUFRLE1BQU0scUNBQXNDQSxDQUFDLEVBQzlDLENBQUMsQ0FDVixDQUNGLEVBR00sQ0FBQ0MsRUFBY0MsQ0FBZSxFQUFJQyxHQUFTLElBQU1QLEVBQWFILENBQVMsQ0FBQyxFQUc5RSxPQUFBVyxHQUFVLElBQU0sQ0FDZCxJQUFNQyxFQUFrQlQsRUFBYUgsQ0FBUyxFQUM5Q1MsRUFBZ0JHLENBQWUsQ0FDakMsRUFBRyxDQUFDWixDQUFTLENBQUMsRUFjUCxDQUNMLGFBQUFRLEVBQ0EsZ0JBYjJCSyxHQUE0RSxDQUN2RyxJQUFNQyxFQUFnQixPQUFPRCxHQUFhLFdBQWFBLEVBQVNMLENBQVksRUFBSUssRUFDaEZKLEVBQWdCSyxDQUFhLEVBRzdCLElBQU1DLEVBQ0pELEVBQWMsT0FBUyxFQUFJQSxFQUFjLElBQUtWLEdBQVMsR0FBR0EsRUFBSyxNQUFNLElBQUlBLEVBQUssU0FBUyxFQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUksS0FFcEdILEVBQWFjLENBQVUsQ0FDOUIsQ0FLQSxDQUNGLENDekRBLE9BQVMsZ0JBQUFDLE9BQW9CLFNDRDdCLE9BQVMsY0FBQUMsT0FBa0IsUUNBM0IsVUFBWUMsT0FBVyxRQU9qQixjQUFBQyxPQUFBLG9CQUhOLElBQU1DLEdBQWMsY0FDbEIsQ0FBQyxDQUFFLFVBQUFDLEVBQVcsR0FBR0MsQ0FBTSxFQUFHQyxJQUN4QkosR0FBQyxPQUFJLFVBQVUsMEVBQ2IsU0FBQUEsR0FBQyxTQUFNLElBQUtJLEVBQUssVUFBV0MsRUFBRyx5Q0FBMENILENBQVMsRUFBSSxHQUFHQyxFQUFPLEVBQ2xHLENBRUosRUFDQUYsR0FBTSxZQUFjLFFBRXBCLElBQU1LLEdBQW9CLGNBQ3hCLENBQUMsQ0FBRSxVQUFBSixFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFBUUosR0FBQyxTQUFNLElBQUtJLEVBQUssVUFBV0MsRUFBR0gsQ0FBUyxFQUFJLEdBQUdDLEVBQU8sQ0FDMUYsRUFDQUcsR0FBWSxZQUFjLGNBRTFCLElBQU1DLEdBQWtCLGNBQ3RCLENBQUMsQ0FBRSxVQUFBTCxFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFDeEJKLEdBQUMsU0FBTSxJQUFLSSxFQUFLLFVBQVdDLEVBQUcsZ0NBQWlDSCxDQUFTLEVBQUksR0FBR0MsRUFBTyxDQUUzRixFQUNBSSxHQUFVLFlBQWMsWUFFeEIsSUFBTUMsR0FBb0IsY0FDeEIsQ0FBQyxDQUFFLFVBQUFOLEVBQVcsR0FBR0MsQ0FBTSxFQUFHQyxJQUN4QkosR0FBQyxTQUNDLElBQUtJLEVBQ0wsVUFBV0MsRUFBRyxzRUFBdUVILENBQVMsRUFDN0YsR0FBR0MsRUFDTixDQUVKLEVBQ0FLLEdBQVksWUFBYyxjQUUxQixJQUFNQyxHQUFpQixjQUNyQixDQUFDLENBQUUsVUFBQVAsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQ3hCSixHQUFDLE1BQ0MsSUFBS0ksRUFDTCxVQUFXQyxFQUNULDBGQUNBSCxDQUNGLEVBQ0MsR0FBR0MsRUFDTixDQUVKLEVBQ0FNLEdBQVMsWUFBYyxXQUV2QixJQUFNQyxHQUFrQixjQUN0QixDQUFDLENBQUUsVUFBQVIsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQ3hCSixHQUFDLE1BQ0MsSUFBS0ksRUFDTCxVQUFXQyxFQUFHLHVGQUF3RkgsQ0FBUyxFQUM5RyxHQUFHQyxFQUNOLENBRUosRUFDQU8sR0FBVSxZQUFjLFlBRXhCLElBQU1DLEdBQWtCLGNBQ3RCLENBQUMsQ0FBRSxVQUFBVCxFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFBUUosR0FBQyxNQUFHLElBQUtJLEVBQUssVUFBV0MsRUFBRyxrQkFBbUJILENBQVMsRUFBSSxHQUFHQyxFQUFPLENBQzFHLEVBQ0FRLEdBQVUsWUFBYyxZQUV4QixJQUFNQyxHQUFxQixjQUN6QixDQUFDLENBQUUsVUFBQVYsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQ3hCSixHQUFDLFdBQVEsSUFBS0ksRUFBSyxVQUFXQyxFQUFHLDhDQUErQ0gsQ0FBUyxFQUFJLEdBQUdDLEVBQU8sQ0FFM0csRUFDQVMsR0FBYSxZQUFjLGVDdEUzQixPQUFTLGtCQUFBQyxPQUE4RCxRQ0R2RSxVQUFZQyxNQUEwQiwrQkFFdEMsVUFBWUMsT0FBVyxRQXNCckIsT0FVRSxPQUFBQyxFQVZGLFFBQUFDLE9BQUEsb0JBbEJGLElBQU1DLEdBQW1DLE9BRW5DQyxHQUEwQyxVQVVoRCxJQUFNQyxHQUE4QixjQUtsQyxDQUFDLENBQUUsVUFBQUMsRUFBVyxNQUFBQyxFQUFPLFNBQUFDLEVBQVUsR0FBR0MsQ0FBTSxFQUFHQyxJQUMzQ0MsR0FBc0IsYUFBckIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1Qsb1BBQ0FMLEdBQVMsVUFDVEQsQ0FDRixFQUNDLEdBQUdHLEVBRUgsVUFBQUQsRUFDREssRUFBQ0MsR0FBQSxDQUFhLFVBQVUsMkJBQTJCLEdBQ3JELENBQ0QsRUFDRFQsR0FBc0IsWUFBbUMsYUFBVyxZQUVwRSxJQUFNVSxHQUE4QixjQUdsQyxDQUFDLENBQUUsVUFBQVQsRUFBVyxHQUFHRyxDQUFNLEVBQUdDLElBQzFCRyxFQUFzQixhQUFyQixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFDVCwyaUJBQ0FOLENBQ0YsRUFDQyxHQUFHRyxFQUNOLENBQ0QsRUFDRE0sR0FBc0IsWUFBbUMsYUFBVyxZQUVwRSxJQUFNQyxHQUEyQixjQUcvQixDQUFDLENBQUUsVUFBQVYsRUFBVyxHQUFHRyxDQUFNLEVBQUdDLElBQzFCRyxFQUFzQixTQUFyQixDQUNDLFNBQUFBLEVBQXNCLFVBQXJCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUNULHluQkFDQU4sQ0FDRixFQUNDLEdBQUdHLEVBQ04sRUFDRixDQUNELEVBQ0RPLEdBQW1CLFlBQW1DLFVBQVEsWUFFOUQsSUFBTUMsR0FBd0IsY0FLNUIsQ0FBQyxDQUFFLFVBQUFYLEVBQVcsTUFBQUMsRUFBTyxHQUFHRSxDQUFNLEVBQUdDLElBQ2pDRyxFQUFzQixPQUFyQixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFDVCwwUEFDQUwsR0FBUyxVQUNURCxDQUNGLEVBQ0MsR0FBR0csRUFDTixDQUNELEVBQ0RRLEdBQWdCLFlBQW1DLE9BQUssWUFFeEQsSUFBTUMsR0FBZ0MsY0FHcEMsQ0FBQyxDQUFFLFVBQUFaLEVBQVcsU0FBQUUsRUFBVSxRQUFBVyxFQUFTLEdBQUdWLENBQU0sRUFBR0MsSUFDN0NDLEdBQXNCLGVBQXJCLENBQ0MsSUFBS0QsRUFDTCxVQUFXRSxFQUNULGtRQUNBTixDQUNGLEVBQ0EsUUFBU2EsRUFDUixHQUFHVixFQUVKLFVBQUFJLEVBQUMsUUFBSyxVQUFVLG9GQUNkLFNBQUFBLEVBQXNCLGdCQUFyQixDQUNDLFNBQUFBLEVBQUNPLEdBQUEsQ0FBTSxVQUFVLGdCQUFnQixFQUNuQyxFQUNGLEVBQ0NaLEdBQ0gsQ0FDRCxFQUNEVSxHQUF3QixZQUFtQyxlQUFhLFlBRXhFLElBQU1HLEdBQTZCLGNBR2pDLENBQUMsQ0FBRSxVQUFBZixFQUFXLFNBQUFFLEVBQVUsR0FBR0MsQ0FBTSxFQUFHQyxJQUNwQ0MsR0FBc0IsWUFBckIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1Qsa1FBQ0FOLENBQ0YsRUFDQyxHQUFHRyxFQUVKLFVBQUFJLEVBQUMsUUFBSyxVQUFVLG9GQUNkLFNBQUFBLEVBQXNCLGdCQUFyQixDQUNDLFNBQUFBLEVBQUNTLEdBQUEsQ0FBTyxVQUFVLGdDQUFnQyxFQUNwRCxFQUNGLEVBQ0NkLEdBQ0gsQ0FDRCxFQUNEYSxHQUFxQixZQUFtQyxZQUFVLFlBRWxFLElBQU1FLEdBQXlCLGNBSzdCLENBQUMsQ0FBRSxVQUFBakIsRUFBVyxNQUFBQyxFQUFPLEdBQUdFLENBQU0sRUFBR0MsSUFDakNHLEVBQXNCLFFBQXJCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUFHLG1FQUFvRUwsR0FBUyxVQUFXRCxDQUFTLEVBQzlHLEdBQUdHLEVBQ04sQ0FDRCxFQUNEYyxHQUFpQixZQUFtQyxRQUFNLFlBRTFELElBQU1DLEdBQTZCLGNBR2pDLENBQUMsQ0FBRSxVQUFBbEIsRUFBVyxHQUFHRyxDQUFNLEVBQUdDLElBQzFCRyxFQUFzQixZQUFyQixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFBRyx3Q0FBeUNOLENBQVMsRUFDL0QsR0FBR0csRUFDTixDQUNELEVBQ0RlLEdBQXFCLFlBQW1DLFlBQVUsWUFFbEUsSUFBTUMsR0FBc0IsQ0FBQyxDQUFFLFVBQUFuQixFQUFXLEdBQUdHLENBQU0sSUFFL0NJLEVBQUMsUUFBSyxVQUFXRCxFQUFHLG9FQUFxRU4sQ0FBUyxFQUFJLEdBQUdHLEVBQU8sRUFHcEhnQixHQUFvQixZQUFjLHNCRHhKNUIsY0FBQUMsR0FJRSxRQUFBQyxPQUpGLG9CQUxDLFNBQVNDLEdBQXdCQyxFQUFxQyxDQUMzRSxHQUFNLENBQUUsU0FBQUMsQ0FBUyxFQUFJRCxFQUVyQixPQUNFRixHQUFDSSxHQUFBLENBQ0MsVUFBQUwsR0FBQ00sR0FBQSxDQUFtQixVQUFVLGlOQUMzQixTQUFBRixFQUNILEVBQ0FKLEdBQUNPLEdBQUEsQ0FDQyxTQUFBTixHQUFDTyxHQUFBLENBQ0MsUUFBUyxJQUFNLENBQ2IsSUFBTUMsRUFBVUMsR0FBbUJOLENBQVEsRUFDdEMsVUFBVSxVQUFVLFVBQVVLLENBQU8sRUFBRSxNQUFPRSxHQUFVLENBQzNELFFBQVEsTUFBTSwrQkFBZ0NBLENBQUssQ0FDckQsQ0FBQyxDQUNILEVBQ0EsVUFBVSxtQ0FFVixVQUFBWCxHQUFDWSxHQUFBLENBQUssS0FBTSxHQUFJLEVBQUUsUUFFcEIsRUFDRixHQUNGLENBRUosQ0FFQSxTQUFTRixHQUFtQkcsRUFBeUIsQ0FDbkQsR0FBSSxPQUFPQSxHQUFTLFVBQVksT0FBT0EsR0FBUyxVQUFZLE9BQU9BLEdBQVMsVUFDMUUsT0FBTyxPQUFPQSxDQUFJLEVBR3BCLEdBQUlBLEdBQVMsS0FDWCxNQUFPLEdBR1QsR0FBSUMsR0FBZUQsQ0FBSSxFQUFHLENBQ3hCLElBQU1WLEVBQVFVLEVBQUssTUFHbkIsT0FBSUEsRUFBSyxNQUFRLE9BQU9BLEVBQUssTUFBUyxZQUFjQSxFQUFLLEtBQUssT0FBUyxhQUM5RFYsRUFBTSxNQUFRLEdBSW5CVSxFQUFLLE1BQVEsT0FBT0EsRUFBSyxNQUFTLFlBQWNBLEVBQUssS0FBSyxPQUFTLFlBQzlELE9BSUxWLEVBQU0sU0FDRE8sR0FBbUJQLEVBQU0sUUFBcUIsRUFHaEQsRUFDVCxDQUVBLE9BQUksTUFBTSxRQUFRVSxDQUFJLEVBQ2JBLEVBQUssSUFBSUgsRUFBa0IsRUFBRSxLQUFLLEVBQUUsRUFHdEMsRUFDVCxDRTFDTSxjQUFBSyxPQUFBLG9CQWhCQyxTQUFTQyxFQUFLQyxFQUFrQixDQUNyQyxHQUFNLENBQUUsU0FBQUMsRUFBVSxVQUFBQyxFQUFXLElBQUFDLEVBQUssTUFBQUMsRUFBTyxHQUFHQyxDQUFlLEVBQUlMLEVBRS9ELE9BQ0VGLEdBQUNRLEdBQUEsQ0FDRSxHQUFHRCxFQUNKLFVBQVdFLEVBQ1QseUVBR0Esb0JBQ0FMLENBQ0YsRUFDQSxJQUFLQyxFQUNMLE1BQU9DLEVBRVAsU0FBQU4sR0FBQ1UsR0FBQSxDQUF5QixTQUFBUCxFQUFTLEVBQ3JDLENBRUosQ0poQk0sY0FBQVEsT0FBQSxvQkFMTixJQUFNQyxHQUFjQyxHQUFXLENBQUNDLEVBQXlCQyxJQUFRLENBQy9ELEdBQU0sQ0FBRSxlQUFBQyxFQUFnQixNQUFBQyxFQUFPLEdBQUdDLENBQWUsRUFBSUosRUFFckQsT0FDRUgsR0FBQ1EsRUFBQSxDQUFNLEdBQUdELEVBQWlCLEdBQUdGLEVBQWdCLElBQUtELEVBQ2pELFNBQUFKLEdBQUMsT0FBSSxpQkFBZSxVQUFXLGdCQUFPLEVBQVFNLENBQU0sRUFBRSxFQUN4RCxDQUVKLENBQUMsRUFDREwsR0FBWSxZQUFjLGNLbEIxQixPQUFTLGNBQUFRLE9BQWtCLFFBYXZCLGNBQUFDLE9BQUEsb0JBSkosSUFBTUMsR0FBV0MsR0FBVyxDQUFDQyxFQUFzQkMsSUFBUSxDQUN6RCxHQUFNLENBQUUsZUFBQUMsRUFBZ0IsTUFBQUMsRUFBTyxHQUFHQyxDQUFlLEVBQUlKLEVBRXJELE9BQ0VILEdBQUNRLEVBQUEsQ0FBTSxHQUFHRCxFQUFpQixHQUFHRixFQUFnQixJQUFLRCxFQUNoRCxnQkFBT0UsQ0FBSyxFQUNmLENBRUosQ0FBQyxFQUNETCxHQUFTLFlBQWMsV0NsQnZCLE9BQVMsY0FBQVEsT0FBa0IsUUFXbEIsY0FBQUMsT0FBQSxvQkFIVCxJQUFNQyxHQUFZQyxHQUFXLENBQUNDLEVBQXVCQyxJQUFRLENBQzNELEdBQU0sQ0FBRSxlQUFBQyxFQUFnQixHQUFHQyxDQUFlLEVBQUlILEVBRTlDLE9BQU9ILEdBQUNPLEVBQUEsQ0FBTSxHQUFHRCxFQUFpQixHQUFHRCxFQUFnQixJQUFLRCxFQUFLLENBQ2pFLENBQUMsRUFDREgsR0FBVSxZQUFjLFlDYnhCLE9BQVMsY0FBQU8sT0FBa0IsUUFjdkIsY0FBQUMsT0FBQSxvQkFKSixJQUFNQyxHQUFXQyxHQUFXLENBQUNDLEVBQXNCQyxJQUFRLENBQ3pELEdBQU0sQ0FBRSxlQUFBQyxFQUFnQixNQUFBQyxFQUFPLFFBQUFDLEVBQVMsR0FBR0MsQ0FBZSxFQUFJTCxFQUU5RCxPQUNFSCxHQUFDUyxFQUFBLENBQU0sR0FBR0QsRUFBaUIsR0FBR0gsRUFBZ0IsSUFBS0QsRUFDaEQsZ0JBQU9FLENBQUssRUFDZixDQUVKLENBQUMsRUFDREwsR0FBUyxZQUFjLFdDbkJ2QixPQUFTLGNBQUFTLE9BQWtCLFFBYXZCLGNBQUFDLE9BQUEsb0JBSkosSUFBTUMsR0FBV0MsR0FBVyxDQUFDQyxFQUFzQkMsSUFBUSxDQUN6RCxHQUFNLENBQUUsZUFBQUMsRUFBZ0IsTUFBQUMsRUFBTyxHQUFHQyxDQUFlLEVBQUlKLEVBRXJELE9BQ0VILEdBQUNRLEVBQUEsQ0FBTSxHQUFHRCxFQUFpQixHQUFHRixFQUFnQixJQUFLRCxFQUNoRCxjQUFLLFVBQVVFLEVBQU8sS0FBTSxDQUFDLEVBQ2hDLENBRUosQ0FBQyxFQUNETCxHQUFTLFlBQWMsV0NsQnZCLE9BQVMsY0FBQVEsT0FBa0IsUUFhckIsY0FBQUMsT0FBQSxvQkFMTixJQUFNQyxHQUFXQyxHQUFXLENBQUNDLEVBQXNCQyxJQUFRLENBQ3pELEdBQU0sQ0FBRSxlQUFBQyxFQUFnQixHQUFHQyxDQUFlLEVBQUlILEVBRTlDLE9BQ0VILEdBQUNPLEVBQUEsQ0FBTSxHQUFHRCxFQUFpQixHQUFHRCxFQUFnQixJQUFLRCxFQUNqRCxTQUFBSixHQUFDLFFBQUssVUFBVSxtQkFBbUIsZ0JBQUksRUFDekMsQ0FFSixDQUFDLEVBQ0RDLEdBQVMsWUFBYyxXQ2pCdkIsT0FBUyxjQUFBTyxPQUFrQixRQWNyQixjQUFBQyxPQUFBLG9CQUxOLElBQU1DLEdBQWNDLEdBQVcsQ0FBQ0MsRUFBeUJDLElBQVEsQ0FDL0QsR0FBTSxDQUFFLGVBQUFDLEVBQWdCLE1BQUFDLEVBQU8sR0FBR0MsQ0FBZSxFQUFJSixFQUVyRCxPQUNFSCxHQUFDUSxFQUFBLENBQU0sR0FBR0QsRUFBaUIsR0FBR0YsRUFBZ0IsSUFBS0QsRUFDakQsU0FBQUosR0FBQyxPQUFJLGlCQUFlLFVBQVcsU0FBQU0sSUFBVSxLQUFPLE9BQVMsT0FBT0EsQ0FBSyxFQUFFLEVBQ3pFLENBRUosQ0FBQyxFQUNETCxHQUFZLFlBQWMsY0NsQjFCLE9BQVMsY0FBQVEsT0FBa0IsUUFhdkIsY0FBQUMsT0FBQSxvQkFKSixJQUFNQyxHQUFVQyxHQUFXLENBQUNDLEVBQXFCQyxJQUFRLENBQ3ZELEdBQU0sQ0FBRSxlQUFBQyxFQUFnQixNQUFBQyxFQUFPLEdBQUdDLENBQWUsRUFBSUosRUFFckQsT0FDRUgsR0FBQ1EsRUFBQSxDQUFNLEdBQUdELEVBQWlCLEdBQUdGLEVBQWdCLElBQUtELEVBQ2hELGdCQUFPRSxDQUFLLEVBQ2YsQ0FFSixDQUFDLEVBQ0RMLEdBQVEsWUFBYyxVQ2xCdEIsT0FBUyxjQUFBUSxPQUFrQixRQWF2QixjQUFBQyxPQUFBLG9CQUpKLElBQU1DLEdBQVdDLEdBQVcsQ0FBQ0MsRUFBc0JDLElBQVEsQ0FDekQsR0FBTSxDQUFFLGVBQUFDLEVBQWdCLE1BQUFDLEVBQU8sR0FBR0MsQ0FBZSxFQUFJSixFQUVyRCxPQUNFSCxHQUFDUSxFQUFBLENBQU0sR0FBR0QsRUFBaUIsR0FBR0YsRUFBZ0IsSUFBS0QsRUFDaEQsZ0JBQU9FLENBQUssRUFDZixDQUVKLENBQUMsRUFDREwsR0FBUyxZQUFjLFdiU1osY0FBQVEsT0FBQSxvQkFaSixTQUFTQyxHQUFRLENBQ3RCLEtBQUFDLEVBQ0EsT0FBQUMsRUFDQSxNQUFBQyxDQUNGLEVBSUcsQ0FDRCxJQUFNQyxFQUFRSCxFQUFLLFNBQVMsRUFFNUIsR0FBSUcsSUFBVSxPQUNaLE9BQU9MLEdBQUNNLEdBQUEsRUFBVSxFQUdwQixHQUFJRCxJQUFVLEtBQ1osT0FBT0wsR0FBQ08sR0FBQSxFQUFTLEVBR25CLEdBQU0sQ0FBRSxNQUFBQyxFQUFPLFFBQUFDLEVBQVMsUUFBQUMsQ0FBUSxFQUFJUCxFQUFPLFNBRTNDLEdBQUlLLElBQVUsUUFBVUUsRUFDdEIsT0FBT1YsR0FBQ1csR0FBQSxDQUFTLGVBQWdCUCxFQUFPLE1BQU9DLEVBQWdCLEVBR2pFLEdBQUlHLElBQVUsU0FDWixPQUFPUixHQUFDWSxHQUFBLENBQVEsZUFBZ0JSLEVBQU8sTUFBT0MsRUFBZ0IsRUFHaEUsR0FBSUcsSUFBVSxPQUNaLE9BQU9SLEdBQUNhLEdBQUEsQ0FBUyxlQUFnQlQsRUFBTyxNQUFPQyxFQUFnQixRQUFTSSxFQUFTLEVBR25GLEdBQUlELElBQVUsVUFDWixPQUFPUixHQUFDYyxHQUFBLENBQVksZUFBZ0JWLEVBQU8sTUFBT0MsRUFBZ0IsRUFHcEUsR0FBSUcsSUFBVSxXQUNaLE9BQU9SLEdBQUNlLEdBQUEsQ0FBUyxlQUFnQlgsRUFBTyxNQUFPQyxFQUFnQixFQUdqRSxHQUFJRyxJQUFVLE9BQ1osT0FBT1IsR0FBQ2dCLEdBQUEsQ0FBUyxlQUFnQlosRUFBTyxNQUFPQyxFQUFnQixFQUdqRSxHQUFJRyxJQUFVLFVBQ1osT0FBT1IsR0FBQ2lCLEdBQUEsQ0FBWSxlQUFnQmIsRUFBTyxNQUFPQyxFQUFnQixFQUdwRSxHQUFJRyxJQUFVLE1BQ1osT0FBSVUsR0FBYWIsQ0FBSyxFQUNiTCxHQUFDVyxHQUFBLENBQVMsZUFBZ0JQLEVBQU8sTUFBT0MsRUFBZ0IsRUFHMURMLEdBQUNZLEdBQUEsQ0FBUSxlQUFnQlIsRUFBTyxNQUFPQyxFQUFPLEVBSXZELE1BQU0sSUFBSSxNQUFNLG1CQUFtQkcsQ0FBZSwyQ0FBMkMsQ0FDL0YsQ2N6RUEsT0FBUyxjQUFBVyxPQUFrQixRQWlCckIsY0FBQUMsT0FBQSxvQkFMTixJQUFNQyxHQUFnQkMsR0FBK0MsQ0FBQ0MsRUFBT0MsSUFBUSxDQUNuRixHQUFNLENBQUUsSUFBQUMsRUFBSyxTQUFBQyxFQUFVLEdBQUdDLENBQUssRUFBSUosRUFFbkMsT0FDRUgsR0FBQ1EsRUFBQSxDQUFLLElBQUtKLEVBQU0sR0FBR0csRUFDbEIsU0FBQVAsR0FBQ1MsR0FBQSxDQUNDLFFBQVNKLEVBQUksY0FBYyxFQUMzQixTQUFVLENBQUNBLEVBQUksYUFBYSxHQUFLQyxFQUNqQyxnQkFBaUJELEVBQUkseUJBQXlCLEVBQ2hELEVBQ0YsQ0FFSixDQUFDLEVBRURKLEdBQWMsWUFBYyxnQkMzQjVCLFVBQVlTLE9BQXNCLDBCQUNsQyxVQUFZQyxNQUFXLFFBZ0JqQixjQUFBQyxPQUFBLG9CQVBOLElBQU1DLEdBQTJCLGdCQUE4QyxJQUFJLEVBRTdFQyxHQUFjLENBQUMsQ0FBRSxTQUFBQyxFQUFVLEdBQUdDLENBQU0sSUFBcUMsQ0FDN0UsR0FBTSxDQUFDQyxFQUFNQyxDQUFPLEVBQVUsV0FBUyxFQUFLLEVBRTVDLE9BQ0VOLEdBQUNDLEdBQW1CLFNBQW5CLENBQTRCLE1BQU8sQ0FBRSxLQUFBSSxFQUFNLFFBQUFDLENBQVEsRUFDbEQsU0FBQU4sR0FBa0IsUUFBakIsQ0FBc0IsS0FBTUssRUFBTSxhQUFjQyxFQUFVLEdBQUdGLEVBQzNELFNBQUFELEVBQ0gsRUFDRixDQUVKLEVBQ0FELEdBQVksWUFBYyxjQU0xQixJQUFNSyxHQUEyQixhQUMvQixDQUFDLENBQUUsU0FBQUosRUFBVSxjQUFBSyxFQUFlLFVBQUFDLEVBQVcsR0FBR0wsQ0FBTSxFQUFHTSxJQUFRLENBR3pELElBQU1DLEVBQW1CLFNBQTBCLElBQUksRUEwQnZELE9BQ0VYLEdBQWtCLFdBQWpCLENBQ0MsSUFBTVksR0FBUyxDQUNULE9BQU9GLEdBQVEsV0FBWUEsRUFBSUUsQ0FBSSxFQUM5QkYsSUFBS0EsRUFBSSxRQUFVRSxHQUU1QkQsRUFBVyxRQUFVQyxDQUN2QixFQUdBLFVBQVdDLEVBQUcsK0JBQWdDSixDQUFTLEVBQ3RELEdBQUdMLEVBRUgsU0FBQUQsRUFDSCxDQUVKLENBQ0YsRUFDQUksR0FBbUIsWUFBYyxxQkFFakMsSUFBTU8sR0FBMkIsYUFHL0IsQ0FBQyxDQUFFLFVBQUFMLEVBQVcsTUFBQU0sRUFBUSxTQUFVLFdBQUFDLEVBQWEsRUFBRyxHQUFHWixDQUFNLEVBQUdNLElBQzVEVixHQUFrQixVQUFqQixDQUNDLFNBQUFBLEdBQWtCLFdBQWpCLENBQ0MsSUFBS1UsRUFDTCxNQUFPSyxFQUNQLFdBQVlDLEVBQ1osVUFBV0gsRUFDVCxzZEFDQUosQ0FDRixFQUVBLGdCQUFrQlEsR0FBVUEsRUFBTSxlQUFlLEVBQ2hELEdBQUdiLEVBQ04sRUFDRixDQUNELEVBQ0RVLEdBQW1CLFlBQStCLFdBQVEsWUFFbkQsU0FBU0ksRUFBa0JDLEVBSS9CLENBQ0QsSUFBTUMsRUFBZ0IsYUFBV25CLEVBQWtCLEVBRTdDb0IsRUFBbUIsY0FBWSxJQUFNLENBQ3JDRixFQUFRLFVBQ1ZDLEdBQVMsUUFBUSxFQUFLLEVBRXBCRCxFQUFRLFFBQ1ZBLEVBQVEsT0FBTyxFQUViQyxHQUNGQSxFQUFRLFFBQVEsRUFBSyxDQUV6QixFQUFHLENBQUNELEVBQVEsT0FBUUMsQ0FBTyxDQUFDLEVBRXRCRSxFQUFxQixjQUFZLElBQU0sQ0FDdkNILEVBQVEsVUFDVkMsR0FBUyxRQUFRLEVBQUssRUFFcEJELEVBQVEsVUFDVkEsRUFBUSxTQUFTLEVBRWZDLEdBQ0ZBLEVBQVEsUUFBUSxFQUFLLENBRXpCLEVBQUcsQ0FBQ0QsRUFBUSxTQUFVQyxDQUFPLENBQUMsRUFFOUIsT0FBTSxZQUFVLElBQU0sQ0FDcEIsSUFBTUcsRUFBaUJOLEdBQXlCLEVBRXpDQSxFQUFNLE1BQVEsU0FBV0EsRUFBTSxNQUFRLFdBQWEsQ0FBQ0EsRUFBTSxTQUM5REksRUFBVyxFQUNGSixFQUFNLE1BQVEsVUFDdkJLLEVBQWEsQ0FFakIsRUFFQSxjQUFPLGlCQUFpQixVQUFXQyxDQUFhLEVBQ3pDLElBQU0sT0FBTyxvQkFBb0IsVUFBV0EsQ0FBYSxDQUNsRSxFQUFHLENBQUNGLEVBQVlDLENBQVksQ0FBQyxFQUV0QixDQUFFLFdBQUFELEVBQVksYUFBQUMsQ0FBYSxDQUNwQyxDQ3JJSSxPQUNFLE9BQUFFLEdBREYsUUFBQUMsT0FBQSxvQkFKRyxTQUFTQyxHQUFjQyxFQUEyQixDQUN2RCxHQUFNLENBQUUsY0FBQUMsRUFBZSxlQUFBQyxDQUFlLEVBQUlGLEVBRTFDLE9BQ0VGLEdBQUNLLEdBQUEsQ0FDQyxVQUFBTixHQUFDTyxHQUFBLENBQW1CLFFBQU8sR0FBRSxTQUFBSCxFQUFjLEVBQzNDSixHQUFDUSxHQUFBLENBQ0MsTUFBTSxRQUNOLFlBQWEsR0FDYixVQUFVLGlKQUNWLFdBQVksSUFFWCxTQUFBSCxFQUNILEdBQ0YsQ0FFSixDQ3pCQSxPQUNFLGlCQUFBSSxHQUNBLGNBQUFDLEdBRUEsZUFBQUMsR0FFQSxrQkFBQUMsR0FDQSxpQkFBQUMsR0FFQSxhQUFBQyxHQUNBLGNBQUFDLE9BQ0ssZ0JBQ1AsT0FDRSxhQUFBQyxHQUNBLG1CQUFBQyxHQUNBLCtCQUFBQyxHQUNBLGVBQUFDLEdBQ0EsK0JBQUFDLE9BQ0ssb0JBQ1AsT0FBUyxPQUFBQyxPQUFXLHFCQUVwQixPQUFTLFVBQUFDLE9BQWMsZUFDdkIsT0FBUyxpQkFBQUMsT0FBcUIsb0JBRTlCLE9BQVMsV0FBQUMsR0FBUyxZQUFBQyxPQUFnQixRQUVsQyxPQUFTLFlBQUFDLE9BQWdCLG9CQUN6QixPQUFTLGdCQUFBQyxPQUFvQixZQUM3QixPQUFPQyxPQUFXLGFDMUJYLFNBQVNDLEdBQWNDLEVBQTRCQyxFQUEwQkMsRUFBd0IsQ0FDMUcsSUFBTUMsRUFBZ0JILEdBQVEsU0FBUyxNQUV2QyxHQUFJRyxJQUFrQixPQUNwQixNQUFPLEdBR1QsR0FBSUYsSUFBYSxNQUFRQSxJQUFhLFNBQ3BDLE9BQU9DLEVBQU0sWUFBWSxJQUFNLE9BQVMsS0FBT0EsRUFHakQsR0FBSUMsSUFBa0IsVUFBVyxPQUFPRCxJQUFVLE9BS2xELEdBSklDLElBQWtCLFlBQ2xCQSxJQUFrQixRQUNsQkEsSUFBa0IsT0FDbEJBLElBQWtCLFVBQ2xCQSxJQUFrQixPQUFRLE9BQU9ELEVBRXJDLEdBQUlDLElBQWtCLE9BQ3BCLEdBQUksQ0FDRixPQUFPLEtBQUssTUFBTUQsQ0FBSyxDQUN6QixNQUFRLENBQ04sT0FBT0EsQ0FDVCxDQUdGLE9BQUlDLElBQWtCLFVBQ2JELElBQVUsR0FBSyxLQUFPLE9BQU9BLENBQUssRUFHcENBLENBQ1QsQ0FFTyxTQUFTRSxHQUNkSixFQUNBQyxFQUNBQyxFQUNRLENBQ1IsSUFBTUMsRUFBZ0JILEdBQVEsU0FBUyxNQUV2QyxHQUFJQyxJQUFhQSxJQUFhLE1BQVFBLElBQWEsVUFDakQsT0FBT0MsSUFBVSxLQUFPLE9BQVMsT0FBT0EsQ0FBSyxFQUcvQyxHQUFJQyxJQUFrQixRQUFhRCxHQUFTLEtBQzFDLE1BQU8sR0FTVCxHQU5JQyxJQUFrQixXQUNsQkEsSUFBa0IsWUFDbEJBLElBQWtCLFFBQ2xCQSxJQUFrQixXQUNsQkEsSUFBa0IsT0FDbEJBLElBQWtCLFVBQ2xCQSxJQUFrQixPQUFRLE9BQU8sT0FBT0QsQ0FBSyxFQUVqRCxHQUFJQyxJQUFrQixPQUFRLENBQzVCLEdBQUlELElBQVUsR0FBSSxNQUFPLEdBQ3pCLEdBQUksQ0FDRixPQUFPLEtBQUssVUFBVUEsQ0FBSyxDQUM3QixNQUFRLENBQ04sT0FBTyxPQUFPQSxDQUFLLENBQ3JCLENBQ0YsQ0FFQSxPQUFPLE9BQU9BLENBQUssQ0FDckIsQ0NwRUEsT0FBUyxPQUFBRyxPQUE4QiwyQkEwQjlCLGNBQUFDLE9BQUEsb0JBckJULElBQU1DLEdBQWdCQyxHQUNwQiw4TUFDQSxDQUNFLFNBQVUsQ0FDUixRQUFTLENBQ1AsUUFBUyxrR0FDVCxVQUFXLDhGQUNYLFlBQ0UsOEdBQ0YsUUFBUyxvQkFDWCxDQUNGLEVBQ0EsZ0JBQWlCLENBQ2YsUUFBUyxTQUNYLENBQ0YsQ0FDRixFQUlBLFNBQVNDLEdBQU0sQ0FBRSxVQUFBQyxFQUFXLFFBQUFDLEVBQVMsR0FBR0MsQ0FBTSxFQUFlLENBQzNELE9BQU9OLEdBQUMsT0FBSSxVQUFXTyxFQUFHTixHQUFjLENBQUUsUUFBQUksQ0FBUSxDQUFDLEVBQUdELENBQVMsRUFBSSxHQUFHRSxFQUFPLENBQy9FLENDM0JBLFVBQVlFLE1BQTJCLGdDQUV2QyxVQUFZQyxPQUFXLFFBc0JyQixPQVVFLE9BQUFDLEVBVkYsUUFBQUMsT0FBQSxvQkFsQkYsSUFBTUMsR0FBcUMsT0FFckNDLEdBQTRDLFVBVWxELElBQU1DLEdBQStCLGNBS25DLENBQUMsQ0FBRSxVQUFBQyxFQUFXLE1BQUFDLEVBQU8sU0FBQUMsRUFBVSxHQUFHQyxDQUFNLEVBQUdDLElBQzNDQyxHQUF1QixhQUF0QixDQUNDLElBQUtELEVBQ0wsVUFBV0UsRUFDVCxzUEFDQUwsR0FBUyxVQUNURCxDQUNGLEVBQ0MsR0FBR0csRUFFSCxVQUFBRCxFQUNESyxFQUFDQyxHQUFBLENBQWEsVUFBVSxhQUFhLEdBQ3ZDLENBQ0QsRUFDRFQsR0FBdUIsWUFBb0MsYUFBVyxZQUV0RSxJQUFNVSxHQUErQixjQUduQyxDQUFDLENBQUUsVUFBQVQsRUFBVyxHQUFHRyxDQUFNLEVBQUdDLElBQzFCRyxFQUF1QixhQUF0QixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFDVCw0aUJBQ0FOLENBQ0YsRUFDQyxHQUFHRyxFQUNOLENBQ0QsRUFDRE0sR0FBdUIsWUFBb0MsYUFBVyxZQUV0RSxJQUFNQyxHQUE0QixjQUdoQyxDQUFDLENBQUUsVUFBQVYsRUFBVyxXQUFBVyxFQUFhLEVBQUcsR0FBR1IsQ0FBTSxFQUFHQyxJQUMxQ0csRUFBdUIsU0FBdEIsQ0FDQyxTQUFBQSxFQUF1QixVQUF0QixDQUNDLElBQUtILEVBQ0wsV0FBWU8sRUFDWixVQUFXTCxFQUNULHNOQUNBLDRhQUNBTixDQUNGLEVBQ0MsR0FBR0csRUFDTixFQUNGLENBQ0QsRUFDRE8sR0FBb0IsWUFBb0MsVUFBUSxZQUVoRSxJQUFNRSxHQUF5QixjQUs3QixDQUFDLENBQUUsVUFBQVosRUFBVyxNQUFBQyxFQUFPLEdBQUdFLENBQU0sRUFBR0MsSUFDakNHLEVBQXVCLE9BQXRCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUNULDhUQUNBTCxHQUFTLFVBQ1RELENBQ0YsRUFDQyxHQUFHRyxFQUNOLENBQ0QsRUFDRFMsR0FBaUIsWUFBb0MsT0FBSyxZQUUxRCxJQUFNQyxHQUFpQyxjQUdyQyxDQUFDLENBQUUsVUFBQWIsRUFBVyxTQUFBRSxFQUFVLFFBQUFZLEVBQVMsR0FBR1gsQ0FBTSxFQUFHQyxJQUM3Q0MsR0FBdUIsZUFBdEIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1QsdVJBQ0FOLENBQ0YsRUFDQSxRQUFTYyxFQUNSLEdBQUdYLEVBRUosVUFBQUksRUFBQyxRQUFLLFVBQVUsb0ZBQ2QsU0FBQUEsRUFBdUIsZ0JBQXRCLENBQ0MsU0FBQUEsRUFBQ1EsR0FBQSxDQUFNLFVBQVUsZ0JBQWdCLEVBQ25DLEVBQ0YsRUFDQ2IsR0FDSCxDQUNELEVBQ0RXLEdBQXlCLFlBQW9DLGVBQWEsWUFFMUUsSUFBTUcsR0FBOEIsY0FHbEMsQ0FBQyxDQUFFLFVBQUFoQixFQUFXLFNBQUFFLEVBQVUsR0FBR0MsQ0FBTSxFQUFHQyxJQUNwQ0MsR0FBdUIsWUFBdEIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1QsdVJBQ0FOLENBQ0YsRUFDQyxHQUFHRyxFQUVKLFVBQUFJLEVBQUMsUUFBSyxVQUFVLG9GQUNkLFNBQUFBLEVBQXVCLGdCQUF0QixDQUNDLFNBQUFBLEVBQUNVLEdBQUEsQ0FBTyxVQUFVLGdDQUFnQyxFQUNwRCxFQUNGLEVBQ0NmLEdBQ0gsQ0FDRCxFQUNEYyxHQUFzQixZQUFvQyxZQUFVLFlBRXBFLElBQU1FLEdBQTBCLGNBSzlCLENBQUMsQ0FBRSxVQUFBbEIsRUFBVyxNQUFBQyxFQUFPLEdBQUdFLENBQU0sRUFBR0MsSUFDakNHLEVBQXVCLFFBQXRCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUFHLGdEQUFpREwsR0FBUyxVQUFXRCxDQUFTLEVBQzNGLEdBQUdHLEVBQ04sQ0FDRCxFQUNEZSxHQUFrQixZQUFvQyxRQUFNLFlBRTVELElBQU1DLEdBQThCLGNBR2xDLENBQUMsQ0FBRSxVQUFBbkIsRUFBVyxHQUFHRyxDQUFNLEVBQUdDLElBQzFCRyxFQUF1QixZQUF0QixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFBRyx1Q0FBd0NOLENBQVMsRUFDOUQsR0FBR0csRUFDTixDQUNELEVBQ0RnQixHQUFzQixZQUFvQyxZQUFVLFlBRXBFLElBQU1DLEdBQXVCLENBQUMsQ0FBRSxVQUFBcEIsRUFBVyxHQUFHRyxDQUFNLElBQzNDSSxFQUFDLFFBQUssVUFBV0QsRUFBRyx5REFBMEROLENBQVMsRUFBSSxHQUFHRyxFQUFPLEVBRTlHaUIsR0FBcUIsWUFBYyx1QkNyS25DLFVBQVlDLE9BQVcsUUFPakIsY0FBQUMsT0FBQSxvQkFITixJQUFNQyxHQUFjLGNBQ2xCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLEtBQUFDLEVBQU0sR0FBR0MsQ0FBTSxFQUFHQyxJQUU1QkwsR0FBQyxTQUNDLEtBQU1HLEVBQ04sVUFBV0csRUFDVCx1WkFDQUosQ0FDRixFQUNBLElBQUtHLEVBQ0osR0FBR0QsRUFDTixDQUdOLEVBQ0FILEdBQU0sWUFBYyxRQ25CcEIsVUFBWU0sTUFBcUIseUJBRWpDLFVBQVlDLE9BQVcsUUFjckIsT0FVSSxPQUFBQyxFQVZKLFFBQUFDLE9BQUEsb0JBVkYsSUFBTUMsR0FBeUIsT0FJL0IsSUFBTUMsR0FBOEIsUUFFOUJDLEdBQXNCLGNBRzFCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLFNBQUFDLEVBQVUsR0FBR0MsQ0FBTSxFQUFHQyxJQUNwQ0MsR0FBaUIsVUFBaEIsQ0FDQyxJQUFLRCxFQUNMLFVBQVdFLEVBQ1QsbVlBQ0FMLENBQ0YsRUFDQyxHQUFHRSxFQUVILFVBQUFELEVBQ0RLLEVBQWlCLE9BQWhCLENBQXFCLFFBQU8sR0FDM0IsU0FBQUEsRUFBQ0MsR0FBQSxDQUFZLFVBQVUsOEJBQThCLEVBQ3ZELEdBQ0YsQ0FDRCxFQUNEUixHQUFjLFlBQThCLFVBQVEsWUFFcEQsSUFBTVMsR0FBNkIsY0FHakMsQ0FBQyxDQUFFLFVBQUFSLEVBQVcsR0FBR0UsQ0FBTSxFQUFHQyxJQUMxQkcsRUFBaUIsaUJBQWhCLENBQ0MsSUFBS0gsRUFDTCxVQUFXRSxFQUFHLHNFQUF1RUwsQ0FBUyxFQUM3RixHQUFHRSxFQUVKLFNBQUFJLEVBQUNHLEdBQUEsQ0FBVSxVQUFVLGdCQUFnQixFQUN2QyxDQUNELEVBQ0RELEdBQXFCLFlBQThCLGlCQUFlLFlBRWxFLElBQU1FLEdBQStCLGNBR25DLENBQUMsQ0FBRSxVQUFBVixFQUFXLEdBQUdFLENBQU0sRUFBR0MsSUFDMUJHLEVBQWlCLG1CQUFoQixDQUNDLElBQUtILEVBQ0wsVUFBV0UsRUFBRyxzRUFBdUVMLENBQVMsRUFDN0YsR0FBR0UsRUFFSixTQUFBSSxFQUFDQyxHQUFBLENBQVksVUFBVSxnQkFBZ0IsRUFDekMsQ0FDRCxFQUNERyxHQUF1QixZQUE4QixtQkFBaUIsWUFFdEUsSUFBTUMsR0FBc0IsY0FHMUIsQ0FBQyxDQUFFLFVBQUFYLEVBQVcsU0FBQUMsRUFBVSxTQUFBVyxFQUFXLFNBQVUsR0FBR1YsQ0FBTSxFQUFHQyxJQUN6REcsRUFBaUIsU0FBaEIsQ0FDQyxTQUFBRixHQUFpQixVQUFoQixDQUNDLElBQUtELEVBQ0wsVUFBV0UsRUFDVCxrbkJBQ0FPLElBQWEsVUFDWCw4SUFDRlosQ0FDRixFQUNBLFNBQVVZLEVBQ1QsR0FBR1YsRUFFSixVQUFBSSxFQUFDRSxHQUFBLEVBQXFCLEVBQ3RCRixFQUFpQixXQUFoQixDQUNDLFVBQVdELEVBQ1QsU0FDQU8sSUFBYSxVQUNYLGtHQUNKLEVBRUMsU0FBQVgsRUFDSCxFQUNBSyxFQUFDSSxHQUFBLEVBQXVCLEdBQzFCLEVBQ0YsQ0FDRCxFQUNEQyxHQUFjLFlBQThCLFVBQVEsWUFFcEQsSUFBTUUsR0FBb0IsY0FHeEIsQ0FBQyxDQUFFLFVBQUFiLEVBQVcsR0FBR0UsQ0FBTSxFQUFHQyxJQUMxQkcsRUFBaUIsUUFBaEIsQ0FDQyxJQUFLSCxFQUNMLFVBQVdFLEVBQUcsZ0RBQWlETCxDQUFTLEVBQ3ZFLEdBQUdFLEVBQ04sQ0FDRCxFQUNEVyxHQUFZLFlBQThCLFFBQU0sWUFFaEQsSUFBTUMsRUFBbUIsY0FHdkIsQ0FBQyxDQUFFLFVBQUFkLEVBQVcsU0FBQUMsRUFBVSxHQUFHQyxDQUFNLEVBQUdDLElBQ3BDQyxHQUFpQixPQUFoQixDQUNDLElBQUtELEVBQ0wsVUFBV0UsRUFDVCw0UUFDQUwsQ0FDRixFQUNDLEdBQUdFLEVBRUosVUFBQUksRUFBQyxRQUFLLFVBQVUscUZBQ2QsU0FBQUEsRUFBaUIsZ0JBQWhCLENBQ0MsU0FBQUEsRUFBQ1MsR0FBQSxDQUFNLFVBQVUsZ0JBQWdCLEVBQ25DLEVBQ0YsRUFDQVQsRUFBaUIsV0FBaEIsQ0FBMEIsU0FBQUwsRUFBUyxHQUN0QyxDQUNELEVBQ0RhLEVBQVcsWUFBOEIsT0FBSyxZQUU5QyxJQUFNRSxHQUF3QixjQUc1QixDQUFDLENBQUUsVUFBQWhCLEVBQVcsR0FBR0UsQ0FBTSxFQUFHQyxJQUMxQkcsRUFBaUIsWUFBaEIsQ0FBMEIsSUFBS0gsRUFBSyxVQUFXRSxFQUFHLHVDQUF3Q0wsQ0FBUyxFQUFJLEdBQUdFLEVBQU8sQ0FDbkgsRUFDRGMsR0FBZ0IsWUFBOEIsWUFBVSxZTDlFaEQsT0E2aUJBLFlBQUFDLEdBN2lCQSxPQUFBQyxFQUVGLFFBQUFDLE1BRkUsb0JBZFIsSUFBTUMsR0FBd0IsQ0FBQyxDQUM3QixNQUFBQyxFQUNBLGNBQUFDLEVBQ0EsU0FBQUMsRUFDQSxpQkFBQUMsRUFBbUIsMkJBQ3JCLElBT0lMLEVBQUNNLEdBQUEsQ0FBTyxNQUFPSixFQUFPLGNBQWVDLEVBQWUsU0FBVUMsRUFDNUQsVUFBQUwsRUFBQ1EsR0FBQSxDQUFjLFVBQVdGLEVBQ3hCLFNBQUFOLEVBQUNTLEdBQUEsQ0FBWSxZQUFZLFFBQVEsRUFDbkMsRUFDQVIsRUFBQ1MsR0FBQSxDQUNDLFVBQUFWLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLE1BQ2hCLFNBQUFYLEVBQUMsT0FBSSxVQUFVLG1CQUFtQixlQUFHLEVBQ3ZDLEVBQ0FBLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLEtBQ2hCLFNBQUFYLEVBQUMsT0FBSSxVQUFVLG1CQUFtQixjQUFFLEVBQ3RDLEdBQ0YsR0FDRixFQUtFWSxHQUE2QixDQUFDLENBQ2xDLFNBQUFDLEVBQ0EsTUFBQUMsRUFDQSxNQUFBQyxDQUNGLElBSU0sQ0FDSixJQUFNQyxFQUFhRixFQUFNLEtBQU1HLEdBQVNBLEVBQUssS0FBT0osQ0FBUSxFQUM1RCxHQUFJLENBQUNHLEVBQVksT0FBTyxLQUV4QixJQUFJRSxFQUFxQyxNQUNyQ0MsRUFBMEIsR0FDeEJDLEVBQWtCTixFQUFNLFVBQVdHLEdBQVNBLEVBQUssS0FBT0osQ0FBUSxFQUV0RSxHQUFJTyxFQUFrQixFQUFHLENBQ3ZCLElBQU1DLEVBQWVQLEVBQU1NLEVBQWtCLENBQUMsRUFDMUNDLElBRUZILEVBQXVCRyxFQUFhLE1BQ3BDRixFQUEwQixHQUU5QixDQUVBLE9BQUlILEVBQVcsT0FBUyxlQUVwQmhCLEVBQUNzQixHQUFBLENBQ0MsT0FBUU4sRUFDUixTQUFVLElBQU0sQ0FBQyxFQUNqQixTQUFVLElBQU0sQ0FBQyxFQUNqQixNQUFPRCxFQUNQLG9CQUFxQkksRUFDckIscUJBQXNCRCxFQUN0Qix3QkFBeUIsSUFBTSxDQUFDLEVBQ2xDLEVBSUFsQixFQUFDdUIsR0FBQSxDQUNDLE1BQU9QLEVBQ1AsU0FBVSxJQUFNLENBQUMsRUFDakIsU0FBVSxJQUFNLENBQUMsRUFDakIsT0FBUSxHQUNSLE1BQU9ELEVBQ1Asb0JBQXFCSSxFQUNyQixxQkFBc0JELEVBQ3RCLHdCQUF5QixJQUFNLENBQUMsRUFDaEMsNEJBQTZCLEdBQy9CLENBR04sRUFHTU0sR0FBa0IsQ0FBQyxDQUN2QixNQUFBVixFQUNBLGNBQUFXLEVBQ0EsTUFBQVYsRUFDQSxhQUFBVyxFQUNBLGFBQUFDLEVBQ0EsZUFBQUMsRUFDQSxhQUFBQyxFQUNBLFlBQUFDLEVBQ0EsZ0JBQUFDLENBQ0YsSUFVTSxDQUNKLElBQU1DLEVBQWtCQyxHQUFRLElBQU1uQixFQUFNLElBQUtHLEdBQVNBLEVBQUssRUFBRSxFQUFHLENBQUNILENBQUssQ0FBQyxFQUNyRW9CLEVBQVVDLEdBQ2RDLEdBQVVDLEdBQWUsQ0FBRSxxQkFBc0IsQ0FBRSxTQUFVLENBQUUsQ0FBRSxDQUFDLEVBQ2xFRCxHQUFVRSxHQUFnQixDQUFFLGlCQUFrQkMsRUFBNEIsQ0FBQyxDQUM3RSxFQWNBLE9BQ0V0QyxFQUFDdUMsR0FBQSxDQUNDLFFBQVNOLEVBQ1QsbUJBQW9CTyxHQUNwQixZQUFhWCxFQUNiLFVBakIyQlksR0FBd0IsQ0FDckQsR0FBTSxDQUFFLE9BQUFDLEVBQVEsS0FBQUMsQ0FBSyxFQUFJRixFQUN6QixHQUFJRSxHQUFRRCxFQUFPLEtBQU9DLEVBQUssR0FBSSxDQUNqQyxJQUFNQyxFQUFXL0IsRUFBTSxVQUFXRyxHQUFTQSxFQUFLLEtBQU8wQixFQUFPLEVBQUUsRUFDMURHLEVBQVdoQyxFQUFNLFVBQVdHLEdBQVNBLEVBQUssS0FBTzJCLEVBQUssRUFBRSxFQUMxREMsSUFBYSxJQUFNQyxJQUFhLElBQ2xDbEIsRUFBZWlCLEVBQVVDLENBQVEsQ0FFckMsQ0FDQWYsRUFBZ0IsQ0FDbEIsRUFTSSxVQUFBL0IsRUFBQytDLEdBQUEsQ0FBZ0IsTUFBT2YsRUFBaUIsU0FBVWdCLEdBQ2hELFNBQUFsQyxFQUFNLElBQUksQ0FBQ21DLEVBQW1CQyxJQUFVLENBQ3ZDLElBQUlDLEVBQWdCLEdBQ2hCQyxFQUNBQyxFQUNBQyxFQUF3QixHQUU1QixHQUFJSixFQUFRLEVBQUcsQ0FDYkMsRUFBZ0IsR0FDaEIsSUFBTUksRUFBV3pDLEVBQU1vQyxFQUFRLENBQUMsRUFDaENFLEVBQWVHLEVBQVMsTUFDeEJGLEVBQXVCRyxHQUEyQixDQUNoRCxJQUFNQyxFQUFrQixDQUFFLEdBQUdGLEVBQVUsTUFBT0MsQ0FBUyxFQUN2RDlCLEVBQWF3QixFQUFRLEVBQUdPLENBQWUsQ0FDekMsRUFDQUgsRUFBd0JKLEVBQVEsSUFBTXBDLEVBQU0sT0FBUyxDQUN2RCxDQUVBLE9BQ0VkLEVBQUMwRCxHQUFBLENBRUMsT0FBUVQsRUFDUixTQUFXVSxHQUFrQmpDLEVBQWF3QixFQUFPUyxDQUFhLEVBQzlELFNBQVUsSUFBTWhDLEVBQWF1QixDQUFLLEVBQ2xDLFlBQWF6QixFQUNiLE1BQU9WLEVBQ1Asb0JBQXFCb0MsRUFDckIscUJBQXNCQyxFQUN0Qix3QkFBeUJDLEVBQ3pCLDRCQUE2QkMsR0FUeEJMLEVBQWtCLEVBVXpCLENBRUosQ0FBQyxFQUNILEVBQ0NXLEdBQ0M1RCxFQUFDNkQsR0FBQSxDQUNFLFNBQUFoQyxFQUNDN0IsRUFBQyxPQUFJLFVBQVUsZ0JBQ2IsU0FBQUEsRUFBQ1ksR0FBQSxDQUEyQixTQUFVaUIsRUFBYyxNQUFPZixFQUFPLE1BQU9DLEVBQU8sRUFDbEYsRUFDRSxLQUNOLEVBQ0EsU0FBUyxJQUNYLEdBQ0YsQ0FFSixFQUdNMkMsR0FBcUIsQ0FBQyxDQUMxQixPQUFBSSxFQUNBLFNBQUFDLEVBQ0EsU0FBQUMsRUFDQSxZQUFBQyxFQUNBLE1BQUFsRCxFQUNBLG9CQUFBbUQsRUFDQSxxQkFBQWhELEVBQ0Esd0JBQUFpRCxFQUNBLDRCQUFBQyxDQUNGLElBVU0sQ0FDSixHQUFNLENBQUUsV0FBQUMsRUFBWSxVQUFBQyxFQUFXLFdBQUFDLEVBQVksVUFBQUMsRUFBVyxXQUFBQyxFQUFZLFdBQUFDLENBQVcsRUFBSUMsR0FBWSxDQUMzRixHQUFJYixFQUFPLEdBQ1gsS0FBTSxDQUNKLEtBQU1BLEVBQU8sS0FDYixTQUFVRyxDQUNaLENBQ0YsQ0FBQyxFQUVLVyxFQUFRLENBQ1osVUFBV0MsR0FBSSxVQUFVLFNBQVNMLENBQVMsRUFDM0MsV0FBQUMsRUFDQSxRQUFTQyxFQUFhLEdBQU0sQ0FDOUIsRUFFQSxPQUNFMUUsRUFBQyxPQUFJLElBQUt1RSxFQUFZLE1BQU9LLEVBQU8sVUFBVSxrREFDM0MsU0FBQWQsRUFBTyxPQUFTLGVBQ2Y5RCxFQUFDc0IsR0FBQSxDQUNDLE9BQVF3QyxFQUNSLFNBQVVDLEVBQ1YsU0FBVUMsRUFDVixnQkFBaUIsQ0FBRSxHQUFHSyxFQUFZLEdBQUdDLENBQVUsRUFDL0MsTUFBT3ZELEVBQ1Asb0JBQXFCbUQsRUFDckIscUJBQXNCaEQsRUFDdEIsd0JBQXlCaUQsRUFDekIsNEJBQTZCQyxFQUMvQixFQUVBcEUsRUFBQ3VCLEdBQUEsQ0FDQyxNQUFPdUMsRUFDUCxTQUFVQyxFQUNWLFNBQVVDLEVBQ1YsZ0JBQWlCLENBQUUsR0FBR0ssRUFBWSxHQUFHQyxDQUFVLEVBQy9DLE1BQU92RCxFQUNQLG9CQUFxQm1ELEVBQ3JCLHFCQUFzQmhELEVBQ3RCLHdCQUF5QmlELEVBQ3pCLDRCQUE2QkMsRUFDL0IsRUFFSixDQUVKLEVBR005QyxHQUFrQixDQUFDLENBQ3ZCLE9BQUF3QyxFQUNBLFNBQUFDLEVBQ0EsU0FBQUMsRUFDQSxnQkFBQWMsRUFDQSxNQUFBL0QsRUFDQSxvQkFBQW1ELEVBQ0EscUJBQUFoRCxFQUNBLHdCQUFBaUQsRUFDQSw0QkFBQUMsQ0FDRixJQVVNLENBQ0osSUFBTVcsRUFBc0I1RSxHQUFrQixDQUM1QzRELEVBQVMsQ0FBRSxHQUFHRCxFQUFRLE9BQVEzRCxDQUFNLENBQUMsQ0FDdkMsRUFFTTZFLEVBQXdCN0UsR0FBMEIsQ0FDdEQ0RCxFQUFTLENBQUUsR0FBR0QsRUFBUSxTQUFVM0QsQ0FBTSxDQUFDLENBQ3pDLEVBRU04RSxFQUFxQkMsR0FBMkMsQ0FDcEUsSUFBTUMsRUFBV0QsRUFBRSxPQUFPLE1BQ3BCRSxFQUFhckUsRUFBTSxRQUFRK0MsRUFBTyxNQUFNLEVBRTlDLEdBQUlzQixJQUFlLE9BQVcsQ0FDNUIsSUFBTTVCLEVBQVc2QixHQUFjRCxFQUFZdEIsRUFBTyxTQUFVcUIsQ0FBUSxFQUVwRXBCLEVBQVMsQ0FBRSxHQUFHRCxFQUFRLE1BQU9OLENBQVMsQ0FBQyxDQUN6QyxDQUNGLEVBRU0sQ0FBQzhCLEVBQWFDLENBQWMsRUFBSUMsR0FDcENDLEdBQWUxRSxFQUFNLFFBQVErQyxFQUFPLE1BQU0sRUFBR0EsRUFBTyxTQUFVQSxFQUFPLEtBQUssQ0FDNUUsRUFFQSxPQUNFN0QsRUFBQ3lGLEdBQU8sSUFBUCxDQUNDLFVBQVUsNkNBQ1YsUUFBUyxDQUFFLFFBQVMsQ0FBRSxFQUN0QixRQUFTLENBQUUsUUFBUyxDQUFFLEVBQ3RCLEtBQU0sQ0FBRSxRQUFTLENBQUUsRUFDbkIsV0FBWSxDQUFFLE9BQVEsQ0FBRSxTQUFVLEdBQUssQ0FBRSxFQUV6QyxVQUFBekYsRUFBQyxPQUFJLFVBQVUsNkNBQ2IsVUFBQUQsRUFBQyxPQUFLLEdBQUc4RSxFQUFpQixVQUFVLGlCQUNsQyxTQUFBOUUsRUFBQzJGLEdBQUEsQ0FBYSxVQUFVLG1CQUFtQixLQUFNLEdBQUksRUFDdkQsRUFFQTFGLEVBQUMsT0FBSSxVQUFVLG1DQUNaLFVBQUFpRSxHQUF1QkMsRUFDdEJuRSxFQUFDRSxHQUFBLENBQ0MsTUFBT2dCLEVBQ1AsY0FBZWlELEVBQ2YsU0FBVUMsRUFDWixFQUNFLEtBRUpuRSxFQUFDTSxHQUFBLENBQU8sTUFBT3VELEVBQU8sT0FBUSxjQUFlaUIsRUFDM0MsVUFBQS9FLEVBQUNRLEdBQUEsQ0FBYyxVQUFVLDRCQUN2QixTQUFBUixFQUFDUyxHQUFBLENBQVksWUFBWSxnQkFBZ0IsRUFDM0MsRUFDQVQsRUFBQ1UsR0FBQSxDQUNFLGdCQUFPLEtBQUtLLEVBQU0sT0FBTyxFQUFFLElBQUs2RSxHQUMvQjVGLEVBQUNXLEVBQUEsQ0FBd0IsTUFBT2lGLEVBQzdCLFNBQUFBLEdBRGNBLENBRWpCLENBQ0QsRUFDSCxHQUNGLEVBRUEzRixFQUFDTSxHQUFBLENBQU8sTUFBT3VELEVBQU8sU0FBVSxjQUFnQjNELEdBQVU2RSxFQUFxQjdFLENBQXVCLEVBQ3BHLFVBQUFILEVBQUNRLEdBQUEsQ0FBYyxVQUFVLDRCQUN2QixTQUFBUixFQUFDUyxHQUFBLENBQVksWUFBWSxXQUFXLEVBQ3RDLEVBQ0FSLEVBQUNTLEdBQUEsQ0FDQyxVQUFBVixFQUFDVyxFQUFBLENBQVcsTUFBTSxJQUFJLGFBQUMsRUFDdkJYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLEtBQUssY0FBRSxFQUN6QlgsRUFBQ1csRUFBQSxDQUFXLE1BQU0sSUFBSSxhQUFJLEVBQzFCWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxLQUFLLGNBQUssRUFDNUJYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLElBQUksYUFBSSxFQUMxQlgsRUFBQ1csRUFBQSxDQUFXLE1BQU0sS0FBSyxjQUFLLEVBQzVCWCxFQUFDVyxFQUFBLENBQVcsTUFBTSxLQUFLLGNBQUUsRUFDekJYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLFNBQVMsa0JBQU0sRUFDakNYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLE9BQU8sZ0JBQUksRUFDN0JYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLFdBQVcsb0JBQVEsRUFDckNYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLFFBQVEsaUJBQUssRUFDL0JYLEVBQUNXLEVBQUEsQ0FBVyxNQUFNLFlBQVkscUJBQVMsR0FDekMsR0FDRixFQUVBWCxFQUFDNkYsR0FBQSxDQUNDLE1BQU9QLEVBQ1AsU0FBV0osR0FBTSxDQUNmSyxFQUFlTCxFQUFFLE9BQU8sS0FBSyxFQUM3QkQsRUFBa0JDLENBQUMsQ0FDckIsRUFDQSxZQUFZLFFBQ1osVUFBVSw0QkFDWixHQUNGLEdBQ0YsRUFFQWxGLEVBQUMsT0FBSSxVQUFVLG1DQUNiLFNBQUFBLEVBQUM4RixFQUFBLENBQU8sUUFBUSxRQUFRLEtBQUssS0FBSyxRQUFTOUIsRUFDekMsU0FBQWhFLEVBQUMrRixHQUFBLENBQUUsS0FBTSxHQUFJLEVBQ2YsRUFDRixHQUNGLENBRUosRUFHTXhFLEdBQXVCLENBQUMsQ0FDNUIsTUFBQXlFLEVBQ0EsU0FBQWpDLEVBQ0EsU0FBQUMsRUFDQSxnQkFBQWMsRUFDQSxPQUFBbUIsRUFBUyxHQUNULE1BQUFsRixFQUNBLG9CQUFBbUQsRUFDQSxxQkFBQWhELEVBQ0Esd0JBQUFpRCxFQUNBLDRCQUFBQyxDQUNGLElBV00sQ0FDSixHQUFNLENBQUM4QixFQUFZQyxDQUFhLEVBQUlYLEdBQVMsRUFBSSxFQUMzQyxDQUFDM0QsRUFBY3VFLENBQWUsRUFBSVosR0FBa0MsSUFBSSxFQUV4RWEsRUFBa0IsSUFBTSxDQUM1QixJQUFNQyxFQUEwQixDQUM5QixHQUFJQyxHQUFNLFNBQVMsRUFDbkIsS0FBTSxlQUNOLE9BQVEsT0FBTyxLQUFLeEYsRUFBTSxPQUFPLEVBQUUsQ0FBQyxFQUNwQyxTQUFVLElBQ1YsTUFBTyxPQUNQLE1BQU8sS0FDVCxFQUVBZ0QsRUFBUyxDQUFFLEdBQUdpQyxFQUFPLFFBQVMsQ0FBQyxHQUFHQSxFQUFNLFFBQVNNLENBQVMsQ0FBRSxDQUFDLENBQy9ELEVBRU1FLEVBQWlCLElBQU0sQ0FDM0IsSUFBTUMsRUFBd0IsQ0FDNUIsR0FBSUYsR0FBTSxTQUFTLEVBQ25CLEtBQU0sY0FDTixRQUFTLENBQUMsRUFDVixNQUFPLEtBQ1QsRUFFQXhDLEVBQVMsQ0FBRSxHQUFHaUMsRUFBTyxRQUFTLENBQUMsR0FBR0EsRUFBTSxRQUFTUyxDQUFRLENBQUUsQ0FBQyxDQUM5RCxFQUVNQyxFQUFvQixDQUFDeEQsRUFBZXlELElBQXFELENBQzdGLElBQU1DLEVBQWEsQ0FBQyxHQUFHWixFQUFNLE9BQU8sRUFDcENZLEVBQVcxRCxDQUFLLEVBQUl5RCxFQUNwQjVDLEVBQVMsQ0FBRSxHQUFHaUMsRUFBTyxRQUFTWSxDQUFXLENBQUMsQ0FDNUMsRUFFTUMsRUFBdUIzRCxHQUFrQixDQUM3QyxJQUFNMEQsRUFBYSxDQUFDLEdBQUdaLEVBQU0sT0FBTyxFQUNwQ1ksRUFBVyxPQUFPMUQsRUFBTyxDQUFDLEVBQzFCYSxFQUFTLENBQUUsR0FBR2lDLEVBQU8sUUFBU1ksQ0FBVyxDQUFDLENBQzVDLEVBRU1FLEVBQW1CcEUsR0FBMEIsQ0FDakQwRCxFQUFnQjFELEVBQU0sT0FBTyxFQUFFLENBQ2pDLEVBRU1xRSxFQUFzQixJQUFNLENBQ2hDWCxFQUFnQixJQUFJLENBQ3RCLEVBRU1ZLEVBQXFCLENBQUNuRSxFQUFrQkMsSUFBcUIsQ0FDakUsR0FBSUQsSUFBYUMsRUFBVSxPQUMzQixJQUFNbUUsRUFBbUJDLEdBQVVsQixFQUFNLFFBQVNuRCxFQUFVQyxDQUFRLEVBQ3BFaUIsRUFBUyxDQUFFLEdBQUdpQyxFQUFPLFFBQVNpQixDQUFpQixDQUFDLENBQ2xELEVBRU1FLEdBQXFCLElBQ3BCakIsRUFDRCxDQUFDRixFQUFNLFNBQVdBLEVBQU0sUUFBUSxTQUFXLEVBRTNDaEcsRUFBQyxPQUFJLFVBQVUsbURBQW1ELCtEQUVsRSxFQUtGQSxFQUFDMEYsR0FBTyxJQUFQLENBQVcsV0FBWSxDQUFFLE9BQVEsQ0FBRSxTQUFVLEdBQUssQ0FBRSxFQUNuRCxTQUFBMUYsRUFBQyxPQUFJLFVBQVdvSCxFQUFHLDJDQUE0Q25CLEVBQVMsR0FBSyxTQUFTLEVBQ3BGLFNBQUFqRyxFQUFDd0IsR0FBQSxDQUNDLE1BQU93RSxFQUFNLFFBQ2IsY0FBZUEsRUFBTSxHQUNyQixNQUFPakYsRUFDUCxhQUFjMkYsRUFDZCxhQUFjRyxFQUNkLGVBQWdCRyxFQUNoQixhQUFjbkYsRUFDZCxZQUFhaUYsRUFDYixnQkFBaUJDLEVBQ25CLEVBQ0YsRUFDRixFQXhCc0IsS0E0QjFCLE9BQ0UvRyxFQUFDMEYsR0FBTyxJQUFQLENBQVcsVUFBVSxZQUFZLFdBQVksQ0FBRSxPQUFRLENBQUUsU0FBVSxHQUFLLENBQUUsRUFDekUsU0FBQXpGLEVBQUMsT0FBSSxVQUFXbUgsRUFBRyxnQ0FBaUNsQixFQUFhLFdBQWEsRUFBRSxFQUM5RSxVQUFBakcsRUFBQyxPQUFJLFVBQVUsdURBQ2IsVUFBQUEsRUFBQyxPQUFJLFVBQVUsbUNBQ1osV0FBQ2dHLEdBRUFqRyxFQUFDLE9BQUssR0FBRzhFLEVBQWlCLFVBQVUsaUJBQWlCLFFBQVMsSUFBTXFCLEVBQWMsQ0FBQ0QsQ0FBVSxFQUMxRixTQUFBQSxFQUFhbEcsRUFBQ3FILEdBQUEsQ0FBWSxLQUFNLEdBQUksRUFBS3JILEVBQUNzSCxHQUFBLENBQWEsS0FBTSxHQUFJLEVBQ3BFLEVBR0RwRCxHQUF1QkMsR0FBMkIsQ0FBQzhCLEdBQ2xEakcsRUFBQyxPQUFJLFVBQVUsMEJBQ2IsU0FBQUEsRUFBQ0UsR0FBQSxDQUNDLE1BQU9nQixFQUNQLGNBQWVpRCxFQUNmLFNBQVVDLEVBQ1osRUFDRixFQUdGbkUsRUFBQzZGLEVBQUEsQ0FDQyxRQUFRLFVBQ1IsS0FBSyxLQUNMLFFBQVNPLEVBQ1QsVUFBV2UsRUFBRyxvRUFBb0UsRUFDbkYsdUJBRUVwQixFQUFNLFFBQVEsT0FBUyxHQUN0QmhHLEVBQUN1SCxHQUFBLENBQU0sVUFBVSxvQkFDZixTQUFBdkgsRUFBQ3dILEdBQUEsQ0FBYyxXQUFZLENBQUUsT0FBUSxDQUFFLFNBQVUsR0FBSyxDQUFFLEVBQUksU0FBQXhCLEVBQU0sUUFBUSxPQUFPLEVBQ25GLEdBRUosRUFFQWhHLEVBQUM4RixFQUFBLENBQU8sUUFBUSxVQUFVLEtBQUssS0FBSyxRQUFTVSxFQUFnQixVQUFVLG1DQUFtQyxxQkFFMUcsR0FDRixFQUNBdkcsRUFBQyxPQUFJLFVBQVUsbUNBQ1osVUFBQWdHLEdBQ0NoRyxFQUFDd0gsR0FBQSxDQUNDLFVBQUF6SCxFQUFDMEgsR0FBQSxDQUFvQixRQUFPLEdBQzFCLFNBQUExSCxFQUFDOEYsRUFBQSxDQUFPLFFBQVEsUUFBUSxLQUFLLEtBQzNCLFNBQUE5RixFQUFDMkgsR0FBQSxDQUFXLFVBQVUsWUFBWSxFQUNwQyxFQUNGLEVBQ0EzSCxFQUFDNEgsR0FBQSxDQUFvQixNQUFNLFNBQVMsVUFBVSxZQUMzQyxTQUFBNUIsRUFBTSxRQUFRLFNBQVcsRUFDeEJoRyxFQUFDLE9BQUksVUFBVSxvRUFBb0Usc0VBRW5GLEVBRUFBLEVBQUMsT0FBSSxVQUFVLG1FQUNiLFNBQUFBLEVBQUM2SCxHQUFBLENBQWdCLE9BQVE3QixFQUFPLEVBQ2xDLEVBRUosR0FDRixFQUVELENBQUNDLEdBQ0FqRyxFQUFDOEYsRUFBQSxDQUFPLFFBQVEsUUFBUSxLQUFLLEtBQUssUUFBUzlCLEVBQ3pDLFNBQUFoRSxFQUFDK0YsR0FBQSxDQUFFLEtBQU0sR0FBSSxFQUNmLEdBRUosR0FDRixFQUNBL0YsRUFBQyxPQUFJLFVBQVdvSCxFQUFHbkIsRUFBUyxHQUFLLFNBQVMsRUFBSSxTQUFBa0IsR0FBbUIsRUFBRSxHQUNyRSxFQUNGLENBRUosRUFHTVUsR0FBa0IsQ0FBQyxDQUFFLE9BQUEvRCxDQUFPLElBQTBDLENBQzFFLElBQUlnRSxFQUFpQixFQUVyQixHQUFJaEUsRUFBTyxRQUFRLFNBQVcsRUFBRyxNQUFPLE1BRXhDLElBQU1rQyxFQUFRbEMsRUFBTyxRQUFRLElBQUksQ0FBQ2lFLEVBQUdDLElBQU0sQ0FDekMsSUFBSUMsRUFDRUMsRUFBU3BFLEVBQU8sUUFBUSxPQUFTLElBQU1rRSxFQWE3QyxHQVhJRixJQUFtQixLQUNyQkEsRUFBaUIsR0FHZkMsRUFBRSxRQUFVLE9BQVMsQ0FBQ0csSUFDeEJKLEdBQWtCLEdBRWhCQSxJQUFtQkksR0FBVUgsRUFBRSxRQUFVLFFBQzNDRCxFQUFpQixJQUdmQyxFQUFFLE9BQVMsZUFBZ0IsQ0FDN0IsR0FBTSxDQUFFLE9BQUFuQyxFQUFRLFNBQUF1QyxDQUFTLEVBQUlKLEVBRTdCRSxFQUNFaEksRUFBQUYsR0FBQSxDQUNFLFVBQUFFLEVBQUMsUUFBSyxjQUFFMkYsRUFBTyxLQUFDLEVBQ2hCM0YsRUFBQyxRQUFLLGNBQUVrSSxFQUFTLEtBQUMsRUFDbEJuSSxFQUFDLFFBQUssZUFBRyxHQUNYLENBRUosTUFDRWlJLEVBQVNqSSxFQUFDNkgsR0FBQSxDQUFnQixPQUFRRSxFQUFHLEVBR3ZDLE9BQ0U5SCxFQUFDRixHQUFBLENBQ0UsVUFBQStILElBQW1CLEVBQUk5SCxFQUFDLFFBQUssVUFBVSxtQkFBbUIsYUFBQyxFQUFVLEdBQ3JFaUksRUFDQUgsSUFBbUIsR0FBSzlILEVBQUMsUUFBSyxVQUFVLG1CQUFtQixhQUFDLEVBQVUsR0FDdEUsQ0FBQ2tJLEdBQVVqSSxFQUFDLFFBQUssVUFBVSxpREFBaUQsY0FBRThILEVBQUUsTUFBTSxLQUFDLElBSjNFQSxFQUFFLEVBS2pCLENBRUosQ0FBQyxFQUVELE9BQU8vSCxFQUFDLFFBQU0sU0FBQWdHLEVBQU0sQ0FDdEIsRUFHTyxTQUFTb0MsR0FBVyxDQUN6QixPQUFBdEUsRUFDQSxVQUFBdUUsRUFDQSxNQUFBdEgsQ0FDRixFQUlHLENBQ0QsT0FDRWYsRUFBQUQsR0FBQSxDQUNFLFNBQUFDLEVBQUN1QixHQUFBLENBQ0MsTUFBT3VDLEVBQ1AsU0FBVXVFLEVBQ1YsU0FBVSxJQUFNLENBQUMsRUFDakIsT0FBUSxHQUNSLE1BQU90SCxFQUNULEVBQ0YsQ0FFSixDTS9vQkEsT0FBUyxjQUFBdUgsR0FBK0IsZUFBQUMsR0FBYSxhQUFBQyxHQUFXLGNBQUFDLE9BQWtCLGdCQUNsRixPQUFTLGFBQUFDLEdBQVcsaUNBQUFDLEdBQStCLG1CQUFBQyxHQUFpQixlQUFBQyxPQUFtQixvQkFDdkYsT0FBUyxPQUFBQyxPQUFXLHFCQUVwQixPQUdFLG1CQUFBQyxHQU1BLGlCQUFBQyxPQUNLLGlTQ1pQLElBQU1DLEdBQVdDLEdBQXlCLENBQ3hDLEdBQUksQ0FDRixJQUFNQyxFQUFZQyxhQUFhSCxRQUFRQyxDQUFHLEVBQzFDLE9BQUksT0FBT0MsR0FBYyxTQUNoQkUsS0FBS0MsTUFBTUgsQ0FBUyxFQUU3QixNQUNGLE1BQVEsQ0FDTixNQUNGLENBQ0YsRUFFZSxTQUFTSSxHQUN0QkwsRUFDQU0sRUFDNEQsQ0FDNUQsR0FBTSxDQUFDQyxFQUFPQyxDQUFRLEVBQUlDLEVBQU1DLFNBQVEsRUFFeENELEVBQU1FLFVBQVUsSUFBTSxDQUNwQixJQUFNQyxFQUFlYixHQUFRQyxDQUFHLEVBRzlCUSxFQURFLE9BQU9JLEVBQWlCLEtBQWVBLElBQWlCLEtBRXhELE9BQU9OLEdBQWlCLFdBQWFBLEVBQVksRUFBS0EsRUFHL0NNLENBRlQsQ0FJSixFQUFHLENBQUNOLEVBQWNOLENBQUcsQ0FBQyxFQUV0QixJQUFNYSxFQUFTSixFQUFNSyxZQUNsQkMsR0FBaUIsQ0FDaEJQLEVBQVNRLEdBQU8sQ0FDZCxJQUFJQyxFQUFTRixFQUVULE9BQU9BLEdBQVcsYUFDcEJFLEVBQVNGLEVBQVFDLENBQUcsR0FFdEIsR0FBSSxDQUNGZCxhQUFhZ0IsUUFBUWxCLEVBQUtHLEtBQUtnQixVQUFVRixDQUFNLENBQUMsT0FDMUMsQ0FBQSxDQUVSLE9BQU9BLENBQ1QsQ0FBQyxDQUNILEVBQ0EsQ0FBQ2pCLENBQUcsQ0FDTixFQUVBLE1BQU8sQ0FBQ08sRUFBT00sQ0FBTSxDQUN2QixDQ2pETyxJQUFNTyxHQUFlLENBQzFCQyxXQUFZLFVBQ1pDLGNBQWUsVUFDZkMsV0FBWSxRQUNaQyxLQUFNLFVBQ05DLFFBQVMsVUFDVEMscUJBQXNCLE9BQ3RCQyxlQUFnQixPQUNoQkMsUUFBUyxVQUNUQyxPQUFRLFVBQ1JDLE9BQVEsVUFDUkMsUUFBUyxTQUNYLEVBUU1DLEdBQWV2QixFQUFNd0IsY0FBY2IsRUFBWSxFQUU5QyxTQUFTYyxHQUFhQyxFQUFvQyxDQUFBLEdBQW5DLENBQUVDLE1BQUFBLEVBQU8sR0FBR0MsQ0FBb0IsRUFBQ0YsRUFDN0QsT0FBTzFCLEVBQUE2QixjQUFDTixHQUFhTyxTQUFRQyxHQUFBLENBQUNqQyxNQUFPNkIsR0FBV0MsQ0FBSSxDQUFHLENBQ3pELENBRU8sU0FBU0ksSUFBVyxDQUN6QixPQUFPaEMsRUFBTWlDLFdBQVdWLEVBQVksQ0FDdEMsQ0M1QmUsU0FBU1csR0FBY0MsRUFBb0MsQ0FFeEUsR0FBTSxDQUFDQyxFQUFTQyxDQUFVLEVBQUlyQyxFQUFNQyxTQUFTLElBQU0sQ0FDakQsR0FBSSxPQUFPcUMsT0FBVyxJQUNwQixPQUFPQSxPQUFPQyxZQUFjRCxPQUFPQyxXQUFXSixDQUFLLEVBQUVLLE9BRXpELENBQUMsRUFHRHhDLE9BQUFBLEVBQU1FLFVBQVUsSUFBTSxDQUNwQixHQUFJLE9BQU9vQyxPQUFXLElBQWEsQ0FDakMsR0FBSSxDQUFDQSxPQUFPQyxXQUNWLE9BSUYsSUFBTUUsRUFBVUgsT0FBT0MsV0FBV0osQ0FBSyxFQUdqQ08sRUFBV2hCLEdBQUEsQ0FBQSxHQUFDLENBQUVjLFFBQUFBLENBQThCLEVBQUNkLEVBQUEsT0FDakRXLEVBQVdHLENBQU8sQ0FBQyxFQUdyQkMsT0FBQUEsRUFBUUUsWUFBWUQsQ0FBUSxFQUVyQixJQUFNLENBRVhELEVBQVFHLGVBQWVGLENBQVEsRUFFbkMsR0FDQyxDQUFDTixFQUFTRCxFQUFPRSxDQUFVLENBQUMsRUFFeEJELENBQ1QsQ0M5QkEsSUFBTVMsR0FBVyxPQUFPUCxPQUFXLElBNkM1QixTQUFTUSxHQUNkQyxFQUNBQyxFQUNBQyxFQUNBLENBQUEsT0FEQUEsSUFBK0IsU0FBL0JBLEVBQWtDLENBQUEsR0FFM0JqRCxFQUFNa0QsV0FDWCxDQUFBeEIsRUFBcUJ5QixJQUFRLENBQUEsR0FBNUIsQ0FBRUMsTUFBQUEsRUFBTyxHQUFHeEIsQ0FBSyxFQUFDRixFQUNYQyxFQUFRSyxHQUFRLEVBRWhCcUIsRUFBY0MsT0FBT0MsUUFBUU4sQ0FBTyxFQUFFTyxPQUMxQyxDQUFDQyxFQUFPQyxJQUFtQixDQUFBLEdBQWpCLENBQUNuRSxFQUFLTyxDQUFLLEVBQUM0RCxFQUVwQixPQUFPeEIsR0FBYzNDLENBQUcsRUFDcEIsQ0FDRSxHQUFHa0UsRUFDSCxHQUFJLE9BQU8zRCxHQUFVLFdBQWFBLEVBQU04QixFQUFNRCxDQUFLLEVBQUk3QixDQUN6RCxFQUNBMkQsR0FFTixDQUFBLENBQ0YsRUFFQSxPQUFPekQsRUFBTTZCLGNBQWNrQixFQUFNLENBQy9CLEdBQUduQixFQUNId0IsTUFBTyxDQUNMLEdBQUksT0FBT0osR0FBYyxXQUNyQkEsRUFBVXBCLEVBQU1ELENBQUssRUFDckJxQixFQUNKLEdBQUdJLEVBQ0gsR0FBR0MsR0FFTEYsSUFBQUEsQ0FDRixDQUFDLENBQ0gsQ0FDRixDQUNGLENBRU8sU0FBU1EsSUFBZSxDQUM3QixJQUFNQyxFQUFhNUQsRUFBTTZELE9BQU8sRUFBSyxFQUMvQkMsRUFBWTlELEVBQU1LLFlBQVksSUFBTXVELEVBQVdILFFBQVMsQ0FBQSxDQUFFLEVBRWhFekQsT0FBQUEsRUFBTTZDLEdBQVcsWUFBYyxpQkFBaUIsRUFBRSxLQUNoRGUsRUFBV0gsUUFBVSxHQUNkLElBQU0sQ0FDWEcsRUFBV0gsUUFBVSxLQUV0QixDQUFBLENBQUUsRUFFRUssQ0FDVCxDQ2pHTyxJQUFNQyxHQUFRakIsR0FDbkIsTUFDQSxDQUFDa0IsRUFBUXJDLEtBQVcsQ0FDbEJzQyxTQUFVLDJCQUNWQyxXQUFZLGFBQ1pDLFFBQVMsT0FDVEMsZ0JBQWlCekMsRUFBTWYsV0FDdkJ5RCxNQUFPMUMsRUFBTWIsVUFDZixHQUNBLENBQ0UscUJBQXNCLENBQ3BCd0QsY0FBZSxVQUVqQixxQkFBc0IsQ0FDcEJMLFNBQVUsTUFFWixDQUNGLENBQ0YsRUFFb0JuQixHQUNsQixNQUNBLEtBQU8sQ0FDTHlCLEtBQU0sWUFDTkosUUFBUyxPQUNURyxjQUFlLFNBQ2ZFLFNBQVUsT0FDVkMsT0FBUSxNQUNWLEdBQ0EsQ0FDRSxxQkFBc0JDLENBQUNWLEVBQVFyQyxLQUFXLENBQ3hDZ0QsVUFBVyxhQUFhaEQsRUFBTVosSUFBSSxJQUV0QyxDQUNGLEVBRU8sSUFBTTZELEdBQVM5QixHQUFPLFNBQVUsQ0FBQytCLEVBQU9sRCxLQUFXLENBQ3hEbUQsV0FBWSxPQUNaYixTQUFVLE9BQ1ZjLFdBQVksT0FDWm5FLFdBQVllLEVBQU1aLEtBQ2xCaUUsT0FBUSxJQUNSQyxhQUFjLE9BQ2RaLE1BQU8sUUFDUGEsUUFBUyxPQUNUQyxRQUFTTixFQUFNTyxTQUFXLEtBQU9DLE9BQ2pDQyxPQUFRLFNBQ1YsRUFBRSxFQWdCV3hDLEdBQU8sT0FBUSxDQUMxQm1CLFNBQVUsTUFDWixDQUFDLEVBRWFuQixHQUFPLFFBQVMsQ0FBQ2tCLEVBQVFyQyxLQUFXLENBQ2hEeUMsZ0JBQWlCekMsRUFBTVYscUJBQ3ZCK0QsT0FBUSxFQUNSQyxhQUFjLE9BQ2RaLE1BQU8xQyxFQUFNVCxlQUNiK0MsU0FBVSxPQUNWc0IsV0FBWSxNQUNaTCxRQUFTLFdBQ1gsRUFBRSxFQUVhcEMsR0FDYixTQUNBLENBQUNrQixFQUFRckMsS0FBVyxDQUNsQndDLFFBQVMsZUFDVEYsU0FBVSxPQUNWQyxXQUFZLGFBQ1phLFdBQVksU0FDWlEsV0FBWSxNQUNaTCxRQUFTLHVCQUNUVCxPQUFRLE9BQ1JPLE9BQVEsRUFDUkMsYUFBYyxPQUNkSCxXQUFZLE9BQ1pVLGlCQUFrQixPQUNsQnBCLGdCQUFpQnpDLEVBQU1WLHFCQUN2QndFLGdCQUFpQiwrSkFDakJDLGlCQUFrQixZQUNsQkMsbUJBQW9CLHFCQUNwQkMsZUFBZ0IsbUJBQ2hCdkIsTUFBTzFDLEVBQU1ULGNBQ2YsR0FDQSxDQUNFLHFCQUFzQixDQUNwQmlELFFBQVMsTUFDWCxDQUNGLENBQ0YsRUNuR0EsSUFBTTBCLEdBQVEvQyxHQUFPLE1BQU8sQ0FDMUJvQixXQUFZLG1CQUNaRCxTQUFVLFNBQ1ZzQixXQUFZLE1BQ1pPLFFBQVMsT0FDVEMsVUFBVyxZQUNiLENBQUMsRUFFS0MsR0FBUWxELEdBQU8sT0FBUSxDQUMzQndDLE9BQVEsVUFDUmpCLE1BQU8sT0FDVCxDQUFDLEVBRUs0QixHQUFRbkQsR0FBTyxPQUFRLENBQUMrQixFQUFPbEQsS0FBVyxDQUM5QzBDLE1BQU8xQyxFQUFNUCxNQUNmLEVBQUUsRUFFSThFLEdBQWFwRCxHQUFPLE1BQU8sQ0FDL0JxRCxXQUFZLFFBQ1pDLFlBQWEsT0FDYkMsV0FBWSwyQkFDZCxDQUFDLEVBRUtDLEdBQU94RCxHQUFPLE9BQVEsQ0FDMUJ1QixNQUFPLE9BQ1BKLFNBQVUsT0FDWixDQUFDLEVBRUtzQyxHQUFXN0UsR0FBQSxDQUFBLEdBQUMsQ0FBRThFLFNBQUFBLEVBQVVwRCxNQUFBQSxFQUFRLENBQUEsRUFBSSxHQUFHeEIsQ0FBSyxFQUFDRixFQUFBLE9BQ2pEMUIsRUFBQTZCLGNBQUEsT0FBQSxDQUNFdUIsTUFBTyxDQUNMZSxRQUFTLGVBQ1RzQyxXQUFZLGVBQ1pDLFVBQVcsVUFBVUYsRUFBVyxHQUFLLENBQUMsUUFBUXBELEVBQU1zRCxXQUFhLEVBQUUsR0FDbkUsR0FBR3RELENBQ0wsQ0FBRSxFQUNILFFBRUssQ0FBQyxFQUdIdUQsR0FBa0JqRCxHQWFsQixDQUFBLEdBYm1CLENBQ3ZCa0QsWUFBQUEsRUFDQUMsTUFBQUEsRUFDQS9HLE1BQUFBLEVBRUFnSCxXQUFBQSxFQUNBQyxjQUFBQSxFQUNBaEUsS0FBQUEsRUFFQXlELFNBQUFBLEVBQ0FRLE9BQUFBLEVBQ0FDLFNBQUFBLEVBQ0FDLFNBQUFBLENBQ0YsRUFBQ3hELEVBQ08sQ0FBQ3lELEVBQWVDLENBQWdCLEVBQUlwSCxFQUFNQyxTQUFTb0YsTUFBUyxFQUM1RCxDQUFDZ0MsRUFBZUMsQ0FBZ0IsRUFBSXRILEVBQU1DLFNBQVMsQ0FBQSxDQUFFLEVBRXJEc0gsRUFBdUJBLElBQU0sQ0FDakNILEVBQWlCdEgsRUFBSyxDQUFFLEdBRzFCLE9BQ0VFLEVBQUE2QixjQUFDZ0UsR0FBSyxDQUFDdEcsSUFBS3NILENBQU0sRUFDZkUsR0FBQUEsTUFBQUEsRUFBZVMsT0FDZHhILEVBQUE2QixjQUFBN0IsRUFBQXlILFNBQUEsS0FDRXpILEVBQUE2QixjQUFDbUUsR0FBSyxDQUFDMEIsUUFBU0EsSUFBTVYsRUFBTSxDQUFHLEVBQzdCaEgsRUFBQTZCLGNBQUMwRSxHQUFRLENBQUNDLFNBQVVBLENBQVMsQ0FBRSxFQUFFLElBQUNLLEVBQU8sSUFDekM3RyxFQUFBNkIsY0FBQ3lFLEdBQUksS0FDRnFCLE9BQU81RSxDQUFJLEVBQUU2RSxZQUFXLElBQU8sV0FBYSxjQUFnQixHQUM1RGQsRUFBV1UsT0FBTyxJQUFFVixFQUFXVSxPQUFTLEVBQUksUUFBVSxNQUNuRCxDQUNELEVBQ05oQixFQUNDTyxFQUFjUyxTQUFXLEVBQ3ZCeEgsRUFBQTZCLGNBQUNxRSxHQUFVLEtBQ1JZLEVBQVdlLElBQUlDLEdBQVNsQixFQUFZa0IsQ0FBSyxDQUFDLENBQ2pDLEVBRVo5SCxFQUFBNkIsY0FBQ3FFLEdBQ0VhLEtBQUFBLEVBQWNjLElBQUksQ0FBQ3RFLEVBQVN3RSxJQUMzQi9ILEVBQUE2QixjQUFBLE1BQUEsQ0FBS3RDLElBQUt3SSxHQUNSL0gsRUFBQTZCLGNBQUNnRSxHQUFLLEtBQ0o3RixFQUFBNkIsY0FBQ21FLEdBQUssQ0FDSjBCLFFBQVNBLElBQ1BKLEVBQWlCL0csR0FDZkEsRUFBSXlILFNBQVNELENBQUssRUFDZHhILEVBQUkwSCxPQUFPQyxHQUFLQSxJQUFNSCxDQUFLLEVBQzNCLENBQUMsR0FBR3hILEVBQUt3SCxDQUFLLENBQ3BCLENBQ0QsRUFFRC9ILEVBQUE2QixjQUFDMEUsR0FBUSxDQUFDQyxTQUFVQSxDQUFTLENBQUUsRUFBQyxLQUFHdUIsRUFBUWQsRUFBUyxPQUFLLElBQ3hEYyxFQUFRZCxFQUFXQSxFQUFXLEVBQUUsR0FDNUIsRUFDTkksRUFBY1csU0FBU0QsQ0FBSyxFQUMzQi9ILEVBQUE2QixjQUFDcUUsR0FDRTNDLEtBQUFBLEVBQVFzRSxJQUFJQyxHQUFTbEIsRUFBWWtCLENBQUssQ0FBQyxDQUM5QixFQUNWLElBQ0MsQ0FDSixDQUNOLENBQ1MsRUFFWixJQUNKLEVBQ0EvRSxJQUFTLFdBQ1gvQyxFQUFBNkIsY0FBQTdCLEVBQUF5SCxTQUNFekgsS0FBQUEsRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1BqQixTQUFVQSxFQUNWTCxNQUNFN0csRUFBQTZCLGNBQUEsU0FBQSxDQUFRNkYsUUFBU0gsR0FDZnZILEVBQUE2QixjQUFDbUUsR0FBT2EsS0FBQUEsQ0FBYSxFQUFDLGFBQUksR0FDcEIsRUFFVi9HLE1BQU9xSCxFQUNQaUIsZ0JBQWlCLENBQUEsRUFDbEIsQ0FDRCxFQUVGcEksRUFBQTZCLGNBQUE3QixFQUFBeUgsU0FBQSxLQUNFekgsRUFBQTZCLGNBQUNtRSxHQUFLLEtBQUVhLEVBQU0sR0FBUSxFQUFFLElBQ3hCN0csRUFBQTZCLGNBQUNvRSxHQUFLLEtBQ0h2RyxLQUFLZ0IsVUFBVVosRUFBT3dELE9BQU8rRSxvQkFBb0IvRSxPQUFPeEQsQ0FBSyxDQUFDLENBQUMsQ0FDM0QsQ0FDUCxDQUVDLENBRVgsRUFFZSxTQUFTcUksR0FBUUcsRUFPN0IsQ0FBQSxHQVA4QixDQUMvQnhJLE1BQUFBLEVBQ0FzSSxnQkFBQUEsRUFDQWxCLFNBQUFBLEVBQVdQLEdBQ1hNLFNBQUFBLEVBQVcsSUFDWHNCLE1BQUFBLEVBQVEsRUFDUixHQUFHM0csQ0FDTCxFQUFDMEcsRUFDTyxDQUFDOUIsRUFBVWdDLENBQVcsRUFBSXhJLEVBQU1DLFNBQVNtSSxDQUFlLEVBRXhEcEIsRUFBU3lCLEdBQU8sQ0FDcEJELEVBQVlqSSxHQUFRLE9BQU9rSSxFQUFRLElBQWNBLEVBQU0sQ0FBQ2xJLENBQUksR0FHeERtSSxFQUFPLENBQUEsRUFFVDNGLEVBQU8sT0FBT2pELEVBQ2RnSCxFQUNFQyxFQUFnQixDQUFBLEVBRWhCNEIsRUFBZUMsR0FBTyxDQUMxQixJQUFNQyxFQUFVSCxFQUFLSSxPQUFPRixFQUFJL0IsS0FBSyxFQUMvQmtDLEVBQ0pYLElBQW9CLEdBQ2hCLENBQUUsQ0FBQ1EsRUFBSS9CLEtBQUssRUFBRyxJQUNmdUIsSUFBa0JRLEVBQUkvQixLQUFLLEVBQ2pDLE1BQU8sQ0FDTCxHQUFHK0IsRUFDSEksUUFBU0osRUFDVEYsS0FBTUcsRUFDTk4sTUFBT0EsRUFBUSxFQUNmSCxnQkFBaUJXLElBcUNyQixHQWpDSUUsTUFBTUMsUUFBUXBKLENBQUssR0FDckJpRCxFQUFPLFFBQ1ArRCxFQUFhaEgsRUFBTStILElBQUksQ0FBQ0ssRUFBR2lCLElBQ3pCUixFQUFhLENBQ1g5QixNQUFPc0MsRUFDUHJKLE1BQU9vSSxDQUNULENBQUMsQ0FDSCxHQUVBcEksSUFBVSxNQUNWLE9BQU9BLEdBQVUsVUFDakIsT0FBT0EsRUFBTXNKLE9BQU9DLFFBQVEsR0FBTSxZQUVsQ3RHLEVBQU8sV0FDUCtELEVBQWFtQyxNQUFNSyxLQUFLeEosRUFBTyxDQUFDeUosRUFBS0osSUFDbkNSLEVBQWEsQ0FDWDlCLE1BQU9zQyxFQUNQckosTUFBT3lKLENBQ1QsQ0FBQyxDQUNILEdBQ1MsT0FBT3pKLEdBQVUsV0FDMUJpRCxFQUFPLFdBQ0UsT0FBT2pELEdBQVUsVUFBWUEsSUFBVSxPQUNoRGlELEVBQU8sU0FFUCtELEVBQWF4RCxPQUFPQyxRQUFRekQsQ0FBSyxFQUFFK0gsSUFBSTJCLEdBQUEsQ0FBQSxHQUFDLENBQUMzQyxFQUFPL0csQ0FBSyxFQUFDMEosRUFBQSxPQUNwRGIsRUFBYSxDQUNYOUIsTUFBQUEsRUFDQS9HLE1BQUFBLENBQ0YsQ0FBQyxDQUFDLENBQ0osR0FHRWdILEVBQVksQ0FDZCxJQUFJcUMsRUFBSSxFQUVSLEtBQU9BLEVBQUlyQyxFQUFXVSxRQUNwQlQsRUFBYzBDLEtBQUszQyxFQUFXNEMsTUFBTVAsRUFBR0EsRUFBSWxDLENBQVEsQ0FBQyxFQUNwRGtDLEVBQUlBLEVBQUlsQyxDQUVaLENBRUEsT0FBT0MsRUFBUyxDQUNkTixZQUFha0IsR0FDWDlILEVBQUE2QixjQUFDc0csR0FBUXBHLEdBQUEsQ0FBQ3hDLElBQUt1SSxFQUFNakIsTUFBT0ssU0FBVUEsQ0FBUyxFQUFLdEYsRUFBVWtHLENBQUssQ0FBRyxFQUV4RS9FLEtBQUFBLEVBQ0ErRCxXQUFBQSxFQUNBQyxjQUFBQSxFQUNBd0IsTUFBQUEsRUFDQXpJLE1BQUFBLEVBQ0E0SSxLQUFBQSxFQUNBbEMsU0FBQUEsRUFDQVEsT0FBQUEsRUFDQUMsU0FBQUEsRUFDQSxHQUFHckYsQ0FDTCxDQUFDLENBQ0gsQ0NwT2UsU0FBUytILEdBQUs5RSxFQUFZLENBQ3ZDLE9BQ0VoRCxpQkFBQSxNQUFBRSxHQUFBLENBQ0U2SCxNQUFNLE9BQ05uRixPQUFPLE9BQ1BvRixRQUFRLGNBQ1JDLFFBQVEsS0FBSyxFQUNUakYsQ0FBSyxFQUVUaEQsaUJBQUEsSUFBQSxDQUFHa0ksT0FBTyxPQUFPQyxZQUFZLElBQUlDLEtBQUssT0FBT0MsU0FBUyxXQUNwRHJJLGlCQUFBLElBQUEsQ0FBR3NJLEdBQUcsV0FBV3pELFVBQVUscUNBQ3pCN0UsaUJBQUEsSUFBQSxDQUFHc0ksR0FBRyxVQUFVekQsVUFBVSxtQ0FDeEI3RSxpQkFBQSxJQUFBLENBQUdzSSxHQUFHLFFBQVF6RCxVQUFVLGtDQUN0QjdFLGlCQUFBLE9BQUEsQ0FDRXFHLEVBQUUscTRFQUNGaUMsR0FBRyxPQUNIRixLQUFLLFVBQ0xDLFNBQVMsVUFDVHhELFVBQVUsaUZBQWlGLENBQ3RGLEVBQ1A3RSxpQkFBQSxPQUFBLENBQ0VxRyxFQUFFLGtnQ0FDRmlDLEdBQUcsWUFDSEYsS0FBSyxTQUFTLENBQ1QsRUFDUHBJLGlCQUFBLE9BQUEsQ0FDRXFHLEVBQUUsd3pHQUNGaUMsR0FBRyxpQkFDSEYsS0FBSyxTQUFTLENBQ1QsQ0FDTixDQUNGLENBQ0YsQ0FDRixDQUNBLENBRVQsQ0NtQ08sU0FBU0csR0FBa0IxSSxFQU1hLENBQUEsR0FOWixDQUNqQzJJLGNBQUFBLEVBQ0FDLE1BQUFBLEVBQ0FDLFdBQUFBLEVBQWEsQ0FBQSxFQUNiQyxrQkFBQUEsRUFBb0IsQ0FBQSxFQUNwQkMsaUJBQWtCQyxFQUFZLFFBQ2YsRUFBQ2hKLEVBQ1ZpSixFQUFVM0ssRUFBTTZELE9BQXVCLElBQUksRUFDM0MrRyxFQUFXNUssRUFBTTZELE9BQXVCLElBQUksRUFDNUMsQ0FBQ2dILEVBQVFDLENBQVMsRUFBSWxMLEdBQzFCLHlCQUNBeUssQ0FDRixFQUNNdkcsRUFBWUgsR0FBWSxFQUV4QixDQUFFUCxNQUFPMkgsRUFBYSxDQUFBLEVBQUksR0FBR0MsQ0FBZ0IsRUFBSVQsRUFFakQsQ0FDSm5ILE1BQU82SCxFQUFvQixDQUFBLEVBQzNCdkQsUUFBU3dELEVBQ1QsR0FBR0MsQ0FDTCxFQUFJWCxFQUdKLE9BQUsxRyxFQUFTLEVBR1o5RCxFQUFBNkIsY0FBQzZJLEVBQVMsQ0FBQ3ZILElBQUt3SCxFQUFTUyxVQUFVLG9CQUFvQixFQUNyRHBMLEVBQUE2QixjQUFDSixHQUFhLENBQUNFLE1BQU9BLEVBQU0sRUFDeEJrSixFQXdCQTdLLEVBQUE2QixjQUFDd0osR0FBdUJ0SixHQUFBLENBQ3RCb0IsSUFBS3lILENBQWdCLEVBQ2pCSSxFQUFlLENBQ25CVixNQUFPQSxFQUNQTyxPQUFRQSxFQUNSQyxVQUFXQSxFQUNYMUgsTUFBTyxDQUNMa0ksVUFBVyxPQUNYMUIsTUFBTyxPQUNQLEdBQUdtQixDQUNMLEVBQ0QsQ0FBQSxFQWxDRC9LLEVBQUE2QixjQUFBLFNBQUFFLEdBQUEsQ0FDRWdCLEtBQUssUUFBUSxFQUNUb0ksRUFBc0IsQ0FDMUIsYUFBVyw0QkFDWHpELFFBQVM2RCxHQUFLLENBQ1pULEVBQVUsRUFBSSxFQUNkSSxHQUFpQkEsRUFBY0ssQ0FBQyxHQUVsQ25JLE1BQU8sQ0FDTHhDLFdBQVksT0FDWm9FLE9BQVEsRUFDUkUsUUFBUyxFQUNUc0csT0FBUSxRQUNSckgsUUFBUyxjQUNURixTQUFVLFFBQ1ZxQixPQUFRLFVBQ1JzRSxNQUFPLGNBQ1AsR0FBR3FCLENBQ0wsQ0FBRSxDQUFBLEVBRUZqTCxFQUFBNkIsY0FBQzhILEdBQUksQ0FBQyxjQUFBLEdBQWEsQ0FDYixDQWVHLENBQ04sRUEzQ1ksSUE2QzNCLENBRWEwQixJQUFBQSxHQUEwQnJMLEVBQU1rRCxXQUczQyxTQUFpQzJCLEVBQU8xQixFQUF5QixDQUNqRSxHQUFNLENBQ0ptSCxNQUFBQSxFQUNBTyxPQUFBQSxFQUFTLEdBQ1RDLFVBQUFBLEVBQ0EsR0FBR1AsQ0FDTCxFQUFJMUYsRUFTSixPQUNFN0UsRUFBQTZCLGNBQUNKLEdBQWEsQ0FBQ0UsTUFBT0EsRUFBTSxFQUMxQjNCLEVBQUE2QixjQUFDa0MsR0FBS2hDLEdBQUEsQ0FBQ29CLElBQUtBLEVBQUtpSSxVQUFVLHlCQUF5QixFQUFLYixDQUFVLEVBQ2pFdkssRUFBQTZCLGNBQUEsUUFBQSxDQUNFNEosd0JBQXlCLENBQ3ZCQyxPQUFROztpQ0FFYS9KLEdBQU1kLGFBQWEsSUFBSWMsR0FBTVosSUFBSTs7Ozs7Ozs7OzRCQVN0Q1ksR0FBTWQsYUFBYTs7Ozs0QkFJbkJjLEdBQU1aLElBQUk7O2tDQUVKWSxHQUFNZCxhQUFhOztXQUczQyxDQUFFLENBQ0gsRUFDRGIsRUFBQTZCLGNBQUEsTUFBQSxDQUNFdUIsTUFBTyxDQUNMbUIsS0FBTSxZQUNOb0gsVUFBVyxNQUNYTCxVQUFXLE9BQ1g5RyxTQUFVLE9BQ1ZvSCxZQUFhLGFBQWFqSyxHQUFNWCxPQUFPLEdBQ3ZDbUQsUUFBUyxPQUNURyxjQUFlLFFBQ2pCLEdBRUF0RSxFQUFBNkIsY0FBQSxNQUFBLENBQ0V1QixNQUFPLENBQ0w4QixRQUFTLE9BQ1R0RSxXQUFZZSxHQUFNZCxjQUNsQnNELFFBQVMsT0FDVDBILGVBQWdCLGdCQUNoQkMsV0FBWSxRQUNkLENBQUUsRUFFRjlMLEVBQUE2QixjQUFDOEgsR0FBSSxDQUNILGNBQVcsR0FDWHZHLE1BQU8sQ0FDTDJJLFlBQWEsUUFFZnJFLFFBQVNBLElBQU1vRCxFQUFVLEVBQUssQ0FBRSxDQUNqQyxFQUNEOUssRUFBQTZCLGNBQUEsTUFBQSxDQUNFdUIsTUFBTyxDQUNMMkksWUFBYSxPQUNiOUgsU0FBVSw0QkFDVmMsV0FBWSxNQUNkLENBQUUsRUFDSCxjQUNhLElBQ1ovRSxFQUFBNkIsY0FBQSxPQUFBLENBQ0V1QixNQUFPLENBQ0wyQixXQUFZLEdBQ2QsQ0FBRSxFQUNILFVBRUssQ0FDSCxFQUNML0UsRUFBQTZCLGNBQUEsTUFBQSxDQUNFdUIsTUFBTyxDQUNMZSxRQUFTLE9BQ1RHLGNBQWUsUUFDakIsQ0FBRSxFQUVEdUcsRUFDQzdLLEVBQUE2QixjQUFDK0MsR0FBTSxDQUNMN0IsS0FBSyxTQUNMLGFBQVcsNkJBQ1gyRSxRQUFTQSxJQUFNLENBQ2JvRCxFQUFVLEVBQUssQ0FDakIsR0FDRCxPQUVPLEVBQ04sSUFDRCxDQUNGLEVBQ0w5SyxFQUFBNkIsY0FBQSxNQUFBLENBQ0V1QixNQUFPLENBQ0xlLFFBQVMsT0FDVDZILFNBQVUsT0FDVkMsVUFBVyxPQUNYMUgsS0FBTSxHQUNSLEdBRUF2RSxFQUFBNkIsY0FBQSxNQUFBLENBQ0V1QixNQUFPLENBQ0xtQixLQUFNLFdBQ05XLFFBQVMsTUFDWCxDQUFFLEVBRUZsRixFQUFBNkIsY0FBQ3NHLEdBQVEsQ0FDUHRCLE1BQU0sV0FDTi9HLE1BQU93SyxFQUNQbEMsZ0JBQWlCLEVBQU0sQ0FDeEIsRUFDRHBJLEVBQUE2QixjQUFBLE1BQUEsQ0FDRXVCLE1BQU8sQ0FDTHFCLE9BQVEsT0FDVixDQUFFLENBQ0gsRUFDRHpFLEVBQUE2QixjQUFDc0csR0FBUSxDQUNQdEIsTUFBTSxRQUNOL0csTUFBT3dLLEVBQU00QixTQUFRLEVBQ3JCOUQsZ0JBQWlCLEVBQU0sQ0FDeEIsRUFDRHBJLEVBQUE2QixjQUFBLE1BQUEsQ0FDRXVCLE1BQU8sQ0FDTHFCLE9BQVEsT0FDVixDQUFFLENBQ0gsRUFDRHpFLEVBQUE2QixjQUFDc0csR0FBUSxDQUNQdEIsTUFBTSxVQUNOL0csTUFBT3dLLEVBQU02QixjQUFhLEVBQzFCL0QsZ0JBQWlCLEVBQU0sQ0FDeEIsQ0FDRSxFQUNMcEksRUFBQTZCLGNBQUEsTUFBQSxDQUNFdUIsTUFBTyxDQUNMbUIsS0FBTSxXQUNOVyxRQUFTLE1BQ1gsQ0FBRSxFQUVGbEYsRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1B0QixNQUFNLGFBQ04vRyxNQUFPd0ssRUFBTThCLGdCQUFlLEVBQzVCaEUsZ0JBQWlCLEVBQU0sQ0FDeEIsRUFDRHBJLEVBQUE2QixjQUFDc0csR0FBUSxDQUNQdEIsTUFBTSxpQkFDTi9HLE1BQU93SyxFQUFNK0Isb0JBQW1CLEVBQ2hDakUsZ0JBQWlCLEVBQU0sQ0FDeEIsRUFDRHBJLEVBQUE2QixjQUFDc0csR0FBUSxDQUNQdEIsTUFBTSxlQUNOL0csTUFBT3dLLEVBQU1nQyxrQkFBaUIsRUFDOUJsRSxnQkFBaUIsRUFBTSxDQUN4QixFQUNEcEksRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1B0QixNQUFNLGdCQUNOL0csTUFBT3dLLEVBQU1pQyxtQkFBa0IsRUFDL0JuRSxnQkFBaUIsRUFBTSxDQUN4QixFQUNEcEksRUFBQTZCLGNBQUNzRyxHQUFRLENBQ1B0QixNQUFNLGlCQUNOL0csTUFBT3dLLEVBQU1rQyxvQkFBbUIsRUFDaENwRSxnQkFBaUIsRUFBTSxDQUN4QixDQUNFLENBYUYsQ0FDRixDQUNBLENBQ00sQ0FFbkIsQ0FBQyxFUnBVRCxPQUFTLG1CQUFBcUUsR0FBaUIsVUFBQUMsT0FBYyxlQUN4QyxPQUtFLGFBQUFDLEdBQ0EsV0FBQUMsR0FDQSxZQUFBQyxPQUNLLFFTdEJFLGNBQUFDLE9BQUEsb0JBRFQsU0FBU0MsR0FBUyxDQUFFLFVBQUFDLEVBQVcsR0FBR0MsQ0FBTSxFQUF5QyxDQUMvRSxPQUFPSCxHQUFDLE9BQUksVUFBV0ksRUFBRyxrREFBbURGLENBQVMsRUFBSSxHQUFHQyxFQUFPLENBQ3RHLENDSkEsT0FBUyxjQUFBRSxPQUErQix3QkFFeEMsT0FBUyxtQkFBQUMsR0FBaUIsVUFBQUMsT0FBYyxlQXlCMUIsT0E2Q1UsWUFBQUMsR0E3Q1YsT0FBQUMsRUE2Q1UsUUFBQUMsT0E3Q1Ysb0JBVFAsU0FBU0MsR0FBc0JDLEVBQTJCLENBQy9ELEdBQU0sQ0FBRSxPQUFBQyxFQUFRLFVBQUFDLENBQVUsRUFBSUYsRUFFOUIsT0FDRUYsR0FBQyxPQUFJLFVBQVdLLEVBQUcsNkNBQThDRCxDQUFTLEVBQ3hFLFVBQUFKLEdBQUMsT0FBSSxVQUFVLHVEQUNiLFVBQUFELEVBQUMsT0FBSSxVQUFVLCtGQUNaLFNBQUFJLEVBQU8sY0FBZ0IsS0FDdEJKLEVBQUMsUUFBSyxVQUFVLHFCQUNkLFNBQUFBLEVBQUMsUUFBSyxVQUFVLHVFQUNiLFNBQUFPLEdBQVdILEVBQU8sT0FBTyxVQUFVLE9BQVFBLEVBQU8sV0FBVyxDQUFDLEVBQ2pFLEVBQ0YsRUFFSixFQUVBSCxHQUFDLFFBQUssVUFBVSwyQ0FDZCxVQUFBRCxFQUFDLFFBQUssVUFBVSxrQ0FDZCxTQUFBQSxFQUFDUSxHQUFBLENBQWdCLEtBQUssT0FDbkIsU0FBQUosRUFBTyxPQUFPLFlBQVksSUFBTSxPQUMvQkosRUFBQ1MsR0FBTyxJQUFQLENBRUMsUUFBUyxDQUFFLFFBQVMsRUFBRyxFQUFHLEVBQUcsRUFDN0IsUUFBUyxDQUFFLFFBQVMsRUFBRyxFQUFHLENBQUUsRUFDNUIsS0FBTSxDQUFFLFFBQVMsRUFBRyxFQUFHLEVBQUcsRUFDMUIsV0FBWSxDQUFFLFNBQVUsRUFBSSxFQUU1QixTQUFBVCxFQUFDVSxHQUFBLENBQVMsS0FBTSxHQUFJLFVBQVUsMkJBQTJCLEdBTnJELE1BT04sRUFDRU4sRUFBTyxPQUFPLFlBQVksSUFBTSxNQUNsQ0osRUFBQ1MsR0FBTyxJQUFQLENBRUMsUUFBUyxDQUFFLFFBQVMsRUFBRyxFQUFHLENBQUUsRUFDNUIsUUFBUyxDQUFFLFFBQVMsRUFBRyxFQUFHLENBQUUsRUFDNUIsS0FBTSxDQUFFLFFBQVMsRUFBRyxFQUFHLENBQUUsRUFDekIsV0FBWSxDQUFFLFNBQVUsRUFBSSxFQUU1QixTQUFBVCxFQUFDVyxHQUFBLENBQU8sS0FBTSxHQUFJLFVBQVUsMkJBQTJCLEdBTm5ELEtBT04sRUFDRSxLQUNOLEVBQ0YsRUFDQ1AsRUFBTyxPQUFPLFVBQVUsR0FBS0EsRUFBTyxPQUFPLEtBQU8sVUFDakRILEdBQUNXLEdBQUEsQ0FDQyxVQUFBWixFQUFDYSxHQUFBLENBQW9CLFFBQU8sR0FDMUIsU0FBQWIsRUFBQ2MsRUFBQSxDQUFPLFFBQVEsUUFBUSxLQUFLLEtBQUssVUFBVSx3QkFDMUMsU0FBQWQsRUFBQ2UsR0FBQSxDQUFZLEtBQU0sR0FBSSxFQUN6QixFQUNGLEVBQ0FkLEdBQUNlLEdBQUEsQ0FDRSxVQUFBWixFQUFPLE9BQU8sV0FBVyxHQUN4QkosRUFBQ2lCLEdBQUEsQ0FBaUIsUUFBUyxJQUFNYixFQUFPLE9BQU8sY0FBYyxFQUMzRCxTQUFBSixFQUFDLFFBQUssVUFBVSxtQ0FDYixTQUFBSSxFQUFPLE9BQU8sb0JBQW9CLElBQU0sT0FDdkNILEdBQUFGLEdBQUEsQ0FDRSxVQUFBQyxFQUFDa0IsR0FBQSxDQUFvQixLQUFNLEdBQUksRUFBRSxtQkFFbkMsRUFDRWQsRUFBTyxPQUFPLG9CQUFvQixJQUFNLE1BQzFDSCxHQUFBRixHQUFBLENBQ0UsVUFBQUMsRUFBQ21CLEdBQUEsQ0FBa0IsS0FBTSxHQUFJLEVBQUUsa0JBRWpDLEVBRUFsQixHQUFBRixHQUFBLENBQ0UsVUFBQUMsRUFBQ29CLEdBQUEsQ0FBRSxLQUFNLEdBQUksRUFBRSxrQkFFakIsRUFFSixFQUNGLEVBRUZwQixFQUFDaUIsR0FBQSxDQUFpQixRQUFTLElBQU1iLEVBQU8sT0FBTyxJQUFJQSxFQUFPLE9BQU8sWUFBWSxFQUFJLEdBQVEsTUFBTSxFQUM1RixTQUFBQSxFQUFPLE9BQU8sWUFBWSxFQUN6QkgsR0FBQyxRQUFLLFVBQVUsbUNBQ2QsVUFBQUQsRUFBQ3FCLEdBQUEsQ0FBTyxLQUFNLEdBQUksRUFBRSxnQkFFdEIsRUFFQXBCLEdBQUMsUUFBSyxVQUFVLG1DQUNkLFVBQUFELEVBQUNzQixHQUFBLENBQUksS0FBTSxHQUFJLEVBQUUsY0FFbkIsRUFFSixHQUNGLEdBQ0YsR0FFSixHQUNGLEVBQ0NsQixFQUFPLE9BQU8sYUFBYSxHQUMxQkosRUFBQyxVQUNDLEtBQUssU0FDTCxTQUFVLEVBQ1YsWUFBY3VCLEdBQU0sQ0FDbEJBLEVBQUUsZ0JBQWdCLEVBQ2xCbkIsRUFBTyxpQkFBaUIsRUFBRW1CLENBQUMsQ0FDN0IsRUFDQSxhQUFlQSxHQUFNLENBQ25CQSxFQUFFLGdCQUFnQixFQUNsQm5CLEVBQU8saUJBQWlCLEVBQUVtQixDQUFDLENBQzdCLEVBQ0EsUUFBVUEsR0FBTUEsRUFBRSxnQkFBZ0IsRUFDbEMsVUFBWUEsR0FBTSxFQUNaQSxFQUFFLE1BQVEsU0FBV0EsRUFBRSxNQUFRLE9BQ2pDQSxFQUFFLGVBQWUsRUFDakJBLEVBQUUsZ0JBQWdCLEVBQ2xCbkIsRUFBTyxpQkFBaUIsRUFBRW1CLENBQUMsRUFFL0IsRUFDQSxVQUFXakIsRUFDVCxxSUFDRixFQUNBLGFBQVcsZ0JBQ2IsR0FFSixDQUVKLENDL0hNLGNBQUFrQixPQUFBLG9CQUhDLFNBQVNDLEdBQW1CLENBQUUsVUFBQUMsQ0FBVSxFQUE0QixDQUN6RSxPQUNFRixHQUFDLE9BQUksbUJBQWdCLEdBQUMsVUFBV0csRUFBRyxpRUFBa0VELENBQVMsRUFDN0csU0FBQUYsR0FBQyxPQUFJLFVBQVUscUZBQXFGLEVBQ3RHLENBRUosQ0NVVSxPQUNFLE9BQUFJLEVBREYsUUFBQUMsT0FBQSxvQkFWSCxTQUFTQyxHQUFtQkMsRUFBZ0MsQ0FDakUsR0FBTSxDQUFFLE1BQUFDLEVBQU8sUUFBQUMsRUFBVSxPQUFRLEVBQUlGLEVBRS9CLENBQUUsVUFBQUcsQ0FBVSxFQUFJRixFQUFNLFNBQVMsRUFBRSxXQUNqQ0csRUFBWUgsRUFBTSxhQUFhLEVBRXJDLE9BQ0VKLEVBQUMsT0FBSSxVQUFVLHVHQUNiLFNBQUFBLEVBQUMsT0FBSSxVQUFVLHFKQUNaLFNBQUFLLElBQVksUUFDWEosR0FBQyxPQUFJLFVBQVUsdUNBQ2IsVUFBQUQsRUFBQ1EsRUFBQSxDQUNDLFFBQVEsVUFDUixLQUFLLEtBQ0wsVUFBVSxTQUNWLFFBQVMsSUFBTUosRUFBTSxhQUFhLEVBQ2xDLFNBQVUsQ0FBQ0EsRUFBTSxtQkFBbUIsRUFDckMsb0JBRUQsRUFDQUosRUFBQ1EsRUFBQSxDQUNDLFFBQVEsVUFDUixLQUFLLEtBQ0wsVUFBVSxTQUNWLFFBQVMsSUFBTUosRUFBTSxTQUFTLEVBQzlCLFNBQVUsQ0FBQ0EsRUFBTSxlQUFlLEVBQ2pDLGdCQUVELEdBQ0YsRUFFQUosRUFBQyxPQUFJLFVBQVUsdUNBQ2IsU0FBQUMsR0FBQyxPQUFJLFVBQVUsdUNBQ2IsVUFBQUQsRUFBQ1EsRUFBQSxDQUFPLFFBQVEsVUFBVSxRQUFTLElBQU1KLEVBQU0sYUFBYSxDQUFDLEVBQUcsU0FBVSxDQUFDQSxFQUFNLG1CQUFtQixFQUNsRyxTQUFBSixFQUFDUyxHQUFBLENBQWEsVUFBVSxnQkFBZ0IsRUFDMUMsRUFDQVQsRUFBQ1EsRUFBQSxDQUFPLFFBQVEsVUFBVSxRQUFTLElBQU1KLEVBQU0sYUFBYSxFQUFHLFNBQVUsQ0FBQ0EsRUFBTSxtQkFBbUIsRUFDakcsU0FBQUosRUFBQ1UsR0FBQSxDQUFZLFVBQVUsZ0JBQWdCLEVBQ3pDLEVBQ0FULEdBQUMsT0FBSSxVQUFVLDZEQUE2RCxpQkFFMUVELEVBQUNXLEdBQUEsQ0FDQyxLQUFLLFNBQ0wsSUFBSyxFQUNMLElBQUtKLEVBQ0wsTUFBT0QsRUFBWSxFQUNuQixVQUFVLFVBQ1YsU0FBV00sR0FBTSxDQUNmLElBQU1OLEVBQVlNLEVBQUUsT0FBTyxNQUFRLE9BQU9BLEVBQUUsT0FBTyxLQUFLLEVBQUksRUFBSSxFQUNoRVIsRUFBTSxhQUFhRSxDQUFTLENBQzlCLEVBQ0YsRUFDQUwsR0FBQyxRQUFLLFVBQVUsdUJBQXVCLGdCQUFJTSxHQUFVLEdBQ3ZELEVBQ0FQLEVBQUNRLEVBQUEsQ0FBTyxRQUFRLFVBQVUsUUFBUyxJQUFNSixFQUFNLFNBQVMsRUFBRyxTQUFVLENBQUNBLEVBQU0sZUFBZSxFQUN6RixTQUFBSixFQUFDYSxHQUFBLENBQWEsVUFBVSxnQkFBZ0IsRUFDMUMsRUFDQWIsRUFBQ1EsRUFBQSxDQUNDLFFBQVEsVUFDUixRQUFTLElBQU1KLEVBQU0sYUFBYUcsRUFBWSxDQUFDLEVBQy9DLFNBQVUsQ0FBQ0gsRUFBTSxlQUFlLEVBRWhDLFNBQUFKLEVBQUNjLEdBQUEsQ0FBYyxVQUFVLGdCQUFnQixFQUMzQyxHQUNGLEVBQ0YsRUFFSixFQUNGLENBRUosQ0M5RU8sU0FBU0MsR0FBdUJDLEVBQXlDQyxFQUF5QixDQUN2RyxJQUFNQyxFQUFXRixFQUFPLFlBQVksRUFDOUJHLEVBQTBCRCxJQUFhLFFBQVVGLEVBQU8saUJBQWlCLE1BQU0sRUFDL0VJLEVBQTJCRixJQUFhLFNBQVdGLEVBQU8saUJBQWlCLE9BQU8sRUFDbEZLLEVBQWlDRixHQUEyQkMsRUFFbEUsTUFBTyxDQUNMLFVBQVdFLEVBQ1QsMERBQ0EsMkRBQ0FELEdBQWtDSixJQUFTLFVBQVksb0JBQ3ZESSxHQUFrQ0osSUFBUyxRQUFVLG1CQUNyREksR0FBa0MsMkNBQ3BDLEVBQ0EsTUFBTyxDQUNMLE1BQU9MLEVBQU8sVUFBVSxLQUN4QixLQUFNRyxFQUEwQixHQUFHSCxFQUFPLFNBQVMsTUFBTSxDQUFDLEtBQU8sT0FDakUsTUFBT0ksRUFBMkIsR0FBR0osRUFBTyxTQUFTLE9BQU8sQ0FBQyxLQUFPLE1BQ3RFLENBQ0YsQ0FDRixDYmdETSxPQXVHRixZQUFBTyxHQXZHRSxPQUFBQyxFQWlLZ0IsUUFBQUMsT0FqS2hCLG9CQTNCTixJQUFNQyxHQUF1QkMsR0FBb0MsQ0FDL0QsR0FBTSxDQUFFLFNBQUFDLEVBQVUsVUFBQUMsRUFBVyxPQUFBQyxFQUFRLE1BQU9DLENBQVksRUFBSUosRUFDdERLLEVBQWtCLG9CQUFxQkYsRUFBTyxPQUFPLFVBRXJELENBQUUsV0FBQUcsRUFBWSxVQUFBQyxFQUFXLFVBQUFDLEVBQVcsV0FBQUMsRUFBWSxXQUFBQyxFQUFZLFdBQUFDLENBQVcsRUFBSUMsR0FBWSxDQUMzRixHQUFJVCxFQUFPLEVBQ2IsQ0FBQyxFQUVLVSxFQUFZLENBQ2hCLEdBQUdULEVBQ0gsT0FBUSxPQUNSLFlBQWEsT0FDYixVQUFXVSxHQUFJLFVBQVUsU0FBU04sQ0FBUyxFQUMzQyxXQUFBQyxDQUNGLEVBRU1NLEVBQWNDLEVBQUdkLEVBQVcsa0VBQWtFLEVBQzlGZSxFQUFZRCxFQUFHRCxFQUFhSixHQUFjLDJDQUEyQyxFQUUzRixPQUNFZCxFQUFDcUIsR0FBQSxDQUNDLElBQUtSLEVBQ0osR0FBR0osRUFDSCxHQUFHQyxFQUNKLE1BQU9GLEVBQWtCRCxFQUFjUyxFQUN2QyxVQUFXUixFQUFrQlUsRUFBY0UsRUFFM0MsU0FBQXBCLEVBQUMsT0FBSSxVQUFVLFlBQWEsU0FBQUksRUFBUyxFQUN2QyxDQUVKLEVBaUJPLFNBQVNrQixHQUFTbkIsRUFBc0IsQ0FDN0MsR0FBTSxDQUNKLFdBQUFvQixFQUNBLGNBQUFDLEVBQ0EsVUFBQUMsRUFDQSxhQUFBQyxFQUNBLG1CQUFBQyxFQUNBLHFCQUFBQyxFQUNBLGdCQUFBQyxFQUNBLFVBQUFDLEVBQ0EsZ0JBQUFDLEVBQ0EsS0FBQUMsRUFDQSxrQkFBQUMsRUFDQSxhQUFBQyxDQUNGLEVBQUkvQixFQUVFLENBQUNnQyxFQUFhQyxDQUFjLEVBQUlDLEdBQW1CLENBQUMsQ0FBQyxFQUNyRCxDQUFDQyxFQUFlQyxDQUFnQixFQUFJRixHQUE2QixDQUFFLEtBQU0sQ0FBQyxhQUFhLEVBQUcsTUFBTyxDQUFDLENBQUUsQ0FBQyxFQUNyRyxDQUFDRyxFQUFjQyxDQUFlLEVBQUlKLEdBQTRCLENBQUMsQ0FBQyxFQUNoRUssRUFBVUMsR0FBUSxJQUFNQyxHQUFlVixDQUFZLEVBQUcsQ0FBQ0EsQ0FBWSxDQUFDLEVBQ3BFVyxFQUFnQnBCLEdBQWFDLEVBR25Db0IsR0FBVSxJQUFNVixFQUFlYixFQUFXLElBQUksQ0FBQyxDQUFFLFlBQUF3QixDQUFZLElBQU1BLENBQVcsQ0FBQyxFQUFHLENBQUMsQ0FBQyxFQUdwRixTQUFTQyxHQUFjLENBQUUsT0FBQUMsRUFBUSxLQUFBQyxDQUFLLEVBQWlCLENBQ2pEQSxHQUFRRCxFQUFPLEtBQU9DLEVBQUssSUFDN0JkLEVBQWdCZSxJQUFVLENBQ3hCLElBQU1DLEVBQWNELEdBQU0sUUFBUUYsRUFBTyxFQUFZLEVBQy9DSSxHQUFZRixHQUFNLFFBQVFELEVBQUssRUFBWSxFQUNqRCxPQUFPSSxHQUFVSCxHQUFPQyxFQUFhQyxFQUFTLENBQ2hELENBQUMsQ0FFTCxDQUdBLElBQU1FLEVBQWNDLEdBQVVDLEdBQWEsQ0FFekMscUJBQXNCLENBQ3BCLFNBQVUsRUFDWixDQUNGLENBQUMsRUFDS0MsRUFBVUMsR0FBV0osQ0FBVyxFQUVoQ0ssRUFBUUMsR0FBYyxDQUMxQixpQkFBa0IsV0FDbEIsUUFBU3RDLEVBQ1QsS0FBTVMsRUFDTixjQUFlLENBQUUsS0FBTSxJQUFLLFFBQVMsR0FBSSxRQUFTLEdBQUksRUFDdEQsb0JBQXFCLEdBQ3JCLHFCQUFzQixHQUN0QixtQkFBb0IsR0FDcEIsY0FBZSxHQUFRSCxHQUFtQkssR0FDMUMsZ0JBQWlCNEIsR0FBZ0IsRUFDakMsU0FBVSxDQUFDLENBQUUsV0FBQUMsQ0FBVyxJQUFNQSxFQUM5QixpQkFBa0IsR0FDbEIsY0FBZSxHQUNmLG9CQUFxQjNCLEVBQ3JCLHNCQUF1QkcsRUFDdkIscUJBQXNCRSxFQUN0QixtQkFBQWQsRUFDQSxxQkFBQUMsRUFDQSxnQkFBa0JvQyxHQUNoQm5DLElBQW1Cb0MsSUFDYixPQUFPRCxHQUFtQixhQUM1QkEsRUFBaUJBLEVBQWVwQixHQUFlcUIsQ0FBRyxDQUFDLEdBRzlDQyxHQUFpQkYsQ0FBYyxFQUN2QyxFQUNILFVBQUFsQyxFQUNBLE1BQU8sQ0FDTCxZQUFBSyxFQUNBLGNBQUFHLEVBQ0EsYUFBQUUsRUFDQSxXQUFZVCxFQUNaLGFBQWNFLEVBQ2QsUUFBQVMsQ0FDRixDQUNGLENBQUMsRUFFRCxPQUNFekMsR0FBQUYsR0FBQSxDQUVHLGtCQUFRLElBQUksV0FBYSxhQUFlLEtBQU9DLEVBQUNtRSxHQUFBLENBQW1CLE1BQU9QLEVBQU8sRUFDbEYzRCxHQUFDLE9BQUksY0FBWSxVQUFVLFVBQVUsd0VBQ25DLFVBQUFELEVBQUMsT0FBSyxTQUFBNkMsR0FBaUI3QyxFQUFDb0UsR0FBQSxDQUFtQixVQUFVLGlEQUFpRCxFQUFHLEVBQ3pHcEUsRUFBQ3FFLEdBQUEsQ0FBVyxRQUFTWCxFQUFTLFVBQVdWLEdBQ3ZDLFNBQUEvQyxHQUFDcUUsR0FBQSxDQUFNLFVBQVUsZ0ZBQ2YsVUFBQXRFLEVBQUN1RSxHQUFBLENBQ0UsU0FBQVgsRUFBTSxnQkFBZ0IsRUFBRSxJQUFLWSxHQUM1QnhFLEVBQUN5RSxHQUFBLENBQ0MsU0FBQXpFLEVBQUMwRSxHQUFBLENBQ0MsTUFBT0YsRUFBWSxRQUNoQixPQUFRbEUsR0FBVyxFQUFFLG9CQUFxQkEsRUFBTyxPQUFPLFVBQVUsRUFDbEUsSUFBS0EsR0FBV0EsRUFBTyxFQUFFLEVBQzVCLFNBQVVxRSxHQUVULFNBQUFILEVBQVksUUFBUSxJQUFLbEUsR0FFdEJOLEVBQUNFLEdBQUEsQ0FFQyxPQUFRSSxFQUNSLE1BQU9zRCxFQUNOLEdBQUdnQixHQUF1QnRFLEVBQU8sT0FBUSxRQUFRLEVBRWxELFNBQUFOLEVBQUM2RSxHQUFBLENBQWUsT0FBUXZFLEVBQVEsR0FMM0JBLEVBQU8sRUFNZCxDQUVILEVBQ0gsR0FuQmFrRSxFQUFZLEVBb0IzQixDQUNELEVBQ0gsRUFDQXZFLEdBQUM2RSxHQUFBLENBQ0UsVUFBQXRELElBQWdCb0MsQ0FBSyxFQUNyQkEsRUFBTSxZQUFZLEVBQUUsTUFBTSxPQUN6QkEsRUFBTSxZQUFZLEVBQUUsS0FBSyxJQUFLbUIsR0FDNUIvRSxFQUFDeUUsR0FBQSxDQUVDLFVBQVd0RCxFQUFHLG9GQUFvRixFQUVqRyxTQUFBNEQsRUFBSSxnQkFBZ0IsRUFBRSxJQUFJLENBQUNDLEVBQU1DLEtBQU0sQ0FDdEMsR0FBSSxPQUFPRCxFQUFLLE9BQU8sVUFBVSxNQUFTLFdBQVksQ0FFcEQsSUFBTUUsRUFBT0YsRUFBSyxPQUFPLFVBQVUsS0FBS0EsRUFBSyxXQUFXLENBQUMsRUFDekQsT0FBT2hGLEVBQUNrRixFQUFBLENBQWMsR0FBR04sR0FBdUJJLEVBQUssT0FBUSxNQUFNLEdBQWpEQyxFQUFvRCxDQUN4RSxDQUVBLE9BQU8sSUFDVCxDQUFDLEdBWElGLEVBQUksRUFZWCxDQUNELEVBRUQvRSxFQUFDeUUsR0FBQSxDQUNDLFNBQUF6RSxFQUFDbUYsR0FBQSxDQUNDLFFBQVM1RCxFQUFXLE9BQ3BCLFVBQVUseURBRVQsU0FBQUUsR0FDQ3hCLEdBQUMsT0FBSSxVQUFVLCtCQUNiLFVBQUFELEVBQUNvRixHQUFBLENBQVMsVUFBVSxtQkFBbUIsRUFDdkNwRixFQUFDb0YsR0FBQSxDQUFTLFVBQVUsa0JBQWtCLEVBQ3RDcEYsRUFBQ29GLEdBQUEsQ0FBUyxVQUFVLGtCQUFrQixHQUN4QyxFQUVKLEVBQ0YsR0FFSixHQUNGLEVBQ0YsRUFDQyxDQUFDdEQsR0FBYUEsRUFBWSxFQUFJLEtBQU85QixFQUFDcUYsR0FBQSxDQUFtQixNQUFPekIsRUFBTyxRQUFRLFVBQVUsRUFFMUY1RCxFQUFDc0YsR0FBQSxDQUFnQixLQUFLLE9BQ25CLFNBQUExQixFQUFNLFlBQVksRUFBRSxNQUFNLFNBQVcsR0FBSyxDQUFDbkMsR0FBYSxDQUFDQyxHQUN4RDFCLEVBQUN1RixHQUFPLElBQVAsQ0FDQyxVQUFVLDJGQUNWLFFBQVMsQ0FBRSxRQUFTLENBQUUsRUFDdEIsUUFBUyxDQUFFLFFBQVMsQ0FBRSxFQUN0QixLQUFNLENBQUUsUUFBUyxDQUFFLEVBRW5CLFNBQUF0RixHQUFDLE9BQUksVUFBVSw4Q0FDYixVQUFBRCxFQUFDLE9BQUksVUFBVSxzQ0FBc0MsNEJBQWdCLEVBQ3JFQSxFQUFDLE9BQUksVUFBVSxzQ0FBc0MsaUVBRXJELEdBQ0YsRUFDRixFQUVKLEdBQ0YsR0FDRixDQUVKLENBRUEsU0FBUzRDLEdBQWU0QyxFQUFpRCxDQUN2RSxPQUFPQSxHQUFNLElBQUtDLElBQVUsQ0FBRSxHQUFJQSxFQUFLLE9BQVEsS0FBTUEsRUFBSyxZQUFjLE1BQU8sRUFBRSxHQUFLLENBQUMsQ0FDekYsQ0FFQSxTQUFTdkIsR0FBaUJzQixFQUFxQyxDQUM3RCxPQUFPQSxFQUFLLElBQUtDLElBQVUsQ0FDekIsT0FBUUEsRUFBSyxHQUNiLFVBQVdBLEVBQUssS0FBTyxPQUFTLEtBQ2xDLEVBQUUsQ0FDSixDY3RSQSxVQUFZQyxPQUFzQiwwQkFDbEMsVUFBWUMsT0FBVyxRQWVuQixjQUFBQyxPQUFBLG9CQVhKLElBQU1DLEdBQW1DLFlBRW5DQyxHQUEyQixRQUUzQkMsR0FBa0MsV0FFbENDLEdBQXVCLGNBRzNCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLFdBQUFDLEVBQWEsRUFBRyxHQUFHQyxDQUFNLEVBQUdDLElBQzFDUixHQUFrQixVQUFqQixDQUNDLFNBQUFBLEdBQWtCLFdBQWpCLENBQ0MsSUFBS1EsRUFDTCxXQUFZRixFQUNaLFVBQVdHLEVBQ1QsK2RBQ0FKLENBQ0YsRUFDQyxHQUFHRSxFQUNOLEVBQ0YsQ0FDRCxFQUNESCxHQUFlLFlBQStCLFdBQVEsWUNqQjVDLE9BRUksT0FBQU0sR0FGSixRQUFBQyxPQUFBLG9CQUxILFNBQVNDLEdBQW1CLENBQUUsT0FBQUMsQ0FBTyxFQUF1QixDQUNqRSxPQUFJQSxFQUFPLGVBRVBGLEdBQUMsUUFBSyxVQUFVLDhEQUNkLFVBQUFELEdBQUNJLEdBQUEsQ0FBZ0IsY0FBZSxJQUM5QixTQUFBSCxHQUFDSSxHQUFBLENBQ0MsVUFBQUwsR0FBQ00sR0FBQSxDQUFlLFFBQU8sR0FDckIsU0FBQU4sR0FBQ08sR0FBQSxDQUFTLEtBQU0sR0FBSSxFQUN0QixFQUNBUCxHQUFDUSxHQUFBLENBQ0MsU0FBQVIsR0FBQyxLQUFFLHVCQUFXLEVBQ2hCLEdBQ0YsRUFDRixFQUNDRyxFQUFPLE1BQ1YsRUFLRkYsR0FBQyxPQUFJLFVBQVUsK0NBQ2IsVUFBQUQsR0FBQyxRQUFLLFVBQVUsNkJBQThCLFNBQUFHLEVBQU8sS0FBSyxFQUMxREgsR0FBQyxRQUFLLFVBQVUsMkZBQ2IsU0FBQUcsRUFBTyxTQUFTLEtBQ25CLEdBQ0YsQ0FFSixDQy9CQSxPQUFTLGdCQUFBTSxPQUFvQixTQ0Q3QixPQUFTLFVBQUFDLE9BQWMsZUFDdkIsT0FBT0MsSUFBUyxZQUFBQyxPQUFnQixRQ0RoQyxVQUFZQyxPQUFvQix3QkFDaEMsT0FBUyxPQUFBQyxPQUE4QiwyQkFDdkMsVUFBWUMsT0FBVyxRQVlyQixjQUFBQyxPQUFBLG9CQVJGLElBQU1DLEdBQWdCQyxHQUNwQiwyR0FDRixFQUVNQyxHQUFjLGNBR2xCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLEdBQUdDLENBQU0sRUFBR0MsSUFDMUJOLEdBQWdCLFFBQWYsQ0FBb0IsSUFBS00sRUFBSyxVQUFXQyxFQUFHTixHQUFjLEVBQUdHLENBQVMsRUFBSSxHQUFHQyxFQUFPLENBQ3RGLEVBQ0RGLEdBQU0sWUFBNkIsUUFBSyxZQ2hCeEMsVUFBWUssT0FBc0IseUJBQ2xDLFVBQVlDLE9BQVcsUUFnQm5CLGNBQUFDLE9BQUEsb0JBWkosSUFBTUMsR0FBZSxjQUduQixDQUFDLENBQUUsVUFBQUMsRUFBVyxHQUFHQyxDQUFNLEVBQUdDLElBQzFCSixHQUFrQixRQUFqQixDQUNDLFVBQVdLLEVBQ1QsNmJBQ0FILENBQ0YsRUFDQyxHQUFHQyxFQUNKLElBQUtDLEVBRUwsU0FBQUosR0FBa0IsU0FBakIsQ0FDQyxVQUFXSyxFQUNULDZNQUNGLEVBQ0YsRUFDRixDQUNELEVBQ0RKLEdBQU8sWUFBK0IsUUFBSyxZQ2NuQyxtQkFBQUssR0FJUSxPQUFBQyxHQUZKLFFBQUFDLE9BRkosb0JBekJELElBQU1DLEdBQWUsQ0FBQyxDQUMzQixPQUFBQyxFQUNBLFNBQUFDLEVBQ0EsUUFBQUMsRUFDQSxhQUFBQyxFQUNBLE9BQUFDLEVBQVMsR0FDVCxTQUFBQyxDQUNGLElBZ0JJUixHQUFDLE9BQUksVUFBVSxpRkFDWixVQUFDUSxHQUNBUCxHQUFBRixHQUFBLENBQ0UsVUFBQUUsR0FBQyxPQUFJLFVBQVUsaURBQ2IsVUFBQUEsR0FBQyxVQUFPLFVBQVUsaUVBQWlFLFFBZjFFLElBQU0sQ0FDbkJFLEdBQVFBLEVBQU8sRUFDZkUsR0FBU0EsRUFBUSxDQUN2QixFQWFZLFVBQUFMLEdBQUMsT0FBSSxVQUFVLG9IQUNiLFNBQUFBLEdBQUNTLEdBQUEsQ0FBZSxLQUFNLEdBQUksWUFBYSxFQUFHLEVBQzVDLEVBQU8sSUFBSSxnQkFFYixFQUNBUixHQUFDLFVBQU8sVUFBVSxpRUFBaUUsUUFoQnhFLElBQU0sQ0FDckJHLEdBQVVBLEVBQVMsRUFDbkJDLEdBQVNBLEVBQVEsQ0FDdkIsRUFjWSxVQUFBTCxHQUFDLE9BQUksVUFBVSxtS0FBbUssZUFFbEwsRUFBTyxJQUFJLGtCQUViLEdBQ0YsRUFDQ00sR0FDQ04sR0FBQyxPQUFJLFVBQVUsc0NBQ2IsU0FBQUMsR0FBQyxTQUFNLFVBQVUsK0NBQStDLFFBQVEsZUFDdEUsVUFBQUQsR0FBQ1UsR0FBQSxDQUFPLEdBQUcsZUFBZSxRQUFTSCxFQUFRLGdCQW5DL0JJLEdBQXFCLENBQ3pDTCxHQUFjQSxFQUFhSyxDQUFPLENBQ3hDLEVBaUM0RixFQUM5RVgsR0FBQyxRQUFLLHVCQUFXLEdBQ25CLEVBQ0YsR0FFSixFQUVKLEVIUkEsbUJBQUFZLEdBRUksT0FBQUMsR0FERixRQUFBQyxPQURGLG9CQXZDRyxTQUFTQyxHQUFhQyxFQUEwQixDQUNyRCxHQUFNLENBQUUsTUFBQUMsRUFBTyxTQUFBQyxFQUFVLE9BQUFDLEVBQVEsU0FBQUMsQ0FBUyxFQUFJSixFQUN4Q0ssRUFBYUYsRUFBTyxXQUFhLEdBQ2pDLENBQUNHLEVBQWNDLENBQWUsRUFBSUMsR0FBa0JQLElBQVUsS0FBTyxHQUFTQSxDQUFpQixFQUMvRixDQUFDUSxFQUFXQyxDQUFZLEVBQUlGLEdBQWtCUCxJQUFVLElBQUksRUFDNURVLEVBQWVWLElBQVUsS0FBTyxHQUFTQSxFQUV6Q1csRUFBZ0JDLEdBQXFCLENBQ3pDTixFQUFnQk0sQ0FBTyxDQUN6QixFQUVNQyxFQUFvQkQsR0FBcUIsQ0FDN0NILEVBQWFHLENBQU8sQ0FDdEIsRUFHTUUsRUFBb0JDLEdBQU0sWUFBWSxJQUFNLENBQ2hELElBQU1DLEVBQWdCUixFQUFZLEtBQU9ILEVBQ3pDLE9BQUlXLElBQWtCaEIsR0FDcEJDLEVBQVNlLENBQWEsRUFDZixJQUVGLEVBQ1QsRUFBRyxDQUFDWCxFQUFjTCxFQUFPQyxFQUFVTyxDQUFTLENBQUMsRUFFdkNTLEVBQWUsSUFBTSxDQUV6QlgsRUFBZ0JJLENBQVksRUFDNUJELEVBQWFULElBQVUsSUFBSSxDQUM3QixFQUdNLENBQUUsV0FBQWtCLEVBQVksYUFBQUMsQ0FBYSxFQUFJQyxFQUFrQixDQUNyRCxPQUFRTixFQUNSLFNBQVVHLEVBQ1YsU0FBQWQsQ0FDRixDQUFDLEVBRUQsT0FDRU4sR0FBQUYsR0FBQSxDQUNFLFVBQUFFLEdBQUMsT0FBSSxVQUFVLGdHQUNiLFVBQUFELEdBQUN5QixHQUFBLENBQU0sUUFBUSxnQkFBZ0IsVUFBVSxhQUFhLG1CQUV0RCxFQUNBekIsR0FBQzBCLEdBQU8sSUFBUCxDQUNDLFVBQVUsMEJBQ1YsUUFBUyxDQUFFLFFBQVMsQ0FBRSxFQUN0QixRQUFTLENBQUUsUUFBUyxDQUFFLEVBQ3RCLFdBQVksQ0FBRSxTQUFVLEdBQUssRUFFN0IsU0FBQTFCLEdBQUMyQixHQUFBLENBQ0MsR0FBRyxnQkFDSCxRQUFTbEIsRUFDVCxnQkFBaUJNLEVBQ2pCLFNBQVVILEdBQWFMLEVBQ3pCLEVBQ0YsRUFDQVAsR0FBQzBCLEdBQU8sSUFBUCxDQUNDLGFBQVUsR0FDVixVQUFVLGtGQUNWLFFBQVMsQ0FBRSxFQUFHLElBQUssUUFBUyxDQUFFLEVBQzlCLFFBQVMsQ0FBRSxFQUFHLEVBQUcsUUFBUyxDQUFFLEVBQzVCLFdBQVksQ0FBRSxTQUFVLElBQU0sTUFBTyxDQUFFLEVBRXRDLFNBQUFkLEVBQVksT0FBUyxPQUFPSCxDQUFZLEVBQzNDLEdBQ0YsRUFDQVQsR0FBQzRCLEdBQUEsQ0FDQyxPQUFRTixFQUNSLFNBQVVDLEVBQ1YsYUFBY2YsRUFBYVMsRUFBbUIsT0FDOUMsT0FBUUwsRUFDUixTQUFVTCxFQUNaLEdBQ0YsQ0FFSixDSTVGQSxPQUFPc0IsT0FBVyxRQUNsQixPQUFPQyxPQUFxQiwrQkFFNUIsT0FBUyxlQUFBQyxHQUFhLFdBQUFDLE9BQWUsUUNIckMsT0FBUyxZQUFBQyxPQUFnQixRQU1sQixTQUFTQyxHQUFTQyxFQUFzQixDQUM3QyxHQUFNLENBQUUsYUFBQUMsQ0FBYSxFQUFJRCxFQUVuQixDQUFDRSxFQUFPQyxDQUFRLEVBQUlMLEdBQWlCRyxHQUFnQixFQUFFLEVBTTdELE1BQU8sQ0FBRSxlQUplRyxHQUErQyxDQUNyRUQsRUFBU0MsRUFBTSxPQUFPLEtBQUssQ0FDN0IsRUFFeUIsTUFBQUYsQ0FBTSxDQUNqQyxDRDJESSxtQkFBQUcsR0FFSSxPQUFBQyxHQURGLFFBQUFDLE9BREYsb0JBOURKQyxHQUFNLE9BQU9DLEVBQWUsRUFTckIsU0FBU0MsR0FBVUMsRUFBdUIsQ0FDL0MsR0FBTSxDQUFFLFNBQUFDLEVBQVUsTUFBQUMsRUFBTyxTQUFBQyxDQUFTLEVBQUlILEVBRWhDSSxFQUFlLE9BQU9GLENBQUssRUFFM0IsQ0FBRSxlQUFBRyxFQUFnQixNQUFPQyxDQUFXLEVBQUlDLEdBQVMsQ0FBRSxhQUFBSCxDQUFhLENBQUMsRUFHakVJLEVBQWdCQyxHQUFRLElBQU0sQ0FDbEMsR0FBSSxDQUNGLElBQU1DLEVBQU9iLEdBQU1TLENBQVUsRUFDN0IsT0FBS0ksRUFBSyxRQUFRLEVBR0ZKLEVBQVcsU0FBUyxHQUFHLEVBSzlCSSxFQUFLLE9BQU8sUUFBUSxFQUdwQkEsRUFBSyxPQUFPLElBQUksRUFYR0osQ0FhOUIsTUFBaUIsQ0FDZixPQUFPQSxDQUNULENBQ0YsRUFBRyxDQUFDQSxDQUFVLENBQUMsRUFFZixTQUFTSyxFQUFlQyxFQUFrQixDQUN4Q0EsRUFBTSxlQUFlLEVBQ2pCTixJQUFlRixHQUNqQkgsRUFBU0ssQ0FBVSxDQUV2QixDQUVBLElBQU1PLEVBQW9CQyxHQUFZLElBQ2hDUixJQUFlRixHQUNqQkgsRUFBU0ssQ0FBVSxFQUNaLElBRUYsR0FDTixDQUFDQSxFQUFZRixFQUFjSCxDQUFRLENBQUMsRUFFakNjLEVBQWUsSUFBTSxDQUFDLEVBRXRCLENBQUUsV0FBQUMsRUFBWSxhQUFBQyxDQUFhLEVBQUlDLEVBQWtCLENBQ3JELE9BQVFMLEVBQ1IsU0FBVUUsRUFDVixTQUFBWixDQUNGLENBQUMsRUFFRCxPQUNFUCxHQUFBRixHQUFBLENBQ0UsVUFBQUUsR0FBQyxRQUFLLFNBQVVlLEVBQ2QsVUFBQWhCLEdBQUN3QixHQUFBLENBQ0MsVUFBVSw2SUFDVixTQUFVZCxFQUNWLEtBQUssT0FDTCxNQUFPQyxFQUNULEVBQ0FYLEdBQUMsU0FBTSxLQUFLLFNBQVMsVUFBVSxhQUFhLEdBQzlDLEVBQ0FDLEdBQUMsT0FBSSxVQUFVLHlFQUNiLFVBQUFELEdBQUMsT0FBSSxVQUFVLHNDQUFzQywyQkFBZSxFQUNwRUEsR0FBQyxPQUFJLFVBQVUsNkNBQThDLFNBQUFhLEVBQWMsR0FDN0UsRUFDQWIsR0FBQ3lCLEdBQUEsQ0FBYSxPQUFRSixFQUFZLFNBQVVDLEVBQWMsU0FBVWQsRUFBVSxHQUNoRixDQUVKLENFNUZBLE9BQVMsZUFBQWtCLEdBQWEsWUFBQUMsT0FBZ0IsUUEyRGxDLG1CQUFBQyxHQUNFLE9BQUFDLEdBREYsUUFBQUMsT0FBQSxvQkEzQ0csU0FBU0MsR0FBVUMsRUFBdUIsQ0FDL0MsR0FBTSxDQUFFLFNBQUFDLEVBQVUsT0FBQUMsRUFBUSxNQUFBQyxFQUFPLFFBQUFDLEVBQVUsQ0FBQyxFQUFHLFNBQUFDLENBQVMsRUFBSUwsRUFDdERNLEVBQWFKLEVBQU8sV0FBYSxHQUNqQ0ssRUFBZSxPQUFPSixDQUFLLEVBQzNCLENBQUNLLEVBQWNDLENBQWUsRUFBSUMsR0FBU0gsQ0FBWSxFQUN2RCxDQUFDSSxFQUFXQyxDQUFZLEVBQUlGLEdBQWtCUCxJQUFVLElBQUksRUFFNURVLEVBQXNCQyxHQUFtQixDQUM3Q0wsRUFBZ0JLLENBQU0sQ0FDeEIsRUFFTUMsRUFBb0JDLEdBQXFCLENBQzdDSixFQUFhSSxDQUFPLENBQ3RCLEVBRU1DLEVBQW9CQyxHQUFZLElBQ2hDUCxFQUNFUixJQUFVLE1BQ1pGLEVBQVMsSUFBSSxFQUNOLElBRUYsR0FHTE8sSUFBaUJELEdBQ25CTixFQUFTTyxDQUFZLEVBQ2QsSUFFRixHQUNOLENBQUNBLEVBQWNELEVBQWNOLEVBQVVVLEVBQVdSLENBQUssQ0FBQyxFQUVyRGdCLEVBQWUsSUFBTSxDQUN6QlYsRUFBZ0JGLENBQVksRUFDNUJLLEVBQWFULElBQVUsSUFBSSxDQUM3QixFQUVNLENBQUUsV0FBQWlCLEVBQVksYUFBQUMsQ0FBYSxFQUFJQyxFQUFrQixDQUNyRCxPQUFRTCxFQUNSLFNBQVVFLEVBQ1YsU0FBQWQsQ0FDRixDQUFDLEVBRUQsT0FDRVAsR0FBQUYsR0FBQSxDQUNFLFVBQUFDLEdBQUMsT0FBSSxVQUFVLCtJQUNaLFNBQUFXLEVBQ0gsRUFDQVgsR0FBQyxPQUFJLFVBQVUsa0xBQ1osU0FBQU8sRUFBUSxJQUFLVSxHQUNaakIsR0FBQyxVQUVDLFFBQVMsSUFBTWdCLEVBQW1CQyxDQUFNLEVBQ3hDLFVBQVdTLEdBQWMsQ0FBRSxRQUFTVCxJQUFXTixFQUFlLFVBQVksU0FBVSxDQUFDLEVBQ3JGLFNBQVVHLEdBQWFOLEVBRXRCLFNBQUFTLEdBTElBLENBTVAsQ0FDRCxFQUNILEVBQ0FqQixHQUFDMkIsR0FBQSxDQUNDLE9BQVFKLEVBQ1IsU0FBVUMsRUFDVixhQUFjZixFQUFhUyxFQUFtQixPQUM5QyxPQUFRSixFQUNSLFNBQVVOLEVBQ1osR0FDRixDQUVKLENDcEZBLE9BQU9vQixJQUFTLFlBQUFDLE9BQWdCLFFBOEQ1QixtQkFBQUMsR0FFSSxPQUFBQyxHQUZKLFFBQUFDLE9BQUEsb0JBakRHLFNBQVNDLEdBQVVDLEVBQXVCLENBQy9DLEdBQU0sQ0FBRSxNQUFBQyxFQUFPLFNBQUFDLEVBQVUsT0FBQUMsRUFBUSxTQUFBQyxDQUFTLEVBQUlKLEVBQ3hDSyxFQUFhRixFQUFPLFdBQWEsR0FDakNHLEVBQWVMLElBQVUsS0FBTyxHQUFLLEtBQUssVUFBVUEsRUFBTyxLQUFNLENBQUMsRUFDbEUsQ0FBQ00sRUFBY0MsQ0FBZSxFQUFJQyxHQUFpQkgsQ0FBWSxFQUMvRCxDQUFDSSxFQUFXQyxDQUFZLEVBQUlGLEdBQWtCUixJQUFVLElBQUksRUFFNURXLEVBQWdCQyxHQUE4QyxDQUNsRUwsRUFBZ0JLLEVBQUUsT0FBTyxLQUFLLENBQ2hDLEVBRU1DLEVBQW9CQyxHQUFxQixDQUM3Q0osRUFBYUksQ0FBTyxDQUN0QixFQUdNQyxFQUFvQkMsR0FBTSxZQUFZLElBQU0sQ0FDaEQsR0FBSVAsRUFDRixPQUFJVCxJQUFVLE1BQ1pDLEVBQVMsSUFBSSxFQUNOLElBRUYsR0FHVCxJQUFNZ0IsRUFBWVgsSUFBaUIsR0FBSyxLQUFRLEtBQUssTUFBTUEsQ0FBWSxFQUd2RSxPQUFJVyxJQUFjakIsR0FDaEJDLEVBQVNnQixDQUFTLEVBQ1gsSUFFRixFQUNULEVBQUcsQ0FBQ1gsRUFBY04sRUFBT0MsRUFBVVEsQ0FBUyxDQUFDLEVBRXZDUyxFQUFlLElBQU0sQ0FFekJYLEVBQWdCRixDQUFZLEVBQzVCSyxFQUFhVixJQUFVLElBQUksQ0FDN0IsRUFHTSxDQUFFLFdBQUFtQixFQUFZLGFBQUFDLENBQWEsRUFBSUMsRUFBa0IsQ0FDckQsT0FBUU4sRUFDUixTQUFVRyxFQUNWLFNBQUFmLENBQ0YsQ0FBQyxFQUVELE9BQ0VOLEdBQUFGLEdBQUEsQ0FDRSxVQUFBQyxHQUFDLE9BQUksVUFBVSx1REFDYixTQUFBQSxHQUFDLFlBQ0MsS0FBTSxFQUNOLE1BQU9VLEVBQ1AsU0FBVUssRUFDVixTQUFVRixHQUFhTixFQUN2QixVQUFVLG9NQUNWLEtBQUssUUFDUCxFQUNGLEVBQ0FQLEdBQUMwQixHQUFBLENBQ0MsT0FBUUgsRUFDUixTQUFVQyxFQUNWLGFBQWNoQixFQUFhUyxFQUFtQixPQUM5QyxPQUFRSixFQUNSLFNBQVVOLEVBQ1osR0FDRixDQUVKLENDbEZBLE9BQU9vQixJQUFTLFlBQUFDLE9BQWdCLFFBZ0U1QixtQkFBQUMsR0FFSSxPQUFBQyxHQURGLFFBQUFDLE9BREYsb0JBbERHLFNBQVNDLEdBQWFDLEVBQTBCLENBQ3JELEdBQU0sQ0FBRSxNQUFBQyxFQUFPLFNBQUFDLEVBQVUsT0FBQUMsRUFBUSxTQUFBQyxDQUFTLEVBQUlKLEVBQ3hDSyxFQUFhRixFQUFPLFdBQWEsR0FDakMsQ0FBQ0csRUFBY0MsQ0FBZSxFQUFJQyxHQUFpQlAsSUFBVSxLQUFPLEdBQUssT0FBT0EsQ0FBSyxDQUFDLEVBQ3RGLENBQUNRLEVBQVdDLENBQVksRUFBSUYsR0FBa0JQLElBQVUsSUFBSSxFQUM1RFUsRUFBZVYsSUFBVSxLQUFPLEdBQUssT0FBT0EsQ0FBSyxFQUVqRFcsRUFBZ0JDLEdBQTJDLENBQy9ETixFQUFnQk0sRUFBRSxPQUFPLEtBQUssQ0FDaEMsRUFFTUMsRUFBb0JDLEdBQXFCLENBQzdDTCxFQUFhSyxDQUFPLENBQ3RCLEVBR01DLEVBQW9CQyxHQUFNLFlBQVksSUFBTSxDQUNoRCxHQUFJUixFQUNGLE9BQUlSLElBQVUsTUFDWkMsRUFBUyxJQUFJLEVBQ04sSUFFRixHQUlULElBQU1nQixFQUFlWixJQUFpQixHQUFLLEtBQU8sT0FBT0EsQ0FBWSxFQUdyRSxPQUFJQSxJQUFpQkwsR0FDbkJDLEVBQVNnQixDQUFZLEVBQ2QsSUFFRixFQUNULEVBQUcsQ0FBQ1osRUFBY0wsRUFBT0MsRUFBVU8sQ0FBUyxDQUFDLEVBRXZDVSxFQUFlLElBQU0sQ0FFekJaLEVBQWdCSSxDQUFZLEVBQzVCRCxFQUFhVCxJQUFVLElBQUksQ0FDN0IsRUFHTSxDQUFFLFdBQUFtQixFQUFZLGFBQUFDLENBQWEsRUFBSUMsRUFBa0IsQ0FDckQsT0FBUU4sRUFDUixTQUFVRyxFQUNWLFNBQUFmLENBQ0YsQ0FBQyxFQUVELE9BQ0VOLEdBQUFGLEdBQUEsQ0FDRSxVQUFBRSxHQUFDLE9BQUksVUFBVSx3RkFDYixVQUFBRCxHQUFDMEIsR0FBQSxDQUFNLFFBQVEsZ0JBQWdCLFVBQVUsYUFBYSxtQkFFdEQsRUFDQTFCLEdBQUMsU0FDQyxLQUFLLE9BQ0wsVUFBVSxVQUNWLFFBQVEsT0FDUixNQUFPUyxFQUNQLFNBQVVNLEVBQ1YsU0FBVUgsR0FBYUwsRUFDdkIsVUFBVSw0TUFDVixLQUFLLE1BQ0wsS0FBSyxRQUNQLEdBQ0YsRUFDQVAsR0FBQzJCLEdBQUEsQ0FDQyxPQUFRSixFQUNSLFNBQVVDLEVBQ1YsYUFBY2hCLEVBQWFTLEVBQW1CLE9BQzlDLE9BQVFMLEVBQ1IsU0FBVUwsRUFDWixHQUNGLENBRUosQ0N6RkEsT0FBT3FCLE9BQVcsUUE0Q2QsbUJBQUFDLEdBRUksT0FBQUMsR0FERixRQUFBQyxPQURGLG9CQS9CRyxTQUFTQyxHQUFTQyxFQUFzQixDQUM3QyxHQUFNLENBQUUsU0FBQUMsRUFBVSxNQUFBQyxFQUFPLFNBQUFDLENBQVMsRUFBSUgsRUFFaENJLEVBQWUsT0FBT0YsQ0FBSyxFQUUzQixDQUFFLGVBQUFHLEVBQWdCLE1BQU9DLENBQVcsRUFBSUMsR0FBUyxDQUFFLGFBQUFILENBQWEsQ0FBQyxFQUV2RSxTQUFTSSxFQUFlQyxFQUFrQixDQUN4Q0EsRUFBTSxlQUFlLEVBQ2pCSCxJQUFlRixHQUNqQkgsRUFBU0ssQ0FBVSxDQUV2QixDQUVBLElBQU1JLEVBQW9CQyxHQUFNLFlBQVksSUFDdENMLElBQWVGLEdBQ2pCSCxFQUFTSyxDQUFVLEVBQ1osSUFFRixHQUNOLENBQUNBLEVBQVlGLEVBQWNILENBQVEsQ0FBQyxFQUVqQ1csRUFBZSxJQUFNLENBQUMsRUFFdEIsQ0FBRSxXQUFBQyxFQUFZLGFBQUFDLENBQWEsRUFBSUMsRUFBa0IsQ0FDckQsT0FBUUwsRUFDUixTQUFVRSxFQUNWLFNBQUFULENBQ0YsQ0FBQyxFQUVELE9BQ0VMLEdBQUFGLEdBQUEsQ0FDRSxVQUFBRSxHQUFDLFFBQUssU0FBVVUsRUFDZCxVQUFBWCxHQUFDbUIsR0FBQSxDQUNDLFVBQVUsNklBQ1YsU0FBVVgsRUFDVixLQUFLLE9BQ0wsTUFBT0MsRUFDUCxTQUFVSCxFQUNaLEVBQ0FOLEdBQUMsU0FBTSxLQUFLLFNBQVMsVUFBVSxhQUFhLEdBQzlDLEVBQ0FBLEdBQUNvQixHQUFBLENBQWEsT0FBUUosRUFBWSxTQUFVQyxFQUFjLFNBQVVYLEVBQVUsR0FDaEYsQ0FFSixDQzNEQSxPQUFPZSxPQUFXLFFBQ2xCLE9BQU9DLE9BQXFCLCtCQUU1QixPQUFTLGVBQUFDLEdBQWEsV0FBQUMsT0FBZSxRQStFakMsbUJBQUFDLEdBRUksT0FBQUMsR0FERixRQUFBQyxPQURGLG9CQXJFSkMsR0FBTSxPQUFPQyxFQUFlLEVBU3JCLFNBQVNDLEdBQVVDLEVBQXVCLENBQy9DLEdBQU0sQ0FBRSxTQUFBQyxFQUFVLE1BQUFDLEVBQU8sU0FBQUMsQ0FBUyxFQUFJSCxFQUVoQ0ksRUFBZSxPQUFPRixDQUFLLEVBRTNCLENBQUUsZUFBQUcsRUFBZ0IsTUFBT0MsQ0FBVyxFQUFJQyxHQUFTLENBQUUsYUFBQUgsQ0FBYSxDQUFDLEVBR2pFSSxFQUFnQkMsR0FBUSxJQUFNLENBQ2xDLEdBQUksQ0FDRixHQUFJLENBQUNILEVBQVcsU0FBUyxHQUFHLEVBQUcsT0FBT0EsRUFFdEMsSUFBTUksRUFBYyxzQkFBc0IsS0FBS0osQ0FBVSxFQUNuREssRUFBT2QsR0FBTSxjQUFjUyxDQUFVLEVBQUUsRUFDN0MsR0FBSUssRUFBSyxRQUFRLEVBQ2YsT0FBT0EsRUFBSyxPQUFPLFFBQVEsR0FBS0QsRUFBYyxLQUFLQyxFQUFLLE9BQU8sR0FBRyxDQUFDLElBQU0sSUFHM0UsSUFBTUMsRUFBWSw2REFDWkMsRUFBUVAsRUFBVyxNQUFNTSxDQUFTLEVBQ3hDLEdBQUlDLEVBQU8sQ0FDVCxJQUFNQyxFQUFRLFNBQVNELEVBQU0sQ0FBQyxHQUFLLEtBQU0sRUFBRSxFQUNyQ0UsRUFBVUYsRUFBTSxDQUFDLEdBQUssS0FDdEJHLEVBQVdILEVBQU0sQ0FBQyxHQUFLLEdBQ3ZCSSxFQUFTSCxHQUFTLEdBQUssS0FBTyxLQUdwQyxNQUFPLEdBRlFBLEVBQVEsS0FBTyxFQUFJLEdBQUtBLEVBQVEsRUFFL0IsSUFBSUMsQ0FBTyxJQUFJRSxDQUFNLEdBQUdELEVBQVcsS0FBS0EsQ0FBUSxJQUFNLEVBQUUsRUFDMUUsQ0FFQSxPQUFPVixDQUNULE1BQVEsQ0FDTixPQUFPQSxDQUNULENBQ0YsRUFBRyxDQUFDQSxDQUFVLENBQUMsRUFFZixTQUFTWSxFQUFlQyxFQUFrQixDQUN4Q0EsRUFBTSxlQUFlLEVBQ2pCYixJQUFlRixHQUNqQkgsRUFBU0ssQ0FBVSxDQUV2QixDQUVBLElBQU1jLEVBQW9CQyxHQUFZLElBQ2hDZixJQUFlRixHQUNqQkgsRUFBU0ssQ0FBVSxFQUNaLElBRUYsR0FDTixDQUFDQSxFQUFZRixFQUFjSCxDQUFRLENBQUMsRUFFakNxQixFQUFlLElBQU0sQ0FBQyxFQUV0QixDQUFFLFdBQUFDLEVBQVksYUFBQUMsQ0FBYSxFQUFJQyxFQUFrQixDQUNyRCxPQUFRTCxFQUNSLFNBQVVFLEVBQ1YsU0FBQW5CLENBQ0YsQ0FBQyxFQUVELE9BQ0VQLEdBQUFGLEdBQUEsQ0FDRSxVQUFBRSxHQUFDLFFBQUssU0FBVXNCLEVBQ2QsVUFBQXZCLEdBQUMrQixHQUFBLENBQ0MsVUFBVSw2SUFDVixTQUFVckIsRUFDVixLQUFLLE9BQ0wsTUFBT0MsRUFDVCxFQUNBWCxHQUFDLFNBQU0sS0FBSyxTQUFTLFVBQVUsYUFBYSxHQUM5QyxFQUNBQyxHQUFDLE9BQUksVUFBVSx5RUFDYixVQUFBRCxHQUFDLE9BQUksVUFBVSxzQ0FBc0MsMkJBQWUsRUFDcEVBLEdBQUMsT0FBSSxVQUFVLDZDQUE4QyxTQUFBYSxFQUFjLEdBQzdFLEVBQ0FiLEdBQUNnQyxHQUFBLENBQWEsT0FBUUosRUFBWSxTQUFVQyxFQUFjLFNBQVVyQixFQUFVLEdBQ2hGLENBRUosQ1h2RVcsY0FBQXlCLE9BQUEsb0JBaEJKLFNBQVNDLEdBQVNDLEVBS3RCLENBQ0QsR0FBTSxDQUFFLEtBQUFDLEVBQU0sT0FBQUMsRUFBUSxTQUFBQyxDQUFTLEVBQUlILEVBQzdCLENBQUUsTUFBQUksRUFBTyxRQUFBQyxFQUFTLFFBQUFDLENBQVEsRUFBSUosRUFBTyxTQUNyQ0ssRUFBV0wsRUFBTyxZQUFjRixFQUFNLFNBRXRDUSxFQUFZUCxFQUFLLFNBQVMsRUFHMUJRLEVBQVFELElBQWMsT0FBWSxHQUFLQSxFQUU3QyxPQUFJSixJQUFVLFdBQ0xOLEdBQUNZLEdBQUEsQ0FBVSxTQUFVUCxFQUFVLE1BQU9NLEVBQU8sT0FBUVAsRUFBUSxTQUFVSyxFQUFVLEVBR3RGSCxJQUFVLE9BQ0xOLEdBQUNhLEdBQUEsQ0FBVSxTQUFVUixFQUFVLE1BQU9NLEVBQU8sT0FBUVAsRUFBUSxTQUFVSyxFQUFVLEVBR3RGSCxJQUFVLFFBQVVFLEVBQ2ZSLEdBQUNjLEdBQUEsQ0FBVSxTQUFVVCxFQUFVLE1BQU9NLEVBQU8sT0FBUVAsRUFBUSxTQUFVSyxFQUFVLEVBR3RGSCxJQUFVLFVBQ0xOLEdBQUNlLEdBQUEsQ0FBYSxTQUFVVixFQUFVLE1BQU9NLEVBQU8sT0FBUVAsRUFBUSxTQUFVSyxFQUFVLEVBR3pGSCxJQUFVLE9BQ0xOLEdBQUNnQixHQUFBLENBQVUsU0FBVVgsRUFBVSxNQUFPTSxFQUFPLFFBQVNKLEVBQVMsT0FBUUgsRUFBUSxTQUFVSyxFQUFVLEVBR3hHSCxJQUFVLFVBQ0xOLEdBQUNpQixHQUFBLENBQWEsU0FBVVosRUFBVSxNQUFPTSxFQUFPLE9BQVFQLEVBQVEsU0FBVUssRUFBVSxFQUkzRlQsR0FBQ2tCLEdBQUEsQ0FBUyxTQUFVYixFQUFVLE1BQU9jLEdBQWFSLENBQUssRUFBSSxLQUFLLFVBQVVBLENBQUssRUFBSUEsRUFBTyxTQUFVRixFQUFVLENBRWxILENZdERBLE9BQTJCLGlCQUFBVyxPQUFxQix3QkFFaEQsT0FBUyxRQUFBQyxPQUFZLFNBcUNFLE9Bb0NuQixZQUFBQyxHQXBDbUIsT0FBQUMsT0FBQSxvQkFsQmhCLFNBQVNDLEdBQVdDLEVBQWMsQ0FDdkMsR0FBTSxDQUFFLE1BQU9DLEVBQWEsV0FBQUMsRUFBWSxjQUFBQyxDQUFjLEVBQUlILEVBQ3BESSxFQUFXLEVBQVFDLEdBQWUsRUFFeEMsU0FBU0MsRUFBZ0JDLEVBQWtCQyxFQUFxQyxDQUM5RUwsRUFBZU0sR0FBYSxDQUMxQixJQUFNQyxFQUFVLENBQUMsR0FBR0QsQ0FBUSxFQUM1QixPQUFBQyxFQUFRSCxDQUFRLEVBQUksQ0FBRSxHQUFHRyxFQUFRSCxDQUFRLEVBQUcsR0FBR0MsQ0FBVyxFQUVuREUsQ0FDVCxDQUFDLENBQ0gsQ0FFQSxJQUFNQyxFQUFhLE9BQU8sT0FBT1YsRUFBWSxRQUFRLE9BQU8sRUFBRSxJQUFLVyxHQUM3REEsRUFBTyxLQUFPLGNBQ1QsQ0FDTCxHQUFHQSxFQUNILE1BQU8sQ0FDTCxNQUFPLElBQU1kLEdBQUNlLEdBQUEsRUFBVSxDQUMxQixDQUNGLEVBR0ssQ0FDTCxHQUFHRCxFQUNILEtBQUssQ0FBRSxLQUFBRSxDQUFLLEVBQUcsQ0FDYixPQUFRZCxHQUNORixHQUFDaUIsR0FBQSxDQUNDLGNBQWVDLEdBQVEsQ0FBRSxLQUFBRixFQUFNLE9BQVFGLEVBQU8sS0FBZ0IsTUFBQVosQ0FBTSxDQUFDLEVBQ3JFLGVBQWdCaUIsR0FBUyxDQUN2QixLQUFBSCxFQUNBLE9BQVFGLEVBQU8sS0FDZixTQUFTTSxFQUFPLENBQ2RaLEVBQWdCTixFQUFNLFNBQVUsQ0FBRSxDQUFDWSxFQUFPLEVBQUcsRUFBR00sQ0FBTSxDQUFDLENBQ3pELEVBQ0EsU0FBQWQsQ0FDRixDQUFDLEVBQ0gsQ0FFSixDQUNGLENBQ0QsRUFFS2UsRUFBUUMsR0FBYyxDQUMxQixHQUFHbkIsRUFBWSxRQUNmLFFBQVNVLEVBQ1QsY0FBZSxHQUNmLG1CQUFvQixPQUNwQixnQkFBaUIsT0FDakIsS0FBTVQsRUFDTixNQUFPbUIsR0FBS3BCLEVBQVksUUFBUSxNQUFPLENBQUMsYUFBYyxTQUFTLENBQUMsQ0FDbEUsQ0FBQyxFQUVELE9BQ0VILEdBQUFELEdBQUEsQ0FDRyxTQUFBc0IsRUFBTSxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUNHLEVBQUtDLElBQ2xDekIsR0FBQzBCLEdBQUEsQ0FDRSxTQUFBRixFQUFJLGdCQUFnQixFQUFFLElBQUksQ0FBQ1IsRUFBTVcsSUFBTSxDQUN0QyxHQUFJLE9BQU9YLEVBQUssT0FBTyxVQUFVLE1BQVMsV0FBWSxDQUVwRCxJQUFNWSxFQUFPWixFQUFLLE9BQU8sVUFBVSxLQUFLQSxFQUFLLFdBQVcsQ0FBQyxFQUN6RCxPQUFPaEIsR0FBQzRCLEVBQUEsQ0FBYyxHQUFHQyxHQUF1QmIsRUFBSyxPQUFRLE1BQU0sRUFBRyxTQUFVUyxHQUE5REUsQ0FBaUUsQ0FDckYsQ0FFQSxPQUFPLElBQ1QsQ0FBQyxHQVRZRixDQVVmLENBQ0QsRUFDSCxDQUVKLEN2R2NVLE9Bb0VNLFlBQUFLLEdBcEVOLE9BQUFDLEVBc0RJLFFBQUFDLE9BdERKLG9CQXhFSCxTQUFTQyxHQUFnQkMsRUFBOEIsQ0FDNUQsSUFBTUMsRUFBYSxFQUFRQyxHQUFjLEVBQ25DLENBQUUsWUFBQUMsRUFBYSxRQUFBQyxFQUFTLGFBQUFDLEVBQWMsaUJBQUFDLEVBQWtCLGlCQUFBQyxFQUFrQixpQkFBQUMsQ0FBaUIsRUFBSUMsRUFBVSxFQUN6RyxDQUFFLGFBQUFDLEVBQWMsZ0JBQUFDLENBQWdCLEVBQUlDLEdBQVcsRUFDL0MsQ0FBRSxnQkFBQUMsRUFBaUIsbUJBQUFDLENBQW1CLEVBQUlDLEdBQWMsRUFDeEQsQ0FBQ0MsRUFBWUMsQ0FBYSxFQUFJQyxHQUFvQyxDQUFDLENBQUMsRUFDcEUsQ0FBRSxjQUFBQyxFQUFlLGlCQUFBQyxFQUFrQixjQUFBQyxFQUFlLGlCQUFBQyxDQUFpQixFQUFJQyxHQUFhLEVBRXBGLENBQUUsS0FBQUMsRUFBTSxXQUFBQyxDQUFXLEVBQUlDLEdBQW9CLENBQy9DLEdBQUdiLEVBQ0gsVUFBV0gsRUFDWCxPQUFRUyxDQUNWLENBQUMsRUFDSyxDQUFFLGdCQUFBUSxFQUFpQixZQUFBQyxHQUFhLGtCQUFBQyxFQUFtQixxQkFBQUMsQ0FBcUIsRUFBSUMsR0FBYVAsQ0FBSSxFQUU3RlEsRUFBVyxDQUFDLE9BQU8sT0FBTzdCLEdBQWEsU0FBVyxDQUFDLENBQUMsRUFBRSxLQUFNOEIsR0FBV0EsRUFBTyxjQUFjLEVBQzVGQyxFQUFjQyxHQUFlLEVBQzdCQyxFQUFTQyxHQUFxQixFQUM5QkMsR0FBU0MsR0FBcUIsRUFLcEMsR0FGQUMsR0FBVSxJQUFNdkIsRUFBYyxDQUFDLENBQUMsRUFBRyxDQUFDZCxDQUFXLENBQUMsRUFFNUMsQ0FBQ0EsRUFDSCxPQUFPLEtBR1QsU0FBU3NDLEdBQWlCLENBQ3hCTCxFQUFPLE9BQU9wQixFQUFZLENBQ3hCLFFBQUFaLEVBQ0EsV0FBWSxDQUNWc0MsR0FBTSxRQUFRLDRCQUE0QixFQUMxQ3pCLEVBQWMsQ0FBQyxDQUFDLENBQ2xCLENBQ0YsQ0FBQyxDQUNILENBRUEsU0FBUzBCLElBQWUsQ0FFdEIxQixFQUFlMkIsR0FBUSxDQUFDLEdBQUdBLEVBQUssQ0FBQyxDQUFDLENBQUMsQ0FDckMsQ0FFQSxTQUFTQyxJQUFpQixDQUN4QjVCLEVBQWMsQ0FBQyxDQUFDLENBQ2xCLENBRUEsU0FBUzZCLEdBQXNCQyxFQUFnQmQsRUFBZ0JlLEdBQW9DLENBQ2pHVixHQUFPLE9BQU8sQ0FDWixRQUFTLENBQUUsUUFBUyxDQUFFLENBQUNMLEVBQU8sSUFBSSxFQUFHYyxDQUFNLEVBQUcsSUFBQUMsR0FBSyxNQUFPN0MsQ0FBYSxFQUN2RSxRQUFTLENBQUMsQ0FDWixDQUFDLENBQ0gsQ0FFQSxTQUFTOEMsR0FBbUJDLEVBQWUsQ0FDckNBLElBQVMsR0FDWDVCLEVBQWlCSCxDQUFhLEVBRTlCQyxFQUFpQkMsQ0FBYSxDQUVsQyxDQUdBLElBQU04QixHQUFxQixPQUFPLE9BQU9oRCxHQUFhLFNBQVcsQ0FBQyxDQUFDLEVBQUUsSUFBSzhCLElBQ2pFLENBQ0wsR0FBSUEsRUFBTyxLQUNYLFlBQWFBLEVBQU8sS0FDcEIsS0FBTUEsRUFDTixRQUFTLENBQ1AsT0FBT21CLEdBQW1CLENBQUUsT0FBQW5CLENBQU8sQ0FBQyxDQUN0QyxFQUNBLEtBQUssQ0FBRSxLQUFBb0IsQ0FBSyxFQUFHLENBQ2IsT0FBUUMsSUFDTnpELEVBQUMwRCxHQUFBLENBQ0MsY0FBZUMsR0FBUSxDQUFFLEtBQUFILEVBQU0sT0FBQXBCLEVBQVEsTUFBQXFCLEVBQU0sQ0FBQyxFQUM5QyxlQUFnQkcsR0FBUyxDQUN2QixLQUFBSixFQUNBLE9BQUFwQixFQUNBLFNBQUFELEVBQ0EsU0FBU2UsR0FBTyxDQUNkLE9BQU9ELEdBQXNCQyxHQUFPZCxFQUFRb0IsRUFBSyxJQUFJLFFBQVEsQ0FDL0QsQ0FDRixDQUFDLEVBQ0gsQ0FFSixDQUNGLEVBQ0QsRUFHS0ssR0FBb0IsQ0FDeEIsQ0FDRSxHQUFJLGNBQ0osWUFBYSxjQUNiLGNBQWUsR0FDZixlQUFnQixHQUNoQixjQUFlLEdBQ2YsZ0JBQWlCLEdBQ2pCLEtBQU0sRUFDTixPQUFPLENBQUUsTUFBQUMsQ0FBTSxFQUFHLENBQ2hCLE9BQ0U5RCxFQUFDK0QsR0FBQSxDQUNDLFFBQVNELEVBQU0scUJBQXFCLEVBQ3BDLGdCQUFrQlosR0FBVVksRUFBTSxzQkFBc0IsQ0FBQyxDQUFDWixDQUFLLEVBQy9ELFNBQVVmLEVBQ1osQ0FFSixFQUNBLEtBQUssQ0FBRSxJQUFBZ0IsQ0FBSSxFQUFHLENBQ1osT0FBUU0sR0FDQ3pELEVBQUNnRSxHQUFBLENBQWMsSUFBS2IsRUFBSyxTQUFVaEIsRUFBVyxHQUFHc0IsRUFBTyxDQUVuRSxDQUNGLENBQ0YsRUFFTVEsR0FBYSxDQUFDLEdBQUdYLEdBQW9CLEdBQUdPLEVBQWlCLEVBQUUsS0FBS0ssRUFBb0IsRUFFMUYsT0FDRWpFLEdBQUFGLEdBQUEsQ0FDRSxVQUFBQyxFQUFDLE9BQUksVUFBVSx5R0FDYixTQUFBQSxFQUFDLE9BQUksVUFBVSxnRUFDYixTQUFBQyxHQUFDLE9BQUksVUFBVSwwREFDYixVQUFBQSxHQUFDLE9BQUksVUFBVSxtQ0FDYixVQUFBRCxFQUFDbUUsRUFBQSxDQUFPLFFBQVEsVUFBVSxLQUFLLEtBQUssUUFBU3pELEVBQzFDLFNBQUFDLEVBQW1CWCxFQUFDb0UsR0FBQSxFQUFlLEVBQUtwRSxFQUFDcUUsR0FBQSxFQUFjLEVBQzFELEVBQ0FwRSxHQUFDcUUsR0FBQSxDQUFRLGFBQWNsQixHQUNyQixVQUFBcEQsRUFBQ3VFLEdBQUEsQ0FBZSxRQUFPLEdBQ3JCLFNBQUF2RSxFQUFDbUUsRUFBQSxDQUFPLFFBQVEsVUFBVSxLQUFLLEtBQzdCLFNBQUFuRSxFQUFDd0UsR0FBQSxFQUFXLEVBQ2QsRUFDRixFQUNBeEUsRUFBQ3lFLEdBQUEsQ0FBZSxNQUFNLFFBQVEsS0FBSyxTQUFTLFVBQVUsV0FDcEQsU0FBQXpFLEVBQUMwRSxHQUFBLENBQVcsT0FBUWxELEVBQWUsVUFBV0MsRUFBa0IsTUFBT25CLEVBQWEsRUFDdEYsR0FDRixFQUNBTixFQUFDbUUsRUFBQSxDQUFPLFFBQVEsVUFBVSxLQUFLLEtBQUssUUFBU3JCLEdBQWMsU0FBVVQsRUFBYyxFQUFHLHNCQUV0RixFQUNDbEIsRUFBVyxPQUFTLEdBQ25CbEIsR0FBQUYsR0FBQSxDQUNFLFVBQUFDLEVBQUNtRSxFQUFBLENBQU8sUUFBUSxZQUFZLEtBQUssS0FBSyxRQUFTdkIsRUFBZ0IsZ0JBRS9ELEVBRUE1QyxFQUFDbUUsRUFBQSxDQUFPLFFBQVEsUUFBUSxLQUFLLEtBQUssUUFBU25CLEdBQWdCLGtCQUUzRCxHQUNGLEVBRURqQixJQUNDL0IsRUFBQUQsR0FBQSxDQUNFLFNBQUFDLEVBQUNtRSxFQUFBLENBQU8sUUFBUSxZQUFZLEtBQUssS0FBSyxRQUFTckMsRUFBaUIsa0JBRWhFLEVBQ0YsR0FFSixFQUVBOUIsRUFBQ21FLEVBQUEsQ0FBTyxRQUFRLFVBQVUsS0FBSyxPQUFPLFFBQVMxRCxFQUM1QyxTQUFBRCxFQUFlUixFQUFDMkUsR0FBQSxFQUFTLEVBQUszRSxFQUFDNEUsR0FBQSxFQUFTLEVBQzNDLEdBQ0YsRUFDRixFQUNGLEVBQ0E1RSxFQUFDNkUsR0FBQSxDQUNDLFdBQVlaLEdBQ1osY0FBZ0JILEdBQVU5RCxFQUFDOEUsR0FBQSxDQUFpQixNQUFBaEIsRUFBTyxXQUFBM0MsRUFBWSxjQUFBQyxFQUFpQixFQUNoRixVQUFXUSxFQUNYLGFBQWN4QixFQUNkLG1CQUFvQmEsRUFDcEIscUJBQXNCZ0IsRUFDdEIsZ0JBQWlCbkIsRUFDakIsVUFBV2lFLEdBQWFwRCxHQUFNLGtCQUFvQixJQUFVWCxFQUFnQixRQUFRLEVBQ3BGLGdCQUFpQkEsRUFDakIsS0FBTVcsR0FBTSxNQUFRLENBQUMsRUFDckIsa0JBQW1CSyxFQUNuQixhQUFjbkIsRUFDaEIsR0FDRixDQUVKLENBRUEsU0FBU2tFLEdBQWFDLEVBQTBEQyxFQUFzQyxDQUNwSCxHQUFJRCxJQUFhLElBQ2YsT0FHRixJQUFNRSxFQUFZLFFBQVEsT0FBT0YsQ0FBUSxFQUFJLE9BQU9DLENBQVEsRUFBSSxPQUFPLENBQUMsR0FBSyxPQUFPQSxDQUFRLENBQUMsRUFFN0YsT0FBTyxPQUFPLGNBQWNDLENBQVMsRUFBSUEsRUFBWSxPQUFPLGdCQUM5RCxDQUVBLFNBQVNoQixHQUFxQmlCLEVBQXVDQyxFQUF1QyxDQUMxRyxJQUFNQyxFQUFRRixFQUFFLEtBQ1ZHLEVBQVFGLEVBQUUsS0FFaEIsT0FBSUQsRUFBRSxLQUFPLGVBQWlCQyxFQUFFLEtBQU8sY0FDOUIsRUFHTEMsSUFBVSxRQUFhQyxJQUFVLE9BQzVCLEVBR0xELEVBQU0sZ0JBQWtCLENBQUNDLEVBQU0sZUFDMUIsR0FFTCxDQUFDRCxFQUFNLGdCQUFrQkMsRUFBTSxlQUMxQixFQUdGRCxFQUFNLEtBQUssY0FBY0MsRUFBTSxJQUFJLENBQzVDLEN3R3RQQSxPQUFTLFFBQUFDLE9BQVksdUJDQXJCLE9BQVMsZUFBQUMsR0FBYSxhQUFBQyxHQUFXLFdBQUFDLE9BQWUsUUFDaEQsT0FBUyxNQUFNQyxPQUFjLE9DRDdCLE9BQVMsWUFBQUMsT0FBZ0Isd0JBS2xCLElBQU1DLEdBQTBCLEdBRWhDLFNBQVNDLElBQW1CLENBQ2pDLEdBQU0sQ0FBRSxRQUFBQyxDQUFRLEVBQUlDLEVBQVUsRUFFOUIsT0FBT0MsR0FBUyxDQUNkLFlBQWEsQ0FDWCxRQUFTLENBQ1AsQ0FBQ0YsRUFBUSxlQUFpQixJQUFJLEVBQUcsQ0FDL0IsT0FBUSxDQUFDLENBQ1gsQ0FDRixFQUNBLFNBQVUsTUFDVixnQkFBaUIsQ0FBQyxDQUNwQixFQUNBLHFCQUFzQkYsR0FDdEIsUUFBUyxNQUFPLENBQUUsT0FBQUssQ0FBTyxJQUFNLENBQzdCLEdBQU0sQ0FBQ0MsRUFBT0MsQ0FBYSxFQUFJLE1BQU1MLEVBQVEsV0FBVyxDQUFFLFlBQWFHLENBQU8sQ0FBQyxFQUUvRSxHQUFJQyxFQUNGLE1BQU1BLEVBR1IsT0FBT0MsQ0FDVCxFQUNBLFNBQVUsQ0FBQyxlQUFlLEVBRzFCLFVBQVlDLEdBQVNBLEVBQUksTUFBTSxnQkFBa0JSLEdBQTBCLEVBQUksR0FDakYsQ0FBQyxDQUNILENEdEJPLFNBQVNTLElBQWlCLENBQy9CLEdBQU0sQ0FBRSxZQUFBQyxFQUFhLGVBQUFDLEVBQWdCLFFBQUFDLEVBQVMsbUJBQUFDLENBQW1CLEVBQUlDLEVBQVUsRUFDekUsQ0FBRSxLQUFNQyxFQUFlLGNBQUFDLENBQWMsRUFBSUMsR0FBaUIsRUFDMURDLEVBQVlGLElBQWtCRyxHQUc5QkMsRUFBa0JDLEdBQVEsSUFDdkIsT0FBTyxPQUFPTixFQUFjLFFBQVFILEVBQVEsZUFBaUIsSUFBSSxHQUFHLFFBQVUsQ0FBQyxDQUFDLEVBQ3RGLENBQUNHLEVBQWMsUUFBU0gsRUFBUSxhQUFhLENBQUMsRUFHM0NVLEVBQWtCRCxHQUFRLElBQ3ZCLE9BQU8sT0FBT04sRUFBYyxPQUFPLEVBQUUsT0FBTyxDQUFDUSxFQUFLQyxJQUNoREQsRUFBTSxPQUFPLEtBQUtDLEVBQU8sTUFBTSxFQUFFLE9BQ3ZDLENBQUMsRUFDSCxDQUFDVCxFQUFjLE9BQU8sQ0FBQyxFQUVwQixDQUFDVSxDQUFVLEVBQUlMLEVBRWYsQ0FBQ00sRUFBZ0JDLENBQWlCLEVBQUlDLEdBQ25DLENBQ0wsTUFBTyxDQUNMLGFBQWMsS0FDZCxNQUFRQyxHQUFxQkEsRUFDN0IsVUFBWUEsR0FBcUJBLEdBQUssRUFDeEMsRUFDQSxPQUFRLENBQ04sYUFBYyxHQUNkLE1BQVFBLEdBQXFCQSxFQUM3QixVQUFZQSxHQUFxQkEsR0FBSyxFQUN4QyxDQUNGLENBQ0YsRUFFTSxDQUFDLENBQUVDLENBQVksRUFBSUMsR0FBNkIsWUFBYSxDQUNqRSxNQUFRRixHQUFNQSxFQUNkLFVBQVlBLEdBQU1BLEdBQUssRUFDekIsQ0FBQyxFQUNLLENBQUMsQ0FBRUcsQ0FBWSxFQUFJRCxHQUE2QixPQUFRLENBQzVELE1BQVFGLEdBQU1BLEVBQ2QsVUFBWUEsR0FBTUEsR0FBSyxFQUN6QixDQUFDLEVBR0RJLEdBQVUsSUFBTSxDQUNkLEdBQUksQ0FBQWYsRUFFSixJQUFJUSxHQUFnQixPQUFTTixFQUFPLE9BQVMsRUFBRyxDQUM5QyxJQUFNYyxFQUFpQmQsRUFBTyxLQUFNZSxHQUFNQSxFQUFFLE9BQVNULEVBQWUsS0FBSyxFQUV6RSxHQUFJUSxFQUFnQixDQUNsQnZCLEVBQWV1QixDQUFjLEVBQzdCLE1BQ0YsQ0FDRixDQUVJZCxFQUFPLE9BQVMsR0FBSyxDQUFDVixJQUN4QkMsRUFBZWMsR0FBYyxJQUFJLEVBQzdCQSxHQUNHRSxFQUFrQixDQUFFLE1BQU9GLEVBQVcsS0FBTSxPQUFRQSxFQUFXLE1BQU8sQ0FBQyxHQUdsRixFQUFHLENBQUNQLEVBQVdRLEVBQWdCTixFQUFRSyxFQUFZZixFQUFhQyxFQUFnQmdCLENBQWlCLENBQUMsRUFNbEcsSUFBTVMsRUFBb0JDLEdBQ3ZCQyxHQUFvQixDQUNmNUIsSUFBZ0I0QixJQUNsQjNCLEVBQWUyQixDQUFRLEVBQ2xCWCxFQUFrQixDQUFFLE1BQU9XLEVBQVMsS0FBTSxPQUFRQSxFQUFTLE1BQU8sQ0FBQyxFQUVuRVIsRUFBYSxJQUFJLEVBQ2pCRSxFQUFhLElBQUksRUFFMUIsRUFDQSxDQUFDdEIsRUFBYUMsRUFBZ0JnQixFQUFtQkcsRUFBY0UsQ0FBWSxDQUM3RSxFQUVBLE9BQUFDLEdBQVUsSUFBTSxDQUVWakIsSUFBa0IsSUFDcEJILEVBQW1CLENBQ2pCLE1BQU8sa0JBQ1AsUUFBUyxDQUNQLFNBQVUwQixHQUFPLEVBQ2pCLFVBQVcsSUFBSSxLQUFLLEVBQUUsWUFBWSxFQUNsQyxZQUFhakIsQ0FDZixDQUNGLENBQUMsQ0FFTCxFQUFHLENBQUNGLEVBQVFQLEVBQW9CRyxFQUFlTSxDQUFlLENBQUMsRUFFeEQsQ0FDTCxPQUFBRixFQUNBLFlBQUFWLEVBQ0EsVUFBQVEsRUFDQSxrQkFBQWtCLENBQ0YsQ0FDRixDRC9FYyxjQUFBSSxHQXNCUixRQUFBQyxPQXRCUSxvQkF4QlAsU0FBU0MsR0FBVyxDQUFFLFVBQUFDLENBQVUsRUFBb0IsQ0FFekQsR0FBTSxDQUFFLE9BQUFDLEVBQVEsWUFBQUMsRUFBYSxVQUFBQyxFQUFXLGtCQUFBQyxDQUFrQixFQUFJQyxHQUFlLEVBRXZFQyxFQUFpQkMsRUFDckIsd0hBQ0FQLENBQ0YsRUFFQSxPQUNFSCxHQUFDLE9BQUksVUFBV1MsRUFFZCxTQUFBVCxHQUFDRSxHQUFXLE1BQVgsQ0FBaUIsTUFBTSxTQUNyQixTQUFBRSxFQUFPLE9BQVMsRUFDZkEsRUFBTyxJQUFLTyxHQUNWWCxHQUFDRSxHQUFXLEtBQVgsQ0FFQyxRQUFPLEdBQ1AsU0FBVUcsSUFBZ0JNLEVBQzFCLFFBQVMsSUFBTSxDQUNiSixFQUFrQkksQ0FBSyxDQUN6QixFQUNBLFVBQVcsK05BRVgsU0FBQVgsR0FBQyxLQUFFLEtBQU0sVUFBVVcsRUFBTSxJQUFJLFdBQVdBLEVBQU0sTUFBTSxHQUFLLFNBQUFBLEVBQU0sS0FBSyxHQVIvRCxHQUFHQSxFQUFNLE1BQU0sSUFBSUEsRUFBTSxJQUFJLEVBU3BDLENBQ0QsRUFDQ0wsRUFDRixNQUFNLENBQUMsRUFDSixLQUFLLElBQUksRUFDVCxJQUFJLENBQUNNLEVBQUdDLElBQ1BiLEdBQUNFLEdBQVcsS0FBWCxDQUE0QixtQkFBb0IsR0FDL0MsU0FBQUYsR0FBQ2MsR0FBQSxDQUFTLFVBQVUsbUJBQW1CLEdBRG5CRCxDQUV0QixDQUNELEVBRUhiLEdBQUNFLEdBQVcsS0FBWCxDQUFnQiwyQkFBZSxFQUVwQyxFQUNGLENBRUosQ0FFQSxJQUFNYSxHQUFRLENBQUMsQ0FBRSxVQUFBWixFQUFXLE1BQUFhLEVBQU8sU0FBQUMsRUFBVSxHQUFHQyxDQUFNLElBRWxEakIsR0FBQyxPQUFJLFVBQVdFLEVBQVksR0FBR2UsRUFDN0IsVUFBQWpCLEdBQUMsT0FBSSxVQUFVLG9IQUNiLFVBQUFELEdBQUNtQixHQUFBLENBQU8sS0FBTSxHQUFJLFVBQVUsOEJBQThCLEVBQzFEbkIsR0FBQyxNQUFHLFVBQVUsNEJBQTZCLFNBQUFnQixFQUFNLEdBQ25ELEVBQ0FoQixHQUFDLE9BQUksYUFBWWdCLEVBQU8sVUFBVSwrQ0FDL0IsU0FBQUMsRUFDSCxHQUNGLEVBSUVHLEdBQU8sQ0FBQyxDQUNaLFVBQUFqQixFQUNBLFFBQUFrQixFQUFVLEdBQ1YsU0FBQUMsRUFDQSxLQUFBQyxFQUNBLFNBQUFOLEVBQ0EsbUJBQUFPLEVBQXFCLEdBQ3JCLEdBQUdOLENBQ0wsSUFTSWxCLEdBSFdxQixFQUFVSSxHQUFPLFNBRzNCLENBQ0MsZUFBYSxjQUNiLFlBQVdGLEVBQ1gsY0FBYUQsRUFDYixVQUFXWixFQUNULCtJQUNBUCxDQUNGLEVBQ0MsR0FBR2UsRUFFSCxTQUFBTSxFQUFxQnhCLEdBQUMsUUFBSyxVQUFVLGNBQWUsU0FBQWlCLEVBQVMsRUFBVUEsRUFDMUUsRUFJSmYsR0FBVyxNQUFRYSxHQUNuQmIsR0FBVyxLQUFPa0IsR3ZIakVQLGNBQUFNLEdBb0JMLFFBQUFDLE9BcEJLLG9CQUxKLFNBQVNDLEdBQU9DLEVBQW9CLENBQ3pDLEdBQU0sQ0FBRSxRQUFBQyxFQUFTLFFBQUFDLEVBQVMsaUJBQUFDLENBQWlCLEVBQUlILEVBRS9DLE9BQUtDLEVBTUhKLEdBQUNPLEdBQUEsQ0FBc0IsUUFBU0gsRUFBUyxRQUFTQyxFQUFTLGlCQUFrQkMsRUFDM0UsU0FBQU4sR0FBQ1EsR0FBQSxFQUFjLEVBQ2pCLEdBUEEsUUFBUSxNQUFNLHlDQUF5QyxFQUNoRFIsR0FBQyxPQUFJLHNDQUEwQixFQVExQyxDQUVBLFNBQVNRLElBQWdCLENBQ3ZCLEdBQU0sQ0FBRSxhQUFBQyxFQUFjLGlCQUFBQyxDQUFpQixFQUFJQyxFQUFVLEVBRS9DQyxFQUFtQkMsRUFDdkIseURBQ0FKLEdBQWdCLHlEQUNsQixFQUVBLE9BQ0VULEdBQUMsT0FBSSxVQUFXWSxFQUNkLFNBQUFYLEdBQUMsT0FBSSxVQUFVLG9HQUNiLFVBQUFELEdBQUNjLEdBQUEsQ0FBZ0IsS0FBSyxPQUNuQixTQUFBSixHQUNDVixHQUFDZSxHQUFPLElBQVAsQ0FDQyxRQUFTLENBQUUsTUFBTyxFQUFHLFFBQVMsQ0FBRSxFQUNoQyxRQUFTLENBQUUsTUFBTyxPQUFRLFFBQVMsQ0FBRSxFQUNyQyxLQUFNLENBQUUsTUFBTyxFQUFHLFFBQVMsQ0FBRSxFQUM3QixXQUFZLENBQUUsU0FBVSxHQUFLLEVBRTdCLFNBQUFmLEdBQUNnQixHQUFBLEVBQVcsRUFDZCxFQUVKLEVBRUFoQixHQUFDZSxHQUFPLElBQVAsQ0FDQyxVQUFVLDZJQUNWLFdBQVksQ0FBRSxTQUFVLEdBQUssRUFFN0IsU0FBQWYsR0FBQ2lCLEdBQUEsRUFBZ0IsRUFDbkIsR0FDRixFQUNGLENBRUoiLAogICJuYW1lcyI6IFsiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJjbHN4IiwgIkNMQVNTX1BBUlRfU0VQQVJBVE9SIiwgImNyZWF0ZUNsYXNzR3JvdXBVdGlscyIsICJjb25maWciLCAiY2xhc3NNYXAiLCAiY3JlYXRlQ2xhc3NNYXAiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAiZ2V0Q2xhc3NHcm91cElkIiwgImNsYXNzTmFtZSIsICJjbGFzc1BhcnRzIiwgInNwbGl0IiwgImxlbmd0aCIsICJzaGlmdCIsICJnZXRHcm91cFJlY3Vyc2l2ZSIsICJnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkiLCAiZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzIiwgImNsYXNzR3JvdXBJZCIsICJoYXNQb3N0Zml4TW9kaWZpZXIiLCAiY29uZmxpY3RzIiwgImNsYXNzUGFydE9iamVjdCIsICJjdXJyZW50Q2xhc3NQYXJ0IiwgIm5leHRDbGFzc1BhcnRPYmplY3QiLCAibmV4dFBhcnQiLCAiZ2V0IiwgImNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCIsICJzbGljZSIsICJ1bmRlZmluZWQiLCAidmFsaWRhdG9ycyIsICJjbGFzc1Jlc3QiLCAiam9pbiIsICJmaW5kIiwgInZhbGlkYXRvciIsICJhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4IiwgInRlc3QiLCAiYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUiLCAiZXhlYyIsICJwcm9wZXJ0eSIsICJzdWJzdHJpbmciLCAiaW5kZXhPZiIsICJ0aGVtZSIsICJwcmVmaXgiLCAiTWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMiLCAiZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJjbGFzc0dyb3VwcyIsICJmb3JFYWNoIiwgImNsYXNzR3JvdXAiLCAicHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSIsICJjbGFzc0RlZmluaXRpb24iLCAiY2xhc3NQYXJ0T2JqZWN0VG9FZGl0IiwgImdldFBhcnQiLCAiaXNUaGVtZUdldHRlciIsICJwdXNoIiwgImtleSIsICJwYXRoIiwgImN1cnJlbnRDbGFzc1BhcnRPYmplY3QiLCAicGF0aFBhcnQiLCAiaGFzIiwgInNldCIsICJmdW5jIiwgImNsYXNzR3JvdXBFbnRyaWVzIiwgIm1hcCIsICJwcmVmaXhlZENsYXNzR3JvdXAiLCAiZnJvbUVudHJpZXMiLCAidmFsdWUiLCAiY3JlYXRlTHJ1Q2FjaGUiLCAibWF4Q2FjaGVTaXplIiwgImNhY2hlU2l6ZSIsICJjYWNoZSIsICJwcmV2aW91c0NhY2hlIiwgInVwZGF0ZSIsICJJTVBPUlRBTlRfTU9ESUZJRVIiLCAiY3JlYXRlUGFyc2VDbGFzc05hbWUiLCAic2VwYXJhdG9yIiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIiwgImZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyIiwgInNlcGFyYXRvckxlbmd0aCIsICJwYXJzZUNsYXNzTmFtZSIsICJtb2RpZmllcnMiLCAiYnJhY2tldERlcHRoIiwgIm1vZGlmaWVyU3RhcnQiLCAicG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAiaW5kZXgiLCAiY3VycmVudENoYXJhY3RlciIsICJiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyIiwgImhhc0ltcG9ydGFudE1vZGlmaWVyIiwgInN0YXJ0c1dpdGgiLCAiYmFzZUNsYXNzTmFtZSIsICJtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIiwgInNvcnRNb2RpZmllcnMiLCAic29ydGVkTW9kaWZpZXJzIiwgInVuc29ydGVkTW9kaWZpZXJzIiwgIm1vZGlmaWVyIiwgInNvcnQiLCAiY3JlYXRlQ29uZmlnVXRpbHMiLCAiU1BMSVRfQ0xBU1NFU19SRUdFWCIsICJtZXJnZUNsYXNzTGlzdCIsICJjbGFzc0xpc3QiLCAiY29uZmlnVXRpbHMiLCAiY2xhc3NHcm91cHNJbkNvbmZsaWN0IiwgImNsYXNzTmFtZXMiLCAidHJpbSIsICJyZXN1bHQiLCAib3JpZ2luYWxDbGFzc05hbWUiLCAiQm9vbGVhbiIsICJ2YXJpYW50TW9kaWZpZXIiLCAibW9kaWZpZXJJZCIsICJjbGFzc0lkIiwgImluY2x1ZGVzIiwgImNvbmZsaWN0R3JvdXBzIiwgImkiLCAiZ3JvdXAiLCAidHdKb2luIiwgImFyZ3VtZW50IiwgInJlc29sdmVkVmFsdWUiLCAic3RyaW5nIiwgImFyZ3VtZW50cyIsICJ0b1ZhbHVlIiwgIm1peCIsICJrIiwgImNyZWF0ZVRhaWx3aW5kTWVyZ2UiLCAiY3JlYXRlQ29uZmlnRmlyc3QiLCAiY3JlYXRlQ29uZmlnUmVzdCIsICJjYWNoZUdldCIsICJjYWNoZVNldCIsICJmdW5jdGlvblRvQ2FsbCIsICJpbml0VGFpbHdpbmRNZXJnZSIsICJyZWR1Y2UiLCAicHJldmlvdXNDb25maWciLCAiY3JlYXRlQ29uZmlnQ3VycmVudCIsICJ0YWlsd2luZE1lcmdlIiwgImNhY2hlZFJlc3VsdCIsICJhcHBseSIsICJmcm9tVGhlbWUiLCAidGhlbWVHZXR0ZXIiLCAiYXJiaXRyYXJ5VmFsdWVSZWdleCIsICJmcmFjdGlvblJlZ2V4IiwgInN0cmluZ0xlbmd0aHMiLCAiU2V0IiwgInRzaGlydFVuaXRSZWdleCIsICJsZW5ndGhVbml0UmVnZXgiLCAiY29sb3JGdW5jdGlvblJlZ2V4IiwgInNoYWRvd1JlZ2V4IiwgImltYWdlUmVnZXgiLCAiaXNMZW5ndGgiLCAiaXNOdW1iZXIiLCAiaXNBcmJpdHJhcnlMZW5ndGgiLCAiZ2V0SXNBcmJpdHJhcnlWYWx1ZSIsICJpc0xlbmd0aE9ubHkiLCAiTnVtYmVyIiwgImlzTmFOIiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgImlzSW50ZWdlciIsICJpc1BlcmNlbnQiLCAiZW5kc1dpdGgiLCAiaXNBcmJpdHJhcnlWYWx1ZSIsICJpc1RzaGlydFNpemUiLCAic2l6ZUxhYmVscyIsICJpc0FyYml0cmFyeVNpemUiLCAiaXNOZXZlciIsICJpc0FyYml0cmFyeVBvc2l0aW9uIiwgImltYWdlTGFiZWxzIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiaXNJbWFnZSIsICJpc0FyYml0cmFyeVNoYWRvdyIsICJpc1NoYWRvdyIsICJpc0FueSIsICJsYWJlbCIsICJ0ZXN0VmFsdWUiLCAiZ2V0RGVmYXVsdENvbmZpZyIsICJjb2xvcnMiLCAiZnJvbVRoZW1lIiwgInNwYWNpbmciLCAiYmx1ciIsICJicmlnaHRuZXNzIiwgImJvcmRlckNvbG9yIiwgImJvcmRlclJhZGl1cyIsICJib3JkZXJTcGFjaW5nIiwgImJvcmRlcldpZHRoIiwgImNvbnRyYXN0IiwgImdyYXlzY2FsZSIsICJodWVSb3RhdGUiLCAiaW52ZXJ0IiwgImdhcCIsICJncmFkaWVudENvbG9yU3RvcHMiLCAiZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMiLCAiaW5zZXQiLCAibWFyZ2luIiwgIm9wYWNpdHkiLCAicGFkZGluZyIsICJzYXR1cmF0ZSIsICJzY2FsZSIsICJzZXBpYSIsICJza2V3IiwgInNwYWNlIiwgInRyYW5zbGF0ZSIsICJnZXRPdmVyc2Nyb2xsIiwgImdldE92ZXJmbG93IiwgImdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc0FyYml0cmFyeVZhbHVlIiwgImdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5IiwgImdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSIsICJpc0xlbmd0aCIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc051bWJlciIsICJnZXRQb3NpdGlvbnMiLCAiZ2V0TGluZVN0eWxlcyIsICJnZXRCbGVuZE1vZGVzIiwgImdldEFsaWduIiwgImdldFplcm9BbmRFbXB0eSIsICJnZXRCcmVha3MiLCAiZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5IiwgImNhY2hlU2l6ZSIsICJzZXBhcmF0b3IiLCAidGhlbWUiLCAiaXNBbnkiLCAiaXNUc2hpcnRTaXplIiwgImlzUGVyY2VudCIsICJjbGFzc0dyb3VwcyIsICJhc3BlY3QiLCAiY29udGFpbmVyIiwgImNvbHVtbnMiLCAiYm94IiwgImRpc3BsYXkiLCAiZmxvYXQiLCAiY2xlYXIiLCAiaXNvbGF0aW9uIiwgIm9iamVjdCIsICJvdmVyZmxvdyIsICJvdmVyc2Nyb2xsIiwgInBvc2l0aW9uIiwgInN0YXJ0IiwgImVuZCIsICJ0b3AiLCAicmlnaHQiLCAiYm90dG9tIiwgImxlZnQiLCAidmlzaWJpbGl0eSIsICJ6IiwgImlzSW50ZWdlciIsICJiYXNpcyIsICJmbGV4IiwgImdyb3ciLCAic2hyaW5rIiwgIm9yZGVyIiwgImNvbCIsICJzcGFuIiwgInJvdyIsICJqdXN0aWZ5IiwgImNvbnRlbnQiLCAiaXRlbXMiLCAic2VsZiIsICJwIiwgInB4IiwgInB5IiwgInBzIiwgInBlIiwgInB0IiwgInByIiwgInBiIiwgInBsIiwgIm0iLCAibXgiLCAibXkiLCAibXMiLCAibWUiLCAibXQiLCAibXIiLCAibWIiLCAibWwiLCAidyIsICJzY3JlZW4iLCAiaCIsICJzaXplIiwgInRleHQiLCAiZm9udCIsICJpc0FyYml0cmFyeU51bWJlciIsICJ0cmFja2luZyIsICJsZWFkaW5nIiwgImxpc3QiLCAicGxhY2Vob2xkZXIiLCAiZGVjb3JhdGlvbiIsICJpbmRlbnQiLCAiYWxpZ24iLCAid2hpdGVzcGFjZSIsICJicmVhayIsICJoeXBoZW5zIiwgImJnIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAicmVwZWF0IiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc0FyYml0cmFyeUltYWdlIiwgImZyb20iLCAidmlhIiwgInRvIiwgInJvdW5kZWQiLCAiYm9yZGVyIiwgImRpdmlkZSIsICJvdXRsaW5lIiwgInJpbmciLCAic2hhZG93IiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImZpbHRlciIsICJ0YWJsZSIsICJjYXB0aW9uIiwgInRyYW5zaXRpb24iLCAiZHVyYXRpb24iLCAiZWFzZSIsICJkZWxheSIsICJhbmltYXRlIiwgInRyYW5zZm9ybSIsICJyb3RhdGUiLCAib3JpZ2luIiwgImFjY2VudCIsICJhcHBlYXJhbmNlIiwgImN1cnNvciIsICJjYXJldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNuYXAiLCAidG91Y2giLCAic2VsZWN0IiwgImZpbGwiLCAic3Ryb2tlIiwgInNyIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cHMiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIiwgIm1lcmdlQ29uZmlncyIsICJiYXNlQ29uZmlnIiwgInByZWZpeCIsICJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsICJleHRlbmQiLCAib3ZlcnJpZGUiLCAib3ZlcnJpZGVQcm9wZXJ0eSIsICJjb25maWdLZXkiLCAib3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzIiwgImtleSIsICJtZXJnZUNvbmZpZ1Byb3BlcnRpZXMiLCAiYmFzZU9iamVjdCIsICJvdmVycmlkZUtleSIsICJvdmVycmlkZVZhbHVlIiwgInVuZGVmaW5lZCIsICJvdmVycmlkZU9iamVjdCIsICJtZXJnZU9iamVjdCIsICJtZXJnZVZhbHVlIiwgImNvbmNhdCIsICJleHRlbmRUYWlsd2luZE1lcmdlIiwgImNvbmZpZ0V4dGVuc2lvbiIsICJjcmVhdGVDb25maWciLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJ0d01lcmdlIiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY24iLCAiaW5wdXRzIiwgImNsc3giLCAidXNlSXNNdXRhdGluZyIsICJ0b0tlYmFiQ2FzZSIsICJzdHJpbmciLCAibWVyZ2VDbGFzc2VzIiwgImNsYXNzZXMiLCAiY2xhc3NOYW1lIiwgImluZGV4IiwgImFycmF5IiwgImRlZmF1bHRBdHRyaWJ1dGVzIiwgIkljb24iLCAiZm9yd2FyZFJlZiIsICJjb2xvciIsICJzaXplIiwgInN0cm9rZVdpZHRoIiwgImFic29sdXRlU3Ryb2tlV2lkdGgiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgImljb25Ob2RlIiwgInJlc3QiLCAicmVmIiwgImNyZWF0ZUVsZW1lbnQiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAibWVyZ2VDbGFzc2VzIiwgInRhZyIsICJhdHRycyIsICJjcmVhdGVMdWNpZGVJY29uIiwgImljb25OYW1lIiwgImljb25Ob2RlIiwgIkNvbXBvbmVudCIsICJmb3J3YXJkUmVmIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJJY29uIiwgIm1lcmdlQ2xhc3NlcyIsICJ0b0tlYmFiQ2FzZSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGVjayIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25Eb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uUmlnaHQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc0xlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlSGVscCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcHkiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3JuZXJEb3duTGVmdCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkZpbHRlciIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkdyaXBWZXJ0aWNhbCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleVJvdW5kIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWF4aW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNaW5pbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVEb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZVVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRPcGVuIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluT2ZmIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiVGFibGUyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiWCIsICJjcmVhdGVMdWNpZGVJY29uIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJTbG90IiwgImN2YSIsICJSZWFjdCIsICJqc3giLCAiYnV0dG9uVmFyaWFudHMiLCAiY3ZhIiwgIkJ1dHRvbiIsICJjbGFzc05hbWUiLCAidmFyaWFudCIsICJzaXplIiwgImFzQ2hpbGQiLCAicHJvcHMiLCAicmVmIiwgIlNsb3QiLCAiY24iLCAiQ2hlY2tib3hQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIkNoZWNrYm94IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiQ2hlY2siLCAiUG9wb3ZlclByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiUG9wb3ZlciIsICJQb3BvdmVyVHJpZ2dlciIsICJQb3BvdmVyQ29udGVudCIsICJjbGFzc05hbWUiLCAiYWxpZ24iLCAic2lkZU9mZnNldCIsICJwcm9wcyIsICJyZWYiLCAianN4IiwgImNuIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3QiLCAib25saW5lTWFuYWdlciIsICJ1c2VRdWVyeUNsaWVudCIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAiI2NsaWVudCIsICIjb25saW5lTWFuYWdlciIsICIjcXVlcnlGbGF2b3IiLCAiI3ZlcnNpb24iLCAiI2lzTW91bnRlZCIsICIjc3R5bGVOb25jZSIsICIjc2hhZG93RE9NVGFyZ2V0IiwgIiNidXR0b25Qb3NpdGlvbiIsICIjcG9zaXRpb24iLCAiI2luaXRpYWxJc09wZW4iLCAiI2Vycm9yVHlwZXMiLCAiI0NvbXBvbmVudCIsICIjZGlzcG9zZSIsICJjb25maWciLCAiY2xpZW50IiwgInF1ZXJ5Rmxhdm9yIiwgInZlcnNpb24iLCAib25saW5lTWFuYWdlciIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJpbml0aWFsSXNPcGVuIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiY3JlYXRlU2lnbmFsIiwgImlzT3BlbiIsICJlbCIsICJkaXNwb3NlIiwgInJlbmRlciIsICJfc2VsZiQiLCAiYnRuUG9zaXRpb24iLCAicG9zIiwgImVycm9ycyIsICJxdWVyeUNsaWVudCIsICJEZXZ0b29scyIsICJsYXp5IiwgInNldHVwU3R5bGVTaGVldCIsICJjcmVhdGVDb21wb25lbnQiLCAibWVyZ2VQcm9wcyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICIjb25DbG9zZSIsICJvbkNsb3NlIiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMiLCAicHJvcHMiLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicmVmIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAib25saW5lTWFuYWdlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJjcmVhdGVDb250ZXh0IiwgInVzZUNvbnRleHQiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJTb25uZXIiLCAianN4IiwgIlRvYXN0ZXIiLCAicHJvcHMiLCAiY3JlYXRlQWRhcHRlclByb3ZpZGVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VIYXNoQWRhcHRlciIsICJyYXdIYXNoIiwgImhhc2hQYXJhbXMiLCAic2V0SGFzaFBhcmFtcyIsICJ1cGRhdGVVcmwiLCAidXBkYXRlZCIsICJoaXN0b3J5IiwgInBhdGhuYW1lIiwgInNlYXJjaCIsICJoYXNoIiwgInVybCIsICJnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCIsICJyYXciLCAiaGFuZGxlSGFzaENoYW5nZSIsICJOdXFzSGFzaEFkYXB0ZXIiLCAianN4IiwgImpzeHMiLCAicXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiU3R1ZGlvQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlN0dWRpb0NvbnRleHRQcm92aWRlciIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJvdGhlclByb3BzIiwgImFjdGl2ZVRhYmxlIiwgInNldEFjdGl2ZVRhYmxlIiwgInVzZVN0YXRlIiwgImlzRnVsbHNjcmVlbiIsICJzZXRJc0Z1bGxzY3JlZW4iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJzZXRJc05hdmlnYXRpb25PcGVuIiwgIm9uRXJyb3IiLCAiZXJyb3IiLCAidG9hc3QiLCAiZW1pdFRlbGVtZXRyeUV2ZW50IiwgInVzZU1lbW8iLCAidG9nZ2xlRnVsbHNjcmVlbiIsICJwcmV2IiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiUXVlcnlDbGllbnRQcm92aWRlciIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMyIiwgIlRvYXN0ZXIiLCAiTnVxc0hhc2hBZGFwdGVyIiwgInVzZVN0dWRpbyIsICJjb250ZXh0IiwgInVzZUNvbnRleHQiLCAiZ2V0Um93SWQiLCAicm93IiwgInRhYmxlIiwgImlkIiwgImluZmVyUm93RmlsdGVyIiwgImFkZFJvd0lkVG9Sb3ciLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJyZXN1bHQiLCAicm93cyIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJuZXdEYXRhIiwgIm9sZERhdGEiLCAidXNlUXVlcnkiLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJwcm9wcyIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic29ydE9yZGVyIiwgImZpbHRlciIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJwcmV2aW91c0RhdGEiLCAicHJldmlvdXNRdWVyeSIsICJzY2hlbWEiLCAidGFibGUiLCAic2lnbmFsIiwgImVycm9yIiwgInJlc3VsdHMiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJpdGVtIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicXVlcnlLZXlQcmVmaXgiLCAidXNlTXV0YXRpb24iLCAicGFyYW1zIiwgImVycm9yIiwgInJlc3VsdCIsICJjaGFuZ2VzIiwgInJvdyIsICJvdmVyd3JpdGVDYWNoZWRSb3ciLCAiY2hhbmdlZFJvdyIsICJyb3dGaWx0ZXIiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiY2FjaGVkUm93IiwgImNvbHVtbk5hbWUiLCAidmFsdWUiLCAib3JpZ2luYWxWYWx1ZXMiLCAiZGV0YWlscyIsICJ1bmNoYW5nZWRSb3ciLCAiX19wc191cGRhdGVkX2F0X18iLCAiZ2V0RmluZGVyRm4iLCAidGFibGUiLCAidXBkYXRlckZuIiwgImZpbmRlciIsICJjYWNoZWRSZXN1bHQiLCAiY2FjaGVkUm93cyIsICJjYWNoZWRSb3dJbmRleCIsICJuZXdSb3ciLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAic2hvcnQiLCAibnVxc19leHBvcnRzIiwgIl9fZXhwb3J0IiwgImtleU1hcCIsICJ1cmxLZXlzIiwgInVzZVF1ZXJ5U3RhdGUiLCAidXNlUXVlcnlTdGF0ZXMiLCAiX19yZUV4cG9ydCIsICJudXFzX2V4cG9ydHMiLCAibnVxc19zdGFyIiwgInVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCIsICJ1c2VRdWVyeVN0YXRlc09yaWdpbmFsIiwgImtleU1hcCIsICJ1cmxLZXlzIiwgIl9CUkFORF9TWU1CT0wiLCAidXNlUXVlcnlTdGF0ZSIsICJrZXkiLCAib3B0aW9ucyIsICJ1c2VRdWVyeVN0YXRlcyIsICJkZWZhdWx0RmlsdGVyIiwgInNob3J0IiwgInVzZUZpbHRlcmluZyIsICJmaWx0ZXJQYXJhbSIsICJzZXRGaWx0ZXJQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAidXNlTWVtbyIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImZpbHRlciIsICJlZGl0aW5nRmlsdGVyIiwgInNldEVkaXRpbmdGaWx0ZXIiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgInVzZUlzTXV0YXRpbmciLCAidXNlSXNJbnNlcnRpbmciLCAibXV0YXRpb25LZXkiLCAidXNlQ2FsbGJhY2siLCAiREVGQVVMVF9QQUdFX1NJWkUiLCAicGFnaW5hdGlvblBhcnNlcnMiLCAidXNlUGFnaW5hdGlvbiIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic2V0UGFnaW5hdGlvbiIsICJ1c2VRdWVyeVN0YXRlcyIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlQ2FsbGJhY2siLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgIm5ld1N0YXRlIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAidXNlU2VsZWN0aW9uIiwgImRhdGEiLCAiYWN0aXZlVGFibGUiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicGFnaW5hdGlvblN0YXRlIiwgInVzZVBhZ2luYXRpb24iLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU3RhdGUiLCAiaXNTZWxlY3RpbmciLCAibXV0YXRlIiwgInVzZUFjdGl2ZVRhYmxlRGVsZXRlIiwgInVzZUVmZmVjdCIsICJkZWxldGVTZWxlY3Rpb24iLCAicm93cyIsICJyb3ciLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZVNvcnRpbmciLCAic29ydFBhcmFtIiwgInNldFNvcnRQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgInBhcnNlU29ydGluZyIsICJpdGVtIiwgImNvbHVtbiIsICJkaXJlY3Rpb24iLCAiZSIsICJzb3J0aW5nU3RhdGUiLCAic2V0U29ydGluZ1N0YXRlIiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJuZXdTb3J0aW5nU3RhdGUiLCAibmV3U3RhdGUiLCAicmVzb2x2ZWRTdGF0ZSIsICJzb3J0U3RyaW5nIiwgImlzT2JqZWN0VHlwZSIsICJmb3J3YXJkUmVmIiwgIlJlYWN0IiwgImpzeCIsICJUYWJsZSIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlRhYmxlSGVhZGVyIiwgIlRhYmxlQm9keSIsICJUYWJsZUZvb3RlciIsICJUYWJsZVJvdyIsICJUYWJsZUhlYWQiLCAiVGFibGVDZWxsIiwgIlRhYmxlQ2FwdGlvbiIsICJpc1ZhbGlkRWxlbWVudCIsICJDb250ZXh0TWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkNvbnRleHRNZW51U3ViQ29udGVudCIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgIkNvbnRleHRNZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiQ29udGV4dE1lbnVSYWRpb0l0ZW0iLCAiQ2lyY2xlIiwgIkNvbnRleHRNZW51TGFiZWwiLCAiQ29udGV4dE1lbnVTZXBhcmF0b3IiLCAiQ29udGV4dE1lbnVTaG9ydGN1dCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJjb250ZW50IiwgImV4dHJhY3RUZXh0Q29udGVudCIsICJlcnJvciIsICJDb3B5IiwgIm5vZGUiLCAiaXNWYWxpZEVsZW1lbnQiLCAianN4IiwgIkNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgInJlZiIsICJzdHlsZSIsICJmb3J3YXJkZWRQcm9wcyIsICJUYWJsZUNlbGwiLCAiY24iLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAianN4IiwgIkJvb2xlYW5DZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRGF0ZUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJFbXB0eUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJFbnVtQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJvcHRpb25zIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiSlNPTkNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJOdWxsQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIk51bWVyaWNDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiUmF3Q2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIlRpbWVDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAianN4IiwgImdldENlbGwiLCAiY2VsbCIsICJjb2x1bW4iLCAicHJvcHMiLCAidmFsdWUiLCAiRW1wdHlDZWxsIiwgIk51bGxDZWxsIiwgImdyb3VwIiwgIm9wdGlvbnMiLCAiaXNBcnJheSIsICJKU09OQ2VsbCIsICJSYXdDZWxsIiwgIkVudW1DZWxsIiwgIkJvb2xlYW5DZWxsIiwgIkRhdGVDZWxsIiwgIlRpbWVDZWxsIiwgIk51bWVyaWNDZWxsIiwgImlzT2JqZWN0VHlwZSIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJTZWxlY3RSb3dDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgInJvdyIsICJyZWFkb25seSIsICJyZXN0IiwgIkNlbGwiLCAiQ2hlY2tib3giLCAiUG9wb3ZlclByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiUG9wb3ZlckNlbGxDb250ZXh0IiwgIlBvcG92ZXJDZWxsIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIm9wZW4iLCAic2V0T3BlbiIsICJQb3BvdmVyQ2VsbFRyaWdnZXIiLCAib25Eb3VibGVDbGljayIsICJjbGFzc05hbWUiLCAicmVmIiwgInRyaWdnZXJSZWYiLCAibm9kZSIsICJjbiIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiYWxpZ24iLCAic2lkZU9mZnNldCIsICJldmVudCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJhY3Rpb25zIiwgImNvbnRleHQiLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAiaGFuZGxlS2V5RG93biIsICJqc3giLCAianN4cyIsICJXcml0ZWFibGVDZWxsIiwgInByb3BzIiwgImNlbGxDb21wb25lbnQiLCAiaW5wdXRDb21wb25lbnQiLCAiUG9wb3ZlckNlbGwiLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIlBvcG92ZXJDZWxsQ29udGVudCIsICJjbG9zZXN0Q2VudGVyIiwgIkRuZENvbnRleHQiLCAiRHJhZ092ZXJsYXkiLCAiS2V5Ym9hcmRTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJ1c2VTZW5zb3IiLCAidXNlU2Vuc29ycyIsICJhcnJheU1vdmUiLCAiU29ydGFibGVDb250ZXh0IiwgInNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyIsICJ1c2VTb3J0YWJsZSIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiQ1NTIiwgIm1vdGlvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAiY3JlYXRlUG9ydGFsIiwgInNob3J0IiwgImNvZXJjZVRvVmFsdWUiLCAiY29sdW1uIiwgIm9wZXJhdG9yIiwgInZhbHVlIiwgImRhdGFUeXBlR3JvdXAiLCAiY29lcmNlVG9TdHJpbmciLCAiY3ZhIiwgImpzeCIsICJiYWRnZVZhcmlhbnRzIiwgImN2YSIsICJCYWRnZSIsICJjbGFzc05hbWUiLCAidmFyaWFudCIsICJwcm9wcyIsICJjbiIsICJEcm9wZG93bk1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJEcm9wZG93bk1lbnVTdWJDb250ZW50IiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAic2lkZU9mZnNldCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkRyb3Bkb3duTWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIkRyb3Bkb3duTWVudVNob3J0Y3V0IiwgIlJlYWN0IiwgImpzeCIsICJJbnB1dCIsICJjbGFzc05hbWUiLCAidHlwZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU2VsZWN0UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIlNlbGVjdCIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvbkRvd24iLCAiU2VsZWN0U2Nyb2xsVXBCdXR0b24iLCAiQ2hldnJvblVwIiwgIlNlbGVjdFNjcm9sbERvd25CdXR0b24iLCAiU2VsZWN0Q29udGVudCIsICJwb3NpdGlvbiIsICJTZWxlY3RMYWJlbCIsICJTZWxlY3RJdGVtIiwgIkNoZWNrIiwgIlNlbGVjdFNlcGFyYXRvciIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJMZWFkaW5nT3BlcmF0b3JTZWxlY3QiLCAidmFsdWUiLCAib25WYWx1ZUNoYW5nZSIsICJkaXNhYmxlZCIsICJ0cmlnZ2VyQ2xhc3NOYW1lIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiU2VsZWN0SXRlbSIsICJEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyIsICJhY3RpdmVJZCIsICJpdGVtcyIsICJ0YWJsZSIsICJhY3RpdmVJdGVtIiwgIml0ZW0iLCAibGVhZGluZ09wZXJhdG9yVmFsdWUiLCAic2hvd0xlYWRpbmdPcEZvck92ZXJsYXkiLCAiYWN0aXZlSXRlbUluZGV4IiwgInByZXZpb3VzSXRlbSIsICJGaWx0ZXJDb25kaXRpb24iLCAiRmlsdGVyR3JvdXBDb21wb25lbnQiLCAiRmlsdGVyTGlzdEl0ZW1zIiwgInBhcmVudEdyb3VwSWQiLCAib25VcGRhdGVJdGVtIiwgIm9uRGVsZXRlSXRlbSIsICJvblJlb3JkZXJJdGVtcyIsICJhY3RpdmVEcmFnSWQiLCAib25EcmFnU3RhcnQiLCAib25EcmFnRW5kU2lnbmFsIiwgInNvcnRhYmxlSXRlbUlkcyIsICJ1c2VNZW1vIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ1c2VTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJLZXlib2FyZFNlbnNvciIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAiRG5kQ29udGV4dCIsICJjbG9zZXN0Q2VudGVyIiwgImV2ZW50IiwgImFjdGl2ZSIsICJvdmVyIiwgIm9sZEluZGV4IiwgIm5ld0luZGV4IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiY3VycmVudEZpbHRlckl0ZW0iLCAiaW5kZXgiLCAic2hvd0xlYWRpbmdPcCIsICJsZWFkaW5nT3BWYWwiLCAib25MZWFkaW5nT3BDaGFuZ2VGbiIsICJpc0xlYWRpbmdPcFRhcmdldExhc3QiLCAicHJldkl0ZW0iLCAibmV3VmFsdWUiLCAidXBkYXRlZFByZXZJdGVtIiwgIlNvcnRhYmxlRmlsdGVySXRlbSIsICJ1cGRhdGVkRmlsdGVyIiwgImNyZWF0ZVBvcnRhbCIsICJEcmFnT3ZlcmxheSIsICJmaWx0ZXIiLCAib25VcGRhdGUiLCAib25EZWxldGUiLCAicGFyZW50RG5kSWQiLCAic2hvd0xlYWRpbmdPcGVyYXRvciIsICJvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSIsICJpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAic2V0Tm9kZVJlZiIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnSGFuZGxlUHJvcHMiLCAiaGFuZGxlQ29sdW1uQ2hhbmdlIiwgImhhbmRsZU9wZXJhdG9yQ2hhbmdlIiwgImhhbmRsZVZhbHVlQ2hhbmdlIiwgImUiLCAicmF3VmFsdWUiLCAiY29sdW1uSW5mbyIsICJjb2VyY2VUb1ZhbHVlIiwgImVkaXRlZFZhbHVlIiwgInNldEVkaXRlZFZhbHVlIiwgInVzZVN0YXRlIiwgImNvZXJjZVRvU3RyaW5nIiwgIm1vdGlvbiIsICJHcmlwVmVydGljYWwiLCAiY29sdW1uIiwgIklucHV0IiwgIkJ1dHRvbiIsICJYIiwgImdyb3VwIiwgImlzUm9vdCIsICJpc0V4cGFuZGVkIiwgInNldElzRXhwYW5kZWQiLCAic2V0QWN0aXZlRHJhZ0lkIiwgImhhbmRsZUFkZEZpbHRlciIsICJuZXdGaWx0ZXIiLCAic2hvcnQiLCAiaGFuZGxlQWRkR3JvdXAiLCAibmV3R3JvdXAiLCAidXBkYXRlSXRlbUluR3JvdXAiLCAidXBkYXRlZEZpbHRlck9yR3JvdXAiLCAibmV3RmlsdGVycyIsICJkZWxldGVJdGVtRnJvbUdyb3VwIiwgImhhbmRsZURyYWdTdGFydCIsICJoYW5kbGVEcmFnRW5kU2lnbmFsIiwgImhhbmRsZVJlb3JkZXJJdGVtcyIsICJyZW9yZGVyZWRGaWx0ZXJzIiwgImFycmF5TW92ZSIsICJyZW5kZXJHcm91cENvbnRlbnQiLCAiY24iLCAiQ2hldnJvbkRvd24iLCAiQ2hldnJvblJpZ2h0IiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQ2lyY2xlSGVscCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIlF1ZXJ5VmlzdWFsaXplciIsICJpc0FuZEdyb3VwT3BlbiIsICJmIiwgImkiLCAicmVzdWx0IiwgImlzTGFzdCIsICJvcGVyYXRvciIsICJGaWx0ZXJUcmVlIiwgInNldEZpbHRlciIsICJEbmRDb250ZXh0IiwgIk1vdXNlU2Vuc29yIiwgInVzZVNlbnNvciIsICJ1c2VTZW5zb3JzIiwgImFycmF5TW92ZSIsICJob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJTb3J0YWJsZUNvbnRleHQiLCAidXNlU29ydGFibGUiLCAiQ1NTIiwgImdldENvcmVSb3dNb2RlbCIsICJ1c2VSZWFjdFRhYmxlIiwgImdldEl0ZW0iLCAia2V5IiwgIml0ZW1WYWx1ZSIsICJsb2NhbFN0b3JhZ2UiLCAiSlNPTiIsICJwYXJzZSIsICJ1c2VMb2NhbFN0b3JhZ2UiLCAiZGVmYXVsdFZhbHVlIiwgInZhbHVlIiwgInNldFZhbHVlIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJpbml0aWFsVmFsdWUiLCAic2V0dGVyIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXIiLCAib2xkIiwgIm5ld1ZhbCIsICJzZXRJdGVtIiwgInN0cmluZ2lmeSIsICJkZWZhdWx0VGhlbWUiLCAiYmFja2dyb3VuZCIsICJiYWNrZ3JvdW5kQWx0IiwgImZvcmVncm91bmQiLCAiZ3JheSIsICJncmF5QWx0IiwgImlucHV0QmFja2dyb3VuZENvbG9yIiwgImlucHV0VGV4dENvbG9yIiwgInN1Y2Nlc3MiLCAiZGFuZ2VyIiwgImFjdGl2ZSIsICJ3YXJuaW5nIiwgIlRoZW1lQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlRoZW1lUHJvdmlkZXIiLCAiX3JlZiIsICJ0aGVtZSIsICJyZXN0IiwgImNyZWF0ZUVsZW1lbnQiLCAiUHJvdmlkZXIiLCAiX2V4dGVuZHMiLCAidXNlVGhlbWUiLCAidXNlQ29udGV4dCIsICJ1c2VNZWRpYVF1ZXJ5IiwgInF1ZXJ5IiwgImlzTWF0Y2giLCAic2V0SXNNYXRjaCIsICJ3aW5kb3ciLCAibWF0Y2hNZWRpYSIsICJtYXRjaGVzIiwgIm1hdGNoZXIiLCAib25DaGFuZ2UiLCAiYWRkTGlzdGVuZXIiLCAicmVtb3ZlTGlzdGVuZXIiLCAiaXNTZXJ2ZXIiLCAic3R5bGVkIiwgInR5cGUiLCAibmV3U3R5bGVzIiwgInF1ZXJpZXMiLCAiZm9yd2FyZFJlZiIsICJyZWYiLCAic3R5bGUiLCAibWVkaWFTdHlsZXMiLCAiT2JqZWN0IiwgImVudHJpZXMiLCAicmVkdWNlIiwgImN1cnJlbnQiLCAiX3JlZjIiLCAidXNlSXNNb3VudGVkIiwgIm1vdW50ZWRSZWYiLCAidXNlUmVmIiwgImlzTW91bnRlZCIsICJQYW5lbCIsICJfcHJvcHMiLCAiZm9udFNpemUiLCAiZm9udEZhbWlseSIsICJkaXNwbGF5IiwgImJhY2tncm91bmRDb2xvciIsICJjb2xvciIsICJmbGV4RGlyZWN0aW9uIiwgImZsZXgiLCAib3ZlcmZsb3ciLCAiaGVpZ2h0IiwgIihtYXgtd2lkdGg6IDcwMHB4KSIsICJib3JkZXJUb3AiLCAiQnV0dG9uIiwgInByb3BzIiwgImFwcGVhcmFuY2UiLCAiZm9udFdlaWdodCIsICJib3JkZXIiLCAiYm9yZGVyUmFkaXVzIiwgInBhZGRpbmciLCAib3BhY2l0eSIsICJkaXNhYmxlZCIsICJ1bmRlZmluZWQiLCAiY3Vyc29yIiwgImxpbmVIZWlnaHQiLCAiV2Via2l0QXBwZWFyYW5jZSIsICJiYWNrZ3JvdW5kSW1hZ2UiLCAiYmFja2dyb3VuZFJlcGVhdCIsICJiYWNrZ3JvdW5kUG9zaXRpb24iLCAiYmFja2dyb3VuZFNpemUiLCAiRW50cnkiLCAib3V0bGluZSIsICJ3b3JkQnJlYWsiLCAiTGFiZWwiLCAiVmFsdWUiLCAiU3ViRW50cmllcyIsICJtYXJnaW5MZWZ0IiwgInBhZGRpbmdMZWZ0IiwgImJvcmRlckxlZnQiLCAiSW5mbyIsICJFeHBhbmRlciIsICJleHBhbmRlZCIsICJ0cmFuc2l0aW9uIiwgInRyYW5zZm9ybSIsICJEZWZhdWx0UmVuZGVyZXIiLCAiaGFuZGxlRW50cnkiLCAibGFiZWwiLCAic3ViRW50cmllcyIsICJzdWJFbnRyeVBhZ2VzIiwgInRvZ2dsZSIsICJwYWdlU2l6ZSIsICJyZW5kZXJlciIsICJ2YWx1ZVNuYXBzaG90IiwgInNldFZhbHVlU25hcHNob3QiLCAiZXhwYW5kZWRQYWdlcyIsICJzZXRFeHBhbmRlZFBhZ2VzIiwgInJlZnJlc2hWYWx1ZVNuYXBzaG90IiwgImxlbmd0aCIsICJGcmFnbWVudCIsICJvbkNsaWNrIiwgIlN0cmluZyIsICJ0b0xvd2VyQ2FzZSIsICJtYXAiLCAiZW50cnkiLCAiaW5kZXgiLCAiaW5jbHVkZXMiLCAiZmlsdGVyIiwgImQiLCAiRXhwbG9yZXIiLCAiZGVmYXVsdEV4cGFuZGVkIiwgImdldE93blByb3BlcnR5TmFtZXMiLCAiX3JlZjMiLCAiZGVwdGgiLCAic2V0RXhwYW5kZWQiLCAic2V0IiwgInBhdGgiLCAibWFrZVByb3BlcnR5IiwgInN1YiIsICJuZXdQYXRoIiwgImNvbmNhdCIsICJzdWJEZWZhdWx0RXhwYW5kZWQiLCAic3ViUGF0aCIsICJBcnJheSIsICJpc0FycmF5IiwgImkiLCAiU3ltYm9sIiwgIml0ZXJhdG9yIiwgImZyb20iLCAidmFsIiwgIl9yZWY0IiwgInB1c2giLCAic2xpY2UiLCAiTG9nbyIsICJ3aWR0aCIsICJ2aWV3Qm94IiwgInZlcnNpb24iLCAic3Ryb2tlIiwgInN0cm9rZVdpZHRoIiwgImZpbGwiLCAiZmlsbFJ1bGUiLCAiaWQiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgImluaXRpYWxJc09wZW4iLCAidGFibGUiLCAicGFuZWxQcm9wcyIsICJ0b2dnbGVCdXR0b25Qcm9wcyIsICJjb250YWluZXJFbGVtZW50IiwgIkNvbnRhaW5lciIsICJyb290UmVmIiwgInBhbmVsUmVmIiwgImlzT3BlbiIsICJzZXRJc09wZW4iLCAicGFuZWxTdHlsZSIsICJvdGhlclBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uU3R5bGUiLCAib25Ub2dnbGVDbGljayIsICJvdGhlclRvZ2dsZUJ1dHRvblByb3BzIiwgImNsYXNzTmFtZSIsICJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCIsICJtYXhIZWlnaHQiLCAiZSIsICJtYXJnaW4iLCAiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCAiX19odG1sIiwgIm1pbkhlaWdodCIsICJib3JkZXJSaWdodCIsICJqdXN0aWZ5Q29udGVudCIsICJhbGlnbkl0ZW1zIiwgIm1hcmdpblJpZ2h0IiwgImZsZXhXcmFwIiwgIm92ZXJmbG93WSIsICJnZXRTdGF0ZSIsICJnZXRBbGxDb2x1bW5zIiwgImdldENvcmVSb3dNb2RlbCIsICJnZXRGaWx0ZXJlZFJvd01vZGVsIiwgImdldFNvcnRlZFJvd01vZGVsIiwgImdldEdyb3VwZWRSb3dNb2RlbCIsICJnZXRFeHBhbmRlZFJvd01vZGVsIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAianN4IiwgIlNrZWxldG9uIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJjbiIsICJmbGV4UmVuZGVyIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXIiLCAicHJvcHMiLCAiaGVhZGVyIiwgImNsYXNzTmFtZSIsICJjbiIsICJmbGV4UmVuZGVyIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTW92ZURvd24iLCAiTW92ZVVwIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkJ1dHRvbiIsICJDaGV2cm9uRG93biIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJBcnJvd1VwV2lkZU5hcnJvdyIsICJYIiwgIlBpbk9mZiIsICJQaW4iLCAiZSIsICJqc3giLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgImNsYXNzTmFtZSIsICJjbiIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAicHJvcHMiLCAidGFibGUiLCAidmFyaWFudCIsICJwYWdlSW5kZXgiLCAicGFnZUNvdW50IiwgIkJ1dHRvbiIsICJDaGV2cm9uc0xlZnQiLCAiQ2hldnJvbkxlZnQiLCAiSW5wdXQiLCAiZSIsICJDaGV2cm9uUmlnaHQiLCAiQ2hldnJvbnNSaWdodCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgImNvbHVtbiIsICJraW5kIiwgImlzUGlubmVkIiwgImlzRmlyc3RMZWZ0UGlubmVkQ29sdW1uIiwgImlzRmlyc3RSaWdodFBpbm5lZENvbHVtbiIsICJpc0ZpcnN0TGVmdE9yUmlnaHRQaW5uZWRDb2x1bW4iLCAiY24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRHJhZ2dhYmxlSGVhZGVyQ2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAiaGVhZGVyIiwgImNvbW1vblN0eWxlIiwgImRpc2FibGVEcmFnZ2luZyIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJzZXROb2RlUmVmIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAiZHJhZ1N0eWxlIiwgIkNTUyIsICJjb21tb25DbGFzcyIsICJjbiIsICJkcmFnQ2xhc3MiLCAiVGFibGVIZWFkIiwgIkRhdGFHcmlkIiwgImNvbHVtbkRlZnMiLCAiZ2V0QmVmb3JlUm93cyIsICJpc0xvYWRpbmciLCAiaXNQcm9jZXNzaW5nIiwgIm9uUGFnaW5hdGlvbkNoYW5nZSIsICJvblJvd1NlbGVjdGlvbkNoYW5nZSIsICJvblNvcnRpbmdDaGFuZ2UiLCAicGFnZUNvdW50IiwgInBhZ2luYXRpb25TdGF0ZSIsICJyb3dzIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNvcnRpbmdTdGF0ZSIsICJjb2x1bW5PcmRlciIsICJzZXRDb2x1bW5PcmRlciIsICJ1c2VTdGF0ZSIsICJjb2x1bW5QaW5uaW5nIiwgInNldENvbHVtblBpbm5pbmciLCAiY29sdW1uU2l6aW5nIiwgInNldENvbHVtblNpemluZyIsICJzb3J0aW5nIiwgInVzZU1lbW8iLCAidG9Tb3J0aW5nU3RhdGUiLCAiZGlzcGxheUxvYWRlciIsICJ1c2VFZmZlY3QiLCAiYWNjZXNzb3JLZXkiLCAiaGFuZGxlRHJhZ0VuZCIsICJhY3RpdmUiLCAib3ZlciIsICJvcmRlciIsICJhY3RpdmVJbmRleCIsICJvdmVySW5kZXgiLCAiYXJyYXlNb3ZlIiwgIm1vdXNlU2Vuc29yIiwgInVzZVNlbnNvciIsICJNb3VzZVNlbnNvciIsICJzZW5zb3JzIiwgInVzZVNlbnNvcnMiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRDb3JlUm93TW9kZWwiLCAiX19wc19yb3dpZCIsICJ1cGRhdGVyT3JWYWx1ZSIsICJvbGQiLCAidG9Tb3J0T3JkZXJJdGVtcyIsICJSZWFjdFRhYmxlRGV2dG9vbHMiLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgIkRuZENvbnRleHQiLCAiVGFibGUiLCAiVGFibGVIZWFkZXIiLCAiaGVhZGVyR3JvdXAiLCAiVGFibGVSb3ciLCAiU29ydGFibGVDb250ZXh0IiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAiRGF0YUdyaWRIZWFkZXIiLCAiVGFibGVCb2R5IiwgInJvdyIsICJjZWxsIiwgImkiLCAiQ2VsbCIsICJUYWJsZUNlbGwiLCAiU2tlbGV0b24iLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiZnJvbSIsICJpdGVtIiwgIlRvb2x0aXBQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgImNsYXNzTmFtZSIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJjbiIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZEhlYWRlckNlbGwiLCAiY29sdW1uIiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIktleVJvdW5kIiwgIlRvb2x0aXBDb250ZW50IiwgImlzT2JqZWN0VHlwZSIsICJtb3Rpb24iLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiTGFiZWxQcmltaXRpdmUiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJsYWJlbFZhcmlhbnRzIiwgImN2YSIsICJMYWJlbCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlN3aXRjaFByaW1pdGl2ZXMiLCAiUmVhY3QiLCAianN4IiwgIlN3aXRjaCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIklucHV0QWN0aW9ucyIsICJvblNhdmUiLCAib25DYW5jZWwiLCAib25DbG9zZSIsICJvbk51bGxDaGFuZ2UiLCAiaXNOdWxsIiwgInJlYWRvbmx5IiwgIkNvcm5lckRvd25MZWZ0IiwgIlN3aXRjaCIsICJjaGVja2VkIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkJvb2xlYW5JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAidmFsdWVUb1N1Ym1pdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAibW90aW9uIiwgIlN3aXRjaCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAidXNlSW5wdXQiLCAicHJvcHMiLCAiaW5pdGlhbFZhbHVlIiwgInZhbHVlIiwgInNldFZhbHVlIiwgImV2ZW50IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJEYXRlSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiZm9ybWF0dGVkRGF0ZSIsICJ1c2VNZW1vIiwgImRhdGUiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJ1c2VDYWxsYmFjayIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJFbnVtSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInZhbHVlIiwgIm9wdGlvbnMiLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZVNlbGVjdE9wdGlvbiIsICJvcHRpb24iLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJiYWRnZVZhcmlhbnRzIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJKc29uSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiaW5pdGlhbFZhbHVlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAianNvblZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiTnVtZXJpY0lucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImUiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgIm51bWVyaWNWYWx1ZSIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIlJhd0lucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZU1lbW8iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIlRpbWVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJmb3JtYXR0ZWRUaW1lIiwgInVzZU1lbW8iLCAiaGFzVGltZXpvbmUiLCAiZGF0ZSIsICJ0aW1lUmVnZXgiLCAibWF0Y2giLCAiaG91cnMiLCAibWludXRlcyIsICJ0ek9mZnNldCIsICJwZXJpb2QiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJqc3giLCAiZ2V0SW5wdXQiLCAicHJvcHMiLCAiY2VsbCIsICJjb2x1bW4iLCAib25TdWJtaXQiLCAiZ3JvdXAiLCAib3B0aW9ucyIsICJpc0FycmF5IiwgInJlYWRvbmx5IiwgImNlbGxWYWx1ZSIsICJ2YWx1ZSIsICJEYXRlSW5wdXQiLCAiVGltZUlucHV0IiwgIkpzb25JbnB1dCIsICJCb29sZWFuSW5wdXQiLCAiRW51bUlucHV0IiwgIk51bWVyaWNJbnB1dCIsICJSYXdJbnB1dCIsICJpc09iamVjdFR5cGUiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgIkZyYWdtZW50IiwgImpzeCIsICJTdGFnZWRSb3dzIiwgInByb3BzIiwgInBhcmVudFRhYmxlIiwgInN0YWdlZFJvd3MiLCAic2V0U3RhZ2VkUm93cyIsICJyZWFkb25seSIsICJ1c2VJc0luc2VydGluZyIsICJ1cGRhdGVTdGFnZWRSb3ciLCAicm93SW5kZXgiLCAicGFydGlhbFJvdyIsICJwcmV2Um93cyIsICJuZXdSb3dzIiwgImNvbHVtbkRlZnMiLCAiY29sdW1uIiwgIkVtcHR5Q2VsbCIsICJjZWxsIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJnZXRJbnB1dCIsICJ2YWx1ZSIsICJ0YWJsZSIsICJ1c2VSZWFjdFRhYmxlIiwgIm9taXQiLCAicm93IiwgImkiLCAiVGFibGVSb3ciLCAiaiIsICJDZWxsIiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQWN0aXZlVGFibGVWaWV3IiwgIl9wcm9wcyIsICJpc011dGF0aW5nIiwgInVzZUlzTXV0YXRpbmciLCAiYWN0aXZlVGFibGUiLCAib25FcnJvciIsICJpc0Z1bGxzY3JlZW4iLCAidG9nZ2xlRnVsbHNjcmVlbiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgInNvcnRpbmdTdGF0ZSIsICJzZXRTb3J0aW5nU3RhdGUiLCAidXNlU29ydGluZyIsICJwYWdpbmF0aW9uU3RhdGUiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZVBhZ2luYXRpb24iLCAic3RhZ2VkUm93cyIsICJzZXRTdGFnZWRSb3dzIiwgInVzZVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAic2V0QXBwbGllZEZpbHRlciIsICJlZGl0aW5nRmlsdGVyIiwgInNldEVkaXRpbmdGaWx0ZXIiLCAidXNlRmlsdGVyaW5nIiwgImRhdGEiLCAiaXNGZXRjaGluZyIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgImRlbGV0ZVNlbGVjdGlvbiIsICJpc1NlbGVjdGluZyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzZXRSb3dTZWxlY3Rpb25TdGF0ZSIsICJ1c2VTZWxlY3Rpb24iLCAicmVhZG9ubHkiLCAiY29sdW1uIiwgImlzSW5zZXJ0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgImluc2VydCIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJ1cGRhdGUiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAidXNlRWZmZWN0IiwgInNhdmVTdGFnZWRSb3dzIiwgInRvYXN0IiwgIm5ld1N0YWdlZFJvdyIsICJvbGQiLCAiZHJvcFN0YWdlZFJvd3MiLCAiaGFuZGxlQ2VsbElucHV0U3VibWl0IiwgInZhbHVlIiwgInJvdyIsICJvbkZpbHRlck9wZW5DaGFuZ2UiLCAib3BlbiIsICJjb25jcmV0ZUNvbHVtbkRlZnMiLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgImNlbGwiLCAicHJvcHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJnZXRDZWxsIiwgImdldElucHV0IiwgInZpcnR1YWxDb2x1bW5EZWZzIiwgInRhYmxlIiwgIkNoZWNrYm94IiwgIlNlbGVjdFJvd0NlbGwiLCAiY29sdW1uRGVmcyIsICJkZWZhdWx0Q29sdW1uU29ydGluZyIsICJCdXR0b24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiUGFuZWxMZWZ0T3BlbiIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIkZpbHRlciIsICJQb3BvdmVyQ29udGVudCIsICJGaWx0ZXJUcmVlIiwgIk1pbmltaXplIiwgIk1heGltaXplIiwgIkRhdGFHcmlkIiwgIlN0YWdlZFJvd3MiLCAiZ2V0UGFnZUNvdW50IiwgInJvd0NvdW50IiwgInBhZ2VTaXplIiwgInBhZ2VDb3VudCIsICJhIiwgImIiLCAiYU1ldGEiLCAiYk1ldGEiLCAiU2xvdCIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1dWlkdjQiLCAidXNlUXVlcnkiLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJzaWduYWwiLCAiZXJyb3IiLCAiaW50cm9zcGVjdGlvbiIsICJjdHgiLCAidXNlQWN0aXZlVGFibGUiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJlbWl0VGVsZW1ldHJ5RXZlbnQiLCAidXNlU3R1ZGlvIiwgImludHJvc3BlY3Rpb24iLCAiZGF0YVVwZGF0ZWRBdCIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImlzTG9hZGluZyIsICJJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCIsICJ0YWJsZXMiLCAidXNlTWVtbyIsICJ0b3RhbFRhYmxlQ291bnQiLCAic3VtIiwgInNjaGVtYSIsICJmaXJzdFRhYmxlIiwgInRhYmxlQW5kU2NoZW1hIiwgInNldFRhYmxlQW5kU2NoZW1hIiwgInVzZVF1ZXJ5U3RhdGVzIiwgInYiLCAic2V0UGFnZVBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAic2V0U29ydFBhcmFtIiwgInVzZUVmZmVjdCIsICJ0YWJsZUZyb21QYXJhbSIsICJ0IiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUNhbGxiYWNrIiwgIm5ld1RhYmxlIiwgInV1aWR2NCIsICJqc3giLCAianN4cyIsICJOYXZpZ2F0aW9uIiwgImNsYXNzTmFtZSIsICJ0YWJsZXMiLCAiYWN0aXZlVGFibGUiLCAiaXNMb2FkaW5nIiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUFjdGl2ZVRhYmxlIiwgInNpZGVCYXJDbGFzc2VzIiwgImNuIiwgInRhYmxlIiwgIl8iLCAiaW5kZXgiLCAiU2tlbGV0b24iLCAiQmxvY2siLCAibGFiZWwiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAiVGFibGUyIiwgIkl0ZW0iLCAiYXNDaGlsZCIsICJpc0FjdGl2ZSIsICJzaXplIiwgIndyYXBDaGlsZHJlbkluU3BhbiIsICJTbG90IiwgImpzeCIsICJqc3hzIiwgIlN0dWRpbyIsICJwcm9wcyIsICJhZGFwdGVyIiwgIm9uRXJyb3IiLCAib25UZWxlbWV0cnlFdmVudCIsICJTdHVkaW9Db250ZXh0UHJvdmlkZXIiLCAiU3R1ZGlvQ29udGVudCIsICJpc0Z1bGxzY3JlZW4iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAiY29udGFpbmVyQ2xhc3NlcyIsICJjbiIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIk5hdmlnYXRpb24iLCAiQWN0aXZlVGFibGVWaWV3Il0KfQo=
|