@prisma/studio-core 0.0.0-dev.202505140911 → 0.0.0-dev.202505140956

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/ui/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import"../chunk-IAKOOX7B.js";import{D as la}from"../chunk-OGMDOPWW.js";import{B as Dt,aa as Tt,c as ne,q as kt,r as Rt,t as Mt}from"../chunk-RFCV76TR.js";import{a as hs,b as ke}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as Pn,motion as Cs}from"motion/react";import{clsx as js}from"clsx";var Bt="-",Is=e=>{let a=bs(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:l=>{let u=l.split(Bt);return u[0]===""&&u.length!==1&&u.shift(),So(u,a)||Ss(l)},getConflictingClassGroupIds:(l,u)=>{let n=t[l]||[];return u&&o[l]?[...n,...o[l]]:n}}},So=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?So(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let s=e.join(Bt);return a.validators.find(({validator:l})=>l(s))?.classGroupId},Lo=/^\[(.+)\]$/,Ss=e=>{if(Lo.test(e)){let a=Lo.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},bs=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return ys(Object.entries(e.classGroups),t).forEach(([s,l])=>{Ft(l,o,s,a)}),o},Ft=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let s=r===""?a:Co(a,r);s.classGroupId=t;return}if(typeof r=="function"){if(ws(r)){Ft(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([s,l])=>{Ft(l,Co(a,s),t,o)})})},Co=(e,a)=>{let t=e;return a.split(Bt).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},ws=e=>e.isThemeGetter,ys=(e,a)=>a?e.map(([t,o])=>{let r=o.map(s=>typeof s=="string"?a+s:typeof s=="object"?Object.fromEntries(Object.entries(s).map(([l,u])=>[a+l,u])):s);return[t,r]}):e,vs=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(s,l)=>{t.set(s,l),a++,a>e&&(a=0,o=t,t=new Map)};return{get(s){let l=t.get(s);if(l!==void 0)return l;if((l=o.get(s))!==void 0)return r(s,l),l},set(s,l){t.has(s)?t.set(s,l):r(s,l)}}},bo="!",Ps=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],s=a.length,l=u=>{let n=[],d=0,i=0,g;for(let L=0;L<u.length;L++){let C=u[L];if(d===0){if(C===r&&(o||u.slice(L,L+s)===a)){n.push(u.slice(i,L)),i=L+s;continue}if(C==="/"){g=L;continue}}C==="["?d++:C==="]"&&d--}let p=n.length===0?u:u.substring(i),h=p.startsWith(bo),I=h?p.substring(1):p,m=g&&g>i?g-i:void 0;return{modifiers:n,hasImportantModifier:h,baseClassName:I,maybePostfixModifierPosition:m}};return t?u=>t({className:u,parseClassName:l}):l},ks=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},Rs=e=>({cache:vs(e.cacheSize),parseClassName:Ps(e),...Is(e)}),Ms=/\s+/,Ds=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,s=[],l=e.trim().split(Ms),u="";for(let n=l.length-1;n>=0;n-=1){let d=l[n],{modifiers:i,hasImportantModifier:g,baseClassName:p,maybePostfixModifierPosition:h}=t(d),I=!!h,m=o(I?p.substring(0,h):p);if(!m){if(!I){u=d+(u.length>0?" "+u:u);continue}if(m=o(p),!m){u=d+(u.length>0?" "+u:u);continue}I=!1}let L=ks(i).join(":"),C=g?L+bo:L,x=C+m;if(s.includes(x))continue;s.push(x);let T=r(m,I);for(let q=0;q<T.length;++q){let ee=T[q];s.push(C+ee)}u=d+(u.length>0?" "+u:u)}return u};function Ts(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=wo(a))&&(o&&(o+=" "),o+=t);return o}var wo=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=wo(e[o]))&&(t&&(t+=" "),t+=a);return t};function ho(e,...a){let t,o,r,s=l;function l(n){let d=a.reduce((i,g)=>g(i),e());return t=Rs(d),o=t.cache.get,r=t.cache.set,s=u,u(n)}function u(n){let d=o(n);if(d)return d;let i=Ds(n,t);return r(n,i),i}return function(){return s(Ts.apply(null,arguments))}}var O=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},yo=/^\[(?:([a-z-]+):)?(.+)\]$/i,As=/^\d+\/\d+$/,Fs=new Set(["px","full","screen"]),Bs=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ns=/\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$/,Os=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,qs=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Es=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Re=e=>ua(e)||Fs.has(e)||As.test(e),ze=e=>da(e,"length",_s),ua=e=>!!e&&!Number.isNaN(Number(e)),At=e=>da(e,"number",ua),pa=e=>!!e&&Number.isInteger(Number(e)),Us=e=>e.endsWith("%")&&ua(e.slice(0,-1)),y=e=>yo.test(e),Ge=e=>Bs.test(e),Hs=new Set(["length","size","percentage"]),zs=e=>da(e,Hs,vo),Gs=e=>da(e,"position",vo),Vs=new Set(["image","url"]),Ws=e=>da(e,Vs,Qs),Ks=e=>da(e,"",Xs),ma=()=>!0,da=(e,a,t)=>{let o=yo.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},_s=e=>Ns.test(e)&&!Os.test(e),vo=()=>!1,Xs=e=>qs.test(e),Qs=e=>Es.test(e);var Io=()=>{let e=O("colors"),a=O("spacing"),t=O("blur"),o=O("brightness"),r=O("borderColor"),s=O("borderRadius"),l=O("borderSpacing"),u=O("borderWidth"),n=O("contrast"),d=O("grayscale"),i=O("hueRotate"),g=O("invert"),p=O("gap"),h=O("gradientColorStops"),I=O("gradientColorStopPositions"),m=O("inset"),L=O("margin"),C=O("opacity"),x=O("padding"),T=O("saturate"),q=O("scale"),ee=O("sepia"),E=O("skew"),X=O("space"),V=O("translate"),B=()=>["auto","contain","none"],F=()=>["auto","hidden","clip","visible","scroll"],J=()=>["auto",y,a],M=()=>[y,a],Ue=()=>["",Re,ze],v=()=>["auto",ua,y],z=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],U=()=>["solid","dashed","dotted","double","none"],$=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ae=()=>["start","end","center","between","around","evenly","stretch"],Pe=()=>["","0",y],He=()=>["auto","avoid","all","avoid-page","page","left","right","column"],te=()=>[ua,y];return{cacheSize:500,separator:":",theme:{colors:[ma],spacing:[Re,ze],blur:["none","",Ge,y],brightness:te(),borderColor:[e],borderRadius:["none","","full",Ge,y],borderSpacing:M(),borderWidth:Ue(),contrast:te(),grayscale:Pe(),hueRotate:te(),invert:Pe(),gap:M(),gradientColorStops:[e],gradientColorStopPositions:[Us,ze],inset:J(),margin:J(),opacity:te(),padding:M(),saturate:te(),scale:te(),sepia:Pe(),skew:te(),space:M(),translate:M()},classGroups:{aspect:[{aspect:["auto","square","video",y]}],container:["container"],columns:[{columns:[Ge]}],"break-after":[{"break-after":He()}],"break-before":[{"break-before":He()}],"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:[...z(),y]}],overflow:[{overflow:F()}],"overflow-x":[{"overflow-x":F()}],"overflow-y":[{"overflow-y":F()}],overscroll:[{overscroll:B()}],"overscroll-x":[{"overscroll-x":B()}],"overscroll-y":[{"overscroll-y":B()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[m]}],"inset-x":[{"inset-x":[m]}],"inset-y":[{"inset-y":[m]}],start:[{start:[m]}],end:[{end:[m]}],top:[{top:[m]}],right:[{right:[m]}],bottom:[{bottom:[m]}],left:[{left:[m]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",pa,y]}],basis:[{basis:J()}],"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:Pe()}],shrink:[{shrink:Pe()}],order:[{order:["first","last","none",pa,y]}],"grid-cols":[{"grid-cols":[ma]}],"col-start-end":[{col:["auto",{span:["full",pa,y]},y]}],"col-start":[{"col-start":v()}],"col-end":[{"col-end":v()}],"grid-rows":[{"grid-rows":[ma]}],"row-start-end":[{row:["auto",{span:[pa,y]},y]}],"row-start":[{"row-start":v()}],"row-end":[{"row-end":v()}],"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:[p]}],"gap-x":[{"gap-x":[p]}],"gap-y":[{"gap-y":[p]}],"justify-content":[{justify:["normal",...ae()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...ae(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...ae(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[x]}],px:[{px:[x]}],py:[{py:[x]}],ps:[{ps:[x]}],pe:[{pe:[x]}],pt:[{pt:[x]}],pr:[{pr:[x]}],pb:[{pb:[x]}],pl:[{pl:[x]}],m:[{m:[L]}],mx:[{mx:[L]}],my:[{my:[L]}],ms:[{ms:[L]}],me:[{me:[L]}],mt:[{mt:[L]}],mr:[{mr:[L]}],mb:[{mb:[L]}],ml:[{ml:[L]}],"space-x":[{"space-x":[X]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[X]}],"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:[Ge]},Ge]}],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",Ge,ze]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",At]}],"font-family":[{font:[ma]}],"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",ua,At]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Re,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":[C]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[C]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...U(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Re,ze]}],"underline-offset":[{"underline-offset":["auto",Re,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:M()}],"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":[C]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...z(),Gs]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",zs]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Ws]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[I]}],"gradient-via-pos":[{via:[I]}],"gradient-to-pos":[{to:[I]}],"gradient-from":[{from:[h]}],"gradient-via":[{via:[h]}],"gradient-to":[{to:[h]}],rounded:[{rounded:[s]}],"rounded-s":[{"rounded-s":[s]}],"rounded-e":[{"rounded-e":[s]}],"rounded-t":[{"rounded-t":[s]}],"rounded-r":[{"rounded-r":[s]}],"rounded-b":[{"rounded-b":[s]}],"rounded-l":[{"rounded-l":[s]}],"rounded-ss":[{"rounded-ss":[s]}],"rounded-se":[{"rounded-se":[s]}],"rounded-ee":[{"rounded-ee":[s]}],"rounded-es":[{"rounded-es":[s]}],"rounded-tl":[{"rounded-tl":[s]}],"rounded-tr":[{"rounded-tr":[s]}],"rounded-br":[{"rounded-br":[s]}],"rounded-bl":[{"rounded-bl":[s]}],"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":[C]}],"border-style":[{border:[...U(),"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":[C]}],"divide-style":[{divide:U()}],"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:["",...U()]}],"outline-offset":[{"outline-offset":[Re,y]}],"outline-w":[{outline:[Re,ze]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Ue()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[C]}],"ring-offset-w":[{"ring-offset":[Re,ze]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Ge,Ks]}],"shadow-color":[{shadow:[ma]}],opacity:[{opacity:[C]}],"mix-blend":[{"mix-blend":[...$(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":$()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[n]}],"drop-shadow":[{"drop-shadow":["","none",Ge,y]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[i]}],invert:[{invert:[g]}],saturate:[{saturate:[T]}],sepia:[{sepia:[ee]}],"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":[C]}],"backdrop-saturate":[{"backdrop-saturate":[T]}],"backdrop-sepia":[{"backdrop-sepia":[ee]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",y]}],duration:[{duration:te()}],ease:[{ease:["linear","in","out","in-out",y]}],delay:[{delay:te()}],animate:[{animate:["none","spin","ping","pulse","bounce",y]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[q]}],"scale-x":[{"scale-x":[q]}],"scale-y":[{"scale-y":[q]}],rotate:[{rotate:[pa,y]}],"translate-x":[{"translate-x":[V]}],"translate-y":[{"translate-y":[V]}],"skew-x":[{"skew-x":[E]}],"skew-y":[{"skew-y":[E]}],"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":M()}],"scroll-mx":[{"scroll-mx":M()}],"scroll-my":[{"scroll-my":M()}],"scroll-ms":[{"scroll-ms":M()}],"scroll-me":[{"scroll-me":M()}],"scroll-mt":[{"scroll-mt":M()}],"scroll-mr":[{"scroll-mr":M()}],"scroll-mb":[{"scroll-mb":M()}],"scroll-ml":[{"scroll-ml":M()}],"scroll-p":[{"scroll-p":M()}],"scroll-px":[{"scroll-px":M()}],"scroll-py":[{"scroll-py":M()}],"scroll-ps":[{"scroll-ps":M()}],"scroll-pe":[{"scroll-pe":M()}],"scroll-pt":[{"scroll-pt":M()}],"scroll-pr":[{"scroll-pr":M()}],"scroll-pb":[{"scroll-pb":M()}],"scroll-pl":[{"scroll-pl":M()}],"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:[Re,ze,At]}],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"]}}},Zs=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:s={},override:l={}})=>{ga(e,"cacheSize",a),ga(e,"prefix",t),ga(e,"separator",o),ga(e,"experimentalParseClassName",r);for(let u in l)Js(e[u],l[u]);for(let u in s)$s(e[u],s[u]);return e},ga=(e,a,t)=>{t!==void 0&&(e[a]=t)},Js=(e,a)=>{if(a)for(let t in a)ga(e,t,a[t])},$s=(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"?ho(Io,e,...a):ho(()=>Zs(Io(),e),...a);var Ys=Po({prefix:"ps-"});function c(...e){return Ys(js(e))}import{useIsMutating as gn}from"@tanstack/react-query";import{forwardRef as al,createElement as tl}from"react";var ko=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ya=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as el,createElement as Mo}from"react";var Ro={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 Do=el(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:s,iconNode:l,...u},n)=>Mo("svg",{ref:n,...Ro,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:Ya("lucide",r),...u},[...l.map(([d,i])=>Mo(d,i)),...Array.isArray(s)?s:[s]]));var w=(e,a)=>{let t=al(({className:o,...r},s)=>tl(Do,{ref:s,iconNode:a,className:Ya(`lucide-${ko(e)}`,o),...r}));return t.displayName=`${e}`,t};var Ve=w("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 xa=w("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);var La=w("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 me=w("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var Ie=w("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var Ca=w("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var ge=w("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var ha=w("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var Ia=w("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var Sa=w("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var We=w("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 ea=w("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var ba=w("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 wa=w("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var ya=w("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var va=w("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 Pa=w("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 ka=w("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 Ra=w("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 Ma=w("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Da=w("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ke=w("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 _e=w("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 Ta=w("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 Aa=w("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 Fa=w("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var Ba=w("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 Xe=w("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as xn}from"motion-plus/react";import{useEffect as Ln,useState as Cn}from"react";import{toast as hn}from"sonner";import{cva as ol}from"class-variance-authority";import{jsx as rl}from"react/jsx-runtime";var Nt=ol("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 et({className:e,variant:a,...t}){return rl("div",{className:c(Nt({variant:a}),e),...t})}import{Slot as sl}from"@radix-ui/react-slot";import{cva as ll}from"class-variance-authority";import*as To from"react";import{jsx as ul}from"react/jsx-runtime";var Ot=ll("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"}}),A=To.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},s)=>ul(o?sl:"button",{className:c(Ot({variant:a,size:t,className:e})),ref:s,...r}));A.displayName="Button";import*as Se from"@radix-ui/react-popover";import*as Fo from"react";import{jsx as Ao}from"react/jsx-runtime";var Bo=Se.Root,No=Se.Trigger;var qt=Fo.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ao(Se.Portal,{children:Ao(Se.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})}));qt.displayName=Se.Content.displayName;import*as De from"react";import{jsx as Me}from"react/jsx-runtime";var Et=De.forwardRef(({className:e,...a},t)=>Me("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:Me("table",{ref:t,className:c("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));Et.displayName="Table";var Ut=De.forwardRef(({className:e,...a},t)=>Me("thead",{ref:t,className:c(e),...a}));Ut.displayName="TableHeader";var Ht=De.forwardRef(({className:e,...a},t)=>Me("tbody",{ref:t,className:c("[&_tr:last-child]:ps-border-0",e),...a}));Ht.displayName="TableBody";var dl=De.forwardRef(({className:e,...a},t)=>Me("tfoot",{ref:t,className:c("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));dl.displayName="TableFooter";var aa=De.forwardRef(({className:e,...a},t)=>Me("tr",{ref:t,className:c("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));aa.displayName="TableRow";var Na=De.forwardRef(({className:e,...a},t)=>Me("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}));Na.displayName="TableHead";var Oa=De.forwardRef(({className:e,...a},t)=>Me("td",{ref:t,className:c("ps-align-middle",e),...a}));Oa.displayName="TableCell";var nl=De.forwardRef(({className:e,...a},t)=>Me("caption",{ref:t,className:c("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));nl.displayName="TableCaption";import{useMutation as Fl,useQueryClient as Bl}from"@tanstack/react-query";import{QueryClient as yl,QueryClientProvider as vl}from"@tanstack/react-query";import*as xe from"react";import{onlineManager as il,useQueryClient as fl}from"@tanstack/react-query";var Oo=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:s,position:l,initialIsOpen:u,errorTypes:n,styleNonce:d,shadowDOMTarget:i}=e;this.#a=ne(a),this.#i=t,this.#f=o,this.#n=r,this.#c=d,this.#t=i,this.#o=ne(s),this.#r=ne(l),this.#s=ne(u),this.#l=ne(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=Dt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[s]=this.#s,[l]=this.#l,[u]=this.#a,n;return this.#u?n=this.#u:(n=Mt(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#u=n),Tt(this.#c,this.#t),kt(n,Rt({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 s()},get errorTypes(){return l()}}))},e);this.#e=!0,this.#d=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#d?.(),this.#e=!1}},qo=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:s,position:l,initialIsOpen:u,errorTypes:n,styleNonce:d,shadowDOMTarget:i,onClose:g}=e;this.#a=ne(a),this.#i=t,this.#f=o,this.#n=r,this.#c=d,this.#t=i,this.#o=ne(s),this.#r=ne(l),this.#s=ne(u),this.#l=ne(n),this.#u=ne(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=Dt(()=>{let t=this,[o]=this.#o,[r]=this.#r,[s]=this.#s,[l]=this.#l,[u]=this.#a,[n]=this.#u,d;return this.#d?d=this.#d:(d=Mt(()=>import("../OKF6E45R-3IGVLQES.js")),this.#d=d),Tt(this.#c,this.#t),kt(d,Rt({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 s()},get errorTypes(){return l()},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 cl}from"react/jsx-runtime";function Eo(e){let a=fl(e.client),t=xe.useRef(null),{buttonPosition:o,position:r,initialIsOpen:s,errorTypes:l,styleNonce:u,shadowDOMTarget:n}=e,[d]=xe.useState(new Oo({client:a,queryFlavor:"React Query",version:"5",onlineManager:il,buttonPosition:o,position:r,initialIsOpen:s,errorTypes:l,styleNonce:u,shadowDOMTarget:n}));return xe.useEffect(()=>{d.setClient(a)},[a,d]),xe.useEffect(()=>{o&&d.setButtonPosition(o)},[o,d]),xe.useEffect(()=>{r&&d.setPosition(r)},[r,d]),xe.useEffect(()=>{d.setInitialIsOpen(s||!1)},[s,d]),xe.useEffect(()=>{d.setErrorTypes(l||[])},[l,d]),xe.useEffect(()=>(t.current&&d.mount(t.current),()=>{d.unmount()}),[d]),cl("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as Te from"react";import{onlineManager as ml,useQueryClient as gl}from"@tanstack/react-query";import{jsx as xl}from"react/jsx-runtime";function Uo(e){let a=gl(e.client),t=Te.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:s}=e,[l]=Te.useState(new qo({client:a,queryFlavor:"React Query",version:"5",onlineManager:ml,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:s,onClose:e.onClose}));return Te.useEffect(()=>{l.setClient(a)},[a,l]),Te.useEffect(()=>{l.setOnClose(e.onClose??(()=>{}))},[e.onClose,l]),Te.useEffect(()=>{l.setErrorTypes(o||[])},[o,l]),Te.useEffect(()=>(t.current&&l.mount(t.current),()=>{l.unmount()}),[l]),xl("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var Ho=process.env.NODE_ENV!=="development"?function(){return null}:Eo,Nc=process.env.NODE_ENV!=="development"?function(){return null}:Uo;import{createContext as Pl,useContext as kl,useMemo as Rl,useState as at}from"react";import{toast as Ml}from"sonner";import{Toaster as Cl}from"sonner";import{jsx as hl}from"react/jsx-runtime";var zo=({...e})=>hl(Cl,{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 Il}from"nuqs/adapters/custom";import{useEffect as Sl,useState as bl}from"react";function wl(){let e=window.location.hash.slice(1),[a,t]=bl(new URLSearchParams(e));function o(s,{history:l}){let{pathname:u,search:n}=window.location,d=s.toString(),i=`${u}${n}#${d}`;l==="push"?window.history.pushState(null,"",i):window.history.replaceState(null,"",i),t(s)}function r(){let s=window.location.hash.slice(1);return new URLSearchParams(s)}return Sl(()=>{function s(){let l=window.location.hash.slice(1);t(new URLSearchParams(l))}return window.addEventListener("hashchange",s),()=>window.removeEventListener("hashchange",s)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var Go=Il(wl);import{jsx as tt,jsxs as Tl}from"react/jsx-runtime";var Dl=new yl,Vo=Pl(void 0);function Wo(e){let{children:a,...t}=e,[o,r]=at(null),[s,l]=at(e.adapter.defaultSchema||"public"),[u,n]=at(!1),[d,i]=at(!0),g=e.onError;g??=m=>Ml.error(m.message);let p=Rl(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),h=()=>n(m=>!m),I=()=>i(m=>!m);return Tl(vl,{client:Dl,children:[tt(Ho,{}),tt(zo,{}),tt(Go,{children:tt(Vo.Provider,{value:{...t,activeTable:o,activeSchema:s,isFullscreen:u,setActiveTable:r,setActiveSchema:l,onError:g,emitTelemetryEvent:p,toggleFullscreen:h,isNavigationOpen:d,toggleNavigation:I},children:a})})]})}function Q(){let e=kl(Vo);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function Al(e,a){let t={filter:la(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function Ko(e,a){return{...e,__ps_rowid:Al(e,a)}}function ot(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:Ko(t,a)}:o!==void 0?{...e,rows:o.map(r=>Ko(r,a))}:e}function _o(){let{activeTable:e,adapter:a}=Q(),t=Bl(),{schema:o=null,name:r=null}=e??{};return Fl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(s){let[l,u]=await a.insert({rows:s,table:e},{});if(l)throw l;return ot(u,e)},onSuccess(s){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},l=>l==null?l:{...l,rows:[...s.rows,...l.rows]})},retry:!1})}import{useQuery as Nl}from"@tanstack/react-query";function Xo(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:s,adapter:l}=Q();return Nl({enabled:!!s,gcTime:0,placeholderData(u,n){let[,d,,i]=n?.queryKey||[];if(!(d!==s?.schema||i!==s?.name))return u},async queryFn({signal:u}){let[n,d]=await l.query({pageIndex:a,pageSize:t,sortOrder:o,table:s,filter:r},{abortSignal:u});if(n)throw n;return ot(d,s)},queryKey:["schema",s?.schema||null,"table",s?.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 Ol,useQueryClient as ql}from"@tanstack/react-query";function Qo(){let{activeTable:e,adapter:a,onError:t}=Q(),o=ql(),r=["schema",e?.schema??null,"table",e?.name??null];return Ol({mutationFn:async s=>{let[l,u]=await a.update(s.details,s.options);if(l)throw l;return u},mutationKey:[...r,"update"],onError(s,l){let{changes:u,row:n}=l.details;t(s),zt({getFinderFn(){let d={...n,...u},i=la(d,e.columns);return g=>i.every(([p,h])=>g[p]===h)},queryClient:o,table:e,updaterFn:function(i){return{...i,...Object.keys(u).reduce((g,p)=>({...g,[p]:n[p]}),{})}}})},onMutate(s){let{details:l}=s;zt({getFinderFn(){let{row:u}=l,n=la(u,e.columns);return d=>n.every(([i,g])=>d[i]===g)},queryClient:o,table:e,updaterFn:function(n){return{...n,...l.changes}}})},onSuccess(s,l){zt({getFinderFn(){let{changes:u,row:n}=l.details,d={...n,...u},i=la(d,e.columns);return g=>i.every(([p,h])=>g[p]===h)},queryClient:o,table:e,updaterFn:function(n){let{__ps_updated_at__:d}=n,{row:i}=s;return d!=null&&i.__ps_updated_at__<=d?n:{...n,...i}}})},retry:!1})}function zt(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,s;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},l=>{let{rows:u=[]}=l||{};if(u.length===0)return l;let n=u.findIndex(s??=a());if(n===-1)return l;let d=r(u[n]);return{...l,rows:[...u.slice(0,n),d,...u.slice(n+1)]}})}import{useEffect as zl,useMemo as Zo,useState as Gl}from"react";import Vl from"short-uuid";var Z={};hs(Z,{keyMap:()=>Gt,urlKeys:()=>Hl,useQueryState:()=>Qe,useQueryStates:()=>qa});ke(Z,Pp);import{useQueryState as El,useQueryStates as Ul}from"nuqs";import*as Pp from"nuqs";function Gt(e){return e}function Hl(e){return e}var yp=Symbol("BRAND_SYMBOL");function Qe(e,a){return El(e,a)}function qa(e,a){return Ul(e,a)}var Wl={kind:"FilterGroup",filters:[],after:"and",id:Vl.generate()},Jo=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=Jo(t));return a};function rt(){let[e,a]=Qe("filter",{defaultValue:JSON.stringify(Wl)}),t=Zo(()=>JSON.parse(e),[e]),o=u=>void a(JSON.stringify(u)),[r,s]=Gl(t);zl(()=>{s(t)},[t]);let l=Zo(()=>Jo(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:s,totalEditingFilters:l}}import{useIsMutating as Kl}from"@tanstack/react-query";function st(){return Kl({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as _l}from"react";var Xl=25,Ql={pageIndex:Z.parseAsIndex.withDefault(0),pageSize:Z.parseAsInteger.withDefault(Xl)};function lt(){let[{pageIndex:e,pageSize:a},t]=qa(Ql),o=_l(r=>{t(typeof r=="function"?s=>{let l=r(s);return{pageIndex:l.pageIndex,pageSize:l.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as $l,useState as jl}from"react";import{useMutation as Zl,useQueryClient as Jl}from"@tanstack/react-query";function $o(){let{activeTable:e,adapter:a}=Q(),t=Jl(),{schema:o=null,name:r=null}=e??{};return Zl({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(s){let[l,u]=await a.delete({rows:s,table:e},{});if(l)throw l;return u},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function jo(e){let{activeTable:a,onError:t}=Q(),{paginationState:o}=lt(),[r,s]=jl({}),l=Object.keys(r).length!==0,{mutate:u}=$o();$l(()=>s({}),[a,o.pageIndex]);function n(){let d=e?.rows.filter(i=>r[i.__ps_rowid]);u(d??[],{onSuccess(){s({})},onError:t})}return{deleteSelection:n,setRowSelectionState:s,rowSelectionState:r,isSelecting:l}}import{useEffect as Yl,useState as eu}from"react";function Yo(){let[e,a]=Qe("sort",{defaultValue:""}),t=l=>{if(!l)return[];try{return l.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]=eu(()=>t(e));return Yl(()=>{let l=t(e);r(l)},[e]),{sortingState:o,setSortingState:l=>{let u=typeof l=="function"?l(o):l;r(u);let n=u.length>0?u.map(d=>`${d.column}:${d.direction}`).join(","):null;a(n)}}}import{isValidElement as du}from"react";import*as P from"@radix-ui/react-context-menu";import*as Ae from"react";import{jsx as oe,jsxs as Kt}from"react/jsx-runtime";var er=P.Root,ar=P.Trigger;var au=Ae.forwardRef(({className:e,inset:a,children:t,...o},r)=>Kt(P.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,oe(ge,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));au.displayName=P.SubTrigger.displayName;var tu=Ae.forwardRef(({className:e,...a},t)=>oe(P.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}));tu.displayName=P.SubContent.displayName;var Vt=Ae.forwardRef(({className:e,...a},t)=>oe(P.Portal,{children:oe(P.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})}));Vt.displayName=P.Content.displayName;var Wt=Ae.forwardRef(({className:e,inset:a,...t},o)=>oe(P.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}));Wt.displayName=P.Item.displayName;var ou=Ae.forwardRef(({className:e,children:a,checked:t,...o},r)=>Kt(P.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:[oe("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:oe(P.ItemIndicator,{children:oe(me,{className:"ps-h-4 ps-w-4"})})}),a]}));ou.displayName=P.CheckboxItem.displayName;var ru=Ae.forwardRef(({className:e,children:a,...t},o)=>Kt(P.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:[oe("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:oe(P.ItemIndicator,{children:oe(ea,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));ru.displayName=P.RadioItem.displayName;var su=Ae.forwardRef(({className:e,inset:a,...t},o)=>oe(P.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}));su.displayName=P.Label.displayName;var lu=Ae.forwardRef(({className:e,...a},t)=>oe(P.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));lu.displayName=P.Separator.displayName;var uu=({className:e,...a})=>oe("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});uu.displayName="ContextMenuShortcut";import{jsx as _t,jsxs as tr}from"react/jsx-runtime";function or(e){let{children:a}=e;return tr(er,{children:[_t(ar,{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}),_t(Vt,{children:tr(Wt,{onClick:()=>{let t=Xt(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:[_t(ba,{size:12}),"Copy"]})})]})}function Xt(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(du(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?Xt(a.children):""}return Array.isArray(e)?e.map(Xt).join(""):""}import{jsx as rr}from"react/jsx-runtime";function ut(e){let{children:a,className:t,ref:o,style:r,...s}=e;return rr(Oa,{...s,className:c("ps-p-0 ps-border-r ps-border-b ps-border-table-border","ps-cursor-pointer",t),ref:o,style:r,children:rr(or,{children:a})})}import{isObjectType as yu}from"remeda";import{jsx as nu}from"react/jsx-runtime";var Qt=e=>{let{value:a}=e;return nu("div",{"data-cell-type":"boolean",children:String(!!a)})};Qt.displayName="BooleanCell";import{Fragment as iu,jsx as fu}from"react/jsx-runtime";function sr(e){let{value:a}=e;return fu(iu,{children:String(a)})}import{Fragment as cu,jsx as pu}from"react/jsx-runtime";function dt(e){return pu(cu,{})}import{Fragment as mu,jsx as gu}from"react/jsx-runtime";function lr(e){let{value:a}=e;return gu(mu,{children:String(a)})}import{Fragment as xu,jsx as Lu}from"react/jsx-runtime";function Zt(e){let{value:a}=e;return Lu(xu,{children:JSON.stringify(a,null,2)})}import{jsx as Cu}from"react/jsx-runtime";function ur(e){return Cu("code",{className:"ps-text-muted-foreground/60",children:"NULL"})}import{jsx as hu}from"react/jsx-runtime";function dr(e){let{value:a}=e;return hu("div",{"data-cell-type":"numeric",children:a===null?"NULL":String(a)})}import{Fragment as Iu,jsx as Su}from"react/jsx-runtime";function Jt(e){let{value:a}=e;return Su(Iu,{children:String(a)})}import{Fragment as bu,jsx as wu}from"react/jsx-runtime";function nr(e){let{value:a}=e;return wu(bu,{children:String(a)})}import{jsx as Le}from"react/jsx-runtime";function nt({cell:e,column:a}){let t=e.getValue();if(t===void 0)return Le(dt,{});if(t===null)return Le(ur,{});let{group:o,isArray:r}=a.datatype;if(o==="json"||r)return Le(Zt,{value:t});if(o==="string")return Le(Jt,{value:t});if(o==="enum")return Le(lr,{value:t});if(o==="boolean")return Le(Qt,{value:t});if(o==="datetime")return Le(sr,{value:t});if(o==="time")return Le(nr,{value:t});if(o==="numeric")return Le(dr,{value:t});if(o==="raw")return yu(t)?Le(Zt,{value:t}):Le(Jt,{value:t});throw new Error(`Datatype group "${o}" was not handled in '/cell/get-cell.tsx'`)}import*as Ea from"@radix-ui/react-checkbox";import*as ir from"react";import{jsx as $t}from"react/jsx-runtime";var Ua=ir.forwardRef(({className:e,...a},t)=>$t(Ea.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:$t(Ea.Indicator,{className:c("ps-flex ps-items-center ps-justify-center ps-text-current"),children:$t(me,{className:"ps-h-4 ps-w-4"})})}));Ua.displayName=Ea.Root.displayName;import{jsx as vu}from"react/jsx-runtime";function fr(e){let{table:a,readonly:t}=e;return vu(Ua,{checked:a.getIsAllRowsSelected(),onCheckedChange:o=>a.toggleAllRowsSelected(!!o),disabled:t})}import{jsx as Pu}from"react/jsx-runtime";function cr(e){let{row:a,readonly:t}=e;return Pu(Ua,{checked:a.getIsSelected(),disabled:!a.getCanSelect()||t,onCheckedChange:a.getToggleSelectedHandler()})}import*as Fe from"@radix-ui/react-popover";import*as j from"react";import{jsx as Ha}from"react/jsx-runtime";var pr=j.createContext(null),jt=({children:e,...a})=>{let[t,o]=j.useState(!1);return Ha(pr.Provider,{value:{open:t,setOpen:o},children:Ha(Fe.Root,{open:t,onOpenChange:o,...a,children:e})})};jt.displayName="PopoverCell";var Yt=j.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let s=j.useRef(null);return Ha(Fe.Trigger,{ref:l=>{typeof r=="function"?r(l):r&&(r.current=l),s.current=l},className:c("w-full h-full cursor-pointer",t),...o,children:e})});Yt.displayName="PopoverCellTrigger";var eo=j.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ha(Fe.Portal,{children:Ha(Fe.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:s=>s.preventDefault(),...o})}));eo.displayName=Fe.Content.displayName;function re(e){let a=j.useContext(pr),t=j.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=j.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return j.useEffect(()=>{let r=s=>{(s.key==="Enter"||s.key==="Return")&&!s.shiftKey?t():s.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as it,jsxs as mr}from"react/jsx-runtime";function ft(e){let{cellComponent:a,inputComponent:t,linkComponent:o,containerProps:r}=e;return mr(jt,{children:[it(Yt,{asChild:!0,children:it(ut,{...r,children:mr("div",{className:"ps-flex ps-flex-row ps-w-full ps-gap-2 ps-justify-between ps-items-center",children:[it("div",{children:a}),o]})})}),it(eo,{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-max"),sideOffset:-40,children:t})]})}import{closestCenter as qu,DndContext as Eu,DragOverlay as Uu,KeyboardSensor as Hu,PointerSensor as zu,useSensor as Ir,useSensors as Gu}from"@dnd-kit/core";import{arrayMove as Vu,SortableContext as Wu,sortableKeyboardCoordinates as Ku,useSortable as _u,verticalListSortingStrategy as Xu}from"@dnd-kit/sortable";import{CSS as Qu}from"@dnd-kit/utilities";import{motion as to}from"motion/react";import{AnimateNumber as Zu}from"motion-plus/react";import{useMemo as Ju,useState as oo}from"react";import{Fragment as $u}from"react/jsx-runtime";import{createPortal as ju}from"react-dom";import Sr from"short-uuid";function gr(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 xr(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*as k from"@radix-ui/react-dropdown-menu";import*as Be from"react";import{jsx as se,jsxs as ao}from"react/jsx-runtime";var ct=k.Root,pt=k.Trigger;var ku=Be.forwardRef(({className:e,inset:a,children:t,...o},r)=>ao(k.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,se(ge,{className:"ps-ml-auto"})]}));ku.displayName=k.SubTrigger.displayName;var Ru=Be.forwardRef(({className:e,...a},t)=>se(k.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}));Ru.displayName=k.SubContent.displayName;var za=Be.forwardRef(({className:e,sideOffset:a=4,...t},o)=>se(k.Portal,{children:se(k.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})}));za.displayName=k.Content.displayName;var mt=Be.forwardRef(({className:e,inset:a,...t},o)=>se(k.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}));mt.displayName=k.Item.displayName;var Mu=Be.forwardRef(({className:e,children:a,checked:t,...o},r)=>ao(k.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:[se("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:se(k.ItemIndicator,{children:se(me,{className:"ps-h-4 ps-w-4"})})}),a]}));Mu.displayName=k.CheckboxItem.displayName;var Du=Be.forwardRef(({className:e,children:a,...t},o)=>ao(k.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:[se("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:se(k.ItemIndicator,{children:se(ea,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));Du.displayName=k.RadioItem.displayName;var Tu=Be.forwardRef(({className:e,inset:a,...t},o)=>se(k.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));Tu.displayName=k.Label.displayName;var Au=Be.forwardRef(({className:e,...a},t)=>se(k.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Au.displayName=k.Separator.displayName;var Fu=({className:e,...a})=>se("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});Fu.displayName="DropdownMenuShortcut";import*as Lr from"react";import{jsx as Bu}from"react/jsx-runtime";var ie=Lr.forwardRef(({className:e,type:a,...t},o)=>Bu("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}));ie.displayName="Input";import*as R from"@radix-ui/react-select";import*as Ze from"react";import{jsx as Y,jsxs as Ga}from"react/jsx-runtime";var Je=R.Root;var $e=R.Value,Ne=Ze.forwardRef(({className:e,children:a,label:t,...o},r)=>Ga(R.Trigger,{ref:r,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),...o,children:[Ga("div",{className:"ps-flex ps-items-center ps-gap-1",children:[t&&Ga("span",{className:"ps-text-muted-foreground",children:[t,":"]}),a]}),Y(R.Icon,{asChild:!0,children:Y(Ie,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));Ne.displayName=R.Trigger.displayName;var Cr=Ze.forwardRef(({className:e,...a},t)=>Y(R.ScrollUpButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:Y(ha,{className:"ps-h-4 ps-w-4"})}));Cr.displayName=R.ScrollUpButton.displayName;var hr=Ze.forwardRef(({className:e,...a},t)=>Y(R.ScrollDownButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:Y(Ie,{className:"ps-h-4 ps-w-4"})}));hr.displayName=R.ScrollDownButton.displayName;var Oe=Ze.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>Y(R.Portal,{children:Ga(R.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:[Y(Cr,{}),Y(R.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}),Y(hr,{})]})}));Oe.displayName=R.Content.displayName;var Nu=Ze.forwardRef(({className:e,...a},t)=>Y(R.Label,{ref:t,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));Nu.displayName=R.Label.displayName;var H=Ze.forwardRef(({className:e,children:a,...t},o)=>Ga(R.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:[Y("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Y(R.ItemIndicator,{children:Y(me,{className:"ps-h-4 ps-w-4"})})}),Y(R.ItemText,{children:a})]}));H.displayName=R.Item.displayName;var Ou=Ze.forwardRef(({className:e,...a},t)=>Y(R.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Ou.displayName=R.Separator.displayName;import{Fragment as td,jsx as S,jsxs as W}from"react/jsx-runtime";var br=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>W(Je,{value:e,onValueChange:a,disabled:t,children:[S(Ne,{className:o,children:S($e,{placeholder:"Logic"})}),W(Oe,{children:[S(H,{value:"and",children:S("div",{className:"ps-font-semibold",children:"AND"})}),S(H,{value:"or",children:S("div",{className:"ps-font-semibold",children:"OR"})})]})]}),Yu=({activeId:e,items:a,table:t})=>{let o=a.find(u=>u.id===e);if(!o)return null;let r="and",s=!1,l=a.findIndex(u=>u.id===e);if(l>0){let u=a[l-1];u&&(r=u.after,s=!0)}return o.kind==="ColumnFilter"?S(wr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:s,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):S(ro,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:s,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},ed=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:s,activeDragId:l,onDragStart:u,onDragEndSignal:n})=>{let d=Ju(()=>e.map(p=>p.id),[e]),i=Gu(Ir(zu,{activationConstraint:{distance:8}}),Ir(Hu,{coordinateGetter:Ku}));return W(Eu,{sensors:i,collisionDetection:qu,onDragStart:u,onDragEnd:p=>{let{active:h,over:I}=p;if(I&&h.id!==I.id){let m=e.findIndex(C=>C.id===h.id),L=e.findIndex(C=>C.id===I.id);m!==-1&&L!==-1&&s(m,L)}n()},children:[S(Wu,{items:d,strategy:Xu,children:e.map((p,h)=>{let I=!1,m,L,C=!1;if(h>0){I=!0;let x=e[h-1];m=x.after,L=T=>{let q={...x,after:T};o(h-1,q)},C=h-1===e.length-1}return S(ad,{filter:p,onUpdate:x=>o(h,x),onDelete:()=>r(h),parentDndId:a,table:t,showLeadingOperator:I,leadingOperatorValue:m,onLeadingOperatorChange:L,isLeadingOperatorTargetLast:C},p.id)})}),ju(S(Uu,{children:l?S("div",{className:"ps-opacity-80",children:S(Yu,{activeId:l,items:e,table:t})}):null}),document.body)]})},ad=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})=>{let{attributes:d,listeners:i,setNodeRef:g,transform:p,transition:h,isDragging:I}=_u({id:e.id,data:{type:e.kind,parentId:o}}),m={transform:Qu.Transform.toString(p),transition:h,opacity:I?.5:1};return S("div",{ref:g,style:m,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?S(wr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...d,...i},table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n}):S(ro,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...d,...i},table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})})},wr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:s,leadingOperatorValue:l,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})=>{let d=I=>{a({...e,column:I})},i=I=>{a({...e,operator:I})},g=I=>{let m=I.target.value,L=r.columns[e.column];if(L!==void 0){let C=gr(L,e.operator,m);a({...e,value:C})}},[p,h]=oo(xr(r.columns[e.column],e.operator,e.value));return W(to.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:[W("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[S("div",{...o,className:"ps-cursor-grab",children:S(va,{className:"ps-text-gray-500",size:16})}),W("div",{className:"ps-flex ps-items-center ps-gap-2",children:[s&&u?S(br,{value:l,onValueChange:u,disabled:n}):null,W(Je,{value:e.column,onValueChange:d,children:[S(Ne,{className:"ps-w-28 ps-text-xs ps-h-8",children:S($e,{placeholder:"Select column"})}),S(Oe,{children:Object.keys(r.columns).map(I=>S(H,{value:I,children:I},I))})]}),W(Je,{value:e.operator,onValueChange:I=>i(I),children:[S(Ne,{className:"ps-w-20 ps-text-xs ps-h-8",children:S($e,{placeholder:"Operator"})}),W(Oe,{children:[S(H,{value:"=",children:"="}),S(H,{value:"!=",children:"!="}),S(H,{value:">",children:">"}),S(H,{value:">=",children:">="}),S(H,{value:"<",children:"<"}),S(H,{value:"<=",children:"<="}),S(H,{value:"is",children:"is"}),S(H,{value:"is not",children:"is not"}),S(H,{value:"like",children:"like"}),S(H,{value:"not like",children:"not like"}),S(H,{value:"ilike",children:"ilike"}),S(H,{value:"not ilike",children:"not ilike"})]})]}),S(ie,{value:p,onChange:I=>{h(I.target.value),g(I)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),S("div",{className:"ps-flex ps-items-center ps-gap-2",children:S(A,{variant:"ghost",size:"xs",onClick:t,children:S(Xe,{size:14})})})]})},ro=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:s,showLeadingOperator:l,leadingOperatorValue:u,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:d})=>{let[i,g]=oo(!0),[p,h]=oo(null),I=()=>{let E={id:Sr.generate(),kind:"ColumnFilter",column:Object.keys(s.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,E]})},m=()=>{let E={id:Sr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,E]})},L=(E,X)=>{let V=[...e.filters];V[E]=X,a({...e,filters:V})},C=E=>{let X=[...e.filters];X.splice(E,1),a({...e,filters:X})},x=E=>{h(E.active.id)},T=()=>{h(null)},q=(E,X)=>{if(E===X)return;let V=Vu(e.filters,E,X);a({...e,filters:V})},ee=()=>i?!e.filters||e.filters.length===0?S("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."}):S(to.div,{transition:{layout:{duration:.12}},children:S("div",{className:c("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:S(ed,{items:e.filters,parentGroupId:e.id,table:s,onUpdateItem:L,onDeleteItem:C,onReorderItems:q,activeDragId:p,onDragStart:x,onDragEndSignal:T})})}):null;return S(to.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:W("div",{className:c("ps-flex ps-flex-col ps-w-full",i?"ps-gap-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-gap-2",children:[!r&&S("div",{...o,className:"ps-cursor-grab",onClick:()=>g(!i),children:i?S(Ie,{size:16}):S(ge,{size:16})}),l&&n&&!r&&S("div",{className:"ps-flex ps-items-center",children:S(br,{value:u,onValueChange:n,disabled:d})}),W(A,{variant:"outline",size:"sm",onClick:I,className:c("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&S(et,{className:"ps-transition-all",children:S(Zu,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),S(A,{variant:"outline",size:"sm",onClick:m,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),W("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&W(ct,{children:[S(pt,{asChild:!0,children:S(A,{variant:"ghost",size:"sm",children:S(We,{className:"ps-size-4"})})}),S(za,{align:"center",className:"ps-w-full",children:e.filters.length===0?S("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600",children:"No filters applied yet. Add filters to preview your query."}):S("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:S(yr,{filter:e})})})]}),!r&&S(A,{variant:"ghost",size:"xs",onClick:t,children:S(Xe,{size:14})})]})]}),S("div",{className:c(r?"":"ps-ml-6"),children:ee()})]})})},yr=({filter:e})=>{let a=0;if(e.filters.length===0)return"( )";let t=e.filters.map((o,r)=>{let s,l=e.filters.length-1===r;if(a===-1&&(a=0),o.after==="and"&&!l&&(a+=1),a&&(l||o.after==="or")&&(a=-1),o.kind==="ColumnFilter"){let{column:u,operator:n}=o;s=W(td,{children:[W("span",{children:[" ",u," "]}),W("span",{children:[" ",n," "]}),S("span",{children:" ? "})]})}else s=S(yr,{filter:o});return W($u,{children:[a===1?S("span",{className:"ps-font-semibold",children:"("}):"",s,a===-1?S("span",{className:"ps-font-semibold",children:")"}):"",!l&&W("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return S("span",{children:t})};function vr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return W("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[S(ro,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),S(A,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as xd,MouseSensor as Ld,useSensor as Cd,useSensors as hd}from"@dnd-kit/core";import{arrayMove as Id,horizontalListSortingStrategy as Sd,SortableContext as bd}from"@dnd-kit/sortable";import{getCoreRowModel as wd,useReactTable as yd}from"@tanstack/react-table";import*as qe from"react";import b from"react";function je(){return je=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},je.apply(null,arguments)}var od=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function rd(e,a){let[t,o]=b.useState();b.useEffect(()=>{let s=od(e);o(typeof s>"u"||s===null?typeof a=="function"?a():a:s)},[a,e]);let r=b.useCallback(s=>{o(l=>{let u=s;typeof s=="function"&&(u=s(l));try{localStorage.setItem(e,JSON.stringify(u))}catch{}return u})},[e]);return[t,r]}var be={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},Rr=b.createContext(be);function Mr(e){let{theme:a,...t}=e;return b.createElement(Rr.Provider,je({value:a},t))}function sd(){return b.useContext(Rr)}function ld(e){let[a,t]=b.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return b.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=s=>{let{matches:l}=s;return t(l)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var ud=typeof window>"u";function Ce(e,a,t){return t===void 0&&(t={}),b.forwardRef((o,r)=>{let{style:s,...l}=o,u=sd(),n=Object.entries(t).reduce((d,i)=>{let[g,p]=i;return ld(g)?{...d,...typeof p=="function"?p(l,u):p}:d},{});return b.createElement(e,{...l,style:{...typeof a=="function"?a(l,u):a,...s,...n},ref:r})})}function dd(){let e=b.useRef(!1),a=b.useCallback(()=>e.current,[]);return b[ud?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var nd=Ce("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"}});Ce("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var id=Ce("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"}));Ce("code",{fontSize:".9em"});Ce("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));Ce("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 Pr=Ce("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),gt=Ce("span",{cursor:"pointer",color:"white"}),fd=Ce("span",(e,a)=>({color:a.danger})),so=Ce("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),cd=Ce("span",{color:"grey",fontSize:".7rem"}),kr=e=>{let{expanded:a,style:t={},...o}=e;return b.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},pd=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:s,type:l,expanded:u,toggle:n,pageSize:d,renderer:i}=e,[g,p]=b.useState(void 0),[h,I]=b.useState([]),m=()=>{p(o())};return b.createElement(Pr,{key:t},s!=null&&s.length?b.createElement(b.Fragment,null,b.createElement(gt,{onClick:()=>n()},b.createElement(kr,{expanded:u})," ",t," ",b.createElement(cd,null,String(l).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),u?s.length===1?b.createElement(so,null,r.map(L=>a(L))):b.createElement(so,null,s.map((L,C)=>b.createElement("div",{key:C},b.createElement(Pr,null,b.createElement(gt,{onClick:()=>I(x=>x.includes(C)?x.filter(T=>T!==C):[...x,C])},b.createElement(kr,{expanded:u})," [",C*d," ..."," ",C*d+d-1,"]"),h.includes(C)?b.createElement(so,null,L.map(x=>a(x))):null)))):null):l==="function"?b.createElement(b.Fragment,null,b.createElement(we,{renderer:i,label:b.createElement("button",{onClick:m},b.createElement(gt,null,t)," \u{1F504}"," "),value:g,defaultExpanded:{}})):b.createElement(b.Fragment,null,b.createElement(gt,null,t,":")," ",b.createElement(fd,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function we(e){let{value:a,defaultExpanded:t,renderer:o=pd,pageSize:r=100,depth:s=0,...l}=e,[u,n]=b.useState(t),d=m=>{n(L=>typeof m<"u"?m:!L)},i=[],g=typeof a,p,h=[],I=m=>{let L=i.concat(m.label),C=t===!0?{[m.label]:!0}:t?.[m.label];return{...m,subPath:m,path:L,depth:s+1,defaultExpanded:C}};if(Array.isArray(a)?(g="array",p=a.map((m,L)=>I({label:L,value:m}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(g="Iterable",p=Array.from(a,(m,L)=>I({label:L,value:m}))):typeof a=="function"?g="function":typeof a=="object"&&a!==null&&(g="object",p=Object.entries(a).map(m=>{let[L,C]=m;return I({label:L,value:C})})),p){let m=0;for(;m<p.length;)h.push(p.slice(m,m+r)),m=m+r}return o({handleEntry:m=>b.createElement(we,je({key:m.label,renderer:o},l,m)),type:g,subEntries:p,subEntryPages:h,depth:s,value:a,path:i,expanded:u,toggle:d,pageSize:r,...l})}function Dr(e){return qe.createElement("svg",je({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),qe.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},qe.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},qe.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},qe.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},qe.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) "}),qe.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"}),qe.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 Tr(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:s="footer"}=e,l=b.useRef(null),u=b.useRef(null),[n,d]=rd("reactTableDevtoolsOpen",a),i=dd(),{style:g={},...p}=o,{style:h={},onClick:I,...m}=r;return i()?b.createElement(s,{ref:l,className:"ReactTableDevtools"},b.createElement(Mr,{theme:be},n?b.createElement(md,je({ref:u},p,{table:t,isOpen:n,setIsOpen:d,style:{maxHeight:"80vh",width:"100%",...g}})):b.createElement("button",je({type:"button"},m,{"aria-label":"Open React Table Devtools",onClick:L=>{d(!0),I&&I(L)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...h}}),b.createElement(Dr,{"aria-hidden":!0})))):null}var md=b.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:s,...l}=a;return b.createElement(Mr,{theme:be},b.createElement(nd,je({ref:t,className:"ReactTableDevtoolsPanel"},l),b.createElement("style",{dangerouslySetInnerHTML:{__html:`
1
+ import"../chunk-IAKOOX7B.js";import{D as fa}from"../chunk-OGMDOPWW.js";import{B as Bt,aa as Nt,c as ie,q as Dt,r as At,t as Ft}from"../chunk-RFCV76TR.js";import{a as ks,b as Re}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as Bn,motion as Ss}from"motion/react";import{clsx as ll}from"clsx";var Et="-",Rs=e=>{let a=Ts(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{let u=s.split(Et);return u[0]===""&&u.length!==1&&u.shift(),vo(u,a)||Ms(s)},getConflictingClassGroupIds:(s,u)=>{let d=t[s]||[];return u&&o[s]?[...d,...o[s]]:d}}},vo=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?vo(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let l=e.join(Et);return a.validators.find(({validator:s})=>s(l))?.classGroupId},Io=/^\[(.+)\]$/,Ms=e=>{if(Io.test(e)){let a=Io.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},Ts=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return As(Object.entries(e.classGroups),t).forEach(([l,s])=>{qt(s,o,l,a)}),o},qt=(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(Ds(r)){qt(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([l,s])=>{qt(s,So(a,l),t,o)})})},So=(e,a)=>{let t=e;return a.split(Et).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},Ds=e=>e.isThemeGetter,As=(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)}}},wo="!",Bs=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],l=a.length,s=u=>{let d=[],n=0,i=0,m;for(let I=0;I<u.length;I++){let x=u[I];if(n===0){if(x===r&&(o||u.slice(I,I+l)===a)){d.push(u.slice(i,I)),i=I+l;continue}if(x==="/"){m=I;continue}}x==="["?n++:x==="]"&&n--}let g=d.length===0?u:u.substring(i),h=g.startsWith(wo),S=h?g.substring(1):g,p=m&&m>i?m-i:void 0;return{modifiers:d,hasImportantModifier:h,baseClassName:S,maybePostfixModifierPosition:p}};return t?u=>t({className:u,parseClassName:s}):s},Ns=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},Os=e=>({cache:Fs(e.cacheSize),parseClassName:Bs(e),...Rs(e)}),qs=/\s+/,Es=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,l=[],s=e.trim().split(qs),u="";for(let d=s.length-1;d>=0;d-=1){let n=s[d],{modifiers:i,hasImportantModifier:m,baseClassName:g,maybePostfixModifierPosition:h}=t(n),S=!!h,p=o(S?g.substring(0,h):g);if(!p){if(!S){u=n+(u.length>0?" "+u:u);continue}if(p=o(g),!p){u=n+(u.length>0?" "+u:u);continue}S=!1}let I=Ns(i).join(":"),x=m?I+wo:I,C=x+p;if(l.includes(C))continue;l.push(C);let k=r(p,S);for(let U=0;U<k.length;++U){let Q=k[U];l.push(x+Q)}u=n+(u.length>0?" "+u:u)}return u};function Hs(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=Po(a))&&(o&&(o+=" "),o+=t);return o}var Po=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=Po(e[o]))&&(t&&(t+=" "),t+=a);return t};function bo(e,...a){let t,o,r,l=s;function s(d){let n=a.reduce((i,m)=>m(i),e());return t=Os(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 i=Es(d,t);return r(d,i),i}return function(){return l(Hs.apply(null,arguments))}}var z=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},ko=/^\[(?:([a-z-]+):)?(.+)\]$/i,Us=/^\d+\/\d+$/,zs=new Set(["px","full","screen"]),Vs=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Gs=/\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$/,Ws=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Ks=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,_s=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Me=e=>ca(e)||zs.has(e)||Us.test(e),Ge=e=>pa(e,"length",el),ca=e=>!!e&&!Number.isNaN(Number(e)),Ot=e=>pa(e,"number",ca),Ia=e=>!!e&&Number.isInteger(Number(e)),Xs=e=>e.endsWith("%")&&ca(e.slice(0,-1)),P=e=>ko.test(e),We=e=>Vs.test(e),Qs=new Set(["length","size","percentage"]),Zs=e=>pa(e,Qs,Ro),Js=e=>pa(e,"position",Ro),$s=new Set(["image","url"]),js=e=>pa(e,$s,tl),Ys=e=>pa(e,"",al),Sa=()=>!0,pa=(e,a,t)=>{let o=ko.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},el=e=>Gs.test(e)&&!Ws.test(e),Ro=()=>!1,al=e=>Ks.test(e),tl=e=>_s.test(e);var yo=()=>{let e=z("colors"),a=z("spacing"),t=z("blur"),o=z("brightness"),r=z("borderColor"),l=z("borderRadius"),s=z("borderSpacing"),u=z("borderWidth"),d=z("contrast"),n=z("grayscale"),i=z("hueRotate"),m=z("invert"),g=z("gap"),h=z("gradientColorStops"),S=z("gradientColorStopPositions"),p=z("inset"),I=z("margin"),x=z("opacity"),C=z("padding"),k=z("saturate"),U=z("scale"),Q=z("sepia"),B=z("skew"),N=z("space"),W=z("translate"),H=()=>["auto","contain","none"],q=()=>["auto","hidden","clip","visible","scroll"],ae=()=>["auto",P,a],D=()=>[P,a],Ue=()=>["",Me,Ge],ze=()=>["auto",ca,P],na=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Ve=()=>["solid","dashed","dotted","double","none"],ia=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ta=()=>["start","end","center","between","around","evenly","stretch"],ke=()=>["","0",P],he=()=>["auto","avoid","all","avoid-page","page","left","right","column"],te=()=>[ca,P];return{cacheSize:500,separator:":",theme:{colors:[Sa],spacing:[Me,Ge],blur:["none","",We,P],brightness:te(),borderColor:[e],borderRadius:["none","","full",We,P],borderSpacing:D(),borderWidth:Ue(),contrast:te(),grayscale:ke(),hueRotate:te(),invert:ke(),gap:D(),gradientColorStops:[e],gradientColorStopPositions:[Xs,Ge],inset:ae(),margin:ae(),opacity:te(),padding:D(),saturate:te(),scale:te(),sepia:ke(),skew:te(),space:D(),translate:D()},classGroups:{aspect:[{aspect:["auto","square","video",P]}],container:["container"],columns:[{columns:[We]}],"break-after":[{"break-after":he()}],"break-before":[{"break-before":he()}],"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:[...na(),P]}],overflow:[{overflow:q()}],"overflow-x":[{"overflow-x":q()}],"overflow-y":[{"overflow-y":q()}],overscroll:[{overscroll:H()}],"overscroll-x":[{"overscroll-x":H()}],"overscroll-y":[{"overscroll-y":H()}],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",Ia,P]}],basis:[{basis:ae()}],"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:ke()}],shrink:[{shrink:ke()}],order:[{order:["first","last","none",Ia,P]}],"grid-cols":[{"grid-cols":[Sa]}],"col-start-end":[{col:["auto",{span:["full",Ia,P]},P]}],"col-start":[{"col-start":ze()}],"col-end":[{"col-end":ze()}],"grid-rows":[{"grid-rows":[Sa]}],"row-start-end":[{row:["auto",{span:[Ia,P]},P]}],"row-start":[{"row-start":ze()}],"row-end":[{"row-end":ze()}],"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:[g]}],"gap-x":[{"gap-x":[g]}],"gap-y":[{"gap-y":[g]}],"justify-content":[{justify:["normal",...ta()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...ta(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...ta(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[C]}],px:[{px:[C]}],py:[{py:[C]}],ps:[{ps:[C]}],pe:[{pe:[C]}],pt:[{pt:[C]}],pr:[{pr:[C]}],pb:[{pb:[C]}],pl:[{pl:[C]}],m:[{m:[I]}],mx:[{mx:[I]}],my:[{my:[I]}],ms:[{ms:[I]}],me:[{me:[I]}],mt:[{mt:[I]}],mr:[{mr:[I]}],mb:[{mb:[I]}],ml:[{ml:[I]}],"space-x":[{"space-x":[N]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[N]}],"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:[We]},We]}],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",We,Ge]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Ot]}],"font-family":[{font:[Sa]}],"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",ca,Ot]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Me,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":[x]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[x]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Ve(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Me,Ge]}],"underline-offset":[{"underline-offset":["auto",Me,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:D()}],"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":[x]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...na(),Js]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Zs]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},js]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[S]}],"gradient-via-pos":[{via:[S]}],"gradient-to-pos":[{to:[S]}],"gradient-from":[{from:[h]}],"gradient-via":[{via:[h]}],"gradient-to":[{to:[h]}],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":[x]}],"border-style":[{border:[...Ve(),"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":[x]}],"divide-style":[{divide:Ve()}],"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:["",...Ve()]}],"outline-offset":[{"outline-offset":[Me,P]}],"outline-w":[{outline:[Me,Ge]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Ue()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[x]}],"ring-offset-w":[{"ring-offset":[Me,Ge]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",We,Ys]}],"shadow-color":[{shadow:[Sa]}],opacity:[{opacity:[x]}],"mix-blend":[{"mix-blend":[...ia(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":ia()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",We,P]}],grayscale:[{grayscale:[n]}],"hue-rotate":[{"hue-rotate":[i]}],invert:[{invert:[m]}],saturate:[{saturate:[k]}],sepia:[{sepia:[Q]}],"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":[i]}],"backdrop-invert":[{"backdrop-invert":[m]}],"backdrop-opacity":[{"backdrop-opacity":[x]}],"backdrop-saturate":[{"backdrop-saturate":[k]}],"backdrop-sepia":[{"backdrop-sepia":[Q]}],"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:te()}],ease:[{ease:["linear","in","out","in-out",P]}],delay:[{delay:te()}],animate:[{animate:["none","spin","ping","pulse","bounce",P]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[U]}],"scale-x":[{"scale-x":[U]}],"scale-y":[{"scale-y":[U]}],rotate:[{rotate:[Ia,P]}],"translate-x":[{"translate-x":[W]}],"translate-y":[{"translate-y":[W]}],"skew-x":[{"skew-x":[B]}],"skew-y":[{"skew-y":[B]}],"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":D()}],"scroll-mx":[{"scroll-mx":D()}],"scroll-my":[{"scroll-my":D()}],"scroll-ms":[{"scroll-ms":D()}],"scroll-me":[{"scroll-me":D()}],"scroll-mt":[{"scroll-mt":D()}],"scroll-mr":[{"scroll-mr":D()}],"scroll-mb":[{"scroll-mb":D()}],"scroll-ml":[{"scroll-ml":D()}],"scroll-p":[{"scroll-p":D()}],"scroll-px":[{"scroll-px":D()}],"scroll-py":[{"scroll-py":D()}],"scroll-ps":[{"scroll-ps":D()}],"scroll-pe":[{"scroll-pe":D()}],"scroll-pt":[{"scroll-pt":D()}],"scroll-pr":[{"scroll-pr":D()}],"scroll-pb":[{"scroll-pb":D()}],"scroll-pl":[{"scroll-pl":D()}],"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:[Me,Ge,Ot]}],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"]}}},ol=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:l={},override:s={}})=>{ba(e,"cacheSize",a),ba(e,"prefix",t),ba(e,"separator",o),ba(e,"experimentalParseClassName",r);for(let u in s)rl(e[u],s[u]);for(let u in l)sl(e[u],l[u]);return e},ba=(e,a,t)=>{t!==void 0&&(e[a]=t)},rl=(e,a)=>{if(a)for(let t in a)ba(e,t,a[t])},sl=(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"?bo(yo,e,...a):bo(()=>ol(yo(),e),...a);var ul=Mo({prefix:"ps-"});function c(...e){return ul(ll(e))}import{useIsMutating as yn}from"@tanstack/react-query";import{forwardRef as nl,createElement as il}from"react";var To=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),st=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as dl,createElement as Ao}from"react";var Do={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 Fo=dl(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...u},d)=>Ao("svg",{ref:d,...Do,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:st("lucide",r),...u},[...s.map(([n,i])=>Ao(n,i)),...Array.isArray(l)?l:[l]]));var v=(e,a)=>{let t=nl(({className:o,...r},l)=>il(Fo,{ref:l,iconNode:a,className:st(`lucide-${To(e)}`,o),...r}));return t.displayName=`${e}`,t};var Ke=v("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 ya=v("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);var va=v("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 pe=v("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var Se=v("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var wa=v("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var me=v("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var Pa=v("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var ka=v("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var Ra=v("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var _e=v("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 oa=v("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var Ma=v("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 Ta=v("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var Da=v("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var Aa=v("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 Fa=v("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 Ba=v("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 Na=v("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 Oa=v("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var qa=v("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Xe=v("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 Qe=v("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 Ea=v("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 Ha=v("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 Ua=v("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var za=v("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 Ze=v("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as vn}from"motion-plus/react";import{useEffect as wn,useState as Pn}from"react";import{toast as kn}from"sonner";import{cva as fl}from"class-variance-authority";import{jsx as cl}from"react/jsx-runtime";var Ht=fl("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 lt({className:e,variant:a,...t}){return cl("div",{className:c(Ht({variant:a}),e),...t})}import{Slot as pl}from"@radix-ui/react-slot";import{cva as ml}from"class-variance-authority";import*as Bo from"react";import{jsx as gl}from"react/jsx-runtime";var Ut=ml("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=Bo.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},l)=>gl(o?pl:"button",{className:c(Ut({variant:a,size:t,className:e})),ref:l,...r}));O.displayName="Button";import*as be from"@radix-ui/react-popover";import*as Oo from"react";import{jsx as No}from"react/jsx-runtime";var qo=be.Root,Eo=be.Trigger;var zt=Oo.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>No(be.Portal,{children:No(be.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})}));zt.displayName=be.Content.displayName;import*as De from"react";import{jsx as Te}from"react/jsx-runtime";var Vt=De.forwardRef(({className:e,...a},t)=>Te("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:Te("table",{ref:t,className:c("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));Vt.displayName="Table";var Gt=De.forwardRef(({className:e,...a},t)=>Te("thead",{ref:t,className:c(e),...a}));Gt.displayName="TableHeader";var Wt=De.forwardRef(({className:e,...a},t)=>Te("tbody",{ref:t,className:c("[&_tr:last-child]:ps-border-0",e),...a}));Wt.displayName="TableBody";var xl=De.forwardRef(({className:e,...a},t)=>Te("tfoot",{ref:t,className:c("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));xl.displayName="TableFooter";var ra=De.forwardRef(({className:e,...a},t)=>Te("tr",{ref:t,className:c("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));ra.displayName="TableRow";var Va=De.forwardRef(({className:e,...a},t)=>Te("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}));Va.displayName="TableHead";var Ga=De.forwardRef(({className:e,...a},t)=>Te("td",{ref:t,className:c("ps-align-middle",e),...a}));Ga.displayName="TableCell";var Ll=De.forwardRef(({className:e,...a},t)=>Te("caption",{ref:t,className:c("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));Ll.displayName="TableCaption";import{useMutation as zl,useQueryClient as Vl}from"@tanstack/react-query";import{QueryClient as Al,QueryClientProvider as Fl}from"@tanstack/react-query";import*as ge from"react";import{onlineManager as Cl,useQueryClient as hl}from"@tanstack/react-query";var Ho=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:i}=e;this.#a=ie(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=i,this.#o=ie(l),this.#r=ie(s),this.#s=ie(u),this.#l=ie(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=Bt(()=>{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=Ft(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#u=d),Nt(this.#c,this.#t),Dt(d,At({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}},Uo=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:i,onClose:m}=e;this.#a=ie(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=i,this.#o=ie(l),this.#r=ie(s),this.#s=ie(u),this.#l=ie(d),this.#u=ie(m)}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=Bt(()=>{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=Ft(()=>import("../OKF6E45R-3IGVLQES.js")),this.#d=n),Nt(this.#c,this.#t),Dt(n,At({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 Il}from"react/jsx-runtime";function zo(e){let a=hl(e.client),t=ge.useRef(null),{buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}=e,[n]=ge.useState(new Ho({client:a,queryFlavor:"React Query",version:"5",onlineManager:Cl,buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}));return ge.useEffect(()=>{n.setClient(a)},[a,n]),ge.useEffect(()=>{o&&n.setButtonPosition(o)},[o,n]),ge.useEffect(()=>{r&&n.setPosition(r)},[r,n]),ge.useEffect(()=>{n.setInitialIsOpen(l||!1)},[l,n]),ge.useEffect(()=>{n.setErrorTypes(s||[])},[s,n]),ge.useEffect(()=>(t.current&&n.mount(t.current),()=>{n.unmount()}),[n]),Il("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as Ae from"react";import{onlineManager as bl,useQueryClient as yl}from"@tanstack/react-query";import{jsx as vl}from"react/jsx-runtime";function Vo(e){let a=yl(e.client),t=Ae.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:l}=e,[s]=Ae.useState(new Uo({client:a,queryFlavor:"React Query",version:"5",onlineManager:bl,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:l,onClose:e.onClose}));return Ae.useEffect(()=>{s.setClient(a)},[a,s]),Ae.useEffect(()=>{s.setOnClose(e.onClose??(()=>{}))},[e.onClose,s]),Ae.useEffect(()=>{s.setErrorTypes(o||[])},[o,s]),Ae.useEffect(()=>(t.current&&s.mount(t.current),()=>{s.unmount()}),[s]),vl("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var Go=process.env.NODE_ENV!=="development"?function(){return null}:zo,Gc=process.env.NODE_ENV!=="development"?function(){return null}:Vo;import{createContext as Bl,useContext as Nl,useMemo as Ol,useState as ut}from"react";import{toast as ql}from"sonner";import{Toaster as Pl}from"sonner";import{jsx as kl}from"react/jsx-runtime";var Wo=({...e})=>kl(Pl,{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 Rl}from"nuqs/adapters/custom";import{useEffect as Ml,useState as Tl}from"react";function Dl(){let e=window.location.hash.slice(1),[a,t]=Tl(new URLSearchParams(e));function o(l,{history:s}){let{pathname:u,search:d}=window.location,n=l.toString(),i=`${u}${d}#${n}`;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 Ml(()=>{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 Ko=Rl(Dl);import{jsx as dt,jsxs as Hl}from"react/jsx-runtime";var El=new Al,_o=Bl(void 0);function Xo(e){let{children:a,...t}=e,[o,r]=ut(null),[l,s]=ut(e.adapter.defaultSchema||"public"),[u,d]=ut(!1),[n,i]=ut(!0),m=e.onError;m??=p=>ql.error(p.message);let g=Ol(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),h=()=>d(p=>!p),S=()=>i(p=>!p);return Hl(Fl,{client:El,children:[dt(Go,{}),dt(Wo,{}),dt(Ko,{children:dt(_o.Provider,{value:{...t,activeTable:o,activeSchema:l,isFullscreen:u,setActiveTable:r,setActiveSchema:s,onError:m,emitTelemetryEvent:g,toggleFullscreen:h,isNavigationOpen:n,toggleNavigation:S},children:a})})]})}function Z(){let e=Nl(_o);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function Ul(e,a){let t={filter:fa(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function Qo(e,a){return{...e,__ps_rowid:Ul(e,a)}}function nt(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:Qo(t,a)}:o!==void 0?{...e,rows:o.map(r=>Qo(r,a))}:e}function Zo(){let{activeTable:e,adapter:a}=Z(),t=Vl(),{schema:o=null,name:r=null}=e??{};return zl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(l){let[s,u]=await a.insert({rows:l,table:e},{});if(s)throw s;return nt(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 Gl}from"@tanstack/react-query";function Jo(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:l,adapter:s}=Z();return Gl({enabled:!!l,gcTime:0,placeholderData(u,d){let[,n,,i]=d?.queryKey||[];if(!(n!==l?.schema||i!==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 nt(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 Wl,useQueryClient as Kl}from"@tanstack/react-query";function $o(){let{activeTable:e,adapter:a,onError:t}=Z(),o=Kl(),r=["schema",e?.schema??null,"table",e?.name??null];return Wl({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),Kt({getFinderFn(){let n={...d,...u},i=fa(n,e.columns);return m=>i.every(([g,h])=>m[g]===h)},queryClient:o,table:e,updaterFn:function(i){return{...i,...Object.keys(u).reduce((m,g)=>({...m,[g]:d[g]}),{})}}})},onMutate(l){let{details:s}=l;Kt({getFinderFn(){let{row:u}=s,d=fa(u,e.columns);return n=>d.every(([i,m])=>n[i]===m)},queryClient:o,table:e,updaterFn:function(d){return{...d,...s.changes}}})},onSuccess(l,s){Kt({getFinderFn(){let{changes:u,row:d}=s.details,n={...d,...u},i=fa(n,e.columns);return m=>i.every(([g,h])=>m[g]===h)},queryClient:o,table:e,updaterFn:function(d){let{__ps_updated_at__:n}=d,{row:i}=l;return n!=null&&i.__ps_updated_at__<=n?d:{...d,...i}}})},retry:!1})}function Kt(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 Zl,useMemo as jo,useState as Jl}from"react";import $l from"short-uuid";var J={};ks(J,{keyMap:()=>_t,urlKeys:()=>Ql,useQueryState:()=>Je,useQueryStates:()=>Wa});Re(J,Bp);import{useQueryState as _l,useQueryStates as Xl}from"nuqs";import*as Bp from"nuqs";function _t(e){return e}function Ql(e){return e}var Ap=Symbol("BRAND_SYMBOL");function Je(e,a){return _l(e,a)}function Wa(e,a){return Xl(e,a)}var jl={kind:"FilterGroup",filters:[],after:"and",id:$l.generate()},Yo=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=Yo(t));return a};function it(){let[e,a]=Je("filter",{defaultValue:JSON.stringify(jl)}),t=jo(()=>JSON.parse(e),[e]),o=u=>void a(JSON.stringify(u)),[r,l]=Jl(t);Zl(()=>{l(t)},[t]);let s=jo(()=>Yo(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:l,totalEditingFilters:s}}import{useIsMutating as Yl}from"@tanstack/react-query";function ft(){return Yl({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as eu}from"react";var au=25,tu={pageIndex:J.parseAsIndex.withDefault(0),pageSize:J.parseAsInteger.withDefault(au)};function ct(){let[{pageIndex:e,pageSize:a},t]=Wa(tu),o=eu(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 su,useState as lu}from"react";import{useMutation as ou,useQueryClient as ru}from"@tanstack/react-query";function er(){let{activeTable:e,adapter:a}=Z(),t=ru(),{schema:o=null,name:r=null}=e??{};return ou({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 ar(e){let{activeTable:a,onError:t}=Z(),{paginationState:o}=ct(),[r,l]=lu({}),s=Object.keys(r).length!==0,{mutate:u}=er();su(()=>l({}),[a,o.pageIndex]);function d(){let n=e?.rows.filter(i=>r[i.__ps_rowid]);u(n??[],{onSuccess(){l({})},onError:t})}return{deleteSelection:d,setRowSelectionState:l,rowSelectionState:r,isSelecting:s}}import{useEffect as uu,useState as du}from"react";function tr(){let[e,a]=Je("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]=du(()=>t(e));return uu(()=>{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{isValidElement as xu}from"react";import*as R from"@radix-ui/react-context-menu";import*as Fe from"react";import{jsx as se,jsxs as Zt}from"react/jsx-runtime";var or=R.Root,rr=R.Trigger;var nu=Fe.forwardRef(({className:e,inset:a,children:t,...o},r)=>Zt(R.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,se(me,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));nu.displayName=R.SubTrigger.displayName;var iu=Fe.forwardRef(({className:e,...a},t)=>se(R.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}));iu.displayName=R.SubContent.displayName;var Xt=Fe.forwardRef(({className:e,...a},t)=>se(R.Portal,{children:se(R.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})}));Xt.displayName=R.Content.displayName;var Qt=Fe.forwardRef(({className:e,inset:a,...t},o)=>se(R.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}));Qt.displayName=R.Item.displayName;var fu=Fe.forwardRef(({className:e,children:a,checked:t,...o},r)=>Zt(R.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:[se("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:se(R.ItemIndicator,{children:se(pe,{className:"ps-h-4 ps-w-4"})})}),a]}));fu.displayName=R.CheckboxItem.displayName;var cu=Fe.forwardRef(({className:e,children:a,...t},o)=>Zt(R.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:[se("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:se(R.ItemIndicator,{children:se(oa,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));cu.displayName=R.RadioItem.displayName;var pu=Fe.forwardRef(({className:e,inset:a,...t},o)=>se(R.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}));pu.displayName=R.Label.displayName;var mu=Fe.forwardRef(({className:e,...a},t)=>se(R.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));mu.displayName=R.Separator.displayName;var gu=({className:e,...a})=>se("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});gu.displayName="ContextMenuShortcut";import{jsx as Jt,jsxs as sr}from"react/jsx-runtime";function lr(e){let{children:a}=e;return sr(or,{children:[Jt(rr,{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}),Jt(Xt,{children:sr(Qt,{onClick:()=>{let t=$t(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:[Jt(Ma,{size:12}),"Copy"]})})]})}function $t(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(xu(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?$t(a.children):""}return Array.isArray(e)?e.map($t).join(""):""}import{jsx as ur}from"react/jsx-runtime";function pt(e){let{children:a,className:t,ref:o,style:r,...l}=e;return ur(Ga,{...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:ur(lr,{children:a})})}import{isObjectType as Au}from"remeda";import{jsx as Lu}from"react/jsx-runtime";var jt=e=>{let{value:a}=e;return Lu("div",{"data-cell-type":"boolean",children:String(!!a)})};jt.displayName="BooleanCell";import{Fragment as Cu,jsx as hu}from"react/jsx-runtime";function dr(e){let{value:a}=e;return hu(Cu,{children:String(a)})}import{Fragment as Iu,jsx as Su}from"react/jsx-runtime";function mt(e){return Su(Iu,{})}import{Fragment as bu,jsx as yu}from"react/jsx-runtime";function nr(e){let{value:a}=e;return yu(bu,{children:String(a)})}import{Fragment as vu,jsx as wu}from"react/jsx-runtime";function Yt(e){let{value:a}=e;return wu(vu,{children:JSON.stringify(a,null,2)})}import{jsx as Pu}from"react/jsx-runtime";function ir(e){return Pu("code",{className:"ps-text-muted-foreground/60",children:"NULL"})}import{jsx as ku}from"react/jsx-runtime";function fr(e){let{value:a}=e;return ku("div",{"data-cell-type":"numeric",children:a===null?"NULL":String(a)})}import{Fragment as Ru,jsx as Mu}from"react/jsx-runtime";function eo(e){let{value:a}=e;return Mu(Ru,{children:String(a)})}import{Fragment as Tu,jsx as Du}from"react/jsx-runtime";function cr(e){let{value:a}=e;return Du(Tu,{children:String(a)})}import{jsx as xe}from"react/jsx-runtime";function gt({cell:e,column:a}){let t=e.getValue();if(t===void 0)return xe(mt,{});if(t===null)return xe(ir,{});let{group:o,isArray:r}=a.datatype;if(o==="json"||r)return xe(Yt,{value:t});if(o==="string")return xe(eo,{value:t});if(o==="enum")return xe(nr,{value:t});if(o==="boolean")return xe(jt,{value:t});if(o==="datetime")return xe(dr,{value:t});if(o==="time")return xe(cr,{value:t});if(o==="numeric")return xe(fr,{value:t});if(o==="raw")return Au(t)?xe(Yt,{value:t}):xe(eo,{value:t});throw new Error(`Datatype group "${o}" was not handled in '/cell/get-cell.tsx'`)}import*as Ka from"@radix-ui/react-checkbox";import*as pr from"react";import{jsx as ao}from"react/jsx-runtime";var _a=pr.forwardRef(({className:e,...a},t)=>ao(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:ao(Ka.Indicator,{className:c("ps-flex ps-items-center ps-justify-center ps-text-current"),children:ao(pe,{className:"ps-h-4 ps-w-4"})})}));_a.displayName=Ka.Root.displayName;import{jsx as Fu}from"react/jsx-runtime";function mr(e){let{table:a,readonly:t}=e;return Fu(_a,{checked:a.getIsAllRowsSelected(),onCheckedChange:o=>a.toggleAllRowsSelected(!!o),disabled:t})}import{jsx as Bu}from"react/jsx-runtime";function gr(e){let{row:a,readonly:t}=e;return Bu(_a,{checked:a.getIsSelected(),disabled:!a.getCanSelect()||t,onCheckedChange:a.getToggleSelectedHandler()})}import*as Be from"@radix-ui/react-popover";import*as Y from"react";import{jsx as Xa}from"react/jsx-runtime";var xr=Y.createContext(null),to=({children:e,...a})=>{let[t,o]=Y.useState(!1);return Xa(xr.Provider,{value:{open:t,setOpen:o},children:Xa(Be.Root,{open:t,onOpenChange:o,...a,children:e})})};to.displayName="PopoverCell";var oo=Y.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let l=Y.useRef(null);return Xa(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})});oo.displayName="PopoverCellTrigger";var ro=Y.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Xa(Be.Portal,{children:Xa(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})}));ro.displayName=Be.Content.displayName;function le(e){let a=Y.useContext(xr),t=Y.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=Y.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return Y.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 xt,jsxs as Lr}from"react/jsx-runtime";function Lt(e){let{cellComponent:a,inputComponent:t,linkComponent:o,containerProps:r}=e;return Lr(to,{children:[xt(oo,{asChild:!0,children:xt(pt,{...r,children:Lr("div",{className:"ps-flex ps-flex-row ps-w-full ps-gap-2 ps-justify-between ps-items-center",children:[xt("div",{children:a}),o]})})}),xt(ro,{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-max"),sideOffset:-40,children:t})]})}import{closestCenter as Ku,DndContext as _u,DragOverlay as Xu,KeyboardSensor as Qu,PointerSensor as Zu,useSensor as yr,useSensors as Ju}from"@dnd-kit/core";import{arrayMove as $u,SortableContext as ju,sortableKeyboardCoordinates as Yu,useSortable as ed,verticalListSortingStrategy as ad}from"@dnd-kit/sortable";import{CSS as td}from"@dnd-kit/utilities";import{motion as lo}from"motion/react";import{AnimateNumber as od}from"motion-plus/react";import{useMemo as rd,useState as uo}from"react";import{Fragment as sd}from"react/jsx-runtime";import{createPortal as ld}from"react-dom";import vr from"short-uuid";function Cr(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 hr(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*as M from"@radix-ui/react-dropdown-menu";import*as Ne from"react";import{jsx as ue,jsxs as so}from"react/jsx-runtime";var Ct=M.Root,ht=M.Trigger;var Nu=Ne.forwardRef(({className:e,inset:a,children:t,...o},r)=>so(M.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,ue(me,{className:"ps-ml-auto"})]}));Nu.displayName=M.SubTrigger.displayName;var Ou=Ne.forwardRef(({className:e,...a},t)=>ue(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-dropdown-menu-content-transform-origin]",e),...a}));Ou.displayName=M.SubContent.displayName;var Qa=Ne.forwardRef(({className:e,sideOffset:a=4,...t},o)=>ue(M.Portal,{children:ue(M.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})}));Qa.displayName=M.Content.displayName;var It=Ne.forwardRef(({className:e,inset:a,...t},o)=>ue(M.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}));It.displayName=M.Item.displayName;var qu=Ne.forwardRef(({className:e,children:a,checked:t,...o},r)=>so(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 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:[ue("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ue(M.ItemIndicator,{children:ue(pe,{className:"ps-h-4 ps-w-4"})})}),a]}));qu.displayName=M.CheckboxItem.displayName;var Eu=Ne.forwardRef(({className:e,children:a,...t},o)=>so(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 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:[ue("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ue(M.ItemIndicator,{children:ue(oa,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));Eu.displayName=M.RadioItem.displayName;var Hu=Ne.forwardRef(({className:e,inset:a,...t},o)=>ue(M.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));Hu.displayName=M.Label.displayName;var Uu=Ne.forwardRef(({className:e,...a},t)=>ue(M.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Uu.displayName=M.Separator.displayName;var zu=({className:e,...a})=>ue("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});zu.displayName="DropdownMenuShortcut";import*as Ir from"react";import{jsx as Vu}from"react/jsx-runtime";var oe=Ir.forwardRef(({className:e,type:a,...t},o)=>Vu("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}));oe.displayName="Input";import*as T from"@radix-ui/react-select";import*as $e from"react";import{jsx as ee,jsxs as Za}from"react/jsx-runtime";var je=T.Root;var Ye=T.Value,Oe=$e.forwardRef(({className:e,children:a,label:t,...o},r)=>Za(T.Trigger,{ref:r,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),...o,children:[Za("div",{className:"ps-flex ps-items-center ps-gap-1",children:[t&&Za("span",{className:"ps-text-muted-foreground",children:[t,":"]}),a]}),ee(T.Icon,{asChild:!0,children:ee(Se,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));Oe.displayName=T.Trigger.displayName;var Sr=$e.forwardRef(({className:e,...a},t)=>ee(T.ScrollUpButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:ee(Pa,{className:"ps-h-4 ps-w-4"})}));Sr.displayName=T.ScrollUpButton.displayName;var br=$e.forwardRef(({className:e,...a},t)=>ee(T.ScrollDownButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:ee(Se,{className:"ps-h-4 ps-w-4"})}));br.displayName=T.ScrollDownButton.displayName;var qe=$e.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>ee(T.Portal,{children:Za(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:[ee(Sr,{}),ee(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}),ee(br,{})]})}));qe.displayName=T.Content.displayName;var Gu=$e.forwardRef(({className:e,...a},t)=>ee(T.Label,{ref:t,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));Gu.displayName=T.Label.displayName;var V=$e.forwardRef(({className:e,children:a,...t},o)=>Za(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:[ee("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:ee(T.ItemIndicator,{children:ee(pe,{className:"ps-h-4 ps-w-4"})})}),ee(T.ItemText,{children:a})]}));V.displayName=T.Item.displayName;var Wu=$e.forwardRef(({className:e,...a},t)=>ee(T.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Wu.displayName=T.Separator.displayName;import{Fragment as id,jsx as b,jsxs as K}from"react/jsx-runtime";var wr=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>K(je,{value:e,onValueChange:a,disabled:t,children:[b(Oe,{className:o,children:b(Ye,{placeholder:"Logic"})}),K(qe,{children:[b(V,{value:"and",children:b("div",{className:"ps-font-semibold",children:"AND"})}),b(V,{value:"or",children:b("div",{className:"ps-font-semibold",children:"OR"})})]})]}),ud=({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"?b(Pr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):b(no,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},dd=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:l,activeDragId:s,onDragStart:u,onDragEndSignal:d})=>{let n=rd(()=>e.map(g=>g.id),[e]),i=Ju(yr(Zu,{activationConstraint:{distance:8}}),yr(Qu,{coordinateGetter:Yu}));return K(_u,{sensors:i,collisionDetection:Ku,onDragStart:u,onDragEnd:g=>{let{active:h,over:S}=g;if(S&&h.id!==S.id){let p=e.findIndex(x=>x.id===h.id),I=e.findIndex(x=>x.id===S.id);p!==-1&&I!==-1&&l(p,I)}d()},children:[b(ju,{items:n,strategy:ad,children:e.map((g,h)=>{let S=!1,p,I,x=!1;if(h>0){S=!0;let C=e[h-1];p=C.after,I=k=>{let U={...C,after:k};o(h-1,U)},x=h-1===e.length-1}return b(nd,{filter:g,onUpdate:C=>o(h,C),onDelete:()=>r(h),parentDndId:a,table:t,showLeadingOperator:S,leadingOperatorValue:p,onLeadingOperatorChange:I,isLeadingOperatorTargetLast:x},g.id)})}),ld(b(Xu,{children:s?b("div",{className:"ps-opacity-80",children:b(ud,{activeId:s,items:e,table:t})}):null}),document.body)]})},nd=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let{attributes:n,listeners:i,setNodeRef:m,transform:g,transition:h,isDragging:S}=ed({id:e.id,data:{type:e.kind,parentId:o}}),p={transform:td.Transform.toString(g),transition:h,opacity:S?.5:1};return b("div",{ref:m,style:p,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?b(Pr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...i},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d}):b(no,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...i},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})})},Pr=({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})},i=S=>{a({...e,operator:S})},m=S=>{let p=S.target.value,I=r.columns[e.column];if(I!==void 0){let x=Cr(I,e.operator,p);a({...e,value:x})}},[g,h]=uo(hr(r.columns[e.column],e.operator,e.value));return K(lo.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:[K("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[b("div",{...o,className:"ps-cursor-grab",children:b(Aa,{className:"ps-text-gray-500",size:16})}),K("div",{className:"ps-flex ps-items-center ps-gap-2",children:[l&&u?b(wr,{value:s,onValueChange:u,disabled:d}):null,K(je,{value:e.column,onValueChange:n,children:[b(Oe,{className:"ps-w-28 ps-text-xs ps-h-8",children:b(Ye,{placeholder:"Select column"})}),b(qe,{children:Object.keys(r.columns).map(S=>b(V,{value:S,children:S},S))})]}),K(je,{value:e.operator,onValueChange:S=>i(S),children:[b(Oe,{className:"ps-w-20 ps-text-xs ps-h-8",children:b(Ye,{placeholder:"Operator"})}),K(qe,{children:[b(V,{value:"=",children:"="}),b(V,{value:"!=",children:"!="}),b(V,{value:">",children:">"}),b(V,{value:">=",children:">="}),b(V,{value:"<",children:"<"}),b(V,{value:"<=",children:"<="}),b(V,{value:"is",children:"is"}),b(V,{value:"is not",children:"is not"}),b(V,{value:"like",children:"like"}),b(V,{value:"not like",children:"not like"}),b(V,{value:"ilike",children:"ilike"}),b(V,{value:"not ilike",children:"not ilike"})]})]}),b(oe,{value:g,onChange:S=>{h(S.target.value),m(S)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),b("div",{className:"ps-flex ps-items-center ps-gap-2",children:b(O,{variant:"ghost",size:"xs",onClick:t,children:b(Ze,{size:14})})})]})},no=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:l,showLeadingOperator:s,leadingOperatorValue:u,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:n})=>{let[i,m]=uo(!0),[g,h]=uo(null),S=()=>{let B={id:vr.generate(),kind:"ColumnFilter",column:Object.keys(l.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,B]})},p=()=>{let B={id:vr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,B]})},I=(B,N)=>{let W=[...e.filters];W[B]=N,a({...e,filters:W})},x=B=>{let N=[...e.filters];N.splice(B,1),a({...e,filters:N})},C=B=>{h(B.active.id)},k=()=>{h(null)},U=(B,N)=>{if(B===N)return;let W=$u(e.filters,B,N);a({...e,filters:W})},Q=()=>i?!e.filters||e.filters.length===0?b("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."}):b(lo.div,{transition:{layout:{duration:.12}},children:b("div",{className:c("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:b(dd,{items:e.filters,parentGroupId:e.id,table:l,onUpdateItem:I,onDeleteItem:x,onReorderItems:U,activeDragId:g,onDragStart:C,onDragEndSignal:k})})}):null;return b(lo.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:K("div",{className:c("ps-flex ps-flex-col ps-w-full",i?"ps-gap-2":""),children:[K("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[K("div",{className:"ps-flex ps-items-center ps-gap-2",children:[!r&&b("div",{...o,className:"ps-cursor-grab",onClick:()=>m(!i),children:i?b(Se,{size:16}):b(me,{size:16})}),s&&d&&!r&&b("div",{className:"ps-flex ps-items-center",children:b(wr,{value:u,onValueChange:d,disabled:n})}),K(O,{variant:"outline",size:"sm",onClick:S,className:c("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&b(lt,{className:"ps-transition-all",children:b(od,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),b(O,{variant:"outline",size:"sm",onClick:p,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),K("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&K(Ct,{children:[b(ht,{asChild:!0,children:b(O,{variant:"ghost",size:"sm",children:b(_e,{className:"ps-size-4"})})}),b(Qa,{align:"center",className:"ps-w-full",children:e.filters.length===0?b("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600",children:"No filters applied yet. Add filters to preview your query."}):b("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:b(kr,{filter:e})})})]}),!r&&b(O,{variant:"ghost",size:"xs",onClick:t,children:b(Ze,{size:14})})]})]}),b("div",{className:c(r?"":"ps-ml-6"),children:Q()})]})})},kr=({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=K(id,{children:[K("span",{children:[" ",u," "]}),K("span",{children:[" ",d," "]}),b("span",{children:" ? "})]})}else l=b(kr,{filter:o});return K(sd,{children:[a===1?b("span",{className:"ps-font-semibold",children:"("}):"",l,a===-1?b("span",{className:"ps-font-semibold",children:")"}):"",!s&&K("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return b("span",{children:t})};function Rr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return K("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[b(no,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),b(O,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as vd,MouseSensor as wd,useSensor as Pd,useSensors as kd}from"@dnd-kit/core";import{arrayMove as Rd,horizontalListSortingStrategy as Md,SortableContext as Td}from"@dnd-kit/sortable";import{getCoreRowModel as Dd,useReactTable as Ad}from"@tanstack/react-table";import*as Ee from"react";import y from"react";function ea(){return ea=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},ea.apply(null,arguments)}var fd=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function cd(e,a){let[t,o]=y.useState();y.useEffect(()=>{let l=fd(e);o(typeof l>"u"||l===null?typeof a=="function"?a():a:l)},[a,e]);let r=y.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 ye={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},Dr=y.createContext(ye);function Ar(e){let{theme:a,...t}=e;return y.createElement(Dr.Provider,ea({value:a},t))}function pd(){return y.useContext(Dr)}function md(e){let[a,t]=y.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return y.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 gd=typeof window>"u";function Le(e,a,t){return t===void 0&&(t={}),y.forwardRef((o,r)=>{let{style:l,...s}=o,u=pd(),d=Object.entries(t).reduce((n,i)=>{let[m,g]=i;return md(m)?{...n,...typeof g=="function"?g(s,u):g}:n},{});return y.createElement(e,{...s,style:{...typeof a=="function"?a(s,u):a,...l,...d},ref:r})})}function xd(){let e=y.useRef(!1),a=y.useCallback(()=>e.current,[]);return y[gd?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var Ld=Le("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"}});Le("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var Cd=Le("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"}));Le("code",{fontSize:".9em"});Le("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));Le("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 Mr=Le("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),St=Le("span",{cursor:"pointer",color:"white"}),hd=Le("span",(e,a)=>({color:a.danger})),io=Le("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),Id=Le("span",{color:"grey",fontSize:".7rem"}),Tr=e=>{let{expanded:a,style:t={},...o}=e;return y.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},Sd=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:l,type:s,expanded:u,toggle:d,pageSize:n,renderer:i}=e,[m,g]=y.useState(void 0),[h,S]=y.useState([]),p=()=>{g(o())};return y.createElement(Mr,{key:t},l!=null&&l.length?y.createElement(y.Fragment,null,y.createElement(St,{onClick:()=>d()},y.createElement(Tr,{expanded:u})," ",t," ",y.createElement(Id,null,String(s).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),u?l.length===1?y.createElement(io,null,r.map(I=>a(I))):y.createElement(io,null,l.map((I,x)=>y.createElement("div",{key:x},y.createElement(Mr,null,y.createElement(St,{onClick:()=>S(C=>C.includes(x)?C.filter(k=>k!==x):[...C,x])},y.createElement(Tr,{expanded:u})," [",x*n," ..."," ",x*n+n-1,"]"),h.includes(x)?y.createElement(io,null,I.map(C=>a(C))):null)))):null):s==="function"?y.createElement(y.Fragment,null,y.createElement(ve,{renderer:i,label:y.createElement("button",{onClick:p},y.createElement(St,null,t)," \u{1F504}"," "),value:m,defaultExpanded:{}})):y.createElement(y.Fragment,null,y.createElement(St,null,t,":")," ",y.createElement(hd,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function ve(e){let{value:a,defaultExpanded:t,renderer:o=Sd,pageSize:r=100,depth:l=0,...s}=e,[u,d]=y.useState(t),n=p=>{d(I=>typeof p<"u"?p:!I)},i=[],m=typeof a,g,h=[],S=p=>{let I=i.concat(p.label),x=t===!0?{[p.label]:!0}:t?.[p.label];return{...p,subPath:p,path:I,depth:l+1,defaultExpanded:x}};if(Array.isArray(a)?(m="array",g=a.map((p,I)=>S({label:I,value:p}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(m="Iterable",g=Array.from(a,(p,I)=>S({label:I,value:p}))):typeof a=="function"?m="function":typeof a=="object"&&a!==null&&(m="object",g=Object.entries(a).map(p=>{let[I,x]=p;return S({label:I,value:x})})),g){let p=0;for(;p<g.length;)h.push(g.slice(p,p+r)),p=p+r}return o({handleEntry:p=>y.createElement(ve,ea({key:p.label,renderer:o},s,p)),type:m,subEntries:g,subEntryPages:h,depth:l,value:a,path:i,expanded:u,toggle:n,pageSize:r,...s})}function Fr(e){return Ee.createElement("svg",ea({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),Ee.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},Ee.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},Ee.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},Ee.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},Ee.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) "}),Ee.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"}),Ee.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 Br(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:l="footer"}=e,s=y.useRef(null),u=y.useRef(null),[d,n]=cd("reactTableDevtoolsOpen",a),i=xd(),{style:m={},...g}=o,{style:h={},onClick:S,...p}=r;return i()?y.createElement(l,{ref:s,className:"ReactTableDevtools"},y.createElement(Ar,{theme:ye},d?y.createElement(bd,ea({ref:u},g,{table:t,isOpen:d,setIsOpen:n,style:{maxHeight:"80vh",width:"100%",...m}})):y.createElement("button",ea({type:"button"},p,{"aria-label":"Open React Table Devtools",onClick:I=>{n(!0),S&&S(I)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...h}}),y.createElement(Fr,{"aria-hidden":!0})))):null}var bd=y.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:l,...s}=a;return y.createElement(Ar,{theme:ye},y.createElement(Ld,ea({ref:t,className:"ReactTableDevtoolsPanel"},s),y.createElement("style",{dangerouslySetInnerHTML:{__html:`
2
2
  .ReactTableDevtoolsPanel * {
3
- scrollbar-color: ${be.backgroundAlt} ${be.gray};
3
+ scrollbar-color: ${ye.backgroundAlt} ${ye.gray};
4
4
  }
5
5
 
6
6
  .ReactTableDevtoolsPanel *::-webkit-scrollbar, .ReactTableDevtoolsPanel scrollbar {
@@ -9,15 +9,15 @@ import"../chunk-IAKOOX7B.js";import{D as la}from"../chunk-OGMDOPWW.js";import{B
9
9
  }
10
10
 
11
11
  .ReactTableDevtoolsPanel *::-webkit-scrollbar-track, .ReactTableDevtoolsPanel scrollbar-track {
12
- background: ${be.backgroundAlt};
12
+ background: ${ye.backgroundAlt};
13
13
  }
14
14
 
15
15
  .ReactTableDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactTableDevtoolsPanel scrollbar-thumb {
16
- background: ${be.gray};
16
+ background: ${ye.gray};
17
17
  border-radius: .5em;
18
- border: 3px solid ${be.backgroundAlt};
18
+ border: 3px solid ${ye.backgroundAlt};
19
19
  }
20
- `}}),b.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${be.grayAlt}`,display:"flex",flexDirection:"column"}},b.createElement("div",{style:{padding:".5em",background:be.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},b.createElement(Dr,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>s(!1)}),b.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",b.createElement("span",{style:{fontWeight:100}},"Devtools")),b.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?b.createElement(id,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{s(!1)}},"Close"):null)),b.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},b.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},b.createElement(we,{label:"Instance",value:o,defaultExpanded:!1}),b.createElement("div",{style:{height:".5rem"}}),b.createElement(we,{label:"State",value:o.getState(),defaultExpanded:!1}),b.createElement("div",{style:{height:".5rem"}}),b.createElement(we,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),b.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},b.createElement(we,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),b.createElement(we,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),b.createElement(we,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),b.createElement(we,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),b.createElement(we,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as vd,motion as Pd}from"motion/react";import{useEffect as kd,useMemo as Rd,useState as lo}from"react";import{jsx as gd}from"react/jsx-runtime";function na({className:e,...a}){return gd("div",{className:c("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{jsx as Ar}from"react/jsx-runtime";function Fr({className:e}){return Ar("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:Ar("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as le,jsxs as xt}from"react/jsx-runtime";function Br(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return le("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:le("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"?xt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[le(A,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),le(A,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):le("div",{className:"ps-flex ps-items-center ps-space-x-2",children:xt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[le(A,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:le(Ia,{className:"ps-w-4 ps-h-4"})}),le(A,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:le(Ca,{className:"ps-w-4 ps-h-4"})}),xt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",le(ie,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:s=>{let l=s.target.value?Number(s.target.value)-1:0;a.setPageIndex(l)}}),xt("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),le(A,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:le(ge,{className:"ps-w-4 ps-h-4"})}),le(A,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:le(Sa,{className:"ps-w-4 ps-h-4"})})]})})})})}function Va(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right";return{className:c(a==="cell"&&"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100",a==="header"&&"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head","ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",t&&"ps-sticky",(o||r)&&a==="header"&&"ps-z-20",(o||r)&&a==="cell"&&"ps-z-0"),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}}}import{Fragment as Dd,jsx as K,jsxs as ia}from"react/jsx-runtime";function Or(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:s,onRowSelectionChange:l,onSortingChange:u,pageCount:n,paginationState:d,rows:i,rowSelectionState:g,sortingState:p}=e,[h,I]=lo([]),[m,L]=lo({left:["__ps_select"],right:[]}),[C,x]=lo({}),T=Rd(()=>Nr(p),[p]),q=o||r;kd(()=>{I(a.map(({accessorKey:B})=>B)),L({left:["__ps_select"],right:[]}),x({})},[a]);function ee({active:B,over:F}){F&&B.id!==F.id&&I(J=>{let M=J.indexOf(B.id),Ue=J.indexOf(F.id);return Id(J,M,Ue)})}let E=Cd(Ld,{activationConstraint:{distance:10}}),X=hd(E),V=yd({columnResizeMode:"onChange",columns:a,data:i,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(u&&p),getCoreRowModel:wd(),getRowId:({__ps_rowid:B})=>B,manualPagination:!0,manualSorting:!0,onColumnOrderChange:I,onColumnPinningChange:L,onColumnSizingChange:x,onPaginationChange:s,onRowSelectionChange:l,onSortingChange:B=>u?.(F=>(typeof B=="function"&&(B=B(Nr(F))),Md(B))),pageCount:n,state:{columnOrder:h,columnPinning:m,columnSizing:C,pagination:d,rowSelection:g,sorting:T}});return ia(Dd,{children:[process.env.NODE_ENV==="production"?null:K(Tr,{table:V}),ia("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:[K("div",{children:q&&K(Fr,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),K(xd,{sensors:X,onDragEnd:ee,children:ia(Et,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[K(Ut,{children:V.getHeaderGroups().map(B=>K(aa,{children:K(bd,{items:B.headers.map(F=>F.id),strategy:Sd,children:B.headers.map((F,J)=>{if(typeof F.column.columnDef.header=="function"){let M=F.column.columnDef.header(F.getContext());return K(M,{...Va(F.column,"header")},J)}return null})})},B.id))}),ia(Ht,{children:[t?.(V),V.getRowModel().rows?.length?V.getRowModel().rows.map(B=>K(aa,{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:B.getVisibleCells().map((F,J)=>{if(typeof F.column.columnDef.cell=="function"){let M=F.column.columnDef.cell(F.getContext());return K(M,{...Va(F.column,"cell")},J)}return null})},B.id)):K(aa,{children:K(Oa,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&ia("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[K(na,{className:"ps-h-4 ps-w-full"}),K(na,{className:"ps-h-4 ps-w-4/5"}),K(na,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!n||n<2?null:K(Br,{table:V,variant:"numeric"}),K(vd,{mode:"wait",children:V.getRowModel().rows?.length===0&&!o&&!r&&K(Pd.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:ia("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[K("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),K("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function Nr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function Md(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import{useSortable as Td}from"@dnd-kit/sortable";import{CSS as Ad}from"@dnd-kit/utilities";import{jsx as qr}from"react/jsx-runtime";var Er=e=>{let{children:a,className:t,header:o,style:r}=e,{attributes:s,listeners:l,transform:u,transition:n,setNodeRef:d,isDragging:i}=Td({id:o.id}),g={...r,cursor:"grab",touchAction:"none",transform:Ad.Transform.toString(u),transition:n},p=c(t,i&&"!ps-z-50 ps-border-2 ps-border-violet-500");return qr(Na,{ref:d,...s,...l,style:g,className:p,children:qr("div",{className:"ps-w-full",children:a})})};import{AnimatePresence as Fd,motion as Vr}from"motion/react";import*as he from"@radix-ui/react-tooltip";import*as Hr from"react";import{jsx as Ur}from"react/jsx-runtime";var Lt=he.Provider,Ct=he.Root,ht=he.Trigger,Wa=Hr.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Ur(he.Portal,{children:Ur(he.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})}));Wa.displayName=he.Content.displayName;import{jsx as ta,jsxs as zr}from"react/jsx-runtime";function Gr({column:e}){return zr("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&ta(Lt,{delayDuration:120,children:zr(Ct,{children:[ta(ht,{asChild:!0,children:ta(Pa,{size:12,className:"ps-text-primary"})}),ta(Wa,{side:"bottom",className:"text-xs",children:ta("span",{children:"Primary Key"})})]})}),ta("span",{className:"ps-font-medium ps-truncate",children:e.name}),ta("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{Fragment as uo,jsx as G,jsxs as ye}from"react/jsx-runtime";function Wr(e){let{column:a,header:t,className:o}=e;return ye("div",{className:c("ps-flex ps-items-center ps-justify-between",o),children:[ye("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[G("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:t.isPlaceholder?null:G("span",{className:"ps-flex ps-min-w-0",children:G("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:G(Gr,{column:a})})})}),ye("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[G("span",{className:"ps-flex ps-items-center ps-ml-1",children:G(Fd,{mode:"wait",children:t.column.getIsSorted()==="desc"?G(Vr.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:G(Ma,{size:14,className:"ps-text-muted-foreground"})},"desc"):t.column.getIsSorted()==="asc"?G(Vr.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:G(Da,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),t.column.getCanPin()&&t.column.id!=="select"&&ye(ct,{children:[G(pt,{asChild:!0,children:G(A,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:G(Ie,{size:12})})}),ye(za,{children:[t.column.getCanSort()&&G(mt,{onClick:()=>t.column.toggleSorting(),children:G("span",{className:"ps-flex ps-items-center ps-gap-2",children:t.column.getNextSortingOrder()==="desc"?ye(uo,{children:[G(Ve,{size:16}),"Sort descending"]}):t.column.getNextSortingOrder()==="asc"?ye(uo,{children:[G(La,{size:16}),"Sort ascending"]}):ye(uo,{children:[G(Xe,{size:16}),"Cancel sorting"]})})}),G(mt,{onClick:()=>t.column.pin(t.column.getIsPinned()?!1:"left"),children:t.column.getIsPinned()?ye("span",{className:"ps-flex ps-items-center ps-gap-2",children:[G(Ta,{size:16}),"Unpin column"]}):ye("span",{className:"ps-flex ps-items-center ps-gap-2",children:[G(Aa,{size:16}),"Pin column"]})})]})]})]})]}),t.column.getCanResize()&&G("button",{type:"button",tabIndex:0,onMouseDown:r=>{r.stopPropagation(),t.getResizeHandler()(r)},onTouchStart:r=>{r.stopPropagation(),t.getResizeHandler()(r)},onClick:r=>r.stopPropagation(),onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),r.stopPropagation(),t.getResizeHandler()(r))},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{isObjectType as dn}from"remeda";import{motion as Qr}from"motion/react";import Ud,{useState as Zr}from"react";import*as no from"@radix-ui/react-label";import{cva as Bd}from"class-variance-authority";import*as Kr from"react";import{jsx as Od}from"react/jsx-runtime";var Nd=Bd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),Ka=Kr.forwardRef(({className:e,...a},t)=>Od(no.Root,{ref:t,className:c(Nd(),e),...a}));Ka.displayName=no.Root.displayName;import*as _a from"@radix-ui/react-switch";import*as Xr from"react";import{jsx as _r}from"react/jsx-runtime";var Xa=Xr.forwardRef(({className:e,...a},t)=>_r(_a.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:_r(_a.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")})}));Xa.displayName=_a.Root.displayName;import qd from"dayjs";import{Fragment as Ed,jsx as fe,jsxs as Ye}from"react/jsx-runtime";var ue=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:s,onSetNow:l,showSetNow:u})=>fe("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-p-2",children:!s&&fe(Ed,{children:fe("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-w-full",children:Ye("div",{className:"ps-grid ps-grid-cols-2 ps-gap-1 ps-items-start ps-justify-between",children:[Ye("div",{className:"ps-flex ps-flex-col ps-gap-1",children:[Ye("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0",onClick:()=>{e&&e(),t&&t()},children:[fe("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:fe(wa,{size:12,strokeWidth:2})})," ","Save changes"]}),Ye("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0",onClick:()=>{a&&a(),t&&t()},children:[fe("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"]})]}),Ye("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-items-end",children:[o&&Ye("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0 ps-h-6",htmlFor:"set-nullable",children:[fe(Xa,{id:"set-nullable",checked:r,onCheckedChange:g=>{o&&o(g)}}),fe("span",{children:"Set to NULL"})]}),u&&fe(Lt,{children:Ye(Ct,{children:[fe(ht,{asChild:!0,children:fe("button",{onClick:l,className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0 ps-h-6",disabled:r||s,children:"Set to NOW"})}),fe(Wa,{children:Ye("p",{children:["Set to ",qd().format("LLL")]})})]})})]})]})})})});import{Fragment as Hd,jsx as Qa,jsxs as Jr}from"react/jsx-runtime";function $r(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,[l,u]=Zr(a===null?!1:a),[n,d]=Zr(a===null),i=a===null?!1:a,g=C=>{u(C)},p=C=>{d(C)},h=Ud.useCallback(()=>{let C=n?null:l;return C!==a?(t(C),!0):!1},[l,a,t,n]),I=()=>{u(i),d(a===null)},{handleSave:m,handleCancel:L}=re({onSave:h,onCancel:I,readonly:r});return Jr(Hd,{children:[Jr("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:[Qa(Ka,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),Qa(Qr.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:Qa(Xa,{id:"boolean-input",checked:l,onCheckedChange:g,disabled:n||r})}),Qa(Qr.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(l)})]}),Qa(ue,{onSave:m,onCancel:L,onNullChange:s?p:void 0,isNull:n,readonly:r})]})}import ce from"dayjs";import Wd from"dayjs/plugin/localizedFormat";import{useCallback as Kd,useEffect as jr,useMemo as It,useState as fo}from"react";import{DayPicker as zd}from"react-day-picker";import{jsx as Gd}from"react/jsx-runtime";function io({className:e,classNames:a,showOutsideDays:t=!0,hideNavigation:o,...r}){let s=c("relative flex flex-col gap-4 sm:flex-row",r.monthsClassName),l=c("relative flex h-7 items-center justify-center",r.monthCaptionClassName),u=c("ps-flex ps-items-center ps-justify-center ps-gap-2 ps-w-full",o?"ps-w-full":"ps-hidden",r.dropdownsClassName),n=c("ps-pt-3 ps-text-xs",r.footerClassName),d=c("ps-flex",r.weekdaysClassName),i=c("ps-w-9 ps-text-xs ps-font-normal ps-text-muted-foreground",r.weekdayClassName),g=c("ps-truncate ps-text-xs ps-font-medium",r.captionLabelClassName),p=c("ps-mx-auto ps-mt-4",r.monthGridClassName),h=c("ps-mt-0 ps-flex ps-w-max ps-items-start",r.weekClassName),I=c("ps-flex ps-size-9 ps-flex-1 ps-items-center ps-justify-center ps-p-0 ps-text-xs",r.dayClassName),m=c(Ot({variant:"ghost"}),"ps-size-8 ps-rounded-md ps-p-0 ps-font-normal ps-text-xs ps-transition-none aria-selected:ps-opacity-100",r.dayButtonClassName),L="ps-bg-accent ps-[&>button]:ps-bg-primary [&>button]:ps-text-primary-foreground [&>button]:ps-hover:ps-bg-primary [&>button]:ps-hover:ps-text-primary-foreground",C=c(L,"ps-rounded-s-md",r.rangeStartClassName),x=c(L,"ps-rounded-e-md",r.rangeEndClassName),T=c("ps-bg-accent !ps-text-foreground [&>button]:ps-bg-transparent [&>button]:!ps-text-foreground [&>button]:hover:ps-bg-transparent [&>button]:hover:!ps-text-foreground",r.rangeMiddleClassName),q=c("[&>button]:ps-bg-primary [&>button]:ps-text-primary-foreground [&>button]:ps-hover:ps-bg-primary [&>button]:ps-hover:ps-text-primary-foreground","[&[aria-selected]>button]:ps-bg-primary [&[aria-selected]>button]:ps-text-primary-foreground",r.selectedClassName),ee=c("[&>button]:ps-font-bold [&>button]:ps-text-accent-foreground",r.todayClassName),E=c("ps-text-muted-foreground ps-opacity-50 aria-selected:ps-text-muted-foreground aria-selected:ps-opacity-30",r.outsideClassName),X=c("ps-text-muted-foreground ps-opacity-50",r.disabledClassName),V=c("ps-invisible ps-flex-1",r.hiddenClassName);return Gd(zd,{mode:"single",captionLayout:"label",hideNavigation:!0,showOutsideDays:t,className:c("ps-p-0",e),classNames:{caption_label:g,day:I,day_button:m,dropdowns:u,footer:n,month:r.monthClassName,month_caption:l,month_grid:p,months:s,week:h,weekday:i,weekdays:d,range_end:x,range_middle:T,range_start:C,selected:q,disabled:X,hidden:V,outside:E,today:ee,nav:"ps-hidden",...a},...r})}io.displayName="Calendar";import{useState as Vd}from"react";function fa(e){let{initialValue:a}=e,[t,o]=Vd(a??"");return{handleOnChange:s=>{o(s.target.value)},value:t,setValue:o}}import{Fragment as Xd,jsx as pe,jsxs as Za}from"react/jsx-runtime";ce.extend(Wd);function Yr(e){let{onSubmit:a,value:t,readonly:o,column:r}=e,s=String(t),l=It(()=>{let v=ce(s);return v.isValid()?v.toDate():new Date},[s]),[u,n]=fo(l),[d,i]=fo(l),{handleOnChange:g,value:p,setValue:h}=fa({initialValue:s}),I=v=>{g(v);try{let z=v.target.value,U=ce(z);if(U.isValid()){let $=U.toDate();n($),i($)}}catch{}},m=v=>{if(!v)return;n(v),i(v);let z=r?.datatype?.name||r?.datatype,U=L(z);h(U?ce(v).format(U):ce(v).toISOString())},L=v=>{switch(v){case"date":return"YYYY-MM-DD";case"time":return"HH:mm:ss.SSSSS";case"timestamp":return"YYYY-MM-DD HH:mm:ss.SSSSSS";case"timestamptz":return"YYYY-MM-DD HH:mm:ss.SSSSSSZ";case"timetz":return"HH:mm:ss.SSSSSSZ";default:return}},C=It(()=>{try{let v=ce(p);return v.isValid()?p.includes(":")?v.format("LL LTS"):v.format("LL"):p}catch{return p}},[p]);function x(v){v.preventDefault(),p!==s&&a(p)}let T=Kd(()=>p!==s?(a(p),!0):!1,[p,s,a]),q=()=>{},{handleSave:ee,handleCancel:E}=re({onSave:T,onCancel:q,readonly:o}),X=v=>{v.preventDefault(),v.stopPropagation();let z=new Date;n(z),i(z);let U=r?.datatype?.name||r?.datatype,$=L(U);h($?ce(z).format($):ce(z).toISOString())},V=It(()=>[{value:"0",label:"January"},{value:"1",label:"February"},{value:"2",label:"March"},{value:"3",label:"April"},{value:"4",label:"May"},{value:"5",label:"June"},{value:"6",label:"July"},{value:"7",label:"August"},{value:"8",label:"September"},{value:"9",label:"October"},{value:"10",label:"November"},{value:"11",label:"December"}],[]),B=It(()=>d.getMonth().toString(),[d]),[F,J]=fo(()=>d.getFullYear().toString()),M=v=>{let z=new Date(d);if(z.setMonth(parseInt(v)),i(z),u){let U=new Date(u);U.setMonth(parseInt(v)),n(U);let $=r?.datatype?.name||r?.datatype,ae=L($);h(ae?ce(U).format(ae):ce(U).toISOString())}},Ue=v=>{let z=v.target.value;if(J(z),/^\d{4}$/.test(z)){let U=parseInt(z),$=new Date(d);$.setFullYear(U),i($);let ae=u?new Date(u):new Date($);ae.setFullYear(U),n(ae);let Pe=r?.datatype?.name||r?.datatype,He=L(Pe),te=He?ce(ae).format(He):ce(ae).toISOString();h(te),console.log("Year updated:",{year:U,newSelectedDate:ae,newValue:te,dbFormat:He})}};return jr(()=>{u&&J(u.getFullYear().toString())},[u]),jr(()=>{d&&J(d.getFullYear().toString())},[d]),Za(Xd,{children:[pe("form",{onSubmit:x,children:Za("div",{className:"ps-flex ps-items-center ps-pr-[var(--studio-cell-spacing)]",children:[pe(ie,{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:I,type:"text",value:p}),pe("input",{type:"submit",className:"ps-sr-only"})]})}),Za("div",{className:"ps-flex ps-flex-col ps-gap-0 ps-p-2 ps-border-t ps-border-table-border",children:[Za("div",{className:"ps-flex ps-items-center ps-justify-between ps-mb-1 ps-gap-2",children:[Za(Je,{value:B,onValueChange:M,children:[pe(Ne,{className:"ps-text-xs ps-border-transparent data-[state=open]:ps-border-primary ps-shadow-none ps-bg-neutral-200/40",children:pe($e,{placeholder:"Month"})}),pe(Oe,{children:V.map(v=>pe(H,{value:v.value,children:v.label},v.value))})]}),pe(ie,{className:"ps-text-xs ps-w-20 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"text",value:F,onChange:Ue,placeholder:"Year"})]}),pe(_d,{selected:u,month:d,onSelect:m,onMonthChange:i,disabled:o}),pe("code",{className:"ps-sr-only",children:C})]}),pe(ue,{onSave:ee,onCancel:E,readonly:o,onSetNow:X,showSetNow:!0})]})}function _d({selected:e,month:a,onSelect:t,onMonthChange:o,disabled:r}){return pe(io,{mode:"single",selected:e,onSelect:t,disabled:r,month:a,onMonthChange:o,className:"ps-w-full",captionLayout:"dropdown"})}import{useCallback as Qd,useState as es}from"react";import{Fragment as Zd,jsx as St,jsxs as Jd}from"react/jsx-runtime";function as(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:s}=e,l=t.nullable===!0,u=String(o),[n,d]=es(u),[i,g]=es(o===null),p=x=>{d(x)},h=x=>{g(x)},I=Qd(()=>i?o!==null?(a(null),!0):!1:n!==u?(a(n),!0):!1,[n,u,a,i,o]),m=()=>{d(u),g(o===null)},{handleSave:L,handleCancel:C}=re({onSave:I,onCancel:m,readonly:s});return Jd(Zd,{children:[St("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}),St("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(x=>St("button",{onClick:()=>p(x),className:Nt({variant:x===n?"default":"outline"}),disabled:i||s,children:x},x))}),St(ue,{onSave:L,onCancel:C,onNullChange:l?h:void 0,isNull:i,readonly:s})]})}import $d,{useState as ts}from"react";import{Fragment as jd,jsx as co,jsxs as Yd}from"react/jsx-runtime";function os(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,l=a===null?"":JSON.stringify(a,null,2),[u,n]=ts(l),[d,i]=ts(a===null),g=C=>{n(C.target.value)},p=C=>{i(C)},h=$d.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let C=u===""?null:JSON.parse(u);return C!==a?(t(C),!0):!1},[u,a,t,d]),I=()=>{n(l),i(a===null)},{handleSave:m,handleCancel:L}=re({onSave:h,onCancel:I,readonly:r});return Yd(jd,{children:[co("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:co("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"})}),co(ue,{onSave:m,onCancel:L,onNullChange:s?p:void 0,isNull:d,readonly:r})]})}import en,{useState as rs}from"react";import{Fragment as an,jsx as po,jsxs as ss}from"react/jsx-runtime";function ls(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,s=o.nullable===!0,[l,u]=rs(a===null?"":String(a)),[n,d]=rs(a===null),i=a===null?"":String(a),g=C=>{u(C.target.value)},p=C=>{d(C)},h=en.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let C=l===""?null:Number(l);return l!==a?(t(C),!0):!1},[l,a,t,n]),I=()=>{u(i),d(a===null)},{handleSave:m,handleCancel:L}=re({onSave:h,onCancel:I,readonly:r});return ss(an,{children:[ss("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[po(Ka,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),po("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:l,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"})]}),po(ue,{onSave:m,onCancel:L,onNullChange:s?p:void 0,isNull:n,readonly:r})]})}import tn from"react";import{Fragment as on,jsx as mo,jsxs as us}from"react/jsx-runtime";function ds(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:s,value:l}=fa({initialValue:r});function u(p){p.preventDefault(),l!==r&&a(l)}let n=tn.useCallback(()=>l!==r?(a(l),!0):!1,[l,r,a]),d=()=>{},{handleSave:i,handleCancel:g}=re({onSave:n,onCancel:d,readonly:o});return us(on,{children:[us("form",{onSubmit:u,children:[mo(ie,{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:s,type:"text",value:l,disabled:o}),mo("input",{type:"submit",className:"ps-sr-only"})]}),mo(ue,{onSave:i,onCancel:g,readonly:o})]})}import ns from"dayjs";import rn from"dayjs/plugin/localizedFormat";import{useCallback as sn,useMemo as ln}from"react";import{Fragment as un,jsx as Ja,jsxs as go}from"react/jsx-runtime";ns.extend(rn);function is(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:s,value:l}=fa({initialValue:r}),u=ln(()=>{try{if(!l.includes(":"))return l;let h=/[+-]\d{2}(:\d{2})?$/.test(l),I=ns(`2000-01-01 ${l}`);if(I.isValid())return I.format("h:mm A")+(h?` (${I.format("Z")})`:"");let m=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,L=l.match(m);if(L){let C=parseInt(L[1]||"12",10),x=L[2]||"00",T=L[4]||"",q=C>=12?"PM":"AM";return`${C%12===0?12:C%12}:${x} ${q}${T?` (${T})`:""}`}return l}catch{return l}},[l]);function n(h){h.preventDefault(),l!==r&&a(l)}let d=sn(()=>l!==r?(a(l),!0):!1,[l,r,a]),i=()=>{},{handleSave:g,handleCancel:p}=re({onSave:d,onCancel:i,readonly:o});return go(un,{children:[go("form",{onSubmit:n,children:[Ja(ie,{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:s,type:"text",value:l}),Ja("input",{type:"submit",className:"ps-sr-only"})]}),go("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Ja("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Ja("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Ja(ue,{onSave:g,onCancel:p,readonly:o})]})}import{jsx as oa}from"react/jsx-runtime";function bt(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:s,isArray:l}=t.datatype,u=t.isComputed||e.readonly,n=a.getValue(),d=n===void 0?"":n;return r==="datetime"?oa(Yr,{onSubmit:o,value:d,column:t,readonly:u}):r==="time"?oa(is,{onSubmit:o,value:d,column:t,readonly:u}):r==="json"||l?oa(os,{onSubmit:o,value:d,column:t,readonly:u}):r==="boolean"?oa($r,{onSubmit:o,value:d,column:t,readonly:u}):r==="enum"?oa(as,{onSubmit:o,value:d,options:s,column:t,readonly:u}):r==="numeric"?oa(ls,{onSubmit:o,value:d,column:t,readonly:u}):oa(ds,{onSubmit:o,value:dn(d)?JSON.stringify(d):d,readonly:u})}import ps from"short-uuid";import{useCallback as fs,useEffect as yt,useMemo as cs}from"react";import{v4 as fn}from"uuid";import{useQuery as nn}from"@tanstack/react-query";var wt=-1;function ca(){let{adapter:e}=Q();return nn({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:wt,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===wt?0:1/0})}function $a(){let{activeTable:e,setActiveTable:a,activeSchema:t,setActiveSchema:o,adapter:r,emitTelemetryEvent:s}=Q(),{data:l,dataUpdatedAt:u}=ca(),n=u===wt,[d,i]=qa({table:{defaultValue:null,parse:x=>x,serialize:x=>x??""},schema:{defaultValue:null,parse:x=>x||r.defaultSchema||"public",serialize:x=>x||r.defaultSchema||"public"}}),[,g]=Qe("pageIndex",{parse:x=>x,serialize:x=>x??""}),[,p]=Qe("sort",{parse:x=>x,serialize:x=>x??""}),h=cs(()=>Object.values(l.schemas[t]?.tables||{}),[l.schemas,t]),I=cs(()=>Object.values(l.schemas).reduce((x,T)=>x+Object.keys(T.tables).length,0),[l.schemas]),[m]=h;yt(()=>{if(!n){if(d?.table&&h.length>0){let x=h.find(T=>T.name===d.table&&T.schema===t);if(x){a(x);return}}h.length>0&&!e&&(a(m||null),m&&i({table:m.name,schema:t}))}},[n,d,h,m,e,t,a,i]);let L=fs(x=>{e!==x&&(a(x),i({table:x.name,schema:x.schema}),g(null),p(null))},[e,a,i,g,p]),C=fs(x=>{x!==t&&(a(null),o(x),i({table:null,schema:x}),g(null),p(null))},[t,o,a,i,g,p]);return yt(()=>{d?.schema!==t&&!n&&i(x=>({...x,schema:t}))},[t,d?.schema,i,n]),yt(()=>{d?.schema&&d.schema!==t&&o(d.schema)},[d?.schema,t,o]),yt(()=>{u!==-1&&s({event:"studio_launched",payload:{event_id:fn(),timestamp:new Date().toISOString(),table_count:I}})},[h,s,u,I]),{tables:h,activeTable:e,activeSchema:t,isLoading:n,handleTableChange:L,handleSchemaChange:C}}import{jsx as ms}from"react/jsx-runtime";function gs(e){let{cell:a,column:t}=e,{fkSchema:o,fkTable:r,fkColumn:s}=t,{handleSchemaChange:l,handleTableChange:u}=$a(),{setAppliedFilter:n}=rt(),{data:d}=ca();if(o!==null&&r!==null&&s!==null){let i=d.schemas[o]?.tables[r];if(i!==void 0)return ms(A,{size:"xs",variant:"outline",onClick:g=>{g.stopPropagation(),l(o),u(i),n({kind:"FilterGroup",id:ps.generate(),after:"and",filters:[{kind:"ColumnFilter",id:ps.generate(),column:s,operator:"=",value:a.getValue(),after:"and"}]})},children:ms(xa,{size:12})})}return null}import{useReactTable as cn}from"@tanstack/react-table";import{omit as pn}from"remeda";import{Fragment as mn,jsx as ja}from"react/jsx-runtime";function xs(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!st();function s(n,d){o(i=>{let g=[...i];return g[n]={...g[n],...d},g})}let l=Object.values(a.options.columns).map(n=>n.id==="__ps_select"?{...n,cell(){return()=>ja(dt,{})}}:{...n,cell({cell:d}){return i=>ja(ft,{cellComponent:nt({cell:d,column:n.meta}),linkComponent:null,inputComponent:bt({cell:d,column:n.meta,onSubmit(g){s(i.rowIndex,{[n.id]:g})},readonly:r})})}}),u=cn({...a.options,columns:l,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:pn(a.options.state,["pagination","sorting"])});return ja(mn,{children:u.getRowModel().rows.map((n,d)=>ja(aa,{children:n.getVisibleCells().map((i,g)=>{if(typeof i.column.columnDef.cell=="function"){let p=i.column.columnDef.cell(i.getContext());return ja(p,{...Va(i.column,"cell"),rowIndex:d},g)}return null})},d))})}import{Fragment as xo,jsx as D,jsxs as ra}from"react/jsx-runtime";function Ls(e){let a=!!gn(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:s,toggleNavigation:l,isNavigationOpen:u}=Q(),{sortingState:n,setSortingState:d}=Yo(),{paginationState:i,setPaginationState:g}=lt(),[p,h]=Cn([]),{appliedFilter:I,setAppliedFilter:m,editingFilter:L,setEditingFilter:C,totalEditingFilters:x}=rt(),{data:T,isFetching:q,refetch:ee}=Xo({...i,sortOrder:n,filter:I}),{deleteSelection:E,isSelecting:X,rowSelectionState:V,setRowSelectionState:B}=jo(T),F=!Object.values(t?.columns??{}).some(N=>N.isInPrimaryKey),J=st(),M=_o(),Ue=Qo();if(Ln(()=>h([]),[t]),!t)return null;function v(){M.mutate(p,{onError:o,onSuccess(){hn.success("Rows inserted successfully"),h([])}})}function z(){h(N=>[...N,{}])}function U(){h([])}function $(N,de,sa){Ue.mutate({details:{changes:{[de.name]:N},row:sa,table:t},options:{}})}function ae(N){N===!0?C(I):m(L)}let Pe=Object.values(t?.columns??{}).map(N=>({id:N.name,accessorKey:N.name,meta:N,header({table:de,header:sa}){return Pt=>D(Er,{table:de,header:sa,...Pt,children:D(Wr,{header:sa,column:N})})},cell({cell:de}){return sa=>D(ft,{containerProps:sa,cellComponent:nt({cell:de,column:N}),linkComponent:gs({cell:de,column:N}),inputComponent:bt({cell:de,column:N,readonly:F,onSubmit(Pt){return $(Pt,N,de.row.original)}})})}})),He=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,size:35,minSize:35,header({table:N}){return de=>D(Na,{...de,children:D(fr,{table:N,readonly:F})})},cell({row:N}){return de=>D(ut,{...de,children:D(cr,{row:N,readonly:F})})}}],te=[...Pe,...He].sort(Sn);return ra(xo,{children:[D("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:D("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:ra("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[ra("div",{className:"ps-flex ps-items-center ps-gap-2",children:[D(A,{variant:"outline",size:"sm",onClick:l,children:u?D(Ke,{}):D(_e,{})}),ra(Bo,{onOpenChange:ae,children:[D(No,{asChild:!0,children:D(A,{variant:"outline",size:"sm",className:c(x>0&&"ps-border-primary"),children:ra("span",{className:"ps-flex ps-items-center ps-gap-2",children:[D(ya,{}),x>0&&D(et,{children:D(xn,{transition:{layout:{duration:.12}},children:x})})]})})}),D(qt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:D(vr,{filter:L,setFilter:C,setAppliedFilter:N=>{C(N),m(N)},table:t})})]}),D(A,{variant:"outline",size:"sm",onClick:z,disabled:J>0,children:"Insert row"}),p.length>0&&ra(xo,{children:[D(A,{variant:"secondary",size:"sm",onClick:v,children:"Save"}),D(A,{variant:"ghost",size:"sm",onClick:U,children:"Cancel"})]}),X&&D(xo,{children:D(A,{variant:"secondary",size:"sm",onClick:E,children:"Delete"})})]}),ra("div",{className:"ps-flex ps-items-center ps-gap-2",children:[D(A,{variant:"outline",size:"icon",onClick:()=>void ee(),disabled:q,children:D(Fa,{className:c("ps-h-4 ps-w-4",q&&"ps-animate-spin")})}),D(A,{variant:"outline",size:"icon",onClick:s,children:r?D(Ra,{}):D(ka,{})})]})]})})}),D(Or,{columnDefs:te,getBeforeRows:N=>D(xs,{table:N,stagedRows:p,setStagedRows:h}),isLoading:q,isProcessing:a,onPaginationChange:g,onRowSelectionChange:B,onSortingChange:d,pageCount:In(T?.filteredRowCount??1/0,i.pageSize),paginationState:i,rows:T?.rows??[],rowSelectionState:V,sortingState:n})]})}function In(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 Sn(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 bn}from"@radix-ui/react-slot";import{jsx as _,jsxs as vt}from"react/jsx-runtime";function ve({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=$a(),s=c("ps-flex ps-flex-col ps-w-48 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return vt("div",{className:s,children:[_(ve.SchemaSelector,{}),_(ve.Block,{label:"Tables",children:a.length>0?a.map(l=>_(ve.Item,{asChild:!0,isActive:t===l,onClick:()=>{r(l)},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:_("a",{href:`#table=${l.name}&schema=${l.schema}`,children:l.name})},`${l.schema}-${l.name}`)):o?Array(4).fill(null).map((l,u)=>_(ve.Item,{wrapChildrenInSpan:!1,children:_(na,{className:"ps-h-3 ps-w-full"})},u)):_(ve.Item,{children:"No tables found"})})]})}var wn=({className:e,label:a,children:t,...o})=>vt("div",{className:e,...o,children:[vt("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:[_(Ba,{size:16,className:"ps-text-muted-foreground/60"}),_("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),_("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),yn=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:s=!0,...l})=>_(a?bn:"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),...l,children:s?_("span",{className:"ps-truncate",children:r}):r}),vn=()=>{let{data:e,isLoading:a}=ca(),{activeSchema:t,handleSchemaChange:o}=$a(),r=Object.keys(e.schemas||{});return _("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:vt(Je,{value:t,onValueChange:o,children:[_(Ne,{className:"ps-text-xs",label:"Schema",children:_($e,{placeholder:"Select schema"})}),_(Oe,{children:a?_(H,{value:"loading",children:"Loading schemas..."}):r.length>0?r.map(s=>_(H,{value:s,className:"ps-text-xs",children:s},s)):_(H,{value:"no-schemas",children:"No schemas found"})})]})})};ve.Block=wn;ve.Item=yn;ve.SchemaSelector=vn;import{jsx as Ee,jsxs as Mn}from"react/jsx-runtime";function kn(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Ee(Wo,{adapter:a,onError:t,onTelemetryEvent:o,children:Ee(Rn,{})}):(console.error("No adapter provided to Studio component"),Ee("div",{children:"Error: No adapter provided"}))}function Rn(){let{isFullscreen:e,isNavigationOpen:a}=Q(),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 Ee("div",{"data-fullscreen":e,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:[Ee(Pn,{mode:"wait",children:a&&Ee(Cs.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Ee(ve,{})})}),Ee(Cs.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:Ee(Ls,{})})]})})}export{kn as Studio};
20
+ `}}),y.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${ye.grayAlt}`,display:"flex",flexDirection:"column"}},y.createElement("div",{style:{padding:".5em",background:ye.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},y.createElement(Fr,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>l(!1)}),y.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",y.createElement("span",{style:{fontWeight:100}},"Devtools")),y.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?y.createElement(Cd,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{l(!1)}},"Close"):null)),y.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},y.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},y.createElement(ve,{label:"Instance",value:o,defaultExpanded:!1}),y.createElement("div",{style:{height:".5rem"}}),y.createElement(ve,{label:"State",value:o.getState(),defaultExpanded:!1}),y.createElement("div",{style:{height:".5rem"}}),y.createElement(ve,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),y.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},y.createElement(ve,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),y.createElement(ve,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),y.createElement(ve,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),y.createElement(ve,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),y.createElement(ve,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as Fd,motion as Bd}from"motion/react";import{useEffect as Nd,useMemo as Od,useState as fo}from"react";import{jsx as yd}from"react/jsx-runtime";function ma({className:e,...a}){return yd("div",{className:c("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{jsx as Nr}from"react/jsx-runtime";function Or({className:e}){return Nr("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:Nr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as de,jsxs as bt}from"react/jsx-runtime";function qr(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return de("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:de("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"?bt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[de(O,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),de(O,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):de("div",{className:"ps-flex ps-items-center ps-space-x-2",children:bt("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[de(O,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:de(ka,{className:"ps-w-4 ps-h-4"})}),de(O,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:de(wa,{className:"ps-w-4 ps-h-4"})}),bt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",de(oe,{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)}}),bt("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),de(O,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:de(me,{className:"ps-w-4 ps-h-4"})}),de(O,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:de(Ra,{className:"ps-w-4 ps-h-4"})})]})})})})}function Ja(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right";return{className:c(a==="cell"&&"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100",a==="header"&&"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head","ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",t&&"ps-sticky",(o||r)&&a==="header"&&"ps-z-20",(o||r)&&a==="cell"&&"ps-z-0"),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}}}import{Fragment as Ed,jsx as _,jsxs as ga}from"react/jsx-runtime";function Hr(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:u,pageCount:d,paginationState:n,rows:i,rowSelectionState:m,sortingState:g}=e,[h,S]=fo([]),[p,I]=fo({left:["__ps_select"],right:[]}),[x,C]=fo({}),k=Od(()=>Er(g),[g]),U=o||r;Nd(()=>{S(a.map(({accessorKey:H})=>H)),I({left:["__ps_select"],right:[]}),C({})},[a]);function Q({active:H,over:q}){q&&H.id!==q.id&&S(ae=>{let D=ae.indexOf(H.id),Ue=ae.indexOf(q.id);return Rd(ae,D,Ue)})}let B=Pd(wd,{activationConstraint:{distance:10}}),N=kd(B),W=Ad({columnResizeMode:"onChange",columns:a,data:i,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(u&&g),getCoreRowModel:Dd(),getRowId:({__ps_rowid:H})=>H,manualPagination:!0,manualSorting:!0,onColumnOrderChange:S,onColumnPinningChange:I,onColumnSizingChange:C,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:H=>u?.(q=>(typeof H=="function"&&(H=H(Er(q))),qd(H))),pageCount:d,state:{columnOrder:h,columnPinning:p,columnSizing:x,pagination:n,rowSelection:m,sorting:k}});return ga(Ed,{children:[process.env.NODE_ENV==="production"?null:_(Br,{table:W}),ga("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:[_("div",{children:U&&_(Or,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),_(vd,{sensors:N,onDragEnd:Q,children:ga(Vt,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[_(Gt,{children:W.getHeaderGroups().map(H=>_(ra,{children:_(Td,{items:H.headers.map(q=>q.id),strategy:Md,children:H.headers.map((q,ae)=>{if(typeof q.column.columnDef.header=="function"){let D=q.column.columnDef.header(q.getContext());return _(D,{...Ja(q.column,"header")},ae)}return null})})},H.id))}),ga(Wt,{children:[t?.(W),W.getRowModel().rows?.length?W.getRowModel().rows.map(H=>_(ra,{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:H.getVisibleCells().map((q,ae)=>{if(typeof q.column.columnDef.cell=="function"){let D=q.column.columnDef.cell(q.getContext());return _(D,{...Ja(q.column,"cell")},ae)}return null})},H.id)):_(ra,{children:_(Ga,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&ga("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[_(ma,{className:"ps-h-4 ps-w-full"}),_(ma,{className:"ps-h-4 ps-w-4/5"}),_(ma,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!d||d<2?null:_(qr,{table:W,variant:"numeric"}),_(Fd,{mode:"wait",children:W.getRowModel().rows?.length===0&&!o&&!r&&_(Bd.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:ga("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[_("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),_("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function Er(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function qd(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import{useSortable as Hd}from"@dnd-kit/sortable";import{CSS as Ud}from"@dnd-kit/utilities";import{jsx as Ur}from"react/jsx-runtime";var zr=e=>{let{children:a,className:t,header:o,style:r}=e,{attributes:l,listeners:s,transform:u,transition:d,setNodeRef:n,isDragging:i}=Hd({id:o.id}),m={...r,cursor:"grab",touchAction:"none",transform:Ud.Transform.toString(u),transition:d},g=c(t,i&&"!ps-z-50 ps-border-2 ps-border-violet-500");return Ur(Va,{ref:n,...l,...s,style:m,className:g,children:Ur("div",{className:"ps-w-full",children:a})})};import{AnimatePresence as zd,motion as _r}from"motion/react";import*as Ce from"@radix-ui/react-tooltip";import*as Gr from"react";import{jsx as Vr}from"react/jsx-runtime";var yt=Ce.Provider,vt=Ce.Root,wt=Ce.Trigger,$a=Gr.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Vr(Ce.Portal,{children:Vr(Ce.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})}));$a.displayName=Ce.Content.displayName;import{jsx as sa,jsxs as Wr}from"react/jsx-runtime";function Kr({column:e}){return Wr("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&sa(yt,{delayDuration:120,children:Wr(vt,{children:[sa(wt,{asChild:!0,children:sa(Fa,{size:12,className:"ps-text-primary"})}),sa($a,{side:"bottom",className:"text-xs",children:sa("span",{children:"Primary Key"})})]})}),sa("span",{className:"ps-font-medium ps-truncate",children:e.name}),sa("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{Fragment as co,jsx as G,jsxs as we}from"react/jsx-runtime";function Xr(e){let{column:a,header:t,className:o}=e;return we("div",{className:c("ps-flex ps-items-center ps-justify-between",o),children:[we("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[G("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:t.isPlaceholder?null:G("span",{className:"ps-flex ps-min-w-0",children:G("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:G(Kr,{column:a})})})}),we("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[G("span",{className:"ps-flex ps-items-center ps-ml-1",children:G(zd,{mode:"wait",children:t.column.getIsSorted()==="desc"?G(_r.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:G(Oa,{size:14,className:"ps-text-muted-foreground"})},"desc"):t.column.getIsSorted()==="asc"?G(_r.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:G(qa,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),t.column.getCanPin()&&t.column.id!=="select"&&we(Ct,{children:[G(ht,{asChild:!0,children:G(O,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:G(Se,{size:12})})}),we(Qa,{children:[t.column.getCanSort()&&G(It,{onClick:()=>t.column.toggleSorting(),children:G("span",{className:"ps-flex ps-items-center ps-gap-2",children:t.column.getNextSortingOrder()==="desc"?we(co,{children:[G(Ke,{size:16}),"Sort descending"]}):t.column.getNextSortingOrder()==="asc"?we(co,{children:[G(va,{size:16}),"Sort ascending"]}):we(co,{children:[G(Ze,{size:16}),"Cancel sorting"]})})}),G(It,{onClick:()=>t.column.pin(t.column.getIsPinned()?!1:"left"),children:t.column.getIsPinned()?we("span",{className:"ps-flex ps-items-center ps-gap-2",children:[G(Ea,{size:16}),"Unpin column"]}):we("span",{className:"ps-flex ps-items-center ps-gap-2",children:[G(Ha,{size:16}),"Pin column"]})})]})]})]})]}),t.column.getCanResize()&&G("button",{type:"button",tabIndex:0,onMouseDown:r=>{r.stopPropagation(),t.getResizeHandler()(r)},onTouchStart:r=>{r.stopPropagation(),t.getResizeHandler()(r)},onClick:r=>r.stopPropagation(),onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),r.stopPropagation(),t.getResizeHandler()(r))},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{isObjectType as Ln}from"remeda";import{motion as $r}from"motion/react";import Xd,{useState as jr}from"react";import*as po from"@radix-ui/react-label";import{cva as Vd}from"class-variance-authority";import*as Qr from"react";import{jsx as Wd}from"react/jsx-runtime";var Gd=Vd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),ja=Qr.forwardRef(({className:e,...a},t)=>Wd(po.Root,{ref:t,className:c(Gd(),e),...a}));ja.displayName=po.Root.displayName;import*as Ya from"@radix-ui/react-switch";import*as Jr from"react";import{jsx as Zr}from"react/jsx-runtime";var et=Jr.forwardRef(({className:e,...a},t)=>Zr(Ya.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:Zr(Ya.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")})}));et.displayName=Ya.Root.displayName;import Kd from"dayjs";import{Fragment as _d,jsx as fe,jsxs as aa}from"react/jsx-runtime";var ne=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:l,onSetNow:s,showSetNow:u})=>fe("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-p-2",children:!l&&fe(_d,{children:fe("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-w-full",children:aa("div",{className:"ps-grid ps-grid-cols-2 ps-gap-1 ps-items-start ps-justify-between",children:[aa("div",{className:"ps-flex ps-flex-col ps-gap-1",children:[aa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0",onClick:()=>{e&&e(),t&&t()},children:[fe("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:fe(Ta,{size:12,strokeWidth:2})})," ","Save changes"]}),aa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0",onClick:()=>{a&&a(),t&&t()},children:[fe("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"]})]}),aa("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-items-end",children:[o&&aa("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0 ps-h-6",htmlFor:"set-nullable",children:[fe(et,{id:"set-nullable",checked:r,onCheckedChange:m=>{o&&o(m)}}),fe("span",{children:"Set to NULL"})]}),u&&fe(yt,{children:aa(vt,{children:[fe(wt,{asChild:!0,children:fe("button",{onClick:s,className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer ps-shrink-0 ps-h-6",disabled:r||l,children:"Set to NOW"})}),fe($a,{children:aa("p",{children:["Set to ",Kd().format("LLL")]})})]})})]})]})})})});import{Fragment as Qd,jsx as at,jsxs as Yr}from"react/jsx-runtime";function es(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=jr(a===null?!1:a),[d,n]=jr(a===null),i=a===null?!1:a,m=x=>{u(x)},g=x=>{n(x)},h=Xd.useCallback(()=>{let x=d?null:s;return x!==a?(t(x),!0):!1},[s,a,t,d]),S=()=>{u(i),n(a===null)},{handleSave:p,handleCancel:I}=le({onSave:h,onCancel:S,readonly:r});return Yr(Qd,{children:[Yr("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:[at(ja,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),at($r.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:at(et,{id:"boolean-input",checked:s,onCheckedChange:m,disabled:d||r})}),at($r.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)})]}),at(ne,{onSave:p,onCancel:I,onNullChange:l?g:void 0,isNull:d,readonly:r})]})}import $ from"dayjs";import jd from"dayjs/plugin/localizedFormat";import{useCallback as Yd,useEffect as as,useMemo as la,useState as La}from"react";import{DayPicker as Zd}from"react-day-picker";import{jsx as Jd}from"react/jsx-runtime";function mo({className:e,classNames:a,showOutsideDays:t=!0,hideNavigation:o,...r}){let l=c("relative flex flex-col gap-4 sm:flex-row",r.monthsClassName),s=c("relative flex h-7 items-center justify-center",r.monthCaptionClassName),u=c("ps-flex ps-items-center ps-justify-center ps-gap-2 ps-w-full",o?"ps-w-full":"ps-hidden",r.dropdownsClassName),d=c("ps-pt-3 ps-text-xs",r.footerClassName),n=c("ps-flex",r.weekdaysClassName),i=c("ps-w-9 ps-text-xs ps-font-normal ps-text-muted-foreground",r.weekdayClassName),m=c("ps-truncate ps-text-xs ps-font-medium",r.captionLabelClassName),g=c("ps-mx-auto ps-mt-4",r.monthGridClassName),h=c("ps-mt-0 ps-flex ps-w-max ps-items-start",r.weekClassName),S=c("ps-flex ps-size-9 ps-flex-1 ps-items-center ps-justify-center ps-p-0 ps-text-xs",r.dayClassName),p=c(Ut({variant:"ghost"}),"ps-size-8 ps-rounded-md ps-p-0 ps-font-normal ps-text-xs ps-transition-none aria-selected:ps-opacity-100",r.dayButtonClassName),I="ps-bg-accent ps-[&>button]:ps-bg-primary [&>button]:ps-text-primary-foreground [&>button]:ps-hover:ps-bg-primary [&>button]:ps-hover:ps-text-primary-foreground",x=c(I,"ps-rounded-s-md",r.rangeStartClassName),C=c(I,"ps-rounded-e-md",r.rangeEndClassName),k=c("ps-bg-accent !ps-text-foreground [&>button]:ps-bg-transparent [&>button]:!ps-text-foreground [&>button]:hover:ps-bg-transparent [&>button]:hover:!ps-text-foreground",r.rangeMiddleClassName),U=c("[&>button]:ps-bg-primary [&>button]:ps-text-primary-foreground [&>button]:ps-hover:ps-bg-primary [&>button]:ps-hover:ps-text-primary-foreground","[&[aria-selected]>button]:ps-bg-primary [&[aria-selected]>button]:ps-text-primary-foreground",r.selectedClassName),Q=c("[&>button]:ps-font-bold [&>button]:ps-text-accent-foreground",r.todayClassName),B=c("ps-text-muted-foreground ps-opacity-50 aria-selected:ps-text-muted-foreground aria-selected:ps-opacity-30",r.outsideClassName),N=c("ps-text-muted-foreground ps-opacity-50",r.disabledClassName),W=c("ps-invisible ps-flex-1",r.hiddenClassName);return Jd(Zd,{mode:"single",captionLayout:"label",hideNavigation:!0,showOutsideDays:t,className:c("ps-p-0",e),classNames:{caption_label:m,day:S,day_button:p,dropdowns:u,footer:d,month:r.monthClassName,month_caption:s,month_grid:g,months:l,week:h,weekday:i,weekdays:n,range_end:C,range_middle:k,range_start:x,selected:U,disabled:N,hidden:W,outside:B,today:Q,nav:"ps-hidden",...a},...r})}mo.displayName="Calendar";import{useState as $d}from"react";function xa(e){let{initialValue:a}=e,[t,o]=$d(a??"");return{handleOnChange:l=>{o(l.target.value)},value:t,setValue:o}}import{Fragment as an,jsx as j,jsxs as Ca}from"react/jsx-runtime";$.extend(jd);function ts(e){let{onSubmit:a,value:t,readonly:o,column:r}=e,l=String(t),s=la(()=>{let L=$(l);return L.isValid()?L.toDate():new Date},[l]),u=L=>{switch(L){case"date":return"YYYY-MM-DD";case"time":return"HH:mm:ss.SSSSS";case"timestamp":return"YYYY-MM-DD HH:mm:ss.SSSSSS";case"timestamptz":return"YYYY-MM-DD HH:mm:ss.SSSSSSZ";case"timetz":return"HH:mm:ss.SSSSSSZ";default:return}},[d,n]=La(s),[i,m]=La(s),[g,h]=La(()=>$(s).format("HH")),[S,p]=La(()=>$(s).format("mm")),[I,x]=La(()=>$(s).format("ss")),{handleOnChange:C,value:k,setValue:U}=xa({initialValue:l}),Q=la(()=>r?.datatype?.name||r?.datatype,[r]),B=la(()=>u(Q),[Q]),N=la(()=>["time","timestamp","timestamptz","timetz"].includes(Q),[Q]),W=L=>{C(L);try{let w=L.target.value,F=$(w);if(F.isValid()){let ce=F.toDate();n(ce),m(ce),N&&(h(F.format("HH")),p(F.format("mm")),x(F.format("ss")))}}catch{}},H=L=>{if(!L)return;let w=$(L),F=w;if(N&&d)F=w.hour($(d).hour()).minute($(d).minute()).second($(d).second());else if(N){let ce=$();F=w.hour(ce.hour()).minute(ce.minute()).second(ce.second()),h(ce.format("HH")),p(ce.format("mm")),x(ce.format("ss"))}n(F.toDate()),m(F.toDate()),U(B?F.format(B):F.toISOString())},q=la(()=>{try{let L=$(k);return L.isValid()?k.includes(":")?L.format("LL LTS"):L.format("LL"):k}catch{return k}},[k]);function ae(L){L.preventDefault(),k!==l&&a(k)}let D=Yd(()=>k!==l?(a(k),!0):!1,[k,l,a]),Ue=()=>{},{handleSave:ze,handleCancel:na}=le({onSave:D,onCancel:Ue,readonly:o}),Ve=L=>{L.preventDefault(),L.stopPropagation();let w=$();n(w.toDate()),m(w.toDate()),U(B?w.format(B):w.toISOString()),he(w.year().toString()),N&&(h(w.format("HH")),p(w.format("mm")),x(w.format("ss")))},ia=la(()=>[{value:"0",label:"January"},{value:"1",label:"February"},{value:"2",label:"March"},{value:"3",label:"April"},{value:"4",label:"May"},{value:"5",label:"June"},{value:"6",label:"July"},{value:"7",label:"August"},{value:"8",label:"September"},{value:"9",label:"October"},{value:"10",label:"November"},{value:"11",label:"December"}],[]),ta=la(()=>i.getMonth().toString(),[i]),[ke,he]=La(()=>i.getFullYear().toString()),te=L=>{let w=d?$(d):$();d&&(L.hour!==void 0||L.minute!==void 0||L.second!==void 0)&&L.year===void 0&&L.month===void 0&&L.day===void 0?w=$(d):!d&&(L.hour!==void 0||L.minute!==void 0||L.second!==void 0)&&(w=$(i));let F=w.set("year",L.year??w.year()).set("month",L.month??w.month()).set("date",L.day??w.date()).set("hour",L.hour??(N?w.hour():0)).set("minute",L.minute??(N?w.minute():0)).set("second",L.second??(N?w.second():0));n(F.toDate()),(L.year!==void 0||L.month!==void 0)&&m(F.toDate()),U(B?F.format(B):F.toISOString()),L.year!==void 0&&he(String(L.year)),N&&(L.hour!==void 0&&h(String(L.hour).padStart(2,"0")),L.minute!==void 0&&p(String(L.minute).padStart(2,"0")),L.second!==void 0&&x(String(L.second).padStart(2,"0")))},E=L=>{let w=parseInt(L);te({month:w})},re=L=>{let w=L.target.value;if(he(w),/^\d{1,4}$/.test(w)){let F=parseInt(w);w.length===4&&te({year:F})}},Ie=(L,w)=>{let F=parseInt(w);if(isNaN(F))return;let ce=L==="hour"?F:parseInt(g),bs=L==="minute"?F:parseInt(S),ys=L==="second"?F:parseInt(I);L==="hour"&&h(w.padStart(2,"0")),L==="minute"&&p(w.padStart(2,"0")),L==="second"&&x(w.padStart(2,"0"));let vs=L==="hour"&&w.length>=1&&F>=0&&F<=23,ws=L==="minute"&&w.length>=1&&F>=0&&F<=59,Ps=L==="second"&&w.length>=1&&F>=0&&F<=59;(L==="hour"&&vs||L==="minute"&&ws||L==="second"&&Ps)&&te({hour:ce,minute:bs,second:ys})};return as(()=>{if(d){let L=$(d);he(L.year().toString()),N&&(h(L.format("HH")),p(L.format("mm")),x(L.format("ss")))}},[d,N]),as(()=>{i&&(d||he(i.getFullYear().toString()))},[i,d]),Ca(an,{children:[j("form",{onSubmit:ae,children:Ca("div",{className:"ps-flex ps-items-center ps-pr-[var(--studio-cell-spacing)]",children:[j(oe,{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:W,type:"text",value:k}),j("input",{type:"submit",className:"ps-sr-only"})]})}),Ca("div",{className:"ps-flex ps-flex-col ps-gap-0 ps-p-2 ps-border-t ps-border-table-border",children:[Ca("div",{className:"ps-flex ps-items-center ps-justify-between ps-mb-1 ps-gap-2",children:[Ca(je,{value:ta,onValueChange:E,children:[j(Oe,{className:"ps-text-xs ps-border-transparent data-[state=open]:ps-border-primary ps-shadow-none ps-bg-neutral-200/40",children:j(Ye,{placeholder:"Month"})}),j(qe,{children:ia.map(L=>j(V,{value:L.value,children:L.label},L.value))})]}),j(oe,{className:"ps-text-xs ps-w-20 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"text",value:ke,onChange:re,placeholder:"Year"})]}),j(en,{selected:d,month:i,onSelect:H,onMonthChange:m,disabled:o}),N&&Ca("div",{className:"ps-flex ps-items-center ps-justify-start ps-gap-1 ps-mt-1",children:[j(oe,{className:"ps-text-xs ps-w-16 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"number",value:g,onChange:L=>Ie("hour",L.target.value),placeholder:"HH",min:0,max:23,maxLength:2,disabled:o}),j("span",{className:"ps-text-xs ps-text-muted-foreground",children:":"}),j(oe,{className:"ps-text-xs ps-w-16 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"number",value:S,onChange:L=>Ie("minute",L.target.value),placeholder:"mm",min:0,max:59,maxLength:2,disabled:o}),j("span",{className:"ps-text-xs ps-text-muted-foreground",children:":"}),j(oe,{className:"ps-text-xs ps-w-16 ps-text-right ps-border-transparent ps-shadow-none ps-bg-neutral-200/40",type:"number",value:I,onChange:L=>Ie("second",L.target.value),placeholder:"ss",min:0,max:59,maxLength:2,disabled:o})]}),j("code",{className:"ps-sr-only",children:q})]}),j(ne,{onSave:ze,onCancel:na,readonly:o,onSetNow:Ve,showSetNow:!0})]})}function en({selected:e,month:a,onSelect:t,onMonthChange:o,disabled:r}){return j(mo,{mode:"single",selected:e,onSelect:t,disabled:r,month:a,onMonthChange:o,className:"ps-w-full",captionLayout:"dropdown"})}import{useCallback as tn,useState as os}from"react";import{Fragment as on,jsx as Pt,jsxs as rn}from"react/jsx-runtime";function rs(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:l}=e,s=t.nullable===!0,u=String(o),[d,n]=os(u),[i,m]=os(o===null),g=C=>{n(C)},h=C=>{m(C)},S=tn(()=>i?o!==null?(a(null),!0):!1:d!==u?(a(d),!0):!1,[d,u,a,i,o]),p=()=>{n(u),m(o===null)},{handleSave:I,handleCancel:x}=le({onSave:S,onCancel:p,readonly:l});return rn(on,{children:[Pt("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}),Pt("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(C=>Pt("button",{onClick:()=>g(C),className:Ht({variant:C===d?"default":"outline"}),disabled:i||l,children:C},C))}),Pt(ne,{onSave:I,onCancel:x,onNullChange:s?h:void 0,isNull:i,readonly:l})]})}import sn,{useState as ss}from"react";import{Fragment as ln,jsx as go,jsxs as un}from"react/jsx-runtime";function ls(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]=ss(s),[n,i]=ss(a===null),m=x=>{d(x.target.value)},g=x=>{i(x)},h=sn.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let x=u===""?null:JSON.parse(u);return x!==a?(t(x),!0):!1},[u,a,t,n]),S=()=>{d(s),i(a===null)},{handleSave:p,handleCancel:I}=le({onSave:h,onCancel:S,readonly:r});return un(ln,{children:[go("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:go("textarea",{rows:5,value:u,onChange:m,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"})}),go(ne,{onSave:p,onCancel:I,onNullChange:l?g:void 0,isNull:n,readonly:r})]})}import dn,{useState as us}from"react";import{Fragment as nn,jsx as xo,jsxs as ds}from"react/jsx-runtime";function ns(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=us(a===null?"":String(a)),[d,n]=us(a===null),i=a===null?"":String(a),m=x=>{u(x.target.value)},g=x=>{n(x)},h=dn.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let x=s===""?null:Number(s);return s!==a?(t(x),!0):!1},[s,a,t,d]),S=()=>{u(i),n(a===null)},{handleSave:p,handleCancel:I}=le({onSave:h,onCancel:S,readonly:r});return ds(nn,{children:[ds("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[xo(ja,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),xo("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:s,onChange:m,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"})]}),xo(ne,{onSave:p,onCancel:I,onNullChange:l?g:void 0,isNull:d,readonly:r})]})}import fn from"react";import{Fragment as cn,jsx as Lo,jsxs as is}from"react/jsx-runtime";function fs(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=xa({initialValue:r});function u(g){g.preventDefault(),s!==r&&a(s)}let d=fn.useCallback(()=>s!==r?(a(s),!0):!1,[s,r,a]),n=()=>{},{handleSave:i,handleCancel:m}=le({onSave:d,onCancel:n,readonly:o});return is(cn,{children:[is("form",{onSubmit:u,children:[Lo(oe,{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}),Lo("input",{type:"submit",className:"ps-sr-only"})]}),Lo(ne,{onSave:i,onCancel:m,readonly:o})]})}import cs from"dayjs";import pn from"dayjs/plugin/localizedFormat";import{useCallback as mn,useMemo as gn}from"react";import{Fragment as xn,jsx as tt,jsxs as Co}from"react/jsx-runtime";cs.extend(pn);function ps(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=xa({initialValue:r}),u=gn(()=>{try{if(!s.includes(":"))return s;let h=/[+-]\d{2}(:\d{2})?$/.test(s),S=cs(`2000-01-01 ${s}`);if(S.isValid())return S.format("h:mm A")+(h?` (${S.format("Z")})`:"");let p=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,I=s.match(p);if(I){let x=parseInt(I[1]||"12",10),C=I[2]||"00",k=I[4]||"",U=x>=12?"PM":"AM";return`${x%12===0?12:x%12}:${C} ${U}${k?` (${k})`:""}`}return s}catch{return s}},[s]);function d(h){h.preventDefault(),s!==r&&a(s)}let n=mn(()=>s!==r?(a(s),!0):!1,[s,r,a]),i=()=>{},{handleSave:m,handleCancel:g}=le({onSave:n,onCancel:i,readonly:o});return Co(xn,{children:[Co("form",{onSubmit:d,children:[tt(oe,{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}),tt("input",{type:"submit",className:"ps-sr-only"})]}),Co("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[tt("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),tt("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),tt(ne,{onSave:m,onCancel:g,readonly:o})]})}import{jsx as ua}from"react/jsx-runtime";function kt(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"?ua(ts,{onSubmit:o,value:n,column:t,readonly:u}):r==="time"?ua(ps,{onSubmit:o,value:n,column:t,readonly:u}):r==="json"||s?ua(ls,{onSubmit:o,value:n,column:t,readonly:u}):r==="boolean"?ua(es,{onSubmit:o,value:n,column:t,readonly:u}):r==="enum"?ua(rs,{onSubmit:o,value:n,options:l,column:t,readonly:u}):r==="numeric"?ua(ns,{onSubmit:o,value:n,column:t,readonly:u}):ua(fs,{onSubmit:o,value:Ln(n)?JSON.stringify(n):n,readonly:u})}import xs from"short-uuid";import{useCallback as ms,useEffect as Mt,useMemo as gs}from"react";import{v4 as hn}from"uuid";import{useQuery as Cn}from"@tanstack/react-query";var Rt=-1;function ha(){let{adapter:e}=Z();return Cn({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 ot(){let{activeTable:e,setActiveTable:a,activeSchema:t,setActiveSchema:o,adapter:r,emitTelemetryEvent:l}=Z(),{data:s,dataUpdatedAt:u}=ha(),d=u===Rt,[n,i]=Wa({table:{defaultValue:null,parse:C=>C,serialize:C=>C??""},schema:{defaultValue:null,parse:C=>C||r.defaultSchema||"public",serialize:C=>C||r.defaultSchema||"public"}}),[,m]=Je("pageIndex",{parse:C=>C,serialize:C=>C??""}),[,g]=Je("sort",{parse:C=>C,serialize:C=>C??""}),h=gs(()=>Object.values(s.schemas[t]?.tables||{}),[s.schemas,t]),S=gs(()=>Object.values(s.schemas).reduce((C,k)=>C+Object.keys(k.tables).length,0),[s.schemas]),[p]=h;Mt(()=>{if(!d){if(n?.table&&h.length>0){let C=h.find(k=>k.name===n.table&&k.schema===t);if(C){a(C);return}}h.length>0&&!e&&(a(p||null),p&&i({table:p.name,schema:t}))}},[d,n,h,p,e,t,a,i]);let I=ms(C=>{e!==C&&(a(C),i({table:C.name,schema:C.schema}),m(null),g(null))},[e,a,i,m,g]),x=ms(C=>{C!==t&&(a(null),o(C),i({table:null,schema:C}),m(null),g(null))},[t,o,a,i,m,g]);return Mt(()=>{n?.schema!==t&&!d&&i(C=>({...C,schema:t}))},[t,n?.schema,i,d]),Mt(()=>{n?.schema&&n.schema!==t&&o(n.schema)},[n?.schema,t,o]),Mt(()=>{u!==-1&&l({event:"studio_launched",payload:{event_id:hn(),timestamp:new Date().toISOString(),table_count:S}})},[h,l,u,S]),{tables:h,activeTable:e,activeSchema:t,isLoading:d,handleTableChange:I,handleSchemaChange:x}}import{jsx as Ls}from"react/jsx-runtime";function Cs(e){let{cell:a,column:t}=e,{fkSchema:o,fkTable:r,fkColumn:l}=t,{handleSchemaChange:s,handleTableChange:u}=ot(),{setAppliedFilter:d}=it(),{data:n}=ha();if(o!==null&&r!==null&&l!==null){let i=n.schemas[o]?.tables[r];if(i!==void 0)return Ls(O,{size:"xs",variant:"outline",onClick:m=>{m.stopPropagation(),s(o),u(i),d({kind:"FilterGroup",id:xs.generate(),after:"and",filters:[{kind:"ColumnFilter",id:xs.generate(),column:l,operator:"=",value:a.getValue(),after:"and"}]})},children:Ls(ya,{size:12})})}return null}import{useReactTable as In}from"@tanstack/react-table";import{omit as Sn}from"remeda";import{Fragment as bn,jsx as rt}from"react/jsx-runtime";function hs(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!ft();function l(d,n){o(i=>{let m=[...i];return m[d]={...m[d],...n},m})}let s=Object.values(a.options.columns).map(d=>d.id==="__ps_select"?{...d,cell(){return()=>rt(mt,{})}}:{...d,cell({cell:n}){return i=>rt(Lt,{cellComponent:gt({cell:n,column:d.meta}),linkComponent:null,inputComponent:kt({cell:n,column:d.meta,onSubmit(m){l(i.rowIndex,{[d.id]:m})},readonly:r})})}}),u=In({...a.options,columns:s,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:Sn(a.options.state,["pagination","sorting"])});return rt(bn,{children:u.getRowModel().rows.map((d,n)=>rt(ra,{children:d.getVisibleCells().map((i,m)=>{if(typeof i.column.columnDef.cell=="function"){let g=i.column.columnDef.cell(i.getContext());return rt(g,{...Ja(i.column,"cell"),rowIndex:n},m)}return null})},n))})}import{Fragment as ho,jsx as A,jsxs as da}from"react/jsx-runtime";function Is(e){let a=!!yn(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:l,toggleNavigation:s,isNavigationOpen:u}=Z(),{sortingState:d,setSortingState:n}=tr(),{paginationState:i,setPaginationState:m}=ct(),[g,h]=Pn([]),{appliedFilter:S,setAppliedFilter:p,editingFilter:I,setEditingFilter:x,totalEditingFilters:C}=it(),{data:k,isFetching:U,refetch:Q}=Jo({...i,sortOrder:d,filter:S}),{deleteSelection:B,isSelecting:N,rowSelectionState:W,setRowSelectionState:H}=ar(k),q=!Object.values(t?.columns??{}).some(E=>E.isInPrimaryKey),ae=ft(),D=Zo(),Ue=$o();if(wn(()=>h([]),[t]),!t)return null;function ze(){D.mutate(g,{onError:o,onSuccess(){kn.success("Rows inserted successfully"),h([])}})}function na(){h(E=>[...E,{}])}function Ve(){h([])}function ia(E,re,Ie){Ue.mutate({details:{changes:{[re.name]:E},row:Ie,table:t},options:{}})}function ta(E){E===!0?x(S):p(I)}let ke=Object.values(t?.columns??{}).map(E=>({id:E.name,accessorKey:E.name,meta:E,header({table:re,header:Ie}){return L=>A(zr,{table:re,header:Ie,...L,children:A(Xr,{header:Ie,column:E})})},cell({cell:re}){return Ie=>A(Lt,{containerProps:Ie,cellComponent:gt({cell:re,column:E}),linkComponent:Cs({cell:re,column:E}),inputComponent:kt({cell:re,column:E,readonly:q,onSubmit(L){return ia(L,E,re.row.original)}})})}})),he=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,size:35,minSize:35,header({table:E}){return re=>A(Va,{...re,children:A(mr,{table:E,readonly:q})})},cell({row:E}){return re=>A(pt,{...re,children:A(gr,{row:E,readonly:q})})}}],te=[...ke,...he].sort(Mn);return da(ho,{children:[A("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:A("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:da("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[da("div",{className:"ps-flex ps-items-center ps-gap-2",children:[A(O,{variant:"outline",size:"sm",onClick:s,children:u?A(Xe,{}):A(Qe,{})}),da(qo,{onOpenChange:ta,children:[A(Eo,{asChild:!0,children:A(O,{variant:"outline",size:"sm",className:c(C>0&&"ps-border-primary"),children:da("span",{className:"ps-flex ps-items-center ps-gap-2",children:[A(Da,{}),C>0&&A(lt,{children:A(vn,{transition:{layout:{duration:.12}},children:C})})]})})}),A(zt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:A(Rr,{filter:I,setFilter:x,setAppliedFilter:E=>{x(E),p(E)},table:t})})]}),A(O,{variant:"outline",size:"sm",onClick:na,disabled:ae>0,children:"Insert row"}),g.length>0&&da(ho,{children:[A(O,{variant:"secondary",size:"sm",onClick:ze,children:"Save"}),A(O,{variant:"ghost",size:"sm",onClick:Ve,children:"Cancel"})]}),N&&A(ho,{children:A(O,{variant:"secondary",size:"sm",onClick:B,children:"Delete"})})]}),da("div",{className:"ps-flex ps-items-center ps-gap-2",children:[A(O,{variant:"outline",size:"icon",onClick:()=>void Q(),disabled:U,children:A(Ua,{className:c("ps-h-4 ps-w-4",U&&"ps-animate-spin")})}),A(O,{variant:"outline",size:"icon",onClick:l,children:r?A(Na,{}):A(Ba,{})})]})]})})}),A(Hr,{columnDefs:te,getBeforeRows:E=>A(hs,{table:E,stagedRows:g,setStagedRows:h}),isLoading:U,isProcessing:a,onPaginationChange:m,onRowSelectionChange:H,onSortingChange:n,pageCount:Rn(k?.filteredRowCount??1/0,i.pageSize),paginationState:i,rows:k?.rows??[],rowSelectionState:W,sortingState:d})]})}function Rn(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 Mn(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 Tn}from"@radix-ui/react-slot";import{jsx as X,jsxs as Tt}from"react/jsx-runtime";function Pe({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=ot(),l=c("ps-flex ps-flex-col ps-w-48 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return Tt("div",{className:l,children:[X(Pe.SchemaSelector,{}),X(Pe.Block,{label:"Tables",children:a.length>0?a.map(s=>X(Pe.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:X("a",{href:`#table=${s.name}&schema=${s.schema}`,children:s.name})},`${s.schema}-${s.name}`)):o?Array(4).fill(null).map((s,u)=>X(Pe.Item,{wrapChildrenInSpan:!1,children:X(ma,{className:"ps-h-3 ps-w-full"})},u)):X(Pe.Item,{children:"No tables found"})})]})}var Dn=({className:e,label:a,children:t,...o})=>Tt("div",{className:e,...o,children:[Tt("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:[X(za,{size:16,className:"ps-text-muted-foreground/60"}),X("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),X("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),An=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:l=!0,...s})=>X(a?Tn:"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?X("span",{className:"ps-truncate",children:r}):r}),Fn=()=>{let{data:e,isLoading:a}=ha(),{activeSchema:t,handleSchemaChange:o}=ot(),r=Object.keys(e.schemas||{});return X("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:Tt(je,{value:t,onValueChange:o,children:[X(Oe,{className:"ps-text-xs",label:"Schema",children:X(Ye,{placeholder:"Select schema"})}),X(qe,{children:a?X(V,{value:"loading",children:"Loading schemas..."}):r.length>0?r.map(l=>X(V,{value:l,className:"ps-text-xs",children:l},l)):X(V,{value:"no-schemas",children:"No schemas found"})})]})})};Pe.Block=Dn;Pe.Item=An;Pe.SchemaSelector=Fn;import{jsx as He,jsxs as qn}from"react/jsx-runtime";function Nn(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?He(Xo,{adapter:a,onError:t,onTelemetryEvent:o,children:He(On,{})}):(console.error("No adapter provided to Studio component"),He("div",{children:"Error: No adapter provided"}))}function On(){let{isFullscreen:e,isNavigationOpen:a}=Z(),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 He("div",{"data-fullscreen":e,className:t,children:qn("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:[He(Bn,{mode:"wait",children:a&&He(Ss.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:He(Pe,{})})}),He(Ss.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:He(Is,{})})]})})}export{Nn as Studio};
21
21
  /*! Bundled license information:
22
22
 
23
23
  lucide-react/dist/esm/shared/src/utils.js:
@@ -296,4 +296,4 @@ lucide-react/dist/esm/lucide-react.js:
296
296
  * @license MIT
297
297
  *)
298
298
  */
299
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvbGliL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jbGFzcy1ncm91cC11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbHJ1LWNhY2hlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9wYXJzZS1jbGFzcy1uYW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jb25maWctdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNsYXNzbGlzdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctam9pbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY3JlYXRlLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9mcm9tLXRoZW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi92YWxpZGF0b3JzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9kZWZhdWx0LWNvbmZpZy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY29uZmlncy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZXh0ZW5kLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1tZXJnZS50cyIsICIuLi8uLi91aS9zdHVkaW8vQWN0aXZlVGFibGVWaWV3LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9zaGFyZWQvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvZGVmYXVsdEF0dHJpYnV0ZXMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9JY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvY3JlYXRlTHVjaWRlSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LXVwLXdpZGUtbmFycm93LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hlY2sudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9uLWRvd24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9uLWxlZnQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9uLXJpZ2h0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi11cC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb25zLWxlZnQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS1oZWxwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2lyY2xlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY29weS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Nvcm5lci1kb3duLWxlZnQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9maWx0ZXIudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9ncmlwLXZlcnRpY2FsLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMva2V5LXJvdW5kLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWF4aW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9taW5pbWl6ZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1vcGVuLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGluLW9mZi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3Bpbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3JlZnJlc2gtY3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy90YWJsZS0yLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMveC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9wb3BvdmVyLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3RhYmxlLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydC50cyIsICIuLi8uLi91aS9zdHVkaW8vY29udGV4dC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3F1ZXJ5LWRldnRvb2xzQDUuNzIuMi9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzL2J1aWxkL2luZGV4LmpzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9pbmRleC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3Nvbm5lci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL051cXNIYXNoQWRhcHRlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHQudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXVwZGF0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtZmlsdGVyaW5nLnRzIiwgIi4uLy4uL3VpL2hvb2tzL251cXMudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWlzLWluc2VydGluZy50cyIsICIuLi8uLi91aS9ob29rcy91c2UtcGFnaW5hdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc2VsZWN0aW9uLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zb3J0aW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvZ2V0LWNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0Jvb2xlYW5DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9EYXRlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW1wdHlDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9FbnVtQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvSlNPTkNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL051bGxDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdW1lcmljQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvUmF3Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvVGltZUNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdFJvd0NlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Xcml0ZWFibGVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vRmlsdGVyVHJlZS50c3giLCAiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlscy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZExvYWRpbmdCYXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkUGFnaW5hdGlvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvZmVhdHVyZXMvY29sdW1uLXBpbm5pbmcudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90b29sdGlwLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9nZXQtaW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9Cb29sZWFuSW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvbGFiZWwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc3dpdGNoLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvaW5wdXQtYWN0aW9ucy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0RhdGVJbnB1dC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9jYWxlbmRhci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L3VzZS1pbnB1dC50cyIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvRW51bUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvSnNvbklucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvTnVtZXJpY0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvUmF3SW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9UaW1lSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9saW5rL2dldC1saW5rLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9TdGFnZWRSb3dzLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vTmF2aWdhdGlvbi50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vZGF0YVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBBY3RpdmVUYWJsZVZpZXcgfSBmcm9tIFwiLi9BY3RpdmVUYWJsZVZpZXdcIjtcbmltcG9ydCB7IFN0dWRpb0NvbnRleHRQcm92aWRlciwgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gXCIuL05hdmlnYXRpb25cIjtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgPSB7XG4gIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiO1xuICBwYXlsb2FkOiB7XG4gICAgZXZlbnRfaWQ6IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IHN0cmluZztcbiAgICB1c2VyX2lkPzogc3RyaW5nO1xuICAgIHdvcmtzcGFjZV9pZD86IHN0cmluZztcbiAgICBvcmdhbml6YXRpb25faWQ/OiBzdHJpbmc7XG4gICAgZW1iZWRkaW5nX3R5cGU/OiBzdHJpbmc7XG4gICAgdmVuZG9yX2lkPzogc3RyaW5nO1xuICAgIHRhYmxlX2NvdW50OiBudW1iZXI7XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb1Byb3BzIHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogTWFpbiBTdHVkaW8gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgZGF0YWJhc2UgdmlzdWFsaXphdGlvbiBhbmQgbWFuYWdlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvKHByb3BzOiBTdHVkaW9Qcm9wcykge1xuICBjb25zdCB7IGFkYXB0ZXIsIG9uRXJyb3IsIG9uVGVsZW1ldHJ5RXZlbnQgfSA9IHByb3BzO1xuXG4gIGlmICghYWRhcHRlcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJObyBhZGFwdGVyIHByb3ZpZGVkIHRvIFN0dWRpbyBjb21wb25lbnRcIik7XG4gICAgcmV0dXJuIDxkaXY+RXJyb3I6IE5vIGFkYXB0ZXIgcHJvdmlkZWQ8L2Rpdj47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdHVkaW9Db250ZXh0UHJvdmlkZXIgYWRhcHRlcj17YWRhcHRlcn0gb25FcnJvcj17b25FcnJvcn0gb25UZWxlbWV0cnlFdmVudD17b25UZWxlbWV0cnlFdmVudH0+XG4gICAgICA8U3R1ZGlvQ29udGVudCAvPlxuICAgIDwvU3R1ZGlvQ29udGV4dFByb3ZpZGVyPlxuICApO1xufVxuXG5mdW5jdGlvbiBTdHVkaW9Db250ZW50KCkge1xuICBjb25zdCB7IGlzRnVsbHNjcmVlbiwgaXNOYXZpZ2F0aW9uT3BlbiB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgY29uc3QgY29udGFpbmVyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGwgcHMtbWluLWgtMCBwcy1tYXgtaC1mdWxsXCIsXG4gICAgaXNGdWxsc2NyZWVuICYmIFwicHMtZml4ZWQgcHMtaW5zZXQtMCBwcy16LVs5OTk5XSBwcy1iZy1iYWNrZ3JvdW5kIHBzLXAtMlwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBkYXRhLWZ1bGxzY3JlZW49e2lzRnVsbHNjcmVlbn0gY2xhc3NOYW1lPXtjb250YWluZXJDbGFzc2VzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1nYXAtMCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC01MCBwcy1yZWxhdGl2ZSBwcy1tYXgtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtcm91bmRlZC1sZ1wiPlxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gJiYgKFxuICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHdpZHRoOiBcImF1dG9cIiwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPE5hdmlnYXRpb24gLz5cbiAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cblxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtMTAwIHBzLWZsZXgtY29sIHBzLXAtcHggcHMtcm91bmRlZC1sZyBwcy1zZWxmLXN0YXJ0IHBzLWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLW1heC1oLWZ1bGwgcHMtb3ZlcmZsb3ctY2xpcFwiXG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEFjdGl2ZVRhYmxlVmlldyAvPlxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICIvLyBzaGFkY24gdXRpbHNcbmltcG9ydCB7IHR5cGUgQ2xhc3NWYWx1ZSwgY2xzeCB9IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBleHRlbmRUYWlsd2luZE1lcmdlIH0gZnJvbSBcInRhaWx3aW5kLW1lcmdlXCI7XG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gZXh0ZW5kVGFpbHdpbmRNZXJnZSh7XG4gIHByZWZpeDogXCJwcy1cIixcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gY24oLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pIHtcbiAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKTtcbn1cbiIsICJpbXBvcnQge1xuICAgIENsYXNzR3JvdXAsXG4gICAgQ2xhc3NWYWxpZGF0b3IsXG4gICAgQ29uZmlnLFxuICAgIEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgIEdlbmVyaWNDb25maWcsXG4gICAgR2VuZXJpY1RoZW1lR3JvdXBJZHMsXG4gICAgVGhlbWVHZXR0ZXIsXG4gICAgVGhlbWVPYmplY3QsXG59IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NQYXJ0T2JqZWN0IHtcbiAgICBuZXh0UGFydDogTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PlxuICAgIHZhbGlkYXRvcnM6IENsYXNzVmFsaWRhdG9yT2JqZWN0W11cbiAgICBjbGFzc0dyb3VwSWQ/OiBHZW5lcmljQ2xhc3NHcm91cElkc1xufVxuXG5pbnRlcmZhY2UgQ2xhc3NWYWxpZGF0b3JPYmplY3Qge1xuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbiAgICB2YWxpZGF0b3I6IENsYXNzVmFsaWRhdG9yXG59XG5cbmNvbnN0IENMQVNTX1BBUlRfU0VQQVJBVE9SID0gJy0nXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc0dyb3VwVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgY2xhc3NNYXAgPSBjcmVhdGVDbGFzc01hcChjb25maWcpXG4gICAgY29uc3QgeyBjb25mbGljdGluZ0NsYXNzR3JvdXBzLCBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMgfSA9IGNvbmZpZ1xuXG4gICAgY29uc3QgZ2V0Q2xhc3NHcm91cElkID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsYXNzUGFydHMgPSBjbGFzc05hbWUuc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICAgICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgICAgICBpZiAoY2xhc3NQYXJ0c1swXSA9PT0gJycgJiYgY2xhc3NQYXJ0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIGNsYXNzUGFydHMuc2hpZnQoKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMsIGNsYXNzTWFwKSB8fCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkoY2xhc3NOYW1lKVxuICAgIH1cblxuICAgIGNvbnN0IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyA9IChcbiAgICAgICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyOiBib29sZWFuLFxuICAgICkgPT4ge1xuICAgICAgICBjb25zdCBjb25mbGljdHMgPSBjb25mbGljdGluZ0NsYXNzR3JvdXBzW2NsYXNzR3JvdXBJZF0gfHwgW11cblxuICAgICAgICBpZiAoaGFzUG9zdGZpeE1vZGlmaWVyICYmIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmNvbmZsaWN0cywgLi4uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0hXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZsaWN0c1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldENsYXNzR3JvdXBJZCxcbiAgICAgICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzLFxuICAgIH1cbn1cblxuY29uc3QgZ2V0R3JvdXBSZWN1cnNpdmUgPSAoXG4gICAgY2xhc3NQYXJ0czogc3RyaW5nW10sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4pOiBHZW5lcmljQ2xhc3NHcm91cElkcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGNsYXNzUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENsYXNzUGFydCA9IGNsYXNzUGFydHNbMF0hXG4gICAgY29uc3QgbmV4dENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQoY3VycmVudENsYXNzUGFydClcbiAgICBjb25zdCBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQgPSBuZXh0Q2xhc3NQYXJ0T2JqZWN0XG4gICAgICAgID8gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cy5zbGljZSgxKSwgbmV4dENsYXNzUGFydE9iamVjdClcbiAgICAgICAgOiB1bmRlZmluZWRcblxuICAgIGlmIChjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydFxuICAgIH1cblxuICAgIGlmIChjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzUmVzdCA9IGNsYXNzUGFydHMuam9pbihDTEFTU19QQVJUX1NFUEFSQVRPUilcblxuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5maW5kKCh7IHZhbGlkYXRvciB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZFxufVxuXG5jb25zdCBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4ID0gL15cXFsoLispXFxdJC9cblxuY29uc3QgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5ID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGFyYml0cmFyeVByb3BlcnR5UmVnZXgudGVzdChjbGFzc05hbWUpKSB7XG4gICAgICAgIGNvbnN0IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lID0gYXJiaXRyYXJ5UHJvcGVydHlSZWdleC5leGVjKGNsYXNzTmFtZSkhWzFdXG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWU/LnN1YnN0cmluZyhcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZS5pbmRleE9mKCc6JyksXG4gICAgICAgIClcblxuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICAgIC8vIEkgdXNlIHR3byBkb3RzIGhlcmUgYmVjYXVzZSBvbmUgZG90IGlzIHVzZWQgYXMgcHJlZml4IGZvciBjbGFzcyBncm91cHMgaW4gcGx1Z2luc1xuICAgICAgICAgICAgcmV0dXJuICdhcmJpdHJhcnkuLicgKyBwcm9wZXJ0eVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEV4cG9ydGVkIGZvciB0ZXN0aW5nIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzTWFwID0gKGNvbmZpZzogQ29uZmlnPEdlbmVyaWNDbGFzc0dyb3VwSWRzLCBHZW5lcmljVGhlbWVHcm91cElkcz4pID0+IHtcbiAgICBjb25zdCB7IHRoZW1lLCBwcmVmaXggfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGNsYXNzTWFwOiBDbGFzc1BhcnRPYmplY3QgPSB7XG4gICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PigpLFxuICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY29uZmlnLmNsYXNzR3JvdXBzKSxcbiAgICAgICAgcHJlZml4LFxuICAgIClcblxuICAgIHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMuZm9yRWFjaCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBjbGFzc01hcCwgY2xhc3NHcm91cElkLCB0aGVtZSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIGNsYXNzTWFwXG59XG5cbmNvbnN0IHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkgPSAoXG4gICAgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz4sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4gICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICB0aGVtZTogVGhlbWVPYmplY3Q8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuKSA9PiB7XG4gICAgY2xhc3NHcm91cC5mb3JFYWNoKChjbGFzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc1BhcnRPYmplY3RUb0VkaXQgPVxuICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbiA9PT0gJycgPyBjbGFzc1BhcnRPYmplY3QgOiBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwgY2xhc3NEZWZpbml0aW9uKVxuICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0LmNsYXNzR3JvdXBJZCA9IGNsYXNzR3JvdXBJZFxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaWYgKGlzVGhlbWVHZXR0ZXIoY2xhc3NEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbih0aGVtZSksXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogY2xhc3NEZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5mb3JFYWNoKChba2V5LCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwLFxuICAgICAgICAgICAgICAgIGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBrZXkpLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBnZXRQYXJ0ID0gKGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdFxuXG4gICAgcGF0aC5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUikuZm9yRWFjaCgocGF0aFBhcnQpID0+IHtcbiAgICAgICAgaWYgKCFjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmhhcyhwYXRoUGFydCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuc2V0KHBhdGhQYXJ0LCB7XG4gICAgICAgICAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpIVxuICAgIH0pXG5cbiAgICByZXR1cm4gY3VycmVudENsYXNzUGFydE9iamVjdFxufVxuXG5jb25zdCBpc1RoZW1lR2V0dGVyID0gKGZ1bmM6IENsYXNzVmFsaWRhdG9yIHwgVGhlbWVHZXR0ZXIpOiBmdW5jIGlzIFRoZW1lR2V0dGVyID0+XG4gICAgKGZ1bmMgYXMgVGhlbWVHZXR0ZXIpLmlzVGhlbWVHZXR0ZXJcblxuY29uc3QgZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IChcbiAgICBjbGFzc0dyb3VwRW50cmllczogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+LFxuICAgIHByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+ID0+IHtcbiAgICBpZiAoIXByZWZpeCkge1xuICAgICAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXNcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXMubWFwKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXAgPSBjbGFzc0dyb3VwLm1hcCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgY2xhc3NEZWZpbml0aW9uXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikubWFwKChba2V5LCB2YWx1ZV0pID0+IFtwcmVmaXggKyBrZXksIHZhbHVlXSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2xhc3NEZWZpbml0aW9uXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIFtjbGFzc0dyb3VwSWQsIHByZWZpeGVkQ2xhc3NHcm91cF1cbiAgICB9KVxufVxuIiwgIi8vIEV4cG9ydCBpcyBuZWVkZWQgYmVjYXVzZSBUeXBlU2NyaXB0IGNvbXBsYWlucyBhYm91dCBhbiBlcnJvciBvdGhlcndpc2U6XG4vLyBFcnJvcjogXHUyMDI2L3RhaWx3aW5kLW1lcmdlL3NyYy9jb25maWctdXRpbHMudHMoOCwxNyk6IHNlbWFudGljIGVycm9yIFRTNDA1ODogUmV0dXJuIHR5cGUgb2YgZXhwb3J0ZWQgZnVuY3Rpb24gaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ0xydUNhY2hlJyBmcm9tIGV4dGVybmFsIG1vZHVsZSBcIlx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvbHJ1LWNhY2hlXCIgYnV0IGNhbm5vdCBiZSBuYW1lZC5cbmV4cG9ydCBpbnRlcmZhY2UgTHJ1Q2FjaGU8S2V5LCBWYWx1ZT4ge1xuICAgIGdldChrZXk6IEtleSk6IFZhbHVlIHwgdW5kZWZpbmVkXG4gICAgc2V0KGtleTogS2V5LCB2YWx1ZTogVmFsdWUpOiB2b2lkXG59XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmV4cG9ydCBjb25zdCBjcmVhdGVMcnVDYWNoZSA9IDxLZXksIFZhbHVlPihtYXhDYWNoZVNpemU6IG51bWJlcik6IExydUNhY2hlPEtleSwgVmFsdWU+ID0+IHtcbiAgICBpZiAobWF4Q2FjaGVTaXplIDwgMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzZXQ6ICgpID0+IHt9LFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGNhY2hlU2l6ZSA9IDBcbiAgICBsZXQgY2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcbiAgICBsZXQgcHJldmlvdXNDYWNoZSA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKVxuXG4gICAgY29uc3QgdXBkYXRlID0gKGtleTogS2V5LCB2YWx1ZTogVmFsdWUpID0+IHtcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgIGNhY2hlU2l6ZSsrXG5cbiAgICAgICAgaWYgKGNhY2hlU2l6ZSA+IG1heENhY2hlU2l6ZSkge1xuICAgICAgICAgICAgY2FjaGVTaXplID0gMFxuICAgICAgICAgICAgcHJldmlvdXNDYWNoZSA9IGNhY2hlXG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBNYXAoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0KGtleSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gY2FjaGUuZ2V0KGtleSlcblxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodmFsdWUgPSBwcmV2aW91c0NhY2hlLmdldChrZXkpKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfVxufVxuIiwgImltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgSU1QT1JUQU5UX01PRElGSUVSID0gJyEnXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYXJzZUNsYXNzTmFtZSA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IHtcbiAgICBjb25zdCB7IHNlcGFyYXRvciwgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUgfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyID0gc2VwYXJhdG9yLmxlbmd0aCA9PT0gMVxuICAgIGNvbnN0IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyID0gc2VwYXJhdG9yWzBdXG4gICAgY29uc3Qgc2VwYXJhdG9yTGVuZ3RoID0gc2VwYXJhdG9yLmxlbmd0aFxuXG4gICAgLy8gcGFyc2VDbGFzc05hbWUgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy90YWlsd2luZGNzcy9ibG9iL3YzLjIuMi9zcmMvdXRpbC9zcGxpdEF0VG9wTGV2ZWxPbmx5LmpzXG4gICAgY29uc3QgcGFyc2VDbGFzc05hbWUgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gW11cblxuICAgICAgICBsZXQgYnJhY2tldERlcHRoID0gMFxuICAgICAgICBsZXQgbW9kaWZpZXJTdGFydCA9IDBcbiAgICAgICAgbGV0IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uOiBudW1iZXIgfCB1bmRlZmluZWRcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2xhc3NOYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDaGFyYWN0ZXIgPSBjbGFzc05hbWVbaW5kZXhdXG5cbiAgICAgICAgICAgIGlmIChicmFja2V0RGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXIgPT09IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyICYmXG4gICAgICAgICAgICAgICAgICAgIChpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lLnNsaWNlKGluZGV4LCBpbmRleCArIHNlcGFyYXRvckxlbmd0aCkgPT09IHNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goY2xhc3NOYW1lLnNsaWNlKG1vZGlmaWVyU3RhcnQsIGluZGV4KSlcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJTdGFydCA9IGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoKytcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoLS1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgbW9kaWZpZXJzLmxlbmd0aCA9PT0gMCA/IGNsYXNzTmFtZSA6IGNsYXNzTmFtZS5zdWJzdHJpbmcobW9kaWZpZXJTdGFydClcbiAgICAgICAgY29uc3QgaGFzSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdGFydHNXaXRoKElNUE9SVEFOVF9NT0RJRklFUilcbiAgICAgICAgY29uc3QgYmFzZUNsYXNzTmFtZSA9IGhhc0ltcG9ydGFudE1vZGlmaWVyXG4gICAgICAgICAgICA/IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3Vic3RyaW5nKDEpXG4gICAgICAgICAgICA6IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXJcblxuICAgICAgICBjb25zdCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uID1cbiAgICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uICYmIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID4gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgID8gcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gLSBtb2RpZmllclN0YXJ0XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9kaWZpZXJzLFxuICAgICAgICAgICAgaGFzSW1wb3J0YW50TW9kaWZpZXIsXG4gICAgICAgICAgICBiYXNlQ2xhc3NOYW1lLFxuICAgICAgICAgICAgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbixcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgICAgICByZXR1cm4gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSh7IGNsYXNzTmFtZSwgcGFyc2VDbGFzc05hbWUgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VDbGFzc05hbWVcbn1cblxuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRNb2RpZmllcnMgPSAobW9kaWZpZXJzOiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmIChtb2RpZmllcnMubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgcmV0dXJuIG1vZGlmaWVyc1xuICAgIH1cblxuICAgIGNvbnN0IHNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuICAgIGxldCB1bnNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuXG4gICAgbW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXJiaXRyYXJ5VmFyaWFudCA9IG1vZGlmaWVyWzBdID09PSAnWydcblxuICAgICAgICBpZiAoaXNBcmJpdHJhcnlWYXJpYW50KSB7XG4gICAgICAgICAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCksIG1vZGlmaWVyKVxuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMgPSBbXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMucHVzaChtb2RpZmllcilcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCkpXG5cbiAgICByZXR1cm4gc29ydGVkTW9kaWZpZXJzXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ2xhc3NHcm91cFV0aWxzIH0gZnJvbSAnLi9jbGFzcy1ncm91cC11dGlscydcbmltcG9ydCB7IGNyZWF0ZUxydUNhY2hlIH0gZnJvbSAnLi9scnUtY2FjaGUnXG5pbXBvcnQgeyBjcmVhdGVQYXJzZUNsYXNzTmFtZSB9IGZyb20gJy4vcGFyc2UtY2xhc3MtbmFtZSdcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29uZmlnVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiAoe1xuICAgIGNhY2hlOiBjcmVhdGVMcnVDYWNoZTxzdHJpbmcsIHN0cmluZz4oY29uZmlnLmNhY2hlU2l6ZSksXG4gICAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gICAgLi4uY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZyksXG59KVxuIiwgImltcG9ydCB7IENvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBJTVBPUlRBTlRfTU9ESUZJRVIsIHNvcnRNb2RpZmllcnMgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5cbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy9cblxuZXhwb3J0IGNvbnN0IG1lcmdlQ2xhc3NMaXN0ID0gKGNsYXNzTGlzdDogc3RyaW5nLCBjb25maWdVdGlsczogQ29uZmlnVXRpbHMpID0+IHtcbiAgICBjb25zdCB7IHBhcnNlQ2xhc3NOYW1lLCBnZXRDbGFzc0dyb3VwSWQsIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyB9ID0gY29uZmlnVXRpbHNcblxuICAgIC8qKlxuICAgICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAgICogYHtpbXBvcnRhbnRNb2RpZmllcn17dmFyaWFudE1vZGlmaWVyc317Y2xhc3NHcm91cElkfWBcbiAgICAgKiBAZXhhbXBsZSAnZmxvYXQnXG4gICAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgICAqIEBleGFtcGxlICdtZDohcHInXG4gICAgICovXG4gICAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0OiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IGNsYXNzTGlzdC50cmltKCkuc3BsaXQoU1BMSVRfQ0xBU1NFU19SRUdFWClcblxuICAgIGxldCByZXN1bHQgPSAnJ1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSBjbGFzc05hbWVzLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4IC09IDEpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDbGFzc05hbWUgPSBjbGFzc05hbWVzW2luZGV4XSFcblxuICAgICAgICBjb25zdCB7IG1vZGlmaWVycywgaGFzSW1wb3J0YW50TW9kaWZpZXIsIGJhc2VDbGFzc05hbWUsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gfSA9XG4gICAgICAgICAgICBwYXJzZUNsYXNzTmFtZShvcmlnaW5hbENsYXNzTmFtZSlcblxuICAgICAgICBsZXQgaGFzUG9zdGZpeE1vZGlmaWVyID0gQm9vbGVhbihtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICBsZXQgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKFxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyXG4gICAgICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lLnN1YnN0cmluZygwLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICAgICAgICAgIDogYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICBpZiAoIWhhc1Bvc3RmaXhNb2RpZmllcikge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKGJhc2VDbGFzc05hbWUpXG5cbiAgICAgICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXIgPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyaWFudE1vZGlmaWVyID0gc29ydE1vZGlmaWVycyhtb2RpZmllcnMpLmpvaW4oJzonKVxuXG4gICAgICAgIGNvbnN0IG1vZGlmaWVySWQgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyB2YXJpYW50TW9kaWZpZXIgKyBJTVBPUlRBTlRfTU9ESUZJRVJcbiAgICAgICAgICAgIDogdmFyaWFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgY2xhc3NJZCA9IG1vZGlmaWVySWQgKyBjbGFzc0dyb3VwSWRcblxuICAgICAgICBpZiAoY2xhc3NHcm91cHNJbkNvbmZsaWN0LmluY2x1ZGVzKGNsYXNzSWQpKSB7XG4gICAgICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBvbWl0dGVkIGR1ZSB0byBjb25mbGljdFxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKGNsYXNzSWQpXG5cbiAgICAgICAgY29uc3QgY29uZmxpY3RHcm91cHMgPSBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmxpY3RHcm91cHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gY29uZmxpY3RHcm91cHNbaV0hXG4gICAgICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChtb2RpZmllcklkICsgZ3JvdXApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBub3QgaW4gY29uZmxpY3RcbiAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuIiwgIi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuXG5leHBvcnQgdHlwZSBDbGFzc05hbWVWYWx1ZSA9IENsYXNzTmFtZUFycmF5IHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB8IDAgfCAwbiB8IGZhbHNlXG50eXBlIENsYXNzTmFtZUFycmF5ID0gQ2xhc3NOYW1lVmFsdWVbXVxuXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pOiBzdHJpbmdcbmV4cG9ydCBmdW5jdGlvbiB0d0pvaW4oKSB7XG4gICAgbGV0IGluZGV4ID0gMFxuICAgIGxldCBhcmd1bWVudDogQ2xhc3NOYW1lVmFsdWVcbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZTogc3RyaW5nXG4gICAgbGV0IHN0cmluZyA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGlmICgoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pKSB7XG4gICAgICAgICAgICBpZiAoKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKGFyZ3VtZW50KSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nXG59XG5cbmNvbnN0IHRvVmFsdWUgPSAobWl4OiBDbGFzc05hbWVBcnJheSB8IHN0cmluZykgPT4ge1xuICAgIGlmICh0eXBlb2YgbWl4ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbWl4XG4gICAgfVxuXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBtaXgubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgaWYgKG1peFtrXSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShtaXhba10gYXMgQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpKSkge1xuICAgICAgICAgICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJylcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBtZXJnZUNsYXNzTGlzdCB9IGZyb20gJy4vbWVyZ2UtY2xhc3NsaXN0J1xuaW1wb3J0IHsgQ2xhc3NOYW1lVmFsdWUsIHR3Sm9pbiB9IGZyb20gJy4vdHctam9pbidcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUNvbmZpZ0ZpcnN0ID0gKCkgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBUYWlsd2luZE1lcmdlID0gKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pID0+IHN0cmluZ1xudHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFpbHdpbmRNZXJnZShcbiAgICBjcmVhdGVDb25maWdGaXJzdDogQ3JlYXRlQ29uZmlnRmlyc3QsXG4gICAgLi4uY3JlYXRlQ29uZmlnUmVzdDogQ3JlYXRlQ29uZmlnU3Vic2VxdWVudFtdXG4pOiBUYWlsd2luZE1lcmdlIHtcbiAgICBsZXQgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzXG4gICAgbGV0IGNhY2hlR2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnZ2V0J11cbiAgICBsZXQgY2FjaGVTZXQ6IENvbmZpZ1V0aWxzWydjYWNoZSddWydzZXQnXVxuICAgIGxldCBmdW5jdGlvblRvQ2FsbCA9IGluaXRUYWlsd2luZE1lcmdlXG5cbiAgICBmdW5jdGlvbiBpbml0VGFpbHdpbmRNZXJnZShjbGFzc0xpc3Q6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBjcmVhdGVDb25maWdSZXN0LnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2aW91c0NvbmZpZywgY3JlYXRlQ29uZmlnQ3VycmVudCkgPT4gY3JlYXRlQ29uZmlnQ3VycmVudChwcmV2aW91c0NvbmZpZyksXG4gICAgICAgICAgICBjcmVhdGVDb25maWdGaXJzdCgpIGFzIEdlbmVyaWNDb25maWcsXG4gICAgICAgIClcblxuICAgICAgICBjb25maWdVdGlscyA9IGNyZWF0ZUNvbmZpZ1V0aWxzKGNvbmZpZylcbiAgICAgICAgY2FjaGVHZXQgPSBjb25maWdVdGlscy5jYWNoZS5nZXRcbiAgICAgICAgY2FjaGVTZXQgPSBjb25maWdVdGlscy5jYWNoZS5zZXRcbiAgICAgICAgZnVuY3Rpb25Ub0NhbGwgPSB0YWlsd2luZE1lcmdlXG5cbiAgICAgICAgcmV0dXJuIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGVHZXQoY2xhc3NMaXN0KVxuXG4gICAgICAgIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG1lcmdlQ2xhc3NMaXN0KGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpXG4gICAgICAgIGNhY2hlU2V0KGNsYXNzTGlzdCwgcmVzdWx0KVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gY2FsbFRhaWx3aW5kTWVyZ2UoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvblRvQ2FsbCh0d0pvaW4uYXBwbHkobnVsbCwgYXJndW1lbnRzIGFzIGFueSkpXG4gICAgfVxufVxuIiwgImltcG9ydCB7IERlZmF1bHRUaGVtZUdyb3VwSWRzLCBOb0luZmVyLCBUaGVtZUdldHRlciwgVGhlbWVPYmplY3QgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgZnJvbVRoZW1lID0gPFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gICAgRGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciBleHRlbmRzIHN0cmluZyA9IERlZmF1bHRUaGVtZUdyb3VwSWRzLFxuPihrZXk6IE5vSW5mZXI8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPik6IFRoZW1lR2V0dGVyID0+IHtcbiAgICBjb25zdCB0aGVtZUdldHRlciA9ICh0aGVtZTogVGhlbWVPYmplY3Q8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPikgPT5cbiAgICAgICAgdGhlbWVba2V5XSB8fCBbXVxuXG4gICAgdGhlbWVHZXR0ZXIuaXNUaGVtZUdldHRlciA9IHRydWUgYXMgY29uc3RcblxuICAgIHJldHVybiB0aGVtZUdldHRlclxufVxuIiwgImNvbnN0IGFyYml0cmFyeVZhbHVlUmVnZXggPSAvXlxcWyg/OihbYS16LV0rKTopPyguKylcXF0kL2lcbmNvbnN0IGZyYWN0aW9uUmVnZXggPSAvXlxcZCtcXC9cXGQrJC9cbmNvbnN0IHN0cmluZ0xlbmd0aHMgPSBuZXcgU2V0KFsncHgnLCAnZnVsbCcsICdzY3JlZW4nXSlcbmNvbnN0IHRzaGlydFVuaXRSZWdleCA9IC9eKFxcZCsoXFwuXFxkKyk/KT8oeHN8c218bWR8bGd8eGwpJC9cbmNvbnN0IGxlbmd0aFVuaXRSZWdleCA9XG4gICAgL1xcZCsoJXxweHxyP2VtfFtzZGxdP3YoW2h3aWJdfG1pbnxtYXgpfHB0fHBjfGlufGNtfG1tfGNhcHxjaHxleHxyP2xofGNxKHd8aHxpfGJ8bWlufG1heCkpfFxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXFwoLitcXCl8XjAkL1xuY29uc3QgY29sb3JGdW5jdGlvblJlZ2V4ID0gL14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpKVxcKC4rXFwpJC9cbi8vIFNoYWRvdyBhbHdheXMgYmVnaW5zIHdpdGggeCBhbmQgeSBvZmZzZXQgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgb3B0aW9uYWxseSBwcmVwZW5kZWQgYnkgaW5zZXRcbmNvbnN0IHNoYWRvd1JlZ2V4ID0gL14oaW5zZXRfKT8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKV8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKS9cbmNvbnN0IGltYWdlUmVnZXggPVxuICAgIC9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXFwoLitcXCkkL1xuXG5leHBvcnQgY29uc3QgaXNMZW5ndGggPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBpc051bWJlcih2YWx1ZSkgfHwgc3RyaW5nTGVuZ3Rocy5oYXModmFsdWUpIHx8IGZyYWN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ2xlbmd0aCcsIGlzTGVuZ3RoT25seSlcblxuZXhwb3J0IGNvbnN0IGlzTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IEJvb2xlYW4odmFsdWUpICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdudW1iZXInLCBpc051bWJlcilcblxuZXhwb3J0IGNvbnN0IGlzSW50ZWdlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc1BlcmNlbnQgPSAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUuZW5kc1dpdGgoJyUnKSAmJiBpc051bWJlcih2YWx1ZS5zbGljZSgwLCAtMSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+IGFyYml0cmFyeVZhbHVlUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzVHNoaXJ0U2l6ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB0c2hpcnRVbml0UmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3Qgc2l6ZUxhYmVscyA9IG5ldyBTZXQoWydsZW5ndGgnLCAnc2l6ZScsICdwZXJjZW50YWdlJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgc2l6ZUxhYmVscywgaXNOZXZlcilcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5UG9zaXRpb24gPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAncG9zaXRpb24nLCBpc05ldmVyKVxuXG5jb25zdCBpbWFnZUxhYmVscyA9IG5ldyBTZXQoWydpbWFnZScsICd1cmwnXSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5SW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgaW1hZ2VMYWJlbHMsIGlzSW1hZ2UpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnJywgaXNTaGFkb3cpXG5cbmV4cG9ydCBjb25zdCBpc0FueSA9ICgpID0+IHRydWVcblxuY29uc3QgZ2V0SXNBcmJpdHJhcnlWYWx1ZSA9IChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGxhYmVsOiBzdHJpbmcgfCBTZXQ8c3RyaW5nPixcbiAgICB0ZXN0VmFsdWU6ICh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFuLFxuKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXJiaXRyYXJ5VmFsdWVSZWdleC5leGVjKHZhbHVlKVxuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0WzFdKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHJlc3VsdFsxXSA9PT0gbGFiZWwgOiBsYWJlbC5oYXMocmVzdWx0WzFdKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlc3RWYWx1ZShyZXN1bHRbMl0hKVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG5jb25zdCBpc0xlbmd0aE9ubHkgPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICAvLyBgY29sb3JGdW5jdGlvblJlZ2V4YCBjaGVjayBpcyBuZWNlc3NhcnkgYmVjYXVzZSBjb2xvciBmdW5jdGlvbnMgY2FuIGhhdmUgcGVyY2VudGFnZXMgaW4gdGhlbSB3aGljaCB3aGljaCB3b3VsZCBiZSBpbmNvcnJlY3RseSBjbGFzc2lmaWVkIGFzIGxlbmd0aHMuXG4gICAgLy8gRm9yIGV4YW1wbGUsIGBoc2woMCAwJSAwJSlgIHdvdWxkIGJlIGNsYXNzaWZpZWQgYXMgYSBsZW5ndGggd2l0aG91dCB0aGlzIGNoZWNrLlxuICAgIC8vIEkgY291bGQgYWxzbyB1c2UgbG9va2JlaGluZCBhc3NlcnRpb24gaW4gYGxlbmd0aFVuaXRSZWdleGAgYnV0IHRoYXQgaXNuJ3Qgc3VwcG9ydGVkIHdpZGVseSBlbm91Z2guXG4gICAgbGVuZ3RoVW5pdFJlZ2V4LnRlc3QodmFsdWUpICYmICFjb2xvckZ1bmN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3QgaXNOZXZlciA9ICgpID0+IGZhbHNlXG5cbmNvbnN0IGlzU2hhZG93ID0gKHZhbHVlOiBzdHJpbmcpID0+IHNoYWRvd1JlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzSW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gaW1hZ2VSZWdleC50ZXN0KHZhbHVlKVxuIiwgImltcG9ydCB7IGZyb21UaGVtZSB9IGZyb20gJy4vZnJvbS10aGVtZSdcbmltcG9ydCB7IENvbmZpZywgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gICAgaXNBbnksXG4gICAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgICBpc0FyYml0cmFyeUxlbmd0aCxcbiAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICBpc0FyYml0cmFyeVBvc2l0aW9uLFxuICAgIGlzQXJiaXRyYXJ5U2hhZG93LFxuICAgIGlzQXJiaXRyYXJ5U2l6ZSxcbiAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgIGlzSW50ZWdlcixcbiAgICBpc0xlbmd0aCxcbiAgICBpc051bWJlcixcbiAgICBpc1BlcmNlbnQsXG4gICAgaXNUc2hpcnRTaXplLFxufSBmcm9tICcuL3ZhbGlkYXRvcnMnXG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Q29uZmlnID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbG9ycyA9IGZyb21UaGVtZSgnY29sb3JzJylcbiAgICBjb25zdCBzcGFjaW5nID0gZnJvbVRoZW1lKCdzcGFjaW5nJylcbiAgICBjb25zdCBibHVyID0gZnJvbVRoZW1lKCdibHVyJylcbiAgICBjb25zdCBicmlnaHRuZXNzID0gZnJvbVRoZW1lKCdicmlnaHRuZXNzJylcbiAgICBjb25zdCBib3JkZXJDb2xvciA9IGZyb21UaGVtZSgnYm9yZGVyQ29sb3InKVxuICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IGZyb21UaGVtZSgnYm9yZGVyUmFkaXVzJylcbiAgICBjb25zdCBib3JkZXJTcGFjaW5nID0gZnJvbVRoZW1lKCdib3JkZXJTcGFjaW5nJylcbiAgICBjb25zdCBib3JkZXJXaWR0aCA9IGZyb21UaGVtZSgnYm9yZGVyV2lkdGgnKVxuICAgIGNvbnN0IGNvbnRyYXN0ID0gZnJvbVRoZW1lKCdjb250cmFzdCcpXG4gICAgY29uc3QgZ3JheXNjYWxlID0gZnJvbVRoZW1lKCdncmF5c2NhbGUnKVxuICAgIGNvbnN0IGh1ZVJvdGF0ZSA9IGZyb21UaGVtZSgnaHVlUm90YXRlJylcbiAgICBjb25zdCBpbnZlcnQgPSBmcm9tVGhlbWUoJ2ludmVydCcpXG4gICAgY29uc3QgZ2FwID0gZnJvbVRoZW1lKCdnYXAnKVxuICAgIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wcyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BzJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMnKVxuICAgIGNvbnN0IGluc2V0ID0gZnJvbVRoZW1lKCdpbnNldCcpXG4gICAgY29uc3QgbWFyZ2luID0gZnJvbVRoZW1lKCdtYXJnaW4nKVxuICAgIGNvbnN0IG9wYWNpdHkgPSBmcm9tVGhlbWUoJ29wYWNpdHknKVxuICAgIGNvbnN0IHBhZGRpbmcgPSBmcm9tVGhlbWUoJ3BhZGRpbmcnKVxuICAgIGNvbnN0IHNhdHVyYXRlID0gZnJvbVRoZW1lKCdzYXR1cmF0ZScpXG4gICAgY29uc3Qgc2NhbGUgPSBmcm9tVGhlbWUoJ3NjYWxlJylcbiAgICBjb25zdCBzZXBpYSA9IGZyb21UaGVtZSgnc2VwaWEnKVxuICAgIGNvbnN0IHNrZXcgPSBmcm9tVGhlbWUoJ3NrZXcnKVxuICAgIGNvbnN0IHNwYWNlID0gZnJvbVRoZW1lKCdzcGFjZScpXG4gICAgY29uc3QgdHJhbnNsYXRlID0gZnJvbVRoZW1lKCd0cmFuc2xhdGUnKVxuXG4gICAgY29uc3QgZ2V0T3ZlcnNjcm9sbCA9ICgpID0+IFsnYXV0bycsICdjb250YWluJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE92ZXJmbG93ID0gKCkgPT4gWydhdXRvJywgJ2hpZGRlbicsICdjbGlwJywgJ3Zpc2libGUnLCAnc2Nyb2xsJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5ID0gKCkgPT4gW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5ID0gKCkgPT4gWycnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRQb3NpdGlvbnMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgJ2xlZnQtYm90dG9tJyxcbiAgICAgICAgICAgICdsZWZ0LXRvcCcsXG4gICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgJ3JpZ2h0LWJvdHRvbScsXG4gICAgICAgICAgICAncmlnaHQtdG9wJyxcbiAgICAgICAgICAgICd0b3AnLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGluZVN0eWxlcyA9ICgpID0+IFsnc29saWQnLCAnZGFzaGVkJywgJ2RvdHRlZCcsICdkb3VibGUnLCAnbm9uZSddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QmxlbmRNb2RlcyA9ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgJ211bHRpcGx5JyxcbiAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgJ292ZXJsYXknLFxuICAgICAgICAgICAgJ2RhcmtlbicsXG4gICAgICAgICAgICAnbGlnaHRlbicsXG4gICAgICAgICAgICAnY29sb3ItZG9kZ2UnLFxuICAgICAgICAgICAgJ2NvbG9yLWJ1cm4nLFxuICAgICAgICAgICAgJ2hhcmQtbGlnaHQnLFxuICAgICAgICAgICAgJ3NvZnQtbGlnaHQnLFxuICAgICAgICAgICAgJ2RpZmZlcmVuY2UnLFxuICAgICAgICAgICAgJ2V4Y2x1c2lvbicsXG4gICAgICAgICAgICAnaHVlJyxcbiAgICAgICAgICAgICdzYXR1cmF0aW9uJyxcbiAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAnbHVtaW5vc2l0eScsXG4gICAgICAgIF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRBbGlnbiA9ICgpID0+XG4gICAgICAgIFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiZXR3ZWVuJywgJ2Fyb3VuZCcsICdldmVubHknLCAnc3RyZXRjaCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0WmVyb0FuZEVtcHR5ID0gKCkgPT4gWycnLCAnMCcsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QnJlYWtzID0gKCkgPT5cbiAgICAgICAgWydhdXRvJywgJ2F2b2lkJywgJ2FsbCcsICdhdm9pZC1wYWdlJywgJ3BhZ2UnLCAnbGVmdCcsICdyaWdodCcsICdjb2x1bW4nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlckFuZEFyYml0cmFyeSA9ICgpID0+IFtpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhY2hlU2l6ZTogNTAwLFxuICAgICAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICAgICAgdGhlbWU6IHtcbiAgICAgICAgICAgIGNvbG9yczogW2lzQW55XSxcbiAgICAgICAgICAgIHNwYWNpbmc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgICAgICAgYmx1cjogWydub25lJywgJycsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogWydub25lJywgJycsICdmdWxsJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgICAgICAgIGJvcmRlclNwYWNpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBjb250cmFzdDogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmF5c2NhbGU6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgaHVlUm90YXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGludmVydDogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBnYXA6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmFkaWVudENvbG9yU3RvcHM6IFtjb2xvcnNdLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnM6IFtpc1BlcmNlbnQsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGluc2V0OiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIG1hcmdpbjogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBvcGFjaXR5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzYXR1cmF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzY2FsZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzZXBpYTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBza2V3OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNwYWNlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgLy8gTGF5b3V0XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFzcGVjdCBSYXRpb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FzcGVjdC1yYXRpb1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhc3BlY3Q6IFt7IGFzcGVjdDogWydhdXRvJywgJ3NxdWFyZScsICd2aWRlbycsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250YWluZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250YWluZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lciddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb2x1bW5zOiBbeyBjb2x1bW5zOiBbaXNUc2hpcnRTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQWZ0ZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1hZnRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYWZ0ZXInOiBbeyAnYnJlYWstYWZ0ZXInOiBnZXRCcmVha3MoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQmVmb3JlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYmVmb3JlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1iZWZvcmUnOiBbeyAnYnJlYWstYmVmb3JlJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEluc2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWluc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstaW5zaWRlJzogW3sgJ2JyZWFrLWluc2lkZSc6IFsnYXV0bycsICdhdm9pZCcsICdhdm9pZC1wYWdlJywgJ2F2b2lkLWNvbHVtbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggRGVjb3JhdGlvbiBCcmVha1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1kZWNvcmF0aW9uLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3gtZGVjb3JhdGlvbic6IFt7ICdib3gtZGVjb3JhdGlvbic6IFsnc2xpY2UnLCAnY2xvbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNpemluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaXppbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYm94OiBbeyBib3g6IFsnYm9yZGVyJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGlzcGxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Rpc3BsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGlzcGxheTogW1xuICAgICAgICAgICAgICAgICdibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZScsXG4gICAgICAgICAgICAgICAgJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLXRhYmxlJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY2FwdGlvbicsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNlbGwnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4tZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1mb290ZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1oZWFkZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3ctZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3cnLFxuICAgICAgICAgICAgICAgICdmbG93LXJvb3QnLFxuICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWdyaWQnLFxuICAgICAgICAgICAgICAgICdjb250ZW50cycsXG4gICAgICAgICAgICAgICAgJ2xpc3QtaXRlbScsXG4gICAgICAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbG9hdHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbG9hdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbG9hdDogW3sgZmxvYXQ6IFsncmlnaHQnLCAnbGVmdCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDbGVhclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NsZWFyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNsZWFyOiBbeyBjbGVhcjogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdGgnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSXNvbGF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaXNvbGF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlzb2xhdGlvbjogWydpc29sYXRlJywgJ2lzb2xhdGlvbi1hdXRvJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBGaXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtZml0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtZml0JzogW3sgb2JqZWN0OiBbJ2NvbnRhaW4nLCAnY292ZXInLCAnZmlsbCcsICdub25lJywgJ3NjYWxlLWRvd24nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT2JqZWN0IFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtcG9zaXRpb24nOiBbeyBvYmplY3Q6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFt7IG92ZXJmbG93OiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXgnOiBbeyAnb3ZlcmZsb3cteCc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93IFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcmZsb3cteSc6IFt7ICdvdmVyZmxvdy15JzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcnNjcm9sbDogW3sgb3ZlcnNjcm9sbDogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXgnOiBbeyAnb3ZlcnNjcm9sbC14JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXknOiBbeyAnb3ZlcnNjcm9sbC15JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Bvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBvc2l0aW9uOiBbJ3N0YXRpYycsICdmaXhlZCcsICdhYnNvbHV0ZScsICdyZWxhdGl2ZScsICdzdGlja3knXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gUmlnaHQgLyBCb3R0b20gLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGluc2V0OiBbeyBpbnNldDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmlnaHQgLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC14JzogW3sgJ2luc2V0LXgnOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3AgLyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2luc2V0LXknOiBbeyAnaW5zZXQteSc6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0YXJ0OiBbeyBzdGFydDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVuZDogW3sgZW5kOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG9wOiBbeyB0b3A6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJpZ2h0OiBbeyByaWdodDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJvdHRvbTogW3sgYm90dG9tOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlZnQ6IFt7IGxlZnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZpc2liaWxpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92aXNpYmlsaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZpc2liaWxpdHk6IFsndmlzaWJsZScsICdpbnZpc2libGUnLCAnY29sbGFwc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogWi1JbmRleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3otaW5kZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgejogW3sgejogWydhdXRvJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEZsZXhib3ggYW5kIEdyaWRcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBCYXNpc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtYmFzaXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmFzaXM6IFt7IGJhc2lzOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBEaXJlY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWRpcmVjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC1kaXJlY3Rpb24nOiBbeyBmbGV4OiBbJ3JvdycsICdyb3ctcmV2ZXJzZScsICdjb2wnLCAnY29sLXJldmVyc2UnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmbGV4LXdyYXAnOiBbeyBmbGV4OiBbJ3dyYXAnLCAnd3JhcC1yZXZlcnNlJywgJ25vd3JhcCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbGV4OiBbeyBmbGV4OiBbJzEnLCAnYXV0bycsICdpbml0aWFsJywgJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBHcm93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1ncm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyb3c6IFt7IGdyb3c6IGdldFplcm9BbmRFbXB0eSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IFNocmlua1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtc2hyaW5rXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNocmluazogW3sgc2hyaW5rOiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3JkZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcmRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvcmRlcjogW3sgb3JkZXI6IFsnZmlyc3QnLCAnbGFzdCcsICdub25lJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBUZW1wbGF0ZSBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLWNvbHMnOiBbeyAnZ3JpZC1jb2xzJzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnQgLyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0LWVuZCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzcGFuOiBbJ2Z1bGwnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtc3RhcnQnOiBbeyAnY29sLXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1lbmQnOiBbeyAnY29sLWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1yb3dzJzogW3sgJ2dyaWQtcm93cyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAgeyByb3c6IFsnYXV0bycsIHsgc3BhbjogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfSwgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydCc6IFt7ICdyb3ctc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LWVuZCc6IFt7ICdyb3ctZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIEZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1mbG93JzogW3sgJ2dyaWQtZmxvdyc6IFsncm93JywgJ2NvbCcsICdkZW5zZScsICdyb3ctZGVuc2UnLCAnY29sLWRlbnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWNvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2F1dG8tY29scyc6IFt7ICdhdXRvLWNvbHMnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1yb3dzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLXJvd3MnOiBbeyAnYXV0by1yb3dzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdhcDogW3sgZ2FwOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dhcC14JzogW3sgJ2dhcC14JzogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteSc6IFt7ICdnYXAteSc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IFt7IGp1c3RpZnk6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWl0ZW1zJzogW3sgJ2p1c3RpZnktaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktc2VsZic6IFt7ICdqdXN0aWZ5LXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1jb250ZW50JzogW3sgY29udGVudDogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24taXRlbXMnOiBbeyBpdGVtczogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLXNlbGYnOiBbeyBzZWxmOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJywgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1jb250ZW50JzogW3sgJ3BsYWNlLWNvbnRlbnQnOiBbLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtaXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLWl0ZW1zJzogW3sgJ3BsYWNlLWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLXNlbGYnOiBbeyAncGxhY2Utc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8vIFNwYWNpbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcDogW3sgcDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB4OiBbeyBweDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB5OiBbeyBweTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwczogW3sgcHM6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBlOiBbeyBwZTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHQ6IFt7IHB0OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHByOiBbeyBwcjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGI6IFt7IHBiOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGw6IFt7IHBsOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtOiBbeyBtOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXg6IFt7IG14OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXk6IFt7IG15OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1zOiBbeyBtczogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWU6IFt7IG1lOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtdDogW3sgbXQ6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXI6IFt7IG1yOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtYjogW3sgbWI6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtbDogW3sgbWw6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteCc6IFt7ICdzcGFjZS14JzogW3NwYWNlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteC1yZXZlcnNlJzogWydzcGFjZS14LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXknOiBbeyAnc3BhY2UteSc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXktcmV2ZXJzZSc6IFsnc3BhY2UteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvLyBTaXppbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3Z3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWluLVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4tdyc6IFt7ICdtaW4tdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc2NyZWVuOiBbaXNUc2hpcnRTaXplXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUc2hpcnRTaXplLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2aCcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4taGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4taCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtaW4taCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LUhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21heC1oJzogW1xuICAgICAgICAgICAgICAgIHsgJ21heC1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaXplOiBbeyBzaXplOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8vIFR5cG9ncmFwaHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXNpemUnOiBbeyB0ZXh0OiBbJ2Jhc2UnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTbW9vdGhpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNtb290aGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zbW9vdGhpbmcnOiBbJ2FudGlhbGlhc2VkJywgJ3N1YnBpeGVsLWFudGlhbGlhc2VkJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXN0eWxlJzogWydpdGFsaWMnLCAnbm90LWl0YWxpYyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFdlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtd2VpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXdlaWdodCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aGluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbWlib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IEZhbWlseVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtZmFtaWx5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LWZhbWlseSc6IFt7IGZvbnQ6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ25vcm1hbC1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJzogWydvcmRpbmFsJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ3NsYXNoZWQtemVybyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydsaW5pbmctbnVtcycsICdvbGRzdHlsZS1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydwcm9wb3J0aW9uYWwtbnVtcycsICd0YWJ1bGFyLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydkaWFnb25hbC1mcmFjdGlvbnMnLCAnc3RhY2tlZC1mcmFjdG9ucyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZXR0ZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xldHRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYWNraW5nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGluZSBDbGFtcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtY2xhbXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpbmUtY2xhbXAnOiBbeyAnbGluZS1jbGFtcCc6IFsnbm9uZScsIGlzTnVtYmVyLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzbnVnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGF4ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xvb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3QtaW1hZ2UnOiBbeyAnbGlzdC1pbWFnZSc6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIFR5cGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtdHlwZSc6IFt7IGxpc3Q6IFsnbm9uZScsICdkaXNjJywgJ2RlY2ltYWwnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nOiBbeyBsaXN0OiBbJ2luc2lkZScsICdvdXRzaWRlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlaG9sZGVyIENvbG9yXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLWNvbG9yJzogW3sgcGxhY2Vob2xkZXI6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFt7ICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtYWxpZ25tZW50JzogW3sgdGV4dDogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcsICdqdXN0aWZ5JywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1jb2xvcic6IFt7IHRleHQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtb3BhY2l0eSc6IFt7ICd0ZXh0LW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnb3ZlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1zdHlsZSc6IFt7IGRlY29yYXRpb246IFsuLi5nZXRMaW5lU3R5bGVzKCksICd3YXZ5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBUaGlja25lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzJzogW1xuICAgICAgICAgICAgICAgIHsgZGVjb3JhdGlvbjogWydhdXRvJywgJ2Zyb20tZm9udCcsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgVW5kZXJsaW5lIE9mZnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdW5kZXJsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFt7ICd1bmRlcmxpbmUtb2Zmc2V0JzogWydhdXRvJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcic6IFt7IGRlY29yYXRpb246IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgT3ZlcmZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW92ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW92ZXJmbG93JzogWyd0cnVuY2F0ZScsICd0ZXh0LWVsbGlwc2lzJywgJ3RleHQtY2xpcCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFdyYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXdyYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtd3JhcCc6IFt7IHRleHQ6IFsnd3JhcCcsICdub3dyYXAnLCAnYmFsYW5jZScsICdwcmV0dHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBJbmRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWluZGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbmRlbnQ6IFt7IGluZGVudDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmVydGljYWwgQWxpZ25tZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmVydGljYWwtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3ZlcnRpY2FsLWFsaWduJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlbGluZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaWRkbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC10b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdoaXRlc3BhY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aGl0ZXNwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHdoaXRlc3BhY2U6IFtcbiAgICAgICAgICAgICAgICB7IHdoaXRlc3BhY2U6IFsnbm9ybWFsJywgJ25vd3JhcCcsICdwcmUnLCAncHJlLWxpbmUnLCAncHJlLXdyYXAnLCAnYnJlYWstc3BhY2VzJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdvcmQgQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93b3JkLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJyZWFrOiBbeyBicmVhazogWydub3JtYWwnLCAnd29yZHMnLCAnYWxsJywgJ2tlZXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHlwaGVuc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h5cGhlbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaHlwaGVuczogW3sgaHlwaGVuczogWydub25lJywgJ21hbnVhbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRlbnQ6IFt7IGNvbnRlbnQ6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gQmFja2dyb3VuZHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBBdHRhY2htZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1hdHRhY2htZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1hdHRhY2htZW50JzogW3sgYmc6IFsnZml4ZWQnLCAnbG9jYWwnLCAnc2Nyb2xsJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ2xpcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY2xpcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY2xpcCc6IFt7ICdiZy1jbGlwJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50JywgJ3RleHQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcGFjaXR5JzogW3sgJ2JnLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3JpZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLW9yaWdpbic6IFt7ICdiZy1vcmlnaW4nOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXBvc2l0aW9uJzogW3sgYmc6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlQb3NpdGlvbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUmVwZWF0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1yZXBlYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXJlcGVhdCc6IFt7IGJnOiBbJ25vLXJlcGVhdCcsIHsgcmVwZWF0OiBbJycsICd4JywgJ3knLCAncm91bmQnLCAnc3BhY2UnXSB9XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1zaXplJzogW3sgYmc6IFsnYXV0bycsICdjb3ZlcicsICdjb250YWluJywgaXNBcmJpdHJhcnlTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWltYWdlJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgJ2dyYWRpZW50LXRvJzogWyd0JywgJ3RyJywgJ3InLCAnYnInLCAnYicsICdibCcsICdsJywgJ3RsJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1jb2xvcic6IFt7IGJnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tLXBvcyc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEtcG9zJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUbyBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10by1wb3MnOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tJzogW3sgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEnOiBbeyB2aWE6IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10byc6IFt7IHRvOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8vIEJvcmRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm91bmRlZDogW3sgcm91bmRlZDogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXMnOiBbeyAncm91bmRlZC1zJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lJzogW3sgJ3JvdW5kZWQtZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFt7ICdyb3VuZGVkLXQnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFt7ICdyb3VuZGVkLXInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbeyAncm91bmRlZC1iJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFt7ICdyb3VuZGVkLWwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc3MnOiBbeyAncm91bmRlZC1zcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc2UnOiBbeyAncm91bmRlZC1zZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVlJzogW3sgJ3JvdW5kZWQtZWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVzJzogW3sgJ3JvdW5kZWQtZXMnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdGwnOiBbeyAncm91bmRlZC10bCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdHInOiBbeyAncm91bmRlZC10cic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYnInOiBbeyAncm91bmRlZC1icic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1ibCc6IFt7ICdyb3VuZGVkLWJsJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcnOiBbeyBib3JkZXI6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXMnOiBbeyAnYm9yZGVyLXMnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1lJzogW3sgJ2JvcmRlci1lJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctcic6IFt7ICdib3JkZXItcic6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1vcGFjaXR5JzogW3sgJ2JvcmRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zdHlsZSc6IFt7IGJvcmRlcjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ2hpZGRlbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgnOiBbeyAnZGl2aWRlLXgnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteC1yZXZlcnNlJzogWydkaXZpZGUteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteSc6IFt7ICdkaXZpZGUteSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS15LXJldmVyc2UnOiBbJ2RpdmlkZS15LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLW9wYWNpdHknOiBbeyAnZGl2aWRlLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXN0eWxlJzogW3sgZGl2aWRlOiBnZXRMaW5lU3R5bGVzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW3sgYm9yZGVyOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbeyAnYm9yZGVyLXgnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItYic6IFt7ICdib3JkZXItYic6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLWNvbG9yJzogW3sgZGl2aWRlOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1zdHlsZSc6IFt7IG91dGxpbmU6IFsnJywgLi4uZ2V0TGluZVN0eWxlcygpXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1vZmZzZXQnOiBbeyAnb3V0bGluZS1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS13JzogW3sgb3V0bGluZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLWNvbG9yJzogW3sgb3V0bGluZTogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXcnOiBbeyByaW5nOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBXaWR0aCBJbnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctdy1pbnNldCc6IFsncmluZy1pbnNldCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1jb2xvcic6IFt7IHJpbmc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb3BhY2l0eSc6IFt7ICdyaW5nLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LXcnOiBbeyAncmluZy1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPZmZzZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vZmZzZXQtY29sb3InOiBbeyAncmluZy1vZmZzZXQnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8vIEVmZmVjdHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hhZG93OiBbeyBzaGFkb3c6IFsnJywgJ2lubmVyJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5U2hhZG93XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvdyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3ctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NoYWRvdy1jb2xvcic6IFt7IHNoYWRvdzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3BhY2l0eTogW3sgb3BhY2l0eTogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaXggQmxlbmQgTW9kZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21peC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaXgtYmxlbmQnOiBbeyAnbWl4LWJsZW5kJzogWy4uLmdldEJsZW5kTW9kZXMoKSwgJ3BsdXMtbGlnaHRlcicsICdwbHVzLWRhcmtlciddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWJsZW5kJzogW3sgJ2JnLWJsZW5kJzogZ2V0QmxlbmRNb2RlcygpIH1dLFxuICAgICAgICAgICAgLy8gRmlsdGVyc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWx0ZXJcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWx0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsdGVyOiBbeyBmaWx0ZXI6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmx1cjogW3sgYmx1cjogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBbeyBicmlnaHRuZXNzOiBbYnJpZ2h0bmVzc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRyYXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udHJhc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udHJhc3Q6IFt7IGNvbnRyYXN0OiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEcm9wIFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Ryb3Atc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkcm9wLXNoYWRvdyc6IFt7ICdkcm9wLXNoYWRvdyc6IFsnJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ3JheXNjYWxlOiBbeyBncmF5c2NhbGU6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaHVlLXJvdGF0ZSc6IFt7ICdodWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnZlcnQ6IFt7IGludmVydDogW2ludmVydF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNhdHVyYXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2F0dXJhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2F0dXJhdGU6IFt7IHNhdHVyYXRlOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlcGlhOiBbeyBzZXBpYTogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbeyAnYmFja2Ryb3AtZmlsdGVyJzogWycnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCbHVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYmx1clxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYmx1cic6IFt7ICdiYWNrZHJvcC1ibHVyJzogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFt7ICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWNvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFt7ICdiYWNrZHJvcC1jb250cmFzdCc6IFtjb250cmFzdF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEdyYXlzY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWdyYXlzY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW3sgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFt7ICdiYWNrZHJvcC1odWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW3sgJ2JhY2tkcm9wLWludmVydCc6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFt7ICdiYWNrZHJvcC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFt7ICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFtzYXR1cmF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIFNlcGlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2VwaWFcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3sgJ2JhY2tkcm9wLXNlcGlhJzogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8vIFRhYmxlc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sbGFwc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sbGFwc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xsYXBzZSc6IFt7IGJvcmRlcjogWydjb2xsYXBzZScsICdzZXBhcmF0ZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZyc6IFt7ICdib3JkZXItc3BhY2luZyc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZy14JzogW3sgJ2JvcmRlci1zcGFjaW5nLXgnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFt7ICdib3JkZXItc3BhY2luZy15JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUYWJsZSBMYXlvdXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90YWJsZS1sYXlvdXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RhYmxlLWxheW91dCc6IFt7IHRhYmxlOiBbJ2F1dG8nLCAnZml4ZWQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FwdGlvbiBTaWRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2FwdGlvbi1zaWRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNhcHRpb246IFt7IGNhcHRpb246IFsndG9wJywgJ2JvdHRvbSddIH1dLFxuICAgICAgICAgICAgLy8gVHJhbnNpdGlvbnMgYW5kIEFuaW1hdGlvblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuaXNpdGlvbiBQcm9wZXJ0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tcHJvcGVydHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYWRvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gRHVyYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGR1cmF0aW9uOiBbeyBkdXJhdGlvbjogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gVGltaW5nIEZ1bmN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZWFzZTogW3sgZWFzZTogWydsaW5lYXInLCAnaW4nLCAnb3V0JywgJ2luLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIERlbGF5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kZWxheVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkZWxheTogW3sgZGVsYXk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbmltYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbmltYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYW5pbWF0ZTogW3sgYW5pbWF0ZTogWydub25lJywgJ3NwaW4nLCAncGluZycsICdwdWxzZScsICdib3VuY2UnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zZm9ybXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zZm9ybTogW3sgdHJhbnNmb3JtOiBbJycsICdncHUnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNjYWxlOiBbeyBzY2FsZTogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS14JzogW3sgJ3NjYWxlLXgnOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZSBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NjYWxlLXknOiBbeyAnc2NhbGUteSc6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByb3RhdGU6IFt7IHJvdGF0ZTogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zbGF0ZSBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2xhdGUteCc6IFt7ICd0cmFuc2xhdGUteCc6IFt0cmFuc2xhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXknOiBbeyAndHJhbnNsYXRlLXknOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy14JzogW3sgJ3NrZXcteCc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy15JzogW3sgJ3NrZXcteSc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybS1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gSW50ZXJhY3Rpdml0eVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBY2NlbnQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hY2NlbnQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWNjZW50OiBbeyBhY2NlbnQ6IFsnYXV0bycsIGNvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFwcGVhcmFuY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hcHBlYXJhbmNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IFt7IGFwcGVhcmFuY2U6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEN1cnNvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2N1cnNvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dhaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21vdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vdC1hbGxvd2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0LW1lbnUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcm9zc2hhaXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnRpY2FsLXRleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduby1kcm9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiYmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxsLXNjcm9sbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncm93LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbi1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICducy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lc3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdud3NlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1vdXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FyZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0LWluLXRpbWUtbW9kZSNjYXJldC1jb2xvci11dGlsaXRpZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NhcmV0LWNvbG9yJzogW3sgY2FyZXQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb2ludGVyIEV2ZW50c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BvaW50ZXItZXZlbnRzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwb2ludGVyLWV2ZW50cyc6IFt7ICdwb2ludGVyLWV2ZW50cyc6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJlc2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jlc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByZXNpemU6IFt7IHJlc2l6ZTogWydub25lJywgJ3knLCAneCcsICcnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtYmVoYXZpb3InOiBbeyBzY3JvbGw6IFsnYXV0bycsICdzbW9vdGgnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW3sgJ3Njcm9sbC1tJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW14JzogW3sgJ3Njcm9sbC1teCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFt7ICdzY3JvbGwtbXknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1zJzogW3sgJ3Njcm9sbC1tcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1lJzogW3sgJ3Njcm9sbC1tZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW10JzogW3sgJ3Njcm9sbC1tdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXInOiBbeyAnc2Nyb2xsLW1yJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWInOiBbeyAnc2Nyb2xsLW1iJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1sJzogW3sgJ3Njcm9sbC1tbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW3sgJ3Njcm9sbC1wJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbeyAnc2Nyb2xsLXB4JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbeyAnc2Nyb2xsLXB5JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBzJzogW3sgJ3Njcm9sbC1wcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGUnOiBbeyAnc2Nyb2xsLXBlJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wdCc6IFt7ICdzY3JvbGwtcHQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHInOiBbeyAnc2Nyb2xsLXByJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wYic6IFt7ICdzY3JvbGwtcGInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wbCc6IFt7ICdzY3JvbGwtcGwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBBbGlnblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLWFsaWduJzogW3sgc25hcDogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2FsaWduLW5vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgU3RvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXN0b3BcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RvcCc6IFt7IHNuYXA6IFsnbm9ybWFsJywgJ2Fsd2F5cyddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC10eXBlJzogW3sgc25hcDogWydub25lJywgJ3gnLCAneScsICdib3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGUgU3RyaWN0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RyaWN0bmVzcyc6IFt7IHNuYXA6IFsnbWFuZGF0b3J5JywgJ3Byb3hpbWl0eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG91Y2g6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvdWNoOiBbJ2F1dG8nLCAnbm9uZScsICdtYW5pcHVsYXRpb24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXknOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd5JywgJ3VwJywgJ2Rvd24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFBpbmNoIFpvb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaC1waW5jaC16b29tJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFVzZXIgU2VsZWN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdXNlci1zZWxlY3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2VsZWN0OiBbeyBzZWxlY3Q6IFsnbm9uZScsICd0ZXh0JywgJ2FsbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpbGwgQ2hhbmdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lsbC1jaGFuZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3dpbGwtY2hhbmdlJzogW1xuICAgICAgICAgICAgICAgIHsgJ3dpbGwtY2hhbmdlJzogWydhdXRvJywgJ3Njcm9sbCcsICdjb250ZW50cycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIFNWR1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWxsXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsbFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWxsOiBbeyBmaWxsOiBbY29sb3JzLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2UgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2Utd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3N0cm9rZS13JzogW3sgc3Ryb2tlOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0cm9rZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdHJva2U6IFt7IHN0cm9rZTogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8vIEFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NyZWVuIFJlYWRlcnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JlZW4tcmVhZGVyc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzcjogWydzci1vbmx5JywgJ25vdC1zci1vbmx5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcmNlZCBDb2xvciBBZGp1c3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb3JjZWQtY29sb3ItYWRqdXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogW3sgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbJ2F1dG8nLCAnbm9uZSddIH1dLFxuICAgICAgICB9LFxuICAgICAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBzOiB7XG4gICAgICAgICAgICBvdmVyZmxvdzogWydvdmVyZmxvdy14JywgJ292ZXJmbG93LXknXSxcbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFsnb3ZlcnNjcm9sbC14JywgJ292ZXJzY3JvbGwteSddLFxuICAgICAgICAgICAgaW5zZXQ6IFsnaW5zZXQteCcsICdpbnNldC15JywgJ3N0YXJ0JywgJ2VuZCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgICAgICAgICAgICdpbnNldC14JzogWydyaWdodCcsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteSc6IFsndG9wJywgJ2JvdHRvbSddLFxuICAgICAgICAgICAgZmxleDogWydiYXNpcycsICdncm93JywgJ3NocmluayddLFxuICAgICAgICAgICAgZ2FwOiBbJ2dhcC14JywgJ2dhcC15J10sXG4gICAgICAgICAgICBwOiBbJ3B4JywgJ3B5JywgJ3BzJywgJ3BlJywgJ3B0JywgJ3ByJywgJ3BiJywgJ3BsJ10sXG4gICAgICAgICAgICBweDogWydwcicsICdwbCddLFxuICAgICAgICAgICAgcHk6IFsncHQnLCAncGInXSxcbiAgICAgICAgICAgIG06IFsnbXgnLCAnbXknLCAnbXMnLCAnbWUnLCAnbXQnLCAnbXInLCAnbWInLCAnbWwnXSxcbiAgICAgICAgICAgIG14OiBbJ21yJywgJ21sJ10sXG4gICAgICAgICAgICBteTogWydtdCcsICdtYiddLFxuICAgICAgICAgICAgc2l6ZTogWyd3JywgJ2gnXSxcbiAgICAgICAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogW1xuICAgICAgICAgICAgICAgICdmdm4tb3JkaW5hbCcsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nLFxuICAgICAgICAgICAgICAgICdmdm4tZmlndXJlJyxcbiAgICAgICAgICAgICAgICAnZnZuLXNwYWNpbmcnLFxuICAgICAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLXNwYWNpbmcnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogWydkaXNwbGF5JywgJ292ZXJmbG93J10sXG4gICAgICAgICAgICByb3VuZGVkOiBbXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtbCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtc3MnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNlJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXRsJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10cicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYnInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAncm91bmRlZC1zJzogWydyb3VuZGVkLXNzJywgJ3JvdW5kZWQtZXMnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWUnOiBbJ3JvdW5kZWQtc2UnLCAncm91bmRlZC1lZSddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1yJzogWydyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLWJsJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbJ2JvcmRlci1zcGFjaW5nLXgnLCAnYm9yZGVyLXNwYWNpbmcteSddLFxuICAgICAgICAgICAgJ2JvcmRlci13JzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItdy1zJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctZScsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXQnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdib3JkZXItdy14JzogWydib3JkZXItdy1yJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICAgICAgICdib3JkZXItdy15JzogWydib3JkZXItdy10JywgJ2JvcmRlci13LWInXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3InOiBbXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1iJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLW0nOiBbXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcycsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tZScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tdCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tYicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFsnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tbCddLFxuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFsnc2Nyb2xsLW10JywgJ3Njcm9sbC1tYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtcHgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbJ3Njcm9sbC1wcicsICdzY3JvbGwtcGwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbJ3Njcm9sbC1wdCcsICdzY3JvbGwtcGInXSxcbiAgICAgICAgICAgIHRvdWNoOiBbJ3RvdWNoLXgnLCAndG91Y2gteScsICd0b3VjaC1weiddLFxuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gteSc6IFsndG91Y2gnXSxcbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOiB7XG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgIH0sXG4gICAgfSBhcyBjb25zdCBzYXRpc2ZpZXMgQ29uZmlnPERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcz5cbn1cbiIsICJpbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG4vKipcbiAqIEBwYXJhbSBiYXNlQ29uZmlnIENvbmZpZyB3aGVyZSBvdGhlciBjb25maWcgd2lsbCBiZSBtZXJnZWQgaW50by4gVGhpcyBvYmplY3Qgd2lsbCBiZSBtdXRhdGVkLlxuICogQHBhcmFtIGNvbmZpZ0V4dGVuc2lvbiBQYXJ0aWFsIGNvbmZpZyB0byBtZXJnZSBpbnRvIHRoZSBgYmFzZUNvbmZpZ2AuXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNvbmZpZ3MgPSA8Q2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZywgVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyPihcbiAgICBiYXNlQ29uZmlnOiBHZW5lcmljQ29uZmlnLFxuICAgIHtcbiAgICAgICAgY2FjaGVTaXplLFxuICAgICAgICBwcmVmaXgsXG4gICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUsXG4gICAgICAgIGV4dGVuZCA9IHt9LFxuICAgICAgICBvdmVycmlkZSA9IHt9LFxuICAgIH06IENvbmZpZ0V4dGVuc2lvbjxDbGFzc0dyb3VwSWRzLCBUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2NhY2hlU2l6ZScsIGNhY2hlU2l6ZSlcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdwcmVmaXgnLCBwcmVmaXgpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnc2VwYXJhdG9yJywgc2VwYXJhdG9yKVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2V4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lJywgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpXG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ0tleSBpbiBvdmVycmlkZSkge1xuICAgICAgICBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBiYXNlQ29uZmlnW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICAgICAgb3ZlcnJpZGVbY29uZmlnS2V5IGFzIGtleW9mIHR5cGVvZiBvdmVycmlkZV0sXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBleHRlbmQpIHtcbiAgICAgICAgbWVyZ2VDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1trZXkgYXMga2V5b2YgdHlwZW9mIGV4dGVuZF0sXG4gICAgICAgICAgICBleHRlbmRba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VDb25maWdcbn1cblxuY29uc3Qgb3ZlcnJpZGVQcm9wZXJ0eSA9IDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gICAgYmFzZU9iamVjdDogVCxcbiAgICBvdmVycmlkZUtleTogSyxcbiAgICBvdmVycmlkZVZhbHVlOiBUW0tdIHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBiYXNlT2JqZWN0W292ZXJyaWRlS2V5XSA9IG92ZXJyaWRlVmFsdWVcbiAgICB9XG59XG5cbmNvbnN0IG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG92ZXJyaWRlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgICAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VPYmplY3QsIGtleSwgb3ZlcnJpZGVPYmplY3Rba2V5XSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgbWVyZ2VDb25maWdQcm9wZXJ0aWVzID0gKFxuICAgIGJhc2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4sXG4gICAgbWVyZ2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAobWVyZ2VPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWVyZ2VPYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlVmFsdWUgPSBtZXJnZU9iamVjdFtrZXldXG5cbiAgICAgICAgICAgIGlmIChtZXJnZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBiYXNlT2JqZWN0W2tleV0gPSAoYmFzZU9iamVjdFtrZXldIHx8IFtdKS5jb25jYXQobWVyZ2VWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVUYWlsd2luZE1lcmdlIH0gZnJvbSAnLi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZydcbmltcG9ydCB7IG1lcmdlQ29uZmlncyB9IGZyb20gJy4vbWVyZ2UtY29uZmlncydcbmltcG9ydCB7IENvbmZpZ0V4dGVuc2lvbiwgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xuXG5leHBvcnQgY29uc3QgZXh0ZW5kVGFpbHdpbmRNZXJnZSA9IDxcbiAgICBBZGRpdGlvbmFsQ2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4+KFxuICAgIGNvbmZpZ0V4dGVuc2lvbjpcbiAgICAgICAgfCBDb25maWdFeHRlbnNpb248XG4gICAgICAgICAgICAgIERlZmF1bHRDbGFzc0dyb3VwSWRzIHwgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMsXG4gICAgICAgICAgICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHNcbiAgICAgICAgICA+XG4gICAgICAgIHwgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCxcbiAgICAuLi5jcmVhdGVDb25maWc6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKSA9PlxuICAgIHR5cGVvZiBjb25maWdFeHRlbnNpb24gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcsIGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKVxuICAgICAgICA6IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgICAgICAgICAgICgpID0+IG1lcmdlQ29uZmlncyhnZXREZWZhdWx0Q29uZmlnKCksIGNvbmZpZ0V4dGVuc2lvbiksXG4gICAgICAgICAgICAgIC4uLmNyZWF0ZUNvbmZpZyxcbiAgICAgICAgICApXG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnKVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyB0eXBlIENvbHVtbkRlZiB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEZpbHRlckljb24sIE1heGltaXplLCBNaW5pbWl6ZSwgUGFuZWxMZWZ0Q2xvc2UsIFBhbmVsTGVmdE9wZW4sIFJlZnJlc2hDdyB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVOdW1iZXIgfSBmcm9tIFwibW90aW9uLXBsdXMvcmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmlnSW50U3RyaW5nLCBOdW1lcmljU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2RhdGEvdHlwZS11dGlsc1wiO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlclRyaWdnZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9wb3BvdmVyXCI7XG5pbXBvcnQgeyBUYWJsZUhlYWQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVJbnNlcnQgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlUXVlcnkgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVVcGRhdGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGVcIjtcbmltcG9ydCB7IHVzZUZpbHRlcmluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1wYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNlbGVjdGlvblwiO1xuaW1wb3J0IHsgdXNlU29ydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2Utc29ydGluZ1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBDZWxsLCBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RIZWFkZXJDZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RSb3dDZWxsIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RSb3dDZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBGaWx0ZXJUcmVlIH0gZnJvbSBcIi4vRmlsdGVyVHJlZVwiO1xuaW1wb3J0IHsgRGF0YUdyaWQgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkXCI7XG5pbXBvcnQgeyBEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXIgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkSGVhZGVyXCI7XG5pbXBvcnQgeyBnZXRJbnB1dCB9IGZyb20gXCIuL2lucHV0L2dldC1pbnB1dFwiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCIuL2xpbmsvZ2V0LWxpbmtcIjtcbmltcG9ydCB7IFN0YWdlZFJvd3MgfSBmcm9tIFwiLi9TdGFnZWRSb3dzXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZlVGFibGVWaWV3UHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGl2ZVRhYmxlVmlldyhfcHJvcHM6IEFjdGl2ZVRhYmxlVmlld1Byb3BzKSB7XG4gIGNvbnN0IGlzTXV0YXRpbmcgPSBCb29sZWFuKHVzZUlzTXV0YXRpbmcoKSk7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IsIGlzRnVsbHNjcmVlbiwgdG9nZ2xlRnVsbHNjcmVlbiwgdG9nZ2xlTmF2aWdhdGlvbiwgaXNOYXZpZ2F0aW9uT3BlbiB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgc29ydGluZ1N0YXRlLCBzZXRTb3J0aW5nU3RhdGUgfSA9IHVzZVNvcnRpbmcoKTtcbiAgY29uc3QgeyBwYWdpbmF0aW9uU3RhdGUsIHNldFBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93c10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPihbXSk7XG4gIGNvbnN0IHsgYXBwbGllZEZpbHRlciwgc2V0QXBwbGllZEZpbHRlciwgZWRpdGluZ0ZpbHRlciwgc2V0RWRpdGluZ0ZpbHRlciwgdG90YWxFZGl0aW5nRmlsdGVycyB9ID0gdXNlRmlsdGVyaW5nKCk7XG5cbiAgY29uc3QgeyBkYXRhLCBpc0ZldGNoaW5nLCByZWZldGNoIH0gPSB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHtcbiAgICAuLi5wYWdpbmF0aW9uU3RhdGUsXG4gICAgc29ydE9yZGVyOiBzb3J0aW5nU3RhdGUsXG4gICAgZmlsdGVyOiBhcHBsaWVkRmlsdGVyLFxuICB9KTtcbiAgY29uc3QgeyBkZWxldGVTZWxlY3Rpb24sIGlzU2VsZWN0aW5nLCByb3dTZWxlY3Rpb25TdGF0ZSwgc2V0Um93U2VsZWN0aW9uU3RhdGUgfSA9IHVzZVNlbGVjdGlvbihkYXRhKTtcblxuICBjb25zdCByZWFkb25seSA9ICFPYmplY3QudmFsdWVzKGFjdGl2ZVRhYmxlPy5jb2x1bW5zID8/IHt9KS5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5pc0luUHJpbWFyeUtleSk7XG4gIGNvbnN0IGlzSW5zZXJ0aW5nID0gdXNlSXNJbnNlcnRpbmcoKTtcbiAgY29uc3QgaW5zZXJ0ID0gdXNlQWN0aXZlVGFibGVJbnNlcnQoKTtcbiAgY29uc3QgdXBkYXRlID0gdXNlQWN0aXZlVGFibGVVcGRhdGUoKTtcblxuICAvLyByZXNldCBpbnNlcnRSb3dzIHdoZW4gYWN0aXZlVGFibGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4gc2V0U3RhZ2VkUm93cyhbXSksIFthY3RpdmVUYWJsZV0pO1xuXG4gIGlmICghYWN0aXZlVGFibGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNhdmVTdGFnZWRSb3dzKCkge1xuICAgIGluc2VydC5tdXRhdGUoc3RhZ2VkUm93cywge1xuICAgICAgb25FcnJvcixcbiAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgdG9hc3Quc3VjY2VzcyhcIlJvd3MgaW5zZXJ0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuICAgICAgICBzZXRTdGFnZWRSb3dzKFtdKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBuZXdTdGFnZWRSb3coKSB7XG4gICAgLy8gVE9ETzogdGhlIG5ldyBvYmplY3Qgc2hvdWxkIGhhdmUgc29tZSB0aGluZ3Mgc2V0IHRvIG51bGwgaWYgdGhleSdyZSBudWxsYWJsZSBvciBoYXZlIGEgZGVmYXVsdCB2YWx1ZT9cbiAgICBzZXRTdGFnZWRSb3dzKChvbGQpID0+IFsuLi5vbGQsIHt9XSk7XG4gIH1cblxuICBmdW5jdGlvbiBkcm9wU3RhZ2VkUm93cygpIHtcbiAgICBzZXRTdGFnZWRSb3dzKFtdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNlbGxJbnB1dFN1Ym1pdCh2YWx1ZTogdW5rbm93biwgY29sdW1uOiBDb2x1bW4sIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB1cGRhdGUubXV0YXRlKHtcbiAgICAgIGRldGFpbHM6IHsgY2hhbmdlczogeyBbY29sdW1uLm5hbWVdOiB2YWx1ZSB9LCByb3csIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSxcbiAgICAgIG9wdGlvbnM6IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gb25GaWx0ZXJPcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pIHtcbiAgICBpZiAob3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgc2V0RWRpdGluZ0ZpbHRlcihhcHBsaWVkRmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0QXBwbGllZEZpbHRlcihlZGl0aW5nRmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyByZWFsIGNvbHVtbiBkZWZpbml0aW9ucyB0aGF0IGNvcnJlc3BvbmQgdG8gZGF0YWJhc2UgY29sdW1uc1xuICBjb25zdCBjb25jcmV0ZUNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKGFjdGl2ZVRhYmxlPy5jb2x1bW5zID8/IHt9KS5tYXAoKGNvbHVtbikgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogY29sdW1uLm5hbWUsXG4gICAgICBhY2Nlc3NvcktleTogY29sdW1uLm5hbWUsXG4gICAgICBtZXRhOiBjb2x1bW4sXG4gICAgICBoZWFkZXIoeyB0YWJsZSwgaGVhZGVyIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwgdGFibGU9e3RhYmxlfSBoZWFkZXI9e2hlYWRlcn0gey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgPERhdGFHcmlkSGVhZGVyIGhlYWRlcj17aGVhZGVyfSBjb2x1bW49e2NvbHVtbn0gLz5cbiAgICAgICAgICAgIDwvRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgY2VsbCh7IGNlbGwgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY29udGFpbmVyUHJvcHM9e3Byb3BzfVxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbiB9KX1cbiAgICAgICAgICAgIGxpbmtDb21wb25lbnQ9e0xpbmsoeyBjZWxsLCBjb2x1bW4gfSl9XG4gICAgICAgICAgICBpbnB1dENvbXBvbmVudD17Z2V0SW5wdXQoe1xuICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWUsIGNvbHVtbiwgY2VsbC5yb3cub3JpZ2luYWwpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgfSk7XG5cbiAgLy8gdGhlc2UgYXJlIGNvbHVtbnMgdGhhdCBleGlzdCB2aXJ0dWFsbHkgYW5kIGFyZSBub3QgZGIgY29sdW1uc1xuICBjb25zdCB2aXJ0dWFsQ29sdW1uRGVmcyA9IFtcbiAgICB7XG4gICAgICBpZDogXCJfX3BzX3NlbGVjdFwiLFxuICAgICAgYWNjZXNzb3JLZXk6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGVuYWJsZVBpbm5pbmc6IHRydWUsXG4gICAgICBlbmFibGVSZXNpemluZzogZmFsc2UsXG4gICAgICBlbmFibGVTb3J0aW5nOiBmYWxzZSxcbiAgICAgIHNpemU6IDM1LFxuICAgICAgbWluU2l6ZTogMzUsXG4gICAgICBoZWFkZXIoeyB0YWJsZSB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGFibGVIZWFkIHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBjZWxsKHsgcm93IH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDZWxsIHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgIDxTZWxlY3RSb3dDZWxsIHJvdz17cm93fSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgICAgICAgICA8L0NlbGw+XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXSBzYXRpc2ZpZXMgKENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gJiB7IGRpc2FibGVEcmFnZ2luZz86IGJvb2xlYW4gfSlbXTtcblxuICBjb25zdCBjb2x1bW5EZWZzID0gWy4uLmNvbmNyZXRlQ29sdW1uRGVmcywgLi4udmlydHVhbENvbHVtbkRlZnNdLnNvcnQoZGVmYXVsdENvbHVtblNvcnRpbmcpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtYmctc3R1ZGlvLWhlYWRlci1iYWNrZ3JvdW5kIHBzLWZsZXggcHMtdy1mdWxsIHBzLXAtMiBwcy1weS0zIHBzLWJvcmRlci1iIHBzLWJnLWNhcmQgcHMtcm91bmRlZC10LWxnXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbCBwcy1nYXAtMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWdyb3cgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17dG9nZ2xlTmF2aWdhdGlvbn0+XG4gICAgICAgICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gPyA8UGFuZWxMZWZ0Q2xvc2UgLz4gOiA8UGFuZWxMZWZ0T3BlbiAvPn1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxQb3BvdmVyIG9uT3BlbkNoYW5nZT17b25GaWx0ZXJPcGVuQ2hhbmdlfT5cbiAgICAgICAgICAgICAgICA8UG9wb3ZlclRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBjbGFzc05hbWU9e2NuKHRvdGFsRWRpdGluZ0ZpbHRlcnMgPiAwICYmIFwicHMtYm9yZGVyLXByaW1hcnlcIil9PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAge3RvdGFsRWRpdGluZ0ZpbHRlcnMgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuaW1hdGVOdW1iZXIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVyc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyQ29udGVudCBhbGlnbj1cInN0YXJ0XCIgc2lkZT1cImJvdHRvbVwiIGNsYXNzTmFtZT1cInBzLXctbWluIHBzLW1heC1oLVs1MjBweF0gcHMtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICA8RmlsdGVyVHJlZVxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI9e2VkaXRpbmdGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICAgIHNldEZpbHRlcj17c2V0RWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXRpbmdGaWx0ZXIoZmlsdGVyKTsgLy8gVXBkYXRlIHRoZSBlZGl0aW5nIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGFwcGxpZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgdGFibGU9e2FjdGl2ZVRhYmxlfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJDb250ZW50PlxuICAgICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtuZXdTdGFnZWRSb3d9IGRpc2FibGVkPXtpc0luc2VydGluZyA+IDB9PlxuICAgICAgICAgICAgICAgIEluc2VydCByb3dcbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIHtzdGFnZWRSb3dzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtzYXZlU3RhZ2VkUm93c30+XG4gICAgICAgICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgey8qIE5lZWRzIHNvbWUgaW1wcm92ZW1lbnQgKi99XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2Ryb3BTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzU2VsZWN0aW5nICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZGVsZXRlU2VsZWN0aW9ufT5cbiAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9eygpID0+IHZvaWQgcmVmZXRjaCgpfSBkaXNhYmxlZD17aXNGZXRjaGluZ30+XG4gICAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9e2NuKFwicHMtaC00IHBzLXctNFwiLCBpc0ZldGNoaW5nICYmIFwicHMtYW5pbWF0ZS1zcGluXCIpfSAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJpY29uXCIgb25DbGljaz17dG9nZ2xlRnVsbHNjcmVlbn0+XG4gICAgICAgICAgICAgICAge2lzRnVsbHNjcmVlbiA/IDxNaW5pbWl6ZSAvPiA6IDxNYXhpbWl6ZSAvPn1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxEYXRhR3JpZFxuICAgICAgICBjb2x1bW5EZWZzPXtjb2x1bW5EZWZzfVxuICAgICAgICBnZXRCZWZvcmVSb3dzPXsodGFibGUpID0+IDxTdGFnZWRSb3dzIHsuLi57IHRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH19IC8+fVxuICAgICAgICBpc0xvYWRpbmc9e2lzRmV0Y2hpbmd9XG4gICAgICAgIGlzUHJvY2Vzc2luZz17aXNNdXRhdGluZ31cbiAgICAgICAgb25QYWdpbmF0aW9uQ2hhbmdlPXtzZXRQYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlPXtzZXRSb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgb25Tb3J0aW5nQ2hhbmdlPXtzZXRTb3J0aW5nU3RhdGV9XG4gICAgICAgIHBhZ2VDb3VudD17Z2V0UGFnZUNvdW50KGRhdGE/LmZpbHRlcmVkUm93Q291bnQgPz8gSW5maW5pdHksIHBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSl9XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZT17cGFnaW5hdGlvblN0YXRlfVxuICAgICAgICByb3dzPXtkYXRhPy5yb3dzID8/IFtdfVxuICAgICAgICByb3dTZWxlY3Rpb25TdGF0ZT17cm93U2VsZWN0aW9uU3RhdGV9XG4gICAgICAgIHNvcnRpbmdTdGF0ZT17c29ydGluZ1N0YXRlfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFnZUNvdW50KHJvd0NvdW50OiBudW1iZXIgfCBiaWdpbnQgfCBOdW1lcmljU3RyaW5nIHwgQmlnSW50U3RyaW5nLCBwYWdlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJvd0NvdW50ID09PSBJbmZpbml0eSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhZ2VDb3VudCA9IE51bWJlcigoQmlnSW50KHJvd0NvdW50KSArIEJpZ0ludChwYWdlU2l6ZSkgLSBCaWdJbnQoMSkpIC8gQmlnSW50KHBhZ2VTaXplKSk7XG5cbiAgcmV0dXJuIE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhZ2VDb3VudCkgPyBwYWdlQ291bnQgOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdENvbHVtblNvcnRpbmcoYTogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiwgYjogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pikge1xuICBjb25zdCBhTWV0YSA9IGEubWV0YSBhcyBDb2x1bW4gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGJNZXRhID0gYi5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcblxuICBpZiAoYS5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiIHx8IGIuaWQgPT09IFwiX19wc19zZWxlY3RcIikge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgaWYgKGFNZXRhID09PSB1bmRlZmluZWQgfHwgYk1ldGEgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAwOyAvLyBjYW4ndCBiZSBjb21wYXJlZCwgc2hvdWxkbid0IGhhcHBlblxuICB9XG5cbiAgaWYgKGFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmICFiTWV0YS5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoIWFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmIGJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gYU1ldGEubmFtZS5sb2NhbGVDb21wYXJlKGJNZXRhLm5hbWUpO1xufVxuIiwgImltcG9ydCB7IENhbWVsVG9QYXNjYWwgfSBmcm9tICcuL3V0aWxpdHktdHlwZXMnO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBrZWJhYiBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBrZWJhYml6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0tlYmFiQ2FzZSA9IChzdHJpbmc6IHN0cmluZykgPT5cbiAgc3RyaW5nLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGNhbWVsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGNhbWVsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvQ2FtZWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCkgPT5cbiAgc3RyaW5nLnJlcGxhY2UoL14oW0EtWl0pfFtcXHMtX10rKFxcdykvZywgKG1hdGNoLCBwMSwgcDIpID0+XG4gICAgcDIgPyBwMi50b1VwcGVyQ2FzZSgpIDogcDEudG9Mb3dlckNhc2UoKSxcbiAgKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gcGFzY2FsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHBhc2NhbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b1Bhc2NhbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKTogQ2FtZWxUb1Bhc2NhbDxUPiA9PiB7XG4gIGNvbnN0IGNhbWVsQ2FzZSA9IHRvQ2FtZWxDYXNlKHN0cmluZyk7XG5cbiAgcmV0dXJuIChjYW1lbENhc2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjYW1lbENhc2Uuc2xpY2UoMSkpIGFzIENhbWVsVG9QYXNjYWw8VD47XG59O1xuXG4vKipcbiAqIE1lcmdlcyBjbGFzc2VzIGludG8gYSBzaW5nbGUgc3RyaW5nXG4gKlxuICogQHBhcmFtIHthcnJheX0gY2xhc3Nlc1xuICogQHJldHVybnMge3N0cmluZ30gQSBzdHJpbmcgb2YgY2xhc3Nlc1xuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc2VzID0gPENsYXNzVHlwZSA9IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+KC4uLmNsYXNzZXM6IENsYXNzVHlwZVtdKSA9PlxuICBjbGFzc2VzXG4gICAgLmZpbHRlcigoY2xhc3NOYW1lLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIEJvb2xlYW4oY2xhc3NOYW1lKSAmJlxuICAgICAgICAoY2xhc3NOYW1lIGFzIHN0cmluZykudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICBhcnJheS5pbmRleE9mKGNsYXNzTmFtZSkgPT09IGluZGV4XG4gICAgICApO1xuICAgIH0pXG4gICAgLmpvaW4oJyAnKVxuICAgIC50cmltKCk7XG4iLCAiZXhwb3J0IGRlZmF1bHQge1xuICB4bWxuczogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgd2lkdGg6IDI0LFxuICBoZWlnaHQ6IDI0LFxuICB2aWV3Qm94OiAnMCAwIDI0IDI0JyxcbiAgZmlsbDogJ25vbmUnLFxuICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICBzdHJva2VXaWR0aDogMixcbiAgc3Ryb2tlTGluZWNhcDogJ3JvdW5kJyxcbiAgc3Ryb2tlTGluZWpvaW46ICdyb3VuZCcsXG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVmYXVsdEF0dHJpYnV0ZXMgZnJvbSAnLi9kZWZhdWx0QXR0cmlidXRlcyc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcyB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcblxuaW50ZXJmYWNlIEljb25Db21wb25lbnRQcm9wcyBleHRlbmRzIEx1Y2lkZVByb3BzIHtcbiAgaWNvbk5vZGU6IEljb25Ob2RlO1xufVxuXG4vKipcbiAqIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICpcbiAqIEBjb21wb25lbnQgSWNvblxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY29sb3IgLSBUaGUgY29sb3Igb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zaXplIC0gVGhlIHNpemUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zdHJva2VXaWR0aCAtIFRoZSBzdHJva2Ugd2lkdGggb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuYWJzb2x1dGVTdHJva2VXaWR0aCAtIFdoZXRoZXIgdG8gdXNlIGFic29sdXRlIHN0cm9rZSB3aWR0aFxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNsYXNzTmFtZSAtIFRoZSBjbGFzcyBuYW1lIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5jaGlsZHJlbiAtIFRoZSBjaGlsZHJlbiBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuaWNvbk5vZGUgLSBUaGUgaWNvbiBub2RlIG9mIHRoZSBpY29uXG4gKlxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgSWNvbiA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvbkNvbXBvbmVudFByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzaXplID0gMjQsXG4gICAgICBzdHJva2VXaWR0aCA9IDIsXG4gICAgICBhYnNvbHV0ZVN0cm9rZVdpZHRoLFxuICAgICAgY2xhc3NOYW1lID0gJycsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgLi4ucmVzdFxuICAgIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAgICdzdmcnLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIC4uLmRlZmF1bHRBdHRyaWJ1dGVzLFxuICAgICAgICB3aWR0aDogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLFxuICAgICAgICBzdHJva2U6IGNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aDogYWJzb2x1dGVTdHJva2VXaWR0aCA/IChOdW1iZXIoc3Ryb2tlV2lkdGgpICogMjQpIC8gTnVtYmVyKHNpemUpIDogc3Ryb2tlV2lkdGgsXG4gICAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKCdsdWNpZGUnLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgLi4uaWNvbk5vZGUubWFwKChbdGFnLCBhdHRyc10pID0+IGNyZWF0ZUVsZW1lbnQodGFnLCBhdHRycykpLFxuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl0pLFxuICAgICAgXSxcbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzLCB0b0tlYmFiQ2FzZSB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcblxuLyoqXG4gKiBDcmVhdGUgYSBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpY29uTmFtZVxuICogQHBhcmFtIHthcnJheX0gaWNvbk5vZGVcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IGNyZWF0ZUx1Y2lkZUljb24gPSAoaWNvbk5hbWU6IHN0cmluZywgaWNvbk5vZGU6IEljb25Ob2RlKSA9PiB7XG4gIGNvbnN0IENvbXBvbmVudCA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgTHVjaWRlUHJvcHM+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PlxuICAgIGNyZWF0ZUVsZW1lbnQoSWNvbiwge1xuICAgICAgcmVmLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcyhgbHVjaWRlLSR7dG9LZWJhYkNhc2UoaWNvbk5hbWUpfWAsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KSxcbiAgKTtcblxuICBDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgJHtpY29uTmFtZX1gO1xuXG4gIHJldHVybiBDb21wb25lbnQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVMdWNpZGVJY29uO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dEb3duV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBeE5pQTBJRFFnTkMwMElpQXZQZ29nSUR4d1lYUm9JR1E5SWswM0lESXdWalFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURSb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRGhvTnlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9OQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93RG93bldpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd0Rvd25XaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyAxNiA0IDQgNC00Jywga2V5OiAnMWNvNndqJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgMjBWNCcsIGtleTogJzF5b3hlYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSA0aDEwJywga2V5OiAnMXc4N2djJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDhoNycsIGtleTogJ2RqeWUzNCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmg0Jywga2V5OiAncTh0aWg0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd0Rvd25XaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dSaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTlNBeE1tZ3hOQ0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNVElnTlNBM0lEY3ROeUEzSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dSaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTUgMTJoMTQnLCBrZXk6ICcxYXlzMGgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTIgNSA3IDctNyA3Jywga2V5OiAneHF1ejRjJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dVcFdpZGVOYXJyb3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE15QTRJRFF0TkNBMElEUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUY2dOSFl4TmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9NVEFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURFMmFEY2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREl3YURRaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Fycm93LXVwLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dVcFdpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd1VwV2lkZU5hcnJvdycsIFtcbiAgWydwYXRoJywgeyBkOiAnbTMgOCA0LTQgNCA0Jywga2V5OiAnMTF3bDd1JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgNHYxNicsIGtleTogJzFnbGZjeCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmgxMCcsIGtleTogJzE0MzhqaScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxNmg3Jywga2V5OiAndW9zaXN2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDIwaDQnLCBrZXk6ICcxa3JjMzInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93VXBXaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hlY2tcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOaUE1SURFM2JDMDFMVFVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hlY2tcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGVjayA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZWNrJywgW1sncGF0aCcsIHsgZDogJ00yMCA2IDkgMTdsLTUtNScsIGtleTogJzFnbWYyYycgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2s7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TmlBNUlEWWdOaUEyTFRZaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tZG93blxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25Eb3duID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkRvd24nLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDkgNiA2IDYtNicsIGtleTogJ3FydW5zbCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkRvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVZ01UZ3ROaTAySURZdE5pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25MZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTUgMTgtNi02IDYtNicsIGtleTogJzF3bmZnMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE9TQXhPQ0EyTFRZdE5pMDJJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblJpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblJpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtOSAxOCA2LTYtNi02Jywga2V5OiAnbXRoaHdxJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UZ2dNVFV0TmkwMkxUWWdOaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi11cFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25VcCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25VcCcsIFtbJ3BhdGgnLCB7IGQ6ICdtMTggMTUtNi02LTYgNicsIGtleTogJzE1M3VkeicgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvblVwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbnNMZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVEVnTVRjdE5TMDFJRFV0TlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UY3ROUzAxSURVdE5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9ucy1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNMZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNMZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTEgMTctNS01IDUtNScsIGtleTogJzEzemhhZicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xOCAxNy01LTUgNS01Jywga2V5OiAnaDhhOGV0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc0xlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc1JpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUF4TnlBMUxUVXROUzAxSWlBdlBnb2dJRHh3WVhSb0lHUTlJbTB4TXlBeE55QTFMVFV0TlMwMUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNSaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25zUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDE3IDUtNS01LTUnLCBrZXk6ICd4bmp3cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xMyAxNyA1LTUtNS01Jywga2V5OiAnMTd4bW1mJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlSGVscFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT1M0d09TQTVZVE1nTXlBd0lEQWdNU0ExTGpneklERmpNQ0F5TFRNZ015MHpJRE1pSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV5SURFM2FDNHdNU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2lyY2xlLWhlbHBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGVIZWxwID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlSGVscCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzJywga2V5OiAnMXU3NzNzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3aC4wMScsIGtleTogJ3AzMnAwNScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlSGVscDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZScsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3B5XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRRaUlHaGxhV2RvZEQwaU1UUWlJSGc5SWpnaUlIazlJamdpSUhKNFBTSXlJaUJ5ZVQwaU1pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk5DQXhObU10TVM0eElEQXRNaTB1T1MweUxUSldOR013TFRFdU1TNDVMVElnTWkweWFERXdZekV1TVNBd0lESWdMamtnTWlBeUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NvcHlcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDb3B5ID0gY3JlYXRlTHVjaWRlSWNvbignQ29weScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE0JywgaGVpZ2h0OiAnMTQnLCB4OiAnOCcsIHk6ICc4Jywgcng6ICcyJywgcnk6ICcyJywga2V5OiAnMTdqeWVhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTQgMTZjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMicsIGtleTogJ3ppeDl1ZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENvcm5lckRvd25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVd4cGJtVWdjRzlwYm5SelBTSTVJREV3SURRZ01UVWdPU0F5TUNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05IWTNZVFFnTkNBd0lEQWdNUzAwSURSSU5DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3JuZXItZG93bi1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29ybmVyRG93bkxlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDb3JuZXJEb3duTGVmdCcsIFtcbiAgWydwb2x5bGluZScsIHsgcG9pbnRzOiAnOSAxMCA0IDE1IDkgMjAnLCBrZXk6ICdyM2pwcnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjAgNHY3YTQgNCAwIDAgMS00IDRINCcsIGtleTogJzZvNWI3bCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29ybmVyRG93bkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBGaWx0ZXJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHOXNlV2R2YmlCd2IybHVkSE05SWpJeUlETWdNaUF6SURFd0lERXlMalEySURFd0lERTVJREUwSURJeElERTBJREV5TGpRMklESXlJRE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvZmlsdGVyXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgRmlsdGVyID0gY3JlYXRlTHVjaWRlSWNvbignRmlsdGVyJywgW1xuICBbJ3BvbHlnb24nLCB7IHBvaW50czogJzIyIDMgMiAzIDEwIDEyLjQ2IDEwIDE5IDE0IDIxIDE0IDEyLjQ2IDIyIDMnLCBrZXk6ICcxeWc3N2YnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEdyaXBWZXJ0aWNhbFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJNUlpQmplVDBpTVRJaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJalVpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlPU0lnWTNrOUlqRTVJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU1UVWlJR041UFNJMUlpQnlQU0l4SWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpFMUlpQmplVDBpTVRraUlISTlJakVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvZ3JpcC12ZXJ0aWNhbFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEdyaXBWZXJ0aWNhbCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0dyaXBWZXJ0aWNhbCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnMTInLCByOiAnMScsIGtleTogJzF2Y3RnZicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzUnLCByOiAnMScsIGtleTogJ2hwMHRjZicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdma2pqZjYnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnMTInLCByOiAnMScsIGtleTogJzF0bWFpaicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICcxOWwyOGUnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnMTknLCByOiAnMScsIGtleTogJ2Y0em9qMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgR3JpcFZlcnRpY2FsO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgS2V5Um91bmRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1pNDFPRFlnTVRjdU5ERTBRVElnTWlBd0lEQWdNQ0F5SURFNExqZ3lPRll5TVdFeElERWdNQ0F3SURBZ01TQXhhRE5oTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFERmhNU0F4SURBZ01DQXdJREV0TVhZdE1XRXhJREVnTUNBd0lERWdNUzB4YUM0eE56SmhNaUF5SURBZ01DQXdJREV1TkRFMExTNDFPRFpzTGpneE5DMHVPREUwWVRZdU5TQTJMalVnTUNBeElEQXROQzAwZWlJZ0x6NEtJQ0E4WTJseVkyeGxJR040UFNJeE5pNDFJaUJqZVQwaU55NDFJaUJ5UFNJdU5TSWdabWxzYkQwaVkzVnljbVZ1ZEVOdmJHOXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9rZXktcm91bmRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBLZXlSb3VuZCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0tleVJvdW5kJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNMi41ODYgMTcuNDE0QTIgMiAwIDAgMCAyIDE4LjgyOFYyMWExIDEgMCAwIDAgMSAxaDNhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xaDFhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xaC4xNzJhMiAyIDAgMCAwIDEuNDE0LS41ODZsLjgxNC0uODE0YTYuNSA2LjUgMCAxIDAtNC00eicsXG4gICAgICBrZXk6ICcxczZ0N3QnLFxuICAgIH0sXG4gIF0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE2LjUnLCBjeTogJzcuNScsIHI6ICcuNScsIGZpbGw6ICdjdXJyZW50Q29sb3InLCBrZXk6ICd3MGVrcGcnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEtleVJvdW5kO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTWF4aW1pemVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWXpJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0E0VmpWaE1pQXlJREFnTUNBd0xUSXRNbWd0TXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE5uWXpZVElnTWlBd0lEQWdNQ0F5SURKb015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UWWdNakZvTTJFeUlESWdNQ0F3SURBZ01pMHlkaTB6SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWF4aW1pemVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNYXhpbWl6ZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ01heGltaXplJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAzSDVhMiAyIDAgMCAwLTIgMnYzJywga2V5OiAnMWRjbWl0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDhWNWEyIDIgMCAwIDAtMi0yaC0zJywga2V5OiAnMWU0Z3QzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTZ2M2EyIDIgMCAwIDAgMiAyaDMnLCBrZXk6ICd3c2w1c2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMjFoM2EyIDIgMCAwIDAgMi0ydi0zJywga2V5OiAnMTh0cmVrJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNYXhpbWl6ZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1pbmltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6ZGpOaE1pQXlJREFnTUNBeExUSWdNa2d6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNGFDMHpZVElnTWlBd0lEQWdNUzB5TFRKV015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObWd6WVRJZ01pQXdJREFnTVNBeUlESjJNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGMkxUTmhNaUF5SURBZ01DQXhJREl0TW1neklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21pbmltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWluaW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNaW5pbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM3YzYTIgMiAwIDAgMS0yIDJIMycsIGtleTogJ2hvaGJ0cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4aC0zYTIgMiAwIDAgMS0yLTJWMycsIGtleTogJzVqdzFmMycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2aDNhMiAyIDAgMCAxIDIgMnYzJywga2V5OiAnMTk4dHZyJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxdi0zYTIgMiAwIDAgMSAyLTJoMycsIGtleTogJ3BoOG14cCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWluaW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeE9Fd3hNaUF5TWt3eE5pQXhPQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ01vdmVEb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxOEwxMiAyMkwxNiAxOCcsIGtleTogJ2Nza3ZmdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1vdmVVcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBMlRERXlJREpNTVRZZ05pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNbFl5TWlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdmUtdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlVXAnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDZMMTIgMkwxNiA2Jywga2V5OiAnMXl2a3l4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDJWMjInLCBrZXk6ICdyODlyemsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vdmVVcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdENsb3NlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMklERTFMVE10TXlBekxUTWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGFuZWxMZWZ0Q2xvc2UgPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRDbG9zZScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNiAxNS0zLTMgMy0zJywga2V5OiAnMTR5OTl6JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbExlZnRDbG9zZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdE9wZW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNUlETjJNVGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEUwSURrZ015QXpMVE1nTXlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BhbmVsLWxlZnQtb3BlblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdE9wZW4gPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRPcGVuJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOSAzdjE4Jywga2V5OiAnZmgzaHFhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE0IDkgMyAzLTMgMycsIGtleTogJzgwMTBlZScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0T3BlbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpbk9mZlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFVnT1M0ek5GWTNZVEVnTVNBd0lEQWdNU0F4TFRFZ01pQXlJREFnTUNBd0lEQXRORWczTGpnNUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weUlESWdNakFnTWpBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRrZ09YWXhMamMyWVRJZ01pQXdJREFnTVMweExqRXhJREV1Tnpsc0xURXVOemd1T1VFeUlESWdNQ0F3SURBZ05TQXhOUzR5TkZZeE5tRXhJREVnTUNBd0lEQWdNU0F4YURFeElpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3Bpbi1vZmZcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQaW5PZmYgPSBjcmVhdGVMdWNpZGVJY29uKCdQaW5PZmYnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN3Y1Jywga2V5OiAnYmIxZHU5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE1IDkuMzRWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRINy44OScsIGtleTogJ3pud256cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20yIDIgMjAgMjAnLCBrZXk6ICcxb29ld3knIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSA5djEuNzZhMiAyIDAgMCAxLTEuMTEgMS43OWwtMS43OC45QTIgMiAwIDAgMCA1IDE1LjI0VjE2YTEgMSAwIDAgMCAxIDFoMTEnLFxuICAgICAga2V5OiAnYzlxaG0yJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbk9mZjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpblxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PU0F4TUM0M05tRXlJRElnTUNBd0lERXRNUzR4TVNBeExqYzViQzB4TGpjNExqbEJNaUF5SURBZ01DQXdJRFVnTVRVdU1qUldNVFpoTVNBeElEQWdNQ0F3SURFZ01XZ3hNbUV4SURFZ01DQXdJREFnTVMweGRpMHVOelpoTWlBeUlEQWdNQ0F3TFRFdU1URXRNUzQzT1d3dE1TNDNPQzB1T1VFeUlESWdNQ0F3SURFZ01UVWdNVEF1TnpaV04yRXhJREVnTUNBd0lERWdNUzB4SURJZ01pQXdJREFnTUNBd0xUUklPR0V5SURJZ01DQXdJREFnTUNBMElERWdNU0F3SURBZ01TQXhJREY2SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGluXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluID0gY3JlYXRlTHVjaWRlSWNvbignUGluJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDEwLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LS43NmEyIDIgMCAwIDAtMS4xMS0xLjc5bC0xLjc4LS45QTIgMiAwIDAgMSAxNSAxMC43NlY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg4YTIgMiAwIDAgMCAwIDQgMSAxIDAgMCAxIDEgMXonLFxuICAgICAga2V5OiAnMW5rejhiJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFJlZnJlc2hDd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE1tRTVJRGtnTUNBd0lERWdPUzA1SURrdU56VWdPUzQzTlNBd0lEQWdNU0EyTGpjMElESXVOelJNTWpFZ09DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qRWdNM1kxYUMwMUlpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQXhNbUU1SURrZ01DQXdJREV0T1NBNUlEa3VOelVnT1M0M05TQXdJREFnTVMwMkxqYzBMVEl1TnpSTU15QXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5PQ0F4TmtnemRqVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9yZWZyZXNoLWN3XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUmVmcmVzaEN3ID0gY3JlYXRlTHVjaWRlSWNvbignUmVmcmVzaEN3JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOCcsIGtleTogJ3Y5aDV2YycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSAzdjVoLTUnLCBrZXk6ICcxcTd0bzAnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgMTJhOSA5IDAgMCAxLTkgOSA5Ljc1IDkuNzUgMCAwIDEtNi43NC0yLjc0TDMgMTYnLCBrZXk6ICczdWlmbDMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxNkgzdjUnLCBrZXk6ICcxY3Y2NzgnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnJlc2hDdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFRhYmxlMlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT1NBelNEVmhNaUF5SURBZ01DQXdMVElnTW5ZMGJUWXRObWd4TUdFeUlESWdNQ0F3SURFZ01pQXlkalJOT1NBemRqRTRiVEFnTUdneE1HRXlJRElnTUNBd0lEQWdNaTB5VmpsTk9TQXlNVWcxWVRJZ01pQXdJREFnTVMweUxUSldPVzB3SURCb01UZ2lJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy90YWJsZS0yXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgVGFibGUyID0gY3JlYXRlTHVjaWRlSWNvbignVGFibGUyJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAzSDVhMiAyIDAgMCAwLTIgMnY0bTYtNmgxMGEyIDIgMCAwIDEgMiAydjRNOSAzdjE4bTAgMGgxMGEyIDIgMCAwIDAgMi0yVjlNOSAyMUg1YTIgMiAwIDAgMS0yLTJWOW0wIDBoMTgnLFxuICAgICAga2V5OiAnZ3VnajgzJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlMjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFhcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1UZ2dOaUEySURFNElpQXZQZ29nSUR4d1lYUm9JR1E5SW0wMklEWWdNVElnTVRJaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3hcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBYID0gY3JlYXRlTHVjaWRlSWNvbignWCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTE4IDYgNiAxOCcsIGtleTogJzFibDVmOCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ202IDYgMTIgMTInLCBrZXk6ICdkOGJrNnYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFg7XG4iLCAiaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBiYWRnZVZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1weC0yLjUgcHMtcHktMC41IHBzLXRleHQteHMgcHMtZm9udC1zZW1pYm9sZCBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0yIGZvY3VzOnBzLXJpbmctcmluZyBmb2N1czpwcy1yaW5nLW9mZnNldC0yXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzgwXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgIFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvODBcIixcbiAgICAgICAgb3V0bGluZTogXCJwcy10ZXh0LWZvcmVncm91bmRcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhZGdlUHJvcHMgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIFZhcmlhbnRQcm9wczx0eXBlb2YgYmFkZ2VWYXJpYW50cz4ge31cblxuZnVuY3Rpb24gQmFkZ2UoeyBjbGFzc05hbWUsIHZhcmlhbnQsIC4uLnByb3BzIH06IEJhZGdlUHJvcHMpIHtcbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbihiYWRnZVZhcmlhbnRzKHsgdmFyaWFudCB9KSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgQmFkZ2UsIGJhZGdlVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGJ1dHRvblZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1nYXAtMiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLXByaW1hcnkvOTBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6IFwicHMtYmctZGVzdHJ1Y3RpdmUgcHMtdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1kZXN0cnVjdGl2ZS85MFwiLFxuICAgICAgICBvdXRsaW5lOlxuICAgICAgICAgIFwicHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1hY2NlbnQgaG92ZXI6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwicHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLXNlY29uZGFyeS84MFwiLFxuICAgICAgICBnaG9zdDogXCJob3Zlcjpwcy1iZy1hY2NlbnQgaG92ZXI6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBsaW5rOiBcInBzLXRleHQtcHJpbWFyeSBwcy11bmRlcmxpbmUtb2Zmc2V0LTQgaG92ZXI6cHMtdW5kZXJsaW5lXCIsXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWgtOSBwcy1weC00IHBzLXB5LTJcIixcbiAgICAgICAgeHM6IFwicHMtaC02IHBzLXJvdW5kZWQtbWQgcHMtcHgtMiBwcy10ZXh0LXhzXCIsXG4gICAgICAgIHNtOiBcInBzLWgtOCBwcy1yb3VuZGVkLW1kIHBzLXB4LTMgcHMtdGV4dC14c1wiLFxuICAgICAgICBsZzogXCJwcy1oLTEwIHBzLXJvdW5kZWQtbWQgcHMtcHgtOFwiLFxuICAgICAgICBpY29uOiBcInBzLWgtOSBwcy13LTlcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgICAgc2l6ZTogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uUHJvcHNcbiAgZXh0ZW5kcyBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz4ge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgQnV0dG9uUHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIHZhcmlhbnQsIHNpemUsIGFzQ2hpbGQgPSBmYWxzZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIjtcbiAgICByZXR1cm4gPENvbXAgY2xhc3NOYW1lPXtjbihidXR0b25WYXJpYW50cyh7IHZhcmlhbnQsIHNpemUsIGNsYXNzTmFtZSB9KSl9IHJlZj17cmVmfSB7Li4ucHJvcHN9IC8+O1xuICB9LFxuKTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQnV0dG9uXCI7XG5cbmV4cG9ydCB7IEJ1dHRvbiwgYnV0dG9uVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFBvcG92ZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFBvcG92ZXJUcmlnZ2VyID0gUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBQb3BvdmVyQW5jaG9yID0gUG9wb3ZlclByaW1pdGl2ZS5BbmNob3I7XG5cbmNvbnN0IFBvcG92ZXJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtdy03MiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtNCBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtcG9wb3Zlci1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFBvcG92ZXIsIFBvcG92ZXJUcmlnZ2VyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlckFuY2hvciB9O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtdy1mdWxsIHBzLW92ZXJmbG93LWF1dG8gcHMtZmxleCBwcy1pdGVtcy1zdGFydCBwcy1oLWZ1bGxcIj5cbiAgICAgIDx0YWJsZSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLXctZnVsbCBwcy1jYXB0aW9uLWJvdHRvbSBwcy10ZXh0LXNtXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgICA8L2Rpdj5cbiAgKSxcbik7XG5UYWJsZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVcIjtcblxuY29uc3QgVGFibGVIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRoZWFkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVIZWFkZXIuZGlzcGxheU5hbWUgPSBcIlRhYmxlSGVhZGVyXCI7XG5cbmNvbnN0IFRhYmxlQm9keSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRib2R5IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwiWyZfdHI6bGFzdC1jaGlsZF06cHMtYm9yZGVyLTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9IFwiVGFibGVCb2R5XCI7XG5cbmNvbnN0IFRhYmxlRm9vdGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGZvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWJvcmRlci10IHBzLWJnLW11dGVkLzUwIHBzLWZvbnQtbWVkaXVtIFsmPnRyXTpsYXN0OnBzLWJvcmRlci1iLTBcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUZvb3RlclwiO1xuXG5jb25zdCBUYWJsZVJvdyA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlUm93RWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlUm93RWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0clxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWJvcmRlci1iIHBzLXRyYW5zaXRpb24tY29sb3JzIGhvdmVyOnBzLWJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpwcy1iZy1tdXRlZFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVSb3cuZGlzcGxheU5hbWUgPSBcIlRhYmxlUm93XCI7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRoSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGhcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWgtMTAgcHMtcHgtMiBwcy10ZXh0LWxlZnQgcHMtYWxpZ24tbWlkZGxlIHBzLWZvbnQtbWVkaXVtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVIZWFkLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRcIjtcblxuY29uc3QgVGFibGVDZWxsID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudCwgUmVhY3QuVGRIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtYWxpZ24tbWlkZGxlXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVDZWxsLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNlbGxcIjtcblxuY29uc3QgVGFibGVDYXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8Y2FwdGlvbiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLW10LTQgcHMtdGV4dC1zbSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQ2FwdGlvbi5kaXNwbGF5TmFtZSA9IFwiVGFibGVDYXB0aW9uXCI7XG5cbmV4cG9ydCB7IFRhYmxlLCBUYWJsZUhlYWRlciwgVGFibGVCb2R5LCBUYWJsZUZvb3RlciwgVGFibGVIZWFkLCBUYWJsZVJvdywgVGFibGVDZWxsLCBUYWJsZUNhcHRpb24gfTtcbiIsICJpbXBvcnQgeyBRdWVyeUtleSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGFkZFJvd0lkVG9SZXN1bHQgfSBmcm9tIFwiLi91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVJbnNlcnQoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIGNvbnN0IHsgc2NoZW1hID0gbnVsbCwgbmFtZTogdGFibGUgPSBudWxsIH0gPSBhY3RpdmVUYWJsZSA/PyB7fTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uS2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcImluc2VydFwiXSxcbiAgICBhc3luYyBtdXRhdGlvbkZuKHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIuaW5zZXJ0KHsgcm93cywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LCB7fSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFkZFJvd0lkVG9SZXN1bHQocmVzdWx0LCBhY3RpdmVUYWJsZSEpO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKG5ld0RhdGEpIHtcbiAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJpZXNEYXRhPEFkYXB0ZXJRdWVyeVJlc3VsdD4oXG4gICAgICAgIHtcbiAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgLy8gaGVyZSB3ZSBwYXJ0aWFsbHkgbWF0Y2ggdGhlIHF1ZXJ5IGtleSB0byBnZXQgdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgICB9LFxuICAgICAgICAob2xkRGF0YSkgPT4ge1xuICAgICAgICAgIGlmIChvbGREYXRhID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvbGREYXRhO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5vbGREYXRhLFxuICAgICAgICAgICAgcm93czogWy4uLm5ld0RhdGEucm93cywgLi4ub2xkRGF0YS5yb3dzXSxcbiAgICAgICAgICB9IHNhdGlzZmllcyBBZGFwdGVyUXVlcnlSZXN1bHQ7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeUNsaWVudCwgUXVlcnlDbGllbnRQcm92aWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCB7IFJlYWN0UXVlcnlEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgVG9hc3RlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3Nvbm5lclwiO1xuaW1wb3J0IHsgTnVxc0hhc2hBZGFwdGVyIH0gZnJvbSBcIi4vTnVxc0hhc2hBZGFwdGVyXCI7XG5pbXBvcnQgeyBTdHVkaW9UZWxlbWV0cnlFdmVudCB9IGZyb20gXCIuL1N0dWRpb1wiO1xuXG4vKipcbiAqIFN0dWRpbyBjb250ZXh0IHZhbHVlIGludGVyZmFjZVxuICovXG5pbnRlcmZhY2UgU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgYWN0aXZlVGFibGU6IFRhYmxlIHwgbnVsbDtcbiAgYWN0aXZlU2NoZW1hOiBzdHJpbmc7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIHNldEFjdGl2ZVRhYmxlOiAodGFibGU6IFRhYmxlIHwgbnVsbCkgPT4gdm9pZDtcbiAgc2V0QWN0aXZlU2NoZW1hOiAoc2NoZW1hOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIGVtaXRUZWxlbWV0cnlFdmVudDogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xuICAvLyBVSSBzdGF0ZVxuICBpc0Z1bGxzY3JlZW46IGJvb2xlYW47XG4gIHRvZ2dsZUZ1bGxzY3JlZW46ICgpID0+IHZvaWQ7XG4gIGlzTmF2aWdhdGlvbk9wZW46IGJvb2xlYW47XG4gIHRvZ2dsZU5hdmlnYXRpb246ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KCk7XG5cbi8qKlxuICogQ29udGV4dCBmb3Igc2hhcmluZyBTdHVkaW8gc3RhdGUgYWNyb3NzIGNvbXBvbmVudHNcbiAqL1xuY29uc3QgU3R1ZGlvQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8U3R1ZGlvQ29udGV4dFZhbHVlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5leHBvcnQgdHlwZSBTdHVkaW9Db250ZXh0UHJvdmlkZXJQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59PjtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpb0NvbnRleHRQcm92aWRlcihwcm9wczogU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGVdID0gdXNlU3RhdGU8VGFibGUgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2FjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlU2NoZW1hXSA9IHVzZVN0YXRlPHN0cmluZz4ocHJvcHMuYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIpO1xuICBjb25zdCBbaXNGdWxsc2NyZWVuLCBzZXRJc0Z1bGxzY3JlZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNOYXZpZ2F0aW9uT3Blbiwgc2V0SXNOYXZpZ2F0aW9uT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICBsZXQgb25FcnJvciA9IHByb3BzLm9uRXJyb3I7XG4gIG9uRXJyb3IgPz89IChlcnJvcjogRXJyb3IpID0+IHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGVtaXRUZWxlbWV0cnlFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5vblRlbGVtZXRyeUV2ZW50ID8/ICgoKSA9PiB7fSk7XG4gIH0sIFtwcm9wcy5vblRlbGVtZXRyeUV2ZW50XSk7XG5cbiAgY29uc3QgdG9nZ2xlRnVsbHNjcmVlbiA9ICgpID0+IHNldElzRnVsbHNjcmVlbigocHJldikgPT4gIXByZXYpO1xuICBjb25zdCB0b2dnbGVOYXZpZ2F0aW9uID0gKCkgPT4gc2V0SXNOYXZpZ2F0aW9uT3BlbigocHJldikgPT4gIXByZXYpO1xuICByZXR1cm4gKFxuICAgIDxRdWVyeUNsaWVudFByb3ZpZGVyIGNsaWVudD17cXVlcnlDbGllbnR9PlxuICAgICAgPFJlYWN0UXVlcnlEZXZ0b29scyAvPlxuICAgICAgPFRvYXN0ZXIgLz5cbiAgICAgIDxOdXFzSGFzaEFkYXB0ZXI+XG4gICAgICAgIDxTdHVkaW9Db250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgIC4uLm90aGVyUHJvcHMsXG4gICAgICAgICAgICBhY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIGFjdGl2ZVNjaGVtYSxcbiAgICAgICAgICAgIGlzRnVsbHNjcmVlbixcbiAgICAgICAgICAgIHNldEFjdGl2ZVRhYmxlLFxuICAgICAgICAgICAgc2V0QWN0aXZlU2NoZW1hLFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCxcbiAgICAgICAgICAgIHRvZ2dsZUZ1bGxzY3JlZW4sXG4gICAgICAgICAgICBpc05hdmlnYXRpb25PcGVuLFxuICAgICAgICAgICAgdG9nZ2xlTmF2aWdhdGlvbixcbiAgICAgICAgICB9fVxuICAgICAgICA+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+IHtcbiAgICAgIGNvbnN0IHsgcm93czogY2FjaGVkUm93cyA9IFtdIH0gPSBjYWNoZWRSZXN1bHQgfHwge307XG5cbiAgICAgIGlmIChjYWNoZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZWRSb3dJbmRleCA9IGNhY2hlZFJvd3MuZmluZEluZGV4KChmaW5kZXIgPz89IGdldEZpbmRlckZuKCkpKTtcblxuICAgICAgaWYgKGNhY2hlZFJvd0luZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdSb3cgPSB1cGRhdGVyRm4oY2FjaGVkUm93c1tjYWNoZWRSb3dJbmRleF0hKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY2FjaGVkUmVzdWx0ISxcbiAgICAgICAgcm93czogWy4uLmNhY2hlZFJvd3Muc2xpY2UoMCwgY2FjaGVkUm93SW5kZXgpLCBuZXdSb3csIC4uLmNhY2hlZFJvd3Muc2xpY2UoY2FjaGVkUm93SW5kZXggKyAxKV0sXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgRmlsdGVyR3JvdXAgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEZpbHRlcjogRmlsdGVyR3JvdXAgPSB7XG4gIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgZmlsdGVyczogW10sXG4gIGFmdGVyOiBcImFuZFwiLFxuICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbn07XG5cbmNvbnN0IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZSA9IChmaWx0ZXJHcm91cDogRmlsdGVyR3JvdXApOiBudW1iZXIgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJHcm91cC5maWx0ZXJzKSB7XG4gICAgaWYgKGZpbHRlci5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgICAvLyBPbmx5IGNvdW50IGZpbHRlcnMgdGhhdCBoYXZlIGEgbm9uLWVtcHR5IGNvbHVtbiBzZWxlY3RlZFxuICAgICAgaWYgKGZpbHRlci5jb2x1bW4udHJpbSgpKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmaWx0ZXIua2luZCA9PT0gXCJGaWx0ZXJHcm91cFwiKSB7XG4gICAgICBjb3VudCArPSBjb3VudEZpbHRlcnNSZWN1cnNpdmUoZmlsdGVyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvdW50O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUZpbHRlcmluZygpIHtcbiAgY29uc3QgW2ZpbHRlclBhcmFtLCBzZXRGaWx0ZXJQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwiZmlsdGVyXCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGRlZmF1bHRGaWx0ZXIpLFxuICB9KTtcblxuICBjb25zdCBhcHBsaWVkRmlsdGVyID0gdXNlTWVtbygoKSA9PiBKU09OLnBhcnNlKGZpbHRlclBhcmFtKSBhcyBGaWx0ZXJHcm91cCwgW2ZpbHRlclBhcmFtXSk7XG4gIGNvbnN0IHNldEFwcGxpZWRGaWx0ZXIgPSAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZCBzZXRGaWx0ZXJQYXJhbShKU09OLnN0cmluZ2lmeShmaWx0ZXIpKTtcblxuICBjb25zdCBbZWRpdGluZ0ZpbHRlciwgc2V0RWRpdGluZ0ZpbHRlcl0gPSB1c2VTdGF0ZTxGaWx0ZXJHcm91cD4oYXBwbGllZEZpbHRlcik7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRFZGl0aW5nRmlsdGVyKGFwcGxpZWRGaWx0ZXIpO1xuICB9LCBbYXBwbGllZEZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvdGFsRWRpdGluZ0ZpbHRlcnMgPSB1c2VNZW1vKCgpID0+IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShlZGl0aW5nRmlsdGVyKSwgW2VkaXRpbmdGaWx0ZXJdKTtcblxuICByZXR1cm4ge1xuICAgIGFwcGxpZWRGaWx0ZXIsXG4gICAgc2V0QXBwbGllZEZpbHRlcixcbiAgICBlZGl0aW5nRmlsdGVyLFxuICAgIHNldEVkaXRpbmdGaWx0ZXIsXG4gICAgdG90YWxFZGl0aW5nRmlsdGVycyxcbiAgfTtcbn1cbiIsICIvLyB3ZSdyZSBlbnN1cmluZyB0aGF0IGtleXMgYXJlIHR5cGUtc2FmZS4gdGhlcmUgaXMgbm8gcHJvcGVyIHdheSB0byBhY2hpZXZlIGl0IGluIGBudXFzYC5cbi8vIHRoZSBgZGVjbGFyZSBtb2R1bGVgIHRlY2huaXF1ZSByZXN1bHRzIGluIGFkZGluZyBvdmVybG9hZHMsIG5vdCBvdmVycmlkaW5nIHRoZSBleGlzdGluZyBmdW5jdGlvbnMuXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCB7XG4gIHR5cGUgT3B0aW9ucyxcbiAgdHlwZSBQYXJzZXIsXG4gIHVzZVF1ZXJ5U3RhdGUgYXMgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVSZXR1cm4sXG4gIHVzZVF1ZXJ5U3RhdGVzIGFzIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzUmV0dXJuLFxufSBmcm9tIFwibnVxc1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5leHBvcnQgKiBmcm9tIFwibnVxc1wiO1xuXG5leHBvcnQgdHlwZSBTdGF0ZUtleSA9IFwicGFnZUluZGV4XCIgfCBcInBhZ2VTaXplXCIgfCBcInRhYmxlXCIgfCBcInNvcnRcIiB8IFwic2NoZW1hXCIgfCBcInRlc3RcIiB8IFwiZmlsdGVyXCI7XG5cbi8vIGxpZnRlZCBmcm9tIEBwcmlzbWEvY2xpZW50L3J1bnRpbWVcbnR5cGUgRXhhY3Q8QSwgVz4gPVxuICB8IChBIGV4dGVuZHMgdW5rbm93blxuICAgICAgPyBXIGV4dGVuZHMgQVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIFtLIGluIGtleW9mIEFdOiBFeGFjdDxBW0tdLCBXW0tdPjtcbiAgICAgICAgICB9XG4gICAgICAgIDogV1xuICAgICAgOiBuZXZlcilcbiAgfCAoQSBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB8IGJvb2xlYW4gfCBbXSA/IEEgOiBuZXZlcik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24ga2V5TWFwPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGtleU1hcDogRXhhY3Q8TWFwLCBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+LFxuKTogQnJhbmRlZEtleU1hcDxNYXA+IHtcbiAgcmV0dXJuIGtleU1hcCBhcyBuZXZlcjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1cmxLZXlzPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHVybEtleXM6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIHN0cmluZz4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiB1cmxLZXlzIGFzIG5ldmVyO1xufVxuXG5jb25zdCBfQlJBTkRfU1lNQk9MID0gU3ltYm9sKFwiQlJBTkRfU1lNQk9MXCIpO1xuXG50eXBlIEJyYW5kZWRLZXlNYXA8TWFwPiA9IE1hcCAmIHtcbiAgW0sgaW4gdHlwZW9mIF9CUkFORF9TWU1CT0xdOiBuZXZlcjtcbn07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4gJiB7XG4gICAgZGVmYXVsdFZhbHVlOiBUO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIG9wdGlvbnMucGFyc2U+PiwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogUGljazxVc2VRdWVyeVN0YXRlT3B0aW9uczxzdHJpbmc+LCBrZXlvZiBPcHRpb25zPixcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoa2V5OiBTdGF0ZUtleSk6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXksIG9wdGlvbnM/OiBhbnkpOiBhbnkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICByZXR1cm4gdXNlUXVlcnlTdGF0ZU9yaWdpbmFsKGtleSwgb3B0aW9ucyk7XG59XG5cbnR5cGUgVXNlUXVlcnlTdGF0ZXNLZXlzTWFwPFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4gPSBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4sXG4+ID0ge1xuICBbS2V5IGluIGtleW9mIE1hcF06IEtleU1hcFZhbHVlPE1hcFtLZXldPjtcbn07XG5cbnR5cGUgS2V5TWFwVmFsdWU8VHlwZT4gPSBQYXJzZXI8VHlwZT4gJlxuICBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZT86IFR5cGU7XG4gIH07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGVzPEtleU1hcCBleHRlbmRzIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcD4oXG4gIGtleU1hcDogQnJhbmRlZEtleU1hcDxLZXlNYXA+LFxuICBvcHRpb25zPzogUGFydGlhbDxVc2VRdWVyeVN0YXRlc09wdGlvbnM8S2V5TWFwPj4sXG4pOiBVc2VRdWVyeVN0YXRlc1JldHVybjxLZXlNYXA+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwoa2V5TWFwIGFzIG5ldmVyLCBvcHRpb25zKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG4vKipcbiAqIEhvb2sgdG8ga25vdyB3aGV0aGVyIGFuIGluc2VydCBpcyBjdXJyZW50bHkgb25nb2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzSW5zZXJ0aW5nKCkge1xuICByZXR1cm4gdXNlSXNNdXRhdGluZyh7XG4gICAgcHJlZGljYXRlKHsgb3B0aW9uczogeyBtdXRhdGlvbktleSB9IH0pIHtcbiAgICAgIHJldHVybiBtdXRhdGlvbktleT8uWzRdID09PSBcImluc2VydFwiO1xuICAgIH0sXG4gIH0pO1xufVxuIiwgImltcG9ydCB0eXBlIHsgT25DaGFuZ2VGbiwgUGFnaW5hdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsga2V5TWFwLCBwYXJzZUFzSW5kZXgsIHBhcnNlQXNJbnRlZ2VyLCB1c2VRdWVyeVN0YXRlcyB9IGZyb20gXCIuL251cXNcIjtcblxuLy8gVE9ETzogZXZlbnR1YWxseSBjb25maWd1cmFibGUgLyBjb250cm9sbGVkIGJ5IHVzZXIuIGJhYnkgc3RlcHMuLlxuY29uc3QgREVGQVVMVF9QQUdFX1NJWkUgPSAyNTtcblxuY29uc3QgcGFnaW5hdGlvblBhcnNlcnMgPSBrZXlNYXAoe1xuICBwYWdlSW5kZXg6IHBhcnNlQXNJbmRleC53aXRoRGVmYXVsdCgwKSwgLy8gemVyby1iYXNlZFxuICBwYWdlU2l6ZTogcGFyc2VBc0ludGVnZXIud2l0aERlZmF1bHQoREVGQVVMVF9QQUdFX1NJWkUpLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQYWdpbmF0aW9uKCkge1xuICBjb25zdCBbeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH0sIHNldFBhZ2luYXRpb25dID0gdXNlUXVlcnlTdGF0ZXMocGFnaW5hdGlvblBhcnNlcnMpO1xuXG4gIC8vIENvbXBhdGlibGUgd2l0aCBUYW5TdGFjayBUYWJsZSdzIE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPlxuICBjb25zdCBzZXRQYWdpbmF0aW9uU3RhdGU6IE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPiA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVyT3JWYWx1ZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHZvaWQgc2V0UGFnaW5hdGlvbigob2xkKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB1cGRhdGVyT3JWYWx1ZShvbGQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IG5ld1N0YXRlLnBhZ2VJbmRleCxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBuZXdTdGF0ZS5wYWdlU2l6ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZvaWQgc2V0UGFnaW5hdGlvbih7XG4gICAgICAgICAgcGFnZUluZGV4OiB1cGRhdGVyT3JWYWx1ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgcGFnZVNpemU6IHVwZGF0ZXJPclZhbHVlLnBhZ2VTaXplLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXRQYWdpbmF0aW9uXSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIHBhZ2luYXRpb25TdGF0ZTogeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH0sXG4gICAgc2V0UGFnaW5hdGlvblN0YXRlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlRGVsZXRlIH0gZnJvbSBcIi4vdXNlLWFjdGl2ZS10YWJsZS1kZWxldGVcIjtcbmltcG9ydCB7IHVzZVBhZ2luYXRpb24gfSBmcm9tIFwiLi91c2UtcGFnaW5hdGlvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0aW9uKGRhdGE6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBwYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3Jvd1NlbGVjdGlvblN0YXRlLCBzZXRSb3dTZWxlY3Rpb25TdGF0ZV0gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pO1xuICBjb25zdCBpc1NlbGVjdGluZyA9IE9iamVjdC5rZXlzKHJvd1NlbGVjdGlvblN0YXRlKS5sZW5ndGggIT09IDA7XG4gIGNvbnN0IHsgbXV0YXRlIH0gPSB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRSb3dTZWxlY3Rpb25TdGF0ZSh7fSksIFthY3RpdmVUYWJsZSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VJbmRleF0pO1xuXG4gIGZ1bmN0aW9uIGRlbGV0ZVNlbGVjdGlvbigpIHtcbiAgICBjb25zdCByb3dzID0gZGF0YT8ucm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgcmV0dXJuIHJvd1NlbGVjdGlvblN0YXRlW3Jvdy5fX3BzX3Jvd2lkIGFzIHN0cmluZ107XG4gICAgfSk7XG5cbiAgICBtdXRhdGUocm93cyA/PyBbXSwge1xuICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICBzZXRSb3dTZWxlY3Rpb25TdGF0ZSh7fSk7XG4gICAgICB9LFxuICAgICAgb25FcnJvcixcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVsZXRlU2VsZWN0aW9uLFxuICAgIHNldFJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIGlzU2VsZWN0aW5nLFxuICB9O1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5S2V5LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVEZWxldGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIGNvbnN0IHsgc2NoZW1hID0gbnVsbCwgbmFtZTogdGFibGUgPSBudWxsIH0gPSBhY3RpdmVUYWJsZSA/PyB7fTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uS2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcImRlbGV0ZVwiXSxcbiAgICBhc3luYyBtdXRhdGlvbkZuKHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIuZGVsZXRlKHsgcm93cywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LCB7fSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIGFzeW5jIG9uU3VjY2VzcygpIHtcbiAgICAgIGF3YWl0IHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHtcbiAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTb3J0aW5nKCkge1xuICAvLyBVc2UgbnVxcyB0byBtYW5hZ2Ugc29ydGluZyBzdGF0ZSBpbiBVUkxcbiAgY29uc3QgW3NvcnRQYXJhbSwgc2V0U29ydFBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJzb3J0XCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IFwiXCIsXG4gIH0pO1xuXG4gIC8vIFBhcnNlIHNvcnRpbmcgZnJvbSBVUkwgcGFyYW1ldGVyXG4gIGNvbnN0IHBhcnNlU29ydGluZyA9IChzb3J0UGFyYW06IHN0cmluZyB8IG51bGwpOiBTb3J0T3JkZXJJdGVtW10gPT4ge1xuICAgIGlmICghc29ydFBhcmFtKSByZXR1cm4gW107XG5cbiAgICB0cnkge1xuICAgICAgLy8gRm9ybWF0OiBjb2x1bW46ZGlyZWN0aW9uLGNvbHVtbjpkaXJlY3Rpb25cbiAgICAgIHJldHVybiBzb3J0UGFyYW1cbiAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgW2NvbHVtbiwgZGlyZWN0aW9uXSA9IGl0ZW0uc3BsaXQoXCI6XCIpO1xuICAgICAgICAgIGlmICghY29sdW1uIHx8ICFkaXJlY3Rpb24gfHwgIVtcImFzY1wiLCBcImRlc2NcIl0uaW5jbHVkZXMoZGlyZWN0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IGNvbHVtbiwgZGlyZWN0aW9uOiBkaXJlY3Rpb24gYXMgXCJhc2NcIiB8IFwiZGVzY1wiIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgU29ydE9yZGVySXRlbVtdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcGFyc2Ugc29ydGluZyBwYXJhbWV0ZXI6XCIsIGUpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfTtcblxuICAvLyBDcmVhdGUgYSBzdGFibGUgc29ydGluZyBzdGF0ZSB0aGF0J3MgZGVyaXZlZCBmcm9tIFVSTCBwYXJhbWV0ZXJzXG4gIGNvbnN0IFtzb3J0aW5nU3RhdGUsIHNldFNvcnRpbmdTdGF0ZV0gPSB1c2VTdGF0ZSgoKSA9PiBwYXJzZVNvcnRpbmcoc29ydFBhcmFtKSk7XG5cbiAgLy8gS2VlcCBpbnRlcm5hbCBzdGF0ZSBzeW5jaHJvbml6ZWQgd2l0aCBVUkwgcGFyYW1ldGVyc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5ld1NvcnRpbmdTdGF0ZSA9IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pO1xuICAgIHNldFNvcnRpbmdTdGF0ZShuZXdTb3J0aW5nU3RhdGUpO1xuICB9LCBbc29ydFBhcmFtXSk7XG5cbiAgLy8gVXBkYXRlIFVSTCB3aGVuIHNvcnRpbmcgY2hhbmdlcyBmcm9tIHRoZSBVSVxuICBjb25zdCBoYW5kbGVTb3J0aW5nQ2hhbmdlID0gKG5ld1N0YXRlOiBTb3J0T3JkZXJJdGVtW10gfCAoKG9sZDogU29ydE9yZGVySXRlbVtdKSA9PiBTb3J0T3JkZXJJdGVtW10pKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9IHR5cGVvZiBuZXdTdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gbmV3U3RhdGUoc29ydGluZ1N0YXRlKSA6IG5ld1N0YXRlO1xuICAgIHNldFNvcnRpbmdTdGF0ZShyZXNvbHZlZFN0YXRlKTtcblxuICAgIC8vIFNlcmlhbGl6ZSBzb3J0aW5nIHN0YXRlIHRvIFVSTCBwYXJhbWV0ZXJcbiAgICBjb25zdCBzb3J0U3RyaW5nID1cbiAgICAgIHJlc29sdmVkU3RhdGUubGVuZ3RoID4gMCA/IHJlc29sdmVkU3RhdGUubWFwKChpdGVtKSA9PiBgJHtpdGVtLmNvbHVtbn06JHtpdGVtLmRpcmVjdGlvbn1gKS5qb2luKFwiLFwiKSA6IG51bGw7XG5cbiAgICB2b2lkIHNldFNvcnRQYXJhbShzb3J0U3RyaW5nKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNvcnRpbmdTdGF0ZSxcbiAgICBzZXRTb3J0aW5nU3RhdGU6IGhhbmRsZVNvcnRpbmdDaGFuZ2UsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgQ29weSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IGlzVmFsaWRFbGVtZW50LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0TWVudSwgQ29udGV4dE1lbnVDb250ZW50LCBDb250ZXh0TWVudUl0ZW0sIENvbnRleHRNZW51VHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudVwiO1xuXG5leHBvcnQgdHlwZSBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48b2JqZWN0PjtcblxuLy8gVE9ETzogVGhpcyBuZWVkcyB0byBiZSBpbnZlcnNpZmllZCAtIHRvIG1ha2UgaXQgZXh0ZW5zaWJsZSwgYW5kIGFkYXB0YWJsZSB0byBkaWZmZXJlbnQgc2l0dWF0aW9ucy5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZENlbGxDb250ZXh0TWVudShwcm9wczogRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0TWVudT5cbiAgICAgIDxDb250ZXh0TWVudVRyaWdnZXIgY2xhc3NOYW1lPVwicHMtYmxvY2sgcHMtdy1mdWxsIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV0gcHMtbGVhZGluZy1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtdGV4dC14cyBwcy1mb250LW1vbm8gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250ZXh0TWVudVRyaWdnZXI+XG4gICAgICA8Q29udGV4dE1lbnVDb250ZW50PlxuICAgICAgICA8Q29udGV4dE1lbnVJdGVtXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGV4dHJhY3RUZXh0Q29udGVudChjaGlsZHJlbik7XG4gICAgICAgICAgICB2b2lkIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnRlbnQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHkgdG8gY2xpcGJvYXJkOlwiLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxDb3B5IHNpemU9ezEyfSAvPlxuICAgICAgICAgIENvcHlcbiAgICAgICAgPC9Db250ZXh0TWVudUl0ZW0+XG4gICAgICA8L0NvbnRleHRNZW51Q29udGVudD5cbiAgICA8L0NvbnRleHRNZW51PlxuICApO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VGV4dENvbnRlbnQobm9kZTogUmVhY3ROb2RlKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBub2RlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBub2RlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBub2RlID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiBTdHJpbmcobm9kZSk7XG4gIH1cblxuICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChpc1ZhbGlkRWxlbWVudChub2RlKSkge1xuICAgIGNvbnN0IHByb3BzID0gbm9kZS5wcm9wcyBhcyB7IHRleHQ/OiBzdHJpbmc7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH07XG5cbiAgICAvLyBIYW5kbGUgUmV2ZWFsVGV4dCBjb21wb25lbnQgc3BlY2lmaWNhbGx5XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiUmV2ZWFsVGV4dFwiKSB7XG4gICAgICByZXR1cm4gcHJvcHMudGV4dCB8fCBcIlwiO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBOdWxsVmFsdWUgY29tcG9uZW50XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiTnVsbFZhbHVlXCIpIHtcbiAgICAgIHJldHVybiBcIk5VTExcIjtcbiAgICB9XG5cbiAgICAvLyBSZWN1cnNpdmVseSBleHRyYWN0IHRleHQgZnJvbSBjaGlsZHJlblxuICAgIGlmIChwcm9wcy5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGV4dHJhY3RUZXh0Q29udGVudChwcm9wcy5jaGlsZHJlbiBhcyBSZWFjdE5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5tYXAoZXh0cmFjdFRleHRDb250ZW50KS5qb2luKFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG4iLCAiaW1wb3J0ICogYXMgQ29udGV4dE1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0LW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDb250ZXh0TWVudSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IENvbnRleHRNZW51VHJpZ2dlciA9IENvbnRleHRNZW51UHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IENvbnRleHRNZW51R3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgQ29udGV4dE1lbnVQb3J0YWwgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvR3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YlRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0byBwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Db250ZXh0TWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVN1YkNvbnRlbnQuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcbkNvbnRleHRNZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Db250ZXh0TWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaXJjbGUgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1maWxsLWN1cnJlbnRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Db250ZXh0TWVudVJhZGlvSXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkIHBzLXRleHQtZm9yZWdyb3VuZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51TGFiZWwuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctYm9yZGVyXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTaG9ydGN1dCA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICk7XG59O1xuQ29udGV4dE1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiQ29udGV4dE1lbnVTaG9ydGN1dFwiO1xuXG5leHBvcnQge1xuICBDb250ZXh0TWVudSxcbiAgQ29udGV4dE1lbnVUcmlnZ2VyLFxuICBDb250ZXh0TWVudUNvbnRlbnQsXG4gIENvbnRleHRNZW51SXRlbSxcbiAgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0sXG4gIENvbnRleHRNZW51UmFkaW9JdGVtLFxuICBDb250ZXh0TWVudUxhYmVsLFxuICBDb250ZXh0TWVudVNlcGFyYXRvcixcbiAgQ29udGV4dE1lbnVTaG9ydGN1dCxcbiAgQ29udGV4dE1lbnVHcm91cCxcbiAgQ29udGV4dE1lbnVQb3J0YWwsXG4gIENvbnRleHRNZW51U3ViLFxuICBDb250ZXh0TWVudVN1YkNvbnRlbnQsXG4gIENvbnRleHRNZW51U3ViVHJpZ2dlcixcbiAgQ29udGV4dE1lbnVSYWRpb0dyb3VwLFxufTtcbiIsICJpbXBvcnQgeyB0eXBlIENTU1Byb3BlcnRpZXMsIERldGFpbGVkSFRNTFByb3BzLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlQ2VsbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IERhdGFHcmlkQ2VsbENvbnRleHRNZW51IH0gZnJvbSBcIi4uL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDZWxsUHJvcHMgZXh0ZW5kcyBQcm9wc1dpdGhDaGlsZHJlbiwgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8dW5rbm93bj4sIHVua25vd24+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDZWxsKHByb3BzOiBDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCByZWYsIHN0eWxlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVDZWxsXG4gICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXAtMCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICAgIC8vIFRPRE86IEtlZXBpbmcgdGhpcyB0ZW1wb3JhcmlseTsgbWlnaHQgbmVlZCBpdCBsYXRlciBkZXBlbmRpbmcgb24gaW5wdXQgdHlwZXNcbiAgICAgICAgLy8gXCJkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLTIgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbmRpZ28tNDAwIGRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctaW5zZXRcIixcbiAgICAgICAgXCJwcy1jdXJzb3ItcG9pbnRlclwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcmVmPXtyZWYgYXMgbmV2ZXJ9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgPlxuICAgICAgPERhdGFHcmlkQ2VsbENvbnRleHRNZW51PntjaGlsZHJlbn08L0RhdGFHcmlkQ2VsbENvbnRleHRNZW51PlxuICAgIDwvVGFibGVDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbkNlbGwgfSBmcm9tIFwiLi9Cb29sZWFuQ2VsbFwiO1xuaW1wb3J0IHsgRGF0ZUNlbGwgfSBmcm9tIFwiLi9EYXRlQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vRW1wdHlDZWxsXCI7XG5pbXBvcnQgeyBFbnVtQ2VsbCB9IGZyb20gXCIuL0VudW1DZWxsXCI7XG5pbXBvcnQgeyBKU09OQ2VsbCB9IGZyb20gXCIuL0pTT05DZWxsXCI7XG5pbXBvcnQgeyBOdWxsQ2VsbCB9IGZyb20gXCIuL051bGxDZWxsXCI7XG5pbXBvcnQgeyBOdW1lcmljQ2VsbCB9IGZyb20gXCIuL051bWVyaWNDZWxsXCI7XG5pbXBvcnQgeyBSYXdDZWxsIH0gZnJvbSBcIi4vUmF3Q2VsbFwiO1xuaW1wb3J0IHsgVGltZUNlbGwgfSBmcm9tIFwiLi9UaW1lQ2VsbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2VsbCh7IGNlbGwsIGNvbHVtbiB9OiB7IGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+OyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIGNvbnN0IHZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDxFbXB0eUNlbGwgLz47XG4gIH1cblxuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gPE51bGxDZWxsIC8+O1xuICB9XG5cbiAgY29uc3QgeyBncm91cCwgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SlNPTkNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiA8UmF3Q2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImVudW1cIikge1xuICAgIHJldHVybiA8RW51bUNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5DZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIHJldHVybiA8RGF0ZUNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJ0aW1lXCIpIHtcbiAgICByZXR1cm4gPFRpbWVDZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInJhd1wiKSB7XG4gICAgaWYgKGlzT2JqZWN0VHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiA8SlNPTkNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gPFJhd0NlbGwgdmFsdWU9e3ZhbHVlfSAvPjtcbiAgfVxuXG4gIGdyb3VwIHNhdGlzZmllcyBuZXZlcjtcbiAgdGhyb3cgbmV3IEVycm9yKGBEYXRhdHlwZSBncm91cCBcIiR7Z3JvdXAgYXMgc3RyaW5nfVwiIHdhcyBub3QgaGFuZGxlZCBpbiAnL2NlbGwvZ2V0LWNlbGwudHN4J2ApO1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbkNlbGxQcm9wcyB7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5jb25zdCBCb29sZWFuQ2VsbCA9IChwcm9wczogQm9vbGVhbkNlbGxQcm9wcykgPT4ge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPGRpdiBkYXRhLWNlbGwtdHlwZT1cImJvb2xlYW5cIj57U3RyaW5nKEJvb2xlYW4odmFsdWUpKX08L2Rpdj47XG59O1xuQm9vbGVhbkNlbGwuZGlzcGxheU5hbWUgPSBcIkJvb2xlYW5DZWxsXCI7XG5cbmV4cG9ydCB7IEJvb2xlYW5DZWxsIH07XG4iLCAiZXhwb3J0IGludGVyZmFjZSBEYXRlQ2VsbFByb3BzIHtcbiAgdmFsdWU6IHN0cmluZyB8IERhdGUgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlQ2VsbChwcm9wczogRGF0ZUNlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPD57U3RyaW5nKHZhbHVlKX08Lz47XG59XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBFbXB0eUNlbGxQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gRW1wdHlDZWxsKF9wcm9wczogRW1wdHlDZWxsUHJvcHMpIHtcbiAgcmV0dXJuIDw+PC8+O1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgRW51bUNlbGxQcm9wcyB7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRW51bUNlbGwocHJvcHM6IEVudW1DZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDw+e1N0cmluZyh2YWx1ZSl9PC8+O1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgSlNPTkNlbGxQcm9wcyB7XG4gIHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVua25vd25bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEpTT05DZWxsKHByb3BzOiBKU09OQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8PntKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMil9PC8+O1xufVxuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgTnVsbENlbGxQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gTnVsbENlbGwoX3Byb3BzOiBOdWxsQ2VsbFByb3BzKSB7XG4gIHJldHVybiA8Y29kZSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNjBcIj5OVUxMPC9jb2RlPjtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIE51bWVyaWNDZWxsUHJvcHMge1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE51bWVyaWNDZWxsKHByb3BzOiBOdW1lcmljQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8ZGl2IGRhdGEtY2VsbC10eXBlPVwibnVtZXJpY1wiPnt2YWx1ZSA9PT0gbnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKHZhbHVlKX08L2Rpdj47XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBSYXdDZWxsUHJvcHMge1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJhd0NlbGwocHJvcHM6IFJhd0NlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPD57U3RyaW5nKHZhbHVlKX08Lz47XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBUaW1lQ2VsbFByb3BzIHtcbiAgdmFsdWU6IHN0cmluZyB8IERhdGUgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lQ2VsbChwcm9wczogVGltZUNlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPD57U3RyaW5nKHZhbHVlKX08Lz47XG59XG4iLCAiaW1wb3J0ICogYXMgQ2hlY2tib3hQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jaGVja2JveFwiO1xuaW1wb3J0IHsgQ2hlY2sgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3ggPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q2hlY2tib3hQcmltaXRpdmUuUm9vdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXBlZXIgcHMtaC00IHBzLXctNCBwcy1zaHJpbmstMCBwcy1yb3VuZGVkLXNtIHBzLWJvcmRlciBwcy1ib3JkZXItcHJpbWFyeSBwcy1zaGFkb3cgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvciBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtdGV4dC1jdXJyZW50XCIpfT5cbiAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICA8L0NoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvcj5cbiAgPC9DaGVja2JveFByaW1pdGl2ZS5Sb290PlxuKSk7XG5DaGVja2JveC5kaXNwbGF5TmFtZSA9IENoZWNrYm94UHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IENoZWNrYm94IH07XG4iLCAiaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEhlYWRlckNlbGxQcm9wcyB7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0SGVhZGVyQ2VsbChwcm9wczogU2VsZWN0SGVhZGVyQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDaGVja2JveFxuICAgICAgY2hlY2tlZD17dGFibGUuZ2V0SXNBbGxSb3dzU2VsZWN0ZWQoKX1cbiAgICAgIG9uQ2hlY2tlZENoYW5nZT17KHZhbHVlKSA9PiB0YWJsZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQoISF2YWx1ZSl9XG4gICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgLz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBSb3cgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdFJvd0NlbGxQcm9wcyB7XG4gIHJvdzogUm93PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3RSb3dDZWxsKHByb3BzOiBTZWxlY3RSb3dDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyByb3csIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDaGVja2JveFxuICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgIGRpc2FibGVkPXshcm93LmdldENhblNlbGVjdCgpIHx8IHJlYWRvbmx5fVxuICAgICAgb25DaGVja2VkQ2hhbmdlPXtyb3cuZ2V0VG9nZ2xlU2VsZWN0ZWRIYW5kbGVyKCl9XG4gICAgLz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIHNldE9wZW46IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFBvcG92ZXJDZWxsQ29udGV4dFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbmNvbnN0IFBvcG92ZXJDZWxsID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH06IFBvcG92ZXJQcmltaXRpdmUuUG9wb3ZlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxQb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgb3Blbiwgc2V0T3BlbiB9fT5cbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlJvb3Qgb3Blbj17b3Blbn0gb25PcGVuQ2hhbmdlPXtzZXRPcGVufSB7Li4ucHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuUm9vdD5cbiAgICA8L1BvcG92ZXJDZWxsQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5Qb3BvdmVyQ2VsbC5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxcIjtcblxuaW50ZXJmYWNlIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+IHtcbiAgb25Eb3VibGVDbGljaz86ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcG92ZXJDZWxsVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8UmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiwgUG9wb3ZlckNlbGxUcmlnZ2VyUHJvcHM+KFxuICAoeyBjaGlsZHJlbiwgb25Eb3VibGVDbGljaywgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAvLyBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuICAgIC8vIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG5cbiAgICAvLyBUT0RPOiBLZWVwaW5nIHRoaXMgdGVtcG9yYXJpbHk7IG1pZ2h0IG5lZWQgaXQgbGF0ZXIgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVzXG4gICAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IGhhbmRsZURvY3VtZW50Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIC8vICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAvLyAgICAgaWYgKHRyaWdnZXJSZWYuY3VycmVudCAmJiAhdHJpZ2dlclJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAvLyAgICAgICAvLyBjb25zb2xlLmxvZyhcIk91dHNpZGUgY2xpY2sgLSByZW1vdmluZyBmb2N1c1wiKTtcbiAgICAvLyAgICAgICBzZXRJc0ZvY3VzZWQoZmFsc2UpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9O1xuXG4gICAgLy8gICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gICAgLy8gICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vIH0sIFtdKTtcblxuICAgIC8vIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyAgIHNldElzRm9jdXNlZCh0cnVlKTtcbiAgICAvLyAgIGNvbnRleHQ/LnNldE9wZW4odHJ1ZSk7XG5cbiAgICAvLyAgIGlmIChlLmRldGFpbCA9PT0gMiAmJiBvbkRvdWJsZUNsaWNrKSB7XG4gICAgLy8gICAgIG9uRG91YmxlQ2xpY2soKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXJcbiAgICAgICAgcmVmPXsobm9kZSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHJlZihub2RlKTtcbiAgICAgICAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkXG4gICAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfX1cbiAgICAgICAgLy8gb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIC8vIGRhdGEtZm9jdXM9e2lzRm9jdXNlZC50b1N0cmluZygpfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwidy1mdWxsIGgtZnVsbCBjdXJzb3ItcG9pbnRlclwiLCBjbGFzc05hbWUpfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPlxuICAgICk7XG4gIH0sXG4pO1xuUG9wb3ZlckNlbGxUcmlnZ2VyLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFRyaWdnZXJcIjtcblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTIgcHMtei01MCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICAvLyB3ZSBhcmUgaGFuZGxpbmcgdGhpcyBvdXJzZWx2ZXMsIGRvIG5vdCBsZXQgcmFkaXggdGFrZSBvdmVyXG4gICAgICBvbkVzY2FwZUtleURvd249eyhldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ2VsbENvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3BvdmVyQWN0aW9ucyhhY3Rpb25zOiB7XG4gIG9uU2F2ZT86ICgpID0+IGJvb2xlYW4gfCB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFjdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnRleHQ/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9ucy5vblNhdmUpIHtcbiAgICAgIGFjdGlvbnMub25TYXZlKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25TYXZlLCBjb250ZXh0XSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25DYW5jZWwpIHtcbiAgICAgIGFjdGlvbnMub25DYW5jZWwoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBbYWN0aW9ucy5vbkNhbmNlbCwgY29udGV4dF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgZW50ZXIgaXMgcHJlc3NlZCBhbmQgcHJlc3NlZCB3aXRob3V0IHNoaWZ0XG4gICAgICBpZiAoKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCJSZXR1cm5cIikgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGhhbmRsZVNhdmUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgfSwgW2hhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbF0pO1xuXG4gIHJldHVybiB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9O1xufVxuXG5leHBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxUcmlnZ2VyLCBQb3BvdmVyQ2VsbENvbnRlbnQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxDb250ZW50LCBQb3BvdmVyQ2VsbFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2VsbCwgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlYWJsZUNlbGxQcm9wcyB7XG4gIGNlbGxDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgaW5wdXRDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgbGlua0NvbXBvbmVudDogUmVhY3ROb2RlO1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFdyaXRlYWJsZUNlbGwocHJvcHM6IFdyaXRlYWJsZUNlbGxQcm9wcykge1xuICBjb25zdCB7IGNlbGxDb21wb25lbnQsIGlucHV0Q29tcG9uZW50LCBsaW5rQ29tcG9uZW50LCBjb250YWluZXJQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGw+XG4gICAgICA8UG9wb3ZlckNlbGxUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgIDxDZWxsIHsuLi5jb250YWluZXJQcm9wc30+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLXctZnVsbCBwcy1nYXAtMiBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2PntjZWxsQ29tcG9uZW50fTwvZGl2PlxuICAgICAgICAgICAge2xpbmtDb21wb25lbnR9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQ2VsbD5cbiAgICAgIDwvUG9wb3ZlckNlbGxUcmlnZ2VyPlxuICAgICAgPFBvcG92ZXJDZWxsQ29udGVudFxuICAgICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICAgICAgYWxpZ25PZmZzZXQ9ey0xfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcm91bmRlZC1ub25lIHBzLWJnLW11dGVkXCIsXG4gICAgICAgICAgXCJwcy1wLTAgcHMtei0zMCBwcy1nYXAtMCBwcy1ib3JkZXItcHJpbWFyeVwiLFxuICAgICAgICAgIFwicHMtdy1bY2FsYyh2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXytfMXB4KV0gcHMtbWF4LXctNzIgcHMtbWluLXctbWF4XCIsXG4gICAgICAgICl9XG4gICAgICAgIHNpZGVPZmZzZXQ9ey00MH1cbiAgICAgID5cbiAgICAgICAge2lucHV0Q29tcG9uZW50fVxuICAgICAgPC9Qb3BvdmVyQ2VsbENvbnRlbnQ+XG4gICAgPC9Qb3BvdmVyQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQge1xuICBjbG9zZXN0Q2VudGVyLFxuICBEbmRDb250ZXh0LFxuICB0eXBlIERyYWdFbmRFdmVudCxcbiAgRHJhZ092ZXJsYXksXG4gIHR5cGUgRHJhZ1N0YXJ0RXZlbnQsXG4gIEtleWJvYXJkU2Vuc29yLFxuICBQb2ludGVyU2Vuc29yLFxuICB0eXBlIFVuaXF1ZUlkZW50aWZpZXIsXG4gIHVzZVNlbnNvcixcbiAgdXNlU2Vuc29ycyxcbn0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7XG4gIGFycmF5TW92ZSxcbiAgU29ydGFibGVDb250ZXh0LFxuICBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMsXG4gIHVzZVNvcnRhYmxlLFxuICB2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3ksXG59IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgQ2hldnJvbkRvd24sIENoZXZyb25SaWdodCwgR3JpcFZlcnRpY2FsLCBIZWxwQ2lyY2xlLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZU51bWJlciB9IGZyb20gXCJtb3Rpb24tcGx1cy9yZWFjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uRmlsdGVyLCBGaWx0ZXJHcm91cCwgRmlsdGVyT3BlcmF0b3IsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBjb2VyY2VUb1N0cmluZywgY29lcmNlVG9WYWx1ZSB9IGZyb20gXCIuLi8uLi9saWIvY29udmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IERyb3Bkb3duTWVudSwgRHJvcGRvd25NZW51Q29udGVudCwgRHJvcGRvd25NZW51VHJpZ2dlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG5jb25zdCBMZWFkaW5nT3BlcmF0b3JTZWxlY3QgPSAoe1xuICB2YWx1ZSxcbiAgb25WYWx1ZUNoYW5nZSxcbiAgZGlzYWJsZWQsXG4gIHRyaWdnZXJDbGFzc05hbWUgPSBcInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIixcbn06IHtcbiAgdmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvblZhbHVlQ2hhbmdlOiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdHJpZ2dlckNsYXNzTmFtZT86IHN0cmluZztcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0IHZhbHVlPXt2YWx1ZX0gb25WYWx1ZUNoYW5nZT17b25WYWx1ZUNoYW5nZX0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT17dHJpZ2dlckNsYXNzTmFtZX0+XG4gICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIkxvZ2ljXCIgLz5cbiAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImFuZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPkFORDwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwib3JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5PUjwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgPC9TZWxlY3Q+XG4gICk7XG59O1xuXG4vLyBSZW5kZXJzIHRoZSBwcmV2aWV3IG9mIHRoZSBpdGVtIGJlaW5nIGRyYWdnZWQgaW4gdGhlIERyYWdPdmVybGF5LlxuY29uc3QgRHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgPSAoe1xuICBhY3RpdmVJZCxcbiAgaXRlbXMsXG4gIHRhYmxlLFxufToge1xuICBhY3RpdmVJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgdGFibGU6IFRhYmxlO1xufSkgPT4ge1xuICBjb25zdCBhY3RpdmVJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuICBpZiAoIWFjdGl2ZUl0ZW0pIHJldHVybiBudWxsO1xuXG4gIGxldCBsZWFkaW5nT3BlcmF0b3JWYWx1ZTogXCJhbmRcIiB8IFwib3JcIiA9IFwiYW5kXCI7IC8vIERlZmF1bHRcbiAgbGV0IHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gZmFsc2U7XG4gIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuXG4gIGlmIChhY3RpdmVJdGVtSW5kZXggPiAwKSB7XG4gICAgY29uc3QgcHJldmlvdXNJdGVtID0gaXRlbXNbYWN0aXZlSXRlbUluZGV4IC0gMV07XG4gICAgaWYgKHByZXZpb3VzSXRlbSkge1xuICAgICAgLy8gJ2FmdGVyJyBmcm9tIHRoZSBwcmV2aW91cyBpdGVtIGRldGVybWluZXMgdGhlIG9wZXJhdG9yIGxlYWRpbmcgaW50byB0aGUgY3VycmVudCBpdGVtXG4gICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSA9IHByZXZpb3VzSXRlbS5hZnRlcjtcbiAgICAgIHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoYWN0aXZlSXRlbS5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgZmlsdGVyPXthY3RpdmVJdGVtfVxuICAgICAgICBvblVwZGF0ZT17KCkgPT4ge319IC8vIE92ZXJsYXkgaXMgbm9uLWludGVyYWN0aXZlIGZvciB1cGRhdGVzXG4gICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIGRlbGV0ZXNcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319IC8vIE5vbi1pbnRlcmFjdGl2ZVxuICAgICAgLz5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgZ3JvdXA9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX1cbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fVxuICAgICAgICBpc1Jvb3Q9e2ZhbHNlfSAvLyBEcmFnZ2VkIGl0ZW0gaW4gb3ZlcmxheSBpcyBub3QgdGhlIHJvb3RcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319XG4gICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17ZmFsc2V9IC8vIE5vbi1pbnRlcmFjdGl2ZSBmb3IgcHJldmlld1xuICAgICAgLz5cbiAgICApO1xuICB9XG59O1xuXG4vLyBNYW5hZ2VzIERORCBjb250ZXh0IGFuZCByZW5kZXJpbmcgb2Ygc29ydGFibGUgZmlsdGVyIGl0ZW1zIGZvciBhIGdyb3VwLlxuY29uc3QgRmlsdGVyTGlzdEl0ZW1zID0gKHtcbiAgaXRlbXMsXG4gIHBhcmVudEdyb3VwSWQsXG4gIHRhYmxlLFxuICBvblVwZGF0ZUl0ZW0sXG4gIG9uRGVsZXRlSXRlbSxcbiAgb25SZW9yZGVySXRlbXMsXG4gIGFjdGl2ZURyYWdJZCxcbiAgb25EcmFnU3RhcnQsXG4gIG9uRHJhZ0VuZFNpZ25hbCxcbn06IHtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgcGFyZW50R3JvdXBJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBvblVwZGF0ZUl0ZW06IChpbmRleDogbnVtYmVyLCB1cGRhdGVkSXRlbTogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlSXRlbTogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uUmVvcmRlckl0ZW1zOiAob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgYWN0aXZlRHJhZ0lkOiBVbmlxdWVJZGVudGlmaWVyIHwgbnVsbDtcbiAgb25EcmFnU3RhcnQ6IChldmVudDogRHJhZ1N0YXJ0RXZlbnQpID0+IHZvaWQ7XG4gIG9uRHJhZ0VuZFNpZ25hbDogKCkgPT4gdm9pZDsgLy8gQ2FsbGJhY2sgdG8gc2lnbmFsIGRyYWcgb3BlcmF0aW9uIGNvbXBsZXRpb25cbn0pID0+IHtcbiAgY29uc3Qgc29ydGFibGVJdGVtSWRzID0gdXNlTWVtbygoKSA9PiBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQpLCBbaXRlbXNdKTtcbiAgY29uc3Qgc2Vuc29ycyA9IHVzZVNlbnNvcnMoXG4gICAgdXNlU2Vuc29yKFBvaW50ZXJTZW5zb3IsIHsgYWN0aXZhdGlvbkNvbnN0cmFpbnQ6IHsgZGlzdGFuY2U6IDggfSB9KSxcbiAgICB1c2VTZW5zb3IoS2V5Ym9hcmRTZW5zb3IsIHsgY29vcmRpbmF0ZUdldHRlcjogc29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIH0pLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUludGVybmFsRHJhZ0VuZCA9IChldmVudDogRHJhZ0VuZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBhY3RpdmUsIG92ZXIgfSA9IGV2ZW50O1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgY29uc3Qgb2xkSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZS5pZCk7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3Zlci5pZCk7XG4gICAgICBpZiAob2xkSW5kZXggIT09IC0xICYmIG5ld0luZGV4ICE9PSAtMSkge1xuICAgICAgICBvblJlb3JkZXJJdGVtcyhvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICBvbkRyYWdFbmRTaWduYWwoKTsgLy8gU2lnbmFsIHRvIHBhcmVudCB0aGF0IGRyYWcgaGFzIGVuZGVkIChlLmcuLCB0byBjbGVhciBhY3RpdmVEcmFnSWQpXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RG5kQ29udGV4dFxuICAgICAgc2Vuc29ycz17c2Vuc29yc31cbiAgICAgIGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn1cbiAgICAgIG9uRHJhZ1N0YXJ0PXtvbkRyYWdTdGFydH1cbiAgICAgIG9uRHJhZ0VuZD17aGFuZGxlSW50ZXJuYWxEcmFnRW5kfVxuICAgID5cbiAgICAgIDxTb3J0YWJsZUNvbnRleHQgaXRlbXM9e3NvcnRhYmxlSXRlbUlkc30gc3RyYXRlZ3k9e3ZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX0+XG4gICAgICAgIHtpdGVtcy5tYXAoKGN1cnJlbnRGaWx0ZXJJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzaG93TGVhZGluZ09wID0gZmFsc2U7XG4gICAgICAgICAgbGV0IGxlYWRpbmdPcFZhbDogXCJhbmRcIiB8IFwib3JcIiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgb25MZWFkaW5nT3BDaGFuZ2VGbjogKCh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgc2hvd0xlYWRpbmdPcCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBwcmV2SXRlbSA9IGl0ZW1zW2luZGV4IC0gMV0hO1xuICAgICAgICAgICAgbGVhZGluZ09wVmFsID0gcHJldkl0ZW0uYWZ0ZXI7XG4gICAgICAgICAgICBvbkxlYWRpbmdPcENoYW5nZUZuID0gKG5ld1ZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRQcmV2SXRlbSA9IHsgLi4ucHJldkl0ZW0sIGFmdGVyOiBuZXdWYWx1ZSB9O1xuICAgICAgICAgICAgICBvblVwZGF0ZUl0ZW0oaW5kZXggLSAxLCB1cGRhdGVkUHJldkl0ZW0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGluZGV4IC0gMSA9PT0gaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNvcnRhYmxlRmlsdGVySXRlbVxuICAgICAgICAgICAgICBrZXk9e2N1cnJlbnRGaWx0ZXJJdGVtLmlkfVxuICAgICAgICAgICAgICBmaWx0ZXI9e2N1cnJlbnRGaWx0ZXJJdGVtfVxuICAgICAgICAgICAgICBvblVwZGF0ZT17KHVwZGF0ZWRGaWx0ZXIpID0+IG9uVXBkYXRlSXRlbShpbmRleCwgdXBkYXRlZEZpbHRlcil9XG4gICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiBvbkRlbGV0ZUl0ZW0oaW5kZXgpfVxuICAgICAgICAgICAgICBwYXJlbnREbmRJZD17cGFyZW50R3JvdXBJZH1cbiAgICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wfVxuICAgICAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wVmFsfVxuICAgICAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BDaGFuZ2VGbn1cbiAgICAgICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcFRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICB7Y3JlYXRlUG9ydGFsKFxuICAgICAgICA8RHJhZ092ZXJsYXk+XG4gICAgICAgICAge2FjdGl2ZURyYWdJZCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtb3BhY2l0eS04MFwiPlxuICAgICAgICAgICAgICA8RHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgYWN0aXZlSWQ9e2FjdGl2ZURyYWdJZH0gaXRlbXM9e2l0ZW1zfSB0YWJsZT17dGFibGV9IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9EcmFnT3ZlcmxheT4sXG4gICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICApfVxuICAgIDwvRG5kQ29udGV4dD5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzb3J0YWJsZSBmaWx0ZXIgaXRlbVxuY29uc3QgU29ydGFibGVGaWx0ZXJJdGVtID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIHBhcmVudERuZElkLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBwYXJlbnREbmRJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHNldE5vZGVSZWYsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBmaWx0ZXIuaWQsXG4gICAgZGF0YToge1xuICAgICAgdHlwZTogZmlsdGVyLmtpbmQsXG4gICAgICBwYXJlbnRJZDogcGFyZW50RG5kSWQsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3Qgc3R5bGUgPSB7XG4gICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNmb3JtLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgdHJhbnNpdGlvbixcbiAgICBvcGFjaXR5OiBpc0RyYWdnaW5nID8gMC41IDogMSxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtzZXROb2RlUmVmfSBzdHlsZT17c3R5bGV9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWdhcC0yXCI+XG4gICAgICB7ZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIgPyAoXG4gICAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50XG4gICAgICAgICAgZ3JvdXA9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzaW5nbGUgZmlsdGVyIGNvbmRpdGlvblxuY29uc3QgRmlsdGVyQ29uZGl0aW9uID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBmaWx0ZXI6IENvbHVtbkZpbHRlcjtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIpID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZUNvbHVtbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIGNvbHVtbjogdmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlcmF0b3JDaGFuZ2UgPSAodmFsdWU6IEZpbHRlck9wZXJhdG9yKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIG9wZXJhdG9yOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgY29sdW1uSW5mbyA9IHRhYmxlLmNvbHVtbnNbZmlsdGVyLmNvbHVtbl07XG5cbiAgICBpZiAoY29sdW1uSW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZVRvVmFsdWUoY29sdW1uSW5mbywgZmlsdGVyLm9wZXJhdG9yLCByYXdWYWx1ZSk7XG5cbiAgICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCB2YWx1ZTogbmV3VmFsdWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IFtlZGl0ZWRWYWx1ZSwgc2V0RWRpdGVkVmFsdWVdID0gdXNlU3RhdGUoXG4gICAgY29lcmNlVG9TdHJpbmcodGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXSwgZmlsdGVyLm9wZXJhdG9yLCBmaWx0ZXIudmFsdWUpLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXZcbiAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiXG4gICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiPlxuICAgICAgICAgIDxHcmlwVmVydGljYWwgY2xhc3NOYW1lPVwicHMtdGV4dC1ncmF5LTUwMFwiIHNpemU9ezE2fSAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgPyAoXG4gICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLmNvbHVtbn0gb25WYWx1ZUNoYW5nZT17aGFuZGxlQ29sdW1uQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjggcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNvbHVtblwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAge09iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXtjb2x1bW59IHZhbHVlPXtjb2x1bW59PlxuICAgICAgICAgICAgICAgICAge2NvbHVtbn1cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLm9wZXJhdG9yfSBvblZhbHVlQ2hhbmdlPXsodmFsdWUpID0+IGhhbmRsZU9wZXJhdG9yQ2hhbmdlKHZhbHVlIGFzIEZpbHRlck9wZXJhdG9yKX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy13LTIwIHBzLXRleHQteHMgcHMtaC04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIk9wZXJhdG9yXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj1cIj49PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIiE9XCI+IT08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPlwiPiZndDs8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPj1cIj4mZ3Q7PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8XCI+Jmx0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8PVwiPiZsdDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlzXCI+aXM8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXMgbm90XCI+aXMgbm90PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxpa2VcIj5saWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBsaWtlXCI+bm90IGxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaWxpa2VcIj5pbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgaWxpa2VcIj5ub3QgaWxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIHZhbHVlPXtlZGl0ZWRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICBzZXRFZGl0ZWRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlKGUpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0yNCBwcy10ZXh0LXhzIHBzLWgtOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L21vdGlvbi5kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgZmlsdGVyIGdyb3VwIChBTkQvT1IpXG5jb25zdCBGaWx0ZXJHcm91cENvbXBvbmVudCA9ICh7XG4gIGdyb3VwLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgaXNSb290ID0gZmFsc2UsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZ3JvdXA6IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRHcm91cDogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIGlzUm9vdD86IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbYWN0aXZlRHJhZ0lkLCBzZXRBY3RpdmVEcmFnSWRdID0gdXNlU3RhdGU8VW5pcXVlSWRlbnRpZmllciB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUFkZEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXI6IENvbHVtbkZpbHRlciA9IHtcbiAgICAgIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxuICAgICAga2luZDogXCJDb2x1bW5GaWx0ZXJcIixcbiAgICAgIGNvbHVtbjogT2JqZWN0LmtleXModGFibGUuY29sdW1ucylbMF0gPz8gXCJcIiwgLy8gQWx3YXlzIHNlbGVjdCBmaXJzdCBjb2xcbiAgICAgIG9wZXJhdG9yOiBcIj1cIixcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBhZnRlcjogXCJhbmRcIixcbiAgICB9O1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogWy4uLmdyb3VwLmZpbHRlcnMsIG5ld0ZpbHRlcl0gfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQWRkR3JvdXAgPSAoKSA9PiB7XG4gICAgY29uc3QgbmV3R3JvdXA6IEZpbHRlckdyb3VwID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3R3JvdXBdIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUl0ZW1Jbkdyb3VwID0gKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRGaWx0ZXJPckdyb3VwOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVyc1tpbmRleF0gPSB1cGRhdGVkRmlsdGVyT3JHcm91cDtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBuZXdGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZUl0ZW1Gcm9tR3JvdXAgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4ge1xuICAgIHNldEFjdGl2ZURyYWdJZChldmVudC5hY3RpdmUuaWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmRTaWduYWwgPSAoKSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVJlb3JkZXJJdGVtcyA9IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKG9sZEluZGV4ID09PSBuZXdJbmRleCkgcmV0dXJuO1xuICAgIGNvbnN0IHJlb3JkZXJlZEZpbHRlcnMgPSBhcnJheU1vdmUoZ3JvdXAuZmlsdGVycywgb2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiByZW9yZGVyZWRGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckdyb3VwQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHJldHVybiBudWxsO1xuICAgIGlmICghZ3JvdXAuZmlsdGVycyB8fCBncm91cC5maWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wbC02IHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTUwMCBwcy1pdGFsaWNcIj5cbiAgICAgICAgICBUaGlzIGdyb3VwIGlzIGVtcHR5LiBBZGQgYSBmaWx0ZXIgb3IgYW5vdGhlciBncm91cC5cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8bW90aW9uLmRpdiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlIHBzLWdhcC0yXCIsIGlzUm9vdCA/IFwiXCIgOiBcInBzLXBiLTJcIil9PlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SXRlbXNcbiAgICAgICAgICAgIGl0ZW1zPXtncm91cC5maWx0ZXJzfVxuICAgICAgICAgICAgcGFyZW50R3JvdXBJZD17Z3JvdXAuaWR9XG4gICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICBvblVwZGF0ZUl0ZW09e3VwZGF0ZUl0ZW1Jbkdyb3VwfVxuICAgICAgICAgICAgb25EZWxldGVJdGVtPXtkZWxldGVJdGVtRnJvbUdyb3VwfVxuICAgICAgICAgICAgb25SZW9yZGVySXRlbXM9e2hhbmRsZVJlb3JkZXJJdGVtc31cbiAgICAgICAgICAgIGFjdGl2ZURyYWdJZD17YWN0aXZlRHJhZ0lkfVxuICAgICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICAgIG9uRHJhZ0VuZFNpZ25hbD17aGFuZGxlRHJhZ0VuZFNpZ25hbH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbW90aW9uLmRpdj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsXCIsIGlzRXhwYW5kZWQgPyBcInBzLWdhcC0yXCIgOiBcIlwiKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHshaXNSb290ICYmIChcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCIgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9PlxuICAgICAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uUmlnaHQgc2l6ZT17MTZ9IC8+fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtzaG93TGVhZGluZ09wZXJhdG9yICYmIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlICYmICFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPExlYWRpbmdPcGVyYXRvclNlbGVjdFxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFkZEZpbHRlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIG92ZXJmbG93LWhpZGRlbiBwcy10cmFuc2l0aW9uLWFsbFwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWRkIEZpbHRlclxuICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8QmFkZ2UgY2xhc3NOYW1lPVwicHMtdHJhbnNpdGlvbi1hbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxBbmltYXRlTnVtYmVyIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+e2dyb3VwLmZpbHRlcnMubGVuZ3RofTwvQW5pbWF0ZU51bWJlcj5cbiAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtoYW5kbGVBZGRHcm91cH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgQWRkIEdyb3VwXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7aXNSb290ICYmIChcbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICAgICAgPEhlbHBDaXJjbGUgY2xhc3NOYW1lPVwicHMtc2l6ZS00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51Q29udGVudCBhbGlnbj1cImNlbnRlclwiIGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtNCBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICBObyBmaWx0ZXJzIGFwcGxpZWQgeWV0LiBBZGQgZmlsdGVycyB0byBwcmV2aWV3IHlvdXIgcXVlcnkuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wLTIgcHMtdGV4dC1jZW50ZXIgcHMtdGV4dC1zbSBwcy1iZy1uZXV0cmFsLTEwMCBwcy1yb3VuZGVkLXNtIHBzLWZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtncm91cH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKGlzUm9vdCA/IFwiXCIgOiBcInBzLW1sLTZcIil9PntyZW5kZXJHcm91cENvbnRlbnQoKX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCB0byB2aXN1YWxpemUgdGhlIHF1ZXJ5IHN0cmluZ1xuY29uc3QgUXVlcnlWaXN1YWxpemVyID0gKHsgZmlsdGVyIH06IHsgZmlsdGVyOiBGaWx0ZXJHcm91cCB9KTogUmVhY3ROb2RlID0+IHtcbiAgbGV0IGlzQW5kR3JvdXBPcGVuID0gMDtcblxuICBpZiAoZmlsdGVyLmZpbHRlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIoIClcIjtcblxuICBjb25zdCBncm91cCA9IGZpbHRlci5maWx0ZXJzLm1hcCgoZiwgaSkgPT4ge1xuICAgIGxldCByZXN1bHQ6IFJlYWN0Tm9kZTtcbiAgICBjb25zdCBpc0xhc3QgPSBmaWx0ZXIuZmlsdGVycy5sZW5ndGggLSAxID09PSBpO1xuXG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuID09PSAtMSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAwO1xuICAgIH1cblxuICAgIGlmIChmLmFmdGVyID09PSBcImFuZFwiICYmICFpc0xhc3QpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuICs9IDE7XG4gICAgfVxuICAgIGlmIChpc0FuZEdyb3VwT3BlbiAmJiAoaXNMYXN0IHx8IGYuYWZ0ZXIgPT09IFwib3JcIikpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuID0gLTE7XG4gICAgfVxuXG4gICAgaWYgKGYua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgICAgY29uc3QgeyBjb2x1bW4sIG9wZXJhdG9yIH0gPSBmO1xuXG4gICAgICByZXN1bHQgPSAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPHNwYW4+IHtjb2x1bW59IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4ge29wZXJhdG9yfSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+ID8gPC9zcGFuPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtmfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZyYWdtZW50IGtleT17Zi5pZH0+XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4oPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHtyZXN1bHR9XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gLTEgPyA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+KTwvc3Bhbj4gOiBcIlwifVxuICAgICAgICB7IWlzTGFzdCAmJiA8c3BhbiBjbGFzc05hbWU9XCJwcy11cHBlcmNhc2UgcHMtdGV4dC1ibHVlLTUwMCBwcy1mb250LXNlbWlib2xkXCI+IHtmLmFmdGVyfSA8L3NwYW4+fVxuICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gPHNwYW4+e2dyb3VwfTwvc3Bhbj47XG59O1xuXG4vLyBNYWluIGNvbXBvbmVudFxuZXhwb3J0IGZ1bmN0aW9uIEZpbHRlclRyZWUoe1xuICBmaWx0ZXIsXG4gIHNldEZpbHRlcixcbiAgc2V0QXBwbGllZEZpbHRlcixcbiAgdGFibGUsXG59OiB7XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG4gIHNldEZpbHRlcjogKHVwZGF0ZWRGaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBzZXRBcHBsaWVkRmlsdGVyOiAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgdGFibGU6IFRhYmxlO1xufSkge1xuICBjb25zdCBoYW5kbGVBcHBseUZpbHRlcnMgPSAoKSA9PiB7XG4gICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC00XCI+XG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnQgZ3JvdXA9e2ZpbHRlcn0gb25VcGRhdGU9e3NldEZpbHRlcn0gb25EZWxldGU9eygpID0+IHt9fSBpc1Jvb3Q9e3RydWV9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgIDxCdXR0b24gdmFyaWFudD1cImRlZmF1bHRcIiBzaXplPVwic21cIiBjbGFzc05hbWU9XCJwcy1zZWxmLWVuZFwiIG9uQ2xpY2s9e2hhbmRsZUFwcGx5RmlsdGVyc30+XG4gICAgICAgIEFwcGx5IEZpbHRlcnNcbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ29sdW1uLCBGaWx0ZXJPcGVyYXRvciB9IGZyb20gXCJAL2RhdGFcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVRvVmFsdWUoY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciwgdmFsdWU6IHN0cmluZyk6IHVua25vd24ge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAob3BlcmF0b3IgPT09IFwiaXNcIiB8fCBvcGVyYXRvciA9PT0gXCJpcyBub3RcIikge1xuICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcIm51bGxcIiA/IG51bGwgOiB2YWx1ZTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImJvb2xlYW5cIikgcmV0dXJuIHZhbHVlID09PSBcInRydWVcIjtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJlbnVtXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwidGltZVwiKSByZXR1cm4gdmFsdWU7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKSBhcyB1bmtub3duO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gXCJcIiA/IG51bGwgOiBOdW1iZXIodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9TdHJpbmcoXG4gIGNvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkLFxuICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IgfCB1bmRlZmluZWQsXG4gIHZhbHVlOiB1bmtub3duLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YVR5cGVHcm91cCA9IGNvbHVtbj8uZGF0YXR5cGUuZ3JvdXA7XG5cbiAgaWYgKG9wZXJhdG9yICYmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/IFwibnVsbFwiIDogU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInJhd1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImpzb25cIikge1xuICAgIGlmICh2YWx1ZSA9PT0gXCJcIikgcmV0dXJuIFwiXCI7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBEcm9wZG93bk1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25NZW51ID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IERyb3Bkb3duTWVudVRyaWdnZXIgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgRHJvcGRvd25NZW51R3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IERyb3Bkb3duTWVudVBvcnRhbCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YiA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvR3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG9cIiAvPlxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtW3ZhcigtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0KV0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWRcIixcbiAgICAgICAgXCJkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuRHJvcGRvd25NZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTAgWyY+c3ZnXTpwcy1zaXplLTQgWyY+c3ZnXTpwcy1zaHJpbmstMFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTIgcHMtdy0yIHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuRHJvcGRvd25NZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUxhYmVsLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy1vcGFjaXR5LTYwXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59O1xuRHJvcGRvd25NZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLFxuICBEcm9wZG93bk1lbnVSYWRpb0l0ZW0sXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG4gIERyb3Bkb3duTWVudVNob3J0Y3V0LFxuICBEcm9wZG93bk1lbnVHcm91cCxcbiAgRHJvcGRvd25NZW51UG9ydGFsLFxuICBEcm9wZG93bk1lbnVTdWIsXG4gIERyb3Bkb3duTWVudVN1YkNvbnRlbnQsXG4gIERyb3Bkb3duTWVudVN1YlRyaWdnZXIsXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJpbnB1dFwiPj4oXG4gICh7IGNsYXNzTmFtZSwgdHlwZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTEgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZpbGU6cHMtYm9yZGVyLTAgZmlsZTpwcy1iZy10cmFuc3BhcmVudCBmaWxlOnBzLXRleHQtc20gZmlsZTpwcy1mb250LW1lZGl1bSBmaWxlOnBzLXRleHQtZm9yZWdyb3VuZCBwbGFjZWhvbGRlcjpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTBcIixcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuSW5wdXQuZGlzcGxheU5hbWUgPSBcIklucHV0XCI7XG5cbmV4cG9ydCB7IElucHV0IH07XG4iLCAiaW1wb3J0ICogYXMgU2VsZWN0UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvbkRvd24sIENoZXZyb25VcCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmLCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU2VsZWN0ID0gU2VsZWN0UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFNlbGVjdEdyb3VwID0gU2VsZWN0UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBTZWxlY3RWYWx1ZSA9IFNlbGVjdFByaW1pdGl2ZS5WYWx1ZTtcblxuY29uc3QgU2VsZWN0VHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPixcbiAgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj4gJiB7IGxhYmVsPzogUmVhY3ROb2RlIH1cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgbGFiZWwsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctdHJhbnNwYXJlbnQgcHMtcHgtMyBwcy1weS0yIHBzLXRleHQtc20gcHMtc2hhZG93LXNtIHBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGF0YS1bcGxhY2Vob2xkZXJdOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0xIGZvY3VzOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJj5zcGFuXTpwcy1saW5lLWNsYW1wLTFcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTFcIj5cbiAgICAgIHtsYWJlbCAmJiA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj57bGFiZWx9Ojwvc3Bhbj59XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1vcGFjaXR5LTUwXCIgLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5JY29uPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuKSk7XG5TZWxlY3RUcmlnZ2VyLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbFVwQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uVXAgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgcG9zaXRpb24gPSBcInBvcHBlclwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcmVsYXRpdmUgcHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICBcImRhdGEtW3NpZGU9Ym90dG9tXTpwcy10cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06cHMtLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06cHMtdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06cHMtLXRyYW5zbGF0ZS15LTFcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXAtMVwiLFxuICAgICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgICBcInBzLWgtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHBzLXctZnVsbCBwcy1taW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXVwiLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydD5cbiAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5TZWxlY3RDb250ZW50LmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5TZWxlY3RMYWJlbC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtdy1mdWxsIHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC0yIHBzLXByLTggcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLXJpZ2h0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD57Y2hpbGRyZW59PC9TZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4pKTtcblNlbGVjdEl0ZW0uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5TZWxlY3RTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBTZWxlY3QsXG4gIFNlbGVjdEdyb3VwLFxuICBTZWxlY3RWYWx1ZSxcbiAgU2VsZWN0VHJpZ2dlcixcbiAgU2VsZWN0Q29udGVudCxcbiAgU2VsZWN0TGFiZWwsXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdFNlcGFyYXRvcixcbiAgU2VsZWN0U2Nyb2xsVXBCdXR0b24sXG4gIFNlbGVjdFNjcm9sbERvd25CdXR0b24sXG59O1xuIiwgImltcG9ydCB7IERuZENvbnRleHQsIHR5cGUgRHJhZ0VuZEV2ZW50LCBNb3VzZVNlbnNvciwgdXNlU2Vuc29yLCB1c2VTZW5zb3JzIH0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7IGFycmF5TW92ZSwgaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3ksIFNvcnRhYmxlQ29udGV4dCB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2UsIFJvd1NlbGVjdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb2x1bW5QaW5uaW5nU3RhdGUsXG4gIHR5cGUgQ29sdW1uU2l6aW5nU3RhdGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgdHlwZSBPbkNoYW5nZUZuLFxuICB0eXBlIFBhZ2luYXRpb25TdGF0ZSxcbiAgdHlwZSBTb3J0aW5nU3RhdGUsXG4gIHR5cGUgVGFibGUgYXMgUmVhY3RUYWJsZSxcbiAgdXNlUmVhY3RUYWJsZSxcbn0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgUmVhY3RUYWJsZURldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29sc1wiO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCB0eXBlIFJlYWN0Tm9kZSwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3NrZWxldG9uXCI7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZGVyLCBUYWJsZVJvdyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4uL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRMb2FkaW5nQmFyIH0gZnJvbSBcIi4vRGF0YUdyaWRMb2FkaW5nQmFyXCI7XG5pbXBvcnQgeyBEYXRhR3JpZFBhZ2luYXRpb24gfSBmcm9tIFwiLi9EYXRhR3JpZFBhZ2luYXRpb25cIjtcbmltcG9ydCB7IGdldENvbHVtblBpbm5pbmdTdHlsZXMgfSBmcm9tIFwiLi9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuXG4vLyBBZGQgdGhpcyBuZXcgY29tcG9uZW50IGZvciBkcmFnZ2FibGUgaGVhZGVyIGNlbGxzXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQcm9wcyB7XG4gIGNvbHVtbkRlZnM6IEFjY2Vzc29yS2V5Q29sdW1uRGVmQmFzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5bXTtcbiAgZ2V0QmVmb3JlUm93cz8odGhpczogdm9pZCwgdGFibGU6IFJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogUmVhY3ROb2RlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgb25QYWdpbmF0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT47XG4gIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFJvd1NlbGVjdGlvblN0YXRlPjtcbiAgb25Tb3J0aW5nQ2hhbmdlPzogT25DaGFuZ2VGbjxTb3J0T3JkZXJJdGVtW10+O1xuICBwYWdlQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnaW5hdGlvblN0YXRlOiBQYWdpbmF0aW9uU3RhdGU7XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHJvd1NlbGVjdGlvblN0YXRlOiBSb3dTZWxlY3Rpb25TdGF0ZTtcbiAgc29ydGluZ1N0YXRlPzogU29ydE9yZGVySXRlbVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWQocHJvcHM6IERhdGFHcmlkUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbHVtbkRlZnMsXG4gICAgZ2V0QmVmb3JlUm93cyxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNQcm9jZXNzaW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2UsXG4gICAgcGFnZUNvdW50LFxuICAgIHBhZ2luYXRpb25TdGF0ZSxcbiAgICByb3dzLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHNvcnRpbmdTdGF0ZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFtjb2x1bW5PcmRlciwgc2V0Q29sdW1uT3JkZXJdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW2NvbHVtblBpbm5pbmcsIHNldENvbHVtblBpbm5pbmddID0gdXNlU3RhdGU8Q29sdW1uUGlubmluZ1N0YXRlPih7IGxlZnQ6IFtcIl9fcHNfc2VsZWN0XCJdLCByaWdodDogW10gfSk7XG4gIGNvbnN0IFtjb2x1bW5TaXppbmcsIHNldENvbHVtblNpemluZ10gPSB1c2VTdGF0ZTxDb2x1bW5TaXppbmdTdGF0ZT4oe30pO1xuICBjb25zdCBzb3J0aW5nID0gdXNlTWVtbygoKSA9PiB0b1NvcnRpbmdTdGF0ZShzb3J0aW5nU3RhdGUpLCBbc29ydGluZ1N0YXRlXSk7XG4gIGNvbnN0IGRpc3BsYXlMb2FkZXIgPSBpc0xvYWRpbmcgfHwgaXNQcm9jZXNzaW5nO1xuXG4gIC8vIFJlc2V0IGNvbHVtbiBvcmRlciwgcGlubmluZywgYW5kIHNpemluZyB3aGVuIGNvbHVtbkRlZnMgY2hhbmdlICh3aGljaCBoYXBwZW5zIHdoZW4gdGFibGUgY2hhbmdlcylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRDb2x1bW5PcmRlcihjb2x1bW5EZWZzLm1hcCgoeyBhY2Nlc3NvcktleSB9KSA9PiBhY2Nlc3NvcktleSkpO1xuICAgIHNldENvbHVtblBpbm5pbmcoeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICAgIHNldENvbHVtblNpemluZyh7fSk7XG4gIH0sIFtjb2x1bW5EZWZzXSk7XG5cbiAgLy8gaGFuZGxlcyBtb3ZpbmcgYW5kIHJlLW9yZGVyaW5nIG9mIHRoZSBjb2x1bW5zIGFuZCBzdGF0ZVxuICBmdW5jdGlvbiBoYW5kbGVEcmFnRW5kKHsgYWN0aXZlLCBvdmVyIH06IERyYWdFbmRFdmVudCkge1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgc2V0Q29sdW1uT3JkZXIoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gb3JkZXIuaW5kZXhPZihhY3RpdmUuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3Qgb3ZlckluZGV4ID0gb3JkZXIuaW5kZXhPZihvdmVyLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiBhcnJheU1vdmUob3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29uZmlndXJlIHRoZSBtb3VzZSBzZW5zb3IgZm9yIGRyYWcgYW5kIGRyb3BcbiAgY29uc3QgbW91c2VTZW5zb3IgPSB1c2VTZW5zb3IoTW91c2VTZW5zb3IsIHtcbiAgICAvLyBSZXF1aXJlIHRoZSBtb3VzZSB0byBtb3ZlIGJ5IDEwIHBpeGVscyBiZWZvcmUgYWN0aXZhdGluZ1xuICAgIGFjdGl2YXRpb25Db25zdHJhaW50OiB7XG4gICAgICBkaXN0YW5jZTogMTAsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKG1vdXNlU2Vuc29yKTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIGNvbHVtblJlc2l6ZU1vZGU6IFwib25DaGFuZ2VcIixcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGRhdGE6IHJvd3MsXG4gICAgZGVmYXVsdENvbHVtbjogeyBzaXplOiAyMDAsIG1pblNpemU6IDUwLCBtYXhTaXplOiA1MDAgfSxcbiAgICBlbmFibGVDb2x1bW5QaW5uaW5nOiB0cnVlLFxuICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVTb3J0aW5nOiBCb29sZWFuKG9uU29ydGluZ0NoYW5nZSAmJiBzb3J0aW5nU3RhdGUpLFxuICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgZ2V0Um93SWQ6ICh7IF9fcHNfcm93aWQgfSkgPT4gX19wc19yb3dpZCBhcyBzdHJpbmcsXG4gICAgbWFudWFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICBtYW51YWxTb3J0aW5nOiB0cnVlLFxuICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2U6IHNldENvbHVtbk9yZGVyLFxuICAgIG9uQ29sdW1uUGlubmluZ0NoYW5nZTogc2V0Q29sdW1uUGlubmluZyxcbiAgICBvbkNvbHVtblNpemluZ0NoYW5nZTogc2V0Q29sdW1uU2l6aW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2U6ICh1cGRhdGVyT3JWYWx1ZSkgPT5cbiAgICAgIG9uU29ydGluZ0NoYW5nZT8uKChvbGQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdXBkYXRlck9yVmFsdWUgPSB1cGRhdGVyT3JWYWx1ZSh0b1NvcnRpbmdTdGF0ZShvbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvcnRPcmRlckl0ZW1zKHVwZGF0ZXJPclZhbHVlKTtcbiAgICAgIH0pLFxuICAgIHBhZ2VDb3VudCxcbiAgICBzdGF0ZToge1xuICAgICAgY29sdW1uT3JkZXIsXG4gICAgICBjb2x1bW5QaW5uaW5nLFxuICAgICAgY29sdW1uU2l6aW5nLFxuICAgICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvblN0YXRlLFxuICAgICAgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICAgIHNvcnRpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRPRE86IHBhdGNoIHNvIGl0IGlzIG5vdCBidW5kbGVkIGxpa2UgcmVhY3QtcXVlcnkgZGV2dG9vbHMsIG9yIHJlbW92ZSBjb21wbGV0ZWx5IG9uY2UgZGF0YSBncmlkIGlzIHN0YWJsZSBhbmQgdGVzdGVkLiAqL31cbiAgICAgIHtwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBudWxsIDogPFJlYWN0VGFibGVEZXZ0b29scyB0YWJsZT17dGFibGV9IC8+fVxuICAgICAgPGRpdiBkYXRhLXN0dWRpbz1cImNvbnRlbnRcIiBjbGFzc05hbWU9XCJwcy1mbGV4LTEgcHMtdy0wIHBzLWgtMCBwcy1taW4tdy1mdWxsIHBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdj57ZGlzcGxheUxvYWRlciAmJiA8RGF0YUdyaWRMb2FkaW5nQmFyIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIC1wcy10b3AtWzFweF0gcHMtbGVmdC0wIHBzLXJpZ2h0LTBcIiAvPn08L2Rpdj5cbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17c2Vuc29yc30gb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfT5cbiAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwicHMtdGFibGUtZml4ZWQgcHMtYm9yZGVyLXNlcGFyYXRlIHBzLWJvcmRlci1zcGFjaW5nLTAgcHMtYm94LWJvcmRlciBwcy13LWF1dG9cIj5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlcj5cbiAgICAgICAgICAgICAge3RhYmxlLmdldEhlYWRlckdyb3VwcygpLm1hcCgoaGVhZGVyR3JvdXApID0+IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0+XG4gICAgICAgICAgICAgICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zPXtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiBoZWFkZXIuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzdHJhdGVneT17aG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3l9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBIZWFkZXIgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIZWFkZXIgPSBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIoaGVhZGVyLmdldENvbnRleHQoKSkgYXMgSGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxIZWFkZXIga2V5PXtpfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICAgPFRhYmxlQm9keT5cbiAgICAgICAgICAgICAge2dldEJlZm9yZVJvd3M/Lih0YWJsZSl9XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3M/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICB0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3MubWFwKChyb3cpID0+IChcbiAgICAgICAgICAgICAgICAgIDxUYWJsZVJvd1xuICAgICAgICAgICAgICAgICAgICBrZXk9e3Jvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICBcInBzLWJnLXRhYmxlLXJvdyBwcy1vZGQ6YmctdGFibGUtcm93LW9kZCBwcy1ncm91cCBbJjpsYXN0LW9mLXR5cGVfdGRdOnBzLWJvcmRlci1iLTAgcHMtZ3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3Jvdy5nZXRWaXNpYmxlQ2VsbHMoKS5tYXAoKGNlbGwsIGkpID0+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+KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1hbmltYXRlLXB1bHNlIHBzLXJvdW5kZWQtbWQgcHMtYmctZm9yZWdyb3VuZC8xMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwgImltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZExvYWRpbmdCYXIoeyBjbGFzc05hbWUgfTogRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLWxvYWRpbmctYmFyXG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtaC1bMnB4XSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLWJnLXRhYmxlLWJvcmRlciBwcy16LTUwXCIsIGNsYXNzTmFtZSl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1hbmltYXRlLWluZGV0ZXJtaW5hdGUtYmFyIHBzLWgtZnVsbCBwcy13LTEvMyBwcy1yb3VuZGVkLXItZnVsbCBwcy1iZy1wcmltYXJ5XCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IENoZXZyb25MZWZ0LCBDaGV2cm9uUmlnaHQsIENoZXZyb25zTGVmdCwgQ2hldnJvbnNSaWdodCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUGFnaW5hdGlvblByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB2YXJpYW50PzogXCJiYXNpY1wiIHwgXCJudW1lcmljXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZFBhZ2luYXRpb24ocHJvcHM6IERhdGFHcmlkUGFnaW5hdGlvblByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGUsIHZhcmlhbnQgPSBcImJhc2ljXCIgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgcGFnZUluZGV4IH0gPSB0YWJsZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb247XG4gIGNvbnN0IHBhZ2VDb3VudCA9IHRhYmxlLmdldFBhZ2VDb3VudCgpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1yb3VuZGVkLWItbGcgcHMtb3ZlcmZsb3ctY2xpcCBwcy1zdGlja3kgcHMtYm90dG9tLTAgcHMtbGVmdC0wIHBzLWJvcmRlci10LTAgdy1mdWxsIHBzLXotMjAgcHMtcC0wXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1zcGFjZS14LTIgcHMtcHktMiBwcy1weC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtYmFja2Ryb3AtYmx1ci1zbSBwcy1iZy10YWJsZS1oZWFkLzkwXCI+XG4gICAgICAgIHt2YXJpYW50ID09PSBcImJhc2ljXCIgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTlcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUHJldmlvdXNcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTmV4dFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgoMCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc0xlZnQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtdGV4dC14cyBwcy1mb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIFBhZ2VcbiAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgbWluPXsxfVxuICAgICAgICAgICAgICAgICAgbWF4PXtwYWdlQ291bnR9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17cGFnZUluZGV4ICsgMX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXctMTZcIlxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IGUudGFyZ2V0LnZhbHVlID8gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSAtIDEgOiAwO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1zaHJpbmstMCBwcy13LW1heFwiPm9mIHtwYWdlQ291bnR9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KHBhZ2VDb3VudCAtIDEpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc1JpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDU1NQcm9wZXJ0aWVzIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNvbHVtbjogQ29sdW1uPFJlY29yZDxzdHJpbmcsIHVua25vd24+Piwga2luZDogXCJoZWFkZXJcIiB8IFwiY2VsbFwiKSB7XG4gIGNvbnN0IGlzUGlubmVkID0gY29sdW1uLmdldElzUGlubmVkKCk7XG4gIGNvbnN0IGlzTGVmdFBpbm5lZCA9IGlzUGlubmVkID09PSBcImxlZnRcIjtcbiAgY29uc3QgaXNSaWdodFBpbm5lZCA9IGlzUGlubmVkID09PSBcInJpZ2h0XCI7XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IGNuKFxuICAgICAga2luZCA9PT0gXCJjZWxsXCIgJiYgXCJncm91cC1vZGQ6cHMtYmctbmV1dHJhbC01MCBncm91cC1ldmVuOnBzLWJnLXdoaXRlIGdyb3VwLWhvdmVyOnBzLWJnLW5ldXRyYWwtMTAwXCIsXG4gICAgICBraW5kID09PSBcImhlYWRlclwiICYmIFwicHMtc2VsZWN0LW5vbmUgcHMtdG91Y2gtbm9uZSBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctdGFibGUtaGVhZFwiLFxuICAgICAgXCJwcy1ncm91cCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICBcInBzLW92ZXJmbG93LWhpZGRlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy10ZXh0LWVsbGlwc2lzXCIsXG4gICAgICBpc1Bpbm5lZCAmJiBcInBzLXN0aWNreVwiLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBraW5kID09PSBcImhlYWRlclwiICYmIFwicHMtei0yMFwiLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBraW5kID09PSBcImNlbGxcIiAmJiBcInBzLXotMFwiLFxuICAgICksXG4gICAgc3R5bGU6IHtcbiAgICAgIG1pbldpZHRoOiBgJHtjb2x1bW4uZ2V0U2l6ZSgpfXB4YCxcbiAgICAgIHdpZHRoOiBgJHtjb2x1bW4uZ2V0U2l6ZSgpfXB4YCxcbiAgICAgIGxlZnQ6IGlzTGVmdFBpbm5lZCA/IGAke2NvbHVtbi5nZXRTdGFydChcImxlZnRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IGlzUmlnaHRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0QWZ0ZXIoXCJyaWdodFwiKX1weGAgOiB1bmRlZmluZWQsXG4gICAgfSBhcyBDU1NQcm9wZXJ0aWVzLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZVNvcnRhYmxlIH0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBIZWFkZXIsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBDU1NQcm9wZXJ0aWVzLCBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUhlYWQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG50eXBlIERyYWdnYWJsZUhlYWRlckNlbGxQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBoZWFkZXI6IEhlYWRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbiAgdGFibGU6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+Pjtcbn0+O1xuXG5leHBvcnQgY29uc3QgRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsID0gKHByb3BzOiBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBoZWFkZXIsIHN0eWxlOiBjb21tb25TdHlsZSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgc2V0Tm9kZVJlZiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBoZWFkZXIuaWQsXG4gIH0pO1xuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIC4uLmNvbW1vblN0eWxlLFxuICAgIGN1cnNvcjogXCJncmFiXCIsXG4gICAgdG91Y2hBY3Rpb246IFwibm9uZVwiLFxuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gIH0gYXMgQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBkcmFnQ2xhc3MgPSBjbihjbGFzc05hbWUsIGlzRHJhZ2dpbmcgJiYgXCIhcHMtei01MCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdmlvbGV0LTUwMFwiKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUhlYWQgcmVmPXtzZXROb2RlUmVmfSB7Li4uYXR0cmlidXRlc30gey4uLmxpc3RlbmVyc30gc3R5bGU9e3N0eWxlfSBjbGFzc05hbWU9e2RyYWdDbGFzc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L1RhYmxlSGVhZD5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgdHlwZSBIZWFkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBBcnJvd0Rvd25XaWRlTmFycm93LCBBcnJvd1VwV2lkZU5hcnJvdywgQ2hldnJvbkRvd24sIE1vdmVEb3duLCBNb3ZlVXAsIFBpbiwgUGluT2ZmLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUl0ZW0sXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG59IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXJDZWxsIH0gZnJvbSBcIi4vRGF0YUdyaWRIZWFkZXJDZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUHJvcHM8VERhdGE+IHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIGhlYWRlcjogSGVhZGVyPFREYXRhLCB1bmtub3duPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXI8VERhdGE+KHByb3BzOiBIZWFkZXJQcm9wczxURGF0YT4pIHtcbiAgY29uc3QgeyBjb2x1bW4sIGhlYWRlciwgY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzXCI+XG4gICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyID8gbnVsbCA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1taW4tdy0wIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtZm9yZWdyb3VuZC85MFwiPlxuICAgICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlckNlbGwgY29sdW1uPXtjb2x1bW59IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXNocmluay0wIHBzLWdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtbWwtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlRG93biBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZVVwIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUGluKCkgJiYgaGVhZGVyLmNvbHVtbi5pZCAhPT0gXCJzZWxlY3RcIiAmJiAoXG4gICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtcHgtMCBwcy1oLTYgcHMtdy02XCI+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpICYmIChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4udG9nZ2xlU29ydGluZygpfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93bldpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXBXaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGFzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwgc29ydGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi5waW4oaGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gZmFsc2UgOiBcImxlZnRcIil9PlxuICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluT2ZmIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFVucGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW4gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgUGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5SZXNpemUoKSAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiB8fCBlLmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMCBwcy10b3AtMCBwcy1oLWZ1bGwgcHMtdy1weCBwcy1jdXJzb3ItY29sLXJlc2l6ZSBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOnBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgICApfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgY29sdW1uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgVG9vbHRpcFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXRvb2x0aXBcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUb29sdGlwUHJvdmlkZXIgPSBUb29sdGlwUHJpbWl0aXZlLlByb3ZpZGVyO1xuXG5jb25zdCBUb29sdGlwID0gVG9vbHRpcFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBUb29sdGlwVHJpZ2dlciA9IFRvb2x0aXBQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgVG9vbHRpcENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxUb29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8VG9vbHRpcFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYmctcHJpbWFyeSBwcy1weC0zIHBzLXB5LTEuNSBwcy10ZXh0LXhzIHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLWFuaW1hdGUtaW4gcHMtZmFkZS1pbi0wIHBzLXpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ub29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuVG9vbHRpcENvbnRlbnQuZGlzcGxheU5hbWUgPSBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBUcmlnZ2VyLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFByb3ZpZGVyIH07XG4iLCAiaW1wb3J0IHsgS2V5Um91bmQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdG9vbHRpcFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH06IHsgY29sdW1uOiBDb2x1bW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIHtjb2x1bW4uaXNJblByaW1hcnlLZXkgJiYgKFxuICAgICAgICA8VG9vbHRpcFByb3ZpZGVyIGRlbGF5RHVyYXRpb249ezEyMH0+XG4gICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgPEtleVJvdW5kIHNpemU9ezEyfSBjbGFzc05hbWU9XCJwcy10ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIDxUb29sdGlwQ29udGVudCBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwidGV4dC14c1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5QcmltYXJ5IEtleTwvc3Bhbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1Rvb2x0aXBQcm92aWRlcj5cbiAgICAgICl9XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LW1lZGl1bSBwcy10cnVuY2F0ZVwiPntjb2x1bW4ubmFtZX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNzAgcHMtbG93ZXJjYXNlIHBzLXRydW5jYXRlXCI+XG4gICAgICAgIHtjb2x1bW4uZGF0YXR5cGUubmFtZX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSBcIi4vQm9vbGVhbklucHV0XCI7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tIFwiLi9EYXRlSW5wdXRcIjtcbmltcG9ydCB7IEVudW1JbnB1dCB9IGZyb20gXCIuL0VudW1JbnB1dFwiO1xuaW1wb3J0IHsgSnNvbklucHV0IH0gZnJvbSBcIi4vSnNvbklucHV0XCI7XG5pbXBvcnQgeyBOdW1lcmljSW5wdXQgfSBmcm9tIFwiLi9OdW1lcmljSW5wdXRcIjtcbmltcG9ydCB7IFJhd0lucHV0IH0gZnJvbSBcIi4vUmF3SW5wdXRcIjtcbmltcG9ydCB7IFRpbWVJbnB1dCB9IGZyb20gXCIuL1RpbWVJbnB1dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXQocHJvcHM6IHtcbiAgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdDogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgeyBjZWxsLCBjb2x1bW4sIG9uU3VibWl0IH0gPSBwcm9wcztcbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuICBjb25zdCByZWFkb25seSA9IGNvbHVtbi5pc0NvbXB1dGVkIHx8IHByb3BzLnJlYWRvbmx5O1xuXG4gIGNvbnN0IGNlbGxWYWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICAvLyBvbiByb3cgaW5zZXJ0aW9ucywgd2UgdHJlYXQgdW5kZWZpbmVkIGFzIGVtcHR5IGlucHV0XG4gIGNvbnN0IHZhbHVlID0gY2VsbFZhbHVlID09PSB1bmRlZmluZWQgPyBcIlwiIDogY2VsbFZhbHVlO1xuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SnNvbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IG9wdGlvbnM9e29wdGlvbnN9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFJhd0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e2lzT2JqZWN0VHlwZSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zd2l0Y2hcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJvb2xlYW5JbnB1dChwcm9wczogQm9vbGVhbklucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gZmFsc2UgOiAodmFsdWUgYXMgYm9vbGVhbik7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZVRvU3VibWl0ID0gc2V0VG9OdWxsID8gbnVsbCA6IGN1cnJlbnRWYWx1ZTtcbiAgICBpZiAodmFsdWVUb1N1Ym1pdCAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KHZhbHVlVG9TdWJtaXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWdhcC00IHBzLXB5LTAgcHMtcHgtMlwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cImJvb2xlYW4taW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgQm9vbGVhblxuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjI0IH19XG4gICAgICAgID5cbiAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICBpZD1cImJvb2xlYW4taW5wdXRcIlxuICAgICAgICAgICAgY2hlY2tlZD17Y3VycmVudFZhbHVlfVxuICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBkYXRhLXZhbHVlXG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLWZvbnQtbW9ub1wiXG4gICAgICAgICAgaW5pdGlhbD17eyB4OiAtNDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IHg6IDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjEyLCBkZWxheTogMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3NldFRvTnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtbGFiZWxcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgbGFiZWxWYXJpYW50cyA9IGN2YShcbiAgXCJwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLWxlYWRpbmctbm9uZSBwZWVyLWRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBwZWVyLWRpc2FibGVkOnBzLW9wYWNpdHktNzBcIixcbik7XG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4gJiBWYXJpYW50UHJvcHM8dHlwZW9mIGxhYmVsVmFyaWFudHM+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxMYWJlbFByaW1pdGl2ZS5Sb290IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGxhYmVsVmFyaWFudHMoKSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5MYWJlbC5kaXNwbGF5TmFtZSA9IExhYmVsUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IExhYmVsIH07XG4iLCAiaW1wb3J0ICogYXMgU3dpdGNoUHJpbWl0aXZlcyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXN3aXRjaFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFN3aXRjaCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U3dpdGNoUHJpbWl0aXZlcy5Sb290XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1pbmxpbmUtZmxleCBwcy1oLTUgcHMtdy05IHBzLXNocmluay0wIHBzLWN1cnNvci1wb2ludGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLWZ1bGwgcHMtYm9yZGVyLTIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1zbSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpwcy1iZy1pbnB1dFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAgIHJlZj17cmVmfVxuICA+XG4gICAgPFN3aXRjaFByaW1pdGl2ZXMuVGh1bWJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcG9pbnRlci1ldmVudHMtbm9uZSBwcy1ibG9jayBwcy1oLTQgcHMtdy00IHBzLXJvdW5kZWQtZnVsbCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1sZyBwcy1yaW5nLTAgcHMtdHJhbnNpdGlvbi10cmFuc2Zvcm0gZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtNCBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLXRyYW5zbGF0ZS14LTBcIixcbiAgICAgICl9XG4gICAgLz5cbiAgPC9Td2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4pKTtcblN3aXRjaC5kaXNwbGF5TmFtZSA9IFN3aXRjaFByaW1pdGl2ZXMuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU3dpdGNoIH07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQ29ybmVyRG93bkxlZnQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90b29sdGlwXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRBY3Rpb25zUHJvcHMge1xuICBvblNhdmU/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBvbk51bGxDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaXNOdWxsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIG9uU2V0Tm93PzogKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIHNob3dTZXROb3c/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgSW5wdXRBY3Rpb25zID0gKHtcbiAgb25TYXZlLFxuICBvbkNhbmNlbCxcbiAgb25DbG9zZSxcbiAgb25OdWxsQ2hhbmdlLFxuICBpc051bGwgPSBmYWxzZSxcbiAgcmVhZG9ubHksXG4gIG9uU2V0Tm93LFxuICBzaG93U2V0Tm93LFxufTogSW5wdXRBY3Rpb25zUHJvcHMpID0+IHtcbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKG9uTnVsbENoYW5nZSkgb25OdWxsQ2hhbmdlKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSAoKSA9PiB7XG4gICAgaWYgKG9uU2F2ZSkgb25TYXZlKCk7XG4gICAgaWYgKG9uQ2xvc2UpIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgaWYgKG9uQ2FuY2VsKSBvbkNhbmNlbCgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy10ZXh0LXhzIHBzLXAtMlwiPlxuICAgICAgeyFyZWFkb25seSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1ncmlkIHBzLWdyaWQtY29scy0yIHBzLWdhcC0xIHBzLWl0ZW1zLXN0YXJ0IHBzLWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTYXZlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPENvcm5lckRvd25MZWZ0IHNpemU9ezEyfSBzdHJva2VXaWR0aD17Mn0gLz5cbiAgICAgICAgICAgICAgICAgIDwva2JkPntcIiBcIn1cbiAgICAgICAgICAgICAgICAgIFNhdmUgY2hhbmdlc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyIHBzLWN1cnNvci1wb2ludGVyIHBzLXNocmluay0wXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLXRleHQtWzhweF0gcHMtbGVhZGluZy1ub25lIHBzLWZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgRXNjXG4gICAgICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgICAgICBDYW5jZWwgY2hhbmdlc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICAgIHtvbk51bGxDaGFuZ2UgJiYgKFxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyIHBzLWN1cnNvci1wb2ludGVyIHBzLXNocmluay0wIHBzLWgtNlwiXG4gICAgICAgICAgICAgICAgICAgIGh0bWxGb3I9XCJzZXQtbnVsbGFibGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U3dpdGNoIGlkPVwic2V0LW51bGxhYmxlXCIgY2hlY2tlZD17aXNOdWxsfSBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZU51bGxDaGFuZ2V9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlNldCB0byBOVUxMPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAge3Nob3dTZXROb3cgJiYgKFxuICAgICAgICAgICAgICAgICAgPFRvb2x0aXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2V0Tm93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMCBwcy1oLTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNOdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdG8gTk9XXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPlNldCB0byB7ZGF5anMoKS5mb3JtYXQoXCJMTExcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHsgdHlwZSBGb3JtRXZlbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9jYWxlbmRhclwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVJbnB1dChwcm9wczogRGF0ZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5LCBjb2x1bW4gfSA9IHByb3BzO1xuXG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgLy8gUGFyc2UgdGhlIGluaXRpYWwgZGF0ZSBkaXJlY3RseVxuICBjb25zdCBwYXJzZWRJbml0aWFsRGF0ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZCA9IGRheWpzKGluaXRpYWxWYWx1ZSk7XG4gICAgcmV0dXJuIHBhcnNlZC5pc1ZhbGlkKCkgPyBwYXJzZWQudG9EYXRlKCkgOiBuZXcgRGF0ZSgpO1xuICB9LCBbaW5pdGlhbFZhbHVlXSk7XG5cbiAgLy8gSW5pdGlhbGl6ZSBzdGF0ZXMgd2l0aCB0aGUgcGFyc2VkIGRhdGVcbiAgY29uc3QgW3NlbGVjdGVkRGF0ZSwgc2V0U2VsZWN0ZWREYXRlXSA9IHVzZVN0YXRlPERhdGUgfCB1bmRlZmluZWQ+KHBhcnNlZEluaXRpYWxEYXRlKTtcbiAgY29uc3QgW2N1cnJlbnRNb250aCwgc2V0Q3VycmVudE1vbnRoXSA9IHVzZVN0YXRlPERhdGU+KHBhcnNlZEluaXRpYWxEYXRlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlOiBiYXNlSGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlLCBzZXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gQ3VzdG9tIG9uQ2hhbmdlIGhhbmRsZXJcbiAgY29uc3QgaGFuZGxlT25DaGFuZ2UgPSAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgYmFzZUhhbmRsZU9uQ2hhbmdlKGV2ZW50KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IGRheWpzKG5ld1ZhbHVlKTtcbiAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKSB7XG4gICAgICAgIGNvbnN0IG5ld0RhdGUgPSBwYXJzZWQudG9EYXRlKCk7XG4gICAgICAgIHNldFNlbGVjdGVkRGF0ZShuZXdEYXRlKTtcbiAgICAgICAgc2V0Q3VycmVudE1vbnRoKG5ld0RhdGUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgICAgLy8gSW52YWxpZCBkYXRlIGZvcm1hdFxuICAgIH1cbiAgfTtcblxuICAvLyBVcGRhdGUgaW5wdXRWYWx1ZSB3aGVuIGNhbGVuZGFyIHNlbGVjdGlvbiBjaGFuZ2VzXG4gIGNvbnN0IGhhbmRsZUNhbGVuZGFyU2VsZWN0ID0gKGRhdGU6IERhdGUgfCB1bmRlZmluZWQpID0+IHtcbiAgICBpZiAoIWRhdGUpIHJldHVybjtcblxuICAgIHNldFNlbGVjdGVkRGF0ZShkYXRlKTtcbiAgICBzZXRDdXJyZW50TW9udGgoZGF0ZSk7XG5cbiAgICBjb25zdCBjb2x1bW5UeXBlID0gY29sdW1uPy5kYXRhdHlwZT8ubmFtZSB8fCAoY29sdW1uPy5kYXRhdHlwZSBhcyB1bmtub3duIGFzIHN0cmluZyk7XG4gICAgY29uc3QgZGJGb3JtYXQgPSBnZXRGb3JtYXRGb3JUeXBlKGNvbHVtblR5cGUpO1xuXG4gICAgaWYgKGRiRm9ybWF0KSB7XG4gICAgICBzZXRWYWx1ZShkYXlqcyhkYXRlKS5mb3JtYXQoZGJGb3JtYXQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoZGF5anMoZGF0ZSkudG9JU09TdHJpbmcoKSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldEZvcm1hdEZvclR5cGUgPSAodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICByZXR1cm4gXCJZWVlZLU1NLUREXCI7XG4gICAgICBjYXNlIFwidGltZVwiOlxuICAgICAgICByZXR1cm4gXCJISDptbTpzcy5TU1NTU1wiO1xuICAgICAgY2FzZSBcInRpbWVzdGFtcFwiOlxuICAgICAgICByZXR1cm4gXCJZWVlZLU1NLUREIEhIOm1tOnNzLlNTU1NTU1wiO1xuICAgICAgY2FzZSBcInRpbWVzdGFtcHR6XCI6XG4gICAgICAgIHJldHVybiBcIllZWVktTU0tREQgSEg6bW06c3MuU1NTU1NTWlwiO1xuICAgICAgY2FzZSBcInRpbWV0elwiOlxuICAgICAgICByZXR1cm4gXCJISDptbTpzcy5TU1NTU1NaXCI7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICAvLyBGb3JtYXQgdGhlIGRhdGUgdXNpbmcgZGF5anMgYmFzZWQgb24gZGV0ZWN0ZWQgZm9ybWF0XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKCFkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgICBjb25zdCBoYXNUaW1lID0gaW5wdXRWYWx1ZS5pbmNsdWRlcyhcIjpcIik7XG5cbiAgICAgIC8vIEh1bWFuLXJlYWRhYmxlIGZvcm1hdCAobG9jYWxpemVkKVxuICAgICAgaWYgKGhhc1RpbWUpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTEwgTFRTXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTExcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVTZXROb3cgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgLy8gQ3JlYXRlIGEgZnJlc2ggbmV3IERhdGUgb2JqZWN0XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcblxuICAgIC8vIFVwZGF0ZSBzdGF0ZXNcbiAgICBzZXRTZWxlY3RlZERhdGUobm93KTtcbiAgICBzZXRDdXJyZW50TW9udGgobm93KTtcblxuICAgIC8vIEZvcm1hdCBmb3IgaW5wdXRcbiAgICBjb25zdCBjb2x1bW5UeXBlID0gY29sdW1uPy5kYXRhdHlwZT8ubmFtZSB8fCAoY29sdW1uPy5kYXRhdHlwZSBhcyB1bmtub3duIGFzIHN0cmluZyk7XG4gICAgY29uc3QgZGJGb3JtYXQgPSBnZXRGb3JtYXRGb3JUeXBlKGNvbHVtblR5cGUpO1xuICAgIHNldFZhbHVlKGRiRm9ybWF0ID8gZGF5anMobm93KS5mb3JtYXQoZGJGb3JtYXQpIDogZGF5anMobm93KS50b0lTT1N0cmluZygpKTtcbiAgfTtcblxuICAvLyBHZW5lcmF0ZSBtb250aCBvcHRpb25zIGZvciB0aGUgc2VsZWN0XG4gIGNvbnN0IG1vbnRocyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gW1xuICAgICAgeyB2YWx1ZTogXCIwXCIsIGxhYmVsOiBcIkphbnVhcnlcIiB9LFxuICAgICAgeyB2YWx1ZTogXCIxXCIsIGxhYmVsOiBcIkZlYnJ1YXJ5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiMlwiLCBsYWJlbDogXCJNYXJjaFwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjNcIiwgbGFiZWw6IFwiQXByaWxcIiB9LFxuICAgICAgeyB2YWx1ZTogXCI0XCIsIGxhYmVsOiBcIk1heVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjVcIiwgbGFiZWw6IFwiSnVuZVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjZcIiwgbGFiZWw6IFwiSnVseVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjdcIiwgbGFiZWw6IFwiQXVndXN0XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiOFwiLCBsYWJlbDogXCJTZXB0ZW1iZXJcIiB9LFxuICAgICAgeyB2YWx1ZTogXCI5XCIsIGxhYmVsOiBcIk9jdG9iZXJcIiB9LFxuICAgICAgeyB2YWx1ZTogXCIxMFwiLCBsYWJlbDogXCJOb3ZlbWJlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjExXCIsIGxhYmVsOiBcIkRlY2VtYmVyXCIgfSxcbiAgICBdLFxuICAgIFtdLFxuICApO1xuXG4gIC8vIEdldCB0aGUgY3VycmVudCBtb250aCBhbmQgeWVhciB2YWx1ZXNcbiAgY29uc3QgY3VycmVudE1vbnRoVmFsdWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gY3VycmVudE1vbnRoLmdldE1vbnRoKCkudG9TdHJpbmcoKTtcbiAgfSwgW2N1cnJlbnRNb250aF0pO1xuXG4gIGNvbnN0IFt5ZWFyVmFsdWUsIHNldFllYXJWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIGN1cnJlbnRNb250aC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBtb250aCBzZWxlY3Rpb24gY2hhbmdlXG4gIGNvbnN0IGhhbmRsZU1vbnRoQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBuZXdNb250aCA9IG5ldyBEYXRlKGN1cnJlbnRNb250aCk7XG4gICAgbmV3TW9udGguc2V0TW9udGgocGFyc2VJbnQodmFsdWUpKTtcbiAgICBzZXRDdXJyZW50TW9udGgobmV3TW9udGgpO1xuXG4gICAgLy8gSWYgd2UgYWxzbyBoYXZlIGEgc2VsZWN0ZWQgZGF0ZSwgdXBkYXRlIGl0cyBtb250aFxuICAgIGlmIChzZWxlY3RlZERhdGUpIHtcbiAgICAgIGNvbnN0IG5ld1NlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHNlbGVjdGVkRGF0ZSk7XG4gICAgICBuZXdTZWxlY3RlZERhdGUuc2V0TW9udGgocGFyc2VJbnQodmFsdWUpKTtcbiAgICAgIHNldFNlbGVjdGVkRGF0ZShuZXdTZWxlY3RlZERhdGUpO1xuXG4gICAgICAvLyBVcGRhdGUgdGhlIGlucHV0IHZhbHVlIHRvIHJlZmxlY3QgdGhlIG5ldyBkYXRlXG4gICAgICBjb25zdCBjb2x1bW5UeXBlID0gY29sdW1uPy5kYXRhdHlwZT8ubmFtZSB8fCAoY29sdW1uPy5kYXRhdHlwZSBhcyB1bmtub3duIGFzIHN0cmluZyk7XG4gICAgICBjb25zdCBkYkZvcm1hdCA9IGdldEZvcm1hdEZvclR5cGUoY29sdW1uVHlwZSk7XG4gICAgICBzZXRWYWx1ZShkYkZvcm1hdCA/IGRheWpzKG5ld1NlbGVjdGVkRGF0ZSkuZm9ybWF0KGRiRm9ybWF0KSA6IGRheWpzKG5ld1NlbGVjdGVkRGF0ZSkudG9JU09TdHJpbmcoKSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIEhhbmRsZSB5ZWFyIGlucHV0IGNoYW5nZVxuICBjb25zdCBoYW5kbGVZZWFyQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgbmV3WWVhciA9IGUudGFyZ2V0LnZhbHVlO1xuICAgIHNldFllYXJWYWx1ZShuZXdZZWFyKTtcblxuICAgIC8vIE9ubHkgdXBkYXRlIGRhdGVzIGlmIHdlIGhhdmUgYSB2YWxpZCB5ZWFyXG4gICAgaWYgKC9eXFxkezR9JC8udGVzdChuZXdZZWFyKSkge1xuICAgICAgY29uc3QgeWVhciA9IHBhcnNlSW50KG5ld1llYXIpO1xuXG4gICAgICAvLyBVcGRhdGUgdGhlIG1vbnRoIGRpc3BsYXlcbiAgICAgIGNvbnN0IG5ld01vbnRoID0gbmV3IERhdGUoY3VycmVudE1vbnRoKTtcbiAgICAgIG5ld01vbnRoLnNldEZ1bGxZZWFyKHllYXIpO1xuICAgICAgc2V0Q3VycmVudE1vbnRoKG5ld01vbnRoKTtcblxuICAgICAgLy8gQWx3YXlzIHVwZGF0ZSBpbnB1dCB2YWx1ZSBldmVuIGlmIG5vIGRhdGUgaXMgc2VsZWN0ZWQgeWV0XG4gICAgICAvLyBJZiBubyBkYXRlIHNlbGVjdGVkLCBjcmVhdGUgb25lIHVzaW5nIGN1cnJlbnQgbW9udGggd2l0aCB0aGUgbmV3IHllYXJcbiAgICAgIGNvbnN0IG5ld1NlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkRGF0ZSA/IG5ldyBEYXRlKHNlbGVjdGVkRGF0ZSkgOiBuZXcgRGF0ZShuZXdNb250aCk7IC8vIENyZWF0ZSBuZXcgZGF0ZSBmcm9tIG1vbnRoIHZpZXcgaWYgbm8gc2VsZWN0aW9uXG5cbiAgICAgIG5ld1NlbGVjdGVkRGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcbiAgICAgIHNldFNlbGVjdGVkRGF0ZShuZXdTZWxlY3RlZERhdGUpO1xuXG4gICAgICAvLyBVcGRhdGUgdGhlIGlucHV0IHZhbHVlXG4gICAgICBjb25zdCBjb2x1bW5UeXBlID0gY29sdW1uPy5kYXRhdHlwZT8ubmFtZSB8fCAoY29sdW1uPy5kYXRhdHlwZSBhcyB1bmtub3duIGFzIHN0cmluZyk7XG4gICAgICBjb25zdCBkYkZvcm1hdCA9IGdldEZvcm1hdEZvclR5cGUoY29sdW1uVHlwZSk7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGRiRm9ybWF0ID8gZGF5anMobmV3U2VsZWN0ZWREYXRlKS5mb3JtYXQoZGJGb3JtYXQpIDogZGF5anMobmV3U2VsZWN0ZWREYXRlKS50b0lTT1N0cmluZygpO1xuICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuXG4gICAgICAvLyBEZWJ1ZyBsb2dnaW5nXG4gICAgICBjb25zb2xlLmxvZyhcIlllYXIgdXBkYXRlZDpcIiwge1xuICAgICAgICB5ZWFyLFxuICAgICAgICBuZXdTZWxlY3RlZERhdGUsXG4gICAgICAgIG5ld1ZhbHVlLFxuICAgICAgICBkYkZvcm1hdCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICAvLyBVcGRhdGUgeWVhciB2YWx1ZSB3aGVuIHNlbGVjdGVkRGF0ZSBjaGFuZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkRGF0ZSkge1xuICAgICAgc2V0WWVhclZhbHVlKHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgfSwgW3NlbGVjdGVkRGF0ZV0pO1xuXG4gIC8vIFVwZGF0ZSBtb250aCBhbmQgeWVhciB3aGVuIGNhbGVuZGFyIG1vbnRoIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY3VycmVudE1vbnRoKSB7XG4gICAgICBzZXRZZWFyVmFsdWUoY3VycmVudE1vbnRoLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9LCBbY3VycmVudE1vbnRoXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1wci1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCI+XG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMCBwcy1wLTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1tYi0xIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17Y3VycmVudE1vbnRoVmFsdWV9IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZU1vbnRoQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJvcmRlci1wcmltYXJ5IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIk1vbnRoXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICB7bW9udGhzLm1hcCgobW9udGgpID0+IChcbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e21vbnRoLnZhbHVlfSB2YWx1ZT17bW9udGgudmFsdWV9PlxuICAgICAgICAgICAgICAgICAge21vbnRoLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdy0yMCBwcy10ZXh0LXJpZ2h0IHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1zaGFkb3ctbm9uZSBwcy1iZy1uZXV0cmFsLTIwMC80MFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICB2YWx1ZT17eWVhclZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVllYXJDaGFuZ2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlllYXJcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8RGF5UGlja2VyV3JhcHBlclxuICAgICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZERhdGV9XG4gICAgICAgICAgbW9udGg9e2N1cnJlbnRNb250aH1cbiAgICAgICAgICBvblNlbGVjdD17aGFuZGxlQ2FsZW5kYXJTZWxlY3R9XG4gICAgICAgICAgb25Nb250aENoYW5nZT17c2V0Q3VycmVudE1vbnRofVxuICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgLz5cbiAgICAgICAgPGNvZGUgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiPntmb3JtYXR0ZWREYXRlfTwvY29kZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgICAgb25TZXROb3c9e2hhbmRsZVNldE5vd31cbiAgICAgICAgc2hvd1NldE5vdz17dHJ1ZX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbi8vIEEgd3JhcHBlciBjb21wb25lbnQgdG8gZW5zdXJlIHByb3BlciBwcm9wcyBhcmUgcGFzc2VkIHRvIERheVBpY2tlclxuZnVuY3Rpb24gRGF5UGlja2VyV3JhcHBlcih7XG4gIHNlbGVjdGVkLFxuICBtb250aCxcbiAgb25TZWxlY3QsXG4gIG9uTW9udGhDaGFuZ2UsXG4gIGRpc2FibGVkLFxufToge1xuICBzZWxlY3RlZD86IERhdGU7XG4gIG1vbnRoOiBEYXRlO1xuICBvblNlbGVjdDogKGRhdGU6IERhdGUgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIG9uTW9udGhDaGFuZ2U6IChkYXRlOiBEYXRlKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59KSB7XG4gIHJldHVybiAoXG4gICAgPENhbGVuZGFyXG4gICAgICBtb2RlPVwic2luZ2xlXCJcbiAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgIG9uU2VsZWN0PXtvblNlbGVjdH1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIG1vbnRoPXttb250aH1cbiAgICAgIG9uTW9udGhDaGFuZ2U9e29uTW9udGhDaGFuZ2V9XG4gICAgICBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIlxuICAgICAgY2FwdGlvbkxheW91dD1cImRyb3Bkb3duXCJcbiAgICAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IERheVBpY2tlciB9IGZyb20gXCJyZWFjdC1kYXktcGlja2VyXCI7XG5cbmltcG9ydCB7IGJ1dHRvblZhcmlhbnRzIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIENhbGVuZGFyUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGF5UGlja2VyPiAmIHtcbiAgY2FwdGlvbkxhYmVsQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRheUJ1dHRvbkNsYXNzTmFtZT86IHN0cmluZztcbiAgZHJvcGRvd25zQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBmb290ZXJDbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vbnRoQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBtb250aENhcHRpb25DbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vbnRoR3JpZENsYXNzTmFtZT86IHN0cmluZztcbiAgbW9udGhzQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB3ZWVrQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB3ZWVrZGF5Q2xhc3NOYW1lPzogc3RyaW5nO1xuICB3ZWVrZGF5c0NsYXNzTmFtZT86IHN0cmluZztcbiAgcmFuZ2VFbmRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJhbmdlTWlkZGxlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICByYW5nZVN0YXJ0Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBzZWxlY3RlZENsYXNzTmFtZT86IHN0cmluZztcbiAgZGlzYWJsZWRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGhpZGRlbkNsYXNzTmFtZT86IHN0cmluZztcbiAgb3V0c2lkZUNsYXNzTmFtZT86IHN0cmluZztcbiAgdG9kYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdFRyaWdnZXJDbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBDYWxlbmRhcih7IGNsYXNzTmFtZSwgY2xhc3NOYW1lcywgc2hvd091dHNpZGVEYXlzID0gdHJ1ZSwgaGlkZU5hdmlnYXRpb24sIC4uLnByb3BzIH06IENhbGVuZGFyUHJvcHMpIHtcbiAgY29uc3QgX21vbnRoc0NsYXNzTmFtZSA9IGNuKFwicmVsYXRpdmUgZmxleCBmbGV4LWNvbCBnYXAtNCBzbTpmbGV4LXJvd1wiLCBwcm9wcy5tb250aHNDbGFzc05hbWUpO1xuICBjb25zdCBfbW9udGhDYXB0aW9uQ2xhc3NOYW1lID0gY24oXCJyZWxhdGl2ZSBmbGV4IGgtNyBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIiwgcHJvcHMubW9udGhDYXB0aW9uQ2xhc3NOYW1lKTtcbiAgY29uc3QgX2Ryb3Bkb3duc0NsYXNzTmFtZSA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCIsXG4gICAgaGlkZU5hdmlnYXRpb24gPyBcInBzLXctZnVsbFwiIDogXCJwcy1oaWRkZW5cIixcbiAgICBwcm9wcy5kcm9wZG93bnNDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9mb290ZXJDbGFzc05hbWUgPSBjbihcInBzLXB0LTMgcHMtdGV4dC14c1wiLCBwcm9wcy5mb290ZXJDbGFzc05hbWUpO1xuICBjb25zdCBfd2Vla2RheXNDbGFzc05hbWUgPSBjbihcInBzLWZsZXhcIiwgcHJvcHMud2Vla2RheXNDbGFzc05hbWUpO1xuICBjb25zdCBfd2Vla2RheUNsYXNzTmFtZSA9IGNuKFwicHMtdy05IHBzLXRleHQteHMgcHMtZm9udC1ub3JtYWwgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIHByb3BzLndlZWtkYXlDbGFzc05hbWUpO1xuICBjb25zdCBfY2FwdGlvbkxhYmVsQ2xhc3NOYW1lID0gY24oXCJwcy10cnVuY2F0ZSBwcy10ZXh0LXhzIHBzLWZvbnQtbWVkaXVtXCIsIHByb3BzLmNhcHRpb25MYWJlbENsYXNzTmFtZSk7XG5cbiAgY29uc3QgX21vbnRoR3JpZENsYXNzTmFtZSA9IGNuKFwicHMtbXgtYXV0byBwcy1tdC00XCIsIHByb3BzLm1vbnRoR3JpZENsYXNzTmFtZSk7XG4gIGNvbnN0IF93ZWVrQ2xhc3NOYW1lID0gY24oXCJwcy1tdC0wIHBzLWZsZXggcHMtdy1tYXggcHMtaXRlbXMtc3RhcnRcIiwgcHJvcHMud2Vla0NsYXNzTmFtZSk7XG4gIGNvbnN0IF9kYXlDbGFzc05hbWUgPSBjbihcbiAgICBcInBzLWZsZXggcHMtc2l6ZS05IHBzLWZsZXgtMSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcC0wIHBzLXRleHQteHNcIixcbiAgICBwcm9wcy5kYXlDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9kYXlCdXR0b25DbGFzc05hbWUgPSBjbihcbiAgICBidXR0b25WYXJpYW50cyh7IHZhcmlhbnQ6IFwiZ2hvc3RcIiB9KSxcbiAgICBcInBzLXNpemUtOCBwcy1yb3VuZGVkLW1kIHBzLXAtMCBwcy1mb250LW5vcm1hbCBwcy10ZXh0LXhzIHBzLXRyYW5zaXRpb24tbm9uZSBhcmlhLXNlbGVjdGVkOnBzLW9wYWNpdHktMTAwXCIsXG4gICAgcHJvcHMuZGF5QnV0dG9uQ2xhc3NOYW1lLFxuICApO1xuXG4gIGNvbnN0IGJ1dHRvblJhbmdlQ2xhc3NOYW1lID1cbiAgICBcInBzLWJnLWFjY2VudCBwcy1bJj5idXR0b25dOnBzLWJnLXByaW1hcnkgWyY+YnV0dG9uXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBbJj5idXR0b25dOnBzLWhvdmVyOnBzLWJnLXByaW1hcnkgWyY+YnV0dG9uXTpwcy1ob3Zlcjpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiO1xuICBjb25zdCBfcmFuZ2VTdGFydENsYXNzTmFtZSA9IGNuKGJ1dHRvblJhbmdlQ2xhc3NOYW1lLCBcInBzLXJvdW5kZWQtcy1tZFwiLCBwcm9wcy5yYW5nZVN0YXJ0Q2xhc3NOYW1lKTtcbiAgY29uc3QgX3JhbmdlRW5kQ2xhc3NOYW1lID0gY24oYnV0dG9uUmFuZ2VDbGFzc05hbWUsIFwicHMtcm91bmRlZC1lLW1kXCIsIHByb3BzLnJhbmdlRW5kQ2xhc3NOYW1lKTtcbiAgY29uc3QgX3JhbmdlTWlkZGxlQ2xhc3NOYW1lID0gY24oXG4gICAgXCJwcy1iZy1hY2NlbnQgIXBzLXRleHQtZm9yZWdyb3VuZCBbJj5idXR0b25dOnBzLWJnLXRyYW5zcGFyZW50IFsmPmJ1dHRvbl06IXBzLXRleHQtZm9yZWdyb3VuZCBbJj5idXR0b25dOmhvdmVyOnBzLWJnLXRyYW5zcGFyZW50IFsmPmJ1dHRvbl06aG92ZXI6IXBzLXRleHQtZm9yZWdyb3VuZFwiLFxuICAgIHByb3BzLnJhbmdlTWlkZGxlQ2xhc3NOYW1lLFxuICApO1xuICBjb25zdCBfc2VsZWN0ZWRDbGFzc05hbWUgPSBjbihcbiAgICBcIlsmPmJ1dHRvbl06cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06cHMtaG92ZXI6cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLWhvdmVyOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgXCJbJlthcmlhLXNlbGVjdGVkXT5idXR0b25dOnBzLWJnLXByaW1hcnkgWyZbYXJpYS1zZWxlY3RlZF0+YnV0dG9uXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgIHByb3BzLnNlbGVjdGVkQ2xhc3NOYW1lLFxuICApO1xuICBjb25zdCBfdG9kYXlDbGFzc05hbWUgPSBjbihcIlsmPmJ1dHRvbl06cHMtZm9udC1ib2xkIFsmPmJ1dHRvbl06cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLCBwcm9wcy50b2RheUNsYXNzTmFtZSk7XG4gIGNvbnN0IF9vdXRzaWRlQ2xhc3NOYW1lID0gY24oXG4gICAgXCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtb3BhY2l0eS01MCBhcmlhLXNlbGVjdGVkOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBhcmlhLXNlbGVjdGVkOnBzLW9wYWNpdHktMzBcIixcbiAgICBwcm9wcy5vdXRzaWRlQ2xhc3NOYW1lLFxuICApO1xuICBjb25zdCBfZGlzYWJsZWRDbGFzc05hbWUgPSBjbihcInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1vcGFjaXR5LTUwXCIsIHByb3BzLmRpc2FibGVkQ2xhc3NOYW1lKTtcbiAgY29uc3QgX2hpZGRlbkNsYXNzTmFtZSA9IGNuKFwicHMtaW52aXNpYmxlIHBzLWZsZXgtMVwiLCBwcm9wcy5oaWRkZW5DbGFzc05hbWUpO1xuXG4gIHJldHVybiAoXG4gICAgPERheVBpY2tlclxuICAgICAgbW9kZT1cInNpbmdsZVwiXG4gICAgICBjYXB0aW9uTGF5b3V0PVwibGFiZWxcIlxuICAgICAgaGlkZU5hdmlnYXRpb25cbiAgICAgIHNob3dPdXRzaWRlRGF5cz17c2hvd091dHNpZGVEYXlzfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLXAtMFwiLCBjbGFzc05hbWUpfVxuICAgICAgY2xhc3NOYW1lcz17e1xuICAgICAgICBjYXB0aW9uX2xhYmVsOiBfY2FwdGlvbkxhYmVsQ2xhc3NOYW1lLFxuICAgICAgICBkYXk6IF9kYXlDbGFzc05hbWUsXG4gICAgICAgIGRheV9idXR0b246IF9kYXlCdXR0b25DbGFzc05hbWUsXG4gICAgICAgIGRyb3Bkb3duczogX2Ryb3Bkb3duc0NsYXNzTmFtZSxcbiAgICAgICAgZm9vdGVyOiBfZm9vdGVyQ2xhc3NOYW1lLFxuICAgICAgICBtb250aDogcHJvcHMubW9udGhDbGFzc05hbWUsXG4gICAgICAgIG1vbnRoX2NhcHRpb246IF9tb250aENhcHRpb25DbGFzc05hbWUsXG4gICAgICAgIG1vbnRoX2dyaWQ6IF9tb250aEdyaWRDbGFzc05hbWUsXG4gICAgICAgIG1vbnRoczogX21vbnRoc0NsYXNzTmFtZSxcbiAgICAgICAgd2VlazogX3dlZWtDbGFzc05hbWUsXG4gICAgICAgIHdlZWtkYXk6IF93ZWVrZGF5Q2xhc3NOYW1lLFxuICAgICAgICB3ZWVrZGF5czogX3dlZWtkYXlzQ2xhc3NOYW1lLFxuICAgICAgICByYW5nZV9lbmQ6IF9yYW5nZUVuZENsYXNzTmFtZSxcbiAgICAgICAgcmFuZ2VfbWlkZGxlOiBfcmFuZ2VNaWRkbGVDbGFzc05hbWUsXG4gICAgICAgIHJhbmdlX3N0YXJ0OiBfcmFuZ2VTdGFydENsYXNzTmFtZSxcbiAgICAgICAgc2VsZWN0ZWQ6IF9zZWxlY3RlZENsYXNzTmFtZSxcbiAgICAgICAgZGlzYWJsZWQ6IF9kaXNhYmxlZENsYXNzTmFtZSxcbiAgICAgICAgaGlkZGVuOiBfaGlkZGVuQ2xhc3NOYW1lLFxuICAgICAgICBvdXRzaWRlOiBfb3V0c2lkZUNsYXNzTmFtZSxcbiAgICAgICAgdG9kYXk6IF90b2RheUNsYXNzTmFtZSxcbiAgICAgICAgbmF2OiBcInBzLWhpZGRlblwiLFxuICAgICAgICAuLi5jbGFzc05hbWVzLFxuICAgICAgfX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuQ2FsZW5kYXIuZGlzcGxheU5hbWUgPSBcIkNhbGVuZGFyXCI7XG5cbmV4cG9ydCB7IENhbGVuZGFyIH07XG4iLCAiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VJbnB1dFByb3BzIHtcbiAgaW5pdGlhbFZhbHVlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW5wdXQocHJvcHM6IFVzZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBpbml0aWFsVmFsdWUgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nPihpbml0aWFsVmFsdWUgPz8gXCJcIik7XG5cbiAgY29uc3QgaGFuZGxlT25DaGFuZ2UgPSAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4geyBoYW5kbGVPbkNoYW5nZSwgdmFsdWUsIHNldFZhbHVlIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgYmFkZ2VWYXJpYW50cyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/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+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBBcnJvd1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHV1aWQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlIH0gZnJvbSBcIkAvdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgdXNlRmlsdGVyaW5nIH0gZnJvbSBcIkAvdWkvaG9va3MvdXNlLWZpbHRlcmluZ1wiO1xuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCJAL3VpL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBMaW5rKHByb3BzOiB7IGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+OyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIGNvbnN0IHsgY2VsbCwgY29sdW1uIH0gPSBwcm9wcztcbiAgY29uc3QgeyBma1NjaGVtYSwgZmtUYWJsZSwgZmtDb2x1bW4gfSA9IGNvbHVtbjtcbiAgY29uc3QgeyBoYW5kbGVTY2hlbWFDaGFuZ2UsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuICBjb25zdCB7IHNldEFwcGxpZWRGaWx0ZXIgfSA9IHVzZUZpbHRlcmluZygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24gfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcblxuICBpZiAoZmtTY2hlbWEgIT09IG51bGwgJiYgZmtUYWJsZSAhPT0gbnVsbCAmJiBma0NvbHVtbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRhYmxlID0gaW50cm9zcGVjdGlvbi5zY2hlbWFzW2ZrU2NoZW1hXT8udGFibGVzW2ZrVGFibGVdO1xuXG4gICAgaWYgKHRhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzaXplPXtcInhzXCJ9XG4gICAgICAgICAgdmFyaWFudD17XCJvdXRsaW5lXCJ9XG4gICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoYW5kbGVTY2hlbWFDaGFuZ2UoZmtTY2hlbWEpO1xuICAgICAgICAgICAgaGFuZGxlVGFibGVDaGFuZ2UodGFibGUpO1xuICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcih7XG4gICAgICAgICAgICAgIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgICAgICAgICAgICAgaWQ6IHV1aWQuZ2VuZXJhdGUoKSxcbiAgICAgICAgICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBraW5kOiBcIkNvbHVtbkZpbHRlclwiLFxuICAgICAgICAgICAgICAgICAgaWQ6IHV1aWQuZ2VuZXJhdGUoKSxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbjogZmtDb2x1bW4sXG4gICAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCI9XCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgICAgICAgICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8QXJyb3dSaWdodCBzaXplPXsxMn0gLz5cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGtleU1hcCwgdXNlUXVlcnlTdGF0ZSwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5pbXBvcnQgeyBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCwgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8qKlxuICogSG9vayB0byBlbmNhcHN1bGF0ZSBhbGwgbG9naWMgZm9yIG1hbmFnaW5nIHRoZSBhY3RpdmUgdGFibGUgc2VsZWN0aW9uLlxuICogSGFuZGxlcyBzeW5jaW5nIHdpdGggVVJMIHBhcmFtcywgZGVmYXVsdCBzZWxlY3Rpb24sIGFuZCBleHBvc2VzIGEgc2ltcGxlIEFQSSBmb3IgY29uc3VtZXJzLlxuICogU2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoaW4gU3R1ZGlvIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIGFjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlU2NoZW1hLCBhZGFwdGVyLCBlbWl0VGVsZW1ldHJ5RXZlbnQgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGRhdGFVcGRhdGVkQXQgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgaXNMb2FkaW5nID0gZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQ7XG5cbiAgY29uc3QgW3RhYmxlQW5kU2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYV0gPSB1c2VRdWVyeVN0YXRlcyhcbiAgICBrZXlNYXAoe1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgfHwgYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgfHwgYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIsXG4gICAgICB9LFxuICAgIH0pLFxuICApO1xuXG4gIC8vIEFkZCBxdWVyeSBzdGF0ZSBmb3IgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXNcbiAgY29uc3QgWywgc2V0UGFnZVBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJwYWdlSW5kZXhcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuICBjb25zdCBbLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInNvcnRcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIEdldCBhbGwgdGFibGVzIGZvciB0aGUgY3VycmVudCBzY2hlbWEgZnJvbSBVUkwgb3IgZGVmYXVsdFxuICBjb25zdCB0YWJsZXM6IFRhYmxlW10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAvLyBBbHdheXMgdXNlIHRoZSBhY3RpdmVTY2hlbWEgZnJvbSBjb250ZXh0XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzW2FjdGl2ZVNjaGVtYV0/LnRhYmxlcyB8fCB7fSk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXMsIGFjdGl2ZVNjaGVtYV0pO1xuXG4gIC8vIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgdGFibGVzIGFjcm9zcyBhbGwgc2NoZW1hc1xuICBjb25zdCB0b3RhbFRhYmxlQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXMpLnJlZHVjZSgoc3VtLCBzY2hlbWEpID0+IHtcbiAgICAgIHJldHVybiBzdW0gKyBPYmplY3Qua2V5cyhzY2hlbWEudGFibGVzKS5sZW5ndGg7XG4gICAgfSwgMCk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXNdKTtcblxuICBjb25zdCBbZmlyc3RUYWJsZV0gPSB0YWJsZXM7XG5cbiAgLy8gRWZmZWN0IHRvIHN5bmMgYWN0aXZlIHRhYmxlIHdpdGggVVJMIHBhcmFtIGFuZCBkZWZhdWx0c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmcpIHJldHVybjtcbiAgICAvLyBJZiBzY2hlbWEgYW5kIHRhYmxlIHBhcmFtcyBpbiBVUkwsIHRyeSB0byBzZXQgdGhhdCB0YWJsZVxuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8udGFibGUgJiYgdGFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIExvb2sgZm9yIGEgdGFibGUgdGhhdCBtYXRjaGVzIGJvdGggbmFtZSBhbmQgc2NoZW1hIGZyb20gVVJMIHBhcmFtc1xuICAgICAgY29uc3QgdGFibGVGcm9tUGFyYW0gPSB0YWJsZXMuZmluZCgodCkgPT4gdC5uYW1lID09PSB0YWJsZUFuZFNjaGVtYS50YWJsZSAmJiB0LnNjaGVtYSA9PT0gYWN0aXZlU2NoZW1hKTtcblxuICAgICAgaWYgKHRhYmxlRnJvbVBhcmFtKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKHRhYmxlRnJvbVBhcmFtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiBubyBzY2hlbWEvdGFibGUgcGFyYW1zIG9yIG5vdCBmb3VuZCwgc2V0IGZpcnN0IHRhYmxlIGFzIGRlZmF1bHRcbiAgICBpZiAodGFibGVzLmxlbmd0aCA+IDAgJiYgIWFjdGl2ZVRhYmxlKSB7XG4gICAgICBzZXRBY3RpdmVUYWJsZShmaXJzdFRhYmxlIHx8IG51bGwpO1xuICAgICAgaWYgKGZpcnN0VGFibGUpIHtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBmaXJzdFRhYmxlLm5hbWUsIHNjaGVtYTogYWN0aXZlU2NoZW1hIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzTG9hZGluZywgdGFibGVBbmRTY2hlbWEsIHRhYmxlcywgZmlyc3RUYWJsZSwgYWN0aXZlVGFibGUsIGFjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hXSk7XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgYWN0aXZlIHRhYmxlIGFuZCB1cGRhdGUgdGhlIFVSTCBwYXJhbS5cbiAgICogQWxzbyBjbGVhcnMgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlVGFibGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VGFibGU6IFRhYmxlKSA9PiB7XG4gICAgICBpZiAoYWN0aXZlVGFibGUgIT09IG5ld1RhYmxlKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKG5ld1RhYmxlKTtcbiAgICAgICAgLy8gRW5zdXJlIGJvdGggdGFibGUgYW5kIHNjaGVtYSBhcmUgYWx3YXlzIGluY2x1ZGVkIGluIHRoZSBVUkxcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7XG4gICAgICAgICAgdGFibGU6IG5ld1RhYmxlLm5hbWUsXG4gICAgICAgICAgc2NoZW1hOiBuZXdUYWJsZS5zY2hlbWEsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBDbGVhciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXNcbiAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWEsIHNldFBhZ2VQYXJhbSwgc2V0U29ydFBhcmFtXSxcbiAgKTtcblxuICAvLyBIYW5kbGUgc2NoZW1hIGNoYW5nZVxuICBjb25zdCBoYW5kbGVTY2hlbWFDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3U2NoZW1hOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChuZXdTY2hlbWEgIT09IGFjdGl2ZVNjaGVtYSkge1xuICAgICAgICBzZXRBY3RpdmVUYWJsZShudWxsKTtcbiAgICAgICAgc2V0QWN0aXZlU2NoZW1hKG5ld1NjaGVtYSk7XG4gICAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoeyB0YWJsZTogbnVsbCwgc2NoZW1hOiBuZXdTY2hlbWEgfSk7XG4gICAgICAgIHZvaWQgc2V0UGFnZVBhcmFtKG51bGwpO1xuICAgICAgICB2b2lkIHNldFNvcnRQYXJhbShudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFthY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hLCBzZXRQYWdlUGFyYW0sIHNldFNvcnRQYXJhbV0sXG4gICk7XG5cbiAgLy8gU3luYyBVUkwgc2NoZW1hIHBhcmFtZXRlciB3aXRoIGFjdGl2ZVNjaGVtYSBmcm9tIGNvbnRleHRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBPbmx5IHVwZGF0ZSBVUkwgaWYgdGhlIHNjaGVtYSBmcm9tIFVSTCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYWN0aXZlU2NoZW1hXG4gICAgaWYgKHRhYmxlQW5kU2NoZW1hPy5zY2hlbWEgIT09IGFjdGl2ZVNjaGVtYSAmJiAhaXNMb2FkaW5nKSB7XG4gICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBzY2hlbWE6IGFjdGl2ZVNjaGVtYSB9KSk7XG4gICAgfVxuICB9LCBbYWN0aXZlU2NoZW1hLCB0YWJsZUFuZFNjaGVtYT8uc2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYSwgaXNMb2FkaW5nXSk7XG5cbiAgLy8gU3luYyBhY3RpdmVTY2hlbWEgaW4gY29udGV4dCB3aXRoIFVSTCBzY2hlbWEgcGFyYW1ldGVyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVXBkYXRlIHRoZSBhY3RpdmVTY2hlbWEgaW4gY29udGV4dCB3aGVuIFVSTCBzY2hlbWEgcGFyYW0gY2hhbmdlc1xuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8uc2NoZW1hICYmIHRhYmxlQW5kU2NoZW1hLnNjaGVtYSAhPT0gYWN0aXZlU2NoZW1hKSB7XG4gICAgICBzZXRBY3RpdmVTY2hlbWEodGFibGVBbmRTY2hlbWEuc2NoZW1hKTtcbiAgICB9XG4gIH0sIFt0YWJsZUFuZFNjaGVtYT8uc2NoZW1hLCBhY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVNjaGVtYV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRhdGFVcGRhdGVkQXQgIT09IC0xKSB7XG4gICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQoe1xuICAgICAgICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIixcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIGV2ZW50X2lkOiB1dWlkdjQoKSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB0YWJsZV9jb3VudDogdG90YWxUYWJsZUNvdW50LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbdGFibGVzLCBlbWl0VGVsZW1ldHJ5RXZlbnQsIGRhdGFVcGRhdGVkQXQsIHRvdGFsVGFibGVDb3VudF0pO1xuXG4gIHJldHVybiB7XG4gICAgdGFibGVzLFxuICAgIGFjdGl2ZVRhYmxlLFxuICAgIGFjdGl2ZVNjaGVtYSxcbiAgICBpc0xvYWRpbmcsXG4gICAgaGFuZGxlVGFibGVDaGFuZ2UsXG4gICAgaGFuZGxlU2NoZW1hQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID0gLTE7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnRyb3NwZWN0aW9uKCkge1xuICBjb25zdCB7IGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgaW5pdGlhbERhdGE6IHtcbiAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgW2FkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcImRiXCJdOiB7XG4gICAgICAgICAgdGFibGVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aW1lem9uZTogXCJVVENcIixcbiAgICAgIGZpbHRlck9wZXJhdG9yczogW10sXG4gICAgfSBzYXRpc2ZpZXMgSW50cm9zcGVjdGlvbixcbiAgICBpbml0aWFsRGF0YVVwZGF0ZWRBdDogSU5JVElBTF9EQVRBX1VQREFURURfQVQsXG4gICAgcXVlcnlGbjogYXN5bmMgKHsgc2lnbmFsIH0pID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgaW50cm9zcGVjdGlvbl0gPSBhd2FpdCBhZGFwdGVyLmludHJvc3BlY3QoeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnRyb3NwZWN0aW9uO1xuICAgIH0sXG4gICAgcXVlcnlLZXk6IFtcImludHJvc3BlY3Rpb25cIl0sXG4gICAgLy8gaWYgaXMgaW5pdGlhbCBkYXRhLCByZWZldGNoIGltbWVkaWF0ZWx5LCBvdGhlcndpc2UsIG5ldmVyIHJlZmV0Y2ggYXV0b21hdGljYWxseSBpbiB0aGUgYmFja2dyb3VuZC5cbiAgICAvLyB3ZSBjYW4gc3RpbGwgcmVmZXRjaCBtYW51YWxseSB1c2luZyB0aGUgcXVlcnkgY2xpZW50IC0gcHJvYmFibHkgdHJpZ2dlcmVkIGJ5IGEgYnV0dG9uLlxuICAgIHN0YWxlVGltZTogKGN0eCkgPT4gKGN0eC5zdGF0ZS5kYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA/IDAgOiBJbmZpbml0eSksXG4gIH0pO1xufVxuIiwgImltcG9ydCB7IENvbHVtbkRlZiwgVGFibGUsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5cbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IENlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vY2VsbC9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgc3RhZ2VkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgc2V0U3RhZ2VkUm93czogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0YWdlZFJvd3MocHJvcHM6IFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGU6IHBhcmVudFRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH0gPSBwcm9wcztcbiAgY29uc3QgcmVhZG9ubHkgPSBCb29sZWFuKHVzZUlzSW5zZXJ0aW5nKCkpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YWdlZFJvdyhyb3dJbmRleDogbnVtYmVyLCBwYXJ0aWFsUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHNldFN0YWdlZFJvd3MoKHByZXZSb3dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnByZXZSb3dzXTtcbiAgICAgIG5ld1Jvd3Nbcm93SW5kZXhdID0geyAuLi5uZXdSb3dzW3Jvd0luZGV4XSwgLi4ucGFydGlhbFJvdyB9O1xuXG4gICAgICByZXR1cm4gbmV3Um93cztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudFRhYmxlLm9wdGlvbnMuY29sdW1ucykubWFwKChjb2x1bW4pID0+IHtcbiAgICBpZiAoY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgY2VsbCgpIHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gPEVtcHR5Q2VsbCAvPjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uIH0pfVxuICAgICAgICAgICAgbGlua0NvbXBvbmVudD17bnVsbH1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YWdlZFJvdyhwcm9wcy5yb3dJbmRleCwgeyBbY29sdW1uLmlkIV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgLi4ucGFyZW50VGFibGUub3B0aW9ucyxcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZTogdW5kZWZpbmVkLFxuICAgIG9uU29ydGluZ0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHN0YWdlZFJvd3MsXG4gICAgc3RhdGU6IG9taXQocGFyZW50VGFibGUub3B0aW9ucy5zdGF0ZSwgW1wicGFnaW5hdGlvblwiLCBcInNvcnRpbmdcIl0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgIDxUYWJsZVJvdyBrZXk9e2l9PlxuICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfT47XG4gICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxDZWxsIGtleT17an0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0gcm93SW5kZXg9e2l9IC8+O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IFRhYmxlMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2UtaW50cm9zcGVjdGlvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbnR5cGUgTmF2aWdhdGlvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvbih7IGNsYXNzTmFtZSB9OiBOYXZpZ2F0aW9uUHJvcHMpIHtcbiAgLy8gVXNlIHRoZSBjdXN0b20gaG9vayB0byBnZXQgYWxsIG5lY2Vzc2FyeSBzdGF0ZSBhbmQgaGFuZGxlcnNcbiAgY29uc3QgeyB0YWJsZXMsIGFjdGl2ZVRhYmxlLCBpc0xvYWRpbmcsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuXG4gIGNvbnN0IHNpZGVCYXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctNDggcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtMCBwcy10ZXh0LWNhcmQtZm9yZWdyb3VuZCBwcy1zaGFkb3cteHNcIixcbiAgICBjbGFzc05hbWUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c2lkZUJhckNsYXNzZXN9PlxuICAgICAgPE5hdmlnYXRpb24uU2NoZW1hU2VsZWN0b3IgLz5cblxuICAgICAgPE5hdmlnYXRpb24uQmxvY2sgbGFiZWw9XCJUYWJsZXNcIj5cbiAgICAgICAge3RhYmxlcy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgIHRhYmxlcy5tYXAoKHRhYmxlKSA9PiAoXG4gICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtXG4gICAgICAgICAgICAgIGtleT17YCR7dGFibGUuc2NoZW1hfS0ke3RhYmxlLm5hbWV9YH1cbiAgICAgICAgICAgICAgYXNDaGlsZFxuICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlVGFibGUgPT09IHRhYmxlfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGFibGVDaGFuZ2UodGFibGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Bwcy1weS0xIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzIHBzLXRleHQtZm9yZWdyb3VuZC82MCBob3Zlcjpwcy10ZXh0LWZvcmVncm91bmQgcHMtdHJhbnNpdGlvbi1hbGwgcHMtY3Vyc29yLXBvaW50ZXIgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWJnLXNsYXRlLTIwMCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtZm9yZWdyb3VuZCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtdGV4dC1mb3JlZ3JvdW5kYH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGEgaHJlZj17YCN0YWJsZT0ke3RhYmxlLm5hbWV9JnNjaGVtYT0ke3RhYmxlLnNjaGVtYX1gfT57dGFibGUubmFtZX08L2E+XG4gICAgICAgICAgICA8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApIDogaXNMb2FkaW5nID8gKFxuICAgICAgICAgIEFycmF5KDQpXG4gICAgICAgICAgICAuZmlsbChudWxsKVxuICAgICAgICAgICAgLm1hcCgoXywgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPE5hdmlnYXRpb24uSXRlbSBrZXk9e2luZGV4fSB3cmFwQ2hpbGRyZW5JblNwYW49e2ZhbHNlfT5cbiAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC0zIHBzLXctZnVsbFwiIC8+XG4gICAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICAgKSlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtPk5vIHRhYmxlcyBmb3VuZDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICApfVxuICAgICAgPC9OYXZpZ2F0aW9uLkJsb2NrPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5jb25zdCBCbG9jayA9ICh7IGNsYXNzTmFtZSwgbGFiZWwsIGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4gJiB7IGxhYmVsOiBzdHJpbmcgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHsuLi5wcm9wc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xIHBzLXB0LTQgcHMtcGItMiBwcy1weC00IHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy1zbGF0ZS01MC81MCBwcy1iYWNrZHJvcC1ibHVyLXNtXCI+XG4gICAgICAgIDxUYWJsZTIgc2l6ZT17MTZ9IGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MFwiIC8+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtXCI+e2xhYmVsfTwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuYXYgYXJpYS1sYWJlbD17bGFiZWx9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLXB4IHBzLXBiLTMgcHMtcC0yXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvbmF2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgSXRlbSA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgYXNDaGlsZCA9IGZhbHNlLFxuICBpc0FjdGl2ZSxcbiAgc2l6ZSxcbiAgY2hpbGRyZW4sXG4gIHdyYXBDaGlsZHJlbkluU3BhbiA9IHRydWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImJ1dHRvblwiPiAmIHtcbiAgYXNDaGlsZD86IGJvb2xlYW47XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgc2l6ZT86IFwiZGVmYXVsdFwiIHwgXCJzbVwiO1xuICB3cmFwQ2hpbGRyZW5JblNwYW4/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuXG4gIHJldHVybiAoXG4gICAgPENvbXBcbiAgICAgIGRhdGEtc2lkZWJhcj1cIm1lbnUtYnV0dG9uXCJcbiAgICAgIGRhdGEtc2l6ZT17c2l6ZX1cbiAgICAgIGRhdGEtYWN0aXZlPXtpc0FjdGl2ZX1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcHktMS41IHBzLXB4LTIgcHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy1yb3VuZGVkLW1kIHBzLWZsZXggcHMtZ2FwLTIgcHMtaXRlbXMtY2VudGVyIHBzLWJvcmRlciBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctdHJhbnNwYXJlbnRcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7d3JhcENoaWxkcmVuSW5TcGFuID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtdHJ1bmNhdGVcIj57Y2hpbGRyZW59PC9zcGFuPiA6IGNoaWxkcmVufVxuICAgIDwvQ29tcD5cbiAgKTtcbn07XG5cbmNvbnN0IFNjaGVtYVNlbGVjdG9yID0gKCkgPT4ge1xuICAvLyBHZXQgc2NoZW1hcyBmcm9tIGludHJvc3BlY3Rpb24gYW5kIGFjdGl2ZSBzY2hlbWEgbWFuYWdlbWVudFxuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGlzTG9hZGluZzogaXNJbnRyb3NwZWN0aW9uTG9hZGluZyB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCB7IGFjdGl2ZVNjaGVtYSwgaGFuZGxlU2NoZW1hQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuXG4gIC8vIEV4dHJhY3Qgc2NoZW1hIG5hbWVzIGZyb20gaW50cm9zcGVjdGlvbiBkYXRhXG4gIGNvbnN0IHNjaGVtYU5hbWVzID0gT2JqZWN0LmtleXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzIHx8IHt9KTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgIDxTZWxlY3QgdmFsdWU9e2FjdGl2ZVNjaGVtYX0gb25WYWx1ZUNoYW5nZT17aGFuZGxlU2NoZW1hQ2hhbmdlfT5cbiAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdGV4dC14c1wiIGxhYmVsPVwiU2NoZW1hXCI+XG4gICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHNjaGVtYVwiIC8+XG4gICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAge2lzSW50cm9zcGVjdGlvbkxvYWRpbmcgPyAoXG4gICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxvYWRpbmdcIj5Mb2FkaW5nIHNjaGVtYXMuLi48L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgKSA6IHNjaGVtYU5hbWVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICBzY2hlbWFOYW1lcy5tYXAoKHNjaGVtYSkgPT4gKFxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e3NjaGVtYX0gdmFsdWU9e3NjaGVtYX0gY2xhc3NOYW1lPVwicHMtdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgIHtzY2hlbWF9XG4gICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm8tc2NoZW1hc1wiPk5vIHNjaGVtYXMgZm91bmQ8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgPC9TZWxlY3Q+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5OYXZpZ2F0aW9uLkJsb2NrID0gQmxvY2s7XG5OYXZpZ2F0aW9uLkl0ZW0gPSBJdGVtO1xuTmF2aWdhdGlvbi5TY2hlbWFTZWxlY3RvciA9IFNjaGVtYVNlbGVjdG9yO1xuIl0sCiAgIm1hcHBpbmdzIjogIjRNQUFBLE9BQVMsbUJBQUFBLEdBQWlCLFVBQUFDLE9BQWMsZUNDeEMsT0FBMEIsUUFBQUMsT0FBWSxPQ3FCdEMsSUFBTUMsR0FBdUIsSUFFaEJDLEdBQXlCQyxHQUF5QixDQUMzRCxJQUFNQyxFQUFXQyxHQUFlRixDQUFNLEVBQ2hDLENBQUVHLHVCQUFBQSxFQUF3QkMsK0JBQUFBLENBQWdDLEVBQUdKLEVBMEJuRSxNQUFPLENBQ0hLLGdCQXpCcUJDLEdBQXFCLENBQzFDLElBQU1DLEVBQWFELEVBQVVFLE1BQU1WLEVBQW9CLEVBR3ZELE9BQUlTLEVBQVcsQ0FBQyxJQUFNLElBQU1BLEVBQVdFLFNBQVcsR0FDOUNGLEVBQVdHLE1BQUssRUFHYkMsR0FBa0JKLEVBQVlOLENBQVEsR0FBS1csR0FBK0JOLENBQVMsQ0FDOUYsRUFpQklPLDRCQWZnQ0EsQ0FDaENDLEVBQ0FDLElBQ0EsQ0FDQSxJQUFNQyxFQUFZYixFQUF1QlcsQ0FBWSxHQUFLLENBQUEsRUFFMUQsT0FBSUMsR0FBc0JYLEVBQStCVSxDQUFZLEVBQzFELENBQUMsR0FBR0UsRUFBVyxHQUFHWixFQUErQlUsQ0FBWSxDQUFFLEVBR25FRSxDQUNYLEVBTUosRUFFTUwsR0FBb0JBLENBQ3RCSixFQUNBVSxJQUNrQyxDQUNsQyxHQUFJVixFQUFXRSxTQUFXLEVBQ3RCLE9BQU9RLEVBQWdCSCxhQUczQixJQUFNSSxFQUFtQlgsRUFBVyxDQUFDLEVBQy9CWSxFQUFzQkYsRUFBZ0JHLFNBQVNDLElBQUlILENBQWdCLEVBQ25FSSxFQUE4QkgsRUFDOUJSLEdBQWtCSixFQUFXZ0IsTUFBTSxDQUFDLEVBQUdKLENBQW1CLEVBQzFESyxPQUVOLEdBQUlGLEVBQ0EsT0FBT0EsRUFHWCxH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LENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLFdBQVksQ0FBQyxDQUFFeUgsT0FBUSxDQUFDdkgsQ0FBVyxDQUFDLENBQUUsRUFLdEMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FB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R0FBQyxPQUFJLHNDQUEwQixFQVExQyxDQUVBLFNBQVNRLElBQWdCLENBQ3ZCLEdBQU0sQ0FBRSxhQUFBQyxFQUFjLGlCQUFBQyxDQUFpQixFQUFJQyxFQUFVLEVBRS9DQyxFQUFtQkMsRUFDdkIseURBQ0FKLEdBQWdCLHlEQUNsQixFQUVBLE9BQ0VULEdBQUMsT0FBSSxrQkFBaUJTLEVBQWMsVUFBV0csRUFDN0MsU0FBQVgsR0FBQyxPQUFJLFVBQVUsb0dBQ2IsVUFBQUQsR0FBQ2MsR0FBQSxDQUFnQixLQUFLLE9BQ25CLFNBQUFKLEdBQ0NWLEdBQUNlLEdBQU8sSUFBUCxDQUNDLFFBQVMsQ0FBRSxNQUFPLEVBQUcsUUFBUyxDQUFFLEVBQ2hDLFFBQVMsQ0FBRSxNQUFPLE9BQVEsUUFBUyxDQUFFLEVBQ3JDLEtBQU0sQ0FBRSxNQUFPLEVBQUcsUUFBUyxDQUFFLEVBQzdCLFdBQVksQ0FBRSxTQUFVLEdBQUssRUFFN0IsU0FBQWYsR0FBQ2dCLEdBQUEsRUFBVyxFQUNkLEVBRUosRUFFQWhCLEdBQUNlLEdBQU8sSUFBUCxDQUNDLFVBQVUsNklBQ1YsV0FBWSxDQUFFLFNBQVUsR0FBSyxFQUU3QixTQUFBZixHQUFDaUIsR0FBQSxFQUFnQixFQUNuQixHQUNGLEVBQ0YsQ0FFSiIsCiAgIm5hbWVzIjogWyJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgImNsc3giLCAiQ0xBU1NfUEFSVF9TRVBBUkFUT1IiLCAiY3JlYXRlQ2xhc3NHcm91cFV0aWxzIiwgImNvbmZpZyIsICJjbGFzc01hcCIsICJjcmVhdGVDbGFzc01hcCIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBzIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyIsICJnZXRDbGFzc0dyb3VwSWQiLCAiY2xhc3NOYW1lIiwgImNsYXNzUGFydHMiLCAic3BsaXQiLCAibGVuZ3RoIiwgInNoaWZ0IiwgImdldEdyb3VwUmVjdXJzaXZlIiwgImdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSIsICJnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMiLCAiY2xhc3NHcm91cElkIiwgImhhc1Bvc3RmaXhNb2RpZmllciIsICJjb25mbGljdHMiLCAiY2xhc3NQYXJ0T2JqZWN0IiwgImN1cnJlbnRDbGFzc1BhcnQiLCAibmV4dENsYXNzUGFydE9iamVjdCIsICJuZXh0UGFydCIsICJnZXQiLCAiY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0IiwgInNsaWNlIiwgInVuZGVmaW5lZCIsICJ2YWxpZGF0b3JzIiwgImNsYXNzUmVzdCIsICJqb2luIiwgImZpbmQiLCAidmFsaWRhdG9yIiwgImFyYml0cmFyeVByb3BlcnR5UmVnZXgiLCAidGVzdCIsICJhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSIsICJleGVjIiwgInByb3BlcnR5IiwgInN1YnN0cmluZyIsICJpbmRleE9mIiwgInRoZW1lIiwgInByZWZpeCIsICJNYXAiLCAicHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgImNsYXNzR3JvdXBzIiwgImZvckVhY2giLCAiY2xhc3NHcm91cCIsICJwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5IiwgImNsYXNzRGVmaW5pdGlvbiIsICJjbGFzc1BhcnRPYmplY3RUb0VkaXQiLCAiZ2V0UGFydCIsICJpc1RoZW1lR2V0dGVyIiwgInB1c2giLCAia2V5IiwgInBhdGgiLCAiY3VycmVudENsYXNzUGFydE9iamVjdCIsICJwYXRoUGFydCIsICJoYXMiLCAic2V0IiwgImZ1bmMiLCAiY2xhc3NHcm91cEVudHJpZXMiLCAibWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cCIsICJmcm9tRW50cmllcyIsICJ2YWx1ZSIsICJjcmVhdGVMcnVDYWNoZSIsICJtYXhDYWNoZVNpemUiLCAiY2FjaGVTaXplIiwgImNhY2hlIiwgInByZXZpb3VzQ2FjaGUiLCAidXBkYXRlIiwgIklNUE9SVEFOVF9NT0RJRklFUiIsICJjcmVhdGVQYXJzZUNsYXNzTmFtZSIsICJzZXBhcmF0b3IiLCAiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLCAiaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIiLCAiZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIiLCAic2VwYXJhdG9yTGVuZ3RoIiwgInBhcnNlQ2xhc3NOYW1lIiwgIm1vZGlmaWVycyIsICJicmFja2V0RGVwdGgiLCAibW9kaWZpZXJTdGFydCIsICJwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiIsICJpbmRleCIsICJjdXJyZW50Q2hhcmFjdGVyIiwgImJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIiLCAiaGFzSW1wb3J0YW50TW9kaWZpZXIiLCAic3RhcnRzV2l0aCIsICJiYXNlQ2xhc3NOYW1lIiwgIm1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAic29ydE1vZGlmaWVycyIsICJzb3J0ZWRNb2RpZmllcnMiLCAidW5zb3J0ZWRNb2RpZmllcnMiLCAibW9kaWZpZXIiLCAic29ydCIsICJjcmVhdGVDb25maWdVdGlscyIsICJTUExJVF9DTEFTU0VTX1JFR0VYIiwgIm1lcmdlQ2xhc3NMaXN0IiwgImNsYXNzTGlzdCIsICJjb25maWdVdGlscyIsICJjbGFzc0dyb3Vwc0luQ29uZmxpY3QiLCAiY2xhc3NOYW1lcyIsICJ0cmltIiwgInJlc3VsdCIsICJvcmlnaW5hbENsYXNzTmFtZSIsICJCb29sZWFuIiwgInZhcmlhbnRNb2RpZmllciIsICJtb2RpZmllcklkIiwgImNsYXNzSWQiLCAiaW5jbHVkZXMiLCAiY29uZmxpY3RHcm91cHMiLCAiaSIsICJncm91cCIsICJ0d0pvaW4iLCAiYXJndW1lbnQiLCAicmVzb2x2ZWRWYWx1ZSIsICJzdHJpbmciLCAiYXJndW1lbnRzIiwgInRvVmFsdWUiLCAibWl4IiwgImsiLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJjcmVhdGVDb25maWdGaXJzdCIsICJjcmVhdGVDb25maWdSZXN0IiwgImNhY2hlR2V0IiwgImNhY2hlU2V0IiwgImZ1bmN0aW9uVG9DYWxsIiwgImluaXRUYWlsd2luZE1lcmdlIiwgInJlZHVjZSIsICJwcmV2aW91c0NvbmZpZyIsICJjcmVhdGVDb25maWdDdXJyZW50IiwgInRhaWx3aW5kTWVyZ2UiLCAiY2FjaGVkUmVzdWx0IiwgImFwcGx5IiwgImZyb21UaGVtZSIsICJ0aGVtZUdldHRlciIsICJhcmJpdHJhcnlWYWx1ZVJlZ2V4IiwgImZyYWN0aW9uUmVnZXgiLCAic3RyaW5nTGVuZ3RocyIsICJTZXQiLCAidHNoaXJ0VW5pdFJlZ2V4IiwgImxlbmd0aFVuaXRSZWdleCIsICJjb2xvckZ1bmN0aW9uUmVnZXgiLCAic2hhZG93UmVnZXgiLCAiaW1hZ2VSZWdleCIsICJpc0xlbmd0aCIsICJpc051bWJlciIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXRJc0FyYml0cmFyeVZhbHVlIiwgImlzTGVuZ3RoT25seSIsICJOdW1iZXIiLCAiaXNOYU4iLCAiaXNBcmJpdHJhcnlOdW1iZXIiLCAiaXNJbnRlZ2VyIiwgImlzUGVyY2VudCIsICJlbmRzV2l0aCIsICJpc0FyYml0cmFyeVZhbHVlIiwgImlzVHNoaXJ0U2l6ZSIsICJzaXplTGFiZWxzIiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc05ldmVyIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAiaW1hZ2VMYWJlbHMiLCAiaXNBcmJpdHJhcnlJbWFnZSIsICJpc0ltYWdlIiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImlzU2hhZG93IiwgImlzQW55IiwgImxhYmVsIiwgInRlc3RWYWx1ZSIsICJnZXREZWZhdWx0Q29uZmlnIiwgImNvbG9ycyIsICJmcm9tVGhlbWUiLCAic3BhY2luZyIsICJibHVyIiwgImJyaWdodG5lc3MiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyUmFkaXVzIiwgImJvcmRlclNwYWNpbmciLCAiYm9yZGVyV2lkdGgiLCAiY29udHJhc3QiLCAiZ3JheXNjYWxlIiwgImh1ZVJvdGF0ZSIsICJpbnZlcnQiLCAiZ2FwIiwgImdyYWRpZW50Q29sb3JTdG9wcyIsICJncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyIsICJpbnNldCIsICJtYXJnaW4iLCAib3BhY2l0eSIsICJwYWRkaW5nIiwgInNhdHVyYXRlIiwgInNjYWxlIiwgInNlcGlhIiwgInNrZXciLCAic3BhY2UiLCAidHJhbnNsYXRlIiwgImdldE92ZXJzY3JvbGwiLCAiZ2V0T3ZlcmZsb3ciLCAiZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzQXJiaXRyYXJ5VmFsdWUiLCAiZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkiLCAiZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5IiwgImlzTGVuZ3RoIiwgImlzQXJiaXRyYXJ5TGVuZ3RoIiwgImdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzTnVtYmVyIiwgImdldFBvc2l0aW9ucyIsICJnZXRMaW5lU3R5bGVzIiwgImdldEJsZW5kTW9kZXMiLCAiZ2V0QWxpZ24iLCAiZ2V0WmVyb0FuZEVtcHR5IiwgImdldEJyZWFrcyIsICJnZXROdW1iZXJBbmRBcmJpdHJhcnkiLCAiY2FjaGVTaXplIiwgInNlcGFyYXRvciIsICJ0aGVtZSIsICJpc0FueSIsICJpc1RzaGlydFNpemUiLCAiaXNQZXJjZW50IiwgImNsYXNzR3JvdXBzIiwgImFzcGVjdCIsICJjb250YWluZXIiLCAiY29sdW1ucyIsICJib3giLCAiZGlzcGxheSIsICJmbG9hdCIsICJjbGVhciIsICJpc29sYXRpb24iLCAib2JqZWN0IiwgIm92ZXJmbG93IiwgIm92ZXJzY3JvbGwiLCAicG9zaXRpb24iLCAic3RhcnQiLCAiZW5kIiwgInRvcCIsICJyaWdodCIsICJib3R0b20iLCAibGVmdCIsICJ2aXNpYmlsaXR5IiwgInoiLCAiaXNJbnRlZ2VyIiwgImJhc2lzIiwgImZsZXgiLCAiZ3JvdyIsICJzaHJpbmsiLCAib3JkZXIiLCAiY29sIiwgInNwYW4iLCAicm93IiwgImp1c3RpZnkiLCAiY29udGVudCIsICJpdGVtcyIsICJzZWxmIiwgInAiLCAicHgiLCAicHkiLCAicHMiLCAicGUiLCAicHQiLCAicHIiLCAicGIiLCAicGwiLCAibSIsICJteCIsICJteSIsICJtcyIsICJtZSIsICJtdCIsICJtciIsICJtYiIsICJtbCIsICJ3IiwgInNjcmVlbiIsICJoIiwgInNpemUiLCAidGV4dCIsICJmb250IiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgInRyYWNraW5nIiwgImxlYWRpbmciLCAibGlzdCIsICJwbGFjZWhvbGRlciIsICJkZWNvcmF0aW9uIiwgImluZGVudCIsICJhbGlnbiIsICJ3aGl0ZXNwYWNlIiwgImJyZWFrIiwgImh5cGhlbnMiLCAiYmciLCAiaXNBcmJpdHJhcnlQb3NpdGlvbiIsICJyZXBlYXQiLCAiaXNBcmJpdHJhcnlTaXplIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiZnJvbSIsICJ2aWEiLCAidG8iLCAicm91bmRlZCIsICJib3JkZXIiLCAiZGl2aWRlIiwgIm91dGxpbmUiLCAicmluZyIsICJzaGFkb3ciLCAiaXNBcmJpdHJhcnlTaGFkb3ciLCAiZmlsdGVyIiwgInRhYmxlIiwgImNhcHRpb24iLCAidHJhbnNpdGlvbiIsICJkdXJhdGlvbiIsICJlYXNlIiwgImRlbGF5IiwgImFuaW1hdGUiLCAidHJhbnNmb3JtIiwgInJvdGF0ZSIsICJvcmlnaW4iLCAiYWNjZW50IiwgImFwcGVhcmFuY2UiLCAiY3Vyc29yIiwgImNhcmV0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic25hcCIsICJ0b3VjaCIsICJzZWxlY3QiLCAiZmlsbCIsICJzdHJva2UiLCAic3IiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAibWVyZ2VDb25maWdzIiwgImJhc2VDb25maWciLCAicHJlZml4IiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImV4dGVuZCIsICJvdmVycmlkZSIsICJvdmVycmlkZVByb3BlcnR5IiwgImNvbmZpZ0tleSIsICJvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMiLCAia2V5IiwgIm1lcmdlQ29uZmlnUHJvcGVydGllcyIsICJiYXNlT2JqZWN0IiwgIm92ZXJyaWRlS2V5IiwgIm92ZXJyaWRlVmFsdWUiLCAidW5kZWZpbmVkIiwgIm92ZXJyaWRlT2JqZWN0IiwgIm1lcmdlT2JqZWN0IiwgIm1lcmdlVmFsdWUiLCAiY29uY2F0IiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY29uZmlnRXh0ZW5zaW9uIiwgImNyZWF0ZUNvbmZpZyIsICJjcmVhdGVUYWlsd2luZE1lcmdlIiwgInR3TWVyZ2UiLCAiZXh0ZW5kVGFpbHdpbmRNZXJnZSIsICJjbiIsICJpbnB1dHMiLCAiY2xzeCIsICJ1c2VJc011dGF0aW5nIiwgInRvS2ViYWJDYXNlIiwgInN0cmluZyIsICJtZXJnZUNsYXNzZXMiLCAiY2xhc3NlcyIsICJjbGFzc05hbWUiLCAiaW5kZXgiLCAiYXJyYXkiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAiSWNvbiIsICJmb3J3YXJkUmVmIiwgImNvbG9yIiwgInNpemUiLCAic3Ryb2tlV2lkdGgiLCAiYWJzb2x1dGVTdHJva2VXaWR0aCIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAiaWNvbk5vZGUiLCAicmVzdCIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJkZWZhdWx0QXR0cmlidXRlcyIsICJtZXJnZUNsYXNzZXMiLCAidGFnIiwgImF0dHJzIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiaWNvbk5hbWUiLCAiaWNvbk5vZGUiLCAiQ29tcG9uZW50IiwgImZvcndhcmRSZWYiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjcmVhdGVFbGVtZW50IiwgIkljb24iLCAibWVyZ2VDbGFzc2VzIiwgInRvS2ViYWJDYXNlIiwgIkFycm93RG93bldpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBcnJvd1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGVjayIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25Eb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uUmlnaHQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc0xlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlSGVscCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcHkiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3JuZXJEb3duTGVmdCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkZpbHRlciIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkdyaXBWZXJ0aWNhbCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleVJvdW5kIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWF4aW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNaW5pbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVEb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZVVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRPcGVuIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluT2ZmIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUmVmcmVzaEN3IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiVGFibGUyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiWCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInRvYXN0IiwgImN2YSIsICJqc3giLCAiYmFkZ2VWYXJpYW50cyIsICJjdmEiLCAiQmFkZ2UiLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAicHJvcHMiLCAiY24iLCAiU2xvdCIsICJjdmEiLCAiUmVhY3QiLCAianN4IiwgImJ1dHRvblZhcmlhbnRzIiwgImN2YSIsICJCdXR0b24iLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAic2l6ZSIsICJhc0NoaWxkIiwgInByb3BzIiwgInJlZiIsICJTbG90IiwgImNuIiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiY2xhc3NOYW1lIiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImpzeCIsICJjbiIsICJSZWFjdCIsICJqc3giLCAiVGFibGUiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJUYWJsZUhlYWRlciIsICJUYWJsZUJvZHkiLCAiVGFibGVGb290ZXIiLCAiVGFibGVSb3ciLCAiVGFibGVIZWFkIiwgIlRhYmxlQ2VsbCIsICJUYWJsZUNhcHRpb24iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnRQcm92aWRlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICIjY2xpZW50IiwgIiNvbmxpbmVNYW5hZ2VyIiwgIiNxdWVyeUZsYXZvciIsICIjdmVyc2lvbiIsICIjaXNNb3VudGVkIiwgIiNzdHlsZU5vbmNlIiwgIiNzaGFkb3dET01UYXJnZXQiLCAiI2J1dHRvblBvc2l0aW9uIiwgIiNwb3NpdGlvbiIsICIjaW5pdGlhbElzT3BlbiIsICIjZXJyb3JUeXBlcyIsICIjQ29tcG9uZW50IiwgIiNkaXNwb3NlIiwgImNvbmZpZyIsICJjbGllbnQiLCAicXVlcnlGbGF2b3IiLCAidmVyc2lvbiIsICJvbmxpbmVNYW5hZ2VyIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJjcmVhdGVTaWduYWwiLCAiaXNPcGVuIiwgImVsIiwgImRpc3Bvc2UiLCAicmVuZGVyIiwgIl9zZWxmJCIsICJidG5Qb3NpdGlvbiIsICJwb3MiLCAiZXJyb3JzIiwgInF1ZXJ5Q2xpZW50IiwgIkRldnRvb2xzIiwgImxhenkiLCAic2V0dXBTdHlsZVNoZWV0IiwgImNyZWF0ZUNvbXBvbmVudCIsICJtZXJnZVByb3BzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIiNvbkNsb3NlIiwgIm9uQ2xvc2UiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiYnV0dG9uUG9zaXRpb24iLCAicG9zaXRpb24iLCAiaW5pdGlhbElzT3BlbiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0IiwgIm9ubGluZU1hbmFnZXIiLCAidXNlUXVlcnlDbGllbnQiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgInByb3BzIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInJlZiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIm9ubGluZU1hbmFnZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzIiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgImNyZWF0ZUNvbnRleHQiLCAidXNlQ29udGV4dCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInRvYXN0IiwgIlNvbm5lciIsICJqc3giLCAiVG9hc3RlciIsICJwcm9wcyIsICJjcmVhdGVBZGFwdGVyUHJvdmlkZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZUhhc2hBZGFwdGVyIiwgInJhd0hhc2giLCAiaGFzaFBhcmFtcyIsICJzZXRIYXNoUGFyYW1zIiwgInVwZGF0ZVVybCIsICJ1cGRhdGVkIiwgImhpc3RvcnkiLCAicGF0aG5hbWUiLCAic2VhcmNoIiwgImhhc2giLCAidXJsIiwgImdldFNlYXJjaFBhcmFtc1NuYXBzaG90IiwgInJhdyIsICJoYW5kbGVIYXNoQ2hhbmdlIiwgIk51cXNIYXNoQWRhcHRlciIsICJqc3giLCAianN4cyIsICJxdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudCIsICJTdHVkaW9Db250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgInByb3BzIiwgImNoaWxkcmVuIiwgIm90aGVyUHJvcHMiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAidXNlU3RhdGUiLCAiYWN0aXZlU2NoZW1hIiwgInNldEFjdGl2ZVNjaGVtYSIsICJpc0Z1bGxzY3JlZW4iLCAic2V0SXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAic2V0SXNOYXZpZ2F0aW9uT3BlbiIsICJvbkVycm9yIiwgImVycm9yIiwgInRvYXN0IiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VNZW1vIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAicHJldiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzMiIsICJUb2FzdGVyIiwgIk51cXNIYXNoQWRhcHRlciIsICJ1c2VTdHVkaW8iLCAiY29udGV4dCIsICJ1c2VDb250ZXh0IiwgImdldFJvd0lkIiwgInJvdyIsICJ0YWJsZSIsICJpZCIsICJpbmZlclJvd0ZpbHRlciIsICJhZGRSb3dJZFRvUm93IiwgImFkZFJvd0lkVG9SZXN1bHQiLCAicmVzdWx0IiwgInJvd3MiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgImFkZFJvd0lkVG9SZXN1bHQiLCAibmV3RGF0YSIsICJvbGREYXRhIiwgInVzZVF1ZXJ5IiwgInVzZUFjdGl2ZVRhYmxlUXVlcnkiLCAicHJvcHMiLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNvcnRPcmRlciIsICJmaWx0ZXIiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAicHJldmlvdXNEYXRhIiwgInByZXZpb3VzUXVlcnkiLCAic2NoZW1hIiwgInRhYmxlIiwgInNpZ25hbCIsICJlcnJvciIsICJyZXN1bHRzIiwgImFkZFJvd0lkVG9SZXN1bHQiLCAiaXRlbSIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJ1c2VBY3RpdmVUYWJsZVVwZGF0ZSIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInF1ZXJ5S2V5UHJlZml4IiwgInVzZU11dGF0aW9uIiwgInBhcmFtcyIsICJlcnJvciIsICJyZXN1bHQiLCAiY2hhbmdlcyIsICJyb3ciLCAib3ZlcndyaXRlQ2FjaGVkUm93IiwgImNoYW5nZWRSb3ciLCAicm93RmlsdGVyIiwgImluZmVyUm93RmlsdGVyIiwgImNhY2hlZFJvdyIsICJjb2x1bW5OYW1lIiwgInZhbHVlIiwgIm9yaWdpbmFsVmFsdWVzIiwgImRldGFpbHMiLCAidW5jaGFuZ2VkUm93IiwgIl9fcHNfdXBkYXRlZF9hdF9fIiwgImdldEZpbmRlckZuIiwgInRhYmxlIiwgInVwZGF0ZXJGbiIsICJmaW5kZXIiLCAiY2FjaGVkUmVzdWx0IiwgImNhY2hlZFJvd3MiLCAiY2FjaGVkUm93SW5kZXgiLCAibmV3Um93IiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInNob3J0IiwgIm51cXNfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJ1c2VRdWVyeVN0YXRlIiwgInVzZVF1ZXJ5U3RhdGVzIiwgIl9fcmVFeHBvcnQiLCAibnVxc19leHBvcnRzIiwgIm51cXNfc3RhciIsICJ1c2VRdWVyeVN0YXRlT3JpZ2luYWwiLCAidXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJfQlJBTkRfU1lNQk9MIiwgInVzZVF1ZXJ5U3RhdGUiLCAia2V5IiwgIm9wdGlvbnMiLCAidXNlUXVlcnlTdGF0ZXMiLCAiZGVmYXVsdEZpbHRlciIsICJzaG9ydCIsICJjb3VudEZpbHRlcnNSZWN1cnNpdmUiLCAiZmlsdGVyR3JvdXAiLCAiY291bnQiLCAiZmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJmaWx0ZXJQYXJhbSIsICJzZXRGaWx0ZXJQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAidXNlTWVtbyIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VJc011dGF0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgIm11dGF0aW9uS2V5IiwgInVzZUNhbGxiYWNrIiwgIkRFRkFVTFRfUEFHRV9TSVpFIiwgInBhZ2luYXRpb25QYXJzZXJzIiwgInVzZVBhZ2luYXRpb24iLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNldFBhZ2luYXRpb24iLCAidXNlUXVlcnlTdGF0ZXMiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJuZXdTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgInVzZVNlbGVjdGlvbiIsICJkYXRhIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVN0YXRlIiwgImlzU2VsZWN0aW5nIiwgIm11dGF0ZSIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJ1c2VFZmZlY3QiLCAiZGVsZXRlU2VsZWN0aW9uIiwgInJvd3MiLCAicm93IiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInNvcnRQYXJhbSIsICJzZXRTb3J0UGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJwYXJzZVNvcnRpbmciLCAiaXRlbSIsICJjb2x1bW4iLCAiZGlyZWN0aW9uIiwgImUiLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAibmV3U29ydGluZ1N0YXRlIiwgIm5ld1N0YXRlIiwgInJlc29sdmVkU3RhdGUiLCAic29ydFN0cmluZyIsICJpc1ZhbGlkRWxlbWVudCIsICJDb250ZXh0TWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkNvbnRleHRNZW51U3ViQ29udGVudCIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgIkNvbnRleHRNZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiQ29udGV4dE1lbnVSYWRpb0l0ZW0iLCAiQ2lyY2xlIiwgIkNvbnRleHRNZW51TGFiZWwiLCAiQ29udGV4dE1lbnVTZXBhcmF0b3IiLCAiQ29udGV4dE1lbnVTaG9ydGN1dCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJjb250ZW50IiwgImV4dHJhY3RUZXh0Q29udGVudCIsICJlcnJvciIsICJDb3B5IiwgIm5vZGUiLCAiaXNWYWxpZEVsZW1lbnQiLCAianN4IiwgIkNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgInJlZiIsICJzdHlsZSIsICJmb3J3YXJkZWRQcm9wcyIsICJUYWJsZUNlbGwiLCAiY24iLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAiaXNPYmplY3RUeXBlIiwgImpzeCIsICJCb29sZWFuQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiRGF0ZUNlbGwiLCAicHJvcHMiLCAidmFsdWUiLCAiRnJhZ21lbnQiLCAianN4IiwgIkVtcHR5Q2VsbCIsICJfcHJvcHMiLCAiRnJhZ21lbnQiLCAianN4IiwgIkVudW1DZWxsIiwgInByb3BzIiwgInZhbHVlIiwgIkZyYWdtZW50IiwgImpzeCIsICJKU09OQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJqc3giLCAiTnVsbENlbGwiLCAiX3Byb3BzIiwgImpzeCIsICJOdW1lcmljQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiUmF3Q2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiVGltZUNlbGwiLCAicHJvcHMiLCAidmFsdWUiLCAianN4IiwgImdldENlbGwiLCAiY2VsbCIsICJjb2x1bW4iLCAidmFsdWUiLCAiRW1wdHlDZWxsIiwgIk51bGxDZWxsIiwgImdyb3VwIiwgImlzQXJyYXkiLCAiSlNPTkNlbGwiLCAiUmF3Q2VsbCIsICJFbnVtQ2VsbCIsICJCb29sZWFuQ2VsbCIsICJEYXRlQ2VsbCIsICJUaW1lQ2VsbCIsICJOdW1lcmljQ2VsbCIsICJpc09iamVjdFR5cGUiLCAiQ2hlY2tib3hQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIkNoZWNrYm94IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiQ2hlY2siLCAianN4IiwgIlNlbGVjdEhlYWRlckNlbGwiLCAicHJvcHMiLCAidGFibGUiLCAicmVhZG9ubHkiLCAiQ2hlY2tib3giLCAidmFsdWUiLCAianN4IiwgIlNlbGVjdFJvd0NlbGwiLCAicHJvcHMiLCAicm93IiwgInJlYWRvbmx5IiwgIkNoZWNrYm94IiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXJDZWxsQ29udGV4dCIsICJQb3BvdmVyQ2VsbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJvcGVuIiwgInNldE9wZW4iLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIm9uRG91YmxlQ2xpY2siLCAiY2xhc3NOYW1lIiwgInJlZiIsICJ0cmlnZ2VyUmVmIiwgIm5vZGUiLCAiY24iLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAiZXZlbnQiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYWN0aW9ucyIsICJjb250ZXh0IiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgImhhbmRsZUtleURvd24iLCAianN4IiwgImpzeHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJwcm9wcyIsICJjZWxsQ29tcG9uZW50IiwgImlucHV0Q29tcG9uZW50IiwgImxpbmtDb21wb25lbnQiLCAiY29udGFpbmVyUHJvcHMiLCAiUG9wb3ZlckNlbGwiLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIkNlbGwiLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImNuIiwgImNsb3Nlc3RDZW50ZXIiLCAiRG5kQ29udGV4dCIsICJEcmFnT3ZlcmxheSIsICJLZXlib2FyZFNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgInVzZVNlbnNvciIsICJ1c2VTZW5zb3JzIiwgImFycmF5TW92ZSIsICJTb3J0YWJsZUNvbnRleHQiLCAic29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwgInVzZVNvcnRhYmxlIiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJDU1MiLCAibW90aW9uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJjcmVhdGVQb3J0YWwiLCAic2hvcnQiLCAiY29lcmNlVG9WYWx1ZSIsICJjb2x1bW4iLCAib3BlcmF0b3IiLCAidmFsdWUiLCAiZGF0YVR5cGVHcm91cCIsICJjb2VyY2VUb1N0cmluZyIsICJEcm9wZG93bk1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJEcm9wZG93bk1lbnVTdWJDb250ZW50IiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAic2lkZU9mZnNldCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkRyb3Bkb3duTWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIkRyb3Bkb3duTWVudVNob3J0Y3V0IiwgIlJlYWN0IiwgImpzeCIsICJJbnB1dCIsICJjbGFzc05hbWUiLCAidHlwZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU2VsZWN0UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIlNlbGVjdCIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJsYWJlbCIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvbkRvd24iLCAiU2VsZWN0U2Nyb2xsVXBCdXR0b24iLCAiQ2hldnJvblVwIiwgIlNlbGVjdFNjcm9sbERvd25CdXR0b24iLCAiU2VsZWN0Q29udGVudCIsICJwb3NpdGlvbiIsICJTZWxlY3RMYWJlbCIsICJTZWxlY3RJdGVtIiwgIkNoZWNrIiwgIlNlbGVjdFNlcGFyYXRvciIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJMZWFkaW5nT3BlcmF0b3JTZWxlY3QiLCAidmFsdWUiLCAib25WYWx1ZUNoYW5nZSIsICJkaXNhYmxlZCIsICJ0cmlnZ2VyQ2xhc3NOYW1lIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiU2VsZWN0SXRlbSIsICJEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyIsICJhY3RpdmVJZCIsICJpdGVtcyIsICJ0YWJsZSIsICJhY3RpdmVJdGVtIiwgIml0ZW0iLCAibGVhZGluZ09wZXJhdG9yVmFsdWUiLCAic2hvd0xlYWRpbmdPcEZvck92ZXJsYXkiLCAiYWN0aXZlSXRlbUluZGV4IiwgInByZXZpb3VzSXRlbSIsICJGaWx0ZXJDb25kaXRpb24iLCAiRmlsdGVyR3JvdXBDb21wb25lbnQiLCAiRmlsdGVyTGlzdEl0ZW1zIiwgInBhcmVudEdyb3VwSWQiLCAib25VcGRhdGVJdGVtIiwgIm9uRGVsZXRlSXRlbSIsICJvblJlb3JkZXJJdGVtcyIsICJhY3RpdmVEcmFnSWQiLCAib25EcmFnU3RhcnQiLCAib25EcmFnRW5kU2lnbmFsIiwgInNvcnRhYmxlSXRlbUlkcyIsICJ1c2VNZW1vIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ1c2VTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJLZXlib2FyZFNlbnNvciIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAiRG5kQ29udGV4dCIsICJjbG9zZXN0Q2VudGVyIiwgImV2ZW50IiwgImFjdGl2ZSIsICJvdmVyIiwgIm9sZEluZGV4IiwgIm5ld0luZGV4IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiY3VycmVudEZpbHRlckl0ZW0iLCAiaW5kZXgiLCAic2hvd0xlYWRpbmdPcCIsICJsZWFkaW5nT3BWYWwiLCAib25MZWFkaW5nT3BDaGFuZ2VGbiIsICJpc0xlYWRpbmdPcFRhcmdldExhc3QiLCAicHJldkl0ZW0iLCAibmV3VmFsdWUiLCAidXBkYXRlZFByZXZJdGVtIiwgIlNvcnRhYmxlRmlsdGVySXRlbSIsICJ1cGRhdGVkRmlsdGVyIiwgImNyZWF0ZVBvcnRhbCIsICJEcmFnT3ZlcmxheSIsICJmaWx0ZXIiLCAib25VcGRhdGUiLCAib25EZWxldGUiLCAicGFyZW50RG5kSWQiLCAic2hvd0xlYWRpbmdPcGVyYXRvciIsICJvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSIsICJpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAic2V0Tm9kZVJlZiIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnSGFuZGxlUHJvcHMiLCAiaGFuZGxlQ29sdW1uQ2hhbmdlIiwgImhhbmRsZU9wZXJhdG9yQ2hhbmdlIiwgImhhbmRsZVZhbHVlQ2hhbmdlIiwgImUiLCAicmF3VmFsdWUiLCAiY29sdW1uSW5mbyIsICJjb2VyY2VUb1ZhbHVlIiwgImVkaXRlZFZhbHVlIiwgInNldEVkaXRlZFZhbHVlIiwgInVzZVN0YXRlIiwgImNvZXJjZVRvU3RyaW5nIiwgIm1vdGlvbiIsICJHcmlwVmVydGljYWwiLCAiY29sdW1uIiwgIklucHV0IiwgIkJ1dHRvbiIsICJYIiwgImdyb3VwIiwgImlzUm9vdCIsICJpc0V4cGFuZGVkIiwgInNldElzRXhwYW5kZWQiLCAic2V0QWN0aXZlRHJhZ0lkIiwgImhhbmRsZUFkZEZpbHRlciIsICJuZXdGaWx0ZXIiLCAic2hvcnQiLCAiaGFuZGxlQWRkR3JvdXAiLCAibmV3R3JvdXAiLCAidXBkYXRlSXRlbUluR3JvdXAiLCAidXBkYXRlZEZpbHRlck9yR3JvdXAiLCAibmV3RmlsdGVycyIsICJkZWxldGVJdGVtRnJvbUdyb3VwIiwgImhhbmRsZURyYWdTdGFydCIsICJoYW5kbGVEcmFnRW5kU2lnbmFsIiwgImhhbmRsZVJlb3JkZXJJdGVtcyIsICJyZW9yZGVyZWRGaWx0ZXJzIiwgImFycmF5TW92ZSIsICJyZW5kZXJHcm91cENvbnRlbnQiLCAiY24iLCAiQ2hldnJvbkRvd24iLCAiQ2hldnJvblJpZ2h0IiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQ2lyY2xlSGVscCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIlF1ZXJ5VmlzdWFsaXplciIsICJpc0FuZEdyb3VwT3BlbiIsICJmIiwgImkiLCAicmVzdWx0IiwgImlzTGFzdCIsICJvcGVyYXRvciIsICJGaWx0ZXJUcmVlIiwgInNldEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgIkRuZENvbnRleHQiLCAiTW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIlNvcnRhYmxlQ29udGV4dCIsICJnZXRDb3JlUm93TW9kZWwiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRJdGVtIiwgImtleSIsICJpdGVtVmFsdWUiLCAibG9jYWxTdG9yYWdlIiwgIkpTT04iLCAicGFyc2UiLCAidXNlTG9jYWxTdG9yYWdlIiwgImRlZmF1bHRWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAiaW5pdGlhbFZhbHVlIiwgInNldHRlciIsICJ1c2VDYWxsYmFjayIsICJ1cGRhdGVyIiwgIm9sZCIsICJuZXdWYWwiLCAic2V0SXRlbSIsICJzdHJpbmdpZnkiLCAiZGVmYXVsdFRoZW1lIiwgImJhY2tncm91bmQiLCAiYmFja2dyb3VuZEFsdCIsICJmb3JlZ3JvdW5kIiwgImdyYXkiLCAiZ3JheUFsdCIsICJpbnB1dEJhY2tncm91bmRDb2xvciIsICJpbnB1dFRleHRDb2xvciIsICJzdWNjZXNzIiwgImRhbmdlciIsICJhY3RpdmUiLCAid2FybmluZyIsICJUaGVtZUNvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJUaGVtZVByb3ZpZGVyIiwgIl9yZWYiLCAidGhlbWUiLCAicmVzdCIsICJjcmVhdGVFbGVtZW50IiwgIlByb3ZpZGVyIiwgIl9leHRlbmRzIiwgInVzZVRoZW1lIiwgInVzZUNvbnRleHQiLCAidXNlTWVkaWFRdWVyeSIsICJxdWVyeSIsICJpc01hdGNoIiwgInNldElzTWF0Y2giLCAid2luZG93IiwgIm1hdGNoTWVkaWEiLCAibWF0Y2hlcyIsICJtYXRjaGVyIiwgIm9uQ2hhbmdlIiwgImFkZExpc3RlbmVyIiwgInJlbW92ZUxpc3RlbmVyIiwgImlzU2VydmVyIiwgInN0eWxlZCIsICJ0eXBlIiwgIm5ld1N0eWxlcyIsICJxdWVyaWVzIiwgImZvcndhcmRSZWYiLCAicmVmIiwgInN0eWxlIiwgIm1lZGlhU3R5bGVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgInJlZHVjZSIsICJjdXJyZW50IiwgIl9yZWYyIiwgInVzZUlzTW91bnRlZCIsICJtb3VudGVkUmVmIiwgInVzZVJlZiIsICJpc01vdW50ZWQiLCAiUGFuZWwiLCAiX3Byb3BzIiwgImZvbnRTaXplIiwgImZvbnRGYW1pbHkiLCAiZGlzcGxheSIsICJiYWNrZ3JvdW5kQ29sb3IiLCAiY29sb3IiLCAiZmxleERpcmVjdGlvbiIsICJmbGV4IiwgIm92ZXJmbG93IiwgImhlaWdodCIsICIobWF4LXdpZHRoOiA3MDBweCkiLCAiYm9yZGVyVG9wIiwgIkJ1dHRvbiIsICJwcm9wcyIsICJhcHBlYXJhbmNlIiwgImZvbnRXZWlnaHQiLCAiYm9yZGVyIiwgImJvcmRlclJhZGl1cyIsICJwYWRkaW5nIiwgIm9wYWNpdHkiLCAiZGlzYWJsZWQiLCAidW5kZWZpbmVkIiwgImN1cnNvciIsICJsaW5lSGVpZ2h0IiwgIldlYmtpdEFwcGVhcmFuY2UiLCAiYmFja2dyb3VuZEltYWdlIiwgImJhY2tncm91bmRSZXBlYXQiLCAiYmFja2dyb3VuZFBvc2l0aW9uIiwgImJhY2tncm91bmRTaXplIiwgIkVudHJ5IiwgIm91dGxpbmUiLCAid29yZEJyZWFrIiwgIkxhYmVsIiwgIlZhbHVlIiwgIlN1YkVudHJpZXMiLCAibWFyZ2luTGVmdCIsICJwYWRkaW5nTGVmdCIsICJib3JkZXJMZWZ0IiwgIkluZm8iLCAiRXhwYW5kZXIiLCAiZXhwYW5kZWQiLCAidHJhbnNpdGlvbiIsICJ0cmFuc2Zvcm0iLCAiRGVmYXVsdFJlbmRlcmVyIiwgImhhbmRsZUVudHJ5IiwgImxhYmVsIiwgInN1YkVudHJpZXMiLCAic3ViRW50cnlQYWdlcyIsICJ0b2dnbGUiLCAicGFnZVNpemUiLCAicmVuZGVyZXIiLCAidmFsdWVTbmFwc2hvdCIsICJzZXRWYWx1ZVNuYXBzaG90IiwgImV4cGFuZGVkUGFnZXMiLCAic2V0RXhwYW5kZWRQYWdlcyIsICJyZWZyZXNoVmFsdWVTbmFwc2hvdCIsICJsZW5ndGgiLCAiRnJhZ21lbnQiLCAib25DbGljayIsICJTdHJpbmciLCAidG9Mb3dlckNhc2UiLCAibWFwIiwgImVudHJ5IiwgImluZGV4IiwgImluY2x1ZGVzIiwgImZpbHRlciIsICJkIiwgIkV4cGxvcmVyIiwgImRlZmF1bHRFeHBhbmRlZCIsICJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwgIl9yZWYzIiwgImRlcHRoIiwgInNldEV4cGFuZGVkIiwgInNldCIsICJwYXRoIiwgIm1ha2VQcm9wZXJ0eSIsICJzdWIiLCAibmV3UGF0aCIsICJjb25jYXQiLCAic3ViRGVmYXVsdEV4cGFuZGVkIiwgInN1YlBhdGgiLCAiQXJyYXkiLCAiaXNBcnJheSIsICJpIiwgIlN5bWJvbCIsICJpdGVyYXRvciIsICJmcm9tIiwgInZhbCIsICJfcmVmNCIsICJwdXNoIiwgInNsaWNlIiwgIkxvZ28iLCAid2lkdGgiLCAidmlld0JveCIsICJ2ZXJzaW9uIiwgInN0cm9rZSIsICJzdHJva2VXaWR0aCIsICJmaWxsIiwgImZpbGxSdWxlIiwgImlkIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJpbml0aWFsSXNPcGVuIiwgInRhYmxlIiwgInBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uUHJvcHMiLCAiY29udGFpbmVyRWxlbWVudCIsICJDb250YWluZXIiLCAicm9vdFJlZiIsICJwYW5lbFJlZiIsICJpc09wZW4iLCAic2V0SXNPcGVuIiwgInBhbmVsU3R5bGUiLCAib3RoZXJQYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblN0eWxlIiwgIm9uVG9nZ2xlQ2xpY2siLCAib3RoZXJUb2dnbGVCdXR0b25Qcm9wcyIsICJjbGFzc05hbWUiLCAiUmVhY3RUYWJsZURldnRvb2xzUGFuZWwiLCAibWF4SGVpZ2h0IiwgImUiLCAibWFyZ2luIiwgImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwgIl9faHRtbCIsICJtaW5IZWlnaHQiLCAiYm9yZGVyUmlnaHQiLCAianVzdGlmeUNvbnRlbnQiLCAiYWxpZ25JdGVtcyIsICJtYXJnaW5SaWdodCIsICJmbGV4V3JhcCIsICJvdmVyZmxvd1kiLCAiZ2V0U3RhdGUiLCAiZ2V0QWxsQ29sdW1ucyIsICJnZXRDb3JlUm93TW9kZWwiLCAiZ2V0RmlsdGVyZWRSb3dNb2RlbCIsICJnZXRTb3J0ZWRSb3dNb2RlbCIsICJnZXRHcm91cGVkUm93TW9kZWwiLCAiZ2V0RXhwYW5kZWRSb3dNb2RlbCIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgImpzeCIsICJTa2VsZXRvbiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAiY24iLCAianN4IiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJjbGFzc05hbWUiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgInByb3BzIiwgInRhYmxlIiwgInZhcmlhbnQiLCAicGFnZUluZGV4IiwgInBhZ2VDb3VudCIsICJCdXR0b24iLCAiQ2hldnJvbnNMZWZ0IiwgIkNoZXZyb25MZWZ0IiwgIklucHV0IiwgImUiLCAiQ2hldnJvblJpZ2h0IiwgIkNoZXZyb25zUmlnaHQiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJjb2x1bW4iLCAia2luZCIsICJpc1Bpbm5lZCIsICJpc0xlZnRQaW5uZWQiLCAiaXNSaWdodFBpbm5lZCIsICJjbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZCIsICJwcm9wcyIsICJjb2x1bW5EZWZzIiwgImdldEJlZm9yZVJvd3MiLCAiaXNMb2FkaW5nIiwgImlzUHJvY2Vzc2luZyIsICJvblBhZ2luYXRpb25DaGFuZ2UiLCAib25Sb3dTZWxlY3Rpb25DaGFuZ2UiLCAib25Tb3J0aW5nQ2hhbmdlIiwgInBhZ2VDb3VudCIsICJwYWdpbmF0aW9uU3RhdGUiLCAicm93cyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzb3J0aW5nU3RhdGUiLCAiY29sdW1uT3JkZXIiLCAic2V0Q29sdW1uT3JkZXIiLCAidXNlU3RhdGUiLCAiY29sdW1uUGlubmluZyIsICJzZXRDb2x1bW5QaW5uaW5nIiwgImNvbHVtblNpemluZyIsICJzZXRDb2x1bW5TaXppbmciLCAic29ydGluZyIsICJ1c2VNZW1vIiwgInRvU29ydGluZ1N0YXRlIiwgImRpc3BsYXlMb2FkZXIiLCAidXNlRWZmZWN0IiwgImFjY2Vzc29yS2V5IiwgImhhbmRsZURyYWdFbmQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib3JkZXIiLCAiYWN0aXZlSW5kZXgiLCAib3ZlckluZGV4IiwgImFycmF5TW92ZSIsICJtb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAiTW91c2VTZW5zb3IiLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAiZ2V0Q29yZVJvd01vZGVsIiwgIl9fcHNfcm93aWQiLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgInRvU29ydE9yZGVySXRlbXMiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJEbmRDb250ZXh0IiwgIlRhYmxlIiwgIlRhYmxlSGVhZGVyIiwgImhlYWRlckdyb3VwIiwgIlRhYmxlUm93IiwgIlNvcnRhYmxlQ29udGV4dCIsICJoZWFkZXIiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiaSIsICJIZWFkZXIiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJUYWJsZUJvZHkiLCAicm93IiwgImNuIiwgImNlbGwiLCAiQ2VsbCIsICJUYWJsZUNlbGwiLCAiU2tlbGV0b24iLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiZnJvbSIsICJpdGVtIiwgInVzZVNvcnRhYmxlIiwgIkNTUyIsICJqc3giLCAiRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJoZWFkZXIiLCAiY29tbW9uU3R5bGUiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAidHJhbnNmb3JtIiwgInRyYW5zaXRpb24iLCAic2V0Tm9kZVJlZiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnQ2xhc3MiLCAiY24iLCAiVGFibGVIZWFkIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiVG9vbHRpcFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiY2xhc3NOYW1lIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjb2x1bW4iLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiS2V5Um91bmQiLCAiVG9vbHRpcENvbnRlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXIiLCAicHJvcHMiLCAiY29sdW1uIiwgImhlYWRlciIsICJjbGFzc05hbWUiLCAiY24iLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTW92ZURvd24iLCAiTW92ZVVwIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkJ1dHRvbiIsICJDaGV2cm9uRG93biIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJBcnJvd1VwV2lkZU5hcnJvdyIsICJYIiwgIlBpbk9mZiIsICJQaW4iLCAiZSIsICJpc09iamVjdFR5cGUiLCAibW90aW9uIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkxhYmVsUHJpbWl0aXZlIiwgImN2YSIsICJSZWFjdCIsICJqc3giLCAibGFiZWxWYXJpYW50cyIsICJjdmEiLCAiTGFiZWwiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTd2l0Y2hQcmltaXRpdmVzIiwgIlJlYWN0IiwgImpzeCIsICJTd2l0Y2giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJkYXlqcyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJJbnB1dEFjdGlvbnMiLCAib25TYXZlIiwgIm9uQ2FuY2VsIiwgIm9uQ2xvc2UiLCAib25OdWxsQ2hhbmdlIiwgImlzTnVsbCIsICJyZWFkb25seSIsICJvblNldE5vdyIsICJzaG93U2V0Tm93IiwgIkNvcm5lckRvd25MZWZ0IiwgIlN3aXRjaCIsICJjaGVja2VkIiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgImRheWpzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkJvb2xlYW5JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAidmFsdWVUb1N1Ym1pdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAibW90aW9uIiwgIlN3aXRjaCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgIkRheVBpY2tlciIsICJqc3giLCAiQ2FsZW5kYXIiLCAiY2xhc3NOYW1lIiwgImNsYXNzTmFtZXMiLCAic2hvd091dHNpZGVEYXlzIiwgImhpZGVOYXZpZ2F0aW9uIiwgInByb3BzIiwgIl9tb250aHNDbGFzc05hbWUiLCAiY24iLCAiX21vbnRoQ2FwdGlvbkNsYXNzTmFtZSIsICJfZHJvcGRvd25zQ2xhc3NOYW1lIiwgIl9mb290ZXJDbGFzc05hbWUiLCAiX3dlZWtkYXlzQ2xhc3NOYW1lIiwgIl93ZWVrZGF5Q2xhc3NOYW1lIiwgIl9jYXB0aW9uTGFiZWxDbGFzc05hbWUiLCAiX21vbnRoR3JpZENsYXNzTmFtZSIsICJfd2Vla0NsYXNzTmFtZSIsICJfZGF5Q2xhc3NOYW1lIiwgIl9kYXlCdXR0b25DbGFzc05hbWUiLCAiYnV0dG9uVmFyaWFudHMiLCAiYnV0dG9uUmFuZ2VDbGFzc05hbWUiLCAiX3JhbmdlU3RhcnRDbGFzc05hbWUiLCAiX3JhbmdlRW5kQ2xhc3NOYW1lIiwgIl9yYW5nZU1pZGRsZUNsYXNzTmFtZSIsICJfc2VsZWN0ZWRDbGFzc05hbWUiLCAiX3RvZGF5Q2xhc3NOYW1lIiwgIl9vdXRzaWRlQ2xhc3NOYW1lIiwgIl9kaXNhYmxlZENsYXNzTmFtZSIsICJfaGlkZGVuQ2xhc3NOYW1lIiwgIkRheVBpY2tlciIsICJ1c2VTdGF0ZSIsICJ1c2VJbnB1dCIsICJwcm9wcyIsICJpbml0aWFsVmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiZXZlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIkRhdGVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJjb2x1bW4iLCAiaW5pdGlhbFZhbHVlIiwgInBhcnNlZEluaXRpYWxEYXRlIiwgInVzZU1lbW8iLCAicGFyc2VkIiwgInNlbGVjdGVkRGF0ZSIsICJzZXRTZWxlY3RlZERhdGUiLCAidXNlU3RhdGUiLCAiY3VycmVudE1vbnRoIiwgInNldEN1cnJlbnRNb250aCIsICJiYXNlSGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJzZXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJoYW5kbGVPbkNoYW5nZSIsICJldmVudCIsICJuZXdWYWx1ZSIsICJuZXdEYXRlIiwgImhhbmRsZUNhbGVuZGFyU2VsZWN0IiwgImRhdGUiLCAiY29sdW1uVHlwZSIsICJkYkZvcm1hdCIsICJnZXRGb3JtYXRGb3JUeXBlIiwgInR5cGUiLCAiZm9ybWF0dGVkRGF0ZSIsICJoYW5kbGVPblN1Ym1pdCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiaGFuZGxlU2V0Tm93IiwgImUiLCAibm93IiwgIm1vbnRocyIsICJjdXJyZW50TW9udGhWYWx1ZSIsICJ5ZWFyVmFsdWUiLCAic2V0WWVhclZhbHVlIiwgImhhbmRsZU1vbnRoQ2hhbmdlIiwgIm5ld01vbnRoIiwgIm5ld1NlbGVjdGVkRGF0ZSIsICJoYW5kbGVZZWFyQ2hhbmdlIiwgIm5ld1llYXIiLCAieWVhciIsICJ1c2VFZmZlY3QiLCAiSW5wdXQiLCAiU2VsZWN0IiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJtb250aCIsICJTZWxlY3RJdGVtIiwgIkRheVBpY2tlcldyYXBwZXIiLCAiSW5wdXRBY3Rpb25zIiwgInNlbGVjdGVkIiwgIm9uU2VsZWN0IiwgIm9uTW9udGhDaGFuZ2UiLCAiZGlzYWJsZWQiLCAiQ2FsZW5kYXIiLCAidXNlQ2FsbGJhY2siLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRW51bUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJ2YWx1ZSIsICJvcHRpb25zIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiaW5pdGlhbFZhbHVlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJoYW5kbGVTZWxlY3RPcHRpb24iLCAib3B0aW9uIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYmFkZ2VWYXJpYW50cyIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiSnNvbklucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImluaXRpYWxWYWx1ZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaGFuZGxlQ2hhbmdlIiwgImUiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgImpzb25WYWx1ZSIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIk51bWVyaWNJbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJlIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJudW1lcmljVmFsdWUiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIkxhYmVsIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJSYXdJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJ1c2VDYWxsYmFjayIsICJ1c2VNZW1vIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJUaW1lSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiZm9ybWF0dGVkVGltZSIsICJ1c2VNZW1vIiwgImhhc1RpbWV6b25lIiwgImRhdGUiLCAidGltZVJlZ2V4IiwgIm1hdGNoIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAidHpPZmZzZXQiLCAicGVyaW9kIiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAianN4IiwgImdldElucHV0IiwgInByb3BzIiwgImNlbGwiLCAiY29sdW1uIiwgIm9uU3VibWl0IiwgImdyb3VwIiwgIm9wdGlvbnMiLCAiaXNBcnJheSIsICJyZWFkb25seSIsICJjZWxsVmFsdWUiLCAidmFsdWUiLCAiRGF0ZUlucHV0IiwgIlRpbWVJbnB1dCIsICJKc29uSW5wdXQiLCAiQm9vbGVhbklucHV0IiwgIkVudW1JbnB1dCIsICJOdW1lcmljSW5wdXQiLCAiUmF3SW5wdXQiLCAiaXNPYmplY3RUeXBlIiwgInV1aWQiLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXVpZHY0IiwgInVzZVF1ZXJ5IiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAic2lnbmFsIiwgImVycm9yIiwgImludHJvc3BlY3Rpb24iLCAiY3R4IiwgInVzZUFjdGl2ZVRhYmxlIiwgImFjdGl2ZVRhYmxlIiwgInNldEFjdGl2ZVRhYmxlIiwgImFjdGl2ZVNjaGVtYSIsICJzZXRBY3RpdmVTY2hlbWEiLCAiYWRhcHRlciIsICJlbWl0VGVsZW1ldHJ5RXZlbnQiLCAidXNlU3R1ZGlvIiwgImludHJvc3BlY3Rpb24iLCAiZGF0YVVwZGF0ZWRBdCIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImlzTG9hZGluZyIsICJJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCIsICJ0YWJsZUFuZFNjaGVtYSIsICJzZXRUYWJsZUFuZFNjaGVtYSIsICJ1c2VRdWVyeVN0YXRlcyIsICJ2IiwgInNldFBhZ2VQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgInNldFNvcnRQYXJhbSIsICJ0YWJsZXMiLCAidXNlTWVtbyIsICJ0b3RhbFRhYmxlQ291bnQiLCAic3VtIiwgInNjaGVtYSIsICJmaXJzdFRhYmxlIiwgInVzZUVmZmVjdCIsICJ0YWJsZUZyb21QYXJhbSIsICJ0IiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUNhbGxiYWNrIiwgIm5ld1RhYmxlIiwgImhhbmRsZVNjaGVtYUNoYW5nZSIsICJuZXdTY2hlbWEiLCAicHJldiIsICJ1dWlkdjQiLCAianN4IiwgIkxpbmsiLCAicHJvcHMiLCAiY2VsbCIsICJjb2x1bW4iLCAiZmtTY2hlbWEiLCAiZmtUYWJsZSIsICJma0NvbHVtbiIsICJoYW5kbGVTY2hlbWFDaGFuZ2UiLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQWN0aXZlVGFibGUiLCAic2V0QXBwbGllZEZpbHRlciIsICJ1c2VGaWx0ZXJpbmciLCAiaW50cm9zcGVjdGlvbiIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgInRhYmxlIiwgIkJ1dHRvbiIsICJlIiwgInV1aWQiLCAiQXJyb3dSaWdodCIsICJ1c2VSZWFjdFRhYmxlIiwgIm9taXQiLCAiRnJhZ21lbnQiLCAianN4IiwgIlN0YWdlZFJvd3MiLCAicHJvcHMiLCAicGFyZW50VGFibGUiLCAic3RhZ2VkUm93cyIsICJzZXRTdGFnZWRSb3dzIiwgInJlYWRvbmx5IiwgInVzZUlzSW5zZXJ0aW5nIiwgInVwZGF0ZVN0YWdlZFJvdyIsICJyb3dJbmRleCIsICJwYXJ0aWFsUm93IiwgInByZXZSb3dzIiwgIm5ld1Jvd3MiLCAiY29sdW1uRGVmcyIsICJjb2x1bW4iLCAiRW1wdHlDZWxsIiwgImNlbGwiLCAiV3JpdGVhYmxlQ2VsbCIsICJnZXRDZWxsIiwgImdldElucHV0IiwgInZhbHVlIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJyb3ciLCAiaSIsICJUYWJsZVJvdyIsICJqIiwgIkNlbGwiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJBY3RpdmVUYWJsZVZpZXciLCAiX3Byb3BzIiwgImlzTXV0YXRpbmciLCAidXNlSXNNdXRhdGluZyIsICJhY3RpdmVUYWJsZSIsICJvbkVycm9yIiwgImlzRnVsbHNjcmVlbiIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInBhZ2luYXRpb25TdGF0ZSIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlUGFnaW5hdGlvbiIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAidXNlU3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUZpbHRlcmluZyIsICJkYXRhIiwgImlzRmV0Y2hpbmciLCAicmVmZXRjaCIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgImRlbGV0ZVNlbGVjdGlvbiIsICJpc1NlbGVjdGluZyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzZXRSb3dTZWxlY3Rpb25TdGF0ZSIsICJ1c2VTZWxlY3Rpb24iLCAicmVhZG9ubHkiLCAiY29sdW1uIiwgImlzSW5zZXJ0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgImluc2VydCIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJ1cGRhdGUiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAidXNlRWZmZWN0IiwgInNhdmVTdGFnZWRSb3dzIiwgInRvYXN0IiwgIm5ld1N0YWdlZFJvdyIsICJvbGQiLCAiZHJvcFN0YWdlZFJvd3MiLCAiaGFuZGxlQ2VsbElucHV0U3VibWl0IiwgInZhbHVlIiwgInJvdyIsICJvbkZpbHRlck9wZW5DaGFuZ2UiLCAib3BlbiIsICJjb25jcmV0ZUNvbHVtbkRlZnMiLCAidGFibGUiLCAiaGVhZGVyIiwgInByb3BzIiwgIkRhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbCIsICJEYXRhR3JpZEhlYWRlciIsICJjZWxsIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJMaW5rIiwgImdldElucHV0IiwgInZpcnR1YWxDb2x1bW5EZWZzIiwgIlRhYmxlSGVhZCIsICJTZWxlY3RIZWFkZXJDZWxsIiwgIkNlbGwiLCAiU2VsZWN0Um93Q2VsbCIsICJjb2x1bW5EZWZzIiwgImRlZmF1bHRDb2x1bW5Tb3J0aW5nIiwgIkJ1dHRvbiIsICJQYW5lbExlZnRDbG9zZSIsICJQYW5lbExlZnRPcGVuIiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiY24iLCAiRmlsdGVyIiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiRmlsdGVyVHJlZSIsICJmaWx0ZXIiLCAiUmVmcmVzaEN3IiwgIk1pbmltaXplIiwgIk1heGltaXplIiwgIkRhdGFHcmlkIiwgIlN0YWdlZFJvd3MiLCAiZ2V0UGFnZUNvdW50IiwgInJvd0NvdW50IiwgInBhZ2VTaXplIiwgInBhZ2VDb3VudCIsICJhIiwgImIiLCAiYU1ldGEiLCAiYk1ldGEiLCAiU2xvdCIsICJqc3giLCAianN4cyIsICJOYXZpZ2F0aW9uIiwgImNsYXNzTmFtZSIsICJ0YWJsZXMiLCAiYWN0aXZlVGFibGUiLCAiaXNMb2FkaW5nIiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUFjdGl2ZVRhYmxlIiwgInNpZGVCYXJDbGFzc2VzIiwgImNuIiwgInRhYmxlIiwgIl8iLCAiaW5kZXgiLCAiU2tlbGV0b24iLCAiQmxvY2siLCAibGFiZWwiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAiVGFibGUyIiwgIkl0ZW0iLCAiYXNDaGlsZCIsICJpc0FjdGl2ZSIsICJzaXplIiwgIndyYXBDaGlsZHJlbkluU3BhbiIsICJTbG90IiwgIlNjaGVtYVNlbGVjdG9yIiwgImludHJvc3BlY3Rpb24iLCAiaXNJbnRyb3NwZWN0aW9uTG9hZGluZyIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImFjdGl2ZVNjaGVtYSIsICJoYW5kbGVTY2hlbWFDaGFuZ2UiLCAic2NoZW1hTmFtZXMiLCAiU2VsZWN0IiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJTZWxlY3RJdGVtIiwgInNjaGVtYSIsICJqc3giLCAianN4cyIsICJTdHVkaW8iLCAicHJvcHMiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgIm9uVGVsZW1ldHJ5RXZlbnQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgIlN0dWRpb0NvbnRlbnQiLCAiaXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgImNvbnRhaW5lckNsYXNzZXMiLCAiY24iLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJOYXZpZ2F0aW9uIiwgIkFjdGl2ZVRhYmxlVmlldyJdCn0K
299
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvbGliL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jbGFzcy1ncm91cC11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbHJ1LWNhY2hlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9wYXJzZS1jbGFzcy1uYW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jb25maWctdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNsYXNzbGlzdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctam9pbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY3JlYXRlLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9mcm9tLXRoZW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi92YWxpZGF0b3JzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9kZWZhdWx0LWNvbmZpZy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY29uZmlncy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZXh0ZW5kLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1tZXJnZS50cyIsICIuLi8uLi91aS9zdHVkaW8vQWN0aXZlVGFibGVWaWV3LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9zaGFyZWQvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvZGVmYXVsdEF0dHJpYnV0ZXMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9JY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvY3JlYXRlTHVjaWRlSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LXVwLXdpZGUtbmFycm93LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hlY2sudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9uLWRvd24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9uLWxlZnQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9uLXJpZ2h0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi11cC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb25zLWxlZnQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS1oZWxwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2lyY2xlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY29weS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Nvcm5lci1kb3duLWxlZnQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9maWx0ZXIudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9ncmlwLXZlcnRpY2FsLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMva2V5LXJvdW5kLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWF4aW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9taW5pbWl6ZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1vcGVuLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGluLW9mZi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3Bpbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3JlZnJlc2gtY3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy90YWJsZS0yLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMveC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9wb3BvdmVyLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3RhYmxlLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydC50cyIsICIuLi8uLi91aS9zdHVkaW8vY29udGV4dC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3F1ZXJ5LWRldnRvb2xzQDUuNzIuMi9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzL2J1aWxkL2luZGV4LmpzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9pbmRleC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3Nvbm5lci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL051cXNIYXNoQWRhcHRlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHQudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXVwZGF0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2UtZmlsdGVyaW5nLnRzIiwgIi4uLy4uL3VpL2hvb2tzL251cXMudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWlzLWluc2VydGluZy50cyIsICIuLi8uLi91aS9ob29rcy91c2UtcGFnaW5hdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc2VsZWN0aW9uLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zb3J0aW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvZ2V0LWNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0Jvb2xlYW5DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9EYXRlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW1wdHlDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9FbnVtQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvSlNPTkNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL051bGxDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdW1lcmljQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvUmF3Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvVGltZUNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdFJvd0NlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Xcml0ZWFibGVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vRmlsdGVyVHJlZS50c3giLCAiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlscy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZExvYWRpbmdCYXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkUGFnaW5hdGlvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvZmVhdHVyZXMvY29sdW1uLXBpbm5pbmcudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90b29sdGlwLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9nZXQtaW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9Cb29sZWFuSW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvbGFiZWwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc3dpdGNoLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvaW5wdXQtYWN0aW9ucy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0RhdGVJbnB1dC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9jYWxlbmRhci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L3VzZS1pbnB1dC50cyIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvRW51bUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvSnNvbklucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvTnVtZXJpY0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvUmF3SW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9UaW1lSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9saW5rL2dldC1saW5rLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9TdGFnZWRSb3dzLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vTmF2aWdhdGlvbi50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vZGF0YVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBBY3RpdmVUYWJsZVZpZXcgfSBmcm9tIFwiLi9BY3RpdmVUYWJsZVZpZXdcIjtcbmltcG9ydCB7IFN0dWRpb0NvbnRleHRQcm92aWRlciwgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gXCIuL05hdmlnYXRpb25cIjtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgPSB7XG4gIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiO1xuICBwYXlsb2FkOiB7XG4gICAgZXZlbnRfaWQ6IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IHN0cmluZztcbiAgICB1c2VyX2lkPzogc3RyaW5nO1xuICAgIHdvcmtzcGFjZV9pZD86IHN0cmluZztcbiAgICBvcmdhbml6YXRpb25faWQ/OiBzdHJpbmc7XG4gICAgZW1iZWRkaW5nX3R5cGU/OiBzdHJpbmc7XG4gICAgdmVuZG9yX2lkPzogc3RyaW5nO1xuICAgIHRhYmxlX2NvdW50OiBudW1iZXI7XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0dWRpb1Byb3BzIHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogTWFpbiBTdHVkaW8gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgZGF0YWJhc2UgdmlzdWFsaXphdGlvbiBhbmQgbWFuYWdlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvKHByb3BzOiBTdHVkaW9Qcm9wcykge1xuICBjb25zdCB7IGFkYXB0ZXIsIG9uRXJyb3IsIG9uVGVsZW1ldHJ5RXZlbnQgfSA9IHByb3BzO1xuXG4gIGlmICghYWRhcHRlcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJObyBhZGFwdGVyIHByb3ZpZGVkIHRvIFN0dWRpbyBjb21wb25lbnRcIik7XG4gICAgcmV0dXJuIDxkaXY+RXJyb3I6IE5vIGFkYXB0ZXIgcHJvdmlkZWQ8L2Rpdj47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdHVkaW9Db250ZXh0UHJvdmlkZXIgYWRhcHRlcj17YWRhcHRlcn0gb25FcnJvcj17b25FcnJvcn0gb25UZWxlbWV0cnlFdmVudD17b25UZWxlbWV0cnlFdmVudH0+XG4gICAgICA8U3R1ZGlvQ29udGVudCAvPlxuICAgIDwvU3R1ZGlvQ29udGV4dFByb3ZpZGVyPlxuICApO1xufVxuXG5mdW5jdGlvbiBTdHVkaW9Db250ZW50KCkge1xuICBjb25zdCB7IGlzRnVsbHNjcmVlbiwgaXNOYXZpZ2F0aW9uT3BlbiB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgY29uc3QgY29udGFpbmVyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGwgcHMtbWluLWgtMCBwcy1tYXgtaC1mdWxsXCIsXG4gICAgaXNGdWxsc2NyZWVuICYmIFwicHMtZml4ZWQgcHMtaW5zZXQtMCBwcy16LVs5OTk5XSBwcy1iZy1iYWNrZ3JvdW5kIHBzLXAtMlwiLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBkYXRhLWZ1bGxzY3JlZW49e2lzRnVsbHNjcmVlbn0gY2xhc3NOYW1lPXtjb250YWluZXJDbGFzc2VzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1nYXAtMCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC01MCBwcy1yZWxhdGl2ZSBwcy1tYXgtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtcm91bmRlZC1sZ1wiPlxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gJiYgKFxuICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICBhbmltYXRlPXt7IHdpZHRoOiBcImF1dG9cIiwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPE5hdmlnYXRpb24gLz5cbiAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cblxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtMTAwIHBzLWZsZXgtY29sIHBzLXAtcHggcHMtcm91bmRlZC1sZyBwcy1zZWxmLXN0YXJ0IHBzLWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLW1heC1oLWZ1bGwgcHMtb3ZlcmZsb3ctY2xpcFwiXG4gICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEFjdGl2ZVRhYmxlVmlldyAvPlxuICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICIvLyBzaGFkY24gdXRpbHNcbmltcG9ydCB7IHR5cGUgQ2xhc3NWYWx1ZSwgY2xzeCB9IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBleHRlbmRUYWlsd2luZE1lcmdlIH0gZnJvbSBcInRhaWx3aW5kLW1lcmdlXCI7XG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gZXh0ZW5kVGFpbHdpbmRNZXJnZSh7XG4gIHByZWZpeDogXCJwcy1cIixcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gY24oLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pIHtcbiAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKTtcbn1cbiIsICJpbXBvcnQge1xuICAgIENsYXNzR3JvdXAsXG4gICAgQ2xhc3NWYWxpZGF0b3IsXG4gICAgQ29uZmlnLFxuICAgIEdlbmVyaWNDbGFzc0dyb3VwSWRzLFxuICAgIEdlbmVyaWNDb25maWcsXG4gICAgR2VuZXJpY1RoZW1lR3JvdXBJZHMsXG4gICAgVGhlbWVHZXR0ZXIsXG4gICAgVGhlbWVPYmplY3QsXG59IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NQYXJ0T2JqZWN0IHtcbiAgICBuZXh0UGFydDogTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PlxuICAgIHZhbGlkYXRvcnM6IENsYXNzVmFsaWRhdG9yT2JqZWN0W11cbiAgICBjbGFzc0dyb3VwSWQ/OiBHZW5lcmljQ2xhc3NHcm91cElkc1xufVxuXG5pbnRlcmZhY2UgQ2xhc3NWYWxpZGF0b3JPYmplY3Qge1xuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbiAgICB2YWxpZGF0b3I6IENsYXNzVmFsaWRhdG9yXG59XG5cbmNvbnN0IENMQVNTX1BBUlRfU0VQQVJBVE9SID0gJy0nXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc0dyb3VwVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgY2xhc3NNYXAgPSBjcmVhdGVDbGFzc01hcChjb25maWcpXG4gICAgY29uc3QgeyBjb25mbGljdGluZ0NsYXNzR3JvdXBzLCBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMgfSA9IGNvbmZpZ1xuXG4gICAgY29uc3QgZ2V0Q2xhc3NHcm91cElkID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsYXNzUGFydHMgPSBjbGFzc05hbWUuc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICAgICAgLy8gQ2xhc3NlcyBsaWtlIGAtaW5zZXQtMWAgcHJvZHVjZSBhbiBlbXB0eSBzdHJpbmcgYXMgZmlyc3QgY2xhc3NQYXJ0LiBXZSBhc3N1bWUgdGhhdCBjbGFzc2VzIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgY29ycmVjdGx5IGFuZCByZW1vdmUgaXQgZnJvbSBjbGFzc1BhcnRzLlxuICAgICAgICBpZiAoY2xhc3NQYXJ0c1swXSA9PT0gJycgJiYgY2xhc3NQYXJ0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIGNsYXNzUGFydHMuc2hpZnQoKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMsIGNsYXNzTWFwKSB8fCBnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkoY2xhc3NOYW1lKVxuICAgIH1cblxuICAgIGNvbnN0IGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyA9IChcbiAgICAgICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyOiBib29sZWFuLFxuICAgICkgPT4ge1xuICAgICAgICBjb25zdCBjb25mbGljdHMgPSBjb25mbGljdGluZ0NsYXNzR3JvdXBzW2NsYXNzR3JvdXBJZF0gfHwgW11cblxuICAgICAgICBpZiAoaGFzUG9zdGZpeE1vZGlmaWVyICYmIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmNvbmZsaWN0cywgLi4uY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzW2NsYXNzR3JvdXBJZF0hXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZsaWN0c1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldENsYXNzR3JvdXBJZCxcbiAgICAgICAgZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzLFxuICAgIH1cbn1cblxuY29uc3QgZ2V0R3JvdXBSZWN1cnNpdmUgPSAoXG4gICAgY2xhc3NQYXJ0czogc3RyaW5nW10sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4pOiBHZW5lcmljQ2xhc3NHcm91cElkcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGNsYXNzUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QuY2xhc3NHcm91cElkXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENsYXNzUGFydCA9IGNsYXNzUGFydHNbMF0hXG4gICAgY29uc3QgbmV4dENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQoY3VycmVudENsYXNzUGFydClcbiAgICBjb25zdCBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQgPSBuZXh0Q2xhc3NQYXJ0T2JqZWN0XG4gICAgICAgID8gZ2V0R3JvdXBSZWN1cnNpdmUoY2xhc3NQYXJ0cy5zbGljZSgxKSwgbmV4dENsYXNzUGFydE9iamVjdClcbiAgICAgICAgOiB1bmRlZmluZWRcblxuICAgIGlmIChjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydFxuICAgIH1cblxuICAgIGlmIChjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzUmVzdCA9IGNsYXNzUGFydHMuam9pbihDTEFTU19QQVJUX1NFUEFSQVRPUilcblxuICAgIHJldHVybiBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5maW5kKCh7IHZhbGlkYXRvciB9KSA9PiB2YWxpZGF0b3IoY2xhc3NSZXN0KSk/LmNsYXNzR3JvdXBJZFxufVxuXG5jb25zdCBhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4ID0gL15cXFsoLispXFxdJC9cblxuY29uc3QgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5ID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGFyYml0cmFyeVByb3BlcnR5UmVnZXgudGVzdChjbGFzc05hbWUpKSB7XG4gICAgICAgIGNvbnN0IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lID0gYXJiaXRyYXJ5UHJvcGVydHlSZWdleC5leGVjKGNsYXNzTmFtZSkhWzFdXG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWU/LnN1YnN0cmluZyhcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZS5pbmRleE9mKCc6JyksXG4gICAgICAgIClcblxuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICAgIC8vIEkgdXNlIHR3byBkb3RzIGhlcmUgYmVjYXVzZSBvbmUgZG90IGlzIHVzZWQgYXMgcHJlZml4IGZvciBjbGFzcyBncm91cHMgaW4gcGx1Z2luc1xuICAgICAgICAgICAgcmV0dXJuICdhcmJpdHJhcnkuLicgKyBwcm9wZXJ0eVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEV4cG9ydGVkIGZvciB0ZXN0aW5nIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsYXNzTWFwID0gKGNvbmZpZzogQ29uZmlnPEdlbmVyaWNDbGFzc0dyb3VwSWRzLCBHZW5lcmljVGhlbWVHcm91cElkcz4pID0+IHtcbiAgICBjb25zdCB7IHRoZW1lLCBwcmVmaXggfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGNsYXNzTWFwOiBDbGFzc1BhcnRPYmplY3QgPSB7XG4gICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwPHN0cmluZywgQ2xhc3NQYXJ0T2JqZWN0PigpLFxuICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzID0gZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY29uZmlnLmNsYXNzR3JvdXBzKSxcbiAgICAgICAgcHJlZml4LFxuICAgIClcblxuICAgIHByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMuZm9yRWFjaCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShjbGFzc0dyb3VwLCBjbGFzc01hcCwgY2xhc3NHcm91cElkLCB0aGVtZSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIGNsYXNzTWFwXG59XG5cbmNvbnN0IHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkgPSAoXG4gICAgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz4sXG4gICAgY2xhc3NQYXJ0T2JqZWN0OiBDbGFzc1BhcnRPYmplY3QsXG4gICAgY2xhc3NHcm91cElkOiBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICB0aGVtZTogVGhlbWVPYmplY3Q8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuKSA9PiB7XG4gICAgY2xhc3NHcm91cC5mb3JFYWNoKChjbGFzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc1BhcnRPYmplY3RUb0VkaXQgPVxuICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbiA9PT0gJycgPyBjbGFzc1BhcnRPYmplY3QgOiBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwgY2xhc3NEZWZpbml0aW9uKVxuICAgICAgICAgICAgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0LmNsYXNzR3JvdXBJZCA9IGNsYXNzR3JvdXBJZFxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaWYgKGlzVGhlbWVHZXR0ZXIoY2xhc3NEZWZpbml0aW9uKSkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzRGVmaW5pdGlvbih0aGVtZSksXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NHcm91cElkLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdC52YWxpZGF0b3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogY2xhc3NEZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY2xhc3NEZWZpbml0aW9uKS5mb3JFYWNoKChba2V5LCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICAgICAgcHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwLFxuICAgICAgICAgICAgICAgIGdldFBhcnQoY2xhc3NQYXJ0T2JqZWN0LCBrZXkpLFxuICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICB0aGVtZSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICB9KVxufVxuXG5jb25zdCBnZXRQYXJ0ID0gKGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGNsYXNzUGFydE9iamVjdFxuXG4gICAgcGF0aC5zcGxpdChDTEFTU19QQVJUX1NFUEFSQVRPUikuZm9yRWFjaCgocGF0aFBhcnQpID0+IHtcbiAgICAgICAgaWYgKCFjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LmhhcyhwYXRoUGFydCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuc2V0KHBhdGhQYXJ0LCB7XG4gICAgICAgICAgICAgICAgbmV4dFBhcnQ6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0ID0gY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5nZXQocGF0aFBhcnQpIVxuICAgIH0pXG5cbiAgICByZXR1cm4gY3VycmVudENsYXNzUGFydE9iamVjdFxufVxuXG5jb25zdCBpc1RoZW1lR2V0dGVyID0gKGZ1bmM6IENsYXNzVmFsaWRhdG9yIHwgVGhlbWVHZXR0ZXIpOiBmdW5jIGlzIFRoZW1lR2V0dGVyID0+XG4gICAgKGZ1bmMgYXMgVGhlbWVHZXR0ZXIpLmlzVGhlbWVHZXR0ZXJcblxuY29uc3QgZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IChcbiAgICBjbGFzc0dyb3VwRW50cmllczogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+LFxuICAgIHByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogQXJyYXk8W2NsYXNzR3JvdXBJZDogc3RyaW5nLCBjbGFzc0dyb3VwOiBDbGFzc0dyb3VwPEdlbmVyaWNUaGVtZUdyb3VwSWRzPl0+ID0+IHtcbiAgICBpZiAoIXByZWZpeCkge1xuICAgICAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXNcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NHcm91cEVudHJpZXMubWFwKChbY2xhc3NHcm91cElkLCBjbGFzc0dyb3VwXSkgPT4ge1xuICAgICAgICBjb25zdCBwcmVmaXhlZENsYXNzR3JvdXAgPSBjbGFzc0dyb3VwLm1hcCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgY2xhc3NEZWZpbml0aW9uXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikubWFwKChba2V5LCB2YWx1ZV0pID0+IFtwcmVmaXggKyBrZXksIHZhbHVlXSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2xhc3NEZWZpbml0aW9uXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIFtjbGFzc0dyb3VwSWQsIHByZWZpeGVkQ2xhc3NHcm91cF1cbiAgICB9KVxufVxuIiwgIi8vIEV4cG9ydCBpcyBuZWVkZWQgYmVjYXVzZSBUeXBlU2NyaXB0IGNvbXBsYWlucyBhYm91dCBhbiBlcnJvciBvdGhlcndpc2U6XG4vLyBFcnJvcjogXHUyMDI2L3RhaWx3aW5kLW1lcmdlL3NyYy9jb25maWctdXRpbHMudHMoOCwxNyk6IHNlbWFudGljIGVycm9yIFRTNDA1ODogUmV0dXJuIHR5cGUgb2YgZXhwb3J0ZWQgZnVuY3Rpb24gaGFzIG9yIGlzIHVzaW5nIG5hbWUgJ0xydUNhY2hlJyBmcm9tIGV4dGVybmFsIG1vZHVsZSBcIlx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvbHJ1LWNhY2hlXCIgYnV0IGNhbm5vdCBiZSBuYW1lZC5cbmV4cG9ydCBpbnRlcmZhY2UgTHJ1Q2FjaGU8S2V5LCBWYWx1ZT4ge1xuICAgIGdldChrZXk6IEtleSk6IFZhbHVlIHwgdW5kZWZpbmVkXG4gICAgc2V0KGtleTogS2V5LCB2YWx1ZTogVmFsdWUpOiB2b2lkXG59XG5cbi8vIExSVSBjYWNoZSBpbnNwaXJlZCBmcm9tIGhhc2hscnUgKGh0dHBzOi8vZ2l0aHViLmNvbS9kb21pbmljdGFyci9oYXNobHJ1L2Jsb2IvdjEuMC40L2luZGV4LmpzKSBidXQgb2JqZWN0IHJlcGxhY2VkIHdpdGggTWFwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbmV4cG9ydCBjb25zdCBjcmVhdGVMcnVDYWNoZSA9IDxLZXksIFZhbHVlPihtYXhDYWNoZVNpemU6IG51bWJlcik6IExydUNhY2hlPEtleSwgVmFsdWU+ID0+IHtcbiAgICBpZiAobWF4Q2FjaGVTaXplIDwgMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzZXQ6ICgpID0+IHt9LFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGNhY2hlU2l6ZSA9IDBcbiAgICBsZXQgY2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcbiAgICBsZXQgcHJldmlvdXNDYWNoZSA9IG5ldyBNYXA8S2V5LCBWYWx1ZT4oKVxuXG4gICAgY29uc3QgdXBkYXRlID0gKGtleTogS2V5LCB2YWx1ZTogVmFsdWUpID0+IHtcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgIGNhY2hlU2l6ZSsrXG5cbiAgICAgICAgaWYgKGNhY2hlU2l6ZSA+IG1heENhY2hlU2l6ZSkge1xuICAgICAgICAgICAgY2FjaGVTaXplID0gMFxuICAgICAgICAgICAgcHJldmlvdXNDYWNoZSA9IGNhY2hlXG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBNYXAoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0KGtleSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gY2FjaGUuZ2V0KGtleSlcblxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodmFsdWUgPSBwcmV2aW91c0NhY2hlLmdldChrZXkpKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjYWNoZS5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfVxufVxuIiwgImltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgSU1QT1JUQU5UX01PRElGSUVSID0gJyEnXG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYXJzZUNsYXNzTmFtZSA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IHtcbiAgICBjb25zdCB7IHNlcGFyYXRvciwgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUgfSA9IGNvbmZpZ1xuICAgIGNvbnN0IGlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyID0gc2VwYXJhdG9yLmxlbmd0aCA9PT0gMVxuICAgIGNvbnN0IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyID0gc2VwYXJhdG9yWzBdXG4gICAgY29uc3Qgc2VwYXJhdG9yTGVuZ3RoID0gc2VwYXJhdG9yLmxlbmd0aFxuXG4gICAgLy8gcGFyc2VDbGFzc05hbWUgaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy90YWlsd2luZGNzcy9ibG9iL3YzLjIuMi9zcmMvdXRpbC9zcGxpdEF0VG9wTGV2ZWxPbmx5LmpzXG4gICAgY29uc3QgcGFyc2VDbGFzc05hbWUgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gW11cblxuICAgICAgICBsZXQgYnJhY2tldERlcHRoID0gMFxuICAgICAgICBsZXQgbW9kaWZpZXJTdGFydCA9IDBcbiAgICAgICAgbGV0IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uOiBudW1iZXIgfCB1bmRlZmluZWRcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2xhc3NOYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDaGFyYWN0ZXIgPSBjbGFzc05hbWVbaW5kZXhdXG5cbiAgICAgICAgICAgIGlmIChicmFja2V0RGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXIgPT09IGZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyICYmXG4gICAgICAgICAgICAgICAgICAgIChpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lLnNsaWNlKGluZGV4LCBpbmRleCArIHNlcGFyYXRvckxlbmd0aCkgPT09IHNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goY2xhc3NOYW1lLnNsaWNlKG1vZGlmaWVyU3RhcnQsIGluZGV4KSlcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJTdGFydCA9IGluZGV4ICsgc2VwYXJhdG9yTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoKytcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudENoYXJhY3RlciA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgYnJhY2tldERlcHRoLS1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgbW9kaWZpZXJzLmxlbmd0aCA9PT0gMCA/IGNsYXNzTmFtZSA6IGNsYXNzTmFtZS5zdWJzdHJpbmcobW9kaWZpZXJTdGFydClcbiAgICAgICAgY29uc3QgaGFzSW1wb3J0YW50TW9kaWZpZXIgPVxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllci5zdGFydHNXaXRoKElNUE9SVEFOVF9NT0RJRklFUilcbiAgICAgICAgY29uc3QgYmFzZUNsYXNzTmFtZSA9IGhhc0ltcG9ydGFudE1vZGlmaWVyXG4gICAgICAgICAgICA/IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3Vic3RyaW5nKDEpXG4gICAgICAgICAgICA6IGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXJcblxuICAgICAgICBjb25zdCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uID1cbiAgICAgICAgICAgIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uICYmIHBvc3RmaXhNb2RpZmllclBvc2l0aW9uID4gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgID8gcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gLSBtb2RpZmllclN0YXJ0XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9kaWZpZXJzLFxuICAgICAgICAgICAgaGFzSW1wb3J0YW50TW9kaWZpZXIsXG4gICAgICAgICAgICBiYXNlQ2xhc3NOYW1lLFxuICAgICAgICAgICAgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbixcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSkge1xuICAgICAgICByZXR1cm4gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiBleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSh7IGNsYXNzTmFtZSwgcGFyc2VDbGFzc05hbWUgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VDbGFzc05hbWVcbn1cblxuLyoqXG4gKiBTb3J0cyBtb2RpZmllcnMgYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBzY2hlbWE6XG4gKiAtIFByZWRlZmluZWQgbW9kaWZpZXJzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHlcbiAqIC0gV2hlbiBhbiBhcmJpdHJhcnkgdmFyaWFudCBhcHBlYXJzLCBpdCBtdXN0IGJlIHByZXNlcnZlZCB3aGljaCBtb2RpZmllcnMgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgaXRcbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRNb2RpZmllcnMgPSAobW9kaWZpZXJzOiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmIChtb2RpZmllcnMubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgcmV0dXJuIG1vZGlmaWVyc1xuICAgIH1cblxuICAgIGNvbnN0IHNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuICAgIGxldCB1bnNvcnRlZE1vZGlmaWVyczogc3RyaW5nW10gPSBbXVxuXG4gICAgbW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXJiaXRyYXJ5VmFyaWFudCA9IG1vZGlmaWVyWzBdID09PSAnWydcblxuICAgICAgICBpZiAoaXNBcmJpdHJhcnlWYXJpYW50KSB7XG4gICAgICAgICAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCksIG1vZGlmaWVyKVxuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMgPSBbXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdW5zb3J0ZWRNb2RpZmllcnMucHVzaChtb2RpZmllcilcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICBzb3J0ZWRNb2RpZmllcnMucHVzaCguLi51bnNvcnRlZE1vZGlmaWVycy5zb3J0KCkpXG5cbiAgICByZXR1cm4gc29ydGVkTW9kaWZpZXJzXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ2xhc3NHcm91cFV0aWxzIH0gZnJvbSAnLi9jbGFzcy1ncm91cC11dGlscydcbmltcG9ydCB7IGNyZWF0ZUxydUNhY2hlIH0gZnJvbSAnLi9scnUtY2FjaGUnXG5pbXBvcnQgeyBjcmVhdGVQYXJzZUNsYXNzTmFtZSB9IGZyb20gJy4vcGFyc2UtY2xhc3MtbmFtZSdcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29uZmlnVXRpbHMgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiAoe1xuICAgIGNhY2hlOiBjcmVhdGVMcnVDYWNoZTxzdHJpbmcsIHN0cmluZz4oY29uZmlnLmNhY2hlU2l6ZSksXG4gICAgcGFyc2VDbGFzc05hbWU6IGNyZWF0ZVBhcnNlQ2xhc3NOYW1lKGNvbmZpZyksXG4gICAgLi4uY3JlYXRlQ2xhc3NHcm91cFV0aWxzKGNvbmZpZyksXG59KVxuIiwgImltcG9ydCB7IENvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBJTVBPUlRBTlRfTU9ESUZJRVIsIHNvcnRNb2RpZmllcnMgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5cbmNvbnN0IFNQTElUX0NMQVNTRVNfUkVHRVggPSAvXFxzKy9cblxuZXhwb3J0IGNvbnN0IG1lcmdlQ2xhc3NMaXN0ID0gKGNsYXNzTGlzdDogc3RyaW5nLCBjb25maWdVdGlsczogQ29uZmlnVXRpbHMpID0+IHtcbiAgICBjb25zdCB7IHBhcnNlQ2xhc3NOYW1lLCBnZXRDbGFzc0dyb3VwSWQsIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyB9ID0gY29uZmlnVXRpbHNcblxuICAgIC8qKlxuICAgICAqIFNldCBvZiBjbGFzc0dyb3VwSWRzIGluIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAgICogYHtpbXBvcnRhbnRNb2RpZmllcn17dmFyaWFudE1vZGlmaWVyc317Y2xhc3NHcm91cElkfWBcbiAgICAgKiBAZXhhbXBsZSAnZmxvYXQnXG4gICAgICogQGV4YW1wbGUgJ2hvdmVyOmZvY3VzOmJnLWNvbG9yJ1xuICAgICAqIEBleGFtcGxlICdtZDohcHInXG4gICAgICovXG4gICAgY29uc3QgY2xhc3NHcm91cHNJbkNvbmZsaWN0OiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IGNsYXNzTGlzdC50cmltKCkuc3BsaXQoU1BMSVRfQ0xBU1NFU19SRUdFWClcblxuICAgIGxldCByZXN1bHQgPSAnJ1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSBjbGFzc05hbWVzLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4IC09IDEpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDbGFzc05hbWUgPSBjbGFzc05hbWVzW2luZGV4XSFcblxuICAgICAgICBjb25zdCB7IG1vZGlmaWVycywgaGFzSW1wb3J0YW50TW9kaWZpZXIsIGJhc2VDbGFzc05hbWUsIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gfSA9XG4gICAgICAgICAgICBwYXJzZUNsYXNzTmFtZShvcmlnaW5hbENsYXNzTmFtZSlcblxuICAgICAgICBsZXQgaGFzUG9zdGZpeE1vZGlmaWVyID0gQm9vbGVhbihtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICBsZXQgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKFxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyXG4gICAgICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lLnN1YnN0cmluZygwLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uKVxuICAgICAgICAgICAgICAgIDogYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICBpZiAoIWhhc1Bvc3RmaXhNb2RpZmllcikge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhc3NHcm91cElkID0gZ2V0Q2xhc3NHcm91cElkKGJhc2VDbGFzc05hbWUpXG5cbiAgICAgICAgICAgIGlmICghY2xhc3NHcm91cElkKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IGEgVGFpbHdpbmQgY2xhc3NcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbENsYXNzTmFtZSArIChyZXN1bHQubGVuZ3RoID4gMCA/ICcgJyArIHJlc3VsdCA6IHJlc3VsdClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYXNQb3N0Zml4TW9kaWZpZXIgPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyaWFudE1vZGlmaWVyID0gc29ydE1vZGlmaWVycyhtb2RpZmllcnMpLmpvaW4oJzonKVxuXG4gICAgICAgIGNvbnN0IG1vZGlmaWVySWQgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyB2YXJpYW50TW9kaWZpZXIgKyBJTVBPUlRBTlRfTU9ESUZJRVJcbiAgICAgICAgICAgIDogdmFyaWFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgY2xhc3NJZCA9IG1vZGlmaWVySWQgKyBjbGFzc0dyb3VwSWRcblxuICAgICAgICBpZiAoY2xhc3NHcm91cHNJbkNvbmZsaWN0LmluY2x1ZGVzKGNsYXNzSWQpKSB7XG4gICAgICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBvbWl0dGVkIGR1ZSB0byBjb25mbGljdFxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNsYXNzR3JvdXBzSW5Db25mbGljdC5wdXNoKGNsYXNzSWQpXG5cbiAgICAgICAgY29uc3QgY29uZmxpY3RHcm91cHMgPSBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMoY2xhc3NHcm91cElkLCBoYXNQb3N0Zml4TW9kaWZpZXIpXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmxpY3RHcm91cHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gY29uZmxpY3RHcm91cHNbaV0hXG4gICAgICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChtb2RpZmllcklkICsgZ3JvdXApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBUYWlsd2luZCBjbGFzcyBub3QgaW4gY29uZmxpY3RcbiAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuIiwgIi8qKlxuICogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeCBhbmQgbW9kaWZpZWQgdG8gc3VpdCB0aGUgbmVlZHMgb2YgdGFpbHdpbmQtbWVyZ2UgYmV0dGVyLlxuICpcbiAqIFNwZWNpZmljYWxseTpcbiAqIC0gUnVudGltZSBjb2RlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL3NyYy9pbmRleC5qc1xuICogLSBUeXBlU2NyaXB0IHR5cGVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9jbHN4L2Jsb2IvdjEuMi4xL2Nsc3guZC50c1xuICpcbiAqIE9yaWdpbmFsIGNvZGUgaGFzIE1JVCBsaWNlbnNlOiBDb3B5cmlnaHQgKGMpIEx1a2UgRWR3YXJkcyA8bHVrZS5lZHdhcmRzMDVAZ21haWwuY29tPiAobHVrZWVkLmNvbSlcbiAqL1xuXG5leHBvcnQgdHlwZSBDbGFzc05hbWVWYWx1ZSA9IENsYXNzTmFtZUFycmF5IHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB8IDAgfCAwbiB8IGZhbHNlXG50eXBlIENsYXNzTmFtZUFycmF5ID0gQ2xhc3NOYW1lVmFsdWVbXVxuXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pOiBzdHJpbmdcbmV4cG9ydCBmdW5jdGlvbiB0d0pvaW4oKSB7XG4gICAgbGV0IGluZGV4ID0gMFxuICAgIGxldCBhcmd1bWVudDogQ2xhc3NOYW1lVmFsdWVcbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZTogc3RyaW5nXG4gICAgbGV0IHN0cmluZyA9ICcnXG5cbiAgICB3aGlsZSAoaW5kZXggPCBhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGlmICgoYXJndW1lbnQgPSBhcmd1bWVudHNbaW5kZXgrK10pKSB7XG4gICAgICAgICAgICBpZiAoKHJlc29sdmVkVmFsdWUgPSB0b1ZhbHVlKGFyZ3VtZW50KSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nXG59XG5cbmNvbnN0IHRvVmFsdWUgPSAobWl4OiBDbGFzc05hbWVBcnJheSB8IHN0cmluZykgPT4ge1xuICAgIGlmICh0eXBlb2YgbWl4ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbWl4XG4gICAgfVxuXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBtaXgubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgaWYgKG1peFtrXSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShtaXhba10gYXMgQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpKSkge1xuICAgICAgICAgICAgICAgIHN0cmluZyAmJiAoc3RyaW5nICs9ICcgJylcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcmVzb2x2ZWRWYWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNvbmZpZ1V0aWxzIH0gZnJvbSAnLi9jb25maWctdXRpbHMnXG5pbXBvcnQgeyBtZXJnZUNsYXNzTGlzdCB9IGZyb20gJy4vbWVyZ2UtY2xhc3NsaXN0J1xuaW1wb3J0IHsgQ2xhc3NOYW1lVmFsdWUsIHR3Sm9pbiB9IGZyb20gJy4vdHctam9pbidcbmltcG9ydCB7IEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG50eXBlIENyZWF0ZUNvbmZpZ0ZpcnN0ID0gKCkgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xudHlwZSBUYWlsd2luZE1lcmdlID0gKC4uLmNsYXNzTGlzdHM6IENsYXNzTmFtZVZhbHVlW10pID0+IHN0cmluZ1xudHlwZSBDb25maWdVdGlscyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNvbmZpZ1V0aWxzPlxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFpbHdpbmRNZXJnZShcbiAgICBjcmVhdGVDb25maWdGaXJzdDogQ3JlYXRlQ29uZmlnRmlyc3QsXG4gICAgLi4uY3JlYXRlQ29uZmlnUmVzdDogQ3JlYXRlQ29uZmlnU3Vic2VxdWVudFtdXG4pOiBUYWlsd2luZE1lcmdlIHtcbiAgICBsZXQgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzXG4gICAgbGV0IGNhY2hlR2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnZ2V0J11cbiAgICBsZXQgY2FjaGVTZXQ6IENvbmZpZ1V0aWxzWydjYWNoZSddWydzZXQnXVxuICAgIGxldCBmdW5jdGlvblRvQ2FsbCA9IGluaXRUYWlsd2luZE1lcmdlXG5cbiAgICBmdW5jdGlvbiBpbml0VGFpbHdpbmRNZXJnZShjbGFzc0xpc3Q6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBjcmVhdGVDb25maWdSZXN0LnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2aW91c0NvbmZpZywgY3JlYXRlQ29uZmlnQ3VycmVudCkgPT4gY3JlYXRlQ29uZmlnQ3VycmVudChwcmV2aW91c0NvbmZpZyksXG4gICAgICAgICAgICBjcmVhdGVDb25maWdGaXJzdCgpIGFzIEdlbmVyaWNDb25maWcsXG4gICAgICAgIClcblxuICAgICAgICBjb25maWdVdGlscyA9IGNyZWF0ZUNvbmZpZ1V0aWxzKGNvbmZpZylcbiAgICAgICAgY2FjaGVHZXQgPSBjb25maWdVdGlscy5jYWNoZS5nZXRcbiAgICAgICAgY2FjaGVTZXQgPSBjb25maWdVdGlscy5jYWNoZS5zZXRcbiAgICAgICAgZnVuY3Rpb25Ub0NhbGwgPSB0YWlsd2luZE1lcmdlXG5cbiAgICAgICAgcmV0dXJuIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGVHZXQoY2xhc3NMaXN0KVxuXG4gICAgICAgIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG1lcmdlQ2xhc3NMaXN0KGNsYXNzTGlzdCwgY29uZmlnVXRpbHMpXG4gICAgICAgIGNhY2hlU2V0KGNsYXNzTGlzdCwgcmVzdWx0KVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gY2FsbFRhaWx3aW5kTWVyZ2UoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvblRvQ2FsbCh0d0pvaW4uYXBwbHkobnVsbCwgYXJndW1lbnRzIGFzIGFueSkpXG4gICAgfVxufVxuIiwgImltcG9ydCB7IERlZmF1bHRUaGVtZUdyb3VwSWRzLCBOb0luZmVyLCBUaGVtZUdldHRlciwgVGhlbWVPYmplY3QgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgZnJvbVRoZW1lID0gPFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4gICAgRGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciBleHRlbmRzIHN0cmluZyA9IERlZmF1bHRUaGVtZUdyb3VwSWRzLFxuPihrZXk6IE5vSW5mZXI8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPik6IFRoZW1lR2V0dGVyID0+IHtcbiAgICBjb25zdCB0aGVtZUdldHRlciA9ICh0aGVtZTogVGhlbWVPYmplY3Q8RGVmYXVsdFRoZW1lR3JvdXBJZHNJbm5lciB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzPikgPT5cbiAgICAgICAgdGhlbWVba2V5XSB8fCBbXVxuXG4gICAgdGhlbWVHZXR0ZXIuaXNUaGVtZUdldHRlciA9IHRydWUgYXMgY29uc3RcblxuICAgIHJldHVybiB0aGVtZUdldHRlclxufVxuIiwgImNvbnN0IGFyYml0cmFyeVZhbHVlUmVnZXggPSAvXlxcWyg/OihbYS16LV0rKTopPyguKylcXF0kL2lcbmNvbnN0IGZyYWN0aW9uUmVnZXggPSAvXlxcZCtcXC9cXGQrJC9cbmNvbnN0IHN0cmluZ0xlbmd0aHMgPSBuZXcgU2V0KFsncHgnLCAnZnVsbCcsICdzY3JlZW4nXSlcbmNvbnN0IHRzaGlydFVuaXRSZWdleCA9IC9eKFxcZCsoXFwuXFxkKyk/KT8oeHN8c218bWR8bGd8eGwpJC9cbmNvbnN0IGxlbmd0aFVuaXRSZWdleCA9XG4gICAgL1xcZCsoJXxweHxyP2VtfFtzZGxdP3YoW2h3aWJdfG1pbnxtYXgpfHB0fHBjfGlufGNtfG1tfGNhcHxjaHxleHxyP2xofGNxKHd8aHxpfGJ8bWlufG1heCkpfFxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXFwoLitcXCl8XjAkL1xuY29uc3QgY29sb3JGdW5jdGlvblJlZ2V4ID0gL14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpKVxcKC4rXFwpJC9cbi8vIFNoYWRvdyBhbHdheXMgYmVnaW5zIHdpdGggeCBhbmQgeSBvZmZzZXQgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgb3B0aW9uYWxseSBwcmVwZW5kZWQgYnkgaW5zZXRcbmNvbnN0IHNoYWRvd1JlZ2V4ID0gL14oaW5zZXRfKT8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKV8tPygoXFxkKyk/XFwuPyhcXGQrKVthLXpdK3wwKS9cbmNvbnN0IGltYWdlUmVnZXggPVxuICAgIC9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXFwoLitcXCkkL1xuXG5leHBvcnQgY29uc3QgaXNMZW5ndGggPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBpc051bWJlcih2YWx1ZSkgfHwgc3RyaW5nTGVuZ3Rocy5oYXModmFsdWUpIHx8IGZyYWN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ2xlbmd0aCcsIGlzTGVuZ3RoT25seSlcblxuZXhwb3J0IGNvbnN0IGlzTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IEJvb2xlYW4odmFsdWUpICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5TnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdudW1iZXInLCBpc051bWJlcilcblxuZXhwb3J0IGNvbnN0IGlzSW50ZWdlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc1BlcmNlbnQgPSAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUuZW5kc1dpdGgoJyUnKSAmJiBpc051bWJlcih2YWx1ZS5zbGljZSgwLCAtMSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+IGFyYml0cmFyeVZhbHVlUmVnZXgudGVzdCh2YWx1ZSlcblxuZXhwb3J0IGNvbnN0IGlzVHNoaXJ0U2l6ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB0c2hpcnRVbml0UmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3Qgc2l6ZUxhYmVscyA9IG5ldyBTZXQoWydsZW5ndGgnLCAnc2l6ZScsICdwZXJjZW50YWdlJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgc2l6ZUxhYmVscywgaXNOZXZlcilcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5UG9zaXRpb24gPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAncG9zaXRpb24nLCBpc05ldmVyKVxuXG5jb25zdCBpbWFnZUxhYmVscyA9IG5ldyBTZXQoWydpbWFnZScsICd1cmwnXSlcblxuZXhwb3J0IGNvbnN0IGlzQXJiaXRyYXJ5SW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgaW1hZ2VMYWJlbHMsIGlzSW1hZ2UpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVNoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnJywgaXNTaGFkb3cpXG5cbmV4cG9ydCBjb25zdCBpc0FueSA9ICgpID0+IHRydWVcblxuY29uc3QgZ2V0SXNBcmJpdHJhcnlWYWx1ZSA9IChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGxhYmVsOiBzdHJpbmcgfCBTZXQ8c3RyaW5nPixcbiAgICB0ZXN0VmFsdWU6ICh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFuLFxuKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXJiaXRyYXJ5VmFsdWVSZWdleC5leGVjKHZhbHVlKVxuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzdWx0WzFdKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IHJlc3VsdFsxXSA9PT0gbGFiZWwgOiBsYWJlbC5oYXMocmVzdWx0WzFdKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlc3RWYWx1ZShyZXN1bHRbMl0hKVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG5jb25zdCBpc0xlbmd0aE9ubHkgPSAodmFsdWU6IHN0cmluZykgPT5cbiAgICAvLyBgY29sb3JGdW5jdGlvblJlZ2V4YCBjaGVjayBpcyBuZWNlc3NhcnkgYmVjYXVzZSBjb2xvciBmdW5jdGlvbnMgY2FuIGhhdmUgcGVyY2VudGFnZXMgaW4gdGhlbSB3aGljaCB3aGljaCB3b3VsZCBiZSBpbmNvcnJlY3RseSBjbGFzc2lmaWVkIGFzIGxlbmd0aHMuXG4gICAgLy8gRm9yIGV4YW1wbGUsIGBoc2woMCAwJSAwJSlgIHdvdWxkIGJlIGNsYXNzaWZpZWQgYXMgYSBsZW5ndGggd2l0aG91dCB0aGlzIGNoZWNrLlxuICAgIC8vIEkgY291bGQgYWxzbyB1c2UgbG9va2JlaGluZCBhc3NlcnRpb24gaW4gYGxlbmd0aFVuaXRSZWdleGAgYnV0IHRoYXQgaXNuJ3Qgc3VwcG9ydGVkIHdpZGVseSBlbm91Z2guXG4gICAgbGVuZ3RoVW5pdFJlZ2V4LnRlc3QodmFsdWUpICYmICFjb2xvckZ1bmN0aW9uUmVnZXgudGVzdCh2YWx1ZSlcblxuY29uc3QgaXNOZXZlciA9ICgpID0+IGZhbHNlXG5cbmNvbnN0IGlzU2hhZG93ID0gKHZhbHVlOiBzdHJpbmcpID0+IHNoYWRvd1JlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzSW1hZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gaW1hZ2VSZWdleC50ZXN0KHZhbHVlKVxuIiwgImltcG9ydCB7IGZyb21UaGVtZSB9IGZyb20gJy4vZnJvbS10aGVtZSdcbmltcG9ydCB7IENvbmZpZywgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gICAgaXNBbnksXG4gICAgaXNBcmJpdHJhcnlJbWFnZSxcbiAgICBpc0FyYml0cmFyeUxlbmd0aCxcbiAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICBpc0FyYml0cmFyeVBvc2l0aW9uLFxuICAgIGlzQXJiaXRyYXJ5U2hhZG93LFxuICAgIGlzQXJiaXRyYXJ5U2l6ZSxcbiAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgIGlzSW50ZWdlcixcbiAgICBpc0xlbmd0aCxcbiAgICBpc051bWJlcixcbiAgICBpc1BlcmNlbnQsXG4gICAgaXNUc2hpcnRTaXplLFxufSBmcm9tICcuL3ZhbGlkYXRvcnMnXG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Q29uZmlnID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbG9ycyA9IGZyb21UaGVtZSgnY29sb3JzJylcbiAgICBjb25zdCBzcGFjaW5nID0gZnJvbVRoZW1lKCdzcGFjaW5nJylcbiAgICBjb25zdCBibHVyID0gZnJvbVRoZW1lKCdibHVyJylcbiAgICBjb25zdCBicmlnaHRuZXNzID0gZnJvbVRoZW1lKCdicmlnaHRuZXNzJylcbiAgICBjb25zdCBib3JkZXJDb2xvciA9IGZyb21UaGVtZSgnYm9yZGVyQ29sb3InKVxuICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IGZyb21UaGVtZSgnYm9yZGVyUmFkaXVzJylcbiAgICBjb25zdCBib3JkZXJTcGFjaW5nID0gZnJvbVRoZW1lKCdib3JkZXJTcGFjaW5nJylcbiAgICBjb25zdCBib3JkZXJXaWR0aCA9IGZyb21UaGVtZSgnYm9yZGVyV2lkdGgnKVxuICAgIGNvbnN0IGNvbnRyYXN0ID0gZnJvbVRoZW1lKCdjb250cmFzdCcpXG4gICAgY29uc3QgZ3JheXNjYWxlID0gZnJvbVRoZW1lKCdncmF5c2NhbGUnKVxuICAgIGNvbnN0IGh1ZVJvdGF0ZSA9IGZyb21UaGVtZSgnaHVlUm90YXRlJylcbiAgICBjb25zdCBpbnZlcnQgPSBmcm9tVGhlbWUoJ2ludmVydCcpXG4gICAgY29uc3QgZ2FwID0gZnJvbVRoZW1lKCdnYXAnKVxuICAgIGNvbnN0IGdyYWRpZW50Q29sb3JTdG9wcyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BzJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyA9IGZyb21UaGVtZSgnZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMnKVxuICAgIGNvbnN0IGluc2V0ID0gZnJvbVRoZW1lKCdpbnNldCcpXG4gICAgY29uc3QgbWFyZ2luID0gZnJvbVRoZW1lKCdtYXJnaW4nKVxuICAgIGNvbnN0IG9wYWNpdHkgPSBmcm9tVGhlbWUoJ29wYWNpdHknKVxuICAgIGNvbnN0IHBhZGRpbmcgPSBmcm9tVGhlbWUoJ3BhZGRpbmcnKVxuICAgIGNvbnN0IHNhdHVyYXRlID0gZnJvbVRoZW1lKCdzYXR1cmF0ZScpXG4gICAgY29uc3Qgc2NhbGUgPSBmcm9tVGhlbWUoJ3NjYWxlJylcbiAgICBjb25zdCBzZXBpYSA9IGZyb21UaGVtZSgnc2VwaWEnKVxuICAgIGNvbnN0IHNrZXcgPSBmcm9tVGhlbWUoJ3NrZXcnKVxuICAgIGNvbnN0IHNwYWNlID0gZnJvbVRoZW1lKCdzcGFjZScpXG4gICAgY29uc3QgdHJhbnNsYXRlID0gZnJvbVRoZW1lKCd0cmFuc2xhdGUnKVxuXG4gICAgY29uc3QgZ2V0T3ZlcnNjcm9sbCA9ICgpID0+IFsnYXV0bycsICdjb250YWluJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE92ZXJmbG93ID0gKCkgPT4gWydhdXRvJywgJ2hpZGRlbicsICdjbGlwJywgJ3Zpc2libGUnLCAnc2Nyb2xsJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5ID0gKCkgPT4gW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5ID0gKCkgPT4gWycnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkgPSAoKSA9PiBbJ2F1dG8nLCBpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRQb3NpdGlvbnMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgJ2xlZnQtYm90dG9tJyxcbiAgICAgICAgICAgICdsZWZ0LXRvcCcsXG4gICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgJ3JpZ2h0LWJvdHRvbScsXG4gICAgICAgICAgICAncmlnaHQtdG9wJyxcbiAgICAgICAgICAgICd0b3AnLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0TGluZVN0eWxlcyA9ICgpID0+IFsnc29saWQnLCAnZGFzaGVkJywgJ2RvdHRlZCcsICdkb3VibGUnLCAnbm9uZSddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QmxlbmRNb2RlcyA9ICgpID0+XG4gICAgICAgIFtcbiAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgJ211bHRpcGx5JyxcbiAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgJ292ZXJsYXknLFxuICAgICAgICAgICAgJ2RhcmtlbicsXG4gICAgICAgICAgICAnbGlnaHRlbicsXG4gICAgICAgICAgICAnY29sb3ItZG9kZ2UnLFxuICAgICAgICAgICAgJ2NvbG9yLWJ1cm4nLFxuICAgICAgICAgICAgJ2hhcmQtbGlnaHQnLFxuICAgICAgICAgICAgJ3NvZnQtbGlnaHQnLFxuICAgICAgICAgICAgJ2RpZmZlcmVuY2UnLFxuICAgICAgICAgICAgJ2V4Y2x1c2lvbicsXG4gICAgICAgICAgICAnaHVlJyxcbiAgICAgICAgICAgICdzYXR1cmF0aW9uJyxcbiAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAnbHVtaW5vc2l0eScsXG4gICAgICAgIF0gYXMgY29uc3RcbiAgICBjb25zdCBnZXRBbGlnbiA9ICgpID0+XG4gICAgICAgIFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiZXR3ZWVuJywgJ2Fyb3VuZCcsICdldmVubHknLCAnc3RyZXRjaCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0WmVyb0FuZEVtcHR5ID0gKCkgPT4gWycnLCAnMCcsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QnJlYWtzID0gKCkgPT5cbiAgICAgICAgWydhdXRvJywgJ2F2b2lkJywgJ2FsbCcsICdhdm9pZC1wYWdlJywgJ3BhZ2UnLCAnbGVmdCcsICdyaWdodCcsICdjb2x1bW4nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlckFuZEFyYml0cmFyeSA9ICgpID0+IFtpc051bWJlciwgaXNBcmJpdHJhcnlWYWx1ZV1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhY2hlU2l6ZTogNTAwLFxuICAgICAgICBzZXBhcmF0b3I6ICc6JyxcbiAgICAgICAgdGhlbWU6IHtcbiAgICAgICAgICAgIGNvbG9yczogW2lzQW55XSxcbiAgICAgICAgICAgIHNwYWNpbmc6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdLFxuICAgICAgICAgICAgYmx1cjogWydub25lJywgJycsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogWydub25lJywgJycsICdmdWxsJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSxcbiAgICAgICAgICAgIGJvcmRlclNwYWNpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBjb250cmFzdDogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmF5c2NhbGU6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgaHVlUm90YXRlOiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIGludmVydDogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBnYXA6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBncmFkaWVudENvbG9yU3RvcHM6IFtjb2xvcnNdLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnM6IFtpc1BlcmNlbnQsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGluc2V0OiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIG1hcmdpbjogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBvcGFjaXR5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHBhZGRpbmc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzYXR1cmF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzY2FsZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzZXBpYTogZ2V0WmVyb0FuZEVtcHR5KCksXG4gICAgICAgICAgICBza2V3OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHNwYWNlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgLy8gTGF5b3V0XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFzcGVjdCBSYXRpb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FzcGVjdC1yYXRpb1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhc3BlY3Q6IFt7IGFzcGVjdDogWydhdXRvJywgJ3NxdWFyZScsICd2aWRlbycsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250YWluZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250YWluZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lciddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb2x1bW5zOiBbeyBjb2x1bW5zOiBbaXNUc2hpcnRTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQWZ0ZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1hZnRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYWZ0ZXInOiBbeyAnYnJlYWstYWZ0ZXInOiBnZXRCcmVha3MoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJlYWsgQmVmb3JlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYmVmb3JlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdicmVhay1iZWZvcmUnOiBbeyAnYnJlYWstYmVmb3JlJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEluc2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWluc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstaW5zaWRlJzogW3sgJ2JyZWFrLWluc2lkZSc6IFsnYXV0bycsICdhdm9pZCcsICdhdm9pZC1wYWdlJywgJ2F2b2lkLWNvbHVtbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3ggRGVjb3JhdGlvbiBCcmVha1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1kZWNvcmF0aW9uLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3gtZGVjb3JhdGlvbic6IFt7ICdib3gtZGVjb3JhdGlvbic6IFsnc2xpY2UnLCAnY2xvbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNpemluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaXppbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYm94OiBbeyBib3g6IFsnYm9yZGVyJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGlzcGxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Rpc3BsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGlzcGxheTogW1xuICAgICAgICAgICAgICAgICdibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgICAgICAgJ2lubGluZScsXG4gICAgICAgICAgICAgICAgJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgICAgJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLXRhYmxlJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY2FwdGlvbicsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNlbGwnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jb2x1bW4tZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1mb290ZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1oZWFkZXItZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3ctZ3JvdXAnLFxuICAgICAgICAgICAgICAgICd0YWJsZS1yb3cnLFxuICAgICAgICAgICAgICAgICdmbG93LXJvb3QnLFxuICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWdyaWQnLFxuICAgICAgICAgICAgICAgICdjb250ZW50cycsXG4gICAgICAgICAgICAgICAgJ2xpc3QtaXRlbScsXG4gICAgICAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbG9hdHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbG9hdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbG9hdDogW3sgZmxvYXQ6IFsncmlnaHQnLCAnbGVmdCcsICdub25lJywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDbGVhclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NsZWFyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNsZWFyOiBbeyBjbGVhcjogWydsZWZ0JywgJ3JpZ2h0JywgJ2JvdGgnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSXNvbGF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaXNvbGF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlzb2xhdGlvbjogWydpc29sYXRlJywgJ2lzb2xhdGlvbi1hdXRvJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBGaXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vYmplY3QtZml0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtZml0JzogW3sgb2JqZWN0OiBbJ2NvbnRhaW4nLCAnY292ZXInLCAnZmlsbCcsICdub25lJywgJ3NjYWxlLWRvd24nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT2JqZWN0IFBvc2l0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvYmplY3QtcG9zaXRpb24nOiBbeyBvYmplY3Q6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFt7IG92ZXJmbG93OiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXgnOiBbeyAnb3ZlcmZsb3cteCc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJmbG93IFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcmZsb3cteSc6IFt7ICdvdmVyZmxvdy15JzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJzY3JvbGwtYmVoYXZpb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcnNjcm9sbDogW3sgb3ZlcnNjcm9sbDogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXgnOiBbeyAnb3ZlcnNjcm9sbC14JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyc2Nyb2xsIEJlaGF2aW9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyc2Nyb2xsLXknOiBbeyAnb3ZlcnNjcm9sbC15JzogZ2V0T3ZlcnNjcm9sbCgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Bvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBvc2l0aW9uOiBbJ3N0YXRpYycsICdmaXhlZCcsICdhYnNvbHV0ZScsICdyZWxhdGl2ZScsICdzdGlja3knXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gUmlnaHQgLyBCb3R0b20gLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGluc2V0OiBbeyBpbnNldDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmlnaHQgLyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC14JzogW3sgJ2luc2V0LXgnOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3AgLyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2luc2V0LXknOiBbeyAnaW5zZXQteSc6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHN0YXJ0OiBbeyBzdGFydDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVuZDogW3sgZW5kOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3AtcmlnaHQtYm90dG9tLWxlZnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG9wOiBbeyB0b3A6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJpZ2h0OiBbeyByaWdodDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJvdHRvbTogW3sgYm90dG9tOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlZnQ6IFt7IGxlZnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZpc2liaWxpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy92aXNpYmlsaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZpc2liaWxpdHk6IFsndmlzaWJsZScsICdpbnZpc2libGUnLCAnY29sbGFwc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogWi1JbmRleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3otaW5kZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgejogW3sgejogWydhdXRvJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEZsZXhib3ggYW5kIEdyaWRcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBCYXNpc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtYmFzaXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmFzaXM6IFt7IGJhc2lzOiBnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBEaXJlY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWRpcmVjdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC1kaXJlY3Rpb24nOiBbeyBmbGV4OiBbJ3JvdycsICdyb3ctcmV2ZXJzZScsICdjb2wnLCAnY29sLXJldmVyc2UnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmbGV4LXdyYXAnOiBbeyBmbGV4OiBbJ3dyYXAnLCAnd3JhcC1yZXZlcnNlJywgJ25vd3JhcCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmbGV4OiBbeyBmbGV4OiBbJzEnLCAnYXV0bycsICdpbml0aWFsJywgJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBHcm93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1ncm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyb3c6IFt7IGdyb3c6IGdldFplcm9BbmRFbXB0eSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGbGV4IFNocmlua1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtc2hyaW5rXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNocmluazogW3sgc2hyaW5rOiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3JkZXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcmRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBvcmRlcjogW3sgb3JkZXI6IFsnZmlyc3QnLCAnbGFzdCcsICdub25lJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBUZW1wbGF0ZSBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmlkLWNvbHMnOiBbeyAnZ3JpZC1jb2xzJzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnQgLyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0LWVuZCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzcGFuOiBbJ2Z1bGwnLCBpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIENvbHVtbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtc3RhcnQnOiBbeyAnY29sLXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1lbmQnOiBbeyAnY29sLWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1yb3dzJzogW3sgJ2dyaWQtcm93cyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAgeyByb3c6IFsnYXV0bycsIHsgc3BhbjogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfSwgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgUm93IFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1zdGFydCc6IFt7ICdyb3ctc3RhcnQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXJvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm93LWVuZCc6IFt7ICdyb3ctZW5kJzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIEZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1mbG93JzogW3sgJ2dyaWQtZmxvdyc6IFsncm93JywgJ2NvbCcsICdkZW5zZScsICdyb3ctZGVuc2UnLCAnY29sLWRlbnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBDb2x1bW5zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWNvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2F1dG8tY29scyc6IFt7ICdhdXRvLWNvbHMnOiBbJ2F1dG8nLCAnbWluJywgJ21heCcsICdmcicsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gUm93c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1yb3dzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLXJvd3MnOiBbeyAnYXV0by1yb3dzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdhcDogW3sgZ2FwOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2FwIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9nYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dhcC14JzogW3sgJ2dhcC14JzogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteSc6IFt7ICdnYXAteSc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWNvbnRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IFt7IGp1c3RpZnk6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEp1c3RpZnkgSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWl0ZW1zJzogW3sgJ2p1c3RpZnktaXRlbXMnOiBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0aWZ5LXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2p1c3RpZnktc2VsZic6IFt7ICdqdXN0aWZ5LXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1jb250ZW50JzogW3sgY29udGVudDogWydub3JtYWwnLCAuLi5nZXRBbGlnbigpLCAnYmFzZWxpbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gSXRlbXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24taXRlbXMnOiBbeyBpdGVtczogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxpZ24gU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2FsaWduLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLXNlbGYnOiBbeyBzZWxmOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJywgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1jb250ZW50JzogW3sgJ3BsYWNlLWNvbnRlbnQnOiBbLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtaXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLWl0ZW1zJzogW3sgJ3BsYWNlLWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2Jhc2VsaW5lJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2UgU2VsZlxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLXNlbGZcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlLXNlbGYnOiBbeyAncGxhY2Utc2VsZic6IFsnYXV0bycsICdzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8vIFNwYWNpbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcDogW3sgcDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB4OiBbeyBweDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB5OiBbeyBweTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwczogW3sgcHM6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBlOiBbeyBwZTogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHQ6IFt7IHB0OiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHByOiBbeyBwcjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGI6IFt7IHBiOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcGw6IFt7IHBsOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtOiBbeyBtOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXg6IFt7IG14OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXk6IFt7IG15OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1zOiBbeyBtczogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWU6IFt7IG1lOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtdDogW3sgbXQ6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXI6IFt7IG1yOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtYjogW3sgbWI6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtbDogW3sgbWw6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteCc6IFt7ICdzcGFjZS14JzogW3NwYWNlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc3BhY2UteC1yZXZlcnNlJzogWydzcGFjZS14LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXknOiBbeyAnc3BhY2UteSc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXktcmV2ZXJzZSc6IFsnc3BhY2UteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvLyBTaXppbmdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB3OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3Z3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWluLVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4tdyc6IFt7ICdtaW4tdyc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LVdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWF4LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICdtYXgtdyc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc2NyZWVuOiBbaXNUc2hpcnRTaXplXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUc2hpcnRTaXplLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtYXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsdmgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2R2aCcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taW4taGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaW4taCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtaW4taCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF4LUhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ21heC1oJzogW1xuICAgICAgICAgICAgICAgIHsgJ21heC1oJzogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdtaW4nLCAnbWF4JywgJ2ZpdCcsICdzdmgnLCAnbHZoJywgJ2R2aCddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaXplOiBbeyBzaXplOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ2F1dG8nLCAnbWluJywgJ21heCcsICdmaXQnXSB9XSxcbiAgICAgICAgICAgIC8vIFR5cG9ncmFwaHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXNpemUnOiBbeyB0ZXh0OiBbJ2Jhc2UnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBTbW9vdGhpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXNtb290aGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zbW9vdGhpbmcnOiBbJ2FudGlhbGlhc2VkJywgJ3N1YnBpeGVsLWFudGlhbGlhc2VkJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXN0eWxlJzogWydpdGFsaWMnLCAnbm90LWl0YWxpYyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFdlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtd2VpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LXdlaWdodCc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aGluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbWlib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdleHRyYWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5TnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IEZhbWlseVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtZmFtaWx5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb250LWZhbWlseSc6IFt7IGZvbnQ6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1ub3JtYWwnOiBbJ25vcm1hbC1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1vcmRpbmFsJzogWydvcmRpbmFsJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ3NsYXNoZWQtemVybyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydsaW5pbmctbnVtcycsICdvbGRzdHlsZS1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydwcm9wb3J0aW9uYWwtbnVtcycsICd0YWJ1bGFyLW51bXMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydkaWFnb25hbC1mcmFjdGlvbnMnLCAnc3RhY2tlZC1mcmFjdG9ucyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMZXR0ZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xldHRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYWNraW5nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGluZSBDbGFtcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtY2xhbXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpbmUtY2xhbXAnOiBbeyAnbGluZS1jbGFtcCc6IFsnbm9uZScsIGlzTnVtYmVyLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGluZS1oZWlnaHRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGVhZGluZzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzbnVnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGF4ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xvb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3QtaW1hZ2UnOiBbeyAnbGlzdC1pbWFnZSc6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaXN0IFN0eWxlIFR5cGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtdHlwZSc6IFt7IGxpc3Q6IFsnbm9uZScsICdkaXNjJywgJ2RlY2ltYWwnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpc3Qtc3R5bGUtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nOiBbeyBsaXN0OiBbJ2luc2lkZScsICdvdXRzaWRlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlaG9sZGVyIENvbG9yXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLWNvbG9yJzogW3sgcGxhY2Vob2xkZXI6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2Vob2xkZXItb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFt7ICdwbGFjZWhvbGRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtYWxpZ25tZW50JzogW3sgdGV4dDogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcsICdqdXN0aWZ5JywgJ3N0YXJ0JywgJ2VuZCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1jb2xvcic6IFt7IHRleHQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtb3BhY2l0eSc6IFt7ICd0ZXh0LW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtZGVjb3JhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnb3ZlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1zdHlsZSc6IFt7IGRlY29yYXRpb246IFsuLi5nZXRMaW5lU3R5bGVzKCksICd3YXZ5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgRGVjb3JhdGlvbiBUaGlja25lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzJzogW1xuICAgICAgICAgICAgICAgIHsgZGVjb3JhdGlvbjogWydhdXRvJywgJ2Zyb20tZm9udCcsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgVW5kZXJsaW5lIE9mZnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdW5kZXJsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndW5kZXJsaW5lLW9mZnNldCc6IFt7ICd1bmRlcmxpbmUtb2Zmc2V0JzogWydhdXRvJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb24tY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcic6IFt7IGRlY29yYXRpb246IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgT3ZlcmZsb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LW92ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW92ZXJmbG93JzogWyd0cnVuY2F0ZScsICd0ZXh0LWVsbGlwc2lzJywgJ3RleHQtY2xpcCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFdyYXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXdyYXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtd3JhcCc6IFt7IHRleHQ6IFsnd3JhcCcsICdub3dyYXAnLCAnYmFsYW5jZScsICdwcmV0dHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBJbmRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWluZGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbmRlbnQ6IFt7IGluZGVudDogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmVydGljYWwgQWxpZ25tZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmVydGljYWwtYWxpZ25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3ZlcnRpY2FsLWFsaWduJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlbGluZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaWRkbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC10b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdoaXRlc3BhY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93aGl0ZXNwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHdoaXRlc3BhY2U6IFtcbiAgICAgICAgICAgICAgICB7IHdoaXRlc3BhY2U6IFsnbm9ybWFsJywgJ25vd3JhcCcsICdwcmUnLCAncHJlLWxpbmUnLCAncHJlLXdyYXAnLCAnYnJlYWstc3BhY2VzJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdvcmQgQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy93b3JkLWJyZWFrXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJyZWFrOiBbeyBicmVhazogWydub3JtYWwnLCAnd29yZHMnLCAnYWxsJywgJ2tlZXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHlwaGVuc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h5cGhlbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaHlwaGVuczogW3sgaHlwaGVuczogWydub25lJywgJ21hbnVhbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRlbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRlbnQ6IFt7IGNvbnRlbnQ6IFsnbm9uZScsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLy8gQmFja2dyb3VuZHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBBdHRhY2htZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1hdHRhY2htZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1hdHRhY2htZW50JzogW3sgYmc6IFsnZml4ZWQnLCAnbG9jYWwnLCAnc2Nyb2xsJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ2xpcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtY2xpcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY2xpcCc6IFt7ICdiZy1jbGlwJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50JywgJ3RleHQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcGFjaXR5JzogW3sgJ2JnLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3JpZ2luXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLW9yaWdpbic6IFt7ICdiZy1vcmlnaW4nOiBbJ2JvcmRlcicsICdwYWRkaW5nJywgJ2NvbnRlbnQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcG9zaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXBvc2l0aW9uJzogW3sgYmc6IFsuLi5nZXRQb3NpdGlvbnMoKSwgaXNBcmJpdHJhcnlQb3NpdGlvbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUmVwZWF0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1yZXBlYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLXJlcGVhdCc6IFt7IGJnOiBbJ25vLXJlcGVhdCcsIHsgcmVwZWF0OiBbJycsICd4JywgJ3knLCAncm91bmQnLCAnc3BhY2UnXSB9XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBTaXplXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1zaXplXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1zaXplJzogW3sgYmc6IFsnYXV0bycsICdjb3ZlcicsICdjb250YWluJywgaXNBcmJpdHJhcnlTaXplXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBJbWFnZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtaW1hZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWltYWdlJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgJ2dyYWRpZW50LXRvJzogWyd0JywgJ3RyJywgJ3InLCAnYnInLCAnYicsICdibCcsICdsJywgJ3RsJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1jb2xvcic6IFt7IGJnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tLXBvcyc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYSBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEtcG9zJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUbyBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10by1wb3MnOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgRnJvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC1mcm9tJzogW3sgZnJvbTogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIFZpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC12aWEnOiBbeyB2aWE6IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBUb1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyYWRpZW50LWNvbG9yLXN0b3BzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdncmFkaWVudC10byc6IFt7IHRvOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8vIEJvcmRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm91bmRlZDogW3sgcm91bmRlZDogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXMnOiBbeyAncm91bmRlZC1zJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lJzogW3sgJ3JvdW5kZWQtZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFt7ICdyb3VuZGVkLXQnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFt7ICdyb3VuZGVkLXInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbeyAncm91bmRlZC1iJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFt7ICdyb3VuZGVkLWwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc3MnOiBbeyAncm91bmRlZC1zcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0IEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtc2UnOiBbeyAncm91bmRlZC1zZSc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVlJzogW3sgJ3JvdW5kZWQtZWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWVzJzogW3sgJ3JvdW5kZWQtZXMnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdGwnOiBbeyAncm91bmRlZC10bCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFRvcCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtdHInOiBbeyAncm91bmRlZC10cic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYnInOiBbeyAncm91bmRlZC1icic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEJvdHRvbSBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1ibCc6IFt7ICdyb3VuZGVkLWJsJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcnOiBbeyBib3JkZXI6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXMnOiBbeyAnYm9yZGVyLXMnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1lJzogW3sgJ2JvcmRlci1lJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctcic6IFt7ICdib3JkZXItcic6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1vcGFjaXR5JzogW3sgJ2JvcmRlci1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zdHlsZSc6IFt7IGJvcmRlcjogWy4uLmdldExpbmVTdHlsZXMoKSwgJ2hpZGRlbiddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgnOiBbeyAnZGl2aWRlLXgnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteC1yZXZlcnNlJzogWydkaXZpZGUteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteSc6IFt7ICdkaXZpZGUteSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBXaWR0aCBZIFJldmVyc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS15LXJldmVyc2UnOiBbJ2RpdmlkZS15LXJldmVyc2UnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLW9wYWNpdHknOiBbeyAnZGl2aWRlLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXN0eWxlJzogW3sgZGl2aWRlOiBnZXRMaW5lU3R5bGVzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW3sgYm9yZGVyOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbeyAnYm9yZGVyLXgnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbeyAnYm9yZGVyLXknOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItdCc6IFt7ICdib3JkZXItdCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItYic6IFt7ICdib3JkZXItYic6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBDb2xvciBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sb3ItbCc6IFt7ICdib3JkZXItbCc6IFtib3JkZXJDb2xvcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLWNvbG9yJzogW3sgZGl2aWRlOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1zdHlsZSc6IFt7IG91dGxpbmU6IFsnJywgLi4uZ2V0TGluZVN0eWxlcygpXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLW9mZnNldFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1vZmZzZXQnOiBbeyAnb3V0bGluZS1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS13JzogW3sgb3V0bGluZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdXRsaW5lLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdXRsaW5lLWNvbG9yJzogW3sgb3V0bGluZTogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXcnOiBbeyByaW5nOiBnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBXaWR0aCBJbnNldFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctdy1pbnNldCc6IFsncmluZy1pbnNldCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1jb2xvcic6IFt7IHJpbmc6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb3BhY2l0eSc6IFt7ICdyaW5nLW9wYWNpdHknOiBbb3BhY2l0eV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LXcnOiBbeyAncmluZy1vZmZzZXQnOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPZmZzZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLW9mZnNldC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy1vZmZzZXQtY29sb3InOiBbeyAncmluZy1vZmZzZXQnOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8vIEVmZmVjdHNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2hhZG93OiBbeyBzaGFkb3c6IFsnJywgJ2lubmVyJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5U2hhZG93XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IFNoYWRvdyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JveC1zaGFkb3ctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NoYWRvdy1jb2xvcic6IFt7IHNoYWRvdzogW2lzQW55XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3BhY2l0eTogW3sgb3BhY2l0eTogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaXggQmxlbmQgTW9kZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21peC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtaXgtYmxlbmQnOiBbeyAnbWl4LWJsZW5kJzogWy4uLmdldEJsZW5kTW9kZXMoKSwgJ3BsdXMtbGlnaHRlcicsICdwbHVzLWRhcmtlciddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWJsZW5kJzogW3sgJ2JnLWJsZW5kJzogZ2V0QmxlbmRNb2RlcygpIH1dLFxuICAgICAgICAgICAgLy8gRmlsdGVyc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWx0ZXJcbiAgICAgICAgICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFRhaWx3aW5kIENTUyB2My4wLjBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9maWx0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsdGVyOiBbeyBmaWx0ZXI6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYmx1cjogW3sgYmx1cjogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmlnaHRuZXNzOiBbeyBicmlnaHRuZXNzOiBbYnJpZ2h0bmVzc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnRyYXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udHJhc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29udHJhc3Q6IFt7IGNvbnRyYXN0OiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEcm9wIFNoYWRvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2Ryb3Atc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkcm9wLXNoYWRvdyc6IFt7ICdkcm9wLXNoYWRvdyc6IFsnJywgJ25vbmUnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ3JheXNjYWxlOiBbeyBncmF5c2NhbGU6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaHVlLXJvdGF0ZSc6IFt7ICdodWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnZlcnQ6IFt7IGludmVydDogW2ludmVydF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNhdHVyYXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2F0dXJhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2F0dXJhdGU6IFt7IHNhdHVyYXRlOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlcGlhOiBbeyBzZXBpYTogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1maWx0ZXInOiBbeyAnYmFja2Ryb3AtZmlsdGVyJzogWycnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCbHVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYmx1clxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYmx1cic6IFt7ICdiYWNrZHJvcC1ibHVyJzogW2JsdXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBCcmlnaHRuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtYnJpZ2h0bmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFt7ICdiYWNrZHJvcC1icmlnaHRuZXNzJzogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWNvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1jb250cmFzdCc6IFt7ICdiYWNrZHJvcC1jb250cmFzdCc6IFtjb250cmFzdF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEdyYXlzY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWdyYXlzY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZ3JheXNjYWxlJzogW3sgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFtncmF5c2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBIdWUgUm90YXRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3AtaHVlLXJvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFt7ICdiYWNrZHJvcC1odWUtcm90YXRlJzogW2h1ZVJvdGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEludmVydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWludmVydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtaW52ZXJ0JzogW3sgJ2JhY2tkcm9wLWludmVydCc6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atb3BhY2l0eSc6IFt7ICdiYWNrZHJvcC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFt7ICdiYWNrZHJvcC1zYXR1cmF0ZSc6IFtzYXR1cmF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIFNlcGlhXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2Ryb3Atc2VwaWFcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLXNlcGlhJzogW3sgJ2JhY2tkcm9wLXNlcGlhJzogW3NlcGlhXSB9XSxcbiAgICAgICAgICAgIC8vIFRhYmxlc1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sbGFwc2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sbGFwc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xsYXBzZSc6IFt7IGJvcmRlcjogWydjb2xsYXBzZScsICdzZXBhcmF0ZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZyc6IFt7ICdib3JkZXItc3BhY2luZyc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1zcGFjaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3BhY2luZy14JzogW3sgJ2JvcmRlci1zcGFjaW5nLXgnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteSc6IFt7ICdib3JkZXItc3BhY2luZy15JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUYWJsZSBMYXlvdXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90YWJsZS1sYXlvdXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RhYmxlLWxheW91dCc6IFt7IHRhYmxlOiBbJ2F1dG8nLCAnZml4ZWQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FwdGlvbiBTaWRlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY2FwdGlvbi1zaWRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNhcHRpb246IFt7IGNhcHRpb246IFsndG9wJywgJ2JvdHRvbSddIH1dLFxuICAgICAgICAgICAgLy8gVHJhbnNpdGlvbnMgYW5kIEFuaW1hdGlvblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuaXNpdGlvbiBQcm9wZXJ0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tcHJvcGVydHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYWRvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gRHVyYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGR1cmF0aW9uOiBbeyBkdXJhdGlvbjogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zaXRpb24gVGltaW5nIEZ1bmN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZWFzZTogW3sgZWFzZTogWydsaW5lYXInLCAnaW4nLCAnb3V0JywgJ2luLW91dCcsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIERlbGF5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kZWxheVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkZWxheTogW3sgZGVsYXk6IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbmltYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbmltYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYW5pbWF0ZTogW3sgYW5pbWF0ZTogWydub25lJywgJ3NwaW4nLCAncGluZycsICdwdWxzZScsICdib3VuY2UnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zZm9ybXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNmb3JtXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zZm9ybTogW3sgdHJhbnNmb3JtOiBbJycsICdncHUnLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNjYWxlOiBbeyBzY2FsZTogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS14JzogW3sgJ3NjYWxlLXgnOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY2FsZSBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NjYWxlLXknOiBbeyAnc2NhbGUteSc6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JvdGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByb3RhdGU6IFt7IHJvdGF0ZTogW2lzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zbGF0ZSBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNsYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2xhdGUteCc6IFt7ICd0cmFuc2xhdGUteCc6IFt0cmFuc2xhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXknOiBbeyAndHJhbnNsYXRlLXknOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy14JzogW3sgJ3NrZXcteCc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tldyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2tld1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2tldy15JzogW3sgJ3NrZXcteSc6IFtza2V3XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNmb3JtIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybS1vcmlnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1sZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AtbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gSW50ZXJhY3Rpdml0eVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBY2NlbnQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hY2NlbnQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYWNjZW50OiBbeyBhY2NlbnQ6IFsnYXV0bycsIGNvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFwcGVhcmFuY2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hcHBlYXJhbmNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IFt7IGFwcGVhcmFuY2U6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEN1cnNvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2N1cnNvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dhaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21vdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vdC1hbGxvd2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0LW1lbnUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjZWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcm9zc2hhaXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnRpY2FsLXRleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduby1kcm9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncmFiYmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWxsLXNjcm9sbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncm93LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbi1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAndy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICducy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25lc3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdud3NlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnem9vbS1vdXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FyZXQgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9qdXN0LWluLXRpbWUtbW9kZSNjYXJldC1jb2xvci11dGlsaXRpZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NhcmV0LWNvbG9yJzogW3sgY2FyZXQ6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQb2ludGVyIEV2ZW50c1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BvaW50ZXItZXZlbnRzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwb2ludGVyLWV2ZW50cyc6IFt7ICdwb2ludGVyLWV2ZW50cyc6IFsnbm9uZScsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJlc2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jlc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByZXNpemU6IFt7IHJlc2l6ZTogWydub25lJywgJ3knLCAneCcsICcnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIEJlaGF2aW9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtYmVoYXZpb3InOiBbeyBzY3JvbGw6IFsnYXV0bycsICdzbW9vdGgnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW3sgJ3Njcm9sbC1tJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW14JzogW3sgJ3Njcm9sbC1teCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFt7ICdzY3JvbGwtbXknOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1zJzogW3sgJ3Njcm9sbC1tcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1lJzogW3sgJ3Njcm9sbC1tZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW10JzogW3sgJ3Njcm9sbC1tdCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXInOiBbeyAnc2Nyb2xsLW1yJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbWInOiBbeyAnc2Nyb2xsLW1iJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1sJzogW3sgJ3Njcm9sbC1tbCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW3sgJ3Njcm9sbC1wJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbeyAnc2Nyb2xsLXB4JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbeyAnc2Nyb2xsLXB5JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBzJzogW3sgJ3Njcm9sbC1wcyc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGUnOiBbeyAnc2Nyb2xsLXBlJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wdCc6IFt7ICdzY3JvbGwtcHQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHInOiBbeyAnc2Nyb2xsLXByJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wYic6IFt7ICdzY3JvbGwtcGInOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBMZWZ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wbCc6IFt7ICdzY3JvbGwtcGwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBBbGlnblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLWFsaWduJzogW3sgc25hcDogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ2FsaWduLW5vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgU3RvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXN0b3BcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RvcCc6IFt7IHNuYXA6IFsnbm9ybWFsJywgJ2Fsd2F5cyddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXNuYXAtdHlwZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC10eXBlJzogW3sgc25hcDogWydub25lJywgJ3gnLCAneScsICdib3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFR5cGUgU3RyaWN0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtc3RyaWN0bmVzcyc6IFt7IHNuYXA6IFsnbWFuZGF0b3J5JywgJ3Byb3hpbWl0eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUb3VjaCBBY3Rpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdG91Y2g6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvdWNoOiBbJ2F1dG8nLCAnbm9uZScsICdtYW5pcHVsYXRpb24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXknOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAndG91Y2gtcGFuJzogWyd5JywgJ3VwJywgJ2Rvd24nXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uIFBpbmNoIFpvb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90b3VjaC1hY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RvdWNoLXB6JzogWyd0b3VjaC1waW5jaC16b29tJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFVzZXIgU2VsZWN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdXNlci1zZWxlY3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2VsZWN0OiBbeyBzZWxlY3Q6IFsnbm9uZScsICd0ZXh0JywgJ2FsbCcsICdhdXRvJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpbGwgQ2hhbmdlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lsbC1jaGFuZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3dpbGwtY2hhbmdlJzogW1xuICAgICAgICAgICAgICAgIHsgJ3dpbGwtY2hhbmdlJzogWydhdXRvJywgJ3Njcm9sbCcsICdjb250ZW50cycsICd0cmFuc2Zvcm0nLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIFNWR1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGaWxsXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsbFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWxsOiBbeyBmaWxsOiBbY29sb3JzLCAnbm9uZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2UgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2Utd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3N0cm9rZS13JzogW3sgc3Ryb2tlOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoLCBpc0FyYml0cmFyeU51bWJlcl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFN0cm9rZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3N0cm9rZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdHJva2U6IFt7IHN0cm9rZTogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8vIEFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NyZWVuIFJlYWRlcnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JlZW4tcmVhZGVyc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzcjogWydzci1vbmx5JywgJ25vdC1zci1vbmx5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvcmNlZCBDb2xvciBBZGp1c3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb3JjZWQtY29sb3ItYWRqdXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmb3JjZWQtY29sb3ItYWRqdXN0JzogW3sgJ2ZvcmNlZC1jb2xvci1hZGp1c3QnOiBbJ2F1dG8nLCAnbm9uZSddIH1dLFxuICAgICAgICB9LFxuICAgICAgICBjb25mbGljdGluZ0NsYXNzR3JvdXBzOiB7XG4gICAgICAgICAgICBvdmVyZmxvdzogWydvdmVyZmxvdy14JywgJ292ZXJmbG93LXknXSxcbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFsnb3ZlcnNjcm9sbC14JywgJ292ZXJzY3JvbGwteSddLFxuICAgICAgICAgICAgaW5zZXQ6IFsnaW5zZXQteCcsICdpbnNldC15JywgJ3N0YXJ0JywgJ2VuZCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgICAgICAgICAgICdpbnNldC14JzogWydyaWdodCcsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteSc6IFsndG9wJywgJ2JvdHRvbSddLFxuICAgICAgICAgICAgZmxleDogWydiYXNpcycsICdncm93JywgJ3NocmluayddLFxuICAgICAgICAgICAgZ2FwOiBbJ2dhcC14JywgJ2dhcC15J10sXG4gICAgICAgICAgICBwOiBbJ3B4JywgJ3B5JywgJ3BzJywgJ3BlJywgJ3B0JywgJ3ByJywgJ3BiJywgJ3BsJ10sXG4gICAgICAgICAgICBweDogWydwcicsICdwbCddLFxuICAgICAgICAgICAgcHk6IFsncHQnLCAncGInXSxcbiAgICAgICAgICAgIG06IFsnbXgnLCAnbXknLCAnbXMnLCAnbWUnLCAnbXQnLCAnbXInLCAnbWInLCAnbWwnXSxcbiAgICAgICAgICAgIG14OiBbJ21yJywgJ21sJ10sXG4gICAgICAgICAgICBteTogWydtdCcsICdtYiddLFxuICAgICAgICAgICAgc2l6ZTogWyd3JywgJ2gnXSxcbiAgICAgICAgICAgICdmb250LXNpemUnOiBbJ2xlYWRpbmcnXSxcbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogW1xuICAgICAgICAgICAgICAgICdmdm4tb3JkaW5hbCcsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nLFxuICAgICAgICAgICAgICAgICdmdm4tZmlndXJlJyxcbiAgICAgICAgICAgICAgICAnZnZuLXNwYWNpbmcnLFxuICAgICAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zbGFzaGVkLXplcm8nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZmlndXJlJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLXNwYWNpbmcnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tZnJhY3Rpb24nOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogWydkaXNwbGF5JywgJ292ZXJmbG93J10sXG4gICAgICAgICAgICByb3VuZGVkOiBbXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcycsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtcicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtbCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtc3MnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNlJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1lZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXRsJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10cicsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtYnInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAncm91bmRlZC1zJzogWydyb3VuZGVkLXNzJywgJ3JvdW5kZWQtZXMnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWUnOiBbJ3JvdW5kZWQtc2UnLCAncm91bmRlZC1lZSddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtdCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLXRyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1yJzogWydyb3VuZGVkLXRyJywgJ3JvdW5kZWQtYnInXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWInOiBbJ3JvdW5kZWQtYnInLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtbCc6IFsncm91bmRlZC10bCcsICdyb3VuZGVkLWJsJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbJ2JvcmRlci1zcGFjaW5nLXgnLCAnYm9yZGVyLXNwYWNpbmcteSddLFxuICAgICAgICAgICAgJ2JvcmRlci13JzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItdy1zJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctZScsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LXQnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdib3JkZXItdy14JzogWydib3JkZXItdy1yJywgJ2JvcmRlci13LWwnXSxcbiAgICAgICAgICAgICdib3JkZXItdy15JzogWydib3JkZXItdy10JywgJ2JvcmRlci13LWInXSxcbiAgICAgICAgICAgICdib3JkZXItY29sb3InOiBbXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItYicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXgnOiBbJ2JvcmRlci1jb2xvci1yJywgJ2JvcmRlci1jb2xvci1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXknOiBbJ2JvcmRlci1jb2xvci10JywgJ2JvcmRlci1jb2xvci1iJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLW0nOiBbXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1teScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcycsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tZScsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tdCcsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tcicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tYicsXG4gICAgICAgICAgICAgICAgJ3Njcm9sbC1tbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFsnc2Nyb2xsLW1yJywgJ3Njcm9sbC1tbCddLFxuICAgICAgICAgICAgJ3Njcm9sbC1teSc6IFsnc2Nyb2xsLW10JywgJ3Njcm9sbC1tYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1wJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtcHgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcHInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtcGwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHgnOiBbJ3Njcm9sbC1wcicsICdzY3JvbGwtcGwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtcHknOiBbJ3Njcm9sbC1wdCcsICdzY3JvbGwtcGInXSxcbiAgICAgICAgICAgIHRvdWNoOiBbJ3RvdWNoLXgnLCAndG91Y2gteScsICd0b3VjaC1weiddLFxuICAgICAgICAgICAgJ3RvdWNoLXgnOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gteSc6IFsndG91Y2gnXSxcbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gnXSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOiB7XG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgIH0sXG4gICAgfSBhcyBjb25zdCBzYXRpc2ZpZXMgQ29uZmlnPERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcz5cbn1cbiIsICJpbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIEdlbmVyaWNDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG4vKipcbiAqIEBwYXJhbSBiYXNlQ29uZmlnIENvbmZpZyB3aGVyZSBvdGhlciBjb25maWcgd2lsbCBiZSBtZXJnZWQgaW50by4gVGhpcyBvYmplY3Qgd2lsbCBiZSBtdXRhdGVkLlxuICogQHBhcmFtIGNvbmZpZ0V4dGVuc2lvbiBQYXJ0aWFsIGNvbmZpZyB0byBtZXJnZSBpbnRvIHRoZSBgYmFzZUNvbmZpZ2AuXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNvbmZpZ3MgPSA8Q2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZywgVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyPihcbiAgICBiYXNlQ29uZmlnOiBHZW5lcmljQ29uZmlnLFxuICAgIHtcbiAgICAgICAgY2FjaGVTaXplLFxuICAgICAgICBwcmVmaXgsXG4gICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUsXG4gICAgICAgIGV4dGVuZCA9IHt9LFxuICAgICAgICBvdmVycmlkZSA9IHt9LFxuICAgIH06IENvbmZpZ0V4dGVuc2lvbjxDbGFzc0dyb3VwSWRzLCBUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2NhY2hlU2l6ZScsIGNhY2hlU2l6ZSlcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdwcmVmaXgnLCBwcmVmaXgpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAnc2VwYXJhdG9yJywgc2VwYXJhdG9yKVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ2V4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lJywgZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpXG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ0tleSBpbiBvdmVycmlkZSkge1xuICAgICAgICBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBiYXNlQ29uZmlnW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICAgICAgb3ZlcnJpZGVbY29uZmlnS2V5IGFzIGtleW9mIHR5cGVvZiBvdmVycmlkZV0sXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBleHRlbmQpIHtcbiAgICAgICAgbWVyZ2VDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1trZXkgYXMga2V5b2YgdHlwZW9mIGV4dGVuZF0sXG4gICAgICAgICAgICBleHRlbmRba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGJhc2VDb25maWdcbn1cblxuY29uc3Qgb3ZlcnJpZGVQcm9wZXJ0eSA9IDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gICAgYmFzZU9iamVjdDogVCxcbiAgICBvdmVycmlkZUtleTogSyxcbiAgICBvdmVycmlkZVZhbHVlOiBUW0tdIHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBiYXNlT2JqZWN0W292ZXJyaWRlS2V5XSA9IG92ZXJyaWRlVmFsdWVcbiAgICB9XG59XG5cbmNvbnN0IG92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG92ZXJyaWRlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG92ZXJyaWRlT2JqZWN0KSB7XG4gICAgICAgICAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VPYmplY3QsIGtleSwgb3ZlcnJpZGVPYmplY3Rba2V5XSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgbWVyZ2VDb25maWdQcm9wZXJ0aWVzID0gKFxuICAgIGJhc2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4sXG4gICAgbWVyZ2VPYmplY3Q6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgcmVhZG9ubHkgdW5rbm93bltdPj4gfCB1bmRlZmluZWQsXG4pID0+IHtcbiAgICBpZiAobWVyZ2VPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWVyZ2VPYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlVmFsdWUgPSBtZXJnZU9iamVjdFtrZXldXG5cbiAgICAgICAgICAgIGlmIChtZXJnZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBiYXNlT2JqZWN0W2tleV0gPSAoYmFzZU9iamVjdFtrZXldIHx8IFtdKS5jb25jYXQobWVyZ2VWYWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVUYWlsd2luZE1lcmdlIH0gZnJvbSAnLi9jcmVhdGUtdGFpbHdpbmQtbWVyZ2UnXG5pbXBvcnQgeyBnZXREZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZydcbmltcG9ydCB7IG1lcmdlQ29uZmlncyB9IGZyb20gJy4vbWVyZ2UtY29uZmlncydcbmltcG9ydCB7IENvbmZpZ0V4dGVuc2lvbiwgRGVmYXVsdENsYXNzR3JvdXBJZHMsIERlZmF1bHRUaGVtZUdyb3VwSWRzLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdTdWJzZXF1ZW50ID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gR2VuZXJpY0NvbmZpZ1xuXG5leHBvcnQgY29uc3QgZXh0ZW5kVGFpbHdpbmRNZXJnZSA9IDxcbiAgICBBZGRpdGlvbmFsQ2xhc3NHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzIGV4dGVuZHMgc3RyaW5nID0gbmV2ZXIsXG4+KFxuICAgIGNvbmZpZ0V4dGVuc2lvbjpcbiAgICAgICAgfCBDb25maWdFeHRlbnNpb248XG4gICAgICAgICAgICAgIERlZmF1bHRDbGFzc0dyb3VwSWRzIHwgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMsXG4gICAgICAgICAgICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzIHwgQWRkaXRpb25hbFRoZW1lR3JvdXBJZHNcbiAgICAgICAgICA+XG4gICAgICAgIHwgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCxcbiAgICAuLi5jcmVhdGVDb25maWc6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKSA9PlxuICAgIHR5cGVvZiBjb25maWdFeHRlbnNpb24gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjcmVhdGVUYWlsd2luZE1lcmdlKGdldERlZmF1bHRDb25maWcsIGNvbmZpZ0V4dGVuc2lvbiwgLi4uY3JlYXRlQ29uZmlnKVxuICAgICAgICA6IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgICAgICAgICAgICgpID0+IG1lcmdlQ29uZmlncyhnZXREZWZhdWx0Q29uZmlnKCksIGNvbmZpZ0V4dGVuc2lvbiksXG4gICAgICAgICAgICAgIC4uLmNyZWF0ZUNvbmZpZyxcbiAgICAgICAgICApXG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5cbmV4cG9ydCBjb25zdCB0d01lcmdlID0gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnKVxuIiwgImltcG9ydCB7IHVzZUlzTXV0YXRpbmcgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyB0eXBlIENvbHVtbkRlZiB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEZpbHRlckljb24sIE1heGltaXplLCBNaW5pbWl6ZSwgUGFuZWxMZWZ0Q2xvc2UsIFBhbmVsTGVmdE9wZW4sIFJlZnJlc2hDdyB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVOdW1iZXIgfSBmcm9tIFwibW90aW9uLXBsdXMvcmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSBcInNvbm5lclwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmlnSW50U3RyaW5nLCBOdW1lcmljU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2RhdGEvdHlwZS11dGlsc1wiO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlclRyaWdnZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9wb3BvdmVyXCI7XG5pbXBvcnQgeyBUYWJsZUhlYWQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVJbnNlcnQgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlUXVlcnkgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVVcGRhdGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGVcIjtcbmltcG9ydCB7IHVzZUZpbHRlcmluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1wYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNlbGVjdGlvblwiO1xuaW1wb3J0IHsgdXNlU29ydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2Utc29ydGluZ1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBDZWxsLCBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RIZWFkZXJDZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RSb3dDZWxsIH0gZnJvbSBcIi4vY2VsbC9TZWxlY3RSb3dDZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBGaWx0ZXJUcmVlIH0gZnJvbSBcIi4vRmlsdGVyVHJlZVwiO1xuaW1wb3J0IHsgRGF0YUdyaWQgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkXCI7XG5pbXBvcnQgeyBEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkRHJhZ2dhYmxlSGVhZGVyQ2VsbFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXIgfSBmcm9tIFwiLi9ncmlkL0RhdGFHcmlkSGVhZGVyXCI7XG5pbXBvcnQgeyBnZXRJbnB1dCB9IGZyb20gXCIuL2lucHV0L2dldC1pbnB1dFwiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCIuL2xpbmsvZ2V0LWxpbmtcIjtcbmltcG9ydCB7IFN0YWdlZFJvd3MgfSBmcm9tIFwiLi9TdGFnZWRSb3dzXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZlVGFibGVWaWV3UHJvcHMge31cblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGl2ZVRhYmxlVmlldyhfcHJvcHM6IEFjdGl2ZVRhYmxlVmlld1Byb3BzKSB7XG4gIGNvbnN0IGlzTXV0YXRpbmcgPSBCb29sZWFuKHVzZUlzTXV0YXRpbmcoKSk7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIG9uRXJyb3IsIGlzRnVsbHNjcmVlbiwgdG9nZ2xlRnVsbHNjcmVlbiwgdG9nZ2xlTmF2aWdhdGlvbiwgaXNOYXZpZ2F0aW9uT3BlbiB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgc29ydGluZ1N0YXRlLCBzZXRTb3J0aW5nU3RhdGUgfSA9IHVzZVNvcnRpbmcoKTtcbiAgY29uc3QgeyBwYWdpbmF0aW9uU3RhdGUsIHNldFBhZ2luYXRpb25TdGF0ZSB9ID0gdXNlUGFnaW5hdGlvbigpO1xuICBjb25zdCBbc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93c10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPihbXSk7XG4gIGNvbnN0IHsgYXBwbGllZEZpbHRlciwgc2V0QXBwbGllZEZpbHRlciwgZWRpdGluZ0ZpbHRlciwgc2V0RWRpdGluZ0ZpbHRlciwgdG90YWxFZGl0aW5nRmlsdGVycyB9ID0gdXNlRmlsdGVyaW5nKCk7XG5cbiAgY29uc3QgeyBkYXRhLCBpc0ZldGNoaW5nLCByZWZldGNoIH0gPSB1c2VBY3RpdmVUYWJsZVF1ZXJ5KHtcbiAgICAuLi5wYWdpbmF0aW9uU3RhdGUsXG4gICAgc29ydE9yZGVyOiBzb3J0aW5nU3RhdGUsXG4gICAgZmlsdGVyOiBhcHBsaWVkRmlsdGVyLFxuICB9KTtcbiAgY29uc3QgeyBkZWxldGVTZWxlY3Rpb24sIGlzU2VsZWN0aW5nLCByb3dTZWxlY3Rpb25TdGF0ZSwgc2V0Um93U2VsZWN0aW9uU3RhdGUgfSA9IHVzZVNlbGVjdGlvbihkYXRhKTtcblxuICBjb25zdCByZWFkb25seSA9ICFPYmplY3QudmFsdWVzKGFjdGl2ZVRhYmxlPy5jb2x1bW5zID8/IHt9KS5zb21lKChjb2x1bW4pID0+IGNvbHVtbi5pc0luUHJpbWFyeUtleSk7XG4gIGNvbnN0IGlzSW5zZXJ0aW5nID0gdXNlSXNJbnNlcnRpbmcoKTtcbiAgY29uc3QgaW5zZXJ0ID0gdXNlQWN0aXZlVGFibGVJbnNlcnQoKTtcbiAgY29uc3QgdXBkYXRlID0gdXNlQWN0aXZlVGFibGVVcGRhdGUoKTtcblxuICAvLyByZXNldCBpbnNlcnRSb3dzIHdoZW4gYWN0aXZlVGFibGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4gc2V0U3RhZ2VkUm93cyhbXSksIFthY3RpdmVUYWJsZV0pO1xuXG4gIGlmICghYWN0aXZlVGFibGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNhdmVTdGFnZWRSb3dzKCkge1xuICAgIGluc2VydC5tdXRhdGUoc3RhZ2VkUm93cywge1xuICAgICAgb25FcnJvcixcbiAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgdG9hc3Quc3VjY2VzcyhcIlJvd3MgaW5zZXJ0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuICAgICAgICBzZXRTdGFnZWRSb3dzKFtdKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBuZXdTdGFnZWRSb3coKSB7XG4gICAgLy8gVE9ETzogdGhlIG5ldyBvYmplY3Qgc2hvdWxkIGhhdmUgc29tZSB0aGluZ3Mgc2V0IHRvIG51bGwgaWYgdGhleSdyZSBudWxsYWJsZSBvciBoYXZlIGEgZGVmYXVsdCB2YWx1ZT9cbiAgICBzZXRTdGFnZWRSb3dzKChvbGQpID0+IFsuLi5vbGQsIHt9XSk7XG4gIH1cblxuICBmdW5jdGlvbiBkcm9wU3RhZ2VkUm93cygpIHtcbiAgICBzZXRTdGFnZWRSb3dzKFtdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNlbGxJbnB1dFN1Ym1pdCh2YWx1ZTogdW5rbm93biwgY29sdW1uOiBDb2x1bW4sIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB1cGRhdGUubXV0YXRlKHtcbiAgICAgIGRldGFpbHM6IHsgY2hhbmdlczogeyBbY29sdW1uLm5hbWVdOiB2YWx1ZSB9LCByb3csIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSxcbiAgICAgIG9wdGlvbnM6IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gb25GaWx0ZXJPcGVuQ2hhbmdlKG9wZW46IGJvb2xlYW4pIHtcbiAgICBpZiAob3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgc2V0RWRpdGluZ0ZpbHRlcihhcHBsaWVkRmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0QXBwbGllZEZpbHRlcihlZGl0aW5nRmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyByZWFsIGNvbHVtbiBkZWZpbml0aW9ucyB0aGF0IGNvcnJlc3BvbmQgdG8gZGF0YWJhc2UgY29sdW1uc1xuICBjb25zdCBjb25jcmV0ZUNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKGFjdGl2ZVRhYmxlPy5jb2x1bW5zID8/IHt9KS5tYXAoKGNvbHVtbikgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogY29sdW1uLm5hbWUsXG4gICAgICBhY2Nlc3NvcktleTogY29sdW1uLm5hbWUsXG4gICAgICBtZXRhOiBjb2x1bW4sXG4gICAgICBoZWFkZXIoeyB0YWJsZSwgaGVhZGVyIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxEYXRhR3JpZERyYWdnYWJsZUhlYWRlckNlbGwgdGFibGU9e3RhYmxlfSBoZWFkZXI9e2hlYWRlcn0gey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgPERhdGFHcmlkSGVhZGVyIGhlYWRlcj17aGVhZGVyfSBjb2x1bW49e2NvbHVtbn0gLz5cbiAgICAgICAgICAgIDwvRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsPlxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgY2VsbCh7IGNlbGwgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY29udGFpbmVyUHJvcHM9e3Byb3BzfVxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbiB9KX1cbiAgICAgICAgICAgIGxpbmtDb21wb25lbnQ9e0xpbmsoeyBjZWxsLCBjb2x1bW4gfSl9XG4gICAgICAgICAgICBpbnB1dENvbXBvbmVudD17Z2V0SW5wdXQoe1xuICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWUsIGNvbHVtbiwgY2VsbC5yb3cub3JpZ2luYWwpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgfSk7XG5cbiAgLy8gdGhlc2UgYXJlIGNvbHVtbnMgdGhhdCBleGlzdCB2aXJ0dWFsbHkgYW5kIGFyZSBub3QgZGIgY29sdW1uc1xuICBjb25zdCB2aXJ0dWFsQ29sdW1uRGVmcyA9IFtcbiAgICB7XG4gICAgICBpZDogXCJfX3BzX3NlbGVjdFwiLFxuICAgICAgYWNjZXNzb3JLZXk6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGVuYWJsZVBpbm5pbmc6IHRydWUsXG4gICAgICBlbmFibGVSZXNpemluZzogZmFsc2UsXG4gICAgICBlbmFibGVTb3J0aW5nOiBmYWxzZSxcbiAgICAgIHNpemU6IDM1LFxuICAgICAgbWluU2l6ZTogMzUsXG4gICAgICBoZWFkZXIoeyB0YWJsZSB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGFibGVIZWFkIHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBjZWxsKHsgcm93IH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDZWxsIHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgIDxTZWxlY3RSb3dDZWxsIHJvdz17cm93fSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICAgICAgICAgICA8L0NlbGw+XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXSBzYXRpc2ZpZXMgKENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gJiB7IGRpc2FibGVEcmFnZ2luZz86IGJvb2xlYW4gfSlbXTtcblxuICBjb25zdCBjb2x1bW5EZWZzID0gWy4uLmNvbmNyZXRlQ29sdW1uRGVmcywgLi4udmlydHVhbENvbHVtbkRlZnNdLnNvcnQoZGVmYXVsdENvbHVtblNvcnRpbmcpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtYmctc3R1ZGlvLWhlYWRlci1iYWNrZ3JvdW5kIHBzLWZsZXggcHMtdy1mdWxsIHBzLXAtMiBwcy1weS0zIHBzLWJvcmRlci1iIHBzLWJnLWNhcmQgcHMtcm91bmRlZC10LWxnXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbCBwcy1nYXAtMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWdyb3cgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cInNtXCIgb25DbGljaz17dG9nZ2xlTmF2aWdhdGlvbn0+XG4gICAgICAgICAgICAgICAge2lzTmF2aWdhdGlvbk9wZW4gPyA8UGFuZWxMZWZ0Q2xvc2UgLz4gOiA8UGFuZWxMZWZ0T3BlbiAvPn1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxQb3BvdmVyIG9uT3BlbkNoYW5nZT17b25GaWx0ZXJPcGVuQ2hhbmdlfT5cbiAgICAgICAgICAgICAgICA8UG9wb3ZlclRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBjbGFzc05hbWU9e2NuKHRvdGFsRWRpdGluZ0ZpbHRlcnMgPiAwICYmIFwicHMtYm9yZGVyLXByaW1hcnlcIil9PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAge3RvdGFsRWRpdGluZ0ZpbHRlcnMgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFuaW1hdGVOdW1iZXIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVyc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyQ29udGVudCBhbGlnbj1cInN0YXJ0XCIgc2lkZT1cImJvdHRvbVwiIGNsYXNzTmFtZT1cInBzLXctbWluIHBzLW1heC1oLVs1MjBweF0gcHMtb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICA8RmlsdGVyVHJlZVxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI9e2VkaXRpbmdGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICAgIHNldEZpbHRlcj17c2V0RWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXRpbmdGaWx0ZXIoZmlsdGVyKTsgLy8gVXBkYXRlIHRoZSBlZGl0aW5nIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGFwcGxpZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgdGFibGU9e2FjdGl2ZVRhYmxlfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXJDb250ZW50PlxuICAgICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtuZXdTdGFnZWRSb3d9IGRpc2FibGVkPXtpc0luc2VydGluZyA+IDB9PlxuICAgICAgICAgICAgICAgIEluc2VydCByb3dcbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIHtzdGFnZWRSb3dzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtzYXZlU3RhZ2VkUm93c30+XG4gICAgICAgICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgey8qIE5lZWRzIHNvbWUgaW1wcm92ZW1lbnQgKi99XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2Ryb3BTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzU2VsZWN0aW5nICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZGVsZXRlU2VsZWN0aW9ufT5cbiAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwiaWNvblwiIG9uQ2xpY2s9eygpID0+IHZvaWQgcmVmZXRjaCgpfSBkaXNhYmxlZD17aXNGZXRjaGluZ30+XG4gICAgICAgICAgICAgICAgPFJlZnJlc2hDdyBjbGFzc05hbWU9e2NuKFwicHMtaC00IHBzLXctNFwiLCBpc0ZldGNoaW5nICYmIFwicHMtYW5pbWF0ZS1zcGluXCIpfSAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJpY29uXCIgb25DbGljaz17dG9nZ2xlRnVsbHNjcmVlbn0+XG4gICAgICAgICAgICAgICAge2lzRnVsbHNjcmVlbiA/IDxNaW5pbWl6ZSAvPiA6IDxNYXhpbWl6ZSAvPn1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxEYXRhR3JpZFxuICAgICAgICBjb2x1bW5EZWZzPXtjb2x1bW5EZWZzfVxuICAgICAgICBnZXRCZWZvcmVSb3dzPXsodGFibGUpID0+IDxTdGFnZWRSb3dzIHsuLi57IHRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH19IC8+fVxuICAgICAgICBpc0xvYWRpbmc9e2lzRmV0Y2hpbmd9XG4gICAgICAgIGlzUHJvY2Vzc2luZz17aXNNdXRhdGluZ31cbiAgICAgICAgb25QYWdpbmF0aW9uQ2hhbmdlPXtzZXRQYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlPXtzZXRSb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgb25Tb3J0aW5nQ2hhbmdlPXtzZXRTb3J0aW5nU3RhdGV9XG4gICAgICAgIHBhZ2VDb3VudD17Z2V0UGFnZUNvdW50KGRhdGE/LmZpbHRlcmVkUm93Q291bnQgPz8gSW5maW5pdHksIHBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSl9XG4gICAgICAgIHBhZ2luYXRpb25TdGF0ZT17cGFnaW5hdGlvblN0YXRlfVxuICAgICAgICByb3dzPXtkYXRhPy5yb3dzID8/IFtdfVxuICAgICAgICByb3dTZWxlY3Rpb25TdGF0ZT17cm93U2VsZWN0aW9uU3RhdGV9XG4gICAgICAgIHNvcnRpbmdTdGF0ZT17c29ydGluZ1N0YXRlfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFnZUNvdW50KHJvd0NvdW50OiBudW1iZXIgfCBiaWdpbnQgfCBOdW1lcmljU3RyaW5nIHwgQmlnSW50U3RyaW5nLCBwYWdlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJvd0NvdW50ID09PSBJbmZpbml0eSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhZ2VDb3VudCA9IE51bWJlcigoQmlnSW50KHJvd0NvdW50KSArIEJpZ0ludChwYWdlU2l6ZSkgLSBCaWdJbnQoMSkpIC8gQmlnSW50KHBhZ2VTaXplKSk7XG5cbiAgcmV0dXJuIE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhZ2VDb3VudCkgPyBwYWdlQ291bnQgOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdENvbHVtblNvcnRpbmcoYTogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiwgYjogQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pikge1xuICBjb25zdCBhTWV0YSA9IGEubWV0YSBhcyBDb2x1bW4gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGJNZXRhID0gYi5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcblxuICBpZiAoYS5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiIHx8IGIuaWQgPT09IFwiX19wc19zZWxlY3RcIikge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgaWYgKGFNZXRhID09PSB1bmRlZmluZWQgfHwgYk1ldGEgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAwOyAvLyBjYW4ndCBiZSBjb21wYXJlZCwgc2hvdWxkbid0IGhhcHBlblxuICB9XG5cbiAgaWYgKGFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmICFiTWV0YS5pc0luUHJpbWFyeUtleSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoIWFNZXRhLmlzSW5QcmltYXJ5S2V5ICYmIGJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gYU1ldGEubmFtZS5sb2NhbGVDb21wYXJlKGJNZXRhLm5hbWUpO1xufVxuIiwgImltcG9ydCB7IENhbWVsVG9QYXNjYWwgfSBmcm9tICcuL3V0aWxpdHktdHlwZXMnO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBrZWJhYiBjYXNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQSBrZWJhYml6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b0tlYmFiQ2FzZSA9IChzdHJpbmc6IHN0cmluZykgPT5cbiAgc3RyaW5nLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csICckMS0kMicpLnRvTG93ZXJDYXNlKCk7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGNhbWVsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGNhbWVsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvQ2FtZWxDYXNlID0gPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cmluZzogVCkgPT5cbiAgc3RyaW5nLnJlcGxhY2UoL14oW0EtWl0pfFtcXHMtX10rKFxcdykvZywgKG1hdGNoLCBwMSwgcDIpID0+XG4gICAgcDIgPyBwMi50b1VwcGVyQ2FzZSgpIDogcDEudG9Mb3dlckNhc2UoKSxcbiAgKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gcGFzY2FsIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHBhc2NhbGl6ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCB0b1Bhc2NhbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKTogQ2FtZWxUb1Bhc2NhbDxUPiA9PiB7XG4gIGNvbnN0IGNhbWVsQ2FzZSA9IHRvQ2FtZWxDYXNlKHN0cmluZyk7XG5cbiAgcmV0dXJuIChjYW1lbENhc2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjYW1lbENhc2Uuc2xpY2UoMSkpIGFzIENhbWVsVG9QYXNjYWw8VD47XG59O1xuXG4vKipcbiAqIE1lcmdlcyBjbGFzc2VzIGludG8gYSBzaW5nbGUgc3RyaW5nXG4gKlxuICogQHBhcmFtIHthcnJheX0gY2xhc3Nlc1xuICogQHJldHVybnMge3N0cmluZ30gQSBzdHJpbmcgb2YgY2xhc3Nlc1xuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDbGFzc2VzID0gPENsYXNzVHlwZSA9IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+KC4uLmNsYXNzZXM6IENsYXNzVHlwZVtdKSA9PlxuICBjbGFzc2VzXG4gICAgLmZpbHRlcigoY2xhc3NOYW1lLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIEJvb2xlYW4oY2xhc3NOYW1lKSAmJlxuICAgICAgICAoY2xhc3NOYW1lIGFzIHN0cmluZykudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICBhcnJheS5pbmRleE9mKGNsYXNzTmFtZSkgPT09IGluZGV4XG4gICAgICApO1xuICAgIH0pXG4gICAgLmpvaW4oJyAnKVxuICAgIC50cmltKCk7XG4iLCAiZXhwb3J0IGRlZmF1bHQge1xuICB4bWxuczogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyxcbiAgd2lkdGg6IDI0LFxuICBoZWlnaHQ6IDI0LFxuICB2aWV3Qm94OiAnMCAwIDI0IDI0JyxcbiAgZmlsbDogJ25vbmUnLFxuICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICBzdHJva2VXaWR0aDogMixcbiAgc3Ryb2tlTGluZWNhcDogJ3JvdW5kJyxcbiAgc3Ryb2tlTGluZWpvaW46ICdyb3VuZCcsXG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVmYXVsdEF0dHJpYnV0ZXMgZnJvbSAnLi9kZWZhdWx0QXR0cmlidXRlcyc7XG5pbXBvcnQgeyBJY29uTm9kZSwgTHVjaWRlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcyB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcblxuaW50ZXJmYWNlIEljb25Db21wb25lbnRQcm9wcyBleHRlbmRzIEx1Y2lkZVByb3BzIHtcbiAgaWNvbk5vZGU6IEljb25Ob2RlO1xufVxuXG4vKipcbiAqIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICpcbiAqIEBjb21wb25lbnQgSWNvblxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY29sb3IgLSBUaGUgY29sb3Igb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zaXplIC0gVGhlIHNpemUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wcy5zdHJva2VXaWR0aCAtIFRoZSBzdHJva2Ugd2lkdGggb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMuYWJzb2x1dGVTdHJva2VXaWR0aCAtIFdoZXRoZXIgdG8gdXNlIGFic29sdXRlIHN0cm9rZSB3aWR0aFxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmNsYXNzTmFtZSAtIFRoZSBjbGFzcyBuYW1lIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5jaGlsZHJlbiAtIFRoZSBjaGlsZHJlbiBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtJY29uTm9kZX0gcHJvcHMuaWNvbk5vZGUgLSBUaGUgaWNvbiBub2RlIG9mIHRoZSBpY29uXG4gKlxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgSWNvbiA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvbkNvbXBvbmVudFByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIGNvbG9yID0gJ2N1cnJlbnRDb2xvcicsXG4gICAgICBzaXplID0gMjQsXG4gICAgICBzdHJva2VXaWR0aCA9IDIsXG4gICAgICBhYnNvbHV0ZVN0cm9rZVdpZHRoLFxuICAgICAgY2xhc3NOYW1lID0gJycsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGljb25Ob2RlLFxuICAgICAgLi4ucmVzdFxuICAgIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAgICdzdmcnLFxuICAgICAge1xuICAgICAgICByZWYsXG4gICAgICAgIC4uLmRlZmF1bHRBdHRyaWJ1dGVzLFxuICAgICAgICB3aWR0aDogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLFxuICAgICAgICBzdHJva2U6IGNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aDogYWJzb2x1dGVTdHJva2VXaWR0aCA/IChOdW1iZXIoc3Ryb2tlV2lkdGgpICogMjQpIC8gTnVtYmVyKHNpemUpIDogc3Ryb2tlV2lkdGgsXG4gICAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKCdsdWNpZGUnLCBjbGFzc05hbWUpLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfSxcbiAgICAgIFtcbiAgICAgICAgLi4uaWNvbk5vZGUubWFwKChbdGFnLCBhdHRyc10pID0+IGNyZWF0ZUVsZW1lbnQodGFnLCBhdHRycykpLFxuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl0pLFxuICAgICAgXSxcbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzLCB0b0tlYmFiQ2FzZSB9IGZyb20gJ0BsdWNpZGUvc2hhcmVkJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcblxuLyoqXG4gKiBDcmVhdGUgYSBMdWNpZGUgaWNvbiBjb21wb25lbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpY29uTmFtZVxuICogQHBhcmFtIHthcnJheX0gaWNvbk5vZGVcbiAqIEByZXR1cm5zIHtGb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50fSBMdWNpZGVJY29uXG4gKi9cbmNvbnN0IGNyZWF0ZUx1Y2lkZUljb24gPSAoaWNvbk5hbWU6IHN0cmluZywgaWNvbk5vZGU6IEljb25Ob2RlKSA9PiB7XG4gIGNvbnN0IENvbXBvbmVudCA9IGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgTHVjaWRlUHJvcHM+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PlxuICAgIGNyZWF0ZUVsZW1lbnQoSWNvbiwge1xuICAgICAgcmVmLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcyhgbHVjaWRlLSR7dG9LZWJhYkNhc2UoaWNvbk5hbWUpfWAsIGNsYXNzTmFtZSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KSxcbiAgKTtcblxuICBDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgJHtpY29uTmFtZX1gO1xuXG4gIHJldHVybiBDb21wb25lbnQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVMdWNpZGVJY29uO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dEb3duV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBeE5pQTBJRFFnTkMwMElpQXZQZ29nSUR4d1lYUm9JR1E5SWswM0lESXdWalFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURSb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRGhvTnlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9OQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctZG93bi13aWRlLW5hcnJvd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEFycm93RG93bldpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd0Rvd25XaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyAxNiA0IDQgNC00Jywga2V5OiAnMWNvNndqJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgMjBWNCcsIGtleTogJzF5b3hlYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSA0aDEwJywga2V5OiAnMXc4N2djJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDhoNycsIGtleTogJ2RqeWUzNCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmg0Jywga2V5OiAncTh0aWg0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd0Rvd25XaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dSaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTlNBeE1tZ3hOQ0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNVElnTlNBM0lEY3ROeUEzSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQXJyb3dSaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTUgMTJoMTQnLCBrZXk6ICcxYXlzMGgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTIgNSA3IDctNyA3Jywga2V5OiAneHF1ejRjJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBBcnJvd1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQXJyb3dVcFdpZGVOYXJyb3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE15QTRJRFF0TkNBMElEUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUY2dOSFl4TmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRFZ01USm9NVEFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV4SURFMmFEY2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREl3YURRaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Fycm93LXVwLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dVcFdpZGVOYXJyb3cgPSBjcmVhdGVMdWNpZGVJY29uKCdBcnJvd1VwV2lkZU5hcnJvdycsIFtcbiAgWydwYXRoJywgeyBkOiAnbTMgOCA0LTQgNCA0Jywga2V5OiAnMTF3bDd1JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTcgNHYxNicsIGtleTogJzFnbGZjeCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxMmgxMCcsIGtleTogJzE0MzhqaScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMSAxNmg3Jywga2V5OiAndW9zaXN2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDIwaDQnLCBrZXk6ICcxa3JjMzInIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93VXBXaWRlTmFycm93O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hlY2tcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1qQWdOaUE1SURFM2JDMDFMVFVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hlY2tcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGVjayA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZWNrJywgW1sncGF0aCcsIHsgZDogJ00yMCA2IDkgMTdsLTUtNScsIGtleTogJzFnbWYyYycgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2s7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TmlBNUlEWWdOaUEyTFRZaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tZG93blxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25Eb3duID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkRvd24nLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDkgNiA2IDYtNicsIGtleTogJ3FydW5zbCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkRvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uTGVmdFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRVZ01UZ3ROaTAySURZdE5pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25MZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTUgMTgtNi02IDYtNicsIGtleTogJzF3bmZnMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvbkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE9TQXhPQ0EyTFRZdE5pMDJJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblJpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblJpZ2h0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtOSAxOCA2LTYtNi02Jywga2V5OiAnbXRoaHdxJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UZ2dNVFV0TmkwMkxUWWdOaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi11cFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25VcCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25VcCcsIFtbJ3BhdGgnLCB7IGQ6ICdtMTggMTUtNi02LTYgNicsIGtleTogJzE1M3VkeicgfV1dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hldnJvblVwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2hldnJvbnNMZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVEVnTVRjdE5TMDFJRFV0TlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UY3ROUzAxSURVdE5TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9ucy1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNMZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNMZWZ0JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTEgMTctNS01IDUtNScsIGtleTogJzEzemhhZicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xOCAxNy01LTUgNS01Jywga2V5OiAnaDhhOGV0JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc0xlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc1JpZ2h0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUF4TnlBMUxUVXROUzAxSWlBdlBnb2dJRHh3WVhSb0lHUTlJbTB4TXlBeE55QTFMVFV0TlMwMUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLXJpZ2h0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbnNSaWdodCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NoZXZyb25zUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ202IDE3IDUtNS01LTUnLCBrZXk6ICd4bmp3cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xMyAxNyA1LTUtNS01Jywga2V5OiAnMTd4bW1mJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uc1JpZ2h0O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlSGVscFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT1M0d09TQTVZVE1nTXlBd0lEQWdNU0ExTGpneklERmpNQ0F5TFRNZ015MHpJRE1pSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVEV5SURFM2FDNHdNU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2lyY2xlLWhlbHBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaXJjbGVIZWxwID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlSGVscCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzJywga2V5OiAnMXU3NzNzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3aC4wMScsIGtleTogJ3AzMnAwNScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlSGVscDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENpcmNsZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpFeUlpQnlQU0l4TUNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NpcmNsZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ0NpcmNsZScsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTInLCBjeTogJzEyJywgcjogJzEwJywga2V5OiAnMW1nbGF5JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDb3B5XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRRaUlHaGxhV2RvZEQwaU1UUWlJSGc5SWpnaUlIazlJamdpSUhKNFBTSXlJaUJ5ZVQwaU1pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk5DQXhObU10TVM0eElEQXRNaTB1T1MweUxUSldOR013TFRFdU1TNDVMVElnTWkweWFERXdZekV1TVNBd0lESWdMamtnTWlBeUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NvcHlcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDb3B5ID0gY3JlYXRlTHVjaWRlSWNvbignQ29weScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE0JywgaGVpZ2h0OiAnMTQnLCB4OiAnOCcsIHk6ICc4Jywgcng6ICcyJywgcnk6ICcyJywga2V5OiAnMTdqeWVhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTQgMTZjLTEuMSAwLTItLjktMi0yVjRjMC0xLjEuOS0yIDItMmgxMGMxLjEgMCAyIC45IDIgMicsIGtleTogJ3ppeDl1ZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENvcm5lckRvd25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjRzlzZVd4cGJtVWdjRzlwYm5SelBTSTVJREV3SURRZ01UVWdPU0F5TUNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05IWTNZVFFnTkNBd0lEQWdNUzAwSURSSU5DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jb3JuZXItZG93bi1sZWZ0XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ29ybmVyRG93bkxlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDb3JuZXJEb3duTGVmdCcsIFtcbiAgWydwb2x5bGluZScsIHsgcG9pbnRzOiAnOSAxMCA0IDE1IDkgMjAnLCBrZXk6ICdyM2pwcnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjAgNHY3YTQgNCAwIDAgMS00IDRINCcsIGtleTogJzZvNWI3bCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29ybmVyRG93bkxlZnQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBGaWx0ZXJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHOXNlV2R2YmlCd2IybHVkSE05SWpJeUlETWdNaUF6SURFd0lERXlMalEySURFd0lERTVJREUwSURJeElERTBJREV5TGpRMklESXlJRE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvZmlsdGVyXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgRmlsdGVyID0gY3JlYXRlTHVjaWRlSWNvbignRmlsdGVyJywgW1xuICBbJ3BvbHlnb24nLCB7IHBvaW50czogJzIyIDMgMiAzIDEwIDEyLjQ2IDEwIDE5IDE0IDIxIDE0IDEyLjQ2IDIyIDMnLCBrZXk6ICcxeWc3N2YnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEdyaXBWZXJ0aWNhbFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4WTJseVkyeGxJR040UFNJNUlpQmplVDBpTVRJaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpT1NJZ1kzazlJalVpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlPU0lnWTNrOUlqRTVJaUJ5UFNJeElpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqRTFJaUJqZVQwaU1USWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU1UVWlJR041UFNJMUlpQnlQU0l4SWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpFMUlpQmplVDBpTVRraUlISTlJakVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvZ3JpcC12ZXJ0aWNhbFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEdyaXBWZXJ0aWNhbCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0dyaXBWZXJ0aWNhbCcsIFtcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnMTInLCByOiAnMScsIGtleTogJzF2Y3RnZicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzUnLCByOiAnMScsIGtleTogJ2hwMHRjZicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzknLCBjeTogJzE5JywgcjogJzEnLCBrZXk6ICdma2pqZjYnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnMTInLCByOiAnMScsIGtleTogJzF0bWFpaicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICc1JywgcjogJzEnLCBrZXk6ICcxOWwyOGUnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICcxNScsIGN5OiAnMTknLCByOiAnMScsIGtleTogJ2Y0em9qMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgR3JpcFZlcnRpY2FsO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgS2V5Um91bmRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1pNDFPRFlnTVRjdU5ERTBRVElnTWlBd0lEQWdNQ0F5SURFNExqZ3lPRll5TVdFeElERWdNQ0F3SURBZ01TQXhhRE5oTVNBeElEQWdNQ0F3SURFdE1YWXRNV0V4SURFZ01DQXdJREVnTVMweGFERmhNU0F4SURBZ01DQXdJREV0TVhZdE1XRXhJREVnTUNBd0lERWdNUzB4YUM0eE56SmhNaUF5SURBZ01DQXdJREV1TkRFMExTNDFPRFpzTGpneE5DMHVPREUwWVRZdU5TQTJMalVnTUNBeElEQXROQzAwZWlJZ0x6NEtJQ0E4WTJseVkyeGxJR040UFNJeE5pNDFJaUJqZVQwaU55NDFJaUJ5UFNJdU5TSWdabWxzYkQwaVkzVnljbVZ1ZEVOdmJHOXlJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9rZXktcm91bmRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBLZXlSb3VuZCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0tleVJvdW5kJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNMi41ODYgMTcuNDE0QTIgMiAwIDAgMCAyIDE4LjgyOFYyMWExIDEgMCAwIDAgMSAxaDNhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xaDFhMSAxIDAgMCAwIDEtMXYtMWExIDEgMCAwIDEgMS0xaC4xNzJhMiAyIDAgMCAwIDEuNDE0LS41ODZsLjgxNC0uODE0YTYuNSA2LjUgMCAxIDAtNC00eicsXG4gICAgICBrZXk6ICcxczZ0N3QnLFxuICAgIH0sXG4gIF0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE2LjUnLCBjeTogJzcuNScsIHI6ICcuNScsIGZpbGw6ICdjdXJyZW50Q29sb3InLCBrZXk6ICd3MGVrcGcnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEtleVJvdW5kO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTWF4aW1pemVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWXpJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0E0VmpWaE1pQXlJREFnTUNBd0xUSXRNbWd0TXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE5uWXpZVElnTWlBd0lEQWdNQ0F5SURKb015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UWWdNakZvTTJFeUlESWdNQ0F3SURBZ01pMHlkaTB6SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWF4aW1pemVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNYXhpbWl6ZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ01heGltaXplJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAzSDVhMiAyIDAgMCAwLTIgMnYzJywga2V5OiAnMWRjbWl0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDhWNWEyIDIgMCAwIDAtMi0yaC0zJywga2V5OiAnMWU0Z3QzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTZ2M2EyIDIgMCAwIDAgMiAyaDMnLCBrZXk6ICd3c2w1c2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMjFoM2EyIDIgMCAwIDAgMi0ydi0zJywga2V5OiAnMTh0cmVrJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNYXhpbWl6ZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1pbmltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6ZGpOaE1pQXlJREFnTUNBeExUSWdNa2d6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNGFDMHpZVElnTWlBd0lEQWdNUzB5TFRKV015SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObWd6WVRJZ01pQXdJREFnTVNBeUlESjJNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGMkxUTmhNaUF5SURBZ01DQXhJREl0TW1neklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21pbmltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWluaW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNaW5pbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM3YzYTIgMiAwIDAgMS0yIDJIMycsIGtleTogJ2hvaGJ0cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4aC0zYTIgMiAwIDAgMS0yLTJWMycsIGtleTogJzVqdzFmMycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2aDNhMiAyIDAgMCAxIDIgMnYzJywga2V5OiAnMTk4dHZyJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxdi0zYTIgMiAwIDAgMSAyLTJoMycsIGtleTogJ3BoOG14cCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWluaW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlRG93blxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeE9Fd3hNaUF5TWt3eE5pQXhPQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLWRvd25cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlRG93biA9IGNyZWF0ZUx1Y2lkZUljb24oJ01vdmVEb3duJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxOEwxMiAyMkwxNiAxOCcsIGtleTogJ2Nza3ZmdicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1vdmVVcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBMlRERXlJREpNTVRZZ05pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNbFl5TWlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdmUtdXBcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNb3ZlVXAgPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlVXAnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDZMMTIgMkwxNiA2Jywga2V5OiAnMXl2a3l4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDJWMjInLCBrZXk6ICdyODlyemsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vdmVVcDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdENsb3NlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMklERTFMVE10TXlBekxUTWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGFuZWxMZWZ0Q2xvc2UgPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRDbG9zZScsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNiAxNS0zLTMgMy0zJywga2V5OiAnMTR5OTl6JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbExlZnRDbG9zZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBhbmVsTGVmdE9wZW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNUlETjJNVGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEUwSURrZ015QXpMVE1nTXlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BhbmVsLWxlZnQtb3BlblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdE9wZW4gPSBjcmVhdGVMdWNpZGVJY29uKCdQYW5lbExlZnRPcGVuJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOSAzdjE4Jywga2V5OiAnZmgzaHFhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE0IDkgMyAzLTMgMycsIGtleTogJzgwMTBlZScgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0T3BlbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpbk9mZlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFVnT1M0ek5GWTNZVEVnTVNBd0lEQWdNU0F4TFRFZ01pQXlJREFnTUNBd0lEQXRORWczTGpnNUlpQXZQZ29nSUR4d1lYUm9JR1E5SW0weUlESWdNakFnTWpBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRrZ09YWXhMamMyWVRJZ01pQXdJREFnTVMweExqRXhJREV1Tnpsc0xURXVOemd1T1VFeUlESWdNQ0F3SURBZ05TQXhOUzR5TkZZeE5tRXhJREVnTUNBd0lEQWdNU0F4YURFeElpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3Bpbi1vZmZcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQaW5PZmYgPSBjcmVhdGVMdWNpZGVJY29uKCdQaW5PZmYnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN3Y1Jywga2V5OiAnYmIxZHU5JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE1IDkuMzRWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRINy44OScsIGtleTogJ3pud256cScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20yIDIgMjAgMjAnLCBrZXk6ICcxb29ld3knIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSA5djEuNzZhMiAyIDAgMCAxLTEuMTEgMS43OWwtMS43OC45QTIgMiAwIDAgMCA1IDE1LjI0VjE2YTEgMSAwIDAgMCAxIDFoMTEnLFxuICAgICAga2V5OiAnYzlxaG0yJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbk9mZjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFBpblxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01UZDJOU0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PU0F4TUM0M05tRXlJRElnTUNBd0lERXRNUzR4TVNBeExqYzViQzB4TGpjNExqbEJNaUF5SURBZ01DQXdJRFVnTVRVdU1qUldNVFpoTVNBeElEQWdNQ0F3SURFZ01XZ3hNbUV4SURFZ01DQXdJREFnTVMweGRpMHVOelpoTWlBeUlEQWdNQ0F3TFRFdU1URXRNUzQzT1d3dE1TNDNPQzB1T1VFeUlESWdNQ0F3SURFZ01UVWdNVEF1TnpaV04yRXhJREVnTUNBd0lERWdNUzB4SURJZ01pQXdJREFnTUNBd0xUUklPR0V5SURJZ01DQXdJREFnTUNBMElERWdNU0F3SURBZ01TQXhJREY2SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGluXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluID0gY3JlYXRlTHVjaWRlSWNvbignUGluJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDEwLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LS43NmEyIDIgMCAwIDAtMS4xMS0xLjc5bC0xLjc4LS45QTIgMiAwIDAgMSAxNSAxMC43NlY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg4YTIgMiAwIDAgMCAwIDQgMSAxIDAgMCAxIDEgMXonLFxuICAgICAga2V5OiAnMW5rejhiJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpbjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFJlZnJlc2hDd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE1tRTVJRGtnTUNBd0lERWdPUzA1SURrdU56VWdPUzQzTlNBd0lEQWdNU0EyTGpjMElESXVOelJNTWpFZ09DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1qRWdNM1kxYUMwMUlpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQXhNbUU1SURrZ01DQXdJREV0T1NBNUlEa3VOelVnT1M0M05TQXdJREFnTVMwMkxqYzBMVEl1TnpSTU15QXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5PQ0F4TmtnemRqVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9yZWZyZXNoLWN3XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUmVmcmVzaEN3ID0gY3JlYXRlTHVjaWRlSWNvbignUmVmcmVzaEN3JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxMmE5IDkgMCAwIDEgOS05IDkuNzUgOS43NSAwIDAgMSA2Ljc0IDIuNzRMMjEgOCcsIGtleTogJ3Y5aDV2YycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSAzdjVoLTUnLCBrZXk6ICcxcTd0bzAnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgMTJhOSA5IDAgMCAxLTkgOSA5Ljc1IDkuNzUgMCAwIDEtNi43NC0yLjc0TDMgMTYnLCBrZXk6ICczdWlmbDMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOCAxNkgzdjUnLCBrZXk6ICcxY3Y2NzgnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnJlc2hDdztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFRhYmxlMlxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT1NBelNEVmhNaUF5SURBZ01DQXdMVElnTW5ZMGJUWXRObWd4TUdFeUlESWdNQ0F3SURFZ01pQXlkalJOT1NBemRqRTRiVEFnTUdneE1HRXlJRElnTUNBd0lEQWdNaTB5VmpsTk9TQXlNVWcxWVRJZ01pQXdJREFnTVMweUxUSldPVzB3SURCb01UZ2lJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy90YWJsZS0yXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgVGFibGUyID0gY3JlYXRlTHVjaWRlSWNvbignVGFibGUyJywgW1xuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAzSDVhMiAyIDAgMCAwLTIgMnY0bTYtNmgxMGEyIDIgMCAwIDEgMiAydjRNOSAzdjE4bTAgMGgxMGEyIDIgMCAwIDAgMi0yVjlNOSAyMUg1YTIgMiAwIDAgMS0yLTJWOW0wIDBoMTgnLFxuICAgICAga2V5OiAnZ3VnajgzJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRhYmxlMjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIFhcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1UZ2dOaUEySURFNElpQXZQZ29nSUR4d1lYUm9JR1E5SW0wMklEWWdNVElnTVRJaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3hcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBYID0gY3JlYXRlTHVjaWRlSWNvbignWCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTE4IDYgNiAxOCcsIGtleTogJzFibDVmOCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ202IDYgMTIgMTInLCBrZXk6ICdkOGJrNnYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFg7XG4iLCAiaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBiYWRnZVZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1weC0yLjUgcHMtcHktMC41IHBzLXRleHQteHMgcHMtZm9udC1zZW1pYm9sZCBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0yIGZvY3VzOnBzLXJpbmctcmluZyBmb2N1czpwcy1yaW5nLW9mZnNldC0yXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzgwXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOlxuICAgICAgICAgIFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvODBcIixcbiAgICAgICAgb3V0bGluZTogXCJwcy10ZXh0LWZvcmVncm91bmRcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhZGdlUHJvcHMgZXh0ZW5kcyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIFZhcmlhbnRQcm9wczx0eXBlb2YgYmFkZ2VWYXJpYW50cz4ge31cblxuZnVuY3Rpb24gQmFkZ2UoeyBjbGFzc05hbWUsIHZhcmlhbnQsIC4uLnByb3BzIH06IEJhZGdlUHJvcHMpIHtcbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbihiYWRnZVZhcmlhbnRzKHsgdmFyaWFudCB9KSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgQmFkZ2UsIGJhZGdlVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGJ1dHRvblZhcmlhbnRzID0gY3ZhKFxuICBcInBzLWlubGluZS1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1nYXAtMiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLXByaW1hcnkvOTBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6IFwicHMtYmctZGVzdHJ1Y3RpdmUgcHMtdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1kZXN0cnVjdGl2ZS85MFwiLFxuICAgICAgICBvdXRsaW5lOlxuICAgICAgICAgIFwicHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1hY2NlbnQgaG92ZXI6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwicHMtYmctc2Vjb25kYXJ5IHBzLXRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLXNlY29uZGFyeS84MFwiLFxuICAgICAgICBnaG9zdDogXCJob3Zlcjpwcy1iZy1hY2NlbnQgaG92ZXI6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBsaW5rOiBcInBzLXRleHQtcHJpbWFyeSBwcy11bmRlcmxpbmUtb2Zmc2V0LTQgaG92ZXI6cHMtdW5kZXJsaW5lXCIsXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICBkZWZhdWx0OiBcInBzLWgtOSBwcy1weC00IHBzLXB5LTJcIixcbiAgICAgICAgeHM6IFwicHMtaC02IHBzLXJvdW5kZWQtbWQgcHMtcHgtMiBwcy10ZXh0LXhzXCIsXG4gICAgICAgIHNtOiBcInBzLWgtOCBwcy1yb3VuZGVkLW1kIHBzLXB4LTMgcHMtdGV4dC14c1wiLFxuICAgICAgICBsZzogXCJwcy1oLTEwIHBzLXJvdW5kZWQtbWQgcHMtcHgtOFwiLFxuICAgICAgICBpY29uOiBcInBzLWgtOSBwcy13LTlcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgICAgc2l6ZTogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uUHJvcHNcbiAgZXh0ZW5kcyBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz4ge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MQnV0dG9uRWxlbWVudCwgQnV0dG9uUHJvcHM+KFxuICAoeyBjbGFzc05hbWUsIHZhcmlhbnQsIHNpemUsIGFzQ2hpbGQgPSBmYWxzZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyBTbG90IDogXCJidXR0b25cIjtcbiAgICByZXR1cm4gPENvbXAgY2xhc3NOYW1lPXtjbihidXR0b25WYXJpYW50cyh7IHZhcmlhbnQsIHNpemUsIGNsYXNzTmFtZSB9KSl9IHJlZj17cmVmfSB7Li4ucHJvcHN9IC8+O1xuICB9LFxuKTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFwiQnV0dG9uXCI7XG5cbmV4cG9ydCB7IEJ1dHRvbiwgYnV0dG9uVmFyaWFudHMgfTtcbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFBvcG92ZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFBvcG92ZXJUcmlnZ2VyID0gUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBQb3BvdmVyQW5jaG9yID0gUG9wb3ZlclByaW1pdGl2ZS5BbmNob3I7XG5cbmNvbnN0IFBvcG92ZXJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtdy03MiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtNCBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtcG9wb3Zlci1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFBvcG92ZXIsIFBvcG92ZXJUcmlnZ2VyLCBQb3BvdmVyQ29udGVudCwgUG9wb3ZlckFuY2hvciB9O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUYWJsZSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtdy1mdWxsIHBzLW92ZXJmbG93LWF1dG8gcHMtZmxleCBwcy1pdGVtcy1zdGFydCBwcy1oLWZ1bGxcIj5cbiAgICAgIDx0YWJsZSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLXctZnVsbCBwcy1jYXB0aW9uLWJvdHRvbSBwcy10ZXh0LXNtXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgICA8L2Rpdj5cbiAgKSxcbik7XG5UYWJsZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVcIjtcblxuY29uc3QgVGFibGVIZWFkZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRoZWFkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVIZWFkZXIuZGlzcGxheU5hbWUgPSBcIlRhYmxlSGVhZGVyXCI7XG5cbmNvbnN0IFRhYmxlQm9keSA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRib2R5IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwiWyZfdHI6bGFzdC1jaGlsZF06cHMtYm9yZGVyLTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQm9keS5kaXNwbGF5TmFtZSA9IFwiVGFibGVCb2R5XCI7XG5cbmNvbnN0IFRhYmxlRm9vdGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGZvb3RcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWJvcmRlci10IHBzLWJnLW11dGVkLzUwIHBzLWZvbnQtbWVkaXVtIFsmPnRyXTpsYXN0OnBzLWJvcmRlci1iLTBcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUZvb3RlclwiO1xuXG5jb25zdCBUYWJsZVJvdyA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlUm93RWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlUm93RWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0clxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWJvcmRlci1iIHBzLXRyYW5zaXRpb24tY29sb3JzIGhvdmVyOnBzLWJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpwcy1iZy1tdXRlZFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVSb3cuZGlzcGxheU5hbWUgPSBcIlRhYmxlUm93XCI7XG5cbmNvbnN0IFRhYmxlSGVhZCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRoSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGhcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWgtMTAgcHMtcHgtMiBwcy10ZXh0LWxlZnQgcHMtYWxpZ24tbWlkZGxlIHBzLWZvbnQtbWVkaXVtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVIZWFkLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRcIjtcblxuY29uc3QgVGFibGVDZWxsID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudCwgUmVhY3QuVGRIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gPHRkIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtYWxpZ24tbWlkZGxlXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz4sXG4pO1xuVGFibGVDZWxsLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNlbGxcIjtcblxuY29uc3QgVGFibGVDYXB0aW9uID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8Y2FwdGlvbiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLW10LTQgcHMtdGV4dC1zbSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApLFxuKTtcblRhYmxlQ2FwdGlvbi5kaXNwbGF5TmFtZSA9IFwiVGFibGVDYXB0aW9uXCI7XG5cbmV4cG9ydCB7IFRhYmxlLCBUYWJsZUhlYWRlciwgVGFibGVCb2R5LCBUYWJsZUZvb3RlciwgVGFibGVIZWFkLCBUYWJsZVJvdywgVGFibGVDZWxsLCBUYWJsZUNhcHRpb24gfTtcbiIsICJpbXBvcnQgeyBRdWVyeUtleSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGFkZFJvd0lkVG9SZXN1bHQgfSBmcm9tIFwiLi91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVJbnNlcnQoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIGNvbnN0IHsgc2NoZW1hID0gbnVsbCwgbmFtZTogdGFibGUgPSBudWxsIH0gPSBhY3RpdmVUYWJsZSA/PyB7fTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uS2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcImluc2VydFwiXSxcbiAgICBhc3luYyBtdXRhdGlvbkZuKHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIuaW5zZXJ0KHsgcm93cywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LCB7fSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFkZFJvd0lkVG9SZXN1bHQocmVzdWx0LCBhY3RpdmVUYWJsZSEpO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKG5ld0RhdGEpIHtcbiAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJpZXNEYXRhPEFkYXB0ZXJRdWVyeVJlc3VsdD4oXG4gICAgICAgIHtcbiAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgLy8gaGVyZSB3ZSBwYXJ0aWFsbHkgbWF0Y2ggdGhlIHF1ZXJ5IGtleSB0byBnZXQgdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgICB9LFxuICAgICAgICAob2xkRGF0YSkgPT4ge1xuICAgICAgICAgIGlmIChvbGREYXRhID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvbGREYXRhO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5vbGREYXRhLFxuICAgICAgICAgICAgcm93czogWy4uLm5ld0RhdGEucm93cywgLi4ub2xkRGF0YS5yb3dzXSxcbiAgICAgICAgICB9IHNhdGlzZmllcyBBZGFwdGVyUXVlcnlSZXN1bHQ7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeUNsaWVudCwgUXVlcnlDbGllbnRQcm92aWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcbmltcG9ydCB7IFJlYWN0UXVlcnlEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyLCBUYWJsZSB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgVG9hc3RlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3Nvbm5lclwiO1xuaW1wb3J0IHsgTnVxc0hhc2hBZGFwdGVyIH0gZnJvbSBcIi4vTnVxc0hhc2hBZGFwdGVyXCI7XG5pbXBvcnQgeyBTdHVkaW9UZWxlbWV0cnlFdmVudCB9IGZyb20gXCIuL1N0dWRpb1wiO1xuXG4vKipcbiAqIFN0dWRpbyBjb250ZXh0IHZhbHVlIGludGVyZmFjZVxuICovXG5pbnRlcmZhY2UgU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgYWN0aXZlVGFibGU6IFRhYmxlIHwgbnVsbDtcbiAgYWN0aXZlU2NoZW1hOiBzdHJpbmc7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIHNldEFjdGl2ZVRhYmxlOiAodGFibGU6IFRhYmxlIHwgbnVsbCkgPT4gdm9pZDtcbiAgc2V0QWN0aXZlU2NoZW1hOiAoc2NoZW1hOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIGVtaXRUZWxlbWV0cnlFdmVudDogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xuICAvLyBVSSBzdGF0ZVxuICBpc0Z1bGxzY3JlZW46IGJvb2xlYW47XG4gIHRvZ2dsZUZ1bGxzY3JlZW46ICgpID0+IHZvaWQ7XG4gIGlzTmF2aWdhdGlvbk9wZW46IGJvb2xlYW47XG4gIHRvZ2dsZU5hdmlnYXRpb246ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KCk7XG5cbi8qKlxuICogQ29udGV4dCBmb3Igc2hhcmluZyBTdHVkaW8gc3RhdGUgYWNyb3NzIGNvbXBvbmVudHNcbiAqL1xuY29uc3QgU3R1ZGlvQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8U3R1ZGlvQ29udGV4dFZhbHVlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5leHBvcnQgdHlwZSBTdHVkaW9Db250ZXh0UHJvdmlkZXJQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgYWRhcHRlcjogQWRhcHRlcjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGVsZW1ldHJ5RXZlbnQ/OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG59PjtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpb0NvbnRleHRQcm92aWRlcihwcm9wczogU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGVdID0gdXNlU3RhdGU8VGFibGUgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2FjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlU2NoZW1hXSA9IHVzZVN0YXRlPHN0cmluZz4ocHJvcHMuYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIpO1xuICBjb25zdCBbaXNGdWxsc2NyZWVuLCBzZXRJc0Z1bGxzY3JlZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNOYXZpZ2F0aW9uT3Blbiwgc2V0SXNOYXZpZ2F0aW9uT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICBsZXQgb25FcnJvciA9IHByb3BzLm9uRXJyb3I7XG4gIG9uRXJyb3IgPz89IChlcnJvcjogRXJyb3IpID0+IHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGVtaXRUZWxlbWV0cnlFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5vblRlbGVtZXRyeUV2ZW50ID8/ICgoKSA9PiB7fSk7XG4gIH0sIFtwcm9wcy5vblRlbGVtZXRyeUV2ZW50XSk7XG5cbiAgY29uc3QgdG9nZ2xlRnVsbHNjcmVlbiA9ICgpID0+IHNldElzRnVsbHNjcmVlbigocHJldikgPT4gIXByZXYpO1xuICBjb25zdCB0b2dnbGVOYXZpZ2F0aW9uID0gKCkgPT4gc2V0SXNOYXZpZ2F0aW9uT3BlbigocHJldikgPT4gIXByZXYpO1xuICByZXR1cm4gKFxuICAgIDxRdWVyeUNsaWVudFByb3ZpZGVyIGNsaWVudD17cXVlcnlDbGllbnR9PlxuICAgICAgPFJlYWN0UXVlcnlEZXZ0b29scyAvPlxuICAgICAgPFRvYXN0ZXIgLz5cbiAgICAgIDxOdXFzSGFzaEFkYXB0ZXI+XG4gICAgICAgIDxTdHVkaW9Db250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgIC4uLm90aGVyUHJvcHMsXG4gICAgICAgICAgICBhY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIGFjdGl2ZVNjaGVtYSxcbiAgICAgICAgICAgIGlzRnVsbHNjcmVlbixcbiAgICAgICAgICAgIHNldEFjdGl2ZVRhYmxlLFxuICAgICAgICAgICAgc2V0QWN0aXZlU2NoZW1hLFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCxcbiAgICAgICAgICAgIHRvZ2dsZUZ1bGxzY3JlZW4sXG4gICAgICAgICAgICBpc05hdmlnYXRpb25PcGVuLFxuICAgICAgICAgICAgdG9nZ2xlTmF2aWdhdGlvbixcbiAgICAgICAgICB9fVxuICAgICAgICA+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+IHtcbiAgICAgIGNvbnN0IHsgcm93czogY2FjaGVkUm93cyA9IFtdIH0gPSBjYWNoZWRSZXN1bHQgfHwge307XG5cbiAgICAgIGlmIChjYWNoZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZWRSb3dJbmRleCA9IGNhY2hlZFJvd3MuZmluZEluZGV4KChmaW5kZXIgPz89IGdldEZpbmRlckZuKCkpKTtcblxuICAgICAgaWYgKGNhY2hlZFJvd0luZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdSb3cgPSB1cGRhdGVyRm4oY2FjaGVkUm93c1tjYWNoZWRSb3dJbmRleF0hKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY2FjaGVkUmVzdWx0ISxcbiAgICAgICAgcm93czogWy4uLmNhY2hlZFJvd3Muc2xpY2UoMCwgY2FjaGVkUm93SW5kZXgpLCBuZXdSb3csIC4uLmNhY2hlZFJvd3Muc2xpY2UoY2FjaGVkUm93SW5kZXggKyAxKV0sXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgRmlsdGVyR3JvdXAgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEZpbHRlcjogRmlsdGVyR3JvdXAgPSB7XG4gIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgZmlsdGVyczogW10sXG4gIGFmdGVyOiBcImFuZFwiLFxuICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbn07XG5cbmNvbnN0IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZSA9IChmaWx0ZXJHcm91cDogRmlsdGVyR3JvdXApOiBudW1iZXIgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJHcm91cC5maWx0ZXJzKSB7XG4gICAgaWYgKGZpbHRlci5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgICAvLyBPbmx5IGNvdW50IGZpbHRlcnMgdGhhdCBoYXZlIGEgbm9uLWVtcHR5IGNvbHVtbiBzZWxlY3RlZFxuICAgICAgaWYgKGZpbHRlci5jb2x1bW4udHJpbSgpKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmaWx0ZXIua2luZCA9PT0gXCJGaWx0ZXJHcm91cFwiKSB7XG4gICAgICBjb3VudCArPSBjb3VudEZpbHRlcnNSZWN1cnNpdmUoZmlsdGVyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvdW50O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUZpbHRlcmluZygpIHtcbiAgY29uc3QgW2ZpbHRlclBhcmFtLCBzZXRGaWx0ZXJQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwiZmlsdGVyXCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGRlZmF1bHRGaWx0ZXIpLFxuICB9KTtcblxuICBjb25zdCBhcHBsaWVkRmlsdGVyID0gdXNlTWVtbygoKSA9PiBKU09OLnBhcnNlKGZpbHRlclBhcmFtKSBhcyBGaWx0ZXJHcm91cCwgW2ZpbHRlclBhcmFtXSk7XG4gIGNvbnN0IHNldEFwcGxpZWRGaWx0ZXIgPSAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZCBzZXRGaWx0ZXJQYXJhbShKU09OLnN0cmluZ2lmeShmaWx0ZXIpKTtcblxuICBjb25zdCBbZWRpdGluZ0ZpbHRlciwgc2V0RWRpdGluZ0ZpbHRlcl0gPSB1c2VTdGF0ZTxGaWx0ZXJHcm91cD4oYXBwbGllZEZpbHRlcik7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRFZGl0aW5nRmlsdGVyKGFwcGxpZWRGaWx0ZXIpO1xuICB9LCBbYXBwbGllZEZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvdGFsRWRpdGluZ0ZpbHRlcnMgPSB1c2VNZW1vKCgpID0+IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShlZGl0aW5nRmlsdGVyKSwgW2VkaXRpbmdGaWx0ZXJdKTtcblxuICByZXR1cm4ge1xuICAgIGFwcGxpZWRGaWx0ZXIsXG4gICAgc2V0QXBwbGllZEZpbHRlcixcbiAgICBlZGl0aW5nRmlsdGVyLFxuICAgIHNldEVkaXRpbmdGaWx0ZXIsXG4gICAgdG90YWxFZGl0aW5nRmlsdGVycyxcbiAgfTtcbn1cbiIsICIvLyB3ZSdyZSBlbnN1cmluZyB0aGF0IGtleXMgYXJlIHR5cGUtc2FmZS4gdGhlcmUgaXMgbm8gcHJvcGVyIHdheSB0byBhY2hpZXZlIGl0IGluIGBudXFzYC5cbi8vIHRoZSBgZGVjbGFyZSBtb2R1bGVgIHRlY2huaXF1ZSByZXN1bHRzIGluIGFkZGluZyBvdmVybG9hZHMsIG5vdCBvdmVycmlkaW5nIHRoZSBleGlzdGluZyBmdW5jdGlvbnMuXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCB7XG4gIHR5cGUgT3B0aW9ucyxcbiAgdHlwZSBQYXJzZXIsXG4gIHVzZVF1ZXJ5U3RhdGUgYXMgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVSZXR1cm4sXG4gIHVzZVF1ZXJ5U3RhdGVzIGFzIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzUmV0dXJuLFxufSBmcm9tIFwibnVxc1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5leHBvcnQgKiBmcm9tIFwibnVxc1wiO1xuXG5leHBvcnQgdHlwZSBTdGF0ZUtleSA9IFwicGFnZUluZGV4XCIgfCBcInBhZ2VTaXplXCIgfCBcInRhYmxlXCIgfCBcInNvcnRcIiB8IFwic2NoZW1hXCIgfCBcInRlc3RcIiB8IFwiZmlsdGVyXCI7XG5cbi8vIGxpZnRlZCBmcm9tIEBwcmlzbWEvY2xpZW50L3J1bnRpbWVcbnR5cGUgRXhhY3Q8QSwgVz4gPVxuICB8IChBIGV4dGVuZHMgdW5rbm93blxuICAgICAgPyBXIGV4dGVuZHMgQVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIFtLIGluIGtleW9mIEFdOiBFeGFjdDxBW0tdLCBXW0tdPjtcbiAgICAgICAgICB9XG4gICAgICAgIDogV1xuICAgICAgOiBuZXZlcilcbiAgfCAoQSBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB8IGJvb2xlYW4gfCBbXSA/IEEgOiBuZXZlcik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24ga2V5TWFwPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGtleU1hcDogRXhhY3Q8TWFwLCBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+LFxuKTogQnJhbmRlZEtleU1hcDxNYXA+IHtcbiAgcmV0dXJuIGtleU1hcCBhcyBuZXZlcjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1cmxLZXlzPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHVybEtleXM6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIHN0cmluZz4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiB1cmxLZXlzIGFzIG5ldmVyO1xufVxuXG5jb25zdCBfQlJBTkRfU1lNQk9MID0gU3ltYm9sKFwiQlJBTkRfU1lNQk9MXCIpO1xuXG50eXBlIEJyYW5kZWRLZXlNYXA8TWFwPiA9IE1hcCAmIHtcbiAgW0sgaW4gdHlwZW9mIF9CUkFORF9TWU1CT0xdOiBuZXZlcjtcbn07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4gJiB7XG4gICAgZGVmYXVsdFZhbHVlOiBUO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIG9wdGlvbnMucGFyc2U+PiwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogUGljazxVc2VRdWVyeVN0YXRlT3B0aW9uczxzdHJpbmc+LCBrZXlvZiBPcHRpb25zPixcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoa2V5OiBTdGF0ZUtleSk6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXksIG9wdGlvbnM/OiBhbnkpOiBhbnkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICByZXR1cm4gdXNlUXVlcnlTdGF0ZU9yaWdpbmFsKGtleSwgb3B0aW9ucyk7XG59XG5cbnR5cGUgVXNlUXVlcnlTdGF0ZXNLZXlzTWFwPFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4gPSBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4sXG4+ID0ge1xuICBbS2V5IGluIGtleW9mIE1hcF06IEtleU1hcFZhbHVlPE1hcFtLZXldPjtcbn07XG5cbnR5cGUgS2V5TWFwVmFsdWU8VHlwZT4gPSBQYXJzZXI8VHlwZT4gJlxuICBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZT86IFR5cGU7XG4gIH07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGVzPEtleU1hcCBleHRlbmRzIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcD4oXG4gIGtleU1hcDogQnJhbmRlZEtleU1hcDxLZXlNYXA+LFxuICBvcHRpb25zPzogUGFydGlhbDxVc2VRdWVyeVN0YXRlc09wdGlvbnM8S2V5TWFwPj4sXG4pOiBVc2VRdWVyeVN0YXRlc1JldHVybjxLZXlNYXA+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwoa2V5TWFwIGFzIG5ldmVyLCBvcHRpb25zKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG4vKipcbiAqIEhvb2sgdG8ga25vdyB3aGV0aGVyIGFuIGluc2VydCBpcyBjdXJyZW50bHkgb25nb2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzSW5zZXJ0aW5nKCkge1xuICByZXR1cm4gdXNlSXNNdXRhdGluZyh7XG4gICAgcHJlZGljYXRlKHsgb3B0aW9uczogeyBtdXRhdGlvbktleSB9IH0pIHtcbiAgICAgIHJldHVybiBtdXRhdGlvbktleT8uWzRdID09PSBcImluc2VydFwiO1xuICAgIH0sXG4gIH0pO1xufVxuIiwgImltcG9ydCB0eXBlIHsgT25DaGFuZ2VGbiwgUGFnaW5hdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsga2V5TWFwLCBwYXJzZUFzSW5kZXgsIHBhcnNlQXNJbnRlZ2VyLCB1c2VRdWVyeVN0YXRlcyB9IGZyb20gXCIuL251cXNcIjtcblxuLy8gVE9ETzogZXZlbnR1YWxseSBjb25maWd1cmFibGUgLyBjb250cm9sbGVkIGJ5IHVzZXIuIGJhYnkgc3RlcHMuLlxuY29uc3QgREVGQVVMVF9QQUdFX1NJWkUgPSAyNTtcblxuY29uc3QgcGFnaW5hdGlvblBhcnNlcnMgPSBrZXlNYXAoe1xuICBwYWdlSW5kZXg6IHBhcnNlQXNJbmRleC53aXRoRGVmYXVsdCgwKSwgLy8gemVyby1iYXNlZFxuICBwYWdlU2l6ZTogcGFyc2VBc0ludGVnZXIud2l0aERlZmF1bHQoREVGQVVMVF9QQUdFX1NJWkUpLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQYWdpbmF0aW9uKCkge1xuICBjb25zdCBbeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH0sIHNldFBhZ2luYXRpb25dID0gdXNlUXVlcnlTdGF0ZXMocGFnaW5hdGlvblBhcnNlcnMpO1xuXG4gIC8vIENvbXBhdGlibGUgd2l0aCBUYW5TdGFjayBUYWJsZSdzIE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPlxuICBjb25zdCBzZXRQYWdpbmF0aW9uU3RhdGU6IE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPiA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVyT3JWYWx1ZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHZvaWQgc2V0UGFnaW5hdGlvbigob2xkKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB1cGRhdGVyT3JWYWx1ZShvbGQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IG5ld1N0YXRlLnBhZ2VJbmRleCxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBuZXdTdGF0ZS5wYWdlU2l6ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZvaWQgc2V0UGFnaW5hdGlvbih7XG4gICAgICAgICAgcGFnZUluZGV4OiB1cGRhdGVyT3JWYWx1ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgcGFnZVNpemU6IHVwZGF0ZXJPclZhbHVlLnBhZ2VTaXplLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXRQYWdpbmF0aW9uXSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIHBhZ2luYXRpb25TdGF0ZTogeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH0sXG4gICAgc2V0UGFnaW5hdGlvblN0YXRlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlRGVsZXRlIH0gZnJvbSBcIi4vdXNlLWFjdGl2ZS10YWJsZS1kZWxldGVcIjtcbmltcG9ydCB7IHVzZVBhZ2luYXRpb24gfSBmcm9tIFwiLi91c2UtcGFnaW5hdGlvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0aW9uKGRhdGE6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBwYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3Jvd1NlbGVjdGlvblN0YXRlLCBzZXRSb3dTZWxlY3Rpb25TdGF0ZV0gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pO1xuICBjb25zdCBpc1NlbGVjdGluZyA9IE9iamVjdC5rZXlzKHJvd1NlbGVjdGlvblN0YXRlKS5sZW5ndGggIT09IDA7XG4gIGNvbnN0IHsgbXV0YXRlIH0gPSB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRSb3dTZWxlY3Rpb25TdGF0ZSh7fSksIFthY3RpdmVUYWJsZSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VJbmRleF0pO1xuXG4gIGZ1bmN0aW9uIGRlbGV0ZVNlbGVjdGlvbigpIHtcbiAgICBjb25zdCByb3dzID0gZGF0YT8ucm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgcmV0dXJuIHJvd1NlbGVjdGlvblN0YXRlW3Jvdy5fX3BzX3Jvd2lkIGFzIHN0cmluZ107XG4gICAgfSk7XG5cbiAgICBtdXRhdGUocm93cyA/PyBbXSwge1xuICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICBzZXRSb3dTZWxlY3Rpb25TdGF0ZSh7fSk7XG4gICAgICB9LFxuICAgICAgb25FcnJvcixcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVsZXRlU2VsZWN0aW9uLFxuICAgIHNldFJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIGlzU2VsZWN0aW5nLFxuICB9O1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5S2V5LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVEZWxldGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIGNvbnN0IHsgc2NoZW1hID0gbnVsbCwgbmFtZTogdGFibGUgPSBudWxsIH0gPSBhY3RpdmVUYWJsZSA/PyB7fTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uS2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcImRlbGV0ZVwiXSxcbiAgICBhc3luYyBtdXRhdGlvbkZuKHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIuZGVsZXRlKHsgcm93cywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LCB7fSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIGFzeW5jIG9uU3VjY2VzcygpIHtcbiAgICAgIGF3YWl0IHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHtcbiAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTb3J0aW5nKCkge1xuICAvLyBVc2UgbnVxcyB0byBtYW5hZ2Ugc29ydGluZyBzdGF0ZSBpbiBVUkxcbiAgY29uc3QgW3NvcnRQYXJhbSwgc2V0U29ydFBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJzb3J0XCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IFwiXCIsXG4gIH0pO1xuXG4gIC8vIFBhcnNlIHNvcnRpbmcgZnJvbSBVUkwgcGFyYW1ldGVyXG4gIGNvbnN0IHBhcnNlU29ydGluZyA9IChzb3J0UGFyYW06IHN0cmluZyB8IG51bGwpOiBTb3J0T3JkZXJJdGVtW10gPT4ge1xuICAgIGlmICghc29ydFBhcmFtKSByZXR1cm4gW107XG5cbiAgICB0cnkge1xuICAgICAgLy8gRm9ybWF0OiBjb2x1bW46ZGlyZWN0aW9uLGNvbHVtbjpkaXJlY3Rpb25cbiAgICAgIHJldHVybiBzb3J0UGFyYW1cbiAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgW2NvbHVtbiwgZGlyZWN0aW9uXSA9IGl0ZW0uc3BsaXQoXCI6XCIpO1xuICAgICAgICAgIGlmICghY29sdW1uIHx8ICFkaXJlY3Rpb24gfHwgIVtcImFzY1wiLCBcImRlc2NcIl0uaW5jbHVkZXMoZGlyZWN0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IGNvbHVtbiwgZGlyZWN0aW9uOiBkaXJlY3Rpb24gYXMgXCJhc2NcIiB8IFwiZGVzY1wiIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgU29ydE9yZGVySXRlbVtdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcGFyc2Ugc29ydGluZyBwYXJhbWV0ZXI6XCIsIGUpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfTtcblxuICAvLyBDcmVhdGUgYSBzdGFibGUgc29ydGluZyBzdGF0ZSB0aGF0J3MgZGVyaXZlZCBmcm9tIFVSTCBwYXJhbWV0ZXJzXG4gIGNvbnN0IFtzb3J0aW5nU3RhdGUsIHNldFNvcnRpbmdTdGF0ZV0gPSB1c2VTdGF0ZSgoKSA9PiBwYXJzZVNvcnRpbmcoc29ydFBhcmFtKSk7XG5cbiAgLy8gS2VlcCBpbnRlcm5hbCBzdGF0ZSBzeW5jaHJvbml6ZWQgd2l0aCBVUkwgcGFyYW1ldGVyc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5ld1NvcnRpbmdTdGF0ZSA9IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pO1xuICAgIHNldFNvcnRpbmdTdGF0ZShuZXdTb3J0aW5nU3RhdGUpO1xuICB9LCBbc29ydFBhcmFtXSk7XG5cbiAgLy8gVXBkYXRlIFVSTCB3aGVuIHNvcnRpbmcgY2hhbmdlcyBmcm9tIHRoZSBVSVxuICBjb25zdCBoYW5kbGVTb3J0aW5nQ2hhbmdlID0gKG5ld1N0YXRlOiBTb3J0T3JkZXJJdGVtW10gfCAoKG9sZDogU29ydE9yZGVySXRlbVtdKSA9PiBTb3J0T3JkZXJJdGVtW10pKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9IHR5cGVvZiBuZXdTdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gbmV3U3RhdGUoc29ydGluZ1N0YXRlKSA6IG5ld1N0YXRlO1xuICAgIHNldFNvcnRpbmdTdGF0ZShyZXNvbHZlZFN0YXRlKTtcblxuICAgIC8vIFNlcmlhbGl6ZSBzb3J0aW5nIHN0YXRlIHRvIFVSTCBwYXJhbWV0ZXJcbiAgICBjb25zdCBzb3J0U3RyaW5nID1cbiAgICAgIHJlc29sdmVkU3RhdGUubGVuZ3RoID4gMCA/IHJlc29sdmVkU3RhdGUubWFwKChpdGVtKSA9PiBgJHtpdGVtLmNvbHVtbn06JHtpdGVtLmRpcmVjdGlvbn1gKS5qb2luKFwiLFwiKSA6IG51bGw7XG5cbiAgICB2b2lkIHNldFNvcnRQYXJhbShzb3J0U3RyaW5nKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNvcnRpbmdTdGF0ZSxcbiAgICBzZXRTb3J0aW5nU3RhdGU6IGhhbmRsZVNvcnRpbmdDaGFuZ2UsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgQ29weSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IGlzVmFsaWRFbGVtZW50LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0TWVudSwgQ29udGV4dE1lbnVDb250ZW50LCBDb250ZXh0TWVudUl0ZW0sIENvbnRleHRNZW51VHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudVwiO1xuXG5leHBvcnQgdHlwZSBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48b2JqZWN0PjtcblxuLy8gVE9ETzogVGhpcyBuZWVkcyB0byBiZSBpbnZlcnNpZmllZCAtIHRvIG1ha2UgaXQgZXh0ZW5zaWJsZSwgYW5kIGFkYXB0YWJsZSB0byBkaWZmZXJlbnQgc2l0dWF0aW9ucy5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZENlbGxDb250ZXh0TWVudShwcm9wczogRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0TWVudT5cbiAgICAgIDxDb250ZXh0TWVudVRyaWdnZXIgY2xhc3NOYW1lPVwicHMtYmxvY2sgcHMtdy1mdWxsIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV0gcHMtbGVhZGluZy1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtdGV4dC14cyBwcy1mb250LW1vbm8gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250ZXh0TWVudVRyaWdnZXI+XG4gICAgICA8Q29udGV4dE1lbnVDb250ZW50PlxuICAgICAgICA8Q29udGV4dE1lbnVJdGVtXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGV4dHJhY3RUZXh0Q29udGVudChjaGlsZHJlbik7XG4gICAgICAgICAgICB2b2lkIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnRlbnQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHkgdG8gY2xpcGJvYXJkOlwiLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxDb3B5IHNpemU9ezEyfSAvPlxuICAgICAgICAgIENvcHlcbiAgICAgICAgPC9Db250ZXh0TWVudUl0ZW0+XG4gICAgICA8L0NvbnRleHRNZW51Q29udGVudD5cbiAgICA8L0NvbnRleHRNZW51PlxuICApO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VGV4dENvbnRlbnQobm9kZTogUmVhY3ROb2RlKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBub2RlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBub2RlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBub2RlID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiBTdHJpbmcobm9kZSk7XG4gIH1cblxuICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChpc1ZhbGlkRWxlbWVudChub2RlKSkge1xuICAgIGNvbnN0IHByb3BzID0gbm9kZS5wcm9wcyBhcyB7IHRleHQ/OiBzdHJpbmc7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH07XG5cbiAgICAvLyBIYW5kbGUgUmV2ZWFsVGV4dCBjb21wb25lbnQgc3BlY2lmaWNhbGx5XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiUmV2ZWFsVGV4dFwiKSB7XG4gICAgICByZXR1cm4gcHJvcHMudGV4dCB8fCBcIlwiO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBOdWxsVmFsdWUgY29tcG9uZW50XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiTnVsbFZhbHVlXCIpIHtcbiAgICAgIHJldHVybiBcIk5VTExcIjtcbiAgICB9XG5cbiAgICAvLyBSZWN1cnNpdmVseSBleHRyYWN0IHRleHQgZnJvbSBjaGlsZHJlblxuICAgIGlmIChwcm9wcy5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGV4dHJhY3RUZXh0Q29udGVudChwcm9wcy5jaGlsZHJlbiBhcyBSZWFjdE5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5tYXAoZXh0cmFjdFRleHRDb250ZW50KS5qb2luKFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG4iLCAiaW1wb3J0ICogYXMgQ29udGV4dE1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0LW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDb250ZXh0TWVudSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IENvbnRleHRNZW51VHJpZ2dlciA9IENvbnRleHRNZW51UHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IENvbnRleHRNZW51R3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgQ29udGV4dE1lbnVQb3J0YWwgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvR3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YlRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0byBwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Db250ZXh0TWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVN1YkNvbnRlbnQuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcbkNvbnRleHRNZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Db250ZXh0TWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaXJjbGUgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1maWxsLWN1cnJlbnRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Db250ZXh0TWVudVJhZGlvSXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkIHBzLXRleHQtZm9yZWdyb3VuZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51TGFiZWwuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctYm9yZGVyXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTaG9ydGN1dCA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICk7XG59O1xuQ29udGV4dE1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiQ29udGV4dE1lbnVTaG9ydGN1dFwiO1xuXG5leHBvcnQge1xuICBDb250ZXh0TWVudSxcbiAgQ29udGV4dE1lbnVUcmlnZ2VyLFxuICBDb250ZXh0TWVudUNvbnRlbnQsXG4gIENvbnRleHRNZW51SXRlbSxcbiAgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0sXG4gIENvbnRleHRNZW51UmFkaW9JdGVtLFxuICBDb250ZXh0TWVudUxhYmVsLFxuICBDb250ZXh0TWVudVNlcGFyYXRvcixcbiAgQ29udGV4dE1lbnVTaG9ydGN1dCxcbiAgQ29udGV4dE1lbnVHcm91cCxcbiAgQ29udGV4dE1lbnVQb3J0YWwsXG4gIENvbnRleHRNZW51U3ViLFxuICBDb250ZXh0TWVudVN1YkNvbnRlbnQsXG4gIENvbnRleHRNZW51U3ViVHJpZ2dlcixcbiAgQ29udGV4dE1lbnVSYWRpb0dyb3VwLFxufTtcbiIsICJpbXBvcnQgeyB0eXBlIENTU1Byb3BlcnRpZXMsIERldGFpbGVkSFRNTFByb3BzLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlQ2VsbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IERhdGFHcmlkQ2VsbENvbnRleHRNZW51IH0gZnJvbSBcIi4uL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDZWxsUHJvcHMgZXh0ZW5kcyBQcm9wc1dpdGhDaGlsZHJlbiwgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8dW5rbm93bj4sIHVua25vd24+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDZWxsKHByb3BzOiBDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCByZWYsIHN0eWxlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVDZWxsXG4gICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXAtMCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICAgIC8vIFRPRE86IEtlZXBpbmcgdGhpcyB0ZW1wb3JhcmlseTsgbWlnaHQgbmVlZCBpdCBsYXRlciBkZXBlbmRpbmcgb24gaW5wdXQgdHlwZXNcbiAgICAgICAgLy8gXCJkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLTIgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbmRpZ28tNDAwIGRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctaW5zZXRcIixcbiAgICAgICAgXCJwcy1jdXJzb3ItcG9pbnRlclwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcmVmPXtyZWYgYXMgbmV2ZXJ9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgPlxuICAgICAgPERhdGFHcmlkQ2VsbENvbnRleHRNZW51PntjaGlsZHJlbn08L0RhdGFHcmlkQ2VsbENvbnRleHRNZW51PlxuICAgIDwvVGFibGVDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbkNlbGwgfSBmcm9tIFwiLi9Cb29sZWFuQ2VsbFwiO1xuaW1wb3J0IHsgRGF0ZUNlbGwgfSBmcm9tIFwiLi9EYXRlQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vRW1wdHlDZWxsXCI7XG5pbXBvcnQgeyBFbnVtQ2VsbCB9IGZyb20gXCIuL0VudW1DZWxsXCI7XG5pbXBvcnQgeyBKU09OQ2VsbCB9IGZyb20gXCIuL0pTT05DZWxsXCI7XG5pbXBvcnQgeyBOdWxsQ2VsbCB9IGZyb20gXCIuL051bGxDZWxsXCI7XG5pbXBvcnQgeyBOdW1lcmljQ2VsbCB9IGZyb20gXCIuL051bWVyaWNDZWxsXCI7XG5pbXBvcnQgeyBSYXdDZWxsIH0gZnJvbSBcIi4vUmF3Q2VsbFwiO1xuaW1wb3J0IHsgVGltZUNlbGwgfSBmcm9tIFwiLi9UaW1lQ2VsbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2VsbCh7IGNlbGwsIGNvbHVtbiB9OiB7IGNlbGw6IENlbGw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+OyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIGNvbnN0IHZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDxFbXB0eUNlbGwgLz47XG4gIH1cblxuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gPE51bGxDZWxsIC8+O1xuICB9XG5cbiAgY29uc3QgeyBncm91cCwgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SlNPTkNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiA8UmF3Q2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImVudW1cIikge1xuICAgIHJldHVybiA8RW51bUNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5DZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIHJldHVybiA8RGF0ZUNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJ0aW1lXCIpIHtcbiAgICByZXR1cm4gPFRpbWVDZWxsIHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljQ2VsbCB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInJhd1wiKSB7XG4gICAgaWYgKGlzT2JqZWN0VHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiA8SlNPTkNlbGwgdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gPFJhd0NlbGwgdmFsdWU9e3ZhbHVlfSAvPjtcbiAgfVxuXG4gIGdyb3VwIHNhdGlzZmllcyBuZXZlcjtcbiAgdGhyb3cgbmV3IEVycm9yKGBEYXRhdHlwZSBncm91cCBcIiR7Z3JvdXAgYXMgc3RyaW5nfVwiIHdhcyBub3QgaGFuZGxlZCBpbiAnL2NlbGwvZ2V0LWNlbGwudHN4J2ApO1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbkNlbGxQcm9wcyB7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5jb25zdCBCb29sZWFuQ2VsbCA9IChwcm9wczogQm9vbGVhbkNlbGxQcm9wcykgPT4ge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPGRpdiBkYXRhLWNlbGwtdHlwZT1cImJvb2xlYW5cIj57U3RyaW5nKEJvb2xlYW4odmFsdWUpKX08L2Rpdj47XG59O1xuQm9vbGVhbkNlbGwuZGlzcGxheU5hbWUgPSBcIkJvb2xlYW5DZWxsXCI7XG5cbmV4cG9ydCB7IEJvb2xlYW5DZWxsIH07XG4iLCAiZXhwb3J0IGludGVyZmFjZSBEYXRlQ2VsbFByb3BzIHtcbiAgdmFsdWU6IHN0cmluZyB8IERhdGUgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlQ2VsbChwcm9wczogRGF0ZUNlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPD57U3RyaW5nKHZhbHVlKX08Lz47XG59XG4iLCAiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBFbXB0eUNlbGxQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gRW1wdHlDZWxsKF9wcm9wczogRW1wdHlDZWxsUHJvcHMpIHtcbiAgcmV0dXJuIDw+PC8+O1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgRW51bUNlbGxQcm9wcyB7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRW51bUNlbGwocHJvcHM6IEVudW1DZWxsUHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDw+e1N0cmluZyh2YWx1ZSl9PC8+O1xufVxuIiwgImV4cG9ydCBpbnRlcmZhY2UgSlNPTkNlbGxQcm9wcyB7XG4gIHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVua25vd25bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEpTT05DZWxsKHByb3BzOiBKU09OQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8PntKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMil9PC8+O1xufVxuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgTnVsbENlbGxQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gTnVsbENlbGwoX3Byb3BzOiBOdWxsQ2VsbFByb3BzKSB7XG4gIHJldHVybiA8Y29kZSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNjBcIj5OVUxMPC9jb2RlPjtcbn1cbiIsICJleHBvcnQgaW50ZXJmYWNlIE51bWVyaWNDZWxsUHJvcHMge1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE51bWVyaWNDZWxsKHByb3BzOiBOdW1lcmljQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUgfSA9IHByb3BzO1xuXG4gIHJldHVybiA8ZGl2IGRhdGEtY2VsbC10eXBlPVwibnVtZXJpY1wiPnt2YWx1ZSA9PT0gbnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKHZhbHVlKX08L2Rpdj47XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBSYXdDZWxsUHJvcHMge1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJhd0NlbGwocHJvcHM6IFJhd0NlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPD57U3RyaW5nKHZhbHVlKX08Lz47XG59XG4iLCAiZXhwb3J0IGludGVyZmFjZSBUaW1lQ2VsbFByb3BzIHtcbiAgdmFsdWU6IHN0cmluZyB8IERhdGUgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lQ2VsbChwcm9wczogVGltZUNlbGxQcm9wcykge1xuICBjb25zdCB7IHZhbHVlIH0gPSBwcm9wcztcblxuICByZXR1cm4gPD57U3RyaW5nKHZhbHVlKX08Lz47XG59XG4iLCAiaW1wb3J0ICogYXMgQ2hlY2tib3hQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jaGVja2JveFwiO1xuaW1wb3J0IHsgQ2hlY2sgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3ggPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q2hlY2tib3hQcmltaXRpdmUuUm9vdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXBlZXIgcHMtaC00IHBzLXctNCBwcy1zaHJpbmstMCBwcy1yb3VuZGVkLXNtIHBzLWJvcmRlciBwcy1ib3JkZXItcHJpbWFyeSBwcy1zaGFkb3cgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvciBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtdGV4dC1jdXJyZW50XCIpfT5cbiAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICA8L0NoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvcj5cbiAgPC9DaGVja2JveFByaW1pdGl2ZS5Sb290PlxuKSk7XG5DaGVja2JveC5kaXNwbGF5TmFtZSA9IENoZWNrYm94UHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IENoZWNrYm94IH07XG4iLCAiaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEhlYWRlckNlbGxQcm9wcyB7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0SGVhZGVyQ2VsbChwcm9wczogU2VsZWN0SGVhZGVyQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDaGVja2JveFxuICAgICAgY2hlY2tlZD17dGFibGUuZ2V0SXNBbGxSb3dzU2VsZWN0ZWQoKX1cbiAgICAgIG9uQ2hlY2tlZENoYW5nZT17KHZhbHVlKSA9PiB0YWJsZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQoISF2YWx1ZSl9XG4gICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgLz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBSb3cgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdFJvd0NlbGxQcm9wcyB7XG4gIHJvdzogUm93PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3RSb3dDZWxsKHByb3BzOiBTZWxlY3RSb3dDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyByb3csIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDaGVja2JveFxuICAgICAgY2hlY2tlZD17cm93LmdldElzU2VsZWN0ZWQoKX1cbiAgICAgIGRpc2FibGVkPXshcm93LmdldENhblNlbGVjdCgpIHx8IHJlYWRvbmx5fVxuICAgICAgb25DaGVja2VkQ2hhbmdlPXtyb3cuZ2V0VG9nZ2xlU2VsZWN0ZWRIYW5kbGVyKCl9XG4gICAgLz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBQb3BvdmVyUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wb3ZlclwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIHNldE9wZW46IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFBvcG92ZXJDZWxsQ29udGV4dFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbmNvbnN0IFBvcG92ZXJDZWxsID0gKHsgY2hpbGRyZW4sIC4uLnByb3BzIH06IFBvcG92ZXJQcmltaXRpdmUuUG9wb3ZlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICByZXR1cm4gKFxuICAgIDxQb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgb3Blbiwgc2V0T3BlbiB9fT5cbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlJvb3Qgb3Blbj17b3Blbn0gb25PcGVuQ2hhbmdlPXtzZXRPcGVufSB7Li4ucHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuUm9vdD5cbiAgICA8L1BvcG92ZXJDZWxsQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5Qb3BvdmVyQ2VsbC5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxcIjtcblxuaW50ZXJmYWNlIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+IHtcbiAgb25Eb3VibGVDbGljaz86ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcG92ZXJDZWxsVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8UmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiwgUG9wb3ZlckNlbGxUcmlnZ2VyUHJvcHM+KFxuICAoeyBjaGlsZHJlbiwgb25Eb3VibGVDbGljaywgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICAvLyBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuICAgIC8vIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG5cbiAgICAvLyBUT0RPOiBLZWVwaW5nIHRoaXMgdGVtcG9yYXJpbHk7IG1pZ2h0IG5lZWQgaXQgbGF0ZXIgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVzXG4gICAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IGhhbmRsZURvY3VtZW50Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIC8vICAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAvLyAgICAgaWYgKHRyaWdnZXJSZWYuY3VycmVudCAmJiAhdHJpZ2dlclJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAvLyAgICAgICAvLyBjb25zb2xlLmxvZyhcIk91dHNpZGUgY2xpY2sgLSByZW1vdmluZyBmb2N1c1wiKTtcbiAgICAvLyAgICAgICBzZXRJc0ZvY3VzZWQoZmFsc2UpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9O1xuXG4gICAgLy8gICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gICAgLy8gICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vIH0sIFtdKTtcblxuICAgIC8vIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyAgIHNldElzRm9jdXNlZCh0cnVlKTtcbiAgICAvLyAgIGNvbnRleHQ/LnNldE9wZW4odHJ1ZSk7XG5cbiAgICAvLyAgIGlmIChlLmRldGFpbCA9PT0gMiAmJiBvbkRvdWJsZUNsaWNrKSB7XG4gICAgLy8gICAgIG9uRG91YmxlQ2xpY2soKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXJcbiAgICAgICAgcmVmPXsobm9kZSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVmID09PSBcImZ1bmN0aW9uXCIpIHJlZihub2RlKTtcbiAgICAgICAgICBlbHNlIGlmIChyZWYpIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gbmVlZHMgdG8gYmUgaW52ZXN0aWdhdGVkXG4gICAgICAgICAgdHJpZ2dlclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfX1cbiAgICAgICAgLy8gb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIC8vIGRhdGEtZm9jdXM9e2lzRm9jdXNlZC50b1N0cmluZygpfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFwidy1mdWxsIGgtZnVsbCBjdXJzb3ItcG9pbnRlclwiLCBjbGFzc05hbWUpfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPlxuICAgICk7XG4gIH0sXG4pO1xuUG9wb3ZlckNlbGxUcmlnZ2VyLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFRyaWdnZXJcIjtcblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgYWxpZ24gPSBcImNlbnRlclwiLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxQb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8UG9wb3ZlclByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGFsaWduPXthbGlnbn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTIgcHMtei01MCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06YW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpmYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICAvLyB3ZSBhcmUgaGFuZGxpbmcgdGhpcyBvdXJzZWx2ZXMsIGRvIG5vdCBsZXQgcmFkaXggdGFrZSBvdmVyXG4gICAgICBvbkVzY2FwZUtleURvd249eyhldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ2VsbENvbnRlbnQuZGlzcGxheU5hbWUgPSBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3BvdmVyQWN0aW9ucyhhY3Rpb25zOiB7XG4gIG9uU2F2ZT86ICgpID0+IGJvb2xlYW4gfCB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChQb3BvdmVyQ2VsbENvbnRleHQpO1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFjdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnRleHQ/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9ucy5vblNhdmUpIHtcbiAgICAgIGFjdGlvbnMub25TYXZlKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25TYXZlLCBjb250ZXh0XSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25DYW5jZWwpIHtcbiAgICAgIGFjdGlvbnMub25DYW5jZWwoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBbYWN0aW9ucy5vbkNhbmNlbCwgY29udGV4dF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgZW50ZXIgaXMgcHJlc3NlZCBhbmQgcHJlc3NlZCB3aXRob3V0IHNoaWZ0XG4gICAgICBpZiAoKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCJSZXR1cm5cIikgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGhhbmRsZVNhdmUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgfSwgW2hhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbF0pO1xuXG4gIHJldHVybiB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9O1xufVxuXG5leHBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxUcmlnZ2VyLCBQb3BvdmVyQ2VsbENvbnRlbnQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBQb3BvdmVyQ2VsbCwgUG9wb3ZlckNlbGxDb250ZW50LCBQb3BvdmVyQ2VsbFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2VsbCwgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlYWJsZUNlbGxQcm9wcyB7XG4gIGNlbGxDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgaW5wdXRDb21wb25lbnQ6IFJlYWN0Tm9kZTtcbiAgbGlua0NvbXBvbmVudDogUmVhY3ROb2RlO1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFdyaXRlYWJsZUNlbGwocHJvcHM6IFdyaXRlYWJsZUNlbGxQcm9wcykge1xuICBjb25zdCB7IGNlbGxDb21wb25lbnQsIGlucHV0Q29tcG9uZW50LCBsaW5rQ29tcG9uZW50LCBjb250YWluZXJQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGw+XG4gICAgICA8UG9wb3ZlckNlbGxUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgIDxDZWxsIHsuLi5jb250YWluZXJQcm9wc30+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLXctZnVsbCBwcy1nYXAtMiBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2PntjZWxsQ29tcG9uZW50fTwvZGl2PlxuICAgICAgICAgICAge2xpbmtDb21wb25lbnR9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQ2VsbD5cbiAgICAgIDwvUG9wb3ZlckNlbGxUcmlnZ2VyPlxuICAgICAgPFBvcG92ZXJDZWxsQ29udGVudFxuICAgICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICAgICAgYWxpZ25PZmZzZXQ9ey0xfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcm91bmRlZC1ub25lIHBzLWJnLW11dGVkXCIsXG4gICAgICAgICAgXCJwcy1wLTAgcHMtei0zMCBwcy1nYXAtMCBwcy1ib3JkZXItcHJpbWFyeVwiLFxuICAgICAgICAgIFwicHMtdy1bY2FsYyh2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXytfMXB4KV0gcHMtbWF4LXctNzIgcHMtbWluLXctbWF4XCIsXG4gICAgICAgICl9XG4gICAgICAgIHNpZGVPZmZzZXQ9ey00MH1cbiAgICAgID5cbiAgICAgICAge2lucHV0Q29tcG9uZW50fVxuICAgICAgPC9Qb3BvdmVyQ2VsbENvbnRlbnQ+XG4gICAgPC9Qb3BvdmVyQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQge1xuICBjbG9zZXN0Q2VudGVyLFxuICBEbmRDb250ZXh0LFxuICB0eXBlIERyYWdFbmRFdmVudCxcbiAgRHJhZ092ZXJsYXksXG4gIHR5cGUgRHJhZ1N0YXJ0RXZlbnQsXG4gIEtleWJvYXJkU2Vuc29yLFxuICBQb2ludGVyU2Vuc29yLFxuICB0eXBlIFVuaXF1ZUlkZW50aWZpZXIsXG4gIHVzZVNlbnNvcixcbiAgdXNlU2Vuc29ycyxcbn0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7XG4gIGFycmF5TW92ZSxcbiAgU29ydGFibGVDb250ZXh0LFxuICBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMsXG4gIHVzZVNvcnRhYmxlLFxuICB2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3ksXG59IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgQ2hldnJvbkRvd24sIENoZXZyb25SaWdodCwgR3JpcFZlcnRpY2FsLCBIZWxwQ2lyY2xlLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZU51bWJlciB9IGZyb20gXCJtb3Rpb24tcGx1cy9yZWFjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uRmlsdGVyLCBGaWx0ZXJHcm91cCwgRmlsdGVyT3BlcmF0b3IsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBjb2VyY2VUb1N0cmluZywgY29lcmNlVG9WYWx1ZSB9IGZyb20gXCIuLi8uLi9saWIvY29udmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IERyb3Bkb3duTWVudSwgRHJvcGRvd25NZW51Q29udGVudCwgRHJvcGRvd25NZW51VHJpZ2dlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG5jb25zdCBMZWFkaW5nT3BlcmF0b3JTZWxlY3QgPSAoe1xuICB2YWx1ZSxcbiAgb25WYWx1ZUNoYW5nZSxcbiAgZGlzYWJsZWQsXG4gIHRyaWdnZXJDbGFzc05hbWUgPSBcInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIixcbn06IHtcbiAgdmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvblZhbHVlQ2hhbmdlOiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdHJpZ2dlckNsYXNzTmFtZT86IHN0cmluZztcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0IHZhbHVlPXt2YWx1ZX0gb25WYWx1ZUNoYW5nZT17b25WYWx1ZUNoYW5nZX0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT17dHJpZ2dlckNsYXNzTmFtZX0+XG4gICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIkxvZ2ljXCIgLz5cbiAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImFuZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPkFORDwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwib3JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5PUjwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgPC9TZWxlY3Q+XG4gICk7XG59O1xuXG4vLyBSZW5kZXJzIHRoZSBwcmV2aWV3IG9mIHRoZSBpdGVtIGJlaW5nIGRyYWdnZWQgaW4gdGhlIERyYWdPdmVybGF5LlxuY29uc3QgRHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgPSAoe1xuICBhY3RpdmVJZCxcbiAgaXRlbXMsXG4gIHRhYmxlLFxufToge1xuICBhY3RpdmVJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgdGFibGU6IFRhYmxlO1xufSkgPT4ge1xuICBjb25zdCBhY3RpdmVJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuICBpZiAoIWFjdGl2ZUl0ZW0pIHJldHVybiBudWxsO1xuXG4gIGxldCBsZWFkaW5nT3BlcmF0b3JWYWx1ZTogXCJhbmRcIiB8IFwib3JcIiA9IFwiYW5kXCI7IC8vIERlZmF1bHRcbiAgbGV0IHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gZmFsc2U7XG4gIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuXG4gIGlmIChhY3RpdmVJdGVtSW5kZXggPiAwKSB7XG4gICAgY29uc3QgcHJldmlvdXNJdGVtID0gaXRlbXNbYWN0aXZlSXRlbUluZGV4IC0gMV07XG4gICAgaWYgKHByZXZpb3VzSXRlbSkge1xuICAgICAgLy8gJ2FmdGVyJyBmcm9tIHRoZSBwcmV2aW91cyBpdGVtIGRldGVybWluZXMgdGhlIG9wZXJhdG9yIGxlYWRpbmcgaW50byB0aGUgY3VycmVudCBpdGVtXG4gICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSA9IHByZXZpb3VzSXRlbS5hZnRlcjtcbiAgICAgIHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoYWN0aXZlSXRlbS5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgZmlsdGVyPXthY3RpdmVJdGVtfVxuICAgICAgICBvblVwZGF0ZT17KCkgPT4ge319IC8vIE92ZXJsYXkgaXMgbm9uLWludGVyYWN0aXZlIGZvciB1cGRhdGVzXG4gICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIGRlbGV0ZXNcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319IC8vIE5vbi1pbnRlcmFjdGl2ZVxuICAgICAgLz5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgZ3JvdXA9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX1cbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fVxuICAgICAgICBpc1Jvb3Q9e2ZhbHNlfSAvLyBEcmFnZ2VkIGl0ZW0gaW4gb3ZlcmxheSBpcyBub3QgdGhlIHJvb3RcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319XG4gICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17ZmFsc2V9IC8vIE5vbi1pbnRlcmFjdGl2ZSBmb3IgcHJldmlld1xuICAgICAgLz5cbiAgICApO1xuICB9XG59O1xuXG4vLyBNYW5hZ2VzIERORCBjb250ZXh0IGFuZCByZW5kZXJpbmcgb2Ygc29ydGFibGUgZmlsdGVyIGl0ZW1zIGZvciBhIGdyb3VwLlxuY29uc3QgRmlsdGVyTGlzdEl0ZW1zID0gKHtcbiAgaXRlbXMsXG4gIHBhcmVudEdyb3VwSWQsXG4gIHRhYmxlLFxuICBvblVwZGF0ZUl0ZW0sXG4gIG9uRGVsZXRlSXRlbSxcbiAgb25SZW9yZGVySXRlbXMsXG4gIGFjdGl2ZURyYWdJZCxcbiAgb25EcmFnU3RhcnQsXG4gIG9uRHJhZ0VuZFNpZ25hbCxcbn06IHtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgcGFyZW50R3JvdXBJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBvblVwZGF0ZUl0ZW06IChpbmRleDogbnVtYmVyLCB1cGRhdGVkSXRlbTogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlSXRlbTogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uUmVvcmRlckl0ZW1zOiAob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgYWN0aXZlRHJhZ0lkOiBVbmlxdWVJZGVudGlmaWVyIHwgbnVsbDtcbiAgb25EcmFnU3RhcnQ6IChldmVudDogRHJhZ1N0YXJ0RXZlbnQpID0+IHZvaWQ7XG4gIG9uRHJhZ0VuZFNpZ25hbDogKCkgPT4gdm9pZDsgLy8gQ2FsbGJhY2sgdG8gc2lnbmFsIGRyYWcgb3BlcmF0aW9uIGNvbXBsZXRpb25cbn0pID0+IHtcbiAgY29uc3Qgc29ydGFibGVJdGVtSWRzID0gdXNlTWVtbygoKSA9PiBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQpLCBbaXRlbXNdKTtcbiAgY29uc3Qgc2Vuc29ycyA9IHVzZVNlbnNvcnMoXG4gICAgdXNlU2Vuc29yKFBvaW50ZXJTZW5zb3IsIHsgYWN0aXZhdGlvbkNvbnN0cmFpbnQ6IHsgZGlzdGFuY2U6IDggfSB9KSxcbiAgICB1c2VTZW5zb3IoS2V5Ym9hcmRTZW5zb3IsIHsgY29vcmRpbmF0ZUdldHRlcjogc29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIH0pLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUludGVybmFsRHJhZ0VuZCA9IChldmVudDogRHJhZ0VuZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBhY3RpdmUsIG92ZXIgfSA9IGV2ZW50O1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgY29uc3Qgb2xkSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZS5pZCk7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3Zlci5pZCk7XG4gICAgICBpZiAob2xkSW5kZXggIT09IC0xICYmIG5ld0luZGV4ICE9PSAtMSkge1xuICAgICAgICBvblJlb3JkZXJJdGVtcyhvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICBvbkRyYWdFbmRTaWduYWwoKTsgLy8gU2lnbmFsIHRvIHBhcmVudCB0aGF0IGRyYWcgaGFzIGVuZGVkIChlLmcuLCB0byBjbGVhciBhY3RpdmVEcmFnSWQpXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RG5kQ29udGV4dFxuICAgICAgc2Vuc29ycz17c2Vuc29yc31cbiAgICAgIGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn1cbiAgICAgIG9uRHJhZ1N0YXJ0PXtvbkRyYWdTdGFydH1cbiAgICAgIG9uRHJhZ0VuZD17aGFuZGxlSW50ZXJuYWxEcmFnRW5kfVxuICAgID5cbiAgICAgIDxTb3J0YWJsZUNvbnRleHQgaXRlbXM9e3NvcnRhYmxlSXRlbUlkc30gc3RyYXRlZ3k9e3ZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX0+XG4gICAgICAgIHtpdGVtcy5tYXAoKGN1cnJlbnRGaWx0ZXJJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzaG93TGVhZGluZ09wID0gZmFsc2U7XG4gICAgICAgICAgbGV0IGxlYWRpbmdPcFZhbDogXCJhbmRcIiB8IFwib3JcIiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgb25MZWFkaW5nT3BDaGFuZ2VGbjogKCh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgc2hvd0xlYWRpbmdPcCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBwcmV2SXRlbSA9IGl0ZW1zW2luZGV4IC0gMV0hO1xuICAgICAgICAgICAgbGVhZGluZ09wVmFsID0gcHJldkl0ZW0uYWZ0ZXI7XG4gICAgICAgICAgICBvbkxlYWRpbmdPcENoYW5nZUZuID0gKG5ld1ZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRQcmV2SXRlbSA9IHsgLi4ucHJldkl0ZW0sIGFmdGVyOiBuZXdWYWx1ZSB9O1xuICAgICAgICAgICAgICBvblVwZGF0ZUl0ZW0oaW5kZXggLSAxLCB1cGRhdGVkUHJldkl0ZW0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGluZGV4IC0gMSA9PT0gaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNvcnRhYmxlRmlsdGVySXRlbVxuICAgICAgICAgICAgICBrZXk9e2N1cnJlbnRGaWx0ZXJJdGVtLmlkfVxuICAgICAgICAgICAgICBmaWx0ZXI9e2N1cnJlbnRGaWx0ZXJJdGVtfVxuICAgICAgICAgICAgICBvblVwZGF0ZT17KHVwZGF0ZWRGaWx0ZXIpID0+IG9uVXBkYXRlSXRlbShpbmRleCwgdXBkYXRlZEZpbHRlcil9XG4gICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiBvbkRlbGV0ZUl0ZW0oaW5kZXgpfVxuICAgICAgICAgICAgICBwYXJlbnREbmRJZD17cGFyZW50R3JvdXBJZH1cbiAgICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wfVxuICAgICAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wVmFsfVxuICAgICAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BDaGFuZ2VGbn1cbiAgICAgICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcFRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICB7Y3JlYXRlUG9ydGFsKFxuICAgICAgICA8RHJhZ092ZXJsYXk+XG4gICAgICAgICAge2FjdGl2ZURyYWdJZCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtb3BhY2l0eS04MFwiPlxuICAgICAgICAgICAgICA8RHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgYWN0aXZlSWQ9e2FjdGl2ZURyYWdJZH0gaXRlbXM9e2l0ZW1zfSB0YWJsZT17dGFibGV9IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9EcmFnT3ZlcmxheT4sXG4gICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICApfVxuICAgIDwvRG5kQ29udGV4dD5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzb3J0YWJsZSBmaWx0ZXIgaXRlbVxuY29uc3QgU29ydGFibGVGaWx0ZXJJdGVtID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIHBhcmVudERuZElkLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBwYXJlbnREbmRJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHNldE5vZGVSZWYsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBmaWx0ZXIuaWQsXG4gICAgZGF0YToge1xuICAgICAgdHlwZTogZmlsdGVyLmtpbmQsXG4gICAgICBwYXJlbnRJZDogcGFyZW50RG5kSWQsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3Qgc3R5bGUgPSB7XG4gICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNmb3JtLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgdHJhbnNpdGlvbixcbiAgICBvcGFjaXR5OiBpc0RyYWdnaW5nID8gMC41IDogMSxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtzZXROb2RlUmVmfSBzdHlsZT17c3R5bGV9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWdhcC0yXCI+XG4gICAgICB7ZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIgPyAoXG4gICAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50XG4gICAgICAgICAgZ3JvdXA9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzaW5nbGUgZmlsdGVyIGNvbmRpdGlvblxuY29uc3QgRmlsdGVyQ29uZGl0aW9uID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBmaWx0ZXI6IENvbHVtbkZpbHRlcjtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIpID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZUNvbHVtbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIGNvbHVtbjogdmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlcmF0b3JDaGFuZ2UgPSAodmFsdWU6IEZpbHRlck9wZXJhdG9yKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIG9wZXJhdG9yOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgY29sdW1uSW5mbyA9IHRhYmxlLmNvbHVtbnNbZmlsdGVyLmNvbHVtbl07XG5cbiAgICBpZiAoY29sdW1uSW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZVRvVmFsdWUoY29sdW1uSW5mbywgZmlsdGVyLm9wZXJhdG9yLCByYXdWYWx1ZSk7XG5cbiAgICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCB2YWx1ZTogbmV3VmFsdWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IFtlZGl0ZWRWYWx1ZSwgc2V0RWRpdGVkVmFsdWVdID0gdXNlU3RhdGUoXG4gICAgY29lcmNlVG9TdHJpbmcodGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXSwgZmlsdGVyLm9wZXJhdG9yLCBmaWx0ZXIudmFsdWUpLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXZcbiAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiXG4gICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiPlxuICAgICAgICAgIDxHcmlwVmVydGljYWwgY2xhc3NOYW1lPVwicHMtdGV4dC1ncmF5LTUwMFwiIHNpemU9ezE2fSAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgPyAoXG4gICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLmNvbHVtbn0gb25WYWx1ZUNoYW5nZT17aGFuZGxlQ29sdW1uQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjggcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNvbHVtblwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAge09iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXtjb2x1bW59IHZhbHVlPXtjb2x1bW59PlxuICAgICAgICAgICAgICAgICAge2NvbHVtbn1cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLm9wZXJhdG9yfSBvblZhbHVlQ2hhbmdlPXsodmFsdWUpID0+IGhhbmRsZU9wZXJhdG9yQ2hhbmdlKHZhbHVlIGFzIEZpbHRlck9wZXJhdG9yKX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy13LTIwIHBzLXRleHQteHMgcHMtaC04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIk9wZXJhdG9yXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj1cIj49PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIiE9XCI+IT08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPlwiPiZndDs8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPj1cIj4mZ3Q7PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8XCI+Jmx0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8PVwiPiZsdDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlzXCI+aXM8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXMgbm90XCI+aXMgbm90PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxpa2VcIj5saWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBsaWtlXCI+bm90IGxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaWxpa2VcIj5pbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgaWxpa2VcIj5ub3QgaWxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIHZhbHVlPXtlZGl0ZWRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICBzZXRFZGl0ZWRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlKGUpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0yNCBwcy10ZXh0LXhzIHBzLWgtOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L21vdGlvbi5kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgZmlsdGVyIGdyb3VwIChBTkQvT1IpXG5jb25zdCBGaWx0ZXJHcm91cENvbXBvbmVudCA9ICh7XG4gIGdyb3VwLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgaXNSb290ID0gZmFsc2UsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZ3JvdXA6IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRHcm91cDogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIGlzUm9vdD86IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbYWN0aXZlRHJhZ0lkLCBzZXRBY3RpdmVEcmFnSWRdID0gdXNlU3RhdGU8VW5pcXVlSWRlbnRpZmllciB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUFkZEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXI6IENvbHVtbkZpbHRlciA9IHtcbiAgICAgIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxuICAgICAga2luZDogXCJDb2x1bW5GaWx0ZXJcIixcbiAgICAgIGNvbHVtbjogT2JqZWN0LmtleXModGFibGUuY29sdW1ucylbMF0gPz8gXCJcIiwgLy8gQWx3YXlzIHNlbGVjdCBmaXJzdCBjb2xcbiAgICAgIG9wZXJhdG9yOiBcIj1cIixcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBhZnRlcjogXCJhbmRcIixcbiAgICB9O1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogWy4uLmdyb3VwLmZpbHRlcnMsIG5ld0ZpbHRlcl0gfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQWRkR3JvdXAgPSAoKSA9PiB7XG4gICAgY29uc3QgbmV3R3JvdXA6IEZpbHRlckdyb3VwID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3R3JvdXBdIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUl0ZW1Jbkdyb3VwID0gKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRGaWx0ZXJPckdyb3VwOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVyc1tpbmRleF0gPSB1cGRhdGVkRmlsdGVyT3JHcm91cDtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBuZXdGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZUl0ZW1Gcm9tR3JvdXAgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4ge1xuICAgIHNldEFjdGl2ZURyYWdJZChldmVudC5hY3RpdmUuaWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmRTaWduYWwgPSAoKSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVJlb3JkZXJJdGVtcyA9IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKG9sZEluZGV4ID09PSBuZXdJbmRleCkgcmV0dXJuO1xuICAgIGNvbnN0IHJlb3JkZXJlZEZpbHRlcnMgPSBhcnJheU1vdmUoZ3JvdXAuZmlsdGVycywgb2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiByZW9yZGVyZWRGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckdyb3VwQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHJldHVybiBudWxsO1xuICAgIGlmICghZ3JvdXAuZmlsdGVycyB8fCBncm91cC5maWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wbC02IHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTUwMCBwcy1pdGFsaWNcIj5cbiAgICAgICAgICBUaGlzIGdyb3VwIGlzIGVtcHR5LiBBZGQgYSBmaWx0ZXIgb3IgYW5vdGhlciBncm91cC5cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8bW90aW9uLmRpdiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlIHBzLWdhcC0yXCIsIGlzUm9vdCA/IFwiXCIgOiBcInBzLXBiLTJcIil9PlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SXRlbXNcbiAgICAgICAgICAgIGl0ZW1zPXtncm91cC5maWx0ZXJzfVxuICAgICAgICAgICAgcGFyZW50R3JvdXBJZD17Z3JvdXAuaWR9XG4gICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICBvblVwZGF0ZUl0ZW09e3VwZGF0ZUl0ZW1Jbkdyb3VwfVxuICAgICAgICAgICAgb25EZWxldGVJdGVtPXtkZWxldGVJdGVtRnJvbUdyb3VwfVxuICAgICAgICAgICAgb25SZW9yZGVySXRlbXM9e2hhbmRsZVJlb3JkZXJJdGVtc31cbiAgICAgICAgICAgIGFjdGl2ZURyYWdJZD17YWN0aXZlRHJhZ0lkfVxuICAgICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICAgIG9uRHJhZ0VuZFNpZ25hbD17aGFuZGxlRHJhZ0VuZFNpZ25hbH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbW90aW9uLmRpdj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsXCIsIGlzRXhwYW5kZWQgPyBcInBzLWdhcC0yXCIgOiBcIlwiKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHshaXNSb290ICYmIChcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCIgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9PlxuICAgICAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uUmlnaHQgc2l6ZT17MTZ9IC8+fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtzaG93TGVhZGluZ09wZXJhdG9yICYmIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlICYmICFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPExlYWRpbmdPcGVyYXRvclNlbGVjdFxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFkZEZpbHRlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIG92ZXJmbG93LWhpZGRlbiBwcy10cmFuc2l0aW9uLWFsbFwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWRkIEZpbHRlclxuICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8QmFkZ2UgY2xhc3NOYW1lPVwicHMtdHJhbnNpdGlvbi1hbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxBbmltYXRlTnVtYmVyIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+e2dyb3VwLmZpbHRlcnMubGVuZ3RofTwvQW5pbWF0ZU51bWJlcj5cbiAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtoYW5kbGVBZGRHcm91cH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgQWRkIEdyb3VwXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7aXNSb290ICYmIChcbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICAgICAgPEhlbHBDaXJjbGUgY2xhc3NOYW1lPVwicHMtc2l6ZS00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51Q29udGVudCBhbGlnbj1cImNlbnRlclwiIGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtNCBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICBObyBmaWx0ZXJzIGFwcGxpZWQgeWV0LiBBZGQgZmlsdGVycyB0byBwcmV2aWV3IHlvdXIgcXVlcnkuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wLTIgcHMtdGV4dC1jZW50ZXIgcHMtdGV4dC1zbSBwcy1iZy1uZXV0cmFsLTEwMCBwcy1yb3VuZGVkLXNtIHBzLWZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtncm91cH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKGlzUm9vdCA/IFwiXCIgOiBcInBzLW1sLTZcIil9PntyZW5kZXJHcm91cENvbnRlbnQoKX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCB0byB2aXN1YWxpemUgdGhlIHF1ZXJ5IHN0cmluZ1xuY29uc3QgUXVlcnlWaXN1YWxpemVyID0gKHsgZmlsdGVyIH06IHsgZmlsdGVyOiBGaWx0ZXJHcm91cCB9KTogUmVhY3ROb2RlID0+IHtcbiAgbGV0IGlzQW5kR3JvdXBPcGVuID0gMDtcblxuICBpZiAoZmlsdGVyLmZpbHRlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIoIClcIjtcblxuICBjb25zdCBncm91cCA9IGZpbHRlci5maWx0ZXJzLm1hcCgoZiwgaSkgPT4ge1xuICAgIGxldCByZXN1bHQ6IFJlYWN0Tm9kZTtcbiAgICBjb25zdCBpc0xhc3QgPSBmaWx0ZXIuZmlsdGVycy5sZW5ndGggLSAxID09PSBpO1xuXG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuID09PSAtMSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAwO1xuICAgIH1cblxuICAgIGlmIChmLmFmdGVyID09PSBcImFuZFwiICYmICFpc0xhc3QpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuICs9IDE7XG4gICAgfVxuICAgIGlmIChpc0FuZEdyb3VwT3BlbiAmJiAoaXNMYXN0IHx8IGYuYWZ0ZXIgPT09IFwib3JcIikpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuID0gLTE7XG4gICAgfVxuXG4gICAgaWYgKGYua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgICAgY29uc3QgeyBjb2x1bW4sIG9wZXJhdG9yIH0gPSBmO1xuXG4gICAgICByZXN1bHQgPSAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPHNwYW4+IHtjb2x1bW59IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4ge29wZXJhdG9yfSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+ID8gPC9zcGFuPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtmfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZyYWdtZW50IGtleT17Zi5pZH0+XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4oPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHtyZXN1bHR9XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gLTEgPyA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+KTwvc3Bhbj4gOiBcIlwifVxuICAgICAgICB7IWlzTGFzdCAmJiA8c3BhbiBjbGFzc05hbWU9XCJwcy11cHBlcmNhc2UgcHMtdGV4dC1ibHVlLTUwMCBwcy1mb250LXNlbWlib2xkXCI+IHtmLmFmdGVyfSA8L3NwYW4+fVxuICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gPHNwYW4+e2dyb3VwfTwvc3Bhbj47XG59O1xuXG4vLyBNYWluIGNvbXBvbmVudFxuZXhwb3J0IGZ1bmN0aW9uIEZpbHRlclRyZWUoe1xuICBmaWx0ZXIsXG4gIHNldEZpbHRlcixcbiAgc2V0QXBwbGllZEZpbHRlcixcbiAgdGFibGUsXG59OiB7XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG4gIHNldEZpbHRlcjogKHVwZGF0ZWRGaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBzZXRBcHBsaWVkRmlsdGVyOiAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgdGFibGU6IFRhYmxlO1xufSkge1xuICBjb25zdCBoYW5kbGVBcHBseUZpbHRlcnMgPSAoKSA9PiB7XG4gICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC00XCI+XG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnQgZ3JvdXA9e2ZpbHRlcn0gb25VcGRhdGU9e3NldEZpbHRlcn0gb25EZWxldGU9eygpID0+IHt9fSBpc1Jvb3Q9e3RydWV9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgIDxCdXR0b24gdmFyaWFudD1cImRlZmF1bHRcIiBzaXplPVwic21cIiBjbGFzc05hbWU9XCJwcy1zZWxmLWVuZFwiIG9uQ2xpY2s9e2hhbmRsZUFwcGx5RmlsdGVyc30+XG4gICAgICAgIEFwcGx5IEZpbHRlcnNcbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ29sdW1uLCBGaWx0ZXJPcGVyYXRvciB9IGZyb20gXCJAL2RhdGFcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVRvVmFsdWUoY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciwgdmFsdWU6IHN0cmluZyk6IHVua25vd24ge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAob3BlcmF0b3IgPT09IFwiaXNcIiB8fCBvcGVyYXRvciA9PT0gXCJpcyBub3RcIikge1xuICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcIm51bGxcIiA/IG51bGwgOiB2YWx1ZTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImJvb2xlYW5cIikgcmV0dXJuIHZhbHVlID09PSBcInRydWVcIjtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJlbnVtXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwidGltZVwiKSByZXR1cm4gdmFsdWU7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKSBhcyB1bmtub3duO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gXCJcIiA/IG51bGwgOiBOdW1iZXIodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9TdHJpbmcoXG4gIGNvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkLFxuICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IgfCB1bmRlZmluZWQsXG4gIHZhbHVlOiB1bmtub3duLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YVR5cGVHcm91cCA9IGNvbHVtbj8uZGF0YXR5cGUuZ3JvdXA7XG5cbiAgaWYgKG9wZXJhdG9yICYmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/IFwibnVsbFwiIDogU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInJhd1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImpzb25cIikge1xuICAgIGlmICh2YWx1ZSA9PT0gXCJcIikgcmV0dXJuIFwiXCI7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBEcm9wZG93bk1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25NZW51ID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IERyb3Bkb3duTWVudVRyaWdnZXIgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgRHJvcGRvd25NZW51R3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IERyb3Bkb3duTWVudVBvcnRhbCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YiA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvR3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG9cIiAvPlxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtW3ZhcigtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0KV0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWRcIixcbiAgICAgICAgXCJkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuRHJvcGRvd25NZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTAgWyY+c3ZnXTpwcy1zaXplLTQgWyY+c3ZnXTpwcy1zaHJpbmstMFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTIgcHMtdy0yIHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuRHJvcGRvd25NZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUxhYmVsLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy1vcGFjaXR5LTYwXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59O1xuRHJvcGRvd25NZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLFxuICBEcm9wZG93bk1lbnVSYWRpb0l0ZW0sXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG4gIERyb3Bkb3duTWVudVNob3J0Y3V0LFxuICBEcm9wZG93bk1lbnVHcm91cCxcbiAgRHJvcGRvd25NZW51UG9ydGFsLFxuICBEcm9wZG93bk1lbnVTdWIsXG4gIERyb3Bkb3duTWVudVN1YkNvbnRlbnQsXG4gIERyb3Bkb3duTWVudVN1YlRyaWdnZXIsXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJpbnB1dFwiPj4oXG4gICh7IGNsYXNzTmFtZSwgdHlwZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTEgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZpbGU6cHMtYm9yZGVyLTAgZmlsZTpwcy1iZy10cmFuc3BhcmVudCBmaWxlOnBzLXRleHQtc20gZmlsZTpwcy1mb250LW1lZGl1bSBmaWxlOnBzLXRleHQtZm9yZWdyb3VuZCBwbGFjZWhvbGRlcjpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTBcIixcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuSW5wdXQuZGlzcGxheU5hbWUgPSBcIklucHV0XCI7XG5cbmV4cG9ydCB7IElucHV0IH07XG4iLCAiaW1wb3J0ICogYXMgU2VsZWN0UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvbkRvd24sIENoZXZyb25VcCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmLCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU2VsZWN0ID0gU2VsZWN0UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFNlbGVjdEdyb3VwID0gU2VsZWN0UHJpbWl0aXZlLkdyb3VwO1xuXG5jb25zdCBTZWxlY3RWYWx1ZSA9IFNlbGVjdFByaW1pdGl2ZS5WYWx1ZTtcblxuY29uc3QgU2VsZWN0VHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPixcbiAgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlcj4gJiB7IGxhYmVsPzogUmVhY3ROb2RlIH1cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgbGFiZWwsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctdHJhbnNwYXJlbnQgcHMtcHgtMyBwcy1weS0yIHBzLXRleHQtc20gcHMtc2hhZG93LXNtIHBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGF0YS1bcGxhY2Vob2xkZXJdOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1czpwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtcmluZy0xIGZvY3VzOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJj5zcGFuXTpwcy1saW5lLWNsYW1wLTFcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTFcIj5cbiAgICAgIHtsYWJlbCAmJiA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj57bGFiZWx9Ojwvc3Bhbj59XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1vcGFjaXR5LTUwXCIgLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5JY29uPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuKSk7XG5TZWxlY3RUcmlnZ2VyLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbFVwQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uVXAgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgcG9zaXRpb24gPSBcInBvcHBlclwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcmVsYXRpdmUgcHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICBcImRhdGEtW3NpZGU9Ym90dG9tXTpwcy10cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06cHMtLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06cHMtdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06cHMtLXRyYW5zbGF0ZS15LTFcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXAtMVwiLFxuICAgICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgICBcInBzLWgtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHBzLXctZnVsbCBwcy1taW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXVwiLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydD5cbiAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5TZWxlY3RDb250ZW50LmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5TZWxlY3RMYWJlbC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtdy1mdWxsIHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC0yIHBzLXByLTggcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLXJpZ2h0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD57Y2hpbGRyZW59PC9TZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4pKTtcblNlbGVjdEl0ZW0uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5TZWxlY3RTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBTZWxlY3QsXG4gIFNlbGVjdEdyb3VwLFxuICBTZWxlY3RWYWx1ZSxcbiAgU2VsZWN0VHJpZ2dlcixcbiAgU2VsZWN0Q29udGVudCxcbiAgU2VsZWN0TGFiZWwsXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdFNlcGFyYXRvcixcbiAgU2VsZWN0U2Nyb2xsVXBCdXR0b24sXG4gIFNlbGVjdFNjcm9sbERvd25CdXR0b24sXG59O1xuIiwgImltcG9ydCB7IERuZENvbnRleHQsIHR5cGUgRHJhZ0VuZEV2ZW50LCBNb3VzZVNlbnNvciwgdXNlU2Vuc29yLCB1c2VTZW5zb3JzIH0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7IGFycmF5TW92ZSwgaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3ksIFNvcnRhYmxlQ29udGV4dCB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2UsIFJvd1NlbGVjdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb2x1bW5QaW5uaW5nU3RhdGUsXG4gIHR5cGUgQ29sdW1uU2l6aW5nU3RhdGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgdHlwZSBPbkNoYW5nZUZuLFxuICB0eXBlIFBhZ2luYXRpb25TdGF0ZSxcbiAgdHlwZSBTb3J0aW5nU3RhdGUsXG4gIHR5cGUgVGFibGUgYXMgUmVhY3RUYWJsZSxcbiAgdXNlUmVhY3RUYWJsZSxcbn0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgUmVhY3RUYWJsZURldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29sc1wiO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCB0eXBlIFJlYWN0Tm9kZSwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3NrZWxldG9uXCI7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZGVyLCBUYWJsZVJvdyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4uL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRMb2FkaW5nQmFyIH0gZnJvbSBcIi4vRGF0YUdyaWRMb2FkaW5nQmFyXCI7XG5pbXBvcnQgeyBEYXRhR3JpZFBhZ2luYXRpb24gfSBmcm9tIFwiLi9EYXRhR3JpZFBhZ2luYXRpb25cIjtcbmltcG9ydCB7IGdldENvbHVtblBpbm5pbmdTdHlsZXMgfSBmcm9tIFwiLi9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuXG4vLyBBZGQgdGhpcyBuZXcgY29tcG9uZW50IGZvciBkcmFnZ2FibGUgaGVhZGVyIGNlbGxzXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQcm9wcyB7XG4gIGNvbHVtbkRlZnM6IEFjY2Vzc29yS2V5Q29sdW1uRGVmQmFzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5bXTtcbiAgZ2V0QmVmb3JlUm93cz8odGhpczogdm9pZCwgdGFibGU6IFJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogUmVhY3ROb2RlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgb25QYWdpbmF0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT47XG4gIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFJvd1NlbGVjdGlvblN0YXRlPjtcbiAgb25Tb3J0aW5nQ2hhbmdlPzogT25DaGFuZ2VGbjxTb3J0T3JkZXJJdGVtW10+O1xuICBwYWdlQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnaW5hdGlvblN0YXRlOiBQYWdpbmF0aW9uU3RhdGU7XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHJvd1NlbGVjdGlvblN0YXRlOiBSb3dTZWxlY3Rpb25TdGF0ZTtcbiAgc29ydGluZ1N0YXRlPzogU29ydE9yZGVySXRlbVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWQocHJvcHM6IERhdGFHcmlkUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbHVtbkRlZnMsXG4gICAgZ2V0QmVmb3JlUm93cyxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNQcm9jZXNzaW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2UsXG4gICAgcGFnZUNvdW50LFxuICAgIHBhZ2luYXRpb25TdGF0ZSxcbiAgICByb3dzLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHNvcnRpbmdTdGF0ZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFtjb2x1bW5PcmRlciwgc2V0Q29sdW1uT3JkZXJdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW2NvbHVtblBpbm5pbmcsIHNldENvbHVtblBpbm5pbmddID0gdXNlU3RhdGU8Q29sdW1uUGlubmluZ1N0YXRlPih7IGxlZnQ6IFtcIl9fcHNfc2VsZWN0XCJdLCByaWdodDogW10gfSk7XG4gIGNvbnN0IFtjb2x1bW5TaXppbmcsIHNldENvbHVtblNpemluZ10gPSB1c2VTdGF0ZTxDb2x1bW5TaXppbmdTdGF0ZT4oe30pO1xuICBjb25zdCBzb3J0aW5nID0gdXNlTWVtbygoKSA9PiB0b1NvcnRpbmdTdGF0ZShzb3J0aW5nU3RhdGUpLCBbc29ydGluZ1N0YXRlXSk7XG4gIGNvbnN0IGRpc3BsYXlMb2FkZXIgPSBpc0xvYWRpbmcgfHwgaXNQcm9jZXNzaW5nO1xuXG4gIC8vIFJlc2V0IGNvbHVtbiBvcmRlciwgcGlubmluZywgYW5kIHNpemluZyB3aGVuIGNvbHVtbkRlZnMgY2hhbmdlICh3aGljaCBoYXBwZW5zIHdoZW4gdGFibGUgY2hhbmdlcylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRDb2x1bW5PcmRlcihjb2x1bW5EZWZzLm1hcCgoeyBhY2Nlc3NvcktleSB9KSA9PiBhY2Nlc3NvcktleSkpO1xuICAgIHNldENvbHVtblBpbm5pbmcoeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICAgIHNldENvbHVtblNpemluZyh7fSk7XG4gIH0sIFtjb2x1bW5EZWZzXSk7XG5cbiAgLy8gaGFuZGxlcyBtb3ZpbmcgYW5kIHJlLW9yZGVyaW5nIG9mIHRoZSBjb2x1bW5zIGFuZCBzdGF0ZVxuICBmdW5jdGlvbiBoYW5kbGVEcmFnRW5kKHsgYWN0aXZlLCBvdmVyIH06IERyYWdFbmRFdmVudCkge1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgc2V0Q29sdW1uT3JkZXIoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gb3JkZXIuaW5kZXhPZihhY3RpdmUuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3Qgb3ZlckluZGV4ID0gb3JkZXIuaW5kZXhPZihvdmVyLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiBhcnJheU1vdmUob3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29uZmlndXJlIHRoZSBtb3VzZSBzZW5zb3IgZm9yIGRyYWcgYW5kIGRyb3BcbiAgY29uc3QgbW91c2VTZW5zb3IgPSB1c2VTZW5zb3IoTW91c2VTZW5zb3IsIHtcbiAgICAvLyBSZXF1aXJlIHRoZSBtb3VzZSB0byBtb3ZlIGJ5IDEwIHBpeGVscyBiZWZvcmUgYWN0aXZhdGluZ1xuICAgIGFjdGl2YXRpb25Db25zdHJhaW50OiB7XG4gICAgICBkaXN0YW5jZTogMTAsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKG1vdXNlU2Vuc29yKTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIGNvbHVtblJlc2l6ZU1vZGU6IFwib25DaGFuZ2VcIixcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGRhdGE6IHJvd3MsXG4gICAgZGVmYXVsdENvbHVtbjogeyBzaXplOiAyMDAsIG1pblNpemU6IDUwLCBtYXhTaXplOiA1MDAgfSxcbiAgICBlbmFibGVDb2x1bW5QaW5uaW5nOiB0cnVlLFxuICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVTb3J0aW5nOiBCb29sZWFuKG9uU29ydGluZ0NoYW5nZSAmJiBzb3J0aW5nU3RhdGUpLFxuICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgZ2V0Um93SWQ6ICh7IF9fcHNfcm93aWQgfSkgPT4gX19wc19yb3dpZCBhcyBzdHJpbmcsXG4gICAgbWFudWFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICBtYW51YWxTb3J0aW5nOiB0cnVlLFxuICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2U6IHNldENvbHVtbk9yZGVyLFxuICAgIG9uQ29sdW1uUGlubmluZ0NoYW5nZTogc2V0Q29sdW1uUGlubmluZyxcbiAgICBvbkNvbHVtblNpemluZ0NoYW5nZTogc2V0Q29sdW1uU2l6aW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2U6ICh1cGRhdGVyT3JWYWx1ZSkgPT5cbiAgICAgIG9uU29ydGluZ0NoYW5nZT8uKChvbGQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdXBkYXRlck9yVmFsdWUgPSB1cGRhdGVyT3JWYWx1ZSh0b1NvcnRpbmdTdGF0ZShvbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvcnRPcmRlckl0ZW1zKHVwZGF0ZXJPclZhbHVlKTtcbiAgICAgIH0pLFxuICAgIHBhZ2VDb3VudCxcbiAgICBzdGF0ZToge1xuICAgICAgY29sdW1uT3JkZXIsXG4gICAgICBjb2x1bW5QaW5uaW5nLFxuICAgICAgY29sdW1uU2l6aW5nLFxuICAgICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvblN0YXRlLFxuICAgICAgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICAgIHNvcnRpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRPRE86IHBhdGNoIHNvIGl0IGlzIG5vdCBidW5kbGVkIGxpa2UgcmVhY3QtcXVlcnkgZGV2dG9vbHMsIG9yIHJlbW92ZSBjb21wbGV0ZWx5IG9uY2UgZGF0YSBncmlkIGlzIHN0YWJsZSBhbmQgdGVzdGVkLiAqL31cbiAgICAgIHtwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBudWxsIDogPFJlYWN0VGFibGVEZXZ0b29scyB0YWJsZT17dGFibGV9IC8+fVxuICAgICAgPGRpdiBkYXRhLXN0dWRpbz1cImNvbnRlbnRcIiBjbGFzc05hbWU9XCJwcy1mbGV4LTEgcHMtdy0wIHBzLWgtMCBwcy1taW4tdy1mdWxsIHBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdj57ZGlzcGxheUxvYWRlciAmJiA8RGF0YUdyaWRMb2FkaW5nQmFyIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIC1wcy10b3AtWzFweF0gcHMtbGVmdC0wIHBzLXJpZ2h0LTBcIiAvPn08L2Rpdj5cbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17c2Vuc29yc30gb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfT5cbiAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwicHMtdGFibGUtZml4ZWQgcHMtYm9yZGVyLXNlcGFyYXRlIHBzLWJvcmRlci1zcGFjaW5nLTAgcHMtYm94LWJvcmRlciBwcy13LWF1dG9cIj5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlcj5cbiAgICAgICAgICAgICAge3RhYmxlLmdldEhlYWRlckdyb3VwcygpLm1hcCgoaGVhZGVyR3JvdXApID0+IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0+XG4gICAgICAgICAgICAgICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zPXtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiBoZWFkZXIuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzdHJhdGVneT17aG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3l9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcCgoaGVhZGVyLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBIZWFkZXIgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIZWFkZXIgPSBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIoaGVhZGVyLmdldENvbnRleHQoKSkgYXMgSGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxIZWFkZXIga2V5PXtpfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICAgPFRhYmxlQm9keT5cbiAgICAgICAgICAgICAge2dldEJlZm9yZVJvd3M/Lih0YWJsZSl9XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3M/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICB0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3MubWFwKChyb3cpID0+IChcbiAgICAgICAgICAgICAgICAgIDxUYWJsZVJvd1xuICAgICAgICAgICAgICAgICAgICBrZXk9e3Jvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICBcInBzLWJnLXRhYmxlLXJvdyBwcy1vZGQ6YmctdGFibGUtcm93LW9kZCBwcy1ncm91cCBbJjpsYXN0LW9mLXR5cGVfdGRdOnBzLWJvcmRlci1iLTAgcHMtZ3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3Jvdy5nZXRWaXNpYmxlQ2VsbHMoKS5tYXAoKGNlbGwsIGkpID0+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+KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1hbmltYXRlLXB1bHNlIHBzLXJvdW5kZWQtbWQgcHMtYmctZm9yZWdyb3VuZC8xMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwgImltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZExvYWRpbmdCYXIoeyBjbGFzc05hbWUgfTogRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLWxvYWRpbmctYmFyXG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtaC1bMnB4XSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLWJnLXRhYmxlLWJvcmRlciBwcy16LTUwXCIsIGNsYXNzTmFtZSl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1hbmltYXRlLWluZGV0ZXJtaW5hdGUtYmFyIHBzLWgtZnVsbCBwcy13LTEvMyBwcy1yb3VuZGVkLXItZnVsbCBwcy1iZy1wcmltYXJ5XCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IENoZXZyb25MZWZ0LCBDaGV2cm9uUmlnaHQsIENoZXZyb25zTGVmdCwgQ2hldnJvbnNSaWdodCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUGFnaW5hdGlvblByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB2YXJpYW50PzogXCJiYXNpY1wiIHwgXCJudW1lcmljXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZFBhZ2luYXRpb24ocHJvcHM6IERhdGFHcmlkUGFnaW5hdGlvblByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGUsIHZhcmlhbnQgPSBcImJhc2ljXCIgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgcGFnZUluZGV4IH0gPSB0YWJsZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb247XG4gIGNvbnN0IHBhZ2VDb3VudCA9IHRhYmxlLmdldFBhZ2VDb3VudCgpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1yb3VuZGVkLWItbGcgcHMtb3ZlcmZsb3ctY2xpcCBwcy1zdGlja3kgcHMtYm90dG9tLTAgcHMtbGVmdC0wIHBzLWJvcmRlci10LTAgdy1mdWxsIHBzLXotMjAgcHMtcC0wXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1zcGFjZS14LTIgcHMtcHktMiBwcy1weC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtYmFja2Ryb3AtYmx1ci1zbSBwcy1iZy10YWJsZS1oZWFkLzkwXCI+XG4gICAgICAgIHt2YXJpYW50ID09PSBcImJhc2ljXCIgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTlcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUHJldmlvdXNcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTmV4dFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgoMCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc0xlZnQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtdGV4dC14cyBwcy1mb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIFBhZ2VcbiAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgbWluPXsxfVxuICAgICAgICAgICAgICAgICAgbWF4PXtwYWdlQ291bnR9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17cGFnZUluZGV4ICsgMX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXctMTZcIlxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IGUudGFyZ2V0LnZhbHVlID8gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSAtIDEgOiAwO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1zaHJpbmstMCBwcy13LW1heFwiPm9mIHtwYWdlQ291bnR9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KHBhZ2VDb3VudCAtIDEpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc1JpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDU1NQcm9wZXJ0aWVzIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNvbHVtbjogQ29sdW1uPFJlY29yZDxzdHJpbmcsIHVua25vd24+Piwga2luZDogXCJoZWFkZXJcIiB8IFwiY2VsbFwiKSB7XG4gIGNvbnN0IGlzUGlubmVkID0gY29sdW1uLmdldElzUGlubmVkKCk7XG4gIGNvbnN0IGlzTGVmdFBpbm5lZCA9IGlzUGlubmVkID09PSBcImxlZnRcIjtcbiAgY29uc3QgaXNSaWdodFBpbm5lZCA9IGlzUGlubmVkID09PSBcInJpZ2h0XCI7XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IGNuKFxuICAgICAga2luZCA9PT0gXCJjZWxsXCIgJiYgXCJncm91cC1vZGQ6cHMtYmctbmV1dHJhbC01MCBncm91cC1ldmVuOnBzLWJnLXdoaXRlIGdyb3VwLWhvdmVyOnBzLWJnLW5ldXRyYWwtMTAwXCIsXG4gICAgICBraW5kID09PSBcImhlYWRlclwiICYmIFwicHMtc2VsZWN0LW5vbmUgcHMtdG91Y2gtbm9uZSBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctdGFibGUtaGVhZFwiLFxuICAgICAgXCJwcy1ncm91cCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICBcInBzLW92ZXJmbG93LWhpZGRlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy10ZXh0LWVsbGlwc2lzXCIsXG4gICAgICBpc1Bpbm5lZCAmJiBcInBzLXN0aWNreVwiLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBraW5kID09PSBcImhlYWRlclwiICYmIFwicHMtei0yMFwiLFxuICAgICAgKGlzTGVmdFBpbm5lZCB8fCBpc1JpZ2h0UGlubmVkKSAmJiBraW5kID09PSBcImNlbGxcIiAmJiBcInBzLXotMFwiLFxuICAgICksXG4gICAgc3R5bGU6IHtcbiAgICAgIG1pbldpZHRoOiBgJHtjb2x1bW4uZ2V0U2l6ZSgpfXB4YCxcbiAgICAgIHdpZHRoOiBgJHtjb2x1bW4uZ2V0U2l6ZSgpfXB4YCxcbiAgICAgIGxlZnQ6IGlzTGVmdFBpbm5lZCA/IGAke2NvbHVtbi5nZXRTdGFydChcImxlZnRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IGlzUmlnaHRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0QWZ0ZXIoXCJyaWdodFwiKX1weGAgOiB1bmRlZmluZWQsXG4gICAgfSBhcyBDU1NQcm9wZXJ0aWVzLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZVNvcnRhYmxlIH0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBIZWFkZXIsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBDU1NQcm9wZXJ0aWVzLCBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUhlYWQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG50eXBlIERyYWdnYWJsZUhlYWRlckNlbGxQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBoZWFkZXI6IEhlYWRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbiAgdGFibGU6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+Pjtcbn0+O1xuXG5leHBvcnQgY29uc3QgRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsID0gKHByb3BzOiBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBoZWFkZXIsIHN0eWxlOiBjb21tb25TdHlsZSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgc2V0Tm9kZVJlZiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBoZWFkZXIuaWQsXG4gIH0pO1xuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIC4uLmNvbW1vblN0eWxlLFxuICAgIGN1cnNvcjogXCJncmFiXCIsXG4gICAgdG91Y2hBY3Rpb246IFwibm9uZVwiLFxuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gIH0gYXMgQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBkcmFnQ2xhc3MgPSBjbihjbGFzc05hbWUsIGlzRHJhZ2dpbmcgJiYgXCIhcHMtei01MCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdmlvbGV0LTUwMFwiKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUhlYWQgcmVmPXtzZXROb2RlUmVmfSB7Li4uYXR0cmlidXRlc30gey4uLmxpc3RlbmVyc30gc3R5bGU9e3N0eWxlfSBjbGFzc05hbWU9e2RyYWdDbGFzc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L1RhYmxlSGVhZD5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgdHlwZSBIZWFkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBBcnJvd0Rvd25XaWRlTmFycm93LCBBcnJvd1VwV2lkZU5hcnJvdywgQ2hldnJvbkRvd24sIE1vdmVEb3duLCBNb3ZlVXAsIFBpbiwgUGluT2ZmLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlLCBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUl0ZW0sXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG59IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXJDZWxsIH0gZnJvbSBcIi4vRGF0YUdyaWRIZWFkZXJDZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUHJvcHM8VERhdGE+IHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIGhlYWRlcjogSGVhZGVyPFREYXRhLCB1bmtub3duPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXI8VERhdGE+KHByb3BzOiBIZWFkZXJQcm9wczxURGF0YT4pIHtcbiAgY29uc3QgeyBjb2x1bW4sIGhlYWRlciwgY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzXCI+XG4gICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyID8gbnVsbCA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1taW4tdy0wIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtZm9yZWdyb3VuZC85MFwiPlxuICAgICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlckNlbGwgY29sdW1uPXtjb2x1bW59IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXNocmluay0wIHBzLWdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtbWwtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlRG93biBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZVVwIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUGluKCkgJiYgaGVhZGVyLmNvbHVtbi5pZCAhPT0gXCJzZWxlY3RcIiAmJiAoXG4gICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtcHgtMCBwcy1oLTYgcHMtdy02XCI+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpICYmIChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4udG9nZ2xlU29ydGluZygpfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93bldpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXBXaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGFzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwgc29ydGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi5waW4oaGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gZmFsc2UgOiBcImxlZnRcIil9PlxuICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluT2ZmIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFVucGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW4gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgUGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5SZXNpemUoKSAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiB8fCBlLmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMCBwcy10b3AtMCBwcy1oLWZ1bGwgcHMtdy1weCBwcy1jdXJzb3ItY29sLXJlc2l6ZSBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOnBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgICApfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgY29sdW1uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgVG9vbHRpcFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXRvb2x0aXBcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUb29sdGlwUHJvdmlkZXIgPSBUb29sdGlwUHJpbWl0aXZlLlByb3ZpZGVyO1xuXG5jb25zdCBUb29sdGlwID0gVG9vbHRpcFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBUb29sdGlwVHJpZ2dlciA9IFRvb2x0aXBQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgVG9vbHRpcENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxUb29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8VG9vbHRpcFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYmctcHJpbWFyeSBwcy1weC0zIHBzLXB5LTEuNSBwcy10ZXh0LXhzIHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLWFuaW1hdGUtaW4gcHMtZmFkZS1pbi0wIHBzLXpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ub29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuVG9vbHRpcENvbnRlbnQuZGlzcGxheU5hbWUgPSBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBUcmlnZ2VyLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFByb3ZpZGVyIH07XG4iLCAiaW1wb3J0IHsgS2V5Um91bmQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdG9vbHRpcFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH06IHsgY29sdW1uOiBDb2x1bW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIHtjb2x1bW4uaXNJblByaW1hcnlLZXkgJiYgKFxuICAgICAgICA8VG9vbHRpcFByb3ZpZGVyIGRlbGF5RHVyYXRpb249ezEyMH0+XG4gICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgPEtleVJvdW5kIHNpemU9ezEyfSBjbGFzc05hbWU9XCJwcy10ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIDxUb29sdGlwQ29udGVudCBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwidGV4dC14c1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5QcmltYXJ5IEtleTwvc3Bhbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1Rvb2x0aXBQcm92aWRlcj5cbiAgICAgICl9XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LW1lZGl1bSBwcy10cnVuY2F0ZVwiPntjb2x1bW4ubmFtZX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNzAgcHMtbG93ZXJjYXNlIHBzLXRydW5jYXRlXCI+XG4gICAgICAgIHtjb2x1bW4uZGF0YXR5cGUubmFtZX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSBcIi4vQm9vbGVhbklucHV0XCI7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tIFwiLi9EYXRlSW5wdXRcIjtcbmltcG9ydCB7IEVudW1JbnB1dCB9IGZyb20gXCIuL0VudW1JbnB1dFwiO1xuaW1wb3J0IHsgSnNvbklucHV0IH0gZnJvbSBcIi4vSnNvbklucHV0XCI7XG5pbXBvcnQgeyBOdW1lcmljSW5wdXQgfSBmcm9tIFwiLi9OdW1lcmljSW5wdXRcIjtcbmltcG9ydCB7IFJhd0lucHV0IH0gZnJvbSBcIi4vUmF3SW5wdXRcIjtcbmltcG9ydCB7IFRpbWVJbnB1dCB9IGZyb20gXCIuL1RpbWVJbnB1dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXQocHJvcHM6IHtcbiAgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdDogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgeyBjZWxsLCBjb2x1bW4sIG9uU3VibWl0IH0gPSBwcm9wcztcbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuICBjb25zdCByZWFkb25seSA9IGNvbHVtbi5pc0NvbXB1dGVkIHx8IHByb3BzLnJlYWRvbmx5O1xuXG4gIGNvbnN0IGNlbGxWYWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICAvLyBvbiByb3cgaW5zZXJ0aW9ucywgd2UgdHJlYXQgdW5kZWZpbmVkIGFzIGVtcHR5IGlucHV0XG4gIGNvbnN0IHZhbHVlID0gY2VsbFZhbHVlID09PSB1bmRlZmluZWQgPyBcIlwiIDogY2VsbFZhbHVlO1xuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SnNvbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IG9wdGlvbnM9e29wdGlvbnN9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFJhd0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e2lzT2JqZWN0VHlwZSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zd2l0Y2hcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJvb2xlYW5JbnB1dChwcm9wczogQm9vbGVhbklucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gZmFsc2UgOiAodmFsdWUgYXMgYm9vbGVhbik7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZVRvU3VibWl0ID0gc2V0VG9OdWxsID8gbnVsbCA6IGN1cnJlbnRWYWx1ZTtcbiAgICBpZiAodmFsdWVUb1N1Ym1pdCAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KHZhbHVlVG9TdWJtaXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWdhcC00IHBzLXB5LTAgcHMtcHgtMlwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cImJvb2xlYW4taW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgQm9vbGVhblxuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjI0IH19XG4gICAgICAgID5cbiAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICBpZD1cImJvb2xlYW4taW5wdXRcIlxuICAgICAgICAgICAgY2hlY2tlZD17Y3VycmVudFZhbHVlfVxuICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBkYXRhLXZhbHVlXG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLWZvbnQtbW9ub1wiXG4gICAgICAgICAgaW5pdGlhbD17eyB4OiAtNDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IHg6IDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjEyLCBkZWxheTogMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3NldFRvTnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtbGFiZWxcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgbGFiZWxWYXJpYW50cyA9IGN2YShcbiAgXCJwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLWxlYWRpbmctbm9uZSBwZWVyLWRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBwZWVyLWRpc2FibGVkOnBzLW9wYWNpdHktNzBcIixcbik7XG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4gJiBWYXJpYW50UHJvcHM8dHlwZW9mIGxhYmVsVmFyaWFudHM+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxMYWJlbFByaW1pdGl2ZS5Sb290IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGxhYmVsVmFyaWFudHMoKSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5MYWJlbC5kaXNwbGF5TmFtZSA9IExhYmVsUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IExhYmVsIH07XG4iLCAiaW1wb3J0ICogYXMgU3dpdGNoUHJpbWl0aXZlcyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXN3aXRjaFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFN3aXRjaCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U3dpdGNoUHJpbWl0aXZlcy5Sb290XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1pbmxpbmUtZmxleCBwcy1oLTUgcHMtdy05IHBzLXNocmluay0wIHBzLWN1cnNvci1wb2ludGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLWZ1bGwgcHMtYm9yZGVyLTIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1zbSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpwcy1iZy1pbnB1dFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAgIHJlZj17cmVmfVxuICA+XG4gICAgPFN3aXRjaFByaW1pdGl2ZXMuVGh1bWJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcG9pbnRlci1ldmVudHMtbm9uZSBwcy1ibG9jayBwcy1oLTQgcHMtdy00IHBzLXJvdW5kZWQtZnVsbCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1sZyBwcy1yaW5nLTAgcHMtdHJhbnNpdGlvbi10cmFuc2Zvcm0gZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtNCBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLXRyYW5zbGF0ZS14LTBcIixcbiAgICAgICl9XG4gICAgLz5cbiAgPC9Td2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4pKTtcblN3aXRjaC5kaXNwbGF5TmFtZSA9IFN3aXRjaFByaW1pdGl2ZXMuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU3dpdGNoIH07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQ29ybmVyRG93bkxlZnQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90b29sdGlwXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRBY3Rpb25zUHJvcHMge1xuICBvblNhdmU/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBvbk51bGxDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaXNOdWxsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIG9uU2V0Tm93PzogKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIHNob3dTZXROb3c/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgSW5wdXRBY3Rpb25zID0gKHtcbiAgb25TYXZlLFxuICBvbkNhbmNlbCxcbiAgb25DbG9zZSxcbiAgb25OdWxsQ2hhbmdlLFxuICBpc051bGwgPSBmYWxzZSxcbiAgcmVhZG9ubHksXG4gIG9uU2V0Tm93LFxuICBzaG93U2V0Tm93LFxufTogSW5wdXRBY3Rpb25zUHJvcHMpID0+IHtcbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKG9uTnVsbENoYW5nZSkgb25OdWxsQ2hhbmdlKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSAoKSA9PiB7XG4gICAgaWYgKG9uU2F2ZSkgb25TYXZlKCk7XG4gICAgaWYgKG9uQ2xvc2UpIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgaWYgKG9uQ2FuY2VsKSBvbkNhbmNlbCgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy10ZXh0LXhzIHBzLXAtMlwiPlxuICAgICAgeyFyZWFkb25seSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1ncmlkIHBzLWdyaWQtY29scy0yIHBzLWdhcC0xIHBzLWl0ZW1zLXN0YXJ0IHBzLWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTYXZlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPENvcm5lckRvd25MZWZ0IHNpemU9ezEyfSBzdHJva2VXaWR0aD17Mn0gLz5cbiAgICAgICAgICAgICAgICAgIDwva2JkPntcIiBcIn1cbiAgICAgICAgICAgICAgICAgIFNhdmUgY2hhbmdlc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyIHBzLWN1cnNvci1wb2ludGVyIHBzLXNocmluay0wXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLXRleHQtWzhweF0gcHMtbGVhZGluZy1ub25lIHBzLWZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgRXNjXG4gICAgICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgICAgICBDYW5jZWwgY2hhbmdlc1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICAgIHtvbk51bGxDaGFuZ2UgJiYgKFxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyIHBzLWN1cnNvci1wb2ludGVyIHBzLXNocmluay0wIHBzLWgtNlwiXG4gICAgICAgICAgICAgICAgICAgIGh0bWxGb3I9XCJzZXQtbnVsbGFibGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U3dpdGNoIGlkPVwic2V0LW51bGxhYmxlXCIgY2hlY2tlZD17aXNOdWxsfSBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZU51bGxDaGFuZ2V9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlNldCB0byBOVUxMPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAge3Nob3dTZXROb3cgJiYgKFxuICAgICAgICAgICAgICAgICAgPFRvb2x0aXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2V0Tm93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlciBwcy1zaHJpbmstMCBwcy1oLTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNOdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdG8gTk9XXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPlNldCB0byB7ZGF5anMoKS5mb3JtYXQoXCJMTExcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHsgdHlwZSBGb3JtRXZlbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9jYWxlbmRhclwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVJbnB1dChwcm9wczogRGF0ZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5LCBjb2x1bW4gfSA9IHByb3BzO1xuXG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgcGFyc2VkSW5pdGlhbERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBwYXJzZWQgPSBkYXlqcyhpbml0aWFsVmFsdWUpO1xuICAgIHJldHVybiBwYXJzZWQuaXNWYWxpZCgpID8gcGFyc2VkLnRvRGF0ZSgpIDogbmV3IERhdGUoKTtcbiAgfSwgW2luaXRpYWxWYWx1ZV0pO1xuXG4gIGNvbnN0IGdldEZvcm1hdEZvclR5cGUgPSAodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICByZXR1cm4gXCJZWVlZLU1NLUREXCI7XG4gICAgICBjYXNlIFwidGltZVwiOlxuICAgICAgICByZXR1cm4gXCJISDptbTpzcy5TU1NTU1wiO1xuICAgICAgY2FzZSBcInRpbWVzdGFtcFwiOlxuICAgICAgICByZXR1cm4gXCJZWVlZLU1NLUREIEhIOm1tOnNzLlNTU1NTU1wiO1xuICAgICAgY2FzZSBcInRpbWVzdGFtcHR6XCI6XG4gICAgICAgIHJldHVybiBcIllZWVktTU0tREQgSEg6bW06c3MuU1NTU1NTWlwiO1xuICAgICAgY2FzZSBcInRpbWV0elwiOlxuICAgICAgICByZXR1cm4gXCJISDptbTpzcy5TU1NTU1NaXCI7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICAvLyBJbml0aWFsaXplIHN0YXRlcyB3aXRoIHRoZSBwYXJzZWQgZGF0ZVxuICBjb25zdCBbc2VsZWN0ZWREYXRlLCBzZXRTZWxlY3RlZERhdGVdID0gdXNlU3RhdGU8RGF0ZSB8IHVuZGVmaW5lZD4ocGFyc2VkSW5pdGlhbERhdGUpO1xuICBjb25zdCBbY3VycmVudE1vbnRoLCBzZXRDdXJyZW50TW9udGhdID0gdXNlU3RhdGU8RGF0ZT4ocGFyc2VkSW5pdGlhbERhdGUpO1xuICBjb25zdCBbaG91clZhbHVlLCBzZXRIb3VyVmFsdWVdID0gdXNlU3RhdGUoKCkgPT4gZGF5anMocGFyc2VkSW5pdGlhbERhdGUpLmZvcm1hdChcIkhIXCIpKTtcbiAgY29uc3QgW21pbnV0ZVZhbHVlLCBzZXRNaW51dGVWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiBkYXlqcyhwYXJzZWRJbml0aWFsRGF0ZSkuZm9ybWF0KFwibW1cIikpO1xuICBjb25zdCBbc2Vjb25kVmFsdWUsIHNldFNlY29uZFZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IGRheWpzKHBhcnNlZEluaXRpYWxEYXRlKS5mb3JtYXQoXCJzc1wiKSk7XG5cbiAgY29uc3QgeyBoYW5kbGVPbkNoYW5nZTogYmFzZUhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSwgc2V0VmFsdWUgfSA9IHVzZUlucHV0KHsgaW5pdGlhbFZhbHVlIH0pO1xuXG4gIGNvbnN0IGNvbHVtblR5cGUgPSB1c2VNZW1vKCgpID0+IGNvbHVtbj8uZGF0YXR5cGU/Lm5hbWUgfHwgKGNvbHVtbj8uZGF0YXR5cGUgYXMgdW5rbm93biBhcyBzdHJpbmcpLCBbY29sdW1uXSk7XG4gIGNvbnN0IGRiRm9ybWF0ID0gdXNlTWVtbygoKSA9PiBnZXRGb3JtYXRGb3JUeXBlKGNvbHVtblR5cGUpLCBbY29sdW1uVHlwZV0pO1xuXG4gIGNvbnN0IGhhc1RpbWVQcmVjaXNpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gW1widGltZVwiLCBcInRpbWVzdGFtcFwiLCBcInRpbWVzdGFtcHR6XCIsIFwidGltZXR6XCJdLmluY2x1ZGVzKGNvbHVtblR5cGUpO1xuICB9LCBbY29sdW1uVHlwZV0pO1xuXG4gIC8vIEN1c3RvbSBvbkNoYW5nZSBoYW5kbGVyXG4gIGNvbnN0IGhhbmRsZU9uQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGJhc2VIYW5kbGVPbkNoYW5nZShldmVudCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICBjb25zdCBwYXJzZWQgPSBkYXlqcyhuZXdWYWx1ZSk7XG4gICAgICBpZiAocGFyc2VkLmlzVmFsaWQoKSkge1xuICAgICAgICBjb25zdCBuZXdEYXRlID0gcGFyc2VkLnRvRGF0ZSgpO1xuICAgICAgICBzZXRTZWxlY3RlZERhdGUobmV3RGF0ZSk7XG4gICAgICAgIHNldEN1cnJlbnRNb250aChuZXdEYXRlKTtcbiAgICAgICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgICAgICBzZXRIb3VyVmFsdWUocGFyc2VkLmZvcm1hdChcIkhIXCIpKTtcbiAgICAgICAgICBzZXRNaW51dGVWYWx1ZShwYXJzZWQuZm9ybWF0KFwibW1cIikpO1xuICAgICAgICAgIHNldFNlY29uZFZhbHVlKHBhcnNlZC5mb3JtYXQoXCJzc1wiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAgIC8vIEludmFsaWQgZGF0ZSBmb3JtYXRcbiAgICB9XG4gIH07XG5cbiAgLy8gVXBkYXRlIGlucHV0VmFsdWUgd2hlbiBjYWxlbmRhciBzZWxlY3Rpb24gY2hhbmdlc1xuICBjb25zdCBoYW5kbGVDYWxlbmRhclNlbGVjdCA9IChkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGUgPSBkYXlqcyhkYXRlKTtcbiAgICBsZXQgZmluYWxEYXRlID0gbmV3U2VsZWN0ZWREYXRlO1xuXG4gICAgaWYgKGhhc1RpbWVQcmVjaXNpb24gJiYgc2VsZWN0ZWREYXRlKSB7XG4gICAgICAvLyBQcmVzZXJ2ZSBleGlzdGluZyB0aW1lXG4gICAgICBmaW5hbERhdGUgPSBuZXdTZWxlY3RlZERhdGVcbiAgICAgICAgLmhvdXIoZGF5anMoc2VsZWN0ZWREYXRlKS5ob3VyKCkpXG4gICAgICAgIC5taW51dGUoZGF5anMoc2VsZWN0ZWREYXRlKS5taW51dGUoKSlcbiAgICAgICAgLnNlY29uZChkYXlqcyhzZWxlY3RlZERhdGUpLnNlY29uZCgpKTtcbiAgICB9IGVsc2UgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCB0aW1lIGlmIG5vIHByZXZpb3VzIHRpbWVcbiAgICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gICAgICBmaW5hbERhdGUgPSBuZXdTZWxlY3RlZERhdGUuaG91cihub3cuaG91cigpKS5taW51dGUobm93Lm1pbnV0ZSgpKS5zZWNvbmQobm93LnNlY29uZCgpKTtcbiAgICAgIHNldEhvdXJWYWx1ZShub3cuZm9ybWF0KFwiSEhcIikpO1xuICAgICAgc2V0TWludXRlVmFsdWUobm93LmZvcm1hdChcIm1tXCIpKTtcbiAgICAgIHNldFNlY29uZFZhbHVlKG5vdy5mb3JtYXQoXCJzc1wiKSk7XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWREYXRlKGZpbmFsRGF0ZS50b0RhdGUoKSk7XG4gICAgc2V0Q3VycmVudE1vbnRoKGZpbmFsRGF0ZS50b0RhdGUoKSk7XG4gICAgc2V0VmFsdWUoZGJGb3JtYXQgPyBmaW5hbERhdGUuZm9ybWF0KGRiRm9ybWF0KSA6IGZpbmFsRGF0ZS50b0lTT1N0cmluZygpKTtcbiAgfTtcblxuICAvLyBGb3JtYXQgdGhlIGRhdGUgdXNpbmcgZGF5anMgYmFzZWQgb24gZGV0ZWN0ZWQgZm9ybWF0XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKCFkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgICBjb25zdCBoYXNUaW1lID0gaW5wdXRWYWx1ZS5pbmNsdWRlcyhcIjpcIik7XG5cbiAgICAgIC8vIEh1bWFuLXJlYWRhYmxlIGZvcm1hdCAobG9jYWxpemVkKVxuICAgICAgaWYgKGhhc1RpbWUpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTEwgTFRTXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTExcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVTZXROb3cgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgICBzZXRTZWxlY3RlZERhdGUobm93LnRvRGF0ZSgpKTtcbiAgICBzZXRDdXJyZW50TW9udGgobm93LnRvRGF0ZSgpKTsgLy8gRW5zdXJlIGNhbGVuZGFyIHZpZXcgdXBkYXRlc1xuICAgIHNldFZhbHVlKGRiRm9ybWF0ID8gbm93LmZvcm1hdChkYkZvcm1hdCkgOiBub3cudG9JU09TdHJpbmcoKSk7XG5cbiAgICAvLyBVcGRhdGUgaW5wdXQgZmllbGRzXG4gICAgc2V0WWVhclZhbHVlKG5vdy55ZWFyKCkudG9TdHJpbmcoKSk7XG4gICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgIHNldEhvdXJWYWx1ZShub3cuZm9ybWF0KFwiSEhcIikpO1xuICAgICAgc2V0TWludXRlVmFsdWUobm93LmZvcm1hdChcIm1tXCIpKTtcbiAgICAgIHNldFNlY29uZFZhbHVlKG5vdy5mb3JtYXQoXCJzc1wiKSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIEdlbmVyYXRlIG1vbnRoIG9wdGlvbnMgZm9yIHRoZSBzZWxlY3RcbiAgY29uc3QgbW9udGhzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBbXG4gICAgICB7IHZhbHVlOiBcIjBcIiwgbGFiZWw6IFwiSmFudWFyeVwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjFcIiwgbGFiZWw6IFwiRmVicnVhcnlcIiB9LFxuICAgICAgeyB2YWx1ZTogXCIyXCIsIGxhYmVsOiBcIk1hcmNoXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiM1wiLCBsYWJlbDogXCJBcHJpbFwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjRcIiwgbGFiZWw6IFwiTWF5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiNVwiLCBsYWJlbDogXCJKdW5lXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiNlwiLCBsYWJlbDogXCJKdWx5XCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiN1wiLCBsYWJlbDogXCJBdWd1c3RcIiB9LFxuICAgICAgeyB2YWx1ZTogXCI4XCIsIGxhYmVsOiBcIlNlcHRlbWJlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjlcIiwgbGFiZWw6IFwiT2N0b2JlclwiIH0sXG4gICAgICB7IHZhbHVlOiBcIjEwXCIsIGxhYmVsOiBcIk5vdmVtYmVyXCIgfSxcbiAgICAgIHsgdmFsdWU6IFwiMTFcIiwgbGFiZWw6IFwiRGVjZW1iZXJcIiB9LFxuICAgIF0sXG4gICAgW10sXG4gICk7XG5cbiAgLy8gR2V0IHRoZSBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIHZhbHVlc1xuICBjb25zdCBjdXJyZW50TW9udGhWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBjdXJyZW50TW9udGguZ2V0TW9udGgoKS50b1N0cmluZygpO1xuICB9LCBbY3VycmVudE1vbnRoXSk7XG5cbiAgY29uc3QgW3llYXJWYWx1ZSwgc2V0WWVhclZhbHVlXSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICByZXR1cm4gY3VycmVudE1vbnRoLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcbiAgfSk7XG5cbiAgY29uc3QgdXBkYXRlRGF0ZUZyb21JbnB1dHMgPSAoXG4gICAgbmV3RGF0ZVBhcnRzOiBQYXJ0aWFsPHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyOyBkYXk6IG51bWJlcjsgaG91cjogbnVtYmVyOyBtaW51dGU6IG51bWJlcjsgc2Vjb25kOiBudW1iZXIgfT4sXG4gICkgPT4ge1xuICAgIGxldCBiYXNlRGF0ZSA9IHNlbGVjdGVkRGF0ZSA/IGRheWpzKHNlbGVjdGVkRGF0ZSkgOiBkYXlqcygpOyAvLyBVc2UgY3VycmVudCBkYXRlL3RpbWUgYXMgYmFzZSBpZiBub3RoaW5nIGlzIHNlbGVjdGVkXG5cbiAgICAvLyBJZiBvbmx5IHRpbWUgaXMgY2hhbmdpbmcsIGVuc3VyZSB0aGUgZGF0ZSBwYXJ0IGlzIGZyb20gc2VsZWN0ZWREYXRlIG9yIGN1cnJlbnRNb250aCB2aWV3XG4gICAgaWYgKFxuICAgICAgc2VsZWN0ZWREYXRlICYmXG4gICAgICAobmV3RGF0ZVBhcnRzLmhvdXIgIT09IHVuZGVmaW5lZCB8fCBuZXdEYXRlUGFydHMubWludXRlICE9PSB1bmRlZmluZWQgfHwgbmV3RGF0ZVBhcnRzLnNlY29uZCAhPT0gdW5kZWZpbmVkKSAmJlxuICAgICAgbmV3RGF0ZVBhcnRzLnllYXIgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgbmV3RGF0ZVBhcnRzLm1vbnRoID09PSB1bmRlZmluZWQgJiZcbiAgICAgIG5ld0RhdGVQYXJ0cy5kYXkgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgYmFzZURhdGUgPSBkYXlqcyhzZWxlY3RlZERhdGUpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAhc2VsZWN0ZWREYXRlICYmXG4gICAgICAobmV3RGF0ZVBhcnRzLmhvdXIgIT09IHVuZGVmaW5lZCB8fCBuZXdEYXRlUGFydHMubWludXRlICE9PSB1bmRlZmluZWQgfHwgbmV3RGF0ZVBhcnRzLnNlY29uZCAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgLy8gaWYgbm8gZGF0ZSBpcyBzZWxlY3RlZCwgYnV0IHRpbWUgaXMgY2hhbmdlZCwgdXNlIHRoZSBjdXJyZW50IHZpZXcgb2YgdGhlIGNhbGVuZGFyIGZvciBkYXRlIHBhcnRcbiAgICAgIGJhc2VEYXRlID0gZGF5anMoY3VycmVudE1vbnRoKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdEYXRlID0gYmFzZURhdGVcbiAgICAgIC5zZXQoXCJ5ZWFyXCIsIG5ld0RhdGVQYXJ0cy55ZWFyID8/IGJhc2VEYXRlLnllYXIoKSlcbiAgICAgIC5zZXQoXCJtb250aFwiLCBuZXdEYXRlUGFydHMubW9udGggPz8gYmFzZURhdGUubW9udGgoKSkgLy8gbW9udGggaXMgMC1pbmRleGVkIGZvciBkYXlqc1xuICAgICAgLnNldChcImRhdGVcIiwgbmV3RGF0ZVBhcnRzLmRheSA/PyBiYXNlRGF0ZS5kYXRlKCkpXG4gICAgICAuc2V0KFwiaG91clwiLCBuZXdEYXRlUGFydHMuaG91ciA/PyAoaGFzVGltZVByZWNpc2lvbiA/IGJhc2VEYXRlLmhvdXIoKSA6IDApKVxuICAgICAgLnNldChcIm1pbnV0ZVwiLCBuZXdEYXRlUGFydHMubWludXRlID8/IChoYXNUaW1lUHJlY2lzaW9uID8gYmFzZURhdGUubWludXRlKCkgOiAwKSlcbiAgICAgIC5zZXQoXCJzZWNvbmRcIiwgbmV3RGF0ZVBhcnRzLnNlY29uZCA/PyAoaGFzVGltZVByZWNpc2lvbiA/IGJhc2VEYXRlLnNlY29uZCgpIDogMCkpO1xuXG4gICAgc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUudG9EYXRlKCkpO1xuICAgIC8vIHNldEN1cnJlbnRNb250aCBzaG91bGQgb25seSBiZSB1cGRhdGVkIGlmIHllYXIgb3IgbW9udGggY2hhbmdlcywgbm90IGp1c3QgdGltZVxuICAgIGlmIChuZXdEYXRlUGFydHMueWVhciAhPT0gdW5kZWZpbmVkIHx8IG5ld0RhdGVQYXJ0cy5tb250aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZXRDdXJyZW50TW9udGgobmV3RGF0ZS50b0RhdGUoKSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUoZGJGb3JtYXQgPyBuZXdEYXRlLmZvcm1hdChkYkZvcm1hdCkgOiBuZXdEYXRlLnRvSVNPU3RyaW5nKCkpO1xuXG4gICAgLy8gVXBkYXRlIGluZGl2aWR1YWwgaW5wdXQgZmllbGRzXG4gICAgaWYgKG5ld0RhdGVQYXJ0cy55ZWFyICE9PSB1bmRlZmluZWQpIHNldFllYXJWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLnllYXIpKTtcbiAgICBpZiAoaGFzVGltZVByZWNpc2lvbikge1xuICAgICAgaWYgKG5ld0RhdGVQYXJ0cy5ob3VyICE9PSB1bmRlZmluZWQpIHNldEhvdXJWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLmhvdXIpLnBhZFN0YXJ0KDIsIFwiMFwiKSk7XG4gICAgICBpZiAobmV3RGF0ZVBhcnRzLm1pbnV0ZSAhPT0gdW5kZWZpbmVkKSBzZXRNaW51dGVWYWx1ZShTdHJpbmcobmV3RGF0ZVBhcnRzLm1pbnV0ZSkucGFkU3RhcnQoMiwgXCIwXCIpKTtcbiAgICAgIGlmIChuZXdEYXRlUGFydHMuc2Vjb25kICE9PSB1bmRlZmluZWQpIHNldFNlY29uZFZhbHVlKFN0cmluZyhuZXdEYXRlUGFydHMuc2Vjb25kKS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgIH1cbiAgfTtcblxuICAvLyBIYW5kbGUgbW9udGggc2VsZWN0aW9uIGNoYW5nZVxuICBjb25zdCBoYW5kbGVNb250aENoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbW9udGhJbmRleCA9IHBhcnNlSW50KHZhbHVlKTtcbiAgICB1cGRhdGVEYXRlRnJvbUlucHV0cyh7IG1vbnRoOiBtb250aEluZGV4IH0pO1xuICB9O1xuXG4gIC8vIEhhbmRsZSB5ZWFyIGlucHV0IGNoYW5nZVxuICBjb25zdCBoYW5kbGVZZWFyQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgbmV3WWVhclN0ciA9IGUudGFyZ2V0LnZhbHVlO1xuICAgIHNldFllYXJWYWx1ZShuZXdZZWFyU3RyKTtcbiAgICBpZiAoL15cXGR7MSw0fSQvLnRlc3QobmV3WWVhclN0cikpIHtcbiAgICAgIGNvbnN0IHllYXIgPSBwYXJzZUludChuZXdZZWFyU3RyKTtcbiAgICAgIGlmIChuZXdZZWFyU3RyLmxlbmd0aCA9PT0gNCkge1xuICAgICAgICB1cGRhdGVEYXRlRnJvbUlucHV0cyh7IHllYXIgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRpbWVDaGFuZ2UgPSAocGFydDogXCJob3VyXCIgfCBcIm1pbnV0ZVwiIHwgXCJzZWNvbmRcIiwgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlSW50KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4obnVtZXJpY1ZhbHVlKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV3SG91ciA9IHBhcnQgPT09IFwiaG91clwiID8gbnVtZXJpY1ZhbHVlIDogcGFyc2VJbnQoaG91clZhbHVlKTtcbiAgICBjb25zdCBuZXdNaW51dGUgPSBwYXJ0ID09PSBcIm1pbnV0ZVwiID8gbnVtZXJpY1ZhbHVlIDogcGFyc2VJbnQobWludXRlVmFsdWUpO1xuICAgIGNvbnN0IG5ld1NlY29uZCA9IHBhcnQgPT09IFwic2Vjb25kXCIgPyBudW1lcmljVmFsdWUgOiBwYXJzZUludChzZWNvbmRWYWx1ZSk7XG5cbiAgICBpZiAocGFydCA9PT0gXCJob3VyXCIpIHNldEhvdXJWYWx1ZSh2YWx1ZS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgIGlmIChwYXJ0ID09PSBcIm1pbnV0ZVwiKSBzZXRNaW51dGVWYWx1ZSh2YWx1ZS5wYWRTdGFydCgyLCBcIjBcIikpO1xuICAgIGlmIChwYXJ0ID09PSBcInNlY29uZFwiKSBzZXRTZWNvbmRWYWx1ZSh2YWx1ZS5wYWRTdGFydCgyLCBcIjBcIikpO1xuXG4gICAgLy8gVXBkYXRlIG9ubHkgaWYgdGhlIHZhbHVlIGlzIGEgY29tcGxldGUgbnVtYmVyIGZvciB0aGF0IHBhcnRcbiAgICBjb25zdCBpc0NvbXBsZXRlSG91ciA9IHBhcnQgPT09IFwiaG91clwiICYmIHZhbHVlLmxlbmd0aCA+PSAxICYmIG51bWVyaWNWYWx1ZSA+PSAwICYmIG51bWVyaWNWYWx1ZSA8PSAyMztcbiAgICBjb25zdCBpc0NvbXBsZXRlTWludXRlID0gcGFydCA9PT0gXCJtaW51dGVcIiAmJiB2YWx1ZS5sZW5ndGggPj0gMSAmJiBudW1lcmljVmFsdWUgPj0gMCAmJiBudW1lcmljVmFsdWUgPD0gNTk7XG4gICAgY29uc3QgaXNDb21wbGV0ZVNlY29uZCA9IHBhcnQgPT09IFwic2Vjb25kXCIgJiYgdmFsdWUubGVuZ3RoID49IDEgJiYgbnVtZXJpY1ZhbHVlID49IDAgJiYgbnVtZXJpY1ZhbHVlIDw9IDU5O1xuXG4gICAgaWYgKFxuICAgICAgKHBhcnQgPT09IFwiaG91clwiICYmIGlzQ29tcGxldGVIb3VyKSB8fFxuICAgICAgKHBhcnQgPT09IFwibWludXRlXCIgJiYgaXNDb21wbGV0ZU1pbnV0ZSkgfHxcbiAgICAgIChwYXJ0ID09PSBcInNlY29uZFwiICYmIGlzQ29tcGxldGVTZWNvbmQpXG4gICAgKSB7XG4gICAgICB1cGRhdGVEYXRlRnJvbUlucHV0cyh7IGhvdXI6IG5ld0hvdXIsIG1pbnV0ZTogbmV3TWludXRlLCBzZWNvbmQ6IG5ld1NlY29uZCB9KTtcbiAgICB9XG4gIH07XG5cbiAgLy8gVXBkYXRlIHllYXIgdmFsdWUgd2hlbiBzZWxlY3RlZERhdGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZERhdGUpIHtcbiAgICAgIGNvbnN0IGRqc0RhdGUgPSBkYXlqcyhzZWxlY3RlZERhdGUpO1xuICAgICAgc2V0WWVhclZhbHVlKGRqc0RhdGUueWVhcigpLnRvU3RyaW5nKCkpO1xuICAgICAgaWYgKGhhc1RpbWVQcmVjaXNpb24pIHtcbiAgICAgICAgc2V0SG91clZhbHVlKGRqc0RhdGUuZm9ybWF0KFwiSEhcIikpO1xuICAgICAgICBzZXRNaW51dGVWYWx1ZShkanNEYXRlLmZvcm1hdChcIm1tXCIpKTtcbiAgICAgICAgc2V0U2Vjb25kVmFsdWUoZGpzRGF0ZS5mb3JtYXQoXCJzc1wiKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbc2VsZWN0ZWREYXRlLCBoYXNUaW1lUHJlY2lzaW9uXSk7XG5cbiAgLy8gVXBkYXRlIG1vbnRoIGFuZCB5ZWFyIHdoZW4gY2FsZW5kYXIgbW9udGggY2hhbmdlcyAoZS5nLiBieSBhcnJvdyBuYXZpZ2F0aW9uIGluIGNhbGVuZGFyKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50TW9udGgpIHtcbiAgICAgIC8vIERvIG5vdCB1cGRhdGUgeWVhclZhbHVlIGlmIHNlbGVjdGVkRGF0ZSBpcyBwcmVzZW50LCBhcyBpdCdzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHllYXJWYWx1ZVxuICAgICAgaWYgKCFzZWxlY3RlZERhdGUpIHtcbiAgICAgICAgc2V0WWVhclZhbHVlKGN1cnJlbnRNb250aC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2N1cnJlbnRNb250aCwgc2VsZWN0ZWREYXRlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1wci1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCI+XG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMCBwcy1wLTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1tYi0xIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17Y3VycmVudE1vbnRoVmFsdWV9IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZU1vbnRoQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJvcmRlci1wcmltYXJ5IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIk1vbnRoXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICB7bW9udGhzLm1hcCgobW9udGgpID0+IChcbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e21vbnRoLnZhbHVlfSB2YWx1ZT17bW9udGgudmFsdWV9PlxuICAgICAgICAgICAgICAgICAge21vbnRoLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdy0yMCBwcy10ZXh0LXJpZ2h0IHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1zaGFkb3ctbm9uZSBwcy1iZy1uZXV0cmFsLTIwMC80MFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICB2YWx1ZT17eWVhclZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVllYXJDaGFuZ2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlllYXJcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxEYXlQaWNrZXJXcmFwcGVyXG4gICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkRGF0ZX1cbiAgICAgICAgICBtb250aD17Y3VycmVudE1vbnRofVxuICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVDYWxlbmRhclNlbGVjdH1cbiAgICAgICAgICBvbk1vbnRoQ2hhbmdlPXtzZXRDdXJyZW50TW9udGh9XG4gICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgICB7aGFzVGltZVByZWNpc2lvbiAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LXN0YXJ0IHBzLWdhcC0xIHBzLW10LTFcIj5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXctMTYgcHMtdGV4dC1yaWdodCBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LW5vbmUgcHMtYmctbmV1dHJhbC0yMDAvNDBcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgdmFsdWU9e2hvdXJWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaW1lQ2hhbmdlKFwiaG91clwiLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSEhcIlxuICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgIG1heD17MjN9XG4gICAgICAgICAgICAgIG1heExlbmd0aD17Mn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Ojwvc3Bhbj5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXctMTYgcHMtdGV4dC1yaWdodCBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LW5vbmUgcHMtYmctbmV1dHJhbC0yMDAvNDBcIlxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgdmFsdWU9e21pbnV0ZVZhbHVlfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVRpbWVDaGFuZ2UoXCJtaW51dGVcIiwgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIm1tXCJcbiAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICBtYXg9ezU5fVxuICAgICAgICAgICAgICBtYXhMZW5ndGg9ezJ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPjo8L3NwYW4+XG4gICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy13LTE2IHBzLXRleHQtcmlnaHQgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1ub25lIHBzLWJnLW5ldXRyYWwtMjAwLzQwXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHZhbHVlPXtzZWNvbmRWYWx1ZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaW1lQ2hhbmdlKFwic2Vjb25kXCIsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJzc1wiXG4gICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgbWF4PXs1OX1cbiAgICAgICAgICAgICAgbWF4TGVuZ3RoPXsyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICA8Y29kZSBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+e2Zvcm1hdHRlZERhdGV9PC9jb2RlPlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgICBvblNldE5vdz17aGFuZGxlU2V0Tm93fVxuICAgICAgICBzaG93U2V0Tm93PXt0cnVlfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuLy8gQSB3cmFwcGVyIGNvbXBvbmVudCB0byBlbnN1cmUgcHJvcGVyIHByb3BzIGFyZSBwYXNzZWQgdG8gRGF5UGlja2VyXG5mdW5jdGlvbiBEYXlQaWNrZXJXcmFwcGVyKHtcbiAgc2VsZWN0ZWQsXG4gIG1vbnRoLFxuICBvblNlbGVjdCxcbiAgb25Nb250aENoYW5nZSxcbiAgZGlzYWJsZWQsXG59OiB7XG4gIHNlbGVjdGVkPzogRGF0ZTtcbiAgbW9udGg6IERhdGU7XG4gIG9uU2VsZWN0OiAoZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcbiAgb25Nb250aENoYW5nZTogKGRhdGU6IERhdGUpID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8Q2FsZW5kYXJcbiAgICAgIG1vZGU9XCJzaW5nbGVcIlxuICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgb25TZWxlY3Q9e29uU2VsZWN0fVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgbW9udGg9e21vbnRofVxuICAgICAgb25Nb250aENoYW5nZT17b25Nb250aENoYW5nZX1cbiAgICAgIGNsYXNzTmFtZT1cInBzLXctZnVsbFwiXG4gICAgICBjYXB0aW9uTGF5b3V0PVwiZHJvcGRvd25cIlxuICAgIC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgRGF5UGlja2VyIH0gZnJvbSBcInJlYWN0LWRheS1waWNrZXJcIjtcblxuaW1wb3J0IHsgYnV0dG9uVmFyaWFudHMgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IHR5cGUgQ2FsZW5kYXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBEYXlQaWNrZXI+ICYge1xuICBjYXB0aW9uTGFiZWxDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRheUNsYXNzTmFtZT86IHN0cmluZztcbiAgZGF5QnV0dG9uQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkcm9wZG93bnNDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGZvb3RlckNsYXNzTmFtZT86IHN0cmluZztcbiAgbW9udGhDbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vbnRoQ2FwdGlvbkNsYXNzTmFtZT86IHN0cmluZztcbiAgbW9udGhHcmlkQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBtb250aHNDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdlZWtDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdlZWtkYXlDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHdlZWtkYXlzQ2xhc3NOYW1lPzogc3RyaW5nO1xuICByYW5nZUVuZENsYXNzTmFtZT86IHN0cmluZztcbiAgcmFuZ2VNaWRkbGVDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJhbmdlU3RhcnRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdGVkQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZENsYXNzTmFtZT86IHN0cmluZztcbiAgaGlkZGVuQ2xhc3NOYW1lPzogc3RyaW5nO1xuICBvdXRzaWRlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICB0b2RheUNsYXNzTmFtZT86IHN0cmluZztcbiAgc2VsZWN0VHJpZ2dlckNsYXNzTmFtZT86IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIENhbGVuZGFyKHsgY2xhc3NOYW1lLCBjbGFzc05hbWVzLCBzaG93T3V0c2lkZURheXMgPSB0cnVlLCBoaWRlTmF2aWdhdGlvbiwgLi4ucHJvcHMgfTogQ2FsZW5kYXJQcm9wcykge1xuICBjb25zdCBfbW9udGhzQ2xhc3NOYW1lID0gY24oXCJyZWxhdGl2ZSBmbGV4IGZsZXgtY29sIGdhcC00IHNtOmZsZXgtcm93XCIsIHByb3BzLm1vbnRoc0NsYXNzTmFtZSk7XG4gIGNvbnN0IF9tb250aENhcHRpb25DbGFzc05hbWUgPSBjbihcInJlbGF0aXZlIGZsZXggaC03IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiLCBwcm9wcy5tb250aENhcHRpb25DbGFzc05hbWUpO1xuICBjb25zdCBfZHJvcGRvd25zQ2xhc3NOYW1lID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIixcbiAgICBoaWRlTmF2aWdhdGlvbiA/IFwicHMtdy1mdWxsXCIgOiBcInBzLWhpZGRlblwiLFxuICAgIHByb3BzLmRyb3Bkb3duc0NsYXNzTmFtZSxcbiAgKTtcbiAgY29uc3QgX2Zvb3RlckNsYXNzTmFtZSA9IGNuKFwicHMtcHQtMyBwcy10ZXh0LXhzXCIsIHByb3BzLmZvb3RlckNsYXNzTmFtZSk7XG4gIGNvbnN0IF93ZWVrZGF5c0NsYXNzTmFtZSA9IGNuKFwicHMtZmxleFwiLCBwcm9wcy53ZWVrZGF5c0NsYXNzTmFtZSk7XG4gIGNvbnN0IF93ZWVrZGF5Q2xhc3NOYW1lID0gY24oXCJwcy13LTkgcHMtdGV4dC14cyBwcy1mb250LW5vcm1hbCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgcHJvcHMud2Vla2RheUNsYXNzTmFtZSk7XG4gIGNvbnN0IF9jYXB0aW9uTGFiZWxDbGFzc05hbWUgPSBjbihcInBzLXRydW5jYXRlIHBzLXRleHQteHMgcHMtZm9udC1tZWRpdW1cIiwgcHJvcHMuY2FwdGlvbkxhYmVsQ2xhc3NOYW1lKTtcblxuICBjb25zdCBfbW9udGhHcmlkQ2xhc3NOYW1lID0gY24oXCJwcy1teC1hdXRvIHBzLW10LTRcIiwgcHJvcHMubW9udGhHcmlkQ2xhc3NOYW1lKTtcbiAgY29uc3QgX3dlZWtDbGFzc05hbWUgPSBjbihcInBzLW10LTAgcHMtZmxleCBwcy13LW1heCBwcy1pdGVtcy1zdGFydFwiLCBwcm9wcy53ZWVrQ2xhc3NOYW1lKTtcbiAgY29uc3QgX2RheUNsYXNzTmFtZSA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1zaXplLTkgcHMtZmxleC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1wLTAgcHMtdGV4dC14c1wiLFxuICAgIHByb3BzLmRheUNsYXNzTmFtZSxcbiAgKTtcbiAgY29uc3QgX2RheUJ1dHRvbkNsYXNzTmFtZSA9IGNuKFxuICAgIGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudDogXCJnaG9zdFwiIH0pLFxuICAgIFwicHMtc2l6ZS04IHBzLXJvdW5kZWQtbWQgcHMtcC0wIHBzLWZvbnQtbm9ybWFsIHBzLXRleHQteHMgcHMtdHJhbnNpdGlvbi1ub25lIGFyaWEtc2VsZWN0ZWQ6cHMtb3BhY2l0eS0xMDBcIixcbiAgICBwcm9wcy5kYXlCdXR0b25DbGFzc05hbWUsXG4gICk7XG5cbiAgY29uc3QgYnV0dG9uUmFuZ2VDbGFzc05hbWUgPVxuICAgIFwicHMtYmctYWNjZW50IHBzLVsmPmJ1dHRvbl06cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06cHMtaG92ZXI6cHMtYmctcHJpbWFyeSBbJj5idXR0b25dOnBzLWhvdmVyOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCI7XG4gIGNvbnN0IF9yYW5nZVN0YXJ0Q2xhc3NOYW1lID0gY24oYnV0dG9uUmFuZ2VDbGFzc05hbWUsIFwicHMtcm91bmRlZC1zLW1kXCIsIHByb3BzLnJhbmdlU3RhcnRDbGFzc05hbWUpO1xuICBjb25zdCBfcmFuZ2VFbmRDbGFzc05hbWUgPSBjbihidXR0b25SYW5nZUNsYXNzTmFtZSwgXCJwcy1yb3VuZGVkLWUtbWRcIiwgcHJvcHMucmFuZ2VFbmRDbGFzc05hbWUpO1xuICBjb25zdCBfcmFuZ2VNaWRkbGVDbGFzc05hbWUgPSBjbihcbiAgICBcInBzLWJnLWFjY2VudCAhcHMtdGV4dC1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06cHMtYmctdHJhbnNwYXJlbnQgWyY+YnV0dG9uXTohcHMtdGV4dC1mb3JlZ3JvdW5kIFsmPmJ1dHRvbl06aG92ZXI6cHMtYmctdHJhbnNwYXJlbnQgWyY+YnV0dG9uXTpob3ZlcjohcHMtdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgcHJvcHMucmFuZ2VNaWRkbGVDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9zZWxlY3RlZENsYXNzTmFtZSA9IGNuKFxuICAgIFwiWyY+YnV0dG9uXTpwcy1iZy1wcmltYXJ5IFsmPmJ1dHRvbl06cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgWyY+YnV0dG9uXTpwcy1ob3Zlcjpwcy1iZy1wcmltYXJ5IFsmPmJ1dHRvbl06cHMtaG92ZXI6cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICBcIlsmW2FyaWEtc2VsZWN0ZWRdPmJ1dHRvbl06cHMtYmctcHJpbWFyeSBbJlthcmlhLXNlbGVjdGVkXT5idXR0b25dOnBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgcHJvcHMuc2VsZWN0ZWRDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF90b2RheUNsYXNzTmFtZSA9IGNuKFwiWyY+YnV0dG9uXTpwcy1mb250LWJvbGQgWyY+YnV0dG9uXTpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsIHByb3BzLnRvZGF5Q2xhc3NOYW1lKTtcbiAgY29uc3QgX291dHNpZGVDbGFzc05hbWUgPSBjbihcbiAgICBcInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBwcy1vcGFjaXR5LTUwIGFyaWEtc2VsZWN0ZWQ6cHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGFyaWEtc2VsZWN0ZWQ6cHMtb3BhY2l0eS0zMFwiLFxuICAgIHByb3BzLm91dHNpZGVDbGFzc05hbWUsXG4gICk7XG4gIGNvbnN0IF9kaXNhYmxlZENsYXNzTmFtZSA9IGNuKFwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLW9wYWNpdHktNTBcIiwgcHJvcHMuZGlzYWJsZWRDbGFzc05hbWUpO1xuICBjb25zdCBfaGlkZGVuQ2xhc3NOYW1lID0gY24oXCJwcy1pbnZpc2libGUgcHMtZmxleC0xXCIsIHByb3BzLmhpZGRlbkNsYXNzTmFtZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RGF5UGlja2VyXG4gICAgICBtb2RlPVwic2luZ2xlXCJcbiAgICAgIGNhcHRpb25MYXlvdXQ9XCJsYWJlbFwiXG4gICAgICBoaWRlTmF2aWdhdGlvblxuICAgICAgc2hvd091dHNpZGVEYXlzPXtzaG93T3V0c2lkZURheXN9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtcC0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICBjbGFzc05hbWVzPXt7XG4gICAgICAgIGNhcHRpb25fbGFiZWw6IF9jYXB0aW9uTGFiZWxDbGFzc05hbWUsXG4gICAgICAgIGRheTogX2RheUNsYXNzTmFtZSxcbiAgICAgICAgZGF5X2J1dHRvbjogX2RheUJ1dHRvbkNsYXNzTmFtZSxcbiAgICAgICAgZHJvcGRvd25zOiBfZHJvcGRvd25zQ2xhc3NOYW1lLFxuICAgICAgICBmb290ZXI6IF9mb290ZXJDbGFzc05hbWUsXG4gICAgICAgIG1vbnRoOiBwcm9wcy5tb250aENsYXNzTmFtZSxcbiAgICAgICAgbW9udGhfY2FwdGlvbjogX21vbnRoQ2FwdGlvbkNsYXNzTmFtZSxcbiAgICAgICAgbW9udGhfZ3JpZDogX21vbnRoR3JpZENsYXNzTmFtZSxcbiAgICAgICAgbW9udGhzOiBfbW9udGhzQ2xhc3NOYW1lLFxuICAgICAgICB3ZWVrOiBfd2Vla0NsYXNzTmFtZSxcbiAgICAgICAgd2Vla2RheTogX3dlZWtkYXlDbGFzc05hbWUsXG4gICAgICAgIHdlZWtkYXlzOiBfd2Vla2RheXNDbGFzc05hbWUsXG4gICAgICAgIHJhbmdlX2VuZDogX3JhbmdlRW5kQ2xhc3NOYW1lLFxuICAgICAgICByYW5nZV9taWRkbGU6IF9yYW5nZU1pZGRsZUNsYXNzTmFtZSxcbiAgICAgICAgcmFuZ2Vfc3RhcnQ6IF9yYW5nZVN0YXJ0Q2xhc3NOYW1lLFxuICAgICAgICBzZWxlY3RlZDogX3NlbGVjdGVkQ2xhc3NOYW1lLFxuICAgICAgICBkaXNhYmxlZDogX2Rpc2FibGVkQ2xhc3NOYW1lLFxuICAgICAgICBoaWRkZW46IF9oaWRkZW5DbGFzc05hbWUsXG4gICAgICAgIG91dHNpZGU6IF9vdXRzaWRlQ2xhc3NOYW1lLFxuICAgICAgICB0b2RheTogX3RvZGF5Q2xhc3NOYW1lLFxuICAgICAgICBuYXY6IFwicHMtaGlkZGVuXCIsXG4gICAgICAgIC4uLmNsYXNzTmFtZXMsXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59XG5DYWxlbmRhci5kaXNwbGF5TmFtZSA9IFwiQ2FsZW5kYXJcIjtcblxuZXhwb3J0IHsgQ2FsZW5kYXIgfTtcbiIsICJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUlucHV0UHJvcHMge1xuICBpbml0aWFsVmFsdWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnB1dChwcm9wczogVXNlSW5wdXRQcm9wcykge1xuICBjb25zdCB7IGluaXRpYWxWYWx1ZSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KGluaXRpYWxWYWx1ZSA/PyBcIlwiKTtcblxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBzZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZSwgc2V0VmFsdWUgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBiYWRnZVZhcmlhbnRzIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW51bUlucHV0UHJvcHMge1xuICBjb2x1bW46IENvbHVtbjtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVudW1JbnB1dChwcm9wczogRW51bUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgY29sdW1uLCB2YWx1ZSwgb3B0aW9ucyA9IFtdLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWUpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IChvcHRpb246IHN0cmluZykgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShvcHRpb24pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoY3VycmVudFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtjdXJyZW50VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbCwgdmFsdWVdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTsgLy8gUmVzZXQgbnVsbCBzdGF0ZSBhcyB3ZWxsXG4gIH07XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtZm9udC1tb25vIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLXB4LTIgcHMtcHktMCBwcy13LWZ1bGwgcHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAge2N1cnJlbnRWYWx1ZX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWZsZXgtd3JhcCBwcy1nYXAtMiBwcy1wLTIgcHMtbWluLXctW3ZhcigtLXJhZGl4LXBvcG92ZXItdHJpZ2dlci13aWR0aCldIHBzLW1heC13LVs1MDBweF0gdy1mdWxsIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtb3ZlcmZsb3cteS1zY3JvbGwgcHMtbWF4LWgtMzJcIj5cbiAgICAgICAge29wdGlvbnMubWFwKChvcHRpb24pID0+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+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEFycm93UmlnaHQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgdXVpZCBmcm9tIFwic2hvcnQtdXVpZFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiQC91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VGaWx0ZXJpbmcgfSBmcm9tIFwiQC91aS9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIkAvdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIExpbmsocHJvcHM6IHsgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47IGNvbHVtbjogQ29sdW1uIH0pIHtcbiAgY29uc3QgeyBjZWxsLCBjb2x1bW4gfSA9IHByb3BzO1xuICBjb25zdCB7IGZrU2NoZW1hLCBma1RhYmxlLCBma0NvbHVtbiB9ID0gY29sdW1uO1xuICBjb25zdCB7IGhhbmRsZVNjaGVtYUNoYW5nZSwgaGFuZGxlVGFibGVDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG4gIGNvbnN0IHsgc2V0QXBwbGllZEZpbHRlciB9ID0gdXNlRmlsdGVyaW5nKCk7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuXG4gIGlmIChma1NjaGVtYSAhPT0gbnVsbCAmJiBma1RhYmxlICE9PSBudWxsICYmIGZrQ29sdW1uICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGFibGUgPSBpbnRyb3NwZWN0aW9uLnNjaGVtYXNbZmtTY2hlbWFdPy50YWJsZXNbZmtUYWJsZV07XG5cbiAgICBpZiAodGFibGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHNpemU9e1wieHNcIn1cbiAgICAgICAgICB2YXJpYW50PXtcIm91dGxpbmVcIn1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhhbmRsZVNjaGVtYUNoYW5nZShma1NjaGVtYSk7XG4gICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyKHtcbiAgICAgICAgICAgICAga2luZDogXCJGaWx0ZXJHcm91cFwiLFxuICAgICAgICAgICAgICBpZDogdXVpZC5nZW5lcmF0ZSgpLFxuICAgICAgICAgICAgICBhZnRlcjogXCJhbmRcIixcbiAgICAgICAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGtpbmQ6IFwiQ29sdW1uRmlsdGVyXCIsXG4gICAgICAgICAgICAgICAgICBpZDogdXVpZC5nZW5lcmF0ZSgpLFxuICAgICAgICAgICAgICAgICAgY29sdW1uOiBma0NvbHVtbixcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcIj1cIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBjZWxsLmdldFZhbHVlKCksXG4gICAgICAgICAgICAgICAgICBhZnRlcjogXCJhbmRcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxBcnJvd1JpZ2h0IHNpemU9ezEyfSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBUYWJsZSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsga2V5TWFwLCB1c2VRdWVyeVN0YXRlLCB1c2VRdWVyeVN0YXRlcyB9IGZyb20gXCIuL251cXNcIjtcbmltcG9ydCB7IElOSVRJQUxfREFUQV9VUERBVEVEX0FULCB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4vdXNlLWludHJvc3BlY3Rpb25cIjtcblxuLyoqXG4gKiBIb29rIHRvIGVuY2Fwc3VsYXRlIGFsbCBsb2dpYyBmb3IgbWFuYWdpbmcgdGhlIGFjdGl2ZSB0YWJsZSBzZWxlY3Rpb24uXG4gKiBIYW5kbGVzIHN5bmNpbmcgd2l0aCBVUkwgcGFyYW1zLCBkZWZhdWx0IHNlbGVjdGlvbiwgYW5kIGV4cG9zZXMgYSBzaW1wbGUgQVBJIGZvciBjb25zdW1lcnMuXG4gKiBTaG91bGQgb25seSBiZSB1c2VkIHdpdGhpbiBTdHVkaW8gY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgYWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVTY2hlbWEsIGFkYXB0ZXIsIGVtaXRUZWxlbWV0cnlFdmVudCB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgZGF0YVVwZGF0ZWRBdCB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCBpc0xvYWRpbmcgPSBkYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVDtcblxuICBjb25zdCBbdGFibGVBbmRTY2hlbWEsIHNldFRhYmxlQW5kU2NoZW1hXSA9IHVzZVF1ZXJ5U3RhdGVzKFxuICAgIGtleU1hcCh7XG4gICAgICB0YWJsZToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgICAgIHBhcnNlOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdixcbiAgICAgICAgc2VyaWFsaXplOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiA/PyBcIlwiLFxuICAgICAgfSxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgICAgIHBhcnNlOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiB8fCBhZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJwdWJsaWNcIixcbiAgICAgICAgc2VyaWFsaXplOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiB8fCBhZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJwdWJsaWNcIixcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG5cbiAgLy8gQWRkIHF1ZXJ5IHN0YXRlIGZvciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtc1xuICBjb25zdCBbLCBzZXRQYWdlUGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInBhZ2VJbmRleFwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG4gIGNvbnN0IFssIHNldFNvcnRQYXJhbV0gPSB1c2VRdWVyeVN0YXRlPHN0cmluZyB8IG51bGw+KFwic29ydFwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG5cbiAgLy8gR2V0IGFsbCB0YWJsZXMgZm9yIHRoZSBjdXJyZW50IHNjaGVtYSBmcm9tIFVSTCBvciBkZWZhdWx0XG4gIGNvbnN0IHRhYmxlczogVGFibGVbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIC8vIEFsd2F5cyB1c2UgdGhlIGFjdGl2ZVNjaGVtYSBmcm9tIGNvbnRleHRcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXNbYWN0aXZlU2NoZW1hXT8udGFibGVzIHx8IHt9KTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hcywgYWN0aXZlU2NoZW1hXSk7XG5cbiAgLy8gQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiB0YWJsZXMgYWNyb3NzIGFsbCBzY2hlbWFzXG4gIGNvbnN0IHRvdGFsVGFibGVDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hcykucmVkdWNlKChzdW0sIHNjaGVtYSkgPT4ge1xuICAgICAgcmV0dXJuIHN1bSArIE9iamVjdC5rZXlzKHNjaGVtYS50YWJsZXMpLmxlbmd0aDtcbiAgICB9LCAwKTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hc10pO1xuXG4gIGNvbnN0IFtmaXJzdFRhYmxlXSA9IHRhYmxlcztcblxuICAvLyBFZmZlY3QgdG8gc3luYyBhY3RpdmUgdGFibGUgd2l0aCBVUkwgcGFyYW0gYW5kIGRlZmF1bHRzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzTG9hZGluZykgcmV0dXJuO1xuICAgIC8vIElmIHNjaGVtYSBhbmQgdGFibGUgcGFyYW1zIGluIFVSTCwgdHJ5IHRvIHNldCB0aGF0IHRhYmxlXG4gICAgaWYgKHRhYmxlQW5kU2NoZW1hPy50YWJsZSAmJiB0YWJsZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gTG9vayBmb3IgYSB0YWJsZSB0aGF0IG1hdGNoZXMgYm90aCBuYW1lIGFuZCBzY2hlbWEgZnJvbSBVUkwgcGFyYW1zXG4gICAgICBjb25zdCB0YWJsZUZyb21QYXJhbSA9IHRhYmxlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IHRhYmxlQW5kU2NoZW1hLnRhYmxlICYmIHQuc2NoZW1hID09PSBhY3RpdmVTY2hlbWEpO1xuXG4gICAgICBpZiAodGFibGVGcm9tUGFyYW0pIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUodGFibGVGcm9tUGFyYW0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIG5vIHNjaGVtYS90YWJsZSBwYXJhbXMgb3Igbm90IGZvdW5kLCBzZXQgZmlyc3QgdGFibGUgYXMgZGVmYXVsdFxuICAgIGlmICh0YWJsZXMubGVuZ3RoID4gMCAmJiAhYWN0aXZlVGFibGUpIHtcbiAgICAgIHNldEFjdGl2ZVRhYmxlKGZpcnN0VGFibGUgfHwgbnVsbCk7XG4gICAgICBpZiAoZmlyc3RUYWJsZSkge1xuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IGZpcnN0VGFibGUubmFtZSwgc2NoZW1hOiBhY3RpdmVTY2hlbWEgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNMb2FkaW5nLCB0YWJsZUFuZFNjaGVtYSwgdGFibGVzLCBmaXJzdFRhYmxlLCBhY3RpdmVUYWJsZSwgYWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWFdKTtcblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBhY3RpdmUgdGFibGUgYW5kIHVwZGF0ZSB0aGUgVVJMIHBhcmFtLlxuICAgKiBBbHNvIGNsZWFycyBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXMuXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWJsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdUYWJsZTogVGFibGUpID0+IHtcbiAgICAgIGlmIChhY3RpdmVUYWJsZSAhPT0gbmV3VGFibGUpIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobmV3VGFibGUpO1xuICAgICAgICAvLyBFbnN1cmUgYm90aCB0YWJsZSBhbmQgc2NoZW1hIGFyZSBhbHdheXMgaW5jbHVkZWQgaW4gdGhlIFVSTFxuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHtcbiAgICAgICAgICB0YWJsZTogbmV3VGFibGUubmFtZSxcbiAgICAgICAgICBzY2hlbWE6IG5ld1RhYmxlLnNjaGVtYSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIENsZWFyIHBhZ2luYXRpb24gYW5kIHNvcnRpbmcgcGFyYW1zIHdoZW4gc3dpdGNoaW5nIHRhYmxlc1xuICAgICAgICB2b2lkIHNldFBhZ2VQYXJhbShudWxsKTtcbiAgICAgICAgdm9pZCBzZXRTb3J0UGFyYW0obnVsbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlLCBzZXRUYWJsZUFuZFNjaGVtYSwgc2V0UGFnZVBhcmFtLCBzZXRTb3J0UGFyYW1dLFxuICApO1xuXG4gIC8vIEhhbmRsZSBzY2hlbWEgY2hhbmdlXG4gIGNvbnN0IGhhbmRsZVNjaGVtYUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdTY2hlbWE6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKG5ld1NjaGVtYSAhPT0gYWN0aXZlU2NoZW1hKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKG51bGwpO1xuICAgICAgICBzZXRBY3RpdmVTY2hlbWEobmV3U2NoZW1hKTtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBudWxsLCBzY2hlbWE6IG5ld1NjaGVtYSB9KTtcbiAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWEsIHNldFBhZ2VQYXJhbSwgc2V0U29ydFBhcmFtXSxcbiAgKTtcblxuICAvLyBTeW5jIFVSTCBzY2hlbWEgcGFyYW1ldGVyIHdpdGggYWN0aXZlU2NoZW1hIGZyb20gY29udGV4dFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIE9ubHkgdXBkYXRlIFVSTCBpZiB0aGUgc2NoZW1hIGZyb20gVVJMIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhY3RpdmVTY2hlbWFcbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnNjaGVtYSAhPT0gYWN0aXZlU2NoZW1hICYmICFpc0xvYWRpbmcpIHtcbiAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoKHByZXYpID0+ICh7IC4uLnByZXYsIHNjaGVtYTogYWN0aXZlU2NoZW1hIH0pKTtcbiAgICB9XG4gIH0sIFthY3RpdmVTY2hlbWEsIHRhYmxlQW5kU2NoZW1hPy5zY2hlbWEsIHNldFRhYmxlQW5kU2NoZW1hLCBpc0xvYWRpbmddKTtcblxuICAvLyBTeW5jIGFjdGl2ZVNjaGVtYSBpbiBjb250ZXh0IHdpdGggVVJMIHNjaGVtYSBwYXJhbWV0ZXJcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBVcGRhdGUgdGhlIGFjdGl2ZVNjaGVtYSBpbiBjb250ZXh0IHdoZW4gVVJMIHNjaGVtYSBwYXJhbSBjaGFuZ2VzXG4gICAgaWYgKHRhYmxlQW5kU2NoZW1hPy5zY2hlbWEgJiYgdGFibGVBbmRTY2hlbWEuc2NoZW1hICE9PSBhY3RpdmVTY2hlbWEpIHtcbiAgICAgIHNldEFjdGl2ZVNjaGVtYSh0YWJsZUFuZFNjaGVtYS5zY2hlbWEpO1xuICAgIH1cbiAgfSwgW3RhYmxlQW5kU2NoZW1hPy5zY2hlbWEsIGFjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlU2NoZW1hXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGF0YVVwZGF0ZWRBdCAhPT0gLTEpIHtcbiAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCh7XG4gICAgICAgIGV2ZW50OiBcInN0dWRpb19sYXVuY2hlZFwiLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgZXZlbnRfaWQ6IHV1aWR2NCgpLFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIHRhYmxlX2NvdW50OiB0b3RhbFRhYmxlQ291bnQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFt0YWJsZXMsIGVtaXRUZWxlbWV0cnlFdmVudCwgZGF0YVVwZGF0ZWRBdCwgdG90YWxUYWJsZUNvdW50XSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0YWJsZXMsXG4gICAgYWN0aXZlVGFibGUsXG4gICAgYWN0aXZlU2NoZW1hLFxuICAgIGlzTG9hZGluZyxcbiAgICBoYW5kbGVUYWJsZUNoYW5nZSxcbiAgICBoYW5kbGVTY2hlbWFDaGFuZ2UsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlUXVlcnkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB0eXBlIHsgSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgSU5JVElBTF9EQVRBX1VQREFURURfQVQgPSAtMTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUludHJvc3BlY3Rpb24oKSB7XG4gIGNvbnN0IHsgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBpbml0aWFsRGF0YToge1xuICAgICAgc2NoZW1hczoge1xuICAgICAgICBbYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwiZGJcIl06IHtcbiAgICAgICAgICB0YWJsZXM6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRpbWV6b25lOiBcIlVUQ1wiLFxuICAgICAgZmlsdGVyT3BlcmF0b3JzOiBbXSxcbiAgICB9IHNhdGlzZmllcyBJbnRyb3NwZWN0aW9uLFxuICAgIGluaXRpYWxEYXRhVXBkYXRlZEF0OiBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCxcbiAgICBxdWVyeUZuOiBhc3luYyAoeyBzaWduYWwgfSkgPT4ge1xuICAgICAgY29uc3QgW2Vycm9yLCBpbnRyb3NwZWN0aW9uXSA9IGF3YWl0IGFkYXB0ZXIuaW50cm9zcGVjdCh7IGFib3J0U2lnbmFsOiBzaWduYWwgfSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludHJvc3BlY3Rpb247XG4gICAgfSxcbiAgICBxdWVyeUtleTogW1wiaW50cm9zcGVjdGlvblwiXSxcbiAgICAvLyBpZiBpcyBpbml0aWFsIGRhdGEsIHJlZmV0Y2ggaW1tZWRpYXRlbHksIG90aGVyd2lzZSwgbmV2ZXIgcmVmZXRjaCBhdXRvbWF0aWNhbGx5IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgIC8vIHdlIGNhbiBzdGlsbCByZWZldGNoIG1hbnVhbGx5IHVzaW5nIHRoZSBxdWVyeSBjbGllbnQgLSBwcm9iYWJseSB0cmlnZ2VyZWQgYnkgYSBidXR0b24uXG4gICAgc3RhbGVUaW1lOiAoY3R4KSA9PiAoY3R4LnN0YXRlLmRhdGFVcGRhdGVkQXQgPT09IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID8gMCA6IEluZmluaXR5KSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgQ29sdW1uRGVmLCBUYWJsZSwgdXNlUmVhY3RUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50VHlwZSwgRGlzcGF0Y2gsIFNldFN0YXRlQWN0aW9uIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBvbWl0IH0gZnJvbSBcInJlbWVkYVwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcblxuaW1wb3J0IHsgdXNlSXNJbnNlcnRpbmcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWlzLWluc2VydGluZ1wiO1xuaW1wb3J0IHsgQ2VsbFByb3BzIH0gZnJvbSBcIi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBFbXB0eUNlbGwgfSBmcm9tIFwiLi9jZWxsL0VtcHR5Q2VsbFwiO1xuaW1wb3J0IHsgZ2V0Q2VsbCB9IGZyb20gXCIuL2NlbGwvZ2V0LWNlbGxcIjtcbmltcG9ydCB7IFdyaXRlYWJsZUNlbGwgfSBmcm9tIFwiLi9jZWxsL1dyaXRlYWJsZUNlbGxcIjtcbmltcG9ydCB7IGdldENvbHVtblBpbm5pbmdTdHlsZXMgfSBmcm9tIFwiLi9ncmlkL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nXCI7XG5pbXBvcnQgeyBnZXRJbnB1dCB9IGZyb20gXCIuL2lucHV0L2dldC1pbnB1dFwiO1xuXG50eXBlIFByb3BzID0ge1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBzdGFnZWRSb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICBzZXRTdGFnZWRSb3dzOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPj47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gU3RhZ2VkUm93cyhwcm9wczogUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZTogcGFyZW50VGFibGUsIHN0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3MgfSA9IHByb3BzO1xuICBjb25zdCByZWFkb25seSA9IEJvb2xlYW4odXNlSXNJbnNlcnRpbmcoKSk7XG5cbiAgZnVuY3Rpb24gdXBkYXRlU3RhZ2VkUm93KHJvd0luZGV4OiBudW1iZXIsIHBhcnRpYWxSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgc2V0U3RhZ2VkUm93cygocHJldlJvd3MpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Jvd3MgPSBbLi4ucHJldlJvd3NdO1xuICAgICAgbmV3Um93c1tyb3dJbmRleF0gPSB7IC4uLm5ld1Jvd3Nbcm93SW5kZXhdLCAuLi5wYXJ0aWFsUm93IH07XG5cbiAgICAgIHJldHVybiBuZXdSb3dzO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY29sdW1uRGVmcyA9IE9iamVjdC52YWx1ZXMocGFyZW50VGFibGUub3B0aW9ucy5jb2x1bW5zKS5tYXAoKGNvbHVtbikgPT4ge1xuICAgIGlmIChjb2x1bW4uaWQgPT09IFwiX19wc19zZWxlY3RcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICBjZWxsKCkge1xuICAgICAgICAgIHJldHVybiAoKSA9PiA8RW1wdHlDZWxsIC8+O1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29sdW1uLFxuICAgICAgY2VsbCh7IGNlbGwgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfSkgPT4gKFxuICAgICAgICAgIDxXcml0ZWFibGVDZWxsXG4gICAgICAgICAgICBjZWxsQ29tcG9uZW50PXtnZXRDZWxsKHsgY2VsbCwgY29sdW1uOiBjb2x1bW4ubWV0YSBhcyBDb2x1bW4gfSl9XG4gICAgICAgICAgICBsaW5rQ29tcG9uZW50PXtudWxsfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4ubWV0YSBhcyBDb2x1bW4sXG4gICAgICAgICAgICAgIG9uU3VibWl0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlU3RhZ2VkUm93KHByb3BzLnJvd0luZGV4LCB7IFtjb2x1bW4uaWQhXTogdmFsdWUgfSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHJlYWRvbmx5LFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgfSk7XG5cbiAgY29uc3QgdGFibGUgPSB1c2VSZWFjdFRhYmxlKHtcbiAgICAuLi5wYXJlbnRUYWJsZS5vcHRpb25zLFxuICAgIGNvbHVtbnM6IGNvbHVtbkRlZnMsXG4gICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgb25QYWdpbmF0aW9uQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgb25Tb3J0aW5nQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgZGF0YTogc3RhZ2VkUm93cyxcbiAgICBzdGF0ZTogb21pdChwYXJlbnRUYWJsZS5vcHRpb25zLnN0YXRlLCBbXCJwYWdpbmF0aW9uXCIsIFwic29ydGluZ1wiXSksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHt0YWJsZS5nZXRSb3dNb2RlbCgpLnJvd3MubWFwKChyb3csIGkpID0+IChcbiAgICAgICAgPFRhYmxlUm93IGtleT17aX0+XG4gICAgICAgICAge3Jvdy5nZXRWaXNpYmxlQ2VsbHMoKS5tYXAoKGNlbGwsIGopID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICB0eXBlIENlbGwgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPiAmIHsgcm93SW5kZXg6IG51bWJlciB9PjtcbiAgICAgICAgICAgICAgY29uc3QgQ2VsbCA9IGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsKGNlbGwuZ2V0Q29udGV4dCgpKSBhcyBDZWxsO1xuICAgICAgICAgICAgICByZXR1cm4gPENlbGwga2V5PXtqfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfSByb3dJbmRleD17aX0gLz47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHsgVGFibGUyIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBTZWxlY3QsIFNlbGVjdENvbnRlbnQsIFNlbGVjdEl0ZW0sIFNlbGVjdFRyaWdnZXIsIFNlbGVjdFZhbHVlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc2VsZWN0XCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NrZWxldG9uXCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZSB9IGZyb20gXCIuLi9ob29rcy91c2UtYWN0aXZlLXRhYmxlXCI7XG5pbXBvcnQgeyB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcblxudHlwZSBOYXZpZ2F0aW9uUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn0gJiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG5cbmV4cG9ydCBmdW5jdGlvbiBOYXZpZ2F0aW9uKHsgY2xhc3NOYW1lIH06IE5hdmlnYXRpb25Qcm9wcykge1xuICAvLyBVc2UgdGhlIGN1c3RvbSBob29rIHRvIGdldCBhbGwgbmVjZXNzYXJ5IHN0YXRlIGFuZCBoYW5kbGVyc1xuICBjb25zdCB7IHRhYmxlcywgYWN0aXZlVGFibGUsIGlzTG9hZGluZywgaGFuZGxlVGFibGVDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG5cbiAgY29uc3Qgc2lkZUJhckNsYXNzZXMgPSBjbihcbiAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy00OCBwcy1vdmVyZmxvdy15LWF1dG8gcHMtbWF4LWgtZnVsbCBwcy1taW4taC0wIHBzLXRleHQtY2FyZC1mb3JlZ3JvdW5kIHBzLXNoYWRvdy14c1wiLFxuICAgIGNsYXNzTmFtZSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzaWRlQmFyQ2xhc3Nlc30+XG4gICAgICA8TmF2aWdhdGlvbi5TY2hlbWFTZWxlY3RvciAvPlxuXG4gICAgICA8TmF2aWdhdGlvbi5CbG9jayBsYWJlbD1cIlRhYmxlc1wiPlxuICAgICAgICB7dGFibGVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgdGFibGVzLm1hcCgodGFibGUpID0+IChcbiAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgJHt0YWJsZS5zY2hlbWF9LSR7dGFibGUubmFtZX1gfVxuICAgICAgICAgICAgICBhc0NoaWxkXG4gICAgICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVUYWJsZSA9PT0gdGFibGV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBzLXB5LTEgcHMtZm9udC1tb25vIHBzLXRleHQteHMgcHMtdGV4dC1mb3JlZ3JvdW5kLzYwIGhvdmVyOnBzLXRleHQtZm9yZWdyb3VuZCBwcy10cmFuc2l0aW9uLWFsbCBwcy1jdXJzb3ItcG9pbnRlciBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtYmctc2xhdGUtMjAwIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1mb3JlZ3JvdW5kIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy10ZXh0LWZvcmVncm91bmRgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YSBocmVmPXtgI3RhYmxlPSR7dGFibGUubmFtZX0mc2NoZW1hPSR7dGFibGUuc2NoZW1hfWB9Pnt0YWJsZS5uYW1lfTwvYT5cbiAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICkgOiBpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgQXJyYXkoNClcbiAgICAgICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKChfLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtIGtleT17aW5kZXh9IHdyYXBDaGlsZHJlbkluU3Bhbj17ZmFsc2V9PlxuICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTMgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgICApKVxuICAgICAgICApIDogKFxuICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0+Tm8gdGFibGVzIGZvdW5kPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICl9XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IEJsb2NrID0gKHsgY2xhc3NOYW1lLCBsYWJlbCwgY2hpbGRyZW4sIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIHsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gey4uLnByb3BzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgICAgPFRhYmxlMiBzaXplPXsxNn0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCIgLz5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW1cIj57bGFiZWx9PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5hdiBhcmlhLWxhYmVsPXtsYWJlbH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtcHggcHMtcGItMyBwcy1wLTJcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBJdGVtID0gKHtcbiAgY2xhc3NOYW1lLFxuICBhc0NoaWxkID0gZmFsc2UsXG4gIGlzQWN0aXZlLFxuICBzaXplLFxuICBjaGlsZHJlbixcbiAgd3JhcENoaWxkcmVuSW5TcGFuID0gdHJ1ZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiYnV0dG9uXCI+ICYge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCI7XG4gIHdyYXBDaGlsZHJlbkluU3Bhbj86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudS1idXR0b25cIlxuICAgICAgZGF0YS1zaXplPXtzaXplfVxuICAgICAgZGF0YS1hY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1weS0xLjUgcHMtcHgtMiBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXJvdW5kZWQtbWQgcHMtZmxleCBwcy1nYXAtMiBwcy1pdGVtcy1jZW50ZXIgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy10cmFuc3BhcmVudFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHt3cmFwQ2hpbGRyZW5JblNwYW4gPyA8c3BhbiBjbGFzc05hbWU9XCJwcy10cnVuY2F0ZVwiPntjaGlsZHJlbn08L3NwYW4+IDogY2hpbGRyZW59XG4gICAgPC9Db21wPlxuICApO1xufTtcblxuY29uc3QgU2NoZW1hU2VsZWN0b3IgPSAoKSA9PiB7XG4gIC8vIEdldCBzY2hlbWFzIGZyb20gaW50cm9zcGVjdGlvbiBhbmQgYWN0aXZlIHNjaGVtYSBtYW5hZ2VtZW50XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgaXNMb2FkaW5nOiBpc0ludHJvc3BlY3Rpb25Mb2FkaW5nIH0gPSB1c2VJbnRyb3NwZWN0aW9uKCk7XG4gIGNvbnN0IHsgYWN0aXZlU2NoZW1hLCBoYW5kbGVTY2hlbWFDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG5cbiAgLy8gRXh0cmFjdCBzY2hlbWEgbmFtZXMgZnJvbSBpbnRyb3NwZWN0aW9uIGRhdGFcbiAgY29uc3Qgc2NoZW1hTmFtZXMgPSBPYmplY3Qua2V5cyhpbnRyb3NwZWN0aW9uLnNjaGVtYXMgfHwge30pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy1wdC00IHBzLXBiLTIgcHMtcHgtNCBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctc2xhdGUtNTAvNTAgcHMtYmFja2Ryb3AtYmx1ci1zbVwiPlxuICAgICAgPFNlbGVjdCB2YWx1ZT17YWN0aXZlU2NoZW1hfSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVTY2hlbWFDaGFuZ2V9PlxuICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy10ZXh0LXhzXCIgbGFiZWw9XCJTY2hlbWFcIj5cbiAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJTZWxlY3Qgc2NoZW1hXCIgLz5cbiAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICB7aXNJbnRyb3NwZWN0aW9uTG9hZGluZyA/IChcbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibG9hZGluZ1wiPkxvYWRpbmcgc2NoZW1hcy4uLjwvU2VsZWN0SXRlbT5cbiAgICAgICAgICApIDogc2NoZW1hTmFtZXMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgIHNjaGVtYU5hbWVzLm1hcCgoc2NoZW1hKSA9PiAoXG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIGtleT17c2NoZW1hfSB2YWx1ZT17c2NoZW1hfSBjbGFzc05hbWU9XCJwcy10ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAge3NjaGVtYX1cbiAgICAgICAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJuby1zY2hlbWFzXCI+Tm8gc2NoZW1hcyBmb3VuZDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICA8L1NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbk5hdmlnYXRpb24uQmxvY2sgPSBCbG9jaztcbk5hdmlnYXRpb24uSXRlbSA9IEl0ZW07XG5OYXZpZ2F0aW9uLlNjaGVtYVNlbGVjdG9yID0gU2NoZW1hU2VsZWN0b3I7XG4iXSwKICAibWFwcGluZ3MiOiAiNE1BQUEsT0FBUyxtQkFBQUEsR0FBaUIsVUFBQUMsT0FBYyxlQ0N4QyxPQUEwQixRQUFBQyxPQUFZLE9DcUJ0QyxJQUFNQyxHQUF1QixJQUVoQkMsR0FBeUJDLEdBQXlCLENBQzNELElBQU1DLEVBQVdDLEdBQWVGLENBQU0sRUFDaEMsQ0FBRUcsdUJBQUFBLEVBQXdCQywrQkFBQUEsQ0FBZ0MsRUFBR0osRUEwQm5FLE1BQU8sQ0FDSEssZ0JBekJxQkMsR0FBcUIsQ0FDMUMsSUFBTUMsRUFBYUQsRUFBVUUsTUFBTVYsRUFBb0IsRUFHdkQsT0FBSVMsRUFBVyxDQUFDLElBQU0sSUFBTUEsRUFBV0UsU0FBVyxHQUM5Q0YsRUFBV0csTUFBSyxFQUdiQyxHQUFrQkosRUFBWU4sQ0FBUSxHQUFLVyxHQUErQk4sQ0FBUyxDQUM5RixFQWlCSU8sNEJBZmdDQSxDQUNoQ0MsRUFDQUMsSUFDQSxDQUNBLElBQU1DLEVBQVliLEVBQXVCVyxDQUFZLEdBQUssQ0FBQSxFQUUxRCxPQUFJQyxHQUFzQlgsRUFBK0JVLENBQVksRUFDMUQsQ0FBQyxHQUFHRSxFQUFXLEdBQUdaLEVBQStCVSxDQUFZLENBQUUsRUFHbkVFLENBQ1gsRUFNSixFQUVNTCxHQUFvQkEsQ0FDdEJKLEVBQ0FVLElBQ2tDLENBQ2xDLEdBQUlWLEVBQVdFLFNBQVcsRUFDdEIsT0FBT1EsRUFBZ0JILGFBRzNCLElBQU1J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ZUFBaUJ3QixHL0hyR2pCLGNBQUFhLEdBb0JMLFFBQUFDLE9BcEJLLG9CQUxKLFNBQVNDLEdBQU9DLEVBQW9CLENBQ3pDLEdBQU0sQ0FBRSxRQUFBQyxFQUFTLFFBQUFDLEVBQVMsaUJBQUFDLENBQWlCLEVBQUlILEVBRS9DLE9BQUtDLEVBTUhKLEdBQUNPLEdBQUEsQ0FBc0IsUUFBU0gsRUFBUyxRQUFTQyxFQUFTLGlCQUFrQkMsRUFDM0UsU0FBQU4sR0FBQ1EsR0FBQSxFQUFjLEVBQ2pCLEdBUEEsUUFBUSxNQUFNLHlDQUF5QyxFQUNoRFIsR0FBQyxPQUFJLHNDQUEwQixFQVExQyxDQUVBLFNBQVNRLElBQWdCLENBQ3ZCLEdBQU0sQ0FBRSxhQUFBQyxFQUFjLGlCQUFBQyxDQUFpQixFQUFJQyxFQUFVLEVBRS9DQyxFQUFtQkMsRUFDdkIseURBQ0FKLEdBQWdCLHlEQUNsQixFQUVBLE9BQ0VULEdBQUMsT0FBSSxrQkFBaUJTLEVBQWMsVUFBV0csRUFDN0MsU0FBQVgsR0FBQyxPQUFJLFVBQVUsb0dBQ2IsVUFBQUQsR0FBQ2MsR0FBQSxDQUFnQixLQUFLLE9BQ25CLFNBQUFKLEdBQ0NWLEdBQUNlLEdBQU8sSUFBUCxDQUNDLFFBQVMsQ0FBRSxNQUFPLEVBQUcsUUFBUyxDQUFFLEVBQ2hDLFFBQVMsQ0FBRSxNQUFPLE9BQVEsUUFBUyxDQUFFLEVBQ3JDLEtBQU0sQ0FBRSxNQUFPLEVBQUcsUUFBUyxDQUFFLEVBQzdCLFdBQVksQ0FBRSxTQUFVLEdBQUssRUFFN0IsU0FBQWYsR0FBQ2dCLEdBQUEsRUFBVyxFQUNkLEVBRUosRUFFQWhCLEdBQUNlLEdBQU8sSUFBUCxDQUNDLFVBQVUsNklBQ1YsV0FBWSxDQUFFLFNBQVUsR0FBSyxFQUU3QixTQUFBZixHQUFDaUIsR0FBQSxFQUFnQixFQUNuQixHQUNGLEVBQ0YsQ0FFSiIsCiAgIm5hbWVzIjogWyJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgImNsc3giLCAiQ0xBU1NfUEFSVF9TRVBBUkFUT1IiLCAiY3JlYXRlQ2xhc3NHcm91cFV0aWxzIiwgImNvbmZpZyIsICJjbGFzc01hcCIsICJjcmVhdGVDbGFzc01hcCIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBzIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyIsICJnZXRDbGFzc0dyb3VwSWQiLCAiY2xhc3NOYW1lIiwgImNsYXNzUGFydHMiLCAic3BsaXQiLCAibGVuZ3RoIiwgInNoaWZ0IiwgImdldEdyb3VwUmVjdXJzaXZlIiwgImdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSIsICJnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMiLCAiY2xhc3NHcm91cElkIiwgImhhc1Bvc3RmaXhNb2RpZmllciIsICJjb25mbGljdHMiLCAiY2xhc3NQYXJ0T2JqZWN0IiwgImN1cnJlbnRDbGFzc1BhcnQiLCAibmV4dENsYXNzUGFydE9iamVjdCIsICJuZXh0UGFydCIsICJnZXQiLCAiY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0IiwgInNsaWNlIiwgInVuZGVmaW5lZCIsICJ2YWxpZGF0b3JzIiwgImNsYXNzUmVzdCIsICJqb2luIiwgImZpbmQiLCAidmFsaWRhdG9yIiwgImFyYml0cmFyeVByb3BlcnR5UmVnZXgiLCAidGVzdCIsICJhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSIsICJleGVjIiwgInByb3BlcnR5IiwgInN1YnN0cmluZyIsICJpbmRleE9mIiwgInRoZW1lIiwgInByZWZpeCIsICJNYXAiLCAicHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgImNsYXNzR3JvdXBzIiwgImZvckVhY2giLCAiY2xhc3NHcm91cCIsICJwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5IiwgImNsYXNzRGVmaW5pdGlvbiIsICJjbGFzc1BhcnRPYmplY3RUb0VkaXQiLCAiZ2V0UGFydCIsICJpc1RoZW1lR2V0dGVyIiwgInB1c2giLCAia2V5IiwgInBhdGgiLCAiY3VycmVudENsYXNzUGFydE9iamVjdCIsICJwYXRoUGFydCIsICJoYXMiLCAic2V0IiwgImZ1bmMiLCAiY2xhc3NHcm91cEVudHJpZXMiLCAibWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cCIsICJmcm9tRW50cmllcyIsICJ2YWx1ZSIsICJjcmVhdGVMcnVDYWNoZSIsICJtYXhDYWNoZVNpemUiLCAiY2FjaGVTaXplIiwgImNhY2hlIiwgInByZXZpb3VzQ2FjaGUiLCAidXBkYXRlIiwgIklNUE9SVEFOVF9NT0RJRklFUiIsICJjcmVhdGVQYXJzZUNsYXNzTmFtZSIsICJzZXBhcmF0b3IiLCAiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLCAiaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIiLCAiZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIiLCAic2VwYXJhdG9yTGVuZ3RoIiwgInBhcnNlQ2xhc3NOYW1lIiwgIm1vZGlmaWVycyIsICJicmFja2V0RGVwdGgiLCAibW9kaWZpZXJTdGFydCIsICJwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiIsICJpbmRleCIsICJjdXJyZW50Q2hhcmFjdGVyIiwgImJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIiLCAiaGFzSW1wb3J0YW50TW9kaWZpZXIiLCAic3RhcnRzV2l0aCIsICJiYXNlQ2xhc3NOYW1lIiwgIm1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAic29ydE1vZGlmaWVycyIsICJzb3J0ZWRNb2RpZmllcnMiLCAidW5zb3J0ZWRNb2RpZmllcnMiLCAibW9kaWZpZXIiLCAic29ydCIsICJjcmVhdGVDb25maWdVdGlscyIsICJTUExJVF9DTEFTU0VTX1JFR0VYIiwgIm1lcmdlQ2xhc3NMaXN0IiwgImNsYXNzTGlzdCIsICJjb25maWdVdGlscyIsICJjbGFzc0dyb3Vwc0luQ29uZmxpY3QiLCAiY2xhc3NOYW1lcyIsICJ0cmltIiwgInJlc3VsdCIsICJvcmlnaW5hbENsYXNzTmFtZSIsICJCb29sZWFuIiwgInZhcmlhbnRNb2RpZmllciIsICJtb2RpZmllcklkIiwgImNsYXNzSWQiLCAiaW5jbHVkZXMiLCAiY29uZmxpY3RHcm91cHMiLCAiaSIsICJncm91cCIsICJ0d0pvaW4iLCAiYXJndW1lbnQiLCAicmVzb2x2ZWRWYWx1ZSIsICJzdHJpbmciLCAiYXJndW1lbnRzIiwgInRvVmFsdWUiLCAibWl4IiwgImsiLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJjcmVhdGVDb25maWdGaXJzdCIsICJjcmVhdGVDb25maWdSZXN0IiwgImNhY2hlR2V0IiwgImNhY2hlU2V0IiwgImZ1bmN0aW9uVG9DYWxsIiwgImluaXRUYWlsd2luZE1lcmdlIiwgInJlZHVjZSIsICJwcmV2aW91c0NvbmZpZyIsICJjcmVhdGVDb25maWdDdXJyZW50IiwgInRhaWx3aW5kTWVyZ2UiLCAiY2FjaGVkUmVzdWx0IiwgImFwcGx5IiwgImZyb21UaGVtZSIsICJ0aGVtZUdldHRlciIsICJhcmJpdHJhcnlWYWx1ZVJlZ2V4IiwgImZyYWN0aW9uUmVnZXgiLCAic3RyaW5nTGVuZ3RocyIsICJTZXQiLCAidHNoaXJ0VW5pdFJlZ2V4IiwgImxlbmd0aFVuaXRSZWdleCIsICJjb2xvckZ1bmN0aW9uUmVnZXgiLCAic2hhZG93UmVnZXgiLCAiaW1hZ2VSZWdleCIsICJpc0xlbmd0aCIsICJpc051bWJlciIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXRJc0FyYml0cmFyeVZhbHVlIiwgImlzTGVuZ3RoT25seSIsICJOdW1iZXIiLCAiaXNOYU4iLCAiaXNBcmJpdHJhcnlOdW1iZXIiLCAiaXNJbnRlZ2VyIiwgImlzUGVyY2VudCIsICJlbmRzV2l0aCIsICJpc0FyYml0cmFyeVZhbHVlIiwgImlzVHNoaXJ0U2l6ZSIsICJzaXplTGFiZWxzIiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc05ldmVyIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAiaW1hZ2VMYWJlbHMiLCAiaXNBcmJpdHJhcnlJbWFnZSIsICJpc0ltYWdlIiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImlzU2hhZG93IiwgImlzQW55IiwgImxhYmVsIiwgInRlc3RWYWx1ZSIsICJnZXREZWZhdWx0Q29uZmlnIiwgImNvbG9ycyIsICJmcm9tVGhlbWUiLCAic3BhY2luZyIsICJibHVyIiwgImJyaWdodG5lc3MiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyUmFkaXVzIiwgImJvcmRlclNwYWNpbmciLCAiYm9yZGVyV2lkdGgiLCAiY29udHJhc3QiLCAiZ3JheXNjYWxlIiwgImh1ZVJvdGF0ZSIsICJpbnZlcnQiLCAiZ2FwIiwgImdyYWRpZW50Q29sb3JTdG9wcyIsICJncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyIsICJpbnNldCIsICJtYXJnaW4iLCAib3BhY2l0eSIsICJwYWRkaW5nIiwgInNhdHVyYXRlIiwgInNjYWxlIiwgInNlcGlhIiwgInNrZXciLCAic3BhY2UiLCAidHJhbnNsYXRlIiwgImdldE92ZXJzY3JvbGwiLCAiZ2V0T3ZlcmZsb3ciLCAiZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzQXJiaXRyYXJ5VmFsdWUiLCAiZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkiLCAiZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5IiwgImlzTGVuZ3RoIiwgImlzQXJiaXRyYXJ5TGVuZ3RoIiwgImdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzTnVtYmVyIiwgImdldFBvc2l0aW9ucyIsICJnZXRMaW5lU3R5bGVzIiwgImdldEJsZW5kTW9kZXMiLCAiZ2V0QWxpZ24iLCAiZ2V0WmVyb0FuZEVtcHR5IiwgImdldEJyZWFrcyIsICJnZXROdW1iZXJBbmRBcmJpdHJhcnkiLCAiY2FjaGVTaXplIiwgInNlcGFyYXRvciIsICJ0aGVtZSIsICJpc0FueSIsICJpc1RzaGlydFNpemUiLCAiaXNQZXJjZW50IiwgImNsYXNzR3JvdXBzIiwgImFzcGVjdCIsICJjb250YWluZXIiLCAiY29sdW1ucyIsICJib3giLCAiZGlzcGxheSIsICJmbG9hdCIsICJjbGVhciIsICJpc29sYXRpb24iLCAib2JqZWN0IiwgIm92ZXJmbG93IiwgIm92ZXJzY3JvbGwiLCAicG9zaXRpb24iLCAic3RhcnQiLCAiZW5kIiwgInRvcCIsICJyaWdodCIsICJib3R0b20iLCAibGVmdCIsICJ2aXNpYmlsaXR5IiwgInoiLCAiaXNJbnRlZ2VyIiwgImJhc2lzIiwgImZsZXgiLCAiZ3JvdyIsICJzaHJpbmsiLCAib3JkZXIiLCAiY29sIiwgInNwYW4iLCAicm93IiwgImp1c3RpZnkiLCAiY29udGVudCIsICJpdGVtcyIsICJzZWxmIiwgInAiLCAicHgiLCAicHkiLCAicHMiLCAicGUiLCAicHQiLCAicHIiLCAicGIiLCAicGwiLCAibSIsICJteCIsICJteSIsICJtcyIsICJtZSIsICJtdCIsICJtciIsICJtYiIsICJtbCIsICJ3IiwgInNjcmVlbiIsICJoIiwgInNpemUiLCAidGV4dCIsICJmb250IiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgInRyYWNraW5nIiwgImxlYWRpbmciLCAibGlzdCIsICJwbGFjZWhvbGRlciIsICJkZWNvcmF0aW9uIiwgImluZGVudCIsICJhbGlnbiIsICJ3aGl0ZXNwYWNlIiwgImJyZWFrIiwgImh5cGhlbnMiLCAiYmciLCAiaXNBcmJpdHJhcnlQb3NpdGlvbiIsICJyZXBlYXQiLCAiaXNBcmJpdHJhcnlTaXplIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiZnJvbSIsICJ2aWEiLCAidG8iLCAicm91bmRlZCIsICJib3JkZXIiLCAiZGl2aWRlIiwgIm91dGxpbmUiLCAicmluZyIsICJzaGFkb3ciLCAiaXNBcmJpdHJhcnlTaGFkb3ciLCAiZmlsdGVyIiwgInRhYmxlIiwgImNhcHRpb24iLCAidHJhbnNpdGlvbiIsICJkdXJhdGlvbiIsICJlYXNlIiwgImRlbGF5IiwgImFuaW1hdGUiLCAidHJhbnNmb3JtIiwgInJvdGF0ZSIsICJvcmlnaW4iLCAiYWNjZW50IiwgImFwcGVhcmFuY2UiLCAiY3Vyc29yIiwgImNhcmV0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic25hcCIsICJ0b3VjaCIsICJzZWxlY3QiLCAiZmlsbCIsICJzdHJva2UiLCAic3IiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAibWVyZ2VDb25maWdzIiwgImJhc2VDb25maWciLCAicHJlZml4IiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImV4dGVuZCIsICJvdmVycmlkZSIsICJvdmVycmlkZVByb3BlcnR5IiwgImNvbmZpZ0tleSIsICJvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMiLCAia2V5IiwgIm1lcmdlQ29uZmlnUHJvcGVydGllcyIsICJiYXNlT2JqZWN0IiwgIm92ZXJyaWRlS2V5IiwgIm92ZXJyaWRlVmFsdWUiLCAidW5kZWZpbmVkIiwgIm92ZXJyaWRlT2JqZWN0IiwgIm1lcmdlT2JqZWN0IiwgIm1lcmdlVmFsdWUiLCAiY29uY2F0IiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY29uZmlnRXh0ZW5zaW9uIiwgImNyZWF0ZUNvbmZpZyIsICJjcmVhdGVUYWlsd2luZE1lcmdlIiwgInR3TWVyZ2UiLCAiZXh0ZW5kVGFpbHdpbmRNZXJnZSIsICJjbiIsICJpbnB1dHMiLCAiY2xzeCIsICJ1c2VJc011dGF0aW5nIiwgInRvS2ViYWJDYXNlIiwgInN0cmluZyIsICJtZXJnZUNsYXNzZXMiLCAiY2xhc3NlcyIsICJjbGFzc05hbWUiLCAiaW5kZXgiLCAiYXJyYXkiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAiSWNvbiIsICJmb3J3YXJkUmVmIiwgImNvbG9yIiwgInNpemUiLCAic3Ryb2tlV2lkdGgiLCAiYWJzb2x1dGVTdHJva2VXaWR0aCIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAiaWNvbk5vZGUiLCAicmVzdCIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJkZWZhdWx0QXR0cmlidXRlcyIsICJtZXJnZUNsYXNzZXMiLCAidGFnIiwgImF0dHJzIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiaWNvbk5hbWUiLCAiaWNvbk5vZGUiLCAiQ29tcG9uZW50IiwgImZvcndhcmRSZWYiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjcmVhdGVFbGVtZW50IiwgIkljb24iLCAibWVyZ2VDbGFzc2VzIiwgInRvS2ViYWJDYXNlIiwgIkFycm93RG93bldpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBcnJvd1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGVjayIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25Eb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uUmlnaHQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc0xlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlSGVscCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcHkiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3JuZXJEb3duTGVmdCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkZpbHRlciIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkdyaXBWZXJ0aWNhbCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleVJvdW5kIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWF4aW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNaW5pbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVEb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZVVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRPcGVuIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluT2ZmIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUmVmcmVzaEN3IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiVGFibGUyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiWCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInRvYXN0IiwgImN2YSIsICJqc3giLCAiYmFkZ2VWYXJpYW50cyIsICJjdmEiLCAiQmFkZ2UiLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAicHJvcHMiLCAiY24iLCAiU2xvdCIsICJjdmEiLCAiUmVhY3QiLCAianN4IiwgImJ1dHRvblZhcmlhbnRzIiwgImN2YSIsICJCdXR0b24iLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAic2l6ZSIsICJhc0NoaWxkIiwgInByb3BzIiwgInJlZiIsICJTbG90IiwgImNuIiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiY2xhc3NOYW1lIiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImpzeCIsICJjbiIsICJSZWFjdCIsICJqc3giLCAiVGFibGUiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJUYWJsZUhlYWRlciIsICJUYWJsZUJvZHkiLCAiVGFibGVGb290ZXIiLCAiVGFibGVSb3ciLCAiVGFibGVIZWFkIiwgIlRhYmxlQ2VsbCIsICJUYWJsZUNhcHRpb24iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnRQcm92aWRlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICIjY2xpZW50IiwgIiNvbmxpbmVNYW5hZ2VyIiwgIiNxdWVyeUZsYXZvciIsICIjdmVyc2lvbiIsICIjaXNNb3VudGVkIiwgIiNzdHlsZU5vbmNlIiwgIiNzaGFkb3dET01UYXJnZXQiLCAiI2J1dHRvblBvc2l0aW9uIiwgIiNwb3NpdGlvbiIsICIjaW5pdGlhbElzT3BlbiIsICIjZXJyb3JUeXBlcyIsICIjQ29tcG9uZW50IiwgIiNkaXNwb3NlIiwgImNvbmZpZyIsICJjbGllbnQiLCAicXVlcnlGbGF2b3IiLCAidmVyc2lvbiIsICJvbmxpbmVNYW5hZ2VyIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJjcmVhdGVTaWduYWwiLCAiaXNPcGVuIiwgImVsIiwgImRpc3Bvc2UiLCAicmVuZGVyIiwgIl9zZWxmJCIsICJidG5Qb3NpdGlvbiIsICJwb3MiLCAiZXJyb3JzIiwgInF1ZXJ5Q2xpZW50IiwgIkRldnRvb2xzIiwgImxhenkiLCAic2V0dXBTdHlsZVNoZWV0IiwgImNyZWF0ZUNvbXBvbmVudCIsICJtZXJnZVByb3BzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIiNvbkNsb3NlIiwgIm9uQ2xvc2UiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiYnV0dG9uUG9zaXRpb24iLCAicG9zaXRpb24iLCAiaW5pdGlhbElzT3BlbiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0IiwgIm9ubGluZU1hbmFnZXIiLCAidXNlUXVlcnlDbGllbnQiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgInByb3BzIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInJlZiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIm9ubGluZU1hbmFnZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzIiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgImNyZWF0ZUNvbnRleHQiLCAidXNlQ29udGV4dCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInRvYXN0IiwgIlNvbm5lciIsICJqc3giLCAiVG9hc3RlciIsICJwcm9wcyIsICJjcmVhdGVBZGFwdGVyUHJvdmlkZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZUhhc2hBZGFwdGVyIiwgInJhd0hhc2giLCAiaGFzaFBhcmFtcyIsICJzZXRIYXNoUGFyYW1zIiwgInVwZGF0ZVVybCIsICJ1cGRhdGVkIiwgImhpc3RvcnkiLCAicGF0aG5hbWUiLCAic2VhcmNoIiwgImhhc2giLCAidXJsIiwgImdldFNlYXJjaFBhcmFtc1NuYXBzaG90IiwgInJhdyIsICJoYW5kbGVIYXNoQ2hhbmdlIiwgIk51cXNIYXNoQWRhcHRlciIsICJqc3giLCAianN4cyIsICJxdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudCIsICJTdHVkaW9Db250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgInByb3BzIiwgImNoaWxkcmVuIiwgIm90aGVyUHJvcHMiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAidXNlU3RhdGUiLCAiYWN0aXZlU2NoZW1hIiwgInNldEFjdGl2ZVNjaGVtYSIsICJpc0Z1bGxzY3JlZW4iLCAic2V0SXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAic2V0SXNOYXZpZ2F0aW9uT3BlbiIsICJvbkVycm9yIiwgImVycm9yIiwgInRvYXN0IiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VNZW1vIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAicHJldiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzMiIsICJUb2FzdGVyIiwgIk51cXNIYXNoQWRhcHRlciIsICJ1c2VTdHVkaW8iLCAiY29udGV4dCIsICJ1c2VDb250ZXh0IiwgImdldFJvd0lkIiwgInJvdyIsICJ0YWJsZSIsICJpZCIsICJpbmZlclJvd0ZpbHRlciIsICJhZGRSb3dJZFRvUm93IiwgImFkZFJvd0lkVG9SZXN1bHQiLCAicmVzdWx0IiwgInJvd3MiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgImFkZFJvd0lkVG9SZXN1bHQiLCAibmV3RGF0YSIsICJvbGREYXRhIiwgInVzZVF1ZXJ5IiwgInVzZUFjdGl2ZVRhYmxlUXVlcnkiLCAicHJvcHMiLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNvcnRPcmRlciIsICJmaWx0ZXIiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAicHJldmlvdXNEYXRhIiwgInByZXZpb3VzUXVlcnkiLCAic2NoZW1hIiwgInRhYmxlIiwgInNpZ25hbCIsICJlcnJvciIsICJyZXN1bHRzIiwgImFkZFJvd0lkVG9SZXN1bHQiLCAiaXRlbSIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJ1c2VBY3RpdmVUYWJsZVVwZGF0ZSIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInF1ZXJ5S2V5UHJlZml4IiwgInVzZU11dGF0aW9uIiwgInBhcmFtcyIsICJlcnJvciIsICJyZXN1bHQiLCAiY2hhbmdlcyIsICJyb3ciLCAib3ZlcndyaXRlQ2FjaGVkUm93IiwgImNoYW5nZWRSb3ciLCAicm93RmlsdGVyIiwgImluZmVyUm93RmlsdGVyIiwgImNhY2hlZFJvdyIsICJjb2x1bW5OYW1lIiwgInZhbHVlIiwgIm9yaWdpbmFsVmFsdWVzIiwgImRldGFpbHMiLCAidW5jaGFuZ2VkUm93IiwgIl9fcHNfdXBkYXRlZF9hdF9fIiwgImdldEZpbmRlckZuIiwgInRhYmxlIiwgInVwZGF0ZXJGbiIsICJmaW5kZXIiLCAiY2FjaGVkUmVzdWx0IiwgImNhY2hlZFJvd3MiLCAiY2FjaGVkUm93SW5kZXgiLCAibmV3Um93IiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInNob3J0IiwgIm51cXNfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJ1c2VRdWVyeVN0YXRlIiwgInVzZVF1ZXJ5U3RhdGVzIiwgIl9fcmVFeHBvcnQiLCAibnVxc19leHBvcnRzIiwgIm51cXNfc3RhciIsICJ1c2VRdWVyeVN0YXRlT3JpZ2luYWwiLCAidXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJfQlJBTkRfU1lNQk9MIiwgInVzZVF1ZXJ5U3RhdGUiLCAia2V5IiwgIm9wdGlvbnMiLCAidXNlUXVlcnlTdGF0ZXMiLCAiZGVmYXVsdEZpbHRlciIsICJzaG9ydCIsICJjb3VudEZpbHRlcnNSZWN1cnNpdmUiLCAiZmlsdGVyR3JvdXAiLCAiY291bnQiLCAiZmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJmaWx0ZXJQYXJhbSIsICJzZXRGaWx0ZXJQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAidXNlTWVtbyIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VJc011dGF0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgIm11dGF0aW9uS2V5IiwgInVzZUNhbGxiYWNrIiwgIkRFRkFVTFRfUEFHRV9TSVpFIiwgInBhZ2luYXRpb25QYXJzZXJzIiwgInVzZVBhZ2luYXRpb24iLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNldFBhZ2luYXRpb24iLCAidXNlUXVlcnlTdGF0ZXMiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJuZXdTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgInVzZVNlbGVjdGlvbiIsICJkYXRhIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVN0YXRlIiwgImlzU2VsZWN0aW5nIiwgIm11dGF0ZSIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJ1c2VFZmZlY3QiLCAiZGVsZXRlU2VsZWN0aW9uIiwgInJvd3MiLCAicm93IiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInNvcnRQYXJhbSIsICJzZXRTb3J0UGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJwYXJzZVNvcnRpbmciLCAiaXRlbSIsICJjb2x1bW4iLCAiZGlyZWN0aW9uIiwgImUiLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAibmV3U29ydGluZ1N0YXRlIiwgIm5ld1N0YXRlIiwgInJlc29sdmVkU3RhdGUiLCAic29ydFN0cmluZyIsICJpc1ZhbGlkRWxlbWVudCIsICJDb250ZXh0TWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkNvbnRleHRNZW51U3ViQ29udGVudCIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgIkNvbnRleHRNZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiQ29udGV4dE1lbnVSYWRpb0l0ZW0iLCAiQ2lyY2xlIiwgIkNvbnRleHRNZW51TGFiZWwiLCAiQ29udGV4dE1lbnVTZXBhcmF0b3IiLCAiQ29udGV4dE1lbnVTaG9ydGN1dCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJjb250ZW50IiwgImV4dHJhY3RUZXh0Q29udGVudCIsICJlcnJvciIsICJDb3B5IiwgIm5vZGUiLCAiaXNWYWxpZEVsZW1lbnQiLCAianN4IiwgIkNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgInJlZiIsICJzdHlsZSIsICJmb3J3YXJkZWRQcm9wcyIsICJUYWJsZUNlbGwiLCAiY24iLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAiaXNPYmplY3RUeXBlIiwgImpzeCIsICJCb29sZWFuQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiRGF0ZUNlbGwiLCAicHJvcHMiLCAidmFsdWUiLCAiRnJhZ21lbnQiLCAianN4IiwgIkVtcHR5Q2VsbCIsICJfcHJvcHMiLCAiRnJhZ21lbnQiLCAianN4IiwgIkVudW1DZWxsIiwgInByb3BzIiwgInZhbHVlIiwgIkZyYWdtZW50IiwgImpzeCIsICJKU09OQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJqc3giLCAiTnVsbENlbGwiLCAiX3Byb3BzIiwgImpzeCIsICJOdW1lcmljQ2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiUmF3Q2VsbCIsICJwcm9wcyIsICJ2YWx1ZSIsICJGcmFnbWVudCIsICJqc3giLCAiVGltZUNlbGwiLCAicHJvcHMiLCAidmFsdWUiLCAianN4IiwgImdldENlbGwiLCAiY2VsbCIsICJjb2x1bW4iLCAidmFsdWUiLCAiRW1wdHlDZWxsIiwgIk51bGxDZWxsIiwgImdyb3VwIiwgImlzQXJyYXkiLCAiSlNPTkNlbGwiLCAiUmF3Q2VsbCIsICJFbnVtQ2VsbCIsICJCb29sZWFuQ2VsbCIsICJEYXRlQ2VsbCIsICJUaW1lQ2VsbCIsICJOdW1lcmljQ2VsbCIsICJpc09iamVjdFR5cGUiLCAiQ2hlY2tib3hQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIkNoZWNrYm94IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiQ2hlY2siLCAianN4IiwgIlNlbGVjdEhlYWRlckNlbGwiLCAicHJvcHMiLCAidGFibGUiLCAicmVhZG9ubHkiLCAiQ2hlY2tib3giLCAidmFsdWUiLCAianN4IiwgIlNlbGVjdFJvd0NlbGwiLCAicHJvcHMiLCAicm93IiwgInJlYWRvbmx5IiwgIkNoZWNrYm94IiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXJDZWxsQ29udGV4dCIsICJQb3BvdmVyQ2VsbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJvcGVuIiwgInNldE9wZW4iLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIm9uRG91YmxlQ2xpY2siLCAiY2xhc3NOYW1lIiwgInJlZiIsICJ0cmlnZ2VyUmVmIiwgIm5vZGUiLCAiY24iLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAiZXZlbnQiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYWN0aW9ucyIsICJjb250ZXh0IiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgImhhbmRsZUtleURvd24iLCAianN4IiwgImpzeHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJwcm9wcyIsICJjZWxsQ29tcG9uZW50IiwgImlucHV0Q29tcG9uZW50IiwgImxpbmtDb21wb25lbnQiLCAiY29udGFpbmVyUHJvcHMiLCAiUG9wb3ZlckNlbGwiLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIkNlbGwiLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImNuIiwgImNsb3Nlc3RDZW50ZXIiLCAiRG5kQ29udGV4dCIsICJEcmFnT3ZlcmxheSIsICJLZXlib2FyZFNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgInVzZVNlbnNvciIsICJ1c2VTZW5zb3JzIiwgImFycmF5TW92ZSIsICJTb3J0YWJsZUNvbnRleHQiLCAic29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwgInVzZVNvcnRhYmxlIiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJDU1MiLCAibW90aW9uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJjcmVhdGVQb3J0YWwiLCAic2hvcnQiLCAiY29lcmNlVG9WYWx1ZSIsICJjb2x1bW4iLCAib3BlcmF0b3IiLCAidmFsdWUiLCAiZGF0YVR5cGVHcm91cCIsICJjb2VyY2VUb1N0cmluZyIsICJEcm9wZG93bk1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJEcm9wZG93bk1lbnVTdWJDb250ZW50IiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAic2lkZU9mZnNldCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkRyb3Bkb3duTWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIkRyb3Bkb3duTWVudVNob3J0Y3V0IiwgIlJlYWN0IiwgImpzeCIsICJJbnB1dCIsICJjbGFzc05hbWUiLCAidHlwZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU2VsZWN0UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIlNlbGVjdCIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJsYWJlbCIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvbkRvd24iLCAiU2VsZWN0U2Nyb2xsVXBCdXR0b24iLCAiQ2hldnJvblVwIiwgIlNlbGVjdFNjcm9sbERvd25CdXR0b24iLCAiU2VsZWN0Q29udGVudCIsICJwb3NpdGlvbiIsICJTZWxlY3RMYWJlbCIsICJTZWxlY3RJdGVtIiwgIkNoZWNrIiwgIlNlbGVjdFNlcGFyYXRvciIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJMZWFkaW5nT3BlcmF0b3JTZWxlY3QiLCAidmFsdWUiLCAib25WYWx1ZUNoYW5nZSIsICJkaXNhYmxlZCIsICJ0cmlnZ2VyQ2xhc3NOYW1lIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiU2VsZWN0SXRlbSIsICJEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyIsICJhY3RpdmVJZCIsICJpdGVtcyIsICJ0YWJsZSIsICJhY3RpdmVJdGVtIiwgIml0ZW0iLCAibGVhZGluZ09wZXJhdG9yVmFsdWUiLCAic2hvd0xlYWRpbmdPcEZvck92ZXJsYXkiLCAiYWN0aXZlSXRlbUluZGV4IiwgInByZXZpb3VzSXRlbSIsICJGaWx0ZXJDb25kaXRpb24iLCAiRmlsdGVyR3JvdXBDb21wb25lbnQiLCAiRmlsdGVyTGlzdEl0ZW1zIiwgInBhcmVudEdyb3VwSWQiLCAib25VcGRhdGVJdGVtIiwgIm9uRGVsZXRlSXRlbSIsICJvblJlb3JkZXJJdGVtcyIsICJhY3RpdmVEcmFnSWQiLCAib25EcmFnU3RhcnQiLCAib25EcmFnRW5kU2lnbmFsIiwgInNvcnRhYmxlSXRlbUlkcyIsICJ1c2VNZW1vIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ1c2VTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJLZXlib2FyZFNlbnNvciIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAiRG5kQ29udGV4dCIsICJjbG9zZXN0Q2VudGVyIiwgImV2ZW50IiwgImFjdGl2ZSIsICJvdmVyIiwgIm9sZEluZGV4IiwgIm5ld0luZGV4IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiY3VycmVudEZpbHRlckl0ZW0iLCAiaW5kZXgiLCAic2hvd0xlYWRpbmdPcCIsICJsZWFkaW5nT3BWYWwiLCAib25MZWFkaW5nT3BDaGFuZ2VGbiIsICJpc0xlYWRpbmdPcFRhcmdldExhc3QiLCAicHJldkl0ZW0iLCAibmV3VmFsdWUiLCAidXBkYXRlZFByZXZJdGVtIiwgIlNvcnRhYmxlRmlsdGVySXRlbSIsICJ1cGRhdGVkRmlsdGVyIiwgImNyZWF0ZVBvcnRhbCIsICJEcmFnT3ZlcmxheSIsICJmaWx0ZXIiLCAib25VcGRhdGUiLCAib25EZWxldGUiLCAicGFyZW50RG5kSWQiLCAic2hvd0xlYWRpbmdPcGVyYXRvciIsICJvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSIsICJpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAic2V0Tm9kZVJlZiIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnSGFuZGxlUHJvcHMiLCAiaGFuZGxlQ29sdW1uQ2hhbmdlIiwgImhhbmRsZU9wZXJhdG9yQ2hhbmdlIiwgImhhbmRsZVZhbHVlQ2hhbmdlIiwgImUiLCAicmF3VmFsdWUiLCAiY29sdW1uSW5mbyIsICJjb2VyY2VUb1ZhbHVlIiwgImVkaXRlZFZhbHVlIiwgInNldEVkaXRlZFZhbHVlIiwgInVzZVN0YXRlIiwgImNvZXJjZVRvU3RyaW5nIiwgIm1vdGlvbiIsICJHcmlwVmVydGljYWwiLCAiY29sdW1uIiwgIklucHV0IiwgIkJ1dHRvbiIsICJYIiwgImdyb3VwIiwgImlzUm9vdCIsICJpc0V4cGFuZGVkIiwgInNldElzRXhwYW5kZWQiLCAic2V0QWN0aXZlRHJhZ0lkIiwgImhhbmRsZUFkZEZpbHRlciIsICJuZXdGaWx0ZXIiLCAic2hvcnQiLCAiaGFuZGxlQWRkR3JvdXAiLCAibmV3R3JvdXAiLCAidXBkYXRlSXRlbUluR3JvdXAiLCAidXBkYXRlZEZpbHRlck9yR3JvdXAiLCAibmV3RmlsdGVycyIsICJkZWxldGVJdGVtRnJvbUdyb3VwIiwgImhhbmRsZURyYWdTdGFydCIsICJoYW5kbGVEcmFnRW5kU2lnbmFsIiwgImhhbmRsZVJlb3JkZXJJdGVtcyIsICJyZW9yZGVyZWRGaWx0ZXJzIiwgImFycmF5TW92ZSIsICJyZW5kZXJHcm91cENvbnRlbnQiLCAiY24iLCAiQ2hldnJvbkRvd24iLCAiQ2hldnJvblJpZ2h0IiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQ2lyY2xlSGVscCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIlF1ZXJ5VmlzdWFsaXplciIsICJpc0FuZEdyb3VwT3BlbiIsICJmIiwgImkiLCAicmVzdWx0IiwgImlzTGFzdCIsICJvcGVyYXRvciIsICJGaWx0ZXJUcmVlIiwgInNldEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgIkRuZENvbnRleHQiLCAiTW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIlNvcnRhYmxlQ29udGV4dCIsICJnZXRDb3JlUm93TW9kZWwiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRJdGVtIiwgImtleSIsICJpdGVtVmFsdWUiLCAibG9jYWxTdG9yYWdlIiwgIkpTT04iLCAicGFyc2UiLCAidXNlTG9jYWxTdG9yYWdlIiwgImRlZmF1bHRWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAiaW5pdGlhbFZhbHVlIiwgInNldHRlciIsICJ1c2VDYWxsYmFjayIsICJ1cGRhdGVyIiwgIm9sZCIsICJuZXdWYWwiLCAic2V0SXRlbSIsICJzdHJpbmdpZnkiLCAiZGVmYXVsdFRoZW1lIiwgImJhY2tncm91bmQiLCAiYmFja2dyb3VuZEFsdCIsICJmb3JlZ3JvdW5kIiwgImdyYXkiLCAiZ3JheUFsdCIsICJpbnB1dEJhY2tncm91bmRDb2xvciIsICJpbnB1dFRleHRDb2xvciIsICJzdWNjZXNzIiwgImRhbmdlciIsICJhY3RpdmUiLCAid2FybmluZyIsICJUaGVtZUNvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJUaGVtZVByb3ZpZGVyIiwgIl9yZWYiLCAidGhlbWUiLCAicmVzdCIsICJjcmVhdGVFbGVtZW50IiwgIlByb3ZpZGVyIiwgIl9leHRlbmRzIiwgInVzZVRoZW1lIiwgInVzZUNvbnRleHQiLCAidXNlTWVkaWFRdWVyeSIsICJxdWVyeSIsICJpc01hdGNoIiwgInNldElzTWF0Y2giLCAid2luZG93IiwgIm1hdGNoTWVkaWEiLCAibWF0Y2hlcyIsICJtYXRjaGVyIiwgIm9uQ2hhbmdlIiwgImFkZExpc3RlbmVyIiwgInJlbW92ZUxpc3RlbmVyIiwgImlzU2VydmVyIiwgInN0eWxlZCIsICJ0eXBlIiwgIm5ld1N0eWxlcyIsICJxdWVyaWVzIiwgImZvcndhcmRSZWYiLCAicmVmIiwgInN0eWxlIiwgIm1lZGlhU3R5bGVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgInJlZHVjZSIsICJjdXJyZW50IiwgIl9yZWYyIiwgInVzZUlzTW91bnRlZCIsICJtb3VudGVkUmVmIiwgInVzZVJlZiIsICJpc01vdW50ZWQiLCAiUGFuZWwiLCAiX3Byb3BzIiwgImZvbnRTaXplIiwgImZvbnRGYW1pbHkiLCAiZGlzcGxheSIsICJiYWNrZ3JvdW5kQ29sb3IiLCAiY29sb3IiLCAiZmxleERpcmVjdGlvbiIsICJmbGV4IiwgIm92ZXJmbG93IiwgImhlaWdodCIsICIobWF4LXdpZHRoOiA3MDBweCkiLCAiYm9yZGVyVG9wIiwgIkJ1dHRvbiIsICJwcm9wcyIsICJhcHBlYXJhbmNlIiwgImZvbnRXZWlnaHQiLCAiYm9yZGVyIiwgImJvcmRlclJhZGl1cyIsICJwYWRkaW5nIiwgIm9wYWNpdHkiLCAiZGlzYWJsZWQiLCAidW5kZWZpbmVkIiwgImN1cnNvciIsICJsaW5lSGVpZ2h0IiwgIldlYmtpdEFwcGVhcmFuY2UiLCAiYmFja2dyb3VuZEltYWdlIiwgImJhY2tncm91bmRSZXBlYXQiLCAiYmFja2dyb3VuZFBvc2l0aW9uIiwgImJhY2tncm91bmRTaXplIiwgIkVudHJ5IiwgIm91dGxpbmUiLCAid29yZEJyZWFrIiwgIkxhYmVsIiwgIlZhbHVlIiwgIlN1YkVudHJpZXMiLCAibWFyZ2luTGVmdCIsICJwYWRkaW5nTGVmdCIsICJib3JkZXJMZWZ0IiwgIkluZm8iLCAiRXhwYW5kZXIiLCAiZXhwYW5kZWQiLCAidHJhbnNpdGlvbiIsICJ0cmFuc2Zvcm0iLCAiRGVmYXVsdFJlbmRlcmVyIiwgImhhbmRsZUVudHJ5IiwgImxhYmVsIiwgInN1YkVudHJpZXMiLCAic3ViRW50cnlQYWdlcyIsICJ0b2dnbGUiLCAicGFnZVNpemUiLCAicmVuZGVyZXIiLCAidmFsdWVTbmFwc2hvdCIsICJzZXRWYWx1ZVNuYXBzaG90IiwgImV4cGFuZGVkUGFnZXMiLCAic2V0RXhwYW5kZWRQYWdlcyIsICJyZWZyZXNoVmFsdWVTbmFwc2hvdCIsICJsZW5ndGgiLCAiRnJhZ21lbnQiLCAib25DbGljayIsICJTdHJpbmciLCAidG9Mb3dlckNhc2UiLCAibWFwIiwgImVudHJ5IiwgImluZGV4IiwgImluY2x1ZGVzIiwgImZpbHRlciIsICJkIiwgIkV4cGxvcmVyIiwgImRlZmF1bHRFeHBhbmRlZCIsICJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwgIl9yZWYzIiwgImRlcHRoIiwgInNldEV4cGFuZGVkIiwgInNldCIsICJwYXRoIiwgIm1ha2VQcm9wZXJ0eSIsICJzdWIiLCAibmV3UGF0aCIsICJjb25jYXQiLCAic3ViRGVmYXVsdEV4cGFuZGVkIiwgInN1YlBhdGgiLCAiQXJyYXkiLCAiaXNBcnJheSIsICJpIiwgIlN5bWJvbCIsICJpdGVyYXRvciIsICJmcm9tIiwgInZhbCIsICJfcmVmNCIsICJwdXNoIiwgInNsaWNlIiwgIkxvZ28iLCAid2lkdGgiLCAidmlld0JveCIsICJ2ZXJzaW9uIiwgInN0cm9rZSIsICJzdHJva2VXaWR0aCIsICJmaWxsIiwgImZpbGxSdWxlIiwgImlkIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJpbml0aWFsSXNPcGVuIiwgInRhYmxlIiwgInBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uUHJvcHMiLCAiY29udGFpbmVyRWxlbWVudCIsICJDb250YWluZXIiLCAicm9vdFJlZiIsICJwYW5lbFJlZiIsICJpc09wZW4iLCAic2V0SXNPcGVuIiwgInBhbmVsU3R5bGUiLCAib3RoZXJQYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblN0eWxlIiwgIm9uVG9nZ2xlQ2xpY2siLCAib3RoZXJUb2dnbGVCdXR0b25Qcm9wcyIsICJjbGFzc05hbWUiLCAiUmVhY3RUYWJsZURldnRvb2xzUGFuZWwiLCAibWF4SGVpZ2h0IiwgImUiLCAibWFyZ2luIiwgImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwgIl9faHRtbCIsICJtaW5IZWlnaHQiLCAiYm9yZGVyUmlnaHQiLCAianVzdGlmeUNvbnRlbnQiLCAiYWxpZ25JdGVtcyIsICJtYXJnaW5SaWdodCIsICJmbGV4V3JhcCIsICJvdmVyZmxvd1kiLCAiZ2V0U3RhdGUiLCAiZ2V0QWxsQ29sdW1ucyIsICJnZXRDb3JlUm93TW9kZWwiLCAiZ2V0RmlsdGVyZWRSb3dNb2RlbCIsICJnZXRTb3J0ZWRSb3dNb2RlbCIsICJnZXRHcm91cGVkUm93TW9kZWwiLCAiZ2V0RXhwYW5kZWRSb3dNb2RlbCIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgImpzeCIsICJTa2VsZXRvbiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAiY24iLCAianN4IiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJjbGFzc05hbWUiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgInByb3BzIiwgInRhYmxlIiwgInZhcmlhbnQiLCAicGFnZUluZGV4IiwgInBhZ2VDb3VudCIsICJCdXR0b24iLCAiQ2hldnJvbnNMZWZ0IiwgIkNoZXZyb25MZWZ0IiwgIklucHV0IiwgImUiLCAiQ2hldnJvblJpZ2h0IiwgIkNoZXZyb25zUmlnaHQiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJjb2x1bW4iLCAia2luZCIsICJpc1Bpbm5lZCIsICJpc0xlZnRQaW5uZWQiLCAiaXNSaWdodFBpbm5lZCIsICJjbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZCIsICJwcm9wcyIsICJjb2x1bW5EZWZzIiwgImdldEJlZm9yZVJvd3MiLCAiaXNMb2FkaW5nIiwgImlzUHJvY2Vzc2luZyIsICJvblBhZ2luYXRpb25DaGFuZ2UiLCAib25Sb3dTZWxlY3Rpb25DaGFuZ2UiLCAib25Tb3J0aW5nQ2hhbmdlIiwgInBhZ2VDb3VudCIsICJwYWdpbmF0aW9uU3RhdGUiLCAicm93cyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzb3J0aW5nU3RhdGUiLCAiY29sdW1uT3JkZXIiLCAic2V0Q29sdW1uT3JkZXIiLCAidXNlU3RhdGUiLCAiY29sdW1uUGlubmluZyIsICJzZXRDb2x1bW5QaW5uaW5nIiwgImNvbHVtblNpemluZyIsICJzZXRDb2x1bW5TaXppbmciLCAic29ydGluZyIsICJ1c2VNZW1vIiwgInRvU29ydGluZ1N0YXRlIiwgImRpc3BsYXlMb2FkZXIiLCAidXNlRWZmZWN0IiwgImFjY2Vzc29yS2V5IiwgImhhbmRsZURyYWdFbmQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib3JkZXIiLCAiYWN0aXZlSW5kZXgiLCAib3ZlckluZGV4IiwgImFycmF5TW92ZSIsICJtb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAiTW91c2VTZW5zb3IiLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAiZ2V0Q29yZVJvd01vZGVsIiwgIl9fcHNfcm93aWQiLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgInRvU29ydE9yZGVySXRlbXMiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJEbmRDb250ZXh0IiwgIlRhYmxlIiwgIlRhYmxlSGVhZGVyIiwgImhlYWRlckdyb3VwIiwgIlRhYmxlUm93IiwgIlNvcnRhYmxlQ29udGV4dCIsICJoZWFkZXIiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiaSIsICJIZWFkZXIiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJUYWJsZUJvZHkiLCAicm93IiwgImNuIiwgImNlbGwiLCAiQ2VsbCIsICJUYWJsZUNlbGwiLCAiU2tlbGV0b24iLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiZnJvbSIsICJpdGVtIiwgInVzZVNvcnRhYmxlIiwgIkNTUyIsICJqc3giLCAiRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJoZWFkZXIiLCAiY29tbW9uU3R5bGUiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAidHJhbnNmb3JtIiwgInRyYW5zaXRpb24iLCAic2V0Tm9kZVJlZiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnQ2xhc3MiLCAiY24iLCAiVGFibGVIZWFkIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiVG9vbHRpcFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiY2xhc3NOYW1lIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjb2x1bW4iLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiS2V5Um91bmQiLCAiVG9vbHRpcENvbnRlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXIiLCAicHJvcHMiLCAiY29sdW1uIiwgImhlYWRlciIsICJjbGFzc05hbWUiLCAiY24iLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTW92ZURvd24iLCAiTW92ZVVwIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkJ1dHRvbiIsICJDaGV2cm9uRG93biIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJBcnJvd1VwV2lkZU5hcnJvdyIsICJYIiwgIlBpbk9mZiIsICJQaW4iLCAiZSIsICJpc09iamVjdFR5cGUiLCAibW90aW9uIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkxhYmVsUHJpbWl0aXZlIiwgImN2YSIsICJSZWFjdCIsICJqc3giLCAibGFiZWxWYXJpYW50cyIsICJjdmEiLCAiTGFiZWwiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTd2l0Y2hQcmltaXRpdmVzIiwgIlJlYWN0IiwgImpzeCIsICJTd2l0Y2giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJkYXlqcyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJJbnB1dEFjdGlvbnMiLCAib25TYXZlIiwgIm9uQ2FuY2VsIiwgIm9uQ2xvc2UiLCAib25OdWxsQ2hhbmdlIiwgImlzTnVsbCIsICJyZWFkb25seSIsICJvblNldE5vdyIsICJzaG93U2V0Tm93IiwgIkNvcm5lckRvd25MZWZ0IiwgIlN3aXRjaCIsICJjaGVja2VkIiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgImRheWpzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkJvb2xlYW5JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAidmFsdWVUb1N1Ym1pdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAibW90aW9uIiwgIlN3aXRjaCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgIkRheVBpY2tlciIsICJqc3giLCAiQ2FsZW5kYXIiLCAiY2xhc3NOYW1lIiwgImNsYXNzTmFtZXMiLCAic2hvd091dHNpZGVEYXlzIiwgImhpZGVOYXZpZ2F0aW9uIiwgInByb3BzIiwgIl9tb250aHNDbGFzc05hbWUiLCAiY24iLCAiX21vbnRoQ2FwdGlvbkNsYXNzTmFtZSIsICJfZHJvcGRvd25zQ2xhc3NOYW1lIiwgIl9mb290ZXJDbGFzc05hbWUiLCAiX3dlZWtkYXlzQ2xhc3NOYW1lIiwgIl93ZWVrZGF5Q2xhc3NOYW1lIiwgIl9jYXB0aW9uTGFiZWxDbGFzc05hbWUiLCAiX21vbnRoR3JpZENsYXNzTmFtZSIsICJfd2Vla0NsYXNzTmFtZSIsICJfZGF5Q2xhc3NOYW1lIiwgIl9kYXlCdXR0b25DbGFzc05hbWUiLCAiYnV0dG9uVmFyaWFudHMiLCAiYnV0dG9uUmFuZ2VDbGFzc05hbWUiLCAiX3JhbmdlU3RhcnRDbGFzc05hbWUiLCAiX3JhbmdlRW5kQ2xhc3NOYW1lIiwgIl9yYW5nZU1pZGRsZUNsYXNzTmFtZSIsICJfc2VsZWN0ZWRDbGFzc05hbWUiLCAiX3RvZGF5Q2xhc3NOYW1lIiwgIl9vdXRzaWRlQ2xhc3NOYW1lIiwgIl9kaXNhYmxlZENsYXNzTmFtZSIsICJfaGlkZGVuQ2xhc3NOYW1lIiwgIkRheVBpY2tlciIsICJ1c2VTdGF0ZSIsICJ1c2VJbnB1dCIsICJwcm9wcyIsICJpbml0aWFsVmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiZXZlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIkRhdGVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJjb2x1bW4iLCAiaW5pdGlhbFZhbHVlIiwgInBhcnNlZEluaXRpYWxEYXRlIiwgInVzZU1lbW8iLCAicGFyc2VkIiwgImdldEZvcm1hdEZvclR5cGUiLCAidHlwZSIsICJzZWxlY3RlZERhdGUiLCAic2V0U2VsZWN0ZWREYXRlIiwgInVzZVN0YXRlIiwgImN1cnJlbnRNb250aCIsICJzZXRDdXJyZW50TW9udGgiLCAiaG91clZhbHVlIiwgInNldEhvdXJWYWx1ZSIsICJtaW51dGVWYWx1ZSIsICJzZXRNaW51dGVWYWx1ZSIsICJzZWNvbmRWYWx1ZSIsICJzZXRTZWNvbmRWYWx1ZSIsICJiYXNlSGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJzZXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJjb2x1bW5UeXBlIiwgImRiRm9ybWF0IiwgImhhc1RpbWVQcmVjaXNpb24iLCAiaGFuZGxlT25DaGFuZ2UiLCAiZXZlbnQiLCAibmV3VmFsdWUiLCAibmV3RGF0ZSIsICJoYW5kbGVDYWxlbmRhclNlbGVjdCIsICJkYXRlIiwgIm5ld1NlbGVjdGVkRGF0ZSIsICJmaW5hbERhdGUiLCAibm93IiwgImZvcm1hdHRlZERhdGUiLCAiaGFuZGxlT25TdWJtaXQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImhhbmRsZVNldE5vdyIsICJlIiwgInNldFllYXJWYWx1ZSIsICJtb250aHMiLCAiY3VycmVudE1vbnRoVmFsdWUiLCAieWVhclZhbHVlIiwgInVwZGF0ZURhdGVGcm9tSW5wdXRzIiwgIm5ld0RhdGVQYXJ0cyIsICJiYXNlRGF0ZSIsICJoYW5kbGVNb250aENoYW5nZSIsICJtb250aEluZGV4IiwgImhhbmRsZVllYXJDaGFuZ2UiLCAibmV3WWVhclN0ciIsICJ5ZWFyIiwgImhhbmRsZVRpbWVDaGFuZ2UiLCAicGFydCIsICJudW1lcmljVmFsdWUiLCAibmV3SG91ciIsICJuZXdNaW51dGUiLCAibmV3U2Vjb25kIiwgImlzQ29tcGxldGVIb3VyIiwgImlzQ29tcGxldGVNaW51dGUiLCAiaXNDb21wbGV0ZVNlY29uZCIsICJ1c2VFZmZlY3QiLCAiZGpzRGF0ZSIsICJJbnB1dCIsICJTZWxlY3QiLCAiU2VsZWN0VHJpZ2dlciIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RDb250ZW50IiwgIm1vbnRoIiwgIlNlbGVjdEl0ZW0iLCAiRGF5UGlja2VyV3JhcHBlciIsICJJbnB1dEFjdGlvbnMiLCAic2VsZWN0ZWQiLCAib25TZWxlY3QiLCAib25Nb250aENoYW5nZSIsICJkaXNhYmxlZCIsICJDYWxlbmRhciIsICJ1c2VDYWxsYmFjayIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJFbnVtSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInZhbHVlIiwgIm9wdGlvbnMiLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZVNlbGVjdE9wdGlvbiIsICJvcHRpb24iLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJiYWRnZVZhcmlhbnRzIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJKc29uSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiaW5pdGlhbFZhbHVlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAianNvblZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiTnVtZXJpY0lucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImUiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgIm51bWVyaWNWYWx1ZSIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIlJhd0lucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZU1lbW8iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIlRpbWVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJmb3JtYXR0ZWRUaW1lIiwgInVzZU1lbW8iLCAiaGFzVGltZXpvbmUiLCAiZGF0ZSIsICJ0aW1lUmVnZXgiLCAibWF0Y2giLCAiaG91cnMiLCAibWludXRlcyIsICJ0ek9mZnNldCIsICJwZXJpb2QiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJqc3giLCAiZ2V0SW5wdXQiLCAicHJvcHMiLCAiY2VsbCIsICJjb2x1bW4iLCAib25TdWJtaXQiLCAiZ3JvdXAiLCAib3B0aW9ucyIsICJpc0FycmF5IiwgInJlYWRvbmx5IiwgImNlbGxWYWx1ZSIsICJ2YWx1ZSIsICJEYXRlSW5wdXQiLCAiVGltZUlucHV0IiwgIkpzb25JbnB1dCIsICJCb29sZWFuSW5wdXQiLCAiRW51bUlucHV0IiwgIk51bWVyaWNJbnB1dCIsICJSYXdJbnB1dCIsICJpc09iamVjdFR5cGUiLCAidXVpZCIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1dWlkdjQiLCAidXNlUXVlcnkiLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJzaWduYWwiLCAiZXJyb3IiLCAiaW50cm9zcGVjdGlvbiIsICJjdHgiLCAidXNlQWN0aXZlVGFibGUiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAiYWN0aXZlU2NoZW1hIiwgInNldEFjdGl2ZVNjaGVtYSIsICJhZGFwdGVyIiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VTdHVkaW8iLCAiaW50cm9zcGVjdGlvbiIsICJkYXRhVXBkYXRlZEF0IiwgInVzZUludHJvc3BlY3Rpb24iLCAiaXNMb2FkaW5nIiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInRhYmxlQW5kU2NoZW1hIiwgInNldFRhYmxlQW5kU2NoZW1hIiwgInVzZVF1ZXJ5U3RhdGVzIiwgInYiLCAic2V0UGFnZVBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAic2V0U29ydFBhcmFtIiwgInRhYmxlcyIsICJ1c2VNZW1vIiwgInRvdGFsVGFibGVDb3VudCIsICJzdW0iLCAic2NoZW1hIiwgImZpcnN0VGFibGUiLCAidXNlRWZmZWN0IiwgInRhYmxlRnJvbVBhcmFtIiwgInQiLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQ2FsbGJhY2siLCAibmV3VGFibGUiLCAiaGFuZGxlU2NoZW1hQ2hhbmdlIiwgIm5ld1NjaGVtYSIsICJwcmV2IiwgInV1aWR2NCIsICJqc3giLCAiTGluayIsICJwcm9wcyIsICJjZWxsIiwgImNvbHVtbiIsICJma1NjaGVtYSIsICJma1RhYmxlIiwgImZrQ29sdW1uIiwgImhhbmRsZVNjaGVtYUNoYW5nZSIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VBY3RpdmVUYWJsZSIsICJzZXRBcHBsaWVkRmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJpbnRyb3NwZWN0aW9uIiwgInVzZUludHJvc3BlY3Rpb24iLCAidGFibGUiLCAiQnV0dG9uIiwgImUiLCAidXVpZCIsICJBcnJvd1JpZ2h0IiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJGcmFnbWVudCIsICJqc3giLCAiU3RhZ2VkUm93cyIsICJwcm9wcyIsICJwYXJlbnRUYWJsZSIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAicmVhZG9ubHkiLCAidXNlSXNJbnNlcnRpbmciLCAidXBkYXRlU3RhZ2VkUm93IiwgInJvd0luZGV4IiwgInBhcnRpYWxSb3ciLCAicHJldlJvd3MiLCAibmV3Um93cyIsICJjb2x1bW5EZWZzIiwgImNvbHVtbiIsICJFbXB0eUNlbGwiLCAiY2VsbCIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiZ2V0SW5wdXQiLCAidmFsdWUiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgInJvdyIsICJpIiwgIlRhYmxlUm93IiwgImoiLCAiQ2VsbCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkFjdGl2ZVRhYmxlVmlldyIsICJfcHJvcHMiLCAiaXNNdXRhdGluZyIsICJ1c2VJc011dGF0aW5nIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAiaXNGdWxsc2NyZWVuIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAidG9nZ2xlTmF2aWdhdGlvbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInVzZVN0dWRpbyIsICJzb3J0aW5nU3RhdGUiLCAic2V0U29ydGluZ1N0YXRlIiwgInVzZVNvcnRpbmciLCAicGFnaW5hdGlvblN0YXRlIiwgInNldFBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInN0YWdlZFJvd3MiLCAic2V0U3RhZ2VkUm93cyIsICJ1c2VTdGF0ZSIsICJhcHBsaWVkRmlsdGVyIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiZWRpdGluZ0ZpbHRlciIsICJzZXRFZGl0aW5nRmlsdGVyIiwgInRvdGFsRWRpdGluZ0ZpbHRlcnMiLCAidXNlRmlsdGVyaW5nIiwgImRhdGEiLCAiaXNGZXRjaGluZyIsICJyZWZldGNoIiwgInVzZUFjdGl2ZVRhYmxlUXVlcnkiLCAiZGVsZXRlU2VsZWN0aW9uIiwgImlzU2VsZWN0aW5nIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVNlbGVjdGlvbiIsICJyZWFkb25seSIsICJjb2x1bW4iLCAiaXNJbnNlcnRpbmciLCAidXNlSXNJbnNlcnRpbmciLCAiaW5zZXJ0IiwgInVzZUFjdGl2ZVRhYmxlSW5zZXJ0IiwgInVwZGF0ZSIsICJ1c2VBY3RpdmVUYWJsZVVwZGF0ZSIsICJ1c2VFZmZlY3QiLCAic2F2ZVN0YWdlZFJvd3MiLCAidG9hc3QiLCAibmV3U3RhZ2VkUm93IiwgIm9sZCIsICJkcm9wU3RhZ2VkUm93cyIsICJoYW5kbGVDZWxsSW5wdXRTdWJtaXQiLCAidmFsdWUiLCAicm93IiwgIm9uRmlsdGVyT3BlbkNoYW5nZSIsICJvcGVuIiwgImNvbmNyZXRlQ29sdW1uRGVmcyIsICJ0YWJsZSIsICJoZWFkZXIiLCAicHJvcHMiLCAiRGF0YUdyaWREcmFnZ2FibGVIZWFkZXJDZWxsIiwgIkRhdGFHcmlkSGVhZGVyIiwgImNlbGwiLCAiV3JpdGVhYmxlQ2VsbCIsICJnZXRDZWxsIiwgIkxpbmsiLCAiZ2V0SW5wdXQiLCAidmlydHVhbENvbHVtbkRlZnMiLCAiVGFibGVIZWFkIiwgIlNlbGVjdEhlYWRlckNlbGwiLCAiQ2VsbCIsICJTZWxlY3RSb3dDZWxsIiwgImNvbHVtbkRlZnMiLCAiZGVmYXVsdENvbHVtblNvcnRpbmciLCAiQnV0dG9uIiwgIlBhbmVsTGVmdENsb3NlIiwgIlBhbmVsTGVmdE9wZW4iLCAiUG9wb3ZlciIsICJQb3BvdmVyVHJpZ2dlciIsICJjbiIsICJGaWx0ZXIiLCAiQmFkZ2UiLCAiQW5pbWF0ZU51bWJlciIsICJQb3BvdmVyQ29udGVudCIsICJGaWx0ZXJUcmVlIiwgImZpbHRlciIsICJSZWZyZXNoQ3ciLCAiTWluaW1pemUiLCAiTWF4aW1pemUiLCAiRGF0YUdyaWQiLCAiU3RhZ2VkUm93cyIsICJnZXRQYWdlQ291bnQiLCAicm93Q291bnQiLCAicGFnZVNpemUiLCAicGFnZUNvdW50IiwgImEiLCAiYiIsICJhTWV0YSIsICJiTWV0YSIsICJTbG90IiwgImpzeCIsICJqc3hzIiwgIk5hdmlnYXRpb24iLCAiY2xhc3NOYW1lIiwgInRhYmxlcyIsICJhY3RpdmVUYWJsZSIsICJpc0xvYWRpbmciLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQWN0aXZlVGFibGUiLCAic2lkZUJhckNsYXNzZXMiLCAiY24iLCAidGFibGUiLCAiXyIsICJpbmRleCIsICJTa2VsZXRvbiIsICJCbG9jayIsICJsYWJlbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJUYWJsZTIiLCAiSXRlbSIsICJhc0NoaWxkIiwgImlzQWN0aXZlIiwgInNpemUiLCAid3JhcENoaWxkcmVuSW5TcGFuIiwgIlNsb3QiLCAiU2NoZW1hU2VsZWN0b3IiLCAiaW50cm9zcGVjdGlvbiIsICJpc0ludHJvc3BlY3Rpb25Mb2FkaW5nIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWN0aXZlU2NoZW1hIiwgImhhbmRsZVNjaGVtYUNoYW5nZSIsICJzY2hlbWFOYW1lcyIsICJTZWxlY3QiLCAiU2VsZWN0VHJpZ2dlciIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RDb250ZW50IiwgIlNlbGVjdEl0ZW0iLCAic2NoZW1hIiwgImpzeCIsICJqc3hzIiwgIlN0dWRpbyIsICJwcm9wcyIsICJhZGFwdGVyIiwgIm9uRXJyb3IiLCAib25UZWxlbWV0cnlFdmVudCIsICJTdHVkaW9Db250ZXh0UHJvdmlkZXIiLCAiU3R1ZGlvQ29udGVudCIsICJpc0Z1bGxzY3JlZW4iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAiY29udGFpbmVyQ2xhc3NlcyIsICJjbiIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIk5hdmlnYXRpb24iLCAiQWN0aXZlVGFibGVWaWV3Il0KfQo=