@monime/pdfio 0.1.16 → 0.1.18

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/index.cjs CHANGED
@@ -88,6 +88,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
88
88
  `)}`,this.#l();let d=new Range,f=Math.sumPrecise(l.map(e=>e.length));for(let{firstChild:e}of this.editorDiv.childNodes)if(e.nodeType===Node.TEXT_NODE){let t=e.nodeValue.length;if(f<=t){d.setStart(e,f),d.setEnd(e,f);break}f-=t}a.removeAllRanges(),a.addRange(d)}#l(){if(this.editorDiv.replaceChildren(),this.#e)for(let e of this.#e.split(`
89
89
  `)){let t=document.createElement(`div`);t.append(e?document.createTextNode(e):document.createElement(`br`)),this.editorDiv.append(t)}}#u(){return this.#e.replaceAll(`\xA0`,` `)}static#d(e){return e.replaceAll(` `,`\xA0`)}get contentDiv(){return this.editorDiv}getPDFRect(){let t=e._internalPadding*this.parentScale;return this.getRect(t,t)}static async deserialize(t,n,r){let i=null;if(t instanceof om){let{data:{defaultAppearanceData:{fontSize:e,fontColor:n},rect:r,rotation:a,id:o,popupRef:s,richText:c,contentsObj:l,creationDate:u,modificationDate:d},textContent:f,textPosition:p,parent:{page:{pageNumber:m}}}=t;if(!f||f.length===0)return null;i=t={annotationType:ul.FREETEXT,color:Array.from(n),fontSize:e,value:f.join(`
90
90
  `),position:p,pageIndex:m-1,rect:r.slice(0),rotation:a,annotationElementId:o,id:o,deleted:!1,popupRef:s,comment:l?.str||null,richText:c,creationDate:u,modificationDate:d}}let a=await super.deserialize(t,n,r);return a.#r=t.fontSize,a.color=Q.makeHexColor(...t.color),a.#e=e.#d(t.value),a._initialData=i,t.comment&&a.setCommentData(t),a}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();let t=Zu._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.color),n=Object.assign(super.serialize(e),{color:t,fontSize:this.#r,value:this.#u()});return this.addComment(n),e?(n.isCopy=!0,n):this.annotationElementId&&!this.#f(n)?null:(n.id=this.annotationElementId,n)}#f(e){let{value:t,fontSize:n,color:r,pageIndex:i}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||e.value!==t||e.fontSize!==n||e.color.some((e,t)=>e!==r[t])||e.pageIndex!==i}renderAnnotationElement(e){let t=super.renderAnnotationElement(e);if(!t)return null;let{style:n}=t;n.fontSize=`calc(${this.#r}px * var(--total-scale-factor))`,n.color=this.color,t.replaceChildren();for(let e of this.#e.split(`
91
- `)){let n=document.createElement(`div`);n.append(e?document.createTextNode(e):document.createElement(`br`)),t.append(n)}return e.updateEdited({rect:this.getPDFRect(),popup:this._uiManager.hasCommentManager()||this.hasEditedComment?this.comment:{text:this.#e}}),t}resetAnnotationElement(e){super.resetAnnotationElement(e),e.resetEdited()}},$=class{static PRECISION=1e-4;toSVGPath(){El("Abstract method `toSVGPath` must be implemented.")}get box(){El("Abstract getter `box` must be implemented.")}serialize(e,t){El("Abstract method `serialize` must be implemented.")}static _rescale(e,t,n,r,i,a){a||=new Float32Array(e.length);for(let o=0,s=e.length;o<s;o+=2)a[o]=t+e[o]*r,a[o+1]=n+e[o+1]*i;return a}static _rescaleAndSwap(e,t,n,r,i,a){a||=new Float32Array(e.length);for(let o=0,s=e.length;o<s;o+=2)a[o]=t+e[o+1]*r,a[o+1]=n+e[o]*i;return a}static _translate(e,t,n,r){r||=new Float32Array(e.length);for(let i=0,a=e.length;i<a;i+=2)r[i]=t+e[i],r[i+1]=n+e[i+1];return r}static svgRound(e){return Math.round(e*1e4)}static _normalizePoint(e,t,n,r,i){switch(i){case 90:return[1-t/n,e/r];case 180:return[1-e/n,1-t/r];case 270:return[t/n,1-e/r];default:return[e/n,t/r]}}static _normalizePagePoint(e,t,n){switch(n){case 90:return[1-t,e];case 180:return[1-e,1-t];case 270:return[t,1-e];default:return[e,t]}}static createBezierPoints(e,t,n,r,i,a){return[(e+5*n)/6,(t+5*r)/6,(5*n+i)/6,(5*r+a)/6,(n+i)/2,(r+a)/2]}},Cm=class e{#e;#t=[];#n;#r;#i=[];#a=new Float32Array(18);#o;#s;#c;#l;#u;#d;#f=[];static#p=8;static#m=2;static#h=e.#p+e.#m;constructor({x:t,y:n},r,i,a,o,s=0){this.#e=r,this.#d=a*i,this.#r=o,this.#a.set([NaN,NaN,NaN,NaN,t,n],6),this.#n=s,this.#l=e.#p*i,this.#c=e.#h*i,this.#u=i,this.#f.push(t,n)}isEmpty(){return isNaN(this.#a[8])}#g(){let e=this.#a.subarray(4,6),t=this.#a.subarray(16,18),[n,r,i,a]=this.#e;return[(this.#o+(e[0]-t[0])/2-n)/i,(this.#s+(e[1]-t[1])/2-r)/a,(this.#o+(t[0]-e[0])/2-n)/i,(this.#s+(t[1]-e[1])/2-r)/a]}add({x:e,y:t}){this.#o=e,this.#s=t;let[n,r,i,a]=this.#e,[o,s,c,l]=this.#a.subarray(8,12),u=e-c,d=t-l,f=Math.hypot(u,d);if(f<this.#c)return!1;let p=f-this.#l,m=p/f,h=m*u,g=m*d,_=o,v=s;o=c,s=l,c+=h,l+=g,this.#f?.push(e,t);let y=-g/p,b=h/p,x=y*this.#d,S=b*this.#d;return this.#a.set(this.#a.subarray(2,8),0),this.#a.set([c+x,l+S],4),this.#a.set(this.#a.subarray(14,18),12),this.#a.set([c-x,l-S],16),isNaN(this.#a[6])?(this.#i.length===0&&(this.#a.set([o+x,s+S],2),this.#i.push(NaN,NaN,NaN,NaN,(o+x-n)/i,(s+S-r)/a),this.#a.set([o-x,s-S],14),this.#t.push(NaN,NaN,NaN,NaN,(o-x-n)/i,(s-S-r)/a)),this.#a.set([_,v,o,s,c,l],6),!this.isEmpty()):(this.#a.set([_,v,o,s,c,l],6),Math.abs(Math.atan2(v-s,_-o)-Math.atan2(g,h))<Math.PI/2?([o,s,c,l]=this.#a.subarray(2,6),this.#i.push(NaN,NaN,NaN,NaN,((o+c)/2-n)/i,((s+l)/2-r)/a),[o,s,_,v]=this.#a.subarray(14,18),this.#t.push(NaN,NaN,NaN,NaN,((_+o)/2-n)/i,((v+s)/2-r)/a),!0):([_,v,o,s,c,l]=this.#a.subarray(0,6),this.#i.push(((_+5*o)/6-n)/i,((v+5*s)/6-r)/a,((5*o+c)/6-n)/i,((5*s+l)/6-r)/a,((o+c)/2-n)/i,((s+l)/2-r)/a),[c,l,o,s,_,v]=this.#a.subarray(12,18),this.#t.push(((_+5*o)/6-n)/i,((v+5*s)/6-r)/a,((5*o+c)/6-n)/i,((5*s+l)/6-r)/a,((o+c)/2-n)/i,((s+l)/2-r)/a),!0))}toSVGPath(){if(this.isEmpty())return``;let e=this.#i,t=this.#t;if(isNaN(this.#a[6])&&!this.isEmpty())return this.#_();let n=[];n.push(`M${e[4]} ${e[5]}`);for(let t=6;t<e.length;t+=6)isNaN(e[t])?n.push(`L${e[t+4]} ${e[t+5]}`):n.push(`C${e[t]} ${e[t+1]} ${e[t+2]} ${e[t+3]} ${e[t+4]} ${e[t+5]}`);this.#y(n);for(let e=t.length-6;e>=6;e-=6)isNaN(t[e])?n.push(`L${t[e+4]} ${t[e+5]}`):n.push(`C${t[e]} ${t[e+1]} ${t[e+2]} ${t[e+3]} ${t[e+4]} ${t[e+5]}`);return this.#v(n),n.join(` `)}#_(){let[e,t,n,r]=this.#e,[i,a,o,s]=this.#g();return`M${(this.#a[2]-e)/n} ${(this.#a[3]-t)/r} L${(this.#a[4]-e)/n} ${(this.#a[5]-t)/r} L${i} ${a} L${o} ${s} L${(this.#a[16]-e)/n} ${(this.#a[17]-t)/r} L${(this.#a[14]-e)/n} ${(this.#a[15]-t)/r} Z`}#v(e){let t=this.#t;e.push(`L${t[4]} ${t[5]} Z`)}#y(e){let[t,n,r,i]=this.#e,a=this.#a.subarray(4,6),o=this.#a.subarray(16,18),[s,c,l,u]=this.#g();e.push(`L${(a[0]-t)/r} ${(a[1]-n)/i} L${s} ${c} L${l} ${u} L${(o[0]-t)/r} ${(o[1]-n)/i}`)}newFreeDrawOutline(e,t,n,r,i,a){return new wm(e,t,n,r,i,a)}getOutlines(){let e=this.#i,t=this.#t,n=this.#a,[r,i,a,o]=this.#e,s=new Float32Array((this.#f?.length??0)+2);for(let e=0,t=s.length-2;e<t;e+=2)s[e]=(this.#f[e]-r)/a,s[e+1]=(this.#f[e+1]-i)/o;if(s[s.length-2]=(this.#o-r)/a,s[s.length-1]=(this.#s-i)/o,isNaN(n[6])&&!this.isEmpty())return this.#b(s);let c=new Float32Array(this.#i.length+24+this.#t.length),l=e.length;for(let t=0;t<l;t+=2){if(isNaN(e[t])){c[t]=c[t+1]=NaN;continue}c[t]=e[t],c[t+1]=e[t+1]}l=this.#S(c,l);for(let e=t.length-6;e>=6;e-=6)for(let n=0;n<6;n+=2){if(isNaN(t[e+n])){c[l]=c[l+1]=NaN,l+=2;continue}c[l]=t[e+n],c[l+1]=t[e+n+1],l+=2}return this.#x(c,l),this.newFreeDrawOutline(c,s,this.#e,this.#u,this.#n,this.#r)}#b(e){let t=this.#a,[n,r,i,a]=this.#e,[o,s,c,l]=this.#g(),u=new Float32Array(36);return u.set([NaN,NaN,NaN,NaN,(t[2]-n)/i,(t[3]-r)/a,NaN,NaN,NaN,NaN,(t[4]-n)/i,(t[5]-r)/a,NaN,NaN,NaN,NaN,o,s,NaN,NaN,NaN,NaN,c,l,NaN,NaN,NaN,NaN,(t[16]-n)/i,(t[17]-r)/a,NaN,NaN,NaN,NaN,(t[14]-n)/i,(t[15]-r)/a],0),this.newFreeDrawOutline(u,e,this.#e,this.#u,this.#n,this.#r)}#x(e,t){let n=this.#t;return e.set([NaN,NaN,NaN,NaN,n[4],n[5]],t),t+=6}#S(e,t){let n=this.#a.subarray(4,6),r=this.#a.subarray(16,18),[i,a,o,s]=this.#e,[c,l,u,d]=this.#g();return e.set([NaN,NaN,NaN,NaN,(n[0]-i)/o,(n[1]-a)/s,NaN,NaN,NaN,NaN,c,l,NaN,NaN,NaN,NaN,u,d,NaN,NaN,NaN,NaN,(r[0]-i)/o,(r[1]-a)/s],t),t+=24}},wm=class extends ${#e;#t=new Float32Array(4);#n;#r;#i;#a;#o;constructor(e,t,n,r,i,a){super(),this.#o=e,this.#i=t,this.#e=n,this.#a=r,this.#n=i,this.#r=a,this.firstPoint=[NaN,NaN],this.lastPoint=[NaN,NaN],this.#s(a);let[o,s,c,l]=this.#t;for(let t=0,n=e.length;t<n;t+=2)e[t]=(e[t]-o)/c,e[t+1]=(e[t+1]-s)/l;for(let e=0,n=t.length;e<n;e+=2)t[e]=(t[e]-o)/c,t[e+1]=(t[e+1]-s)/l}toSVGPath(){let e=[`M${this.#o[4]} ${this.#o[5]}`];for(let t=6,n=this.#o.length;t<n;t+=6){if(isNaN(this.#o[t])){e.push(`L${this.#o[t+4]} ${this.#o[t+5]}`);continue}e.push(`C${this.#o[t]} ${this.#o[t+1]} ${this.#o[t+2]} ${this.#o[t+3]} ${this.#o[t+4]} ${this.#o[t+5]}`)}return e.push(`Z`),e.join(` `)}serialize([e,t,n,r],i){let a=n-e,o=r-t,s,c;switch(i){case 0:s=$._rescale(this.#o,e,r,a,-o),c=$._rescale(this.#i,e,r,a,-o);break;case 90:s=$._rescaleAndSwap(this.#o,e,t,a,o),c=$._rescaleAndSwap(this.#i,e,t,a,o);break;case 180:s=$._rescale(this.#o,n,t,-a,o),c=$._rescale(this.#i,n,t,-a,o);break;case 270:s=$._rescaleAndSwap(this.#o,n,r,-a,-o),c=$._rescaleAndSwap(this.#i,n,r,-a,-o);break}return{outline:Array.from(s),points:[Array.from(c)]}}#s(e){let t=this.#o,n=t[4],r=t[5],i=[n,r,n,r],a=n,o=r,s=n,c=r,l=e?Math.max:Math.min,u=new Float32Array(4);for(let e=6,d=t.length;e<d;e+=6){let d=t[e+4],f=t[e+5];isNaN(t[e])?(Q.pointBoundingBox(d,f,i),o>f?(a=d,o=f):o===f&&(a=l(a,d)),c<f?(s=d,c=f):c===f&&(s=l(s,d))):(u.set(rl,0),Q.bezierBoundingBox(n,r,...t.slice(e,e+6),u),Q.rectBoundingBox(...u,i),o>u[1]?(a=u[0],o=u[1]):o===u[1]&&(a=l(a,u[0])),c<u[3]?(s=u[2],c=u[3]):c===u[3]&&(s=l(s,u[2]))),n=d,r=f}let d=this.#t;d[0]=i[0]-this.#n,d[1]=i[1]-this.#n,d[2]=i[2]-i[0]+2*this.#n,d[3]=i[3]-i[1]+2*this.#n,this.firstPoint=[a,o],this.lastPoint=[s,c]}get box(){return this.#t}newOutliner(e,t,n,r,i,a=0){return new Cm(e,t,n,r,i,a)}getNewOutline(e,t){let[n,r,i,a]=this.#t,[o,s,c,l]=this.#e,u=i*c,d=a*l,f=n*c+o,p=r*l+s,m=this.newOutliner({x:this.#i[0]*u+f,y:this.#i[1]*d+p},this.#e,this.#a,e,this.#r,t??this.#n);for(let e=2;e<this.#i.length;e+=2)m.add({x:this.#i[e]*u+f,y:this.#i[e+1]*d+p});return m.getOutlines()}},Tm=class{#e;#t;#n;#r=[];#i=[];constructor(e,t=0,n=0,r=!0){let i=rl.slice(),a=10**-4;for(let{x:n,y:r,width:o,height:s}of e){let e=Math.floor((n-t)/a)*a,c=Math.ceil((n+o+t)/a)*a,l=Math.floor((r-t)/a)*a,u=Math.ceil((r+s+t)/a)*a,d=[e,l,u,!0],f=[c,l,u,!1];this.#r.push(d,f),Q.rectBoundingBox(e,l,c,u,i)}let o=i[2]-i[0]+2*n,s=i[3]-i[1]+2*n,c=i[0]-n,l=i[1]-n,u=r?-1/0:1/0,d=1/0,f=this.#r.at(r?-1:-2),p=[f[0],f[2]];for(let e of this.#r){let[t,n,i,a]=e;!a&&r?n<d?(d=n,u=t):n===d&&(u=Math.max(u,t)):a&&!r&&(n<d?(d=n,u=t):n===d&&(u=Math.min(u,t))),e[0]=(t-c)/o,e[1]=(n-l)/s,e[2]=(i-l)/s}this.#e=new Float32Array([c,l,o,s]),this.#t=[u,d],this.#n=p}getOutlines(){this.#r.sort((e,t)=>e[0]-t[0]||e[1]-t[1]||e[2]-t[2]);let e=[];for(let t of this.#r)t[3]?(e.push(...this.#l(t)),this.#s(t)):(this.#c(t),e.push(...this.#l(t)));return this.#a(e)}#a(e){let t=[],n=new Set;for(let n of e){let[e,r,i]=n;t.push([e,r,n],[e,i,n])}t.sort((e,t)=>e[1]-t[1]||e[0]-t[0]);for(let e=0,r=t.length;e<r;e+=2){let r=t[e][2],i=t[e+1][2];r.push(i),i.push(r),n.add(r),n.add(i)}let r=[],i;for(;n.size>0;){let e=n.values().next().value,[t,a,o,s,c]=e;n.delete(e);let l=t,u=a;for(i=[t,o],r.push(i);;){let e;if(n.has(s))e=s;else if(n.has(c))e=c;else break;n.delete(e),[t,a,o,s,c]=e,l!==t&&(i.push(l,u,t,u===a?a:o),l=t),u=u===a?o:a}i.push(l,u)}return new Em(r,this.#e,this.#t,this.#n)}#o(e){let t=this.#i,n=0,r=t.length-1;for(;n<=r;){let i=n+r>>1,a=t[i][0];if(a===e)return i;a<e?n=i+1:r=i-1}return r+1}#s([,e,t]){let n=this.#o(e);this.#i.splice(n,0,[e,t])}#c([,e,t]){let n=this.#o(e);for(let r=n;r<this.#i.length;r++){let[n,i]=this.#i[r];if(n!==e)break;if(n===e&&i===t){this.#i.splice(r,1);return}}for(let r=n-1;r>=0;r--){let[n,i]=this.#i[r];if(n!==e)break;if(n===e&&i===t){this.#i.splice(r,1);return}}}#l(e){let[t,n,r]=e,i=[[t,n,r]],a=this.#o(r);for(let e=0;e<a;e++){let[n,r]=this.#i[e];for(let e=0,a=i.length;e<a;e++){let[,o,s]=i[e];if(!(r<=o||s<=n)){if(o>=n){if(s>r)i[e][1]=r;else{if(a===1)return[];i.splice(e,1),e--,a--}continue}i[e][2]=n,s>r&&i.push([t,r,s])}}}return i}},Em=class extends ${#e;#t;constructor(e,t,n,r){super(),this.#t=e,this.#e=t,this.firstPoint=n,this.lastPoint=r}toSVGPath(){let e=[];for(let t of this.#t){let[n,r]=t;e.push(`M${n} ${r}`);for(let i=2;i<t.length;i+=2){let a=t[i],o=t[i+1];a===n?(e.push(`V${o}`),r=o):o===r&&(e.push(`H${a}`),n=a)}e.push(`Z`)}return e.join(` `)}serialize([e,t,n,r],i){let a=[],o=n-e,s=r-t;for(let t of this.#t){let n=Array(t.length);for(let i=0;i<t.length;i+=2)n[i]=e+t[i]*o,n[i+1]=r-t[i+1]*s;a.push(n)}return a}get box(){return this.#e}get classNamesForOutlining(){return[`highlightOutline`]}},Dm=class extends Cm{newFreeDrawOutline(e,t,n,r,i,a){return new Om(e,t,n,r,i,a)}},Om=class extends wm{newOutliner(e,t,n,r,i,a=0){return new Dm(e,t,n,r,i,a)}},km=class e extends Zu{#e=null;#t=0;#n;#r=null;#i=null;#a=null;#o=null;#s=0;#c=null;#l=null;#u=null;#d=!1;#f=null;#p=null;#m=null;#h=``;#g;#_=``;static _defaultColor=null;static _defaultOpacity=1;static _defaultThickness=12;static _type=`highlight`;static _editorType=ul.HIGHLIGHT;static _freeHighlightId=-1;static _freeHighlight=null;static _freeHighlightClipId=``;static get _keyboardManager(){let t=e.prototype;return Ml(this,`_keyboardManager`,new Gu([[[`ArrowLeft`,`mac+ArrowLeft`],t._moveCaret,{args:[0]}],[[`ArrowRight`,`mac+ArrowRight`],t._moveCaret,{args:[1]}],[[`ArrowUp`,`mac+ArrowUp`],t._moveCaret,{args:[2]}],[[`ArrowDown`,`mac+ArrowDown`],t._moveCaret,{args:[3]}]]))}constructor(t){super({...t,name:`highlightEditor`}),this.color=t.color||e._defaultColor,this.#g=t.thickness||e._defaultThickness,this.opacity=t.opacity||e._defaultOpacity,this.#n=t.boxes||null,this.#_=t.methodOfCreation||``,this.#h=t.text||``,this._isDraggable=!1,this.defaultL10nId=`pdfjs-editor-highlight-editor`,t.highlightId>-1?(this.#d=!0,this.#y(t),this.#w()):this.#n&&(this.#e=t.anchorNode,this.#t=t.anchorOffset,this.#o=t.focusNode,this.#s=t.focusOffset,this.#v(),this.#w(),this.rotate(this.rotation)),this.annotationElementId||this._uiManager.a11yAlert(`pdfjs-editor-highlight-added-alert`)}get telemetryInitialData(){return{action:`added`,type:this.#d?`free_highlight`:`highlight`,color:this._uiManager.getNonHCMColorName(this.color),thickness:this.#g,methodOfCreation:this.#_}}get telemetryFinalData(){return{type:`highlight`,color:this._uiManager.getNonHCMColorName(this.color)}}static computeTelemetryFinalData(e){return{numberOfColors:e.get(`color`).size}}#v(){let e=new Tm(this.#n,.001);this.#l=e.getOutlines(),[this.x,this.y,this.width,this.height]=this.#l.box;let t=new Tm(this.#n,.0025,.001,this._uiManager.direction===`ltr`);this.#a=t.getOutlines();let{firstPoint:n}=this.#l;this.#f=[(n[0]-this.x)/this.width,(n[1]-this.y)/this.height];let{lastPoint:r}=this.#a;this.#p=[(r[0]-this.x)/this.width,(r[1]-this.y)/this.height]}#y({highlightOutlines:t,highlightId:n,clipPathId:r}){if(this.#l=t,this.#a=t.getNewOutline(this.#g/2+1.5,.0025),n>=0)this.#u=n,this.#r=r,this.parent.drawLayer.finalizeDraw(n,{bbox:t.box,path:{d:t.toSVGPath()}}),this.#m=this.parent.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:!0},bbox:this.#a.box,path:{d:this.#a.toSVGPath()}},!0);else if(this.parent){let n=this.parent.viewport.rotation;this.parent.drawLayer.updateProperties(this.#u,{bbox:e.#T(this.#l.box,(n-this.rotation+360)%360),path:{d:t.toSVGPath()}}),this.parent.drawLayer.updateProperties(this.#m,{bbox:e.#T(this.#a.box,n),path:{d:this.#a.toSVGPath()}})}let[i,a,o,s]=t.box;switch(this.rotation){case 0:this.x=i,this.y=a,this.width=o,this.height=s;break;case 90:{let[e,t]=this.parentDimensions;this.x=a,this.y=1-i,this.width=o*t/e,this.height=s*e/t;break}case 180:this.x=1-i,this.y=1-a,this.width=o,this.height=s;break;case 270:{let[e,t]=this.parentDimensions;this.x=1-a,this.y=i,this.width=o*t/e,this.height=s*e/t;break}}let{firstPoint:c}=t;this.#f=[(c[0]-i)/o,(c[1]-a)/s];let{lastPoint:l}=this.#a;this.#p=[(l[0]-i)/o,(l[1]-a)/s]}static initialize(t,n){Zu.initialize(t,n),e._defaultColor||=n.highlightColors?.values().next().value||`#fff066`}static updateDefaultParams(t,n){switch(t){case dl.HIGHLIGHT_COLOR:e._defaultColor=n;break;case dl.HIGHLIGHT_THICKNESS:e._defaultThickness=n;break}}translateInPage(e,t){}get toolbarPosition(){return this.#p}get commentButtonPosition(){return this.#f}updateParams(e,t){switch(e){case dl.HIGHLIGHT_COLOR:this.#b(t);break;case dl.HIGHLIGHT_THICKNESS:this.#x(t);break}}static get defaultPropertiesToUpdate(){return[[dl.HIGHLIGHT_COLOR,e._defaultColor],[dl.HIGHLIGHT_THICKNESS,e._defaultThickness]]}get propertiesToUpdate(){return[[dl.HIGHLIGHT_COLOR,this.color||e._defaultColor],[dl.HIGHLIGHT_THICKNESS,this.#g||e._defaultThickness],[dl.HIGHLIGHT_FREE,this.#d]]}onUpdatedColor(){this.parent?.drawLayer.updateProperties(this.#u,{root:{fill:this.color,"fill-opacity":this.opacity}}),this.#i?.updateColor(this.color),super.onUpdatedColor()}#b(t){let n=(e,t)=>{this.color=e,this.opacity=t,this.onUpdatedColor()},r=this.color,i=this.opacity;this.addCommands({cmd:n.bind(this,t,e._defaultOpacity),undo:n.bind(this,r,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:dl.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:`color_changed`,color:this._uiManager.getNonHCMColorName(t)},!0)}#x(e){let t=this.#g,n=e=>{this.#g=e,this.#S(e)};this.addCommands({cmd:n.bind(this,e),undo:n.bind(this,t),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:dl.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:`thickness_changed`,thickness:e},!0)}get toolbarButtons(){return this._uiManager.highlightColors?[[`colorPicker`,this.#i=new Ip({editor:this})]]:super.toolbarButtons}disableEditing(){super.disableEditing(),this.div.classList.toggle(`disabled`,!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle(`disabled`,!1)}fixAndSetPosition(){return super.fixAndSetPosition(this.#O())}getBaseTranslation(){return[0,0]}getRect(e,t){return super.getRect(e,t,this.#O())}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),e&&this.div.focus()}remove(){this.#C(),this._reportTelemetry({action:`deleted`}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#w(),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){let t=!1;this.parent&&!e?this.#C():e&&(this.#w(e),t=!this.parent&&this.div?.classList.contains(`selectedEditor`)),super.setParent(e),this.show(this._isVisible),t&&this.select()}#S(e){this.#d&&(this.#y({highlightOutlines:this.#l.getNewOutline(e/2)}),this.fixAndSetPosition(),this.setDims())}#C(){this.#u===null||!this.parent||(this.parent.drawLayer.remove(this.#u),this.#u=null,this.parent.drawLayer.remove(this.#m),this.#m=null)}#w(e=this.parent){this.#u===null&&({id:this.#u,clipPathId:this.#r}=e.drawLayer.draw({bbox:this.#l.box,root:{viewBox:`0 0 1 1`,fill:this.color,"fill-opacity":this.opacity},rootClass:{highlight:!0,free:this.#d},path:{d:this.#l.toSVGPath()}},!1,!0),this.#m=e.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:this.#d},bbox:this.#a.box,path:{d:this.#a.toSVGPath()}},this.#d),this.#c&&(this.#c.style.clipPath=this.#r))}static#T([e,t,n,r],i){switch(i){case 90:return[1-t-r,e,r,n];case 180:return[1-e-n,1-t-r,n,r];case 270:return[t,1-e-n,r,n]}return[e,t,n,r]}rotate(t){let{drawLayer:n}=this.parent,r;this.#d?(t=(t-this.rotation+360)%360,r=e.#T(this.#l.box,t)):r=e.#T([this.x,this.y,this.width,this.height],t),n.updateProperties(this.#u,{bbox:r,root:{"data-main-rotation":t}}),n.updateProperties(this.#m,{bbox:e.#T(this.#a.box,t),root:{"data-main-rotation":t}})}render(){if(this.div)return this.div;let e=super.render();this.#h&&(e.setAttribute(`aria-label`,this.#h),e.setAttribute(`role`,`mark`)),this.#d?e.classList.add(`free`):this.div.addEventListener(`keydown`,this.#E.bind(this),{signal:this._uiManager._signal});let t=this.#c=document.createElement(`div`);return e.append(t),t.setAttribute(`aria-hidden`,`true`),t.className=`internal`,t.style.clipPath=this.#r,this.setDims(),Bu(this,this.#c,[`pointerover`,`pointerleave`]),this.enableEditing(),e}pointerover(){this.isSelected||this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!0}})}pointerleave(){this.isSelected||this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!1}})}#E(t){e._keyboardManager.exec(this,t)}_moveCaret(e){switch(this.parent.unselect(this),e){case 0:case 2:this.#D(!0);break;case 1:case 3:this.#D(!1);break}}#D(e){if(!this.#e)return;let t=window.getSelection();e?t.setPosition(this.#e,this.#t):t.setPosition(this.#o,this.#s)}select(){super.select(),this.#m&&this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!1,selected:!0}})}unselect(){super.unselect(),this.#m&&(this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{selected:!1}}),this.#d||this.#D(!1))}get _mustFixPosition(){return!this.#d}show(e=this._isVisible){super.show(e),this.parent&&(this.parent.drawLayer.updateProperties(this.#u,{rootClass:{hidden:!e}}),this.parent.drawLayer.updateProperties(this.#m,{rootClass:{hidden:!e}}))}#O(){return this.#d?this.rotation:0}#k(){if(this.#d)return null;let[e,t]=this.pageDimensions,[n,r]=this.pageTranslation,i=this.#n,a=new Float32Array(i.length*8),o=0;for(let{x:s,y:c,width:l,height:u}of i){let i=s*e+n,d=(1-c)*t+r;a[o]=a[o+4]=i,a[o+1]=a[o+3]=d,a[o+2]=a[o+6]=i+l*e,a[o+5]=a[o+7]=d-u*t,o+=8}return a}#A(e){return this.#l.serialize(e,this.#O())}static startHighlighting(e,t,{target:n,x:r,y:i}){let{x:a,y:o,width:s,height:c}=n.getBoundingClientRect(),l=new AbortController,u=e.combinedSignal(l),d=t=>{l.abort(),this.#M(e,t)};window.addEventListener(`blur`,d,{signal:u}),window.addEventListener(`pointerup`,d,{signal:u}),window.addEventListener(`pointerdown`,hu,{capture:!0,passive:!1,signal:u}),window.addEventListener(`contextmenu`,mu,{signal:u}),n.addEventListener(`pointermove`,this.#j.bind(this,e),{signal:u}),this._freeHighlight=new Dm({x:r,y:i},[a,o,s,c],e.scale,this._defaultThickness/2,t,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=e.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:`0 0 1 1`,fill:this._defaultColor,"fill-opacity":this._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:this._freeHighlight.toSVGPath()}},!0,!0)}static#j(e,t){this._freeHighlight.add(t)&&e.drawLayer.updateProperties(this._freeHighlightId,{path:{d:this._freeHighlight.toSVGPath()}})}static#M(e,t){this._freeHighlight.isEmpty()?e.drawLayer.remove(this._freeHighlightId):e.createAndAddNewEditor(t,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:`main_toolbar`}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=``}static async deserialize(e,t,n){let r=null;if(e instanceof mm){let{data:{quadPoints:t,rect:n,rotation:i,id:a,color:o,opacity:s,popupRef:c,richText:l,contentsObj:u,creationDate:d,modificationDate:f},parent:{page:{pageNumber:p}}}=e;r=e={annotationType:ul.HIGHLIGHT,color:Array.from(o),opacity:s,quadPoints:t,boxes:null,pageIndex:p-1,rect:n.slice(0),rotation:i,annotationElementId:a,id:a,deleted:!1,popupRef:c,richText:l,comment:u?.str||null,creationDate:d,modificationDate:f}}else if(e instanceof pm){let{data:{inkLists:t,rect:n,rotation:i,id:a,color:o,borderStyle:{rawWidth:s},popupRef:c,richText:l,contentsObj:u,creationDate:d,modificationDate:f},parent:{page:{pageNumber:p}}}=e;r=e={annotationType:ul.HIGHLIGHT,color:Array.from(o),thickness:s,inkLists:t,boxes:null,pageIndex:p-1,rect:n.slice(0),rotation:i,annotationElementId:a,id:a,deleted:!1,popupRef:c,richText:l,comment:u?.str||null,creationDate:d,modificationDate:f}}let{color:i,quadPoints:a,inkLists:o,outlines:s,opacity:c}=e,l=await super.deserialize(e,t,n);l.color=Q.makeHexColor(...i),l.opacity=c||1,o&&(l.#g=e.thickness),l._initialData=r,e.comment&&l.setCommentData(e);let[u,d]=l.pageDimensions,[f,p]=l.pageTranslation;if(a){let e=l.#n=[];for(let t=0;t<a.length;t+=8)e.push({x:(a[t]-f)/u,y:1-(a[t+1]-p)/d,width:(a[t+2]-a[t])/u,height:(a[t+1]-a[t+5])/d});l.#v(),l.#w(),l.rotate(l.rotation)}else if(o||s){l.#d=!0;let e=(o||s.points)[0],n={x:e[0]-f,y:d-(e[1]-p)},r=new Dm(n,[0,0,u,d],1,l.#g/2,!0,.001);for(let t=0,i=e.length;t<i;t+=2)n.x=e[t]-f,n.y=d-(e[t+1]-p),r.add(n);let{id:i,clipPathId:a}=t.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:`0 0 1 1`,fill:l.color,"fill-opacity":l._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:r.toSVGPath()}},!0,!0);l.#y({highlightOutlines:r.getOutlines(),highlightId:i,clipPathId:a}),l.#w(),l.rotate(l.parentRotation)}return l}serialize(e=!1){if(this.isEmpty()||e)return null;if(this.deleted)return this.serializeDeleted();let t=Zu._colorManager.convert(this._uiManager.getNonHCMColor(this.color)),n=super.serialize(e);return Object.assign(n,{color:t,opacity:this.opacity,thickness:this.#g,quadPoints:this.#k(),outlines:this.#A(n.rect)}),this.addComment(n),this.annotationElementId&&!this.#N(n)?null:(n.id=this.annotationElementId,n)}#N(e){let{color:t}=this._initialData;return this.hasEditedComment||e.color.some((e,n)=>e!==t[n])}renderAnnotationElement(e){return this.deleted?(e.hide(),null):(e.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}static canCreateNewEmptyEditor(){return!1}},Am=class{#e=Object.create(null);updateProperty(e,t){this[e]=t,this.updateSVGProperty(e,t)}updateProperties(e){if(e)for(let[t,n]of Object.entries(e))t.startsWith(`_`)||this.updateProperty(t,n)}updateSVGProperty(e,t){this.#e[e]=t}toSVGProperties(){let e=this.#e;return this.#e=Object.create(null),{root:e}}reset(){this.#e=Object.create(null)}updateAll(e=this){this.updateProperties(e)}clone(){El(`Not implemented`)}},jm=class e extends Zu{#e=null;#t;_colorPicker=null;_drawId=null;static _currentDrawId=-1;static _currentParent=null;static#n=null;static#r=null;static#i=null;static _INNER_MARGIN=3;constructor(e){super(e),this.#t=e.mustBeCommitted||!1,this._addOutlines(e)}onUpdatedColor(){this._colorPicker?.update(this.color),super.onUpdatedColor()}onUpdatedOpacity(){this._colorPicker?.updateOpacity?.(this.opacity)}_addOutlines(e){e.drawOutlines&&(this.#a(e),this.#c())}#a({drawOutlines:e,drawId:t,drawingOptions:n}){this.#e=e,this._drawingOptions||=n,this.annotationElementId||this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`),t>=0?(this._drawId=t,this.parent.drawLayer.finalizeDraw(t,e.defaultProperties)):this._drawId=this.#o(e,this.parent),this.#d(e.box)}#o(t,n){let{id:r}=n.drawLayer.draw(e._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,!1);return r}static _mergeSVGProperties(e,t){let n=new Set(Object.keys(e));for(let[r,i]of Object.entries(t))n.has(r)?Object.assign(e[r],i):e[r]=i;return e}static getDefaultDrawingOptions(e){El(`Not implemented`)}static get typesMap(){El(`Not implemented`)}static get isDrawer(){return!0}static get supportMultipleDrawings(){return!1}static updateDefaultParams(t,n){let r=this.typesMap.get(t);r&&this._defaultDrawingOptions.updateProperty(r,n),this._currentParent&&(e.#n.updateProperty(r,n),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(e,t){let n=this.constructor.typesMap.get(e);n&&this._updateProperty(e,n,t)}static get defaultPropertiesToUpdate(){let e=[],t=this._defaultDrawingOptions;for(let[n,r]of this.typesMap)e.push([n,t[r]]);return e}get propertiesToUpdate(){let e=[],{_drawingOptions:t}=this;for(let[n,r]of this.constructor.typesMap)e.push([n,t[r]]);return e}_updateProperty(e,t,n){let r=this._drawingOptions,i=r[t],a=n=>{r.updateProperty(t,n);let i=this.#e.updateProperty(t,n);i&&this.#d(i),this.parent?.drawLayer.updateProperties(this._drawId,r.toSVGProperties()),e===this.colorType?this.onUpdatedColor():e===this.opacityType&&this.onUpdatedOpacity()};this.addCommands({cmd:a.bind(this,n),undo:a.bind(this,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:e,overwriteIfSameType:!0,keepUndo:!0})}_updateColorAndOpacity(e,t){let n=this.constructor.typesMap.get(this.colorType),r=this.constructor.typesMap.get(this.opacityType),i=this._drawingOptions,a=i[n],o=i[r],s=(e,t)=>{i.updateProperty(n,e),i.updateProperty(r,t),this.#e.updateProperty(n,e),this.#e.updateProperty(r,t),this.parent?.drawLayer.updateProperties(this._drawId,i.toSVGProperties()),this.onUpdatedColor(),this.onUpdatedOpacity()};this.addCommands({cmd:s.bind(this,e,t),undo:s.bind(this,a,o),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:dl.INK_COLOR_AND_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathResizingSVGProperties(this.#u()),{bbox:this.#f()}))}_onResized(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathResizedSVGProperties(this.#u()),{bbox:this.#f()}))}_onTranslating(e,t){this.parent?.drawLayer.updateProperties(this._drawId,{bbox:this.#f()})}_onTranslated(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathTranslatedSVGProperties(this.#u(),this.parentDimensions),{bbox:this.#f()}))}_onStartDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}commit(){super.commit(),this.disableEditMode(),this.disableEditing()}disableEditing(){super.disableEditing(),this.div.classList.toggle(`disabled`,!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle(`disabled`,!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,this.#t&&(this.#t=!1,this.commit(),this.parent.setSelected(this),e&&this.isOnScreen&&this.div.focus())}remove(){this.#s(),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#c(),this.#d(this.#e.box),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){let t=!1;this.parent&&!e?(this._uiManager.removeShouldRescale(this),this.#s()):e&&(this._uiManager.addShouldRescale(this),this.#c(e),t=!this.parent&&this.div?.classList.contains(`selectedEditor`)),super.setParent(e),t&&this.select()}#s(){this._drawId===null||!this.parent||(this.parent.drawLayer.remove(this._drawId),this._drawId=null,this._drawingOptions.reset())}#c(e=this.parent){if(!(this._drawId!==null&&this.parent===e)){if(this._drawId!==null){this.parent.drawLayer.updateParent(this._drawId,e.drawLayer);return}this._drawingOptions.updateAll(),this._drawId=this.#o(this.#e,e)}}#l([e,t,n,r]){let{parentDimensions:[i,a],rotation:o}=this;switch(o){case 90:return[t,1-e,a/i*n,i/a*r];case 180:return[1-e,1-t,n,r];case 270:return[1-t,e,a/i*n,i/a*r];default:return[e,t,n,r]}}#u(){let{x:e,y:t,width:n,height:r,parentDimensions:[i,a],rotation:o}=this;switch(o){case 90:return[1-t,e,i/a*n,a/i*r];case 180:return[1-e,1-t,n,r];case 270:return[t,1-e,i/a*n,a/i*r];default:return[e,t,n,r]}}#d(e){[this.x,this.y,this.width,this.height]=this.#l(e),this.div&&(this.fixAndSetPosition(),this.setDims()),this._onResized()}#f(){let{x:e,y:t,width:n,height:r,rotation:i,parentRotation:a,parentDimensions:[o,s]}=this;switch((i*4+a)/90){case 1:return[1-t-r,e,r,n];case 2:return[1-e-n,1-t-r,n,r];case 3:return[t,1-e-n,r,n];case 4:return[e,t-o/s*n,s/o*r,o/s*n];case 5:return[1-t,e,o/s*n,s/o*r];case 6:return[1-e-s/o*r,1-t,s/o*r,o/s*n];case 7:return[t-o/s*n,1-e-s/o*r,o/s*n,s/o*r];case 8:return[e-n,t-r,n,r];case 9:return[1-t,e-n,r,n];case 10:return[1-e,1-t,n,r];case 11:return[t-r,1-e,r,n];case 12:return[e-s/o*r,t,s/o*r,o/s*n];case 13:return[1-t-o/s*n,e-s/o*r,o/s*n,s/o*r];case 14:return[1-e,1-t-o/s*n,s/o*r,o/s*n];case 15:return[t,1-e,o/s*n,s/o*r];default:return[e,t,n,r]}}rotate(){this.parent&&this.parent.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties({bbox:this.#f()},this.#e.updateRotation((this.parentRotation-this.rotation+360)%360)))}onScaleChanging(){this.parent&&this.#d(this.#e.updateParentDimensions(this.parentDimensions,this.parent.scale))}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;let e,t;this._isCopy&&(e=this.x,t=this.y);let n=super.render();n.classList.add(`draw`);let r=document.createElement(`div`);return n.append(r),r.setAttribute(`aria-hidden`,`true`),r.className=`internal`,this.setDims(),this._uiManager.addShouldRescale(this),this.disableEditing(),this._isCopy&&this._moveAfterPaste(e,t),n}static createDrawerInstance(e,t,n,r,i){El(`Not implemented`)}static startDrawing(t,n,r,i){let{target:a,offsetX:o,offsetY:s,pointerId:c,pointerType:l}=i;if(Vu.isInitializedAndDifferentPointerType(l))return;let{viewport:{rotation:u}}=t,{width:d,height:f}=a.getBoundingClientRect(),p=e.#r=new AbortController,m=t.combinedSignal(p);if(Vu.setPointer(l,c),window.addEventListener(`pointerup`,e=>{Vu.isSamePointerIdOrRemove(e.pointerId)&&this._endDraw(e)},{signal:m}),window.addEventListener(`pointercancel`,e=>{Vu.isSamePointerIdOrRemove(e.pointerId)&&this._currentParent.endDrawingSession()},{signal:m}),window.addEventListener(`pointerdown`,t=>{Vu.isSamePointerType(t.pointerType)&&(Vu.initializeAndAddPointerId(t.pointerId),e.#n.isCancellable()&&(e.#n.removeLastElement(),e.#n.isEmpty()?this._currentParent.endDrawingSession(!0):this._endDraw(null)))},{capture:!0,passive:!1,signal:m}),window.addEventListener(`contextmenu`,mu,{signal:m}),a.addEventListener(`pointermove`,this._drawMove.bind(this),{signal:m}),a.addEventListener(`touchmove`,e=>{Vu.isSameTimeStamp(e.timeStamp)&&hu(e)},{signal:m}),t.toggleDrawing(),n._editorUndoBar?.hide(),e.#n){t.drawLayer.updateProperties(this._currentDrawId,e.#n.startNew(o,s,d,f,u));return}n.updateUIForDefaultProperties(this),e.#n=this.createDrawerInstance(o,s,d,f,u),e.#i=this.getDefaultDrawingOptions(),this._currentParent=t,{id:this._currentDrawId}=t.drawLayer.draw(this._mergeSVGProperties(e.#i.toSVGProperties(),e.#n.defaultSVGProperties),!0,!1)}static _drawMove(t){if(Vu.isSameTimeStamp(t.timeStamp),!e.#n)return;let{offsetX:n,offsetY:r,pointerId:i}=t;if(Vu.isSamePointerId(i)){if(Vu.isUsingMultiplePointers()){this._endDraw(t);return}this._currentParent.drawLayer.updateProperties(this._currentDrawId,e.#n.add(n,r)),Vu.setTimeStamp(t.timeStamp),hu(t)}}static _cleanup(t){t&&(this._currentDrawId=-1,this._currentParent=null,e.#n=null,e.#i=null,Vu.clearTimeStamp()),e.#r&&(e.#r.abort(),e.#r=null,Vu.clearPointerIds())}static _endDraw(t){let n=this._currentParent;if(n){if(n.toggleDrawing(!0),this._cleanup(!1),t?.target===n.div&&n.drawLayer.updateProperties(this._currentDrawId,e.#n.end(t.offsetX,t.offsetY)),this.supportMultipleDrawings){let t=e.#n,r=this._currentDrawId,i=t.getLastElement();n.addCommands({cmd:()=>{n.drawLayer.updateProperties(r,t.setLastElement(i))},undo:()=>{n.drawLayer.updateProperties(r,t.removeLastElement())},mustExec:!1,type:dl.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(t){let n=this._currentParent;if(!n)return null;if(n.toggleDrawing(!0),n.cleanUndoStack(dl.DRAW_STEP),!e.#n.isEmpty()){let{pageDimensions:[r,i],scale:a}=n,o=n.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,drawOutlines:e.#n.getOutlines(r*a,i*a,a,this._INNER_MARGIN),drawingOptions:e.#i,mustBeCommitted:!t});return this._cleanup(!0),o}return n.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(e){}static deserializeDraw(e,t,n,r,i,a){El(`Not implemented`)}static async deserialize(e,t,n){let{rawDims:{pageWidth:r,pageHeight:i,pageX:a,pageY:o}}=t.viewport,s=this.deserializeDraw(a,o,r,i,this._INNER_MARGIN,e),c=await super.deserialize(e,t,n);return c.createDrawingOptions(e),c.#a({drawOutlines:s}),c.#c(),c.onScaleChanging(),c.rotate(),c}serializeDraw(e){let[t,n]=this.pageTranslation,[r,i]=this.pageDimensions;return this.#e.serialize([t,n,r,i],e)}renderAnnotationElement(e){return e.updateEdited({rect:this.getPDFRect()}),null}static canCreateNewEmptyEditor(){return!1}},Mm=class{#e=new Float64Array(6);#t;#n;#r;#i;#a;#o=``;#s=0;#c=new Nm;#l;#u;constructor(e,t,n,r,i,a){this.#l=n,this.#u=r,this.#r=i,this.#i=a,[e,t]=this.#d(e,t);let o=this.#t=[NaN,NaN,NaN,NaN,e,t];this.#a=[e,t],this.#n=[{line:o,points:this.#a}],this.#e.set(o,0)}updateProperty(e,t){e===`stroke-width`&&(this.#i=t)}#d(e,t){return $._normalizePoint(e,t,this.#l,this.#u,this.#r)}isEmpty(){return!this.#n||this.#n.length===0}isCancellable(){return this.#a.length<=10}add(e,t){[e,t]=this.#d(e,t);let[n,r,i,a]=this.#e.subarray(2,6),o=e-i,s=t-a;return Math.hypot(this.#l*o,this.#u*s)<=2?null:(this.#a.push(e,t),isNaN(n)?(this.#e.set([i,a,e,t],2),this.#t.push(NaN,NaN,NaN,NaN,e,t),{path:{d:this.toSVGPath()}}):(isNaN(this.#e[0])&&this.#t.splice(6,6),this.#e.set([n,r,i,a,e,t],0),this.#t.push(...$.createBezierPoints(n,r,i,a,e,t)),{path:{d:this.toSVGPath()}}))}end(e,t){return this.add(e,t)||(this.#a.length===2?{path:{d:this.toSVGPath()}}:null)}startNew(e,t,n,r,i){this.#l=n,this.#u=r,this.#r=i,[e,t]=this.#d(e,t);let a=this.#t=[NaN,NaN,NaN,NaN,e,t];this.#a=[e,t];let o=this.#n.at(-1);return o&&(o.line=new Float32Array(o.line),o.points=new Float32Array(o.points)),this.#n.push({line:a,points:this.#a}),this.#e.set(a,0),this.#s=0,this.toSVGPath(),null}getLastElement(){return this.#n.at(-1)}setLastElement(e){return this.#n?(this.#n.push(e),this.#t=e.line,this.#a=e.points,this.#s=0,{path:{d:this.toSVGPath()}}):this.#c.setLastElement(e)}removeLastElement(){if(!this.#n)return this.#c.removeLastElement();this.#n.pop(),this.#o=``;for(let e=0,t=this.#n.length;e<t;e++){let{line:t,points:n}=this.#n[e];this.#t=t,this.#a=n,this.#s=0,this.toSVGPath()}return{path:{d:this.#o}}}toSVGPath(){let e=$.svgRound(this.#t[4]),t=$.svgRound(this.#t[5]);if(this.#a.length===2)return this.#o=`${this.#o} M ${e} ${t} Z`,this.#o;if(this.#a.length<=6){let n=this.#o.lastIndexOf(`M`);this.#o=`${this.#o.slice(0,n)} M ${e} ${t}`,this.#s=6}if(this.#a.length===4){let e=$.svgRound(this.#t[10]),t=$.svgRound(this.#t[11]);return this.#o=`${this.#o} L ${e} ${t}`,this.#s=12,this.#o}let n=[];this.#s===0&&(n.push(`M ${e} ${t}`),this.#s=6);for(let e=this.#s,t=this.#t.length;e<t;e+=6){let[t,r,i,a,o,s]=this.#t.slice(e,e+6).map($.svgRound);n.push(`C${t} ${r} ${i} ${a} ${o} ${s}`)}return this.#o+=n.join(` `),this.#s=this.#t.length,this.#o}getOutlines(e,t,n,r){let i=this.#n.at(-1);return i.line=new Float32Array(i.line),i.points=new Float32Array(i.points),this.#c.build(this.#n,e,t,n,this.#r,this.#i,r),this.#e=null,this.#t=null,this.#n=null,this.#o=null,this.#c}get defaultSVGProperties(){return{root:{viewBox:`0 0 10000 10000`},rootClass:{draw:!0},bbox:[0,0,1,1]}}},Nm=class extends ${#e;#t=0;#n;#r;#i;#a;#o;#s;#c;build(e,t,n,r,i,a,o){this.#i=t,this.#a=n,this.#o=r,this.#s=i,this.#c=a,this.#n=o??0,this.#r=e,this.#d()}get thickness(){return this.#c}setLastElement(e){return this.#r.push(e),{path:{d:this.toSVGPath()}}}removeLastElement(){return this.#r.pop(),{path:{d:this.toSVGPath()}}}toSVGPath(){let e=[];for(let{line:t}of this.#r){if(e.push(`M${$.svgRound(t[4])} ${$.svgRound(t[5])}`),t.length===6){e.push(`Z`);continue}if(t.length===12&&isNaN(t[6])){e.push(`L${$.svgRound(t[10])} ${$.svgRound(t[11])}`);continue}for(let n=6,r=t.length;n<r;n+=6){let[r,i,a,o,s,c]=t.subarray(n,n+6).map($.svgRound);e.push(`C${r} ${i} ${a} ${o} ${s} ${c}`)}}return e.join(``)}serialize([e,t,n,r],i){let a=[],o=[],[s,c,l,u]=this.#u(),d,f,p,m,h,g,_,v,y;switch(this.#s){case 0:y=$._rescale,d=e,f=t+r,p=n,m=-r,h=e+s*n,g=t+(1-c-u)*r,_=e+(s+l)*n,v=t+(1-c)*r;break;case 90:y=$._rescaleAndSwap,d=e,f=t,p=n,m=r,h=e+c*n,g=t+s*r,_=e+(c+u)*n,v=t+(s+l)*r;break;case 180:y=$._rescale,d=e+n,f=t,p=-n,m=r,h=e+(1-s-l)*n,g=t+c*r,_=e+(1-s)*n,v=t+(c+u)*r;break;case 270:y=$._rescaleAndSwap,d=e+n,f=t+r,p=-n,m=-r,h=e+(1-c-u)*n,g=t+(1-s-l)*r,_=e+(1-c)*n,v=t+(1-s)*r;break}for(let{line:e,points:t}of this.#r)a.push(y(e,d,f,p,m,i?Array(e.length):null)),o.push(y(t,d,f,p,m,i?Array(t.length):null));return{lines:a,points:o,rect:[h,g,_,v]}}static deserialize(e,t,n,r,i,{paths:{lines:a,points:o},rotation:s,thickness:c}){let l=[],u,d,f,p,m;switch(s){case 0:m=$._rescale,u=-e/n,d=t/r+1,f=1/n,p=-1/r;break;case 90:m=$._rescaleAndSwap,u=-t/r,d=-e/n,f=1/r,p=1/n;break;case 180:m=$._rescale,u=e/n+1,d=-t/r,f=-1/n,p=1/r;break;case 270:m=$._rescaleAndSwap,u=t/r+1,d=e/n+1,f=-1/r,p=-1/n;break}if(!a){a=[];for(let e of o){let t=e.length;if(t===2){a.push(new Float32Array([NaN,NaN,NaN,NaN,e[0],e[1]]));continue}if(t===4){a.push(new Float32Array([NaN,NaN,NaN,NaN,e[0],e[1],NaN,NaN,NaN,NaN,e[2],e[3]]));continue}let n=new Float32Array(3*(t-2));a.push(n);let[r,i,o,s]=e.subarray(0,4);n.set([NaN,NaN,NaN,NaN,r,i],0);for(let a=4;a<t;a+=2){let t=e[a],c=e[a+1];n.set($.createBezierPoints(r,i,o,s,t,c),(a-2)*3),[r,i,o,s]=[o,s,t,c]}}}for(let e=0,t=a.length;e<t;e++)l.push({line:m(a[e].map(e=>e??NaN),u,d,f,p),points:m(o[e].map(e=>e??NaN),u,d,f,p)});let h=new this.prototype.constructor;return h.build(l,n,r,1,s,c,i),h}#l(e=this.#c){let t=this.#n+e/2*this.#o;return this.#s%180==0?[t/this.#i,t/this.#a]:[t/this.#a,t/this.#i]}#u(){let[e,t,n,r]=this.#e,[i,a]=this.#l(0);return[e+i,t+a,n-2*i,r-2*a]}#d(){let e=this.#e=il.slice();for(let{line:t}of this.#r){if(t.length<=12){for(let n=4,r=t.length;n<r;n+=6)Q.pointBoundingBox(t[n],t[n+1],e);continue}let n=t[4],r=t[5];for(let i=6,a=t.length;i<a;i+=6){let[a,o,s,c,l,u]=t.subarray(i,i+6);Q.bezierBoundingBox(n,r,a,o,s,c,l,u,e),n=l,r=u}}let[t,n]=this.#l();e[0]=eu(e[0]-t,0,1),e[1]=eu(e[1]-n,0,1),e[2]=eu(e[2]+t,0,1),e[3]=eu(e[3]+n,0,1),e[2]-=e[0],e[3]-=e[1]}get box(){return this.#e}updateProperty(e,t){return e===`stroke-width`?this.#f(t):null}#f(e){let[t,n]=this.#l();this.#c=e;let[r,i]=this.#l(),[a,o]=[r-t,i-n],s=this.#e;return s[0]-=a,s[1]-=o,s[2]+=2*a,s[3]+=2*o,s}updateParentDimensions([e,t],n){let[r,i]=this.#l();this.#i=e,this.#a=t,this.#o=n;let[a,o]=this.#l(),s=a-r,c=o-i,l=this.#e;return l[0]-=s,l[1]-=c,l[2]+=2*s,l[3]+=2*c,l}updateRotation(e){return this.#t=e,{path:{transform:this.rotationTransform}}}get viewBox(){return this.#e.map($.svgRound).join(` `)}get defaultProperties(){let[e,t]=this.#e;return{root:{viewBox:this.viewBox},path:{"transform-origin":`${$.svgRound(e)} ${$.svgRound(t)}`}}}get rotationTransform(){let[,,e,t]=this.#e,n=0,r=0,i=0,a=0,o=0,s=0;switch(this.#t){case 90:r=t/e,i=-e/t,o=e;break;case 180:n=-1,a=-1,o=e,s=t;break;case 270:r=-t/e,i=e/t,s=t;break;default:return``}return`matrix(${n} ${r} ${i} ${a} ${$.svgRound(o)} ${$.svgRound(s)})`}getPathResizingSVGProperties([e,t,n,r]){let[i,a]=this.#l(),[o,s,c,l]=this.#e;if(Math.abs(c-i)<=$.PRECISION||Math.abs(l-a)<=$.PRECISION){let i=e+n/2-(o+c/2),a=t+r/2-(s+l/2);return{path:{"transform-origin":`${$.svgRound(e)} ${$.svgRound(t)}`,transform:`${this.rotationTransform} translate(${i} ${a})`}}}let u=(n-2*i)/(c-2*i),d=(r-2*a)/(l-2*a),f=c/n,p=l/r;return{path:{"transform-origin":`${$.svgRound(o)} ${$.svgRound(s)}`,transform:`${this.rotationTransform} scale(${f} ${p}) translate(${$.svgRound(i)} ${$.svgRound(a)}) scale(${u} ${d}) translate(${$.svgRound(-i)} ${$.svgRound(-a)})`}}}getPathResizedSVGProperties([e,t,n,r]){let[i,a]=this.#l(),o=this.#e,[s,c,l,u]=o;if(o[0]=e,o[1]=t,o[2]=n,o[3]=r,Math.abs(l-i)<=$.PRECISION||Math.abs(u-a)<=$.PRECISION){let i=e+n/2-(s+l/2),a=t+r/2-(c+u/2);for(let{line:e,points:t}of this.#r)$._translate(e,i,a,e),$._translate(t,i,a,t);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${$.svgRound(e)} ${$.svgRound(t)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}let d=(n-2*i)/(l-2*i),f=(r-2*a)/(u-2*a),p=-d*(s+i)+e+i,m=-f*(c+a)+t+a;if(d!==1||f!==1||p!==0||m!==0)for(let{line:e,points:t}of this.#r)$._rescale(e,p,m,d,f,e),$._rescale(t,p,m,d,f,t);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${$.svgRound(e)} ${$.svgRound(t)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}getPathTranslatedSVGProperties([e,t],n){let[r,i]=n,a=this.#e,o=e-a[0],s=t-a[1];if(this.#i===r&&this.#a===i)for(let{line:e,points:t}of this.#r)$._translate(e,o,s,e),$._translate(t,o,s,t);else{let e=this.#i/r,t=this.#a/i;this.#i=r,this.#a=i;for(let{line:n,points:r}of this.#r)$._rescale(n,o,s,e,t,n),$._rescale(r,o,s,e,t,r);a[2]*=e,a[3]*=t}return a[0]=e,a[1]=t,{root:{viewBox:this.viewBox},path:{d:this.toSVGPath(),"transform-origin":`${$.svgRound(e)} ${$.svgRound(t)}`}}}get defaultSVGProperties(){let e=this.#e;return{root:{viewBox:this.viewBox},rootClass:{draw:!0},path:{d:this.toSVGPath(),"transform-origin":`${$.svgRound(e[0])} ${$.svgRound(e[1])}`,transform:this.rotationTransform||null},bbox:e}}},Pm=class e extends Am{constructor(e){super(),this._viewParameters=e,super.updateProperties({fill:`none`,stroke:Zu._defaultLineColor,"stroke-opacity":1,"stroke-width":1,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-miterlimit":10})}updateSVGProperty(e,t){e===`stroke-width`&&(t??=this[`stroke-width`],t*=this._viewParameters.realScale),super.updateSVGProperty(e,t)}clone(){let t=new e(this._viewParameters);return t.updateAll(this),t}},Fm=class e extends jm{static _type=`ink`;static _editorType=ul.INK;static _defaultDrawingOptions=null;constructor(e){super({...e,name:`inkEditor`}),this._willKeepAspectRatio=!0,this.defaultL10nId=`pdfjs-editor-ink-editor`}static initialize(e,t){Zu.initialize(e,t),this._defaultDrawingOptions=new Pm(t.viewParameters)}static getDefaultDrawingOptions(e){let t=this._defaultDrawingOptions.clone();return t.updateProperties(e),t}static get supportMultipleDrawings(){return!0}static get typesMap(){return Ml(this,`typesMap`,new Map([[dl.INK_THICKNESS,`stroke-width`],[dl.INK_COLOR,`stroke`],[dl.INK_OPACITY,`stroke-opacity`]]))}static createDrawerInstance(e,t,n,r,i){return new Mm(e,t,n,r,i,this._defaultDrawingOptions[`stroke-width`])}static deserializeDraw(e,t,n,r,i,a){return Nm.deserialize(e,t,n,r,i,a)}static async deserialize(e,t,n){let r=null;if(e instanceof pm){let{data:{inkLists:t,rect:n,rotation:i,id:a,color:o,opacity:s,borderStyle:{rawWidth:c},popupRef:l,richText:u,contentsObj:d,creationDate:f,modificationDate:p},parent:{page:{pageNumber:m}}}=e;r=e={annotationType:ul.INK,color:Array.from(o),thickness:c,opacity:s,paths:{points:t},boxes:null,pageIndex:m-1,rect:n.slice(0),rotation:i,annotationElementId:a,id:a,deleted:!1,popupRef:l,richText:u,comment:d?.str||null,creationDate:f,modificationDate:p}}let i=await super.deserialize(e,t,n);return i._initialData=r,e.comment&&i.setCommentData(e),i}get toolbarButtons(){return this._colorPicker||=new Lp(this),[[`colorPicker`,this._colorPicker]]}get colorType(){return dl.INK_COLOR}get colorAndOpacityType(){return dl.INK_COLOR_AND_OPACITY}get opacityType(){return dl.INK_OPACITY}updateParams(e,t){if(e===dl.INK_COLOR_AND_OPACITY){this._updateColorAndOpacity(t.color,t.opacity);return}super.updateParams(e,t)}static updateDefaultParams(e,t){if(e===dl.INK_COLOR_AND_OPACITY){super.updateDefaultParams(dl.INK_COLOR,t.color),super.updateDefaultParams(dl.INK_OPACITY,t.opacity);return}super.updateDefaultParams(e,t)}get color(){return this._drawingOptions.stroke}get opacity(){return this._drawingOptions[`stroke-opacity`]}onScaleChanging(){if(!this.parent)return;super.onScaleChanging();let{_drawId:e,_drawingOptions:t,parent:n}=this;t.updateSVGProperty(`stroke-width`),n.drawLayer.updateProperties(e,t.toSVGProperties())}static onScaleChangingWhenDrawing(){let e=this._currentParent;e&&(super.onScaleChangingWhenDrawing(),this._defaultDrawingOptions.updateSVGProperty(`stroke-width`),e.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}createDrawingOptions({color:t,thickness:n,opacity:r}){this._drawingOptions=e.getDefaultDrawingOptions({stroke:Q.makeHexColor(...t),"stroke-width":n,"stroke-opacity":r})}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();let{lines:t,points:n}=this.serializeDraw(e),{_drawingOptions:{stroke:r,"stroke-opacity":i,"stroke-width":a}}=this,o=Object.assign(super.serialize(e),{color:Zu._colorManager.convert(r),opacity:i,thickness:a,paths:{lines:t,points:n}});return this.addComment(o),e?(o.isCopy=!0,o):this.annotationElementId&&!this.#e(o)?null:(o.id=this.annotationElementId,o)}#e(e){let{color:t,thickness:n,opacity:r,pageIndex:i}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized||e.color.some((e,n)=>e!==t[n])||e.thickness!==n||e.opacity!==r||e.pageIndex!==i}renderAnnotationElement(e){if(this.deleted)return e.hide(),null;let{points:t,rect:n}=this.serializeDraw(!1);return e.updateEdited({rect:n,thickness:this._drawingOptions[`stroke-width`],points:t,popup:this.comment}),null}},Im=class extends Nm{toSVGPath(){let e=super.toSVGPath();return e.endsWith(`Z`)||(e+=`Z`),e}},Lm=8,Rm=3,zm=class{static#e={maxDim:512,sigmaSFactor:.02,sigmaR:25,kernelSize:16};static#t(e,t,n,r){return n-=e,r-=t,n===0?r>0?0:4:n===1?r+6:2-r}static#n=new Int32Array([0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1]);static#r(e,t,n,r,i,a,o){let s=this.#t(n,r,i,a);for(let i=0;i<8;i++){let a=(-i+s-o+16)%8,c=this.#n[2*a],l=this.#n[2*a+1];if(e[(n+c)*t+(r+l)]!==0)return a}return-1}static#i(e,t,n,r,i,a,o){let s=this.#t(n,r,i,a);for(let i=0;i<8;i++){let a=(i+s+o+16)%8,c=this.#n[2*a],l=this.#n[2*a+1];if(e[(n+c)*t+(r+l)]!==0)return a}return-1}static#a(e,t,n,r){let i=e.length,a=new Int32Array(i);for(let t=0;t<i;t++)a[t]=+(e[t]<=r);for(let e=1;e<n-1;e++)a[e*t]=a[e*t+t-1]=0;for(let e=0;e<t;e++)a[e]=a[t*n-1-e]=0;let o=1,s,c=[];for(let e=1;e<n-1;e++){s=1;for(let n=1;n<t-1;n++){let r=e*t+n,i=a[r];if(i===0)continue;let l=e,u=n;if(i===1&&a[r-1]===0)o+=1,--u;else if(i>=1&&a[r+1]===0)o+=1,u+=1,i>1&&(s=i);else{i!==1&&(s=Math.abs(i));continue}let d=[n,e],f=u===n+1,p={isHole:f,points:d,id:o,parent:0};c.push(p);let m;for(let e of c)if(e.id===s){m=e;break}m?m.isHole?p.parent=f?m.parent:s:p.parent=f?s:m.parent:p.parent=f?s:0;let h=this.#r(a,t,e,n,l,u,0);if(h===-1){a[r]=-o,a[r]!==1&&(s=Math.abs(a[r]));continue}let g=this.#n[2*h],_=this.#n[2*h+1],v=e+g,y=n+_;l=v,u=y;let b=e,x=n;for(;;){let i=this.#i(a,t,b,x,l,u,1);g=this.#n[2*i],_=this.#n[2*i+1];let c=b+g,f=x+_;d.push(f,c);let p=b*t+x;if(a[p+1]===0?a[p]=-o:a[p]===1&&(a[p]=o),c===e&&f===n&&b===v&&x===y){a[r]!==1&&(s=Math.abs(a[r]));break}else l=b,u=x,b=c,x=f}}}return c}static#o(e,t,n,r){if(n-t<=4){for(let i=t;i<n-2;i+=2)r.push(e[i],e[i+1]);return}let i=e[t],a=e[t+1],o=e[n-4]-i,s=e[n-3]-a,c=Math.hypot(o,s),l=o/c,u=s/c,d=l*a-u*i,f=s/o,p=1/c,m=Math.atan(f),h=Math.cos(m),g=Math.sin(m),_=p*(Math.abs(h)+Math.abs(g)),v=p*(1-_+_**2),y=Math.max(Math.atan(Math.abs(g+h)*v),Math.atan(Math.abs(g-h)*v)),b=0,x=t;for(let r=t+2;r<n-2;r+=2){let t=Math.abs(d-l*e[r+1]+u*e[r]);t>b&&(x=r,b=t)}b>(c*y)**2?(this.#o(e,t,x+2,r),this.#o(e,x,n,r)):r.push(i,a)}static#s(e){let t=[],n=e.length;return this.#o(e,0,n,t),t.push(e[n-2],e[n-1]),t.length<=4?null:t}static#c(e,t,n,r,i,a){let o=new Float32Array(a**2),s=-2*r**2,c=a>>1;for(let e=0;e<a;e++){let t=(e-c)**2;for(let n=0;n<a;n++)o[e*a+n]=Math.exp((t+(n-c)**2)/s)}let l=new Float32Array(256),u=-2*i**2;for(let e=0;e<256;e++)l[e]=Math.exp(e**2/u);let d=e.length,f=new Uint8Array(d),p=new Uint32Array(256);for(let r=0;r<n;r++)for(let i=0;i<t;i++){let s=r*t+i,u=e[s],d=0,m=0;for(let s=0;s<a;s++){let f=r+s-c;if(!(f<0||f>=n))for(let n=0;n<a;n++){let r=i+n-c;if(r<0||r>=t)continue;let p=e[f*t+r],h=o[s*a+n]*l[Math.abs(p-u)];d+=p*h,m+=h}}let h=f[s]=Math.round(d/m);p[h]++}return[f,p]}static#l(e){let t=new Uint32Array(256);for(let n of e)t[n]++;return t}static#u(e){let t=e.length,n=new Uint8ClampedArray(t>>2),r=-1/0,i=1/0;for(let t=0,a=n.length;t<a;t++){let a=n[t]=e[t<<2];r=Math.max(r,a),i=Math.min(i,a)}let a=255/(r-i);for(let e=0,t=n.length;e<t;e++)n[e]=(n[e]-i)*a;return n}static#d(e){let t,n=-1/0,r=-1/0,i=e.findIndex(e=>e!==0),a=i,o=i;for(t=i;t<256;t++){let i=e[t];i>n&&(t-a>r&&(r=t-a,o=t-1),n=i,a=t)}for(t=o-1;t>=0&&!(e[t]>e[t+1]);t--);return t}static#f(e){let t=e,{width:n,height:r}=e,{maxDim:i}=this.#e,a=n,o=r;if(n>i||r>i){let s=n,c=r,l=Math.log2(Math.max(n,r)/i),u=Math.floor(l);l=l===u?u-1:u;for(let n=0;n<l;n++){a=Math.ceil(s/2),o=Math.ceil(c/2);let n=new OffscreenCanvas(a,o);n.getContext(`2d`).drawImage(e,0,0,s,c,0,0,a,o),s=a,c=o,e!==t&&e.close(),e=n.transferToImageBitmap()}let d=Math.min(i/a,i/o);a=Math.round(a*d),o=Math.round(o*d)}let s=new OffscreenCanvas(a,o).getContext(`2d`,{willReadFrequently:!0});s.fillStyle=`white`,s.fillRect(0,0,a,o),s.filter=`grayscale(1)`,s.drawImage(e,0,0,e.width,e.height,0,0,a,o);let c=s.getImageData(0,0,a,o).data;return[this.#u(c),a,o]}static extractContoursFromText(e,{fontFamily:t,fontStyle:n,fontWeight:r},i,a,o,s){let c=new OffscreenCanvas(1,1),l=c.getContext(`2d`,{alpha:!1}),u=l.font=`${n} ${r} 200px ${t}`,{actualBoundingBoxLeft:d,actualBoundingBoxRight:f,actualBoundingBoxAscent:p,actualBoundingBoxDescent:m,fontBoundingBoxAscent:h,fontBoundingBoxDescent:g,width:_}=l.measureText(e),v=1.5,y=Math.ceil(Math.max(Math.abs(d)+Math.abs(f)||0,_)*v),b=Math.ceil(Math.max(Math.abs(p)+Math.abs(m)||200,Math.abs(h)+Math.abs(g)||200)*v);c=new OffscreenCanvas(y,b),l=c.getContext(`2d`,{alpha:!0,willReadFrequently:!0}),l.font=u,l.filter=`grayscale(1)`,l.fillStyle=`white`,l.fillRect(0,0,y,b),l.fillStyle=`black`,l.fillText(e,y*(v-1)/2,b*(3-v)/2);let x=this.#u(l.getImageData(0,0,y,b).data),S=this.#l(x),C=this.#d(S),w=this.#a(x,y,b,C);return this.processDrawnLines({lines:{curves:w,width:y,height:b},pageWidth:i,pageHeight:a,rotation:o,innerMargin:s,mustSmooth:!0,areContours:!0})}static process(e,t,n,r,i){let[a,o,s]=this.#f(e),[c,l]=this.#c(a,o,s,Math.hypot(o,s)*this.#e.sigmaSFactor,this.#e.sigmaR,this.#e.kernelSize),u=this.#d(l),d=this.#a(c,o,s,u);return this.processDrawnLines({lines:{curves:d,width:o,height:s},pageWidth:t,pageHeight:n,rotation:r,innerMargin:i,mustSmooth:!0,areContours:!0})}static processDrawnLines({lines:e,pageWidth:t,pageHeight:n,rotation:r,innerMargin:i,mustSmooth:a,areContours:o}){r%180!=0&&([t,n]=[n,t]);let{curves:s,width:c,height:l}=e,u=e.thickness??0,d=[],f=Math.min(t/c,n/l),p=f/t,m=f/n,h=[];for(let{points:e}of s){let t=a?this.#s(e):e;if(!t)continue;h.push(t);let n=t.length,r=new Float32Array(n),i=new Float32Array(3*(n===2?2:n-2));if(d.push({line:i,points:r}),n===2){r[0]=t[0]*p,r[1]=t[1]*m,i.set([NaN,NaN,NaN,NaN,r[0],r[1]],0);continue}let[o,s,c,l]=t;o*=p,s*=m,c*=p,l*=m,r.set([o,s,c,l],0),i.set([NaN,NaN,NaN,NaN,o,s],0);for(let e=4;e<n;e+=2){let n=r[e]=t[e]*p,a=r[e+1]=t[e+1]*m;i.set($.createBezierPoints(o,s,c,l,n,a),(e-2)*3),[o,s,c,l]=[c,l,n,a]}}if(d.length===0)return null;let g=o?new Im:new Nm;return g.build(d,t,n,1,r,o?0:u,i),{outline:g,newCurves:h,areContours:o,thickness:u,width:c,height:l}}static async compressSignature({outlines:e,areContours:t,thickness:n,width:r,height:i}){let a=1/0,o=-1/0,s=0;for(let t of e){s+=t.length;for(let e=2,n=t.length;e<n;e++){let n=t[e]-t[e-2];a=Math.min(a,n),o=Math.max(o,n)}}let c;c=a>=-128&&o<=127?Int8Array:a>=-32768&&o<=32767?Int16Array:Int32Array;let l=e.length,u=Lm+Rm*l,d=new Uint32Array(u),f=0;d[f++]=u*Uint32Array.BYTES_PER_ELEMENT+(s-2*l)*c.BYTES_PER_ELEMENT,d[f++]=0,d[f++]=r,d[f++]=i,d[f++]=+!t,d[f++]=Math.max(0,Math.floor(n??0)),d[f++]=l,d[f++]=c.BYTES_PER_ELEMENT;for(let t of e)d[f++]=t.length-2,d[f++]=t[0],d[f++]=t[1];let p=new CompressionStream(`deflate-raw`),m=p.writable.getWriter();await m.ready,m.write(d);let h=c.prototype.constructor;for(let t of e){let e=new h(t.length-2);for(let n=2,r=t.length;n<r;n++)e[n-2]=t[n]-t[n-2];m.write(e)}return m.close(),(await new Response(p.readable).bytes()).toBase64()}static async decompressSignature(e){try{let t=Uint8Array.fromBase64(e),{readable:n,writable:r}=new DecompressionStream(`deflate-raw`),i=r.getWriter();await i.ready,i.write(t).then(async()=>{await i.ready,await i.close()}).catch(()=>{});let a=null,o=0;for await(let e of n)a||=new Uint8Array(new Uint32Array(e.buffer,0,4)[0]),a.set(e,o),o+=e.length;let s=new Uint32Array(a.buffer,0,a.length>>2),c=s[1];if(c!==0)throw Error(`Invalid version: ${c}`);let l=s[2],u=s[3],d=s[4]===0,f=s[5],p=s[6],m=s[7],h=[],g=(Lm+Rm*p)*Uint32Array.BYTES_PER_ELEMENT,_;switch(m){case Int8Array.BYTES_PER_ELEMENT:_=new Int8Array(a.buffer,g);break;case Int16Array.BYTES_PER_ELEMENT:_=new Int16Array(a.buffer,g);break;case Int32Array.BYTES_PER_ELEMENT:_=new Int32Array(a.buffer,g);break}o=0;for(let e=0;e<p;e++){let t=s[Rm*e+Lm],n=new Float32Array(t+2);h.push(n);for(let t=0;t<Rm-1;t++)n[t]=s[Rm*e+Lm+t+1];for(let e=0;e<t;e++)n[e+2]=n[e]+_[o++]}return{areContours:d,thickness:f,outlines:h,width:l,height:u}}catch(e){return Tl(`decompressSignature: ${e}`),null}}},Bm=class e extends Am{constructor(){super(),super.updateProperties({fill:Zu._defaultLineColor,"stroke-width":0})}clone(){let t=new e;return t.updateAll(this),t}},Vm=class e extends Pm{constructor(e){super(e),super.updateProperties({stroke:Zu._defaultLineColor,"stroke-width":1})}clone(){let t=new e(this._viewParameters);return t.updateAll(this),t}},Hm=class e extends jm{#e=!1;#t=null;#n=null;#r=null;static _type=`signature`;static _editorType=ul.SIGNATURE;static _defaultDrawingOptions=null;constructor(e){super({...e,mustBeCommitted:!0,name:`signatureEditor`}),this._willKeepAspectRatio=!0,this.#n=e.signatureData||null,this.#t=null,this.defaultL10nId=`pdfjs-editor-signature-editor1`}static initialize(e,t){Zu.initialize(e,t),this._defaultDrawingOptions=new Bm,this._defaultDrawnSignatureOptions=new Vm(t.viewParameters)}static getDefaultDrawingOptions(e){let t=this._defaultDrawingOptions.clone();return t.updateProperties(e),t}static get supportMultipleDrawings(){return!1}static get typesMap(){return Ml(this,`typesMap`,new Map)}static get isDrawer(){return!1}get telemetryFinalData(){return{type:`signature`,hasDescription:!!this.#t}}static computeTelemetryFinalData(e){let t=e.get(`hasDescription`);return{hasAltText:t.get(!0)??0,hasNoAltText:t.get(!1)??0}}get isResizable(){return!0}onScaleChanging(){this._drawId!==null&&super.onScaleChanging()}render(){if(this.div)return this.div;let t,n,{_isCopy:r}=this;if(r&&(this._isCopy=!1,t=this.x,n=this.y),super.render(),this._drawId===null)if(this.#n){let{lines:t,mustSmooth:n,areContours:r,description:i,uuid:a,heightInPage:o}=this.#n,{rawDims:{pageWidth:s,pageHeight:c},rotation:l}=this.parent.viewport,u=zm.processDrawnLines({lines:t,pageWidth:s,pageHeight:c,rotation:l,innerMargin:e._INNER_MARGIN,mustSmooth:n,areContours:r});this.addSignature(u,o,i,a)}else this.div.setAttribute(`data-l10n-args`,JSON.stringify({description:``})),this.div.hidden=!0,this._uiManager.getSignature(this);else this.div.setAttribute(`data-l10n-args`,JSON.stringify({description:this.#t||``}));return r&&(this._isCopy=!0,this._moveAfterPaste(t,n)),this.div}setUuid(e){this.#r=e,this.addEditToolbar()}getUuid(){return this.#r}get description(){return this.#t}set description(e){this.#t=e,this.div&&(this.div.setAttribute(`data-l10n-args`,JSON.stringify({description:e})),super.addEditToolbar().then(t=>{t?.updateEditSignatureButton(e)}))}getSignaturePreview(){let{newCurves:e,areContours:t,thickness:n,width:r,height:i}=this.#n,a=Math.max(r,i);return{areContours:t,outline:zm.processDrawnLines({lines:{curves:e.map(e=>({points:e})),thickness:n,width:r,height:i},pageWidth:a,pageHeight:a,rotation:0,innerMargin:0,mustSmooth:!1,areContours:t}).outline}}get toolbarButtons(){return this._uiManager.signatureManager?[[`editSignature`,this._uiManager.signatureManager]]:super.toolbarButtons}addSignature(t,n,r,i){let{x:a,y:o}=this,{outline:s}=this.#n=t;this.#e=s instanceof Im,this.description=r;let c;this.#e?c=e.getDefaultDrawingOptions():(c=e._defaultDrawnSignatureOptions.clone(),c.updateProperties({"stroke-width":s.thickness})),this._addOutlines({drawOutlines:s,drawingOptions:c});let[,l]=this.pageDimensions,u=n/l;u=u>=1?.5:u,this.width*=u/this.height,this.width>=1&&(u*=.9/this.width,this.width=.9),this.height=u,this.setDims(),this.x=a,this.y=o,this.center(),this._onResized(),this.onScaleChanging(),this.rotate(),this._uiManager.addToAnnotationStorage(this),this.setUuid(i),this._reportTelemetry({action:`pdfjs.signature.inserted`,data:{hasBeenSaved:!!i,hasDescription:!!r}}),this.div.hidden=!1}getFromImage(t){let{rawDims:{pageWidth:n,pageHeight:r},rotation:i}=this.parent.viewport;return zm.process(t,n,r,i,e._INNER_MARGIN)}getFromText(t,n){let{rawDims:{pageWidth:r,pageHeight:i},rotation:a}=this.parent.viewport;return zm.extractContoursFromText(t,n,r,i,a,e._INNER_MARGIN)}getDrawnSignature(t){let{rawDims:{pageWidth:n,pageHeight:r},rotation:i}=this.parent.viewport;return zm.processDrawnLines({lines:t,pageWidth:n,pageHeight:r,rotation:i,innerMargin:e._INNER_MARGIN,mustSmooth:!1,areContours:!1})}createDrawingOptions({areContours:t,thickness:n}){t?this._drawingOptions=e.getDefaultDrawingOptions():(this._drawingOptions=e._defaultDrawnSignatureOptions.clone(),this._drawingOptions.updateProperties({"stroke-width":n}))}serialize(e=!1){if(this.isEmpty())return null;let{lines:t,points:n}=this.serializeDraw(e),{_drawingOptions:{"stroke-width":r}}=this,i=Object.assign(super.serialize(e),{isSignature:!0,areContours:this.#e,color:[0,0,0],thickness:this.#e?0:r});return this.addComment(i),e?(i.paths={lines:t,points:n},i.uuid=this.#r,i.isCopy=!0):i.lines=t,this.#t&&(i.accessibilityData={type:`Figure`,alt:this.#t}),i}static deserializeDraw(e,t,n,r,i,a){return a.areContours?Im.deserialize(e,t,n,r,i,a):Nm.deserialize(e,t,n,r,i,a)}static async deserialize(e,t,n){let r=await super.deserialize(e,t,n);return r.#e=e.areContours,r.description=e.accessibilityData?.alt||``,r.#r=e.uuid,r}},Um=class extends Zu{#e=null;#t=null;#n=null;#r=null;#i=null;#a=``;#o=null;#s=!1;#c=null;#l=!1;#u=!1;static _type=`stamp`;static _editorType=ul.STAMP;constructor(e){super({...e,name:`stampEditor`}),this.#r=e.bitmapUrl,this.#i=e.bitmapFile,this.defaultL10nId=`pdfjs-editor-stamp-editor`}static initialize(e,t){Zu.initialize(e,t)}static isHandlingMimeForPasting(e){return Eu.includes(e)}static paste(e,t){t.pasteEditor({mode:ul.STAMP},{bitmapFile:e.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){return{type:`stamp`,hasAltText:!!this.altTextData?.altText}}static computeTelemetryFinalData(e){let t=e.get(`hasAltText`);return{hasAltText:t.get(!0)??0,hasNoAltText:t.get(!1)??0}}#d(e,t=!1){if(!e){this.remove();return}this.#e=e.bitmap,t||(this.#t=e.id,this.#l=e.isSvg),e.file&&(this.#a=e.file.name),this.#m()}#f(){if(this.#n=null,this._uiManager.enableWaiting(!1),this.#o){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#e){this.addEditToolbar().then(()=>{this._editToolbar.hide(),this._uiManager.editAltText(this,!0)});return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#e){this._reportTelemetry({action:`pdfjs.image.image_added`,data:{alt_text_modal:!1,alt_text_type:`empty`}});try{this.mlGuessAltText()}catch{}}this.div.focus()}}async mlGuessAltText(e=null,t=!0){if(this.hasAltTextData())return null;let{mlManager:n}=this._uiManager;if(!n)throw Error(`No ML.`);if(!await n.isEnabledFor(`altText`))throw Error(`ML isn't enabled for alt text.`);let{data:r,width:i,height:a}=e||this.copyCanvas(null,null,!0).imageData,o=await n.guess({name:`altText`,request:{data:r,width:i,height:a,channels:r.length/(i*a)}});if(!o)throw Error(`No response from the AI service.`);if(o.error)throw Error(`Error from the AI service.`);if(o.cancel)return null;if(!o.output)throw Error(`No valid response from the AI service.`);let s=o.output;return await this.setGuessedAltText(s),t&&!this.hasAltTextData()&&(this.altTextData={alt:s,decorative:!1}),s}#p(){if(this.#t){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(this.#t).then(e=>this.#d(e,!0)).finally(()=>this.#f());return}if(this.#r){let e=this.#r;this.#r=null,this._uiManager.enableWaiting(!0),this.#n=this._uiManager.imageManager.getFromUrl(e).then(e=>this.#d(e)).finally(()=>this.#f());return}if(this.#i){let e=this.#i;this.#i=null,this._uiManager.enableWaiting(!0),this.#n=this._uiManager.imageManager.getFromFile(e).then(e=>this.#d(e)).finally(()=>this.#f());return}let e=document.createElement(`input`);e.type=`file`,e.accept=Eu.join(`,`);let t=this._uiManager._signal;this.#n=new Promise(n=>{e.addEventListener(`change`,async()=>{if(!e.files||e.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);let t=await this._uiManager.imageManager.getFromFile(e.files[0]);this._reportTelemetry({action:`pdfjs.image.image_selected`,data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),this.#d(t)}n()},{signal:t}),e.addEventListener(`cancel`,()=>{this.remove(),n()},{signal:t})}).finally(()=>this.#f()),e.click()}remove(){this.#t&&(this.#e=null,this._uiManager.imageManager.deleteId(this.#t),this.#o?.remove(),this.#o=null,this.#c&&=(clearTimeout(this.#c),null)),super.remove()}rebuild(){if(!this.parent){this.#t&&this.#p();return}super.rebuild(),this.div!==null&&(this.#t&&this.#o===null&&this.#p(),this.isAttachedToDOM||this.parent.add(this))}onceAdded(e){this._isDraggable=!0,e&&this.div.focus()}isEmpty(){return!(this.#n||this.#e||this.#r||this.#i||this.#t||this.#s)}get toolbarButtons(){return[[`altText`,this.createAltText()]]}get isResizable(){return!0}render(){if(this.div)return this.div;let e,t;return this._isCopy&&(e=this.x,t=this.y),super.render(),this.div.hidden=!0,this.createAltText(),this.#s||(this.#e?this.#m():this.#p()),this._isCopy&&this._moveAfterPaste(e,t),this._uiManager.addShouldRescale(this),this.div}setCanvas(e,t){let{id:n,bitmap:r}=this._uiManager.imageManager.getFromCanvas(e,t);t.remove(),n&&this._uiManager.imageManager.isValidId(n)&&(this.#t=n,r&&(this.#e=r),this.#s=!1,this.#m())}_onResized(){this.onScaleChanging()}onScaleChanging(){this.parent&&(this.#c!==null&&clearTimeout(this.#c),this.#c=setTimeout(()=>{this.#c=null,this.#g()},200))}#m(){let{div:e}=this,{width:t,height:n}=this.#e,[r,i]=this.pageDimensions,a=.75;if(this.width)t=this.width*r,n=this.height*i;else if(t>a*r||n>a*i){let e=Math.min(a*r/t,a*i/n);t*=e,n*=e}this._uiManager.enableWaiting(!1);let o=this.#o=document.createElement(`canvas`);o.setAttribute(`role`,`img`),this.addContainer(o),this.width=t/r,this.height=n/i,this.setDims(),this._initialOptions?.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(e.hidden=!1),this.#g(),this.#u||=(this.parent.addUndoableEditor(this),!0),this._reportTelemetry({action:`inserted_image`}),this.#a&&this.div.setAttribute(`aria-description`,this.#a),this.annotationElementId||this._uiManager.a11yAlert(`pdfjs-editor-stamp-added-alert`)}copyCanvas(e,t,n=!1){e||=224;let{width:r,height:i}=this.#e,a=new Tu,o=this.#e,s=r,c=i,l=null;if(t){if(r>t||i>t){let e=Math.min(t/r,t/i);s=Math.floor(r*e),c=Math.floor(i*e)}l=document.createElement(`canvas`);let e=l.width=Math.ceil(s*a.sx),n=l.height=Math.ceil(c*a.sy);this.#l||(o=this.#h(e,n));let u=l.getContext(`2d`);u.filter=this._uiManager.hcmFilter;let d=`white`,f=`#cfcfd8`;this._uiManager.hcmFilter===`none`?Du.isDarkMode&&(d=`#8f8f9d`,f=`#42414d`):f=`black`;let p=15*a.sx,m=15*a.sy,h=new OffscreenCanvas(p*2,m*2),g=h.getContext(`2d`);g.fillStyle=d,g.fillRect(0,0,p*2,m*2),g.fillStyle=f,g.fillRect(0,0,p,m),g.fillRect(p,m,p,m),u.fillStyle=u.createPattern(h,`repeat`),u.fillRect(0,0,e,n),u.drawImage(o,0,0,o.width,o.height,0,0,e,n)}let u=null;if(n){let t,n;if(a.symmetric&&o.width<e&&o.height<e)t=o.width,n=o.height;else if(o=this.#e,r>e||i>e){let a=Math.min(e/r,e/i);t=Math.floor(r*a),n=Math.floor(i*a),this.#l||(o=this.#h(t,n))}let s=new OffscreenCanvas(t,n).getContext(`2d`,{willReadFrequently:!0});s.drawImage(o,0,0,o.width,o.height,0,0,t,n),u={width:t,height:n,data:s.getImageData(0,0,t,n).data}}return{canvas:l,width:s,height:c,imageData:u}}#h(e,t){let{width:n,height:r}=this.#e,i=n,a=r,o=this.#e;for(;i>2*e||a>2*t;){let n=i,r=a;i>2*e&&(i=Math.ceil(i/2)),a>2*t&&(a=Math.ceil(a/2));let s=new OffscreenCanvas(i,a);s.getContext(`2d`).drawImage(o,0,0,n,r,0,0,i,a),o=s.transferToImageBitmap()}return o}#g(){let[e,t]=this.parentDimensions,{width:n,height:r}=this,i=new Tu,a=Math.ceil(n*e*i.sx),o=Math.ceil(r*t*i.sy),s=this.#o;if(!s||s.width===a&&s.height===o)return;s.width=a,s.height=o;let c=this.#l?this.#e:this.#h(a,o),l=s.getContext(`2d`);l.filter=this._uiManager.hcmFilter,l.drawImage(c,0,0,c.width,c.height,0,0,a,o)}#_(e){if(e){if(this.#l){let e=this._uiManager.imageManager.getSvgUrl(this.#t);if(e)return e}let e=document.createElement(`canvas`);return{width:e.width,height:e.height}=this.#e,e.getContext(`2d`).drawImage(this.#e,0,0),e.toDataURL()}if(this.#l){let[e,t]=this.pageDimensions,n=Math.round(this.width*e*iu.PDF_TO_CSS_UNITS),r=Math.round(this.height*t*iu.PDF_TO_CSS_UNITS),i=new OffscreenCanvas(n,r);return i.getContext(`2d`).drawImage(this.#e,0,0,this.#e.width,this.#e.height,0,0,n,r),i.transferToImageBitmap()}return structuredClone(this.#e)}static async deserialize(e,t,n){let r=null,i=!1;if(e instanceof vm){let{data:{rect:a,rotation:o,id:s,structParent:c,popupRef:l,richText:u,contentsObj:d,creationDate:f,modificationDate:p},container:m,parent:{page:{pageNumber:h}},canvas:g}=e,_,v;g?(delete e.canvas,{id:_,bitmap:v}=n.imageManager.getFromCanvas(m.id,g),g.remove()):(i=!0,e._hasNoCanvas=!0);let y=(await t._structTree.getAriaAttributes(`${Yl}${s}`))?.get(`aria-label`)||``;r=e={annotationType:ul.STAMP,bitmapId:_,bitmap:v,pageIndex:h-1,rect:a.slice(0),rotation:o,annotationElementId:s,id:s,deleted:!1,accessibilityData:{decorative:!1,altText:y},isSvg:!1,structParent:c,popupRef:l,richText:u,comment:d?.str||null,creationDate:f,modificationDate:p}}let a=await super.deserialize(e,t,n),{rect:o,bitmap:s,bitmapUrl:c,bitmapId:l,isSvg:u,accessibilityData:d}=e;i?(n.addMissingCanvas(e.id,a),a.#s=!0):l&&n.imageManager.isValidId(l)?(a.#t=l,s&&(a.#e=s)):a.#r=c,a.#l=u;let[f,p]=a.pageDimensions;return a.width=(o[2]-o[0])/f,a.height=(o[3]-o[1])/p,d&&(a.altTextData=d),a._initialData=r,e.comment&&a.setCommentData(e),a.#u=!!r,a}serialize(e=!1,t=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();let n=Object.assign(super.serialize(e),{bitmapId:this.#t,isSvg:this.#l});if(this.addComment(n),e)return n.bitmapUrl=this.#_(!0),n.accessibilityData=this.serializeAltText(!0),n.isCopy=!0,n;let{decorative:r,altText:i}=this.serializeAltText(!1);if(!r&&i&&(n.accessibilityData={type:`Figure`,alt:i}),this.annotationElementId){let e=this.#v(n);return e.isSame?null:(e.isSameAltText?delete n.accessibilityData:n.accessibilityData.structParent=this._initialData.structParent??-1,n.id=this.annotationElementId,delete n.bitmapId,n)}if(t===null)return n;t.stamps||=new Map;let a=this.#l?(n.rect[2]-n.rect[0])*(n.rect[3]-n.rect[1]):null;if(!t.stamps.has(this.#t))t.stamps.set(this.#t,{area:a,serialized:n}),n.bitmap=this.#_(!1);else if(this.#l){let e=t.stamps.get(this.#t);a>e.area&&(e.area=a,e.serialized.bitmap.close(),e.serialized.bitmap=this.#_(!1))}return n}#v(e){let{pageIndex:t,accessibilityData:{altText:n}}=this._initialData,r=e.pageIndex===t,i=(e.accessibilityData?.alt||``)===n;return{isSame:!this.hasEditedComment&&!this._hasBeenMoved&&!this._hasBeenResized&&r&&i,isSameAltText:i}}renderAnnotationElement(e){return this.deleted?(e.hide(),null):(e.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}},Wm=class e{#e;#t=!1;#n=null;#r=null;#i=null;#a=new Map;#o=!1;#s=!1;#c=!1;#l=null;#u=null;#d=null;#f=null;#p=null;#m=-1;#h;static _initialized=!1;static#g=new Map([Sm,Fm,Um,km,Hm].map(e=>[e._editorType,e]));constructor({uiManager:t,pageIndex:n,div:r,structTreeLayer:i,accessibilityManager:a,annotationLayer:o,drawLayer:s,textLayer:c,viewport:l,l10n:u}){let d=[...e.#g.values()];if(!e._initialized){e._initialized=!0;for(let e of d)e.initialize(u,t)}t.registerEditorTypes(d),this.#h=t,this.pageIndex=n,this.div=r,this.#e=a,this.#n=o,this.viewport=l,this.#d=c,this.drawLayer=s,this._structTree=i,this.#h.addLayer(this)}get isEmpty(){return this.#a.size===0}get isInvisible(){return this.isEmpty&&this.#h.getMode()===ul.NONE}updateToolbar(e){this.#h.updateToolbar(e)}updateMode(t=this.#h.getMode()){switch(this.#S(),t){case ul.NONE:this.div.classList.toggle(`nonEditing`,!0),this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case ul.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case ul.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);let{classList:n}=this.div;if(n.toggle(`nonEditing`,!1),t===ul.POPUP)n.toggle(`commentEditing`,!0);else{n.toggle(`commentEditing`,!1);for(let r of e.#g.values())n.toggle(`${r._type}Editing`,t===r._editorType)}this.div.hidden=!1}hasTextLayer(e){return e===this.#d?.div}setEditingState(e){this.#h.setEditingState(e)}addCommands(e){this.#h.addCommands(e)}cleanUndoStack(e){this.#h.cleanUndoStack(e)}toggleDrawing(e=!1){this.div.classList.toggle(`drawing`,!e)}togglePointerEvents(e=!1){this.div.classList.toggle(`disabled`,!e)}toggleAnnotationLayerPointerEvents(e=!1){this.#n?.togglePointerEvents(e)}get#_(){return this.#a.size===0?this.#h.getEditors(this.pageIndex):this.#a.values()}async enable(){this.#c=!0,this.div.tabIndex=0,this.togglePointerEvents(!0),this.div.classList.toggle(`nonEditing`,!1),this.#p?.abort(),this.#p=null;let e=new Set;for(let t of this.#_)t.enableEditing(),t.show(!0),t.annotationElementId&&(this.#h.removeChangedExistingAnnotation(t),e.add(t.annotationElementId));let t=this.#n;if(t)for(let n of t.getEditableAnnotations()){if(n.hide(),this.#h.isDeletedAnnotationElement(n.data.id)||e.has(n.data.id))continue;let t=await this.deserialize(n);t&&(this.addOrRebuild(t),t.enableEditing())}this.#c=!1,this.#h._eventBus.dispatch(`editorsrendered`,{source:this,pageNumber:this.pageIndex+1})}disable(){if(this.#s=!0,this.div.tabIndex=-1,this.togglePointerEvents(!1),this.div.classList.toggle(`nonEditing`,!0),this.#d&&!this.#p){this.#p=new AbortController;let e=this.#h.combinedSignal(this.#p);this.#d.div.addEventListener(`pointerdown`,e=>{let{clientX:t,clientY:n,timeStamp:r}=e;if(r-this.#m>500){this.#m=r;return}this.#m=-1;let{classList:i}=this.div;i.toggle(`getElements`,!0);let a=document.elementsFromPoint(t,n);if(i.toggle(`getElements`,!1),!this.div.contains(a[0]))return;let o,s=RegExp(`^${ll}[0-9]+$`);for(let e of a)if(s.test(e.id)){o=e.id;break}if(!o)return;let c=this.#a.get(o);c?.annotationElementId===null&&(hu(e),c.dblclick(e))},{signal:e,capture:!0})}let t=this.#n,n=[];if(t){let e=new Map,r=new Map;for(let t of this.#_){if(t.disableEditing(),!t.annotationElementId){n.push(t);continue}if(t.serialize()!==null){e.set(t.annotationElementId,t);continue}else r.set(t.annotationElementId,t);this.getEditableAnnotation(t.annotationElementId)?.show(),t.remove()}for(let n of t.getEditableAnnotations()){let{id:t}=n.data;if(this.#h.isDeletedAnnotationElement(t)){n.updateEdited({deleted:!0});continue}let i=r.get(t);if(i){i.resetAnnotationElement(n),i.show(!1),n.show();continue}i=e.get(t),i&&(this.#h.addChangedExistingAnnotation(i),i.renderAnnotationElement(n)&&i.show(!1)),n.show()}}this.#S(),this.isEmpty&&(this.div.hidden=!0);let{classList:r}=this.div;for(let t of e.#g.values())r.remove(`${t._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),t?.updateFakeAnnotations(n),this.#s=!1}getEditableAnnotation(e){return this.#n?.getEditableAnnotation(e)||null}setActiveEditor(e){this.#h.getActive()!==e&&this.#h.setActiveEditor(e)}enableTextSelection(){if(this.div.tabIndex=-1,this.#d?.div&&!this.#f){this.#f=new AbortController;let e=this.#h.combinedSignal(this.#f);this.#d.div.addEventListener(`pointerdown`,this.#v.bind(this),{signal:e}),this.#d.div.classList.add(`highlighting`)}}disableTextSelection(){this.div.tabIndex=0,this.#d?.div&&this.#f&&(this.#f.abort(),this.#f=null,this.#d.div.classList.remove(`highlighting`))}#v(e){this.#h.unselectAll();let{target:t}=e;if(t===this.#d.div||(t.getAttribute(`role`)===`img`||t.classList.contains(`endOfContent`)||t.classList.contains(`textLayerImagePlaceholder`))&&this.#d.div.contains(t)){let{isMac:t}=Ul.platform;if(e.button!==0||e.ctrlKey&&t)return;this.#h.showAllEditors(`highlight`,!0,!0),this.#d.div.classList.add(`free`),this.toggleDrawing(),km.startHighlighting(this,this.#h.direction===`ltr`,{target:this.#d.div,x:e.x,y:e.y}),this.#d.div.addEventListener(`pointerup`,()=>{this.#d.div.classList.remove(`free`),this.toggleDrawing(!0)},{once:!0,signal:this.#h._signal}),e.preventDefault()}}enableClick(){if(this.#r)return;this.#r=new AbortController;let e=this.#h.combinedSignal(this.#r);this.div.addEventListener(`pointerdown`,this.pointerdown.bind(this),{signal:e});let t=this.pointerup.bind(this);this.div.addEventListener(`pointerup`,t,{signal:e}),this.div.addEventListener(`pointercancel`,t,{signal:e})}disableClick(){this.#r?.abort(),this.#r=null}attach(e){this.#a.set(e.id,e);let{annotationElementId:t}=e;t&&this.#h.isDeletedAnnotationElement(t)&&this.#h.removeDeletedAnnotationElement(e)}detach(e){this.#a.delete(e.id),this.#e?.removePointerInTextLayer(e.contentDiv),!this.#s&&e.annotationElementId&&this.#h.addDeletedAnnotationElement(e)}remove(e){this.detach(e),this.#h.removeEditor(e),e.div.remove(),e.isAttachedToDOM=!1}changeParent(e){e.parent!==this&&(e.parent&&e.annotationElementId&&(this.#h.addDeletedAnnotationElement(e),Zu.deleteAnnotationElement(e),e.annotationElementId=null),this.attach(e),e.parent?.detach(e),e.setParent(this),e.div&&e.isAttachedToDOM&&(e.div.remove(),this.div.append(e.div)))}add(e){if(!(e.parent===this&&e.isAttachedToDOM)){if(this.changeParent(e),this.#h.addEditor(e),this.attach(e),!e.isAttachedToDOM){let t=e.render();this.div.append(t),e.isAttachedToDOM=!0}e.fixAndSetPosition(),e.onceAdded(!this.#c),this.#h.addToAnnotationStorage(e),e._reportTelemetry(e.telemetryInitialData)}}moveEditorInDOM(e){if(!e.isAttachedToDOM)return;let{activeElement:t}=document;e.div.contains(t)&&!this.#i&&(e._focusEventsAllowed=!1,this.#i=setTimeout(()=>{this.#i=null,e.div.contains(document.activeElement)?e._focusEventsAllowed=!0:(e.div.addEventListener(`focusin`,()=>{e._focusEventsAllowed=!0},{once:!0,signal:this.#h._signal}),t.focus())},0)),e._structTreeParentId=this.#e?.moveElementInDOM(this.div,e.div,e.contentDiv,!0)}addOrRebuild(e){e.needsToBeRebuilt()?(e.parent||=this,e.rebuild(),e.show()):this.add(e)}addUndoableEditor(e){this.addCommands({cmd:()=>e._uiManager.rebuild(e),undo:()=>{e.remove()},mustExec:!1})}getEditorByUID(e){for(let t of this.#a.values())if(t.uid===e)return t;return null}get#y(){return e.#g.get(this.#h.getMode())}combinedSignal(e){return this.#h.combinedSignal(e)}#b(e){let t=this.#y;return t?new t.prototype.constructor(e):null}canCreateNewEmptyEditor(){return this.#y?.canCreateNewEmptyEditor()}async pasteEditor(e,t){this.updateToolbar(e),await this.#h.updateMode(e.mode);let{offsetX:n,offsetY:r}=this.#x(),i=this.#h.getId(),a=this.#b({parent:this,id:i,x:n,y:r,uiManager:this.#h,isCentered:!0,...t});a&&this.add(a)}async deserialize(t){return await e.#g.get(t.annotationType??t.annotationEditorType)?.deserialize(t,this,this.#h)||null}createAndAddNewEditor(e,t,n={}){let r=this.#h.getId(),i=this.#b({parent:this,id:r,x:e.offsetX,y:e.offsetY,uiManager:this.#h,isCentered:t,...n});return i&&this.add(i),i}get boundingClientRect(){return this.div.getBoundingClientRect()}#x(){let{x:e,y:t,width:n,height:r}=this.boundingClientRect,i=Math.max(0,e),a=Math.max(0,t),o=Math.min(window.innerWidth,e+n),s=Math.min(window.innerHeight,t+r),c=(i+o)/2-e,l=(a+s)/2-t,[u,d]=this.viewport.rotation%180==0?[c,l]:[l,c];return{offsetX:u,offsetY:d}}addNewEditor(e={}){this.createAndAddNewEditor(this.#x(),!0,e)}setSelected(e){this.#h.setSelected(e)}toggleSelected(e){this.#h.toggleSelected(e)}unselect(e){this.#h.unselect(e)}pointerup(e){let{isMac:t}=Ul.platform;if(e.button!==0||e.ctrlKey&&t||e.target!==this.div||!this.#o||(this.#o=!1,this.#y?.isDrawer&&this.#y.supportMultipleDrawings))return;if(!this.#t){this.#t=!0;return}let n=this.#h.getMode();if(n===ul.STAMP||n===ul.POPUP||n===ul.SIGNATURE){this.#h.unselectAll();return}this.createAndAddNewEditor(e,!1)}pointerdown(e){if(this.#h.getMode()===ul.HIGHLIGHT&&this.enableTextSelection(),this.#o){this.#o=!1;return}let{isMac:t}=Ul.platform;if(e.button!==0||e.ctrlKey&&t||e.target!==this.div)return;if(this.#o=!0,this.#y?.isDrawer){this.startDrawingSession(e);return}let n=this.#h.getActive();this.#t=!n||n.isEmpty()}startDrawingSession(e){if(this.div.focus({preventScroll:!0}),this.#l){this.#y.startDrawing(this,this.#h,!1,e);return}this.#h.setCurrentDrawingSession(this),this.#l=new AbortController;let t=this.#h.combinedSignal(this.#l);this.div.addEventListener(`blur`,({relatedTarget:e})=>{e&&!this.div.contains(e)&&(this.#u=null,this.commitOrRemove())},{signal:t}),this.#y.startDrawing(this,this.#h,!1,e)}pause(e){if(e){let{activeElement:e}=document;this.div.contains(e)&&(this.#u=e);return}this.#u&&setTimeout(()=>{this.#u?.focus(),this.#u=null},0)}endDrawingSession(e=!1){return this.#l?(this.#h.setCurrentDrawingSession(null),this.#l.abort(),this.#l=null,this.#u=null,this.#y.endDrawing(e)):null}findNewParent(e,t,n){let r=this.#h.findParent(t,n);return r===null||r===this?!1:(r.changeParent(e),!0)}commitOrRemove(){return this.#l?(this.endDrawingSession(),!0):!1}onScaleChanging(){this.#l&&this.#y.onScaleChangingWhenDrawing(this)}destroy(){this.commitOrRemove(),this.#h.getActive()?.parent===this&&(this.#h.commitOrRemove(),this.#h.setActiveEditor(null)),this.#i&&=(clearTimeout(this.#i),null);for(let e of this.#a.values())this.#e?.removePointerInTextLayer(e.contentDiv),e.setParent(null),e.isAttachedToDOM=!1,e.div.remove();this.div=null,this.#a.clear(),this.#h.removeLayer(this)}#S(){for(let e of this.#a.values())e.isEmpty()&&e.remove()}async render({viewport:e}){this.viewport=e,wu(this.div,e);for(let e of this.#h.getEditors(this.pageIndex))this.add(e),e.rebuild();await this.#h.findClonesForPage(this),this.div.hidden=this.isEmpty,this.updateMode()}update({viewport:e}){this.#h.commitOrRemove(),this.#S();let t=this.viewport.rotation,n=e.rotation;if(this.viewport=e,wu(this.div,{rotation:n}),t!==n)for(let e of this.#a.values())e.rotate(n)}get pageDimensions(){let{pageWidth:e,pageHeight:t}=this.viewport.rawDims;return[e,t]}get scale(){return this.#h.viewParameters.realScale}},Gm=class e{#e=null;#t=new Map;#n=new Map;static#r=0;setParent(e){if(!this.#e){this.#e=e;return}if(this.#e!==e){if(this.#t.size>0)for(let t of this.#t.values())t.remove(),e.append(t);this.#e=e}}static get _svgFactory(){return Ml(this,`_svgFactory`,new Hp)}static#i(e,[t,n,r,i]){let{style:a}=e;a.top=`${100*n}%`,a.left=`${100*t}%`,a.width=`${100*r}%`,a.height=`${100*i}%`}#a(){let t=e._svgFactory.create(1,1,!0);return this.#e.append(t),t.setAttribute(`aria-hidden`,!0),t}#o(t,n){let r=e._svgFactory.createElement(`clipPath`);t.append(r);let i=`clip_${n}`;r.setAttribute(`id`,i),r.setAttribute(`clipPathUnits`,`objectBoundingBox`);let a=e._svgFactory.createElement(`use`);return r.append(a),a.setAttribute(`href`,`#${n}`),a.classList.add(`clip`),i}#s(e,t){for(let[n,r]of Object.entries(t))r===null?e.removeAttribute(n):e.setAttribute(n,r)}draw(t,n=!1,r=!1){let i=e.#r++,a=this.#a(),o=e._svgFactory.createElement(`defs`);a.append(o);let s=e._svgFactory.createElement(`path`);o.append(s);let c=`path_${i}`;s.setAttribute(`id`,c),s.setAttribute(`vector-effect`,`non-scaling-stroke`),n&&this.#n.set(i,s);let l=r?this.#o(o,c):null,u=e._svgFactory.createElement(`use`);return a.append(u),u.setAttribute(`href`,`#${c}`),this.updateProperties(a,t),this.#t.set(i,a),{id:i,clipPathId:`url(#${l})`}}drawOutline(t,n){let r=e.#r++,i=this.#a(),a=e._svgFactory.createElement(`defs`);i.append(a);let o=e._svgFactory.createElement(`path`);a.append(o);let s=`path_${r}`;o.setAttribute(`id`,s),o.setAttribute(`vector-effect`,`non-scaling-stroke`);let c;if(n){let t=e._svgFactory.createElement(`mask`);a.append(t),c=`mask_${r}`,t.setAttribute(`id`,c),t.setAttribute(`maskUnits`,`objectBoundingBox`);let n=e._svgFactory.createElement(`rect`);t.append(n),n.setAttribute(`width`,`1`),n.setAttribute(`height`,`1`),n.setAttribute(`fill`,`white`);let i=e._svgFactory.createElement(`use`);t.append(i),i.setAttribute(`href`,`#${s}`),i.setAttribute(`stroke`,`none`),i.setAttribute(`fill`,`black`),i.setAttribute(`fill-rule`,`nonzero`),i.classList.add(`mask`)}let l=e._svgFactory.createElement(`use`);i.append(l),l.setAttribute(`href`,`#${s}`),c&&l.setAttribute(`mask`,`url(#${c})`);let u=l.cloneNode();return i.append(u),l.classList.add(`mainOutline`),u.classList.add(`secondaryOutline`),this.updateProperties(i,t),this.#t.set(r,i),r}finalizeDraw(e,t){this.#n.delete(e),this.updateProperties(e,t)}updateProperties(t,n){if(!n)return;let{root:r,bbox:i,rootClass:a,path:o}=n,s=typeof t==`number`?this.#t.get(t):t;if(s){if(r&&this.#s(s,r),i&&e.#i(s,i),a){let{classList:e}=s;for(let[t,n]of Object.entries(a))e.toggle(t,n)}if(o){let e=s.firstElementChild.firstElementChild;this.#s(e,o)}}}updateParent(e,t){if(t===this)return;let n=this.#t.get(e);n&&(t.#e.append(n),this.#t.delete(e),t.#t.set(e,n))}remove(e){this.#n.delete(e),this.#e!==null&&(this.#t.get(e).remove(),this.#t.delete(e))}destroy(){this.#e=null;for(let e of this.#t.values())e.remove();this.#t.clear(),this.#n.clear()}};function Km(e){return`${(e*100).toFixed(2)}%`}var qm=class e{#e=[];#t=new Map;#n=null;#r=0;#i=0;#a=0;static#o=null;constructor(e,t,n,r){this.#r=e,this.#e=t,this.#i=n.rawDims.pageWidth,this.#a=n.rawDims.pageHeight,this.#n=r}render(){let t=document.createElement(`div`);t.className=`textLayerImages`;for(let e=0;e<this.#e.length;e+=6){let n=this.#s(this.#e.subarray(e,e+6));n&&t.append(n)}return t.addEventListener(`contextmenu`,t=>{if(!(t.target instanceof HTMLCanvasElement))return;let n=t.target,r=this.#t.get(n);if(!r)return;let i=e.#o?.deref();if(i===n)return;i&&(i.width=0,i.height=0),e.#o=new WeakRef(n);let{inverseTransform:a,x1:o,y1:s,width:c,height:l}=r,u=this.#n(),d=Math.ceil(o*u.width),f=Math.ceil(s*u.height),p=Math.floor((o+c/this.#i)*u.width),m=Math.floor((s+l/this.#a)*u.height);n.width=p-d,n.height=m-f;let h=n.getContext(`2d`);h.setTransform(...a),h.translate(-d,-f),h.drawImage(u,0,0)}),t}#s([e,t,n,r,i,a]){let o=Math.hypot((i-e)*this.#i,(a-t)*this.#a),s=Math.hypot((n-e)*this.#i,(r-t)*this.#a);if(o<this.#r||s<this.#r)return null;let c=[(i-e)*this.#i/o,(a-t)*this.#a/o,(n-e)*this.#i/s,(r-t)*this.#a/s,0,0],l=Q.inverseTransform(c),u=document.createElement(`canvas`);return u.className=`textLayerImagePlaceholder`,u.width=0,u.height=0,Object.assign(u.style,{opacity:0,position:`absolute`,left:Km(e),top:Km(t),width:Km(o/this.#i),height:Km(s/this.#a),transformOrigin:`0% 0%`,transform:`matrix(${c.join(`,`)})`}),this.#t.set(u,{inverseTransform:l,width:o,height:s,x1:e,y1:t}),u}};globalThis._pdfjsTestingUtils={HighlightOutliner:Tm},globalThis.pdfjsLib={AbortException:zl,AnnotationEditorLayer:Wm,AnnotationEditorParamsType:dl,AnnotationEditorType:ul,AnnotationEditorUIManager:qu,AnnotationLayer:bm,AnnotationMode:cl,AnnotationType:hl,applyOpacity:ku,build:Fp,ColorPicker:Ip,createValidAbsoluteUrl:kl,CSSConstants:Ou,DOMSVGFactory:Hp,DrawLayer:Gm,FeatureTest:Ul,fetchData:au,findContrastColor:Fu,getDocument:Tp,getFilenameFromUrl:uu,getPdfFilenameFromUrl:du,getRGB:bu,getRGBA:yu,getUuid:Jl,getXfaPageViewport:vu,GlobalWorkerOptions:fp,ImageKind:ml,InvalidPDFException:Il,isDataScheme:cu,isPdfFile:lu,isValidExplicitDest:Nd,makeArr:Zl,makeMap:Ql,makeObj:$l,MathClamp:eu,noContextMenu:mu,normalizeUnicode:ql,OPS:vl,OutputScale:Tu,PasswordResponses:bl,PDFDataRangeTransport:Dp,PDFDateString:_u,PDFWorker:Ap,PermissionFlag:fl,PixelsPerInch:iu,RenderingCancelledException:su,renderRichText:Iu,ResponseException:Ll,setLayerDimensions:wu,shadow:Ml,SignatureExtractor:zm,stopEvent:hu,SupportedImageMimeTypes:Eu,TextLayer:Cp,TextLayerImages:qm,TouchManager:Xu,updateUrlHash:Al,Util:Q,VerbosityLevel:_l,version:Pp,XfaLayer:nu};async function Jm(e){let t=await(0,$c.createWorker)([`fra`,`ara`,`eng`]),n;n=e instanceof File||e instanceof Blob?URL.createObjectURL(e):e instanceof URL?e.toString():e;let r=await Tp(n).promise,i=``;for(let e=1;e<=r.numPages;e++){let n=await r.getPage(e),a=n.getViewport({scale:2}),o=document.createElement(`canvas`),s=o.getContext(`2d`);if(!s)throw Error(`Failed to get 2d canvas context`);o.width=a.width,o.height=a.height,await n.render({canvas:o,canvasContext:s,viewport:a}).promise;let{data:{text:c}}=await t.recognize(o);i+=c+`
92
- `}return await t.terminate(),i}exports.PDFViewer=E,exports.default=E,exports.generateWatermarkedPdf=_,exports.imageToPdf=uc,exports.ocrPdf=Jm;
91
+ `)){let n=document.createElement(`div`);n.append(e?document.createTextNode(e):document.createElement(`br`)),t.append(n)}return e.updateEdited({rect:this.getPDFRect(),popup:this._uiManager.hasCommentManager()||this.hasEditedComment?this.comment:{text:this.#e}}),t}resetAnnotationElement(e){super.resetAnnotationElement(e),e.resetEdited()}},$=class{static PRECISION=1e-4;toSVGPath(){El("Abstract method `toSVGPath` must be implemented.")}get box(){El("Abstract getter `box` must be implemented.")}serialize(e,t){El("Abstract method `serialize` must be implemented.")}static _rescale(e,t,n,r,i,a){a||=new Float32Array(e.length);for(let o=0,s=e.length;o<s;o+=2)a[o]=t+e[o]*r,a[o+1]=n+e[o+1]*i;return a}static _rescaleAndSwap(e,t,n,r,i,a){a||=new Float32Array(e.length);for(let o=0,s=e.length;o<s;o+=2)a[o]=t+e[o+1]*r,a[o+1]=n+e[o]*i;return a}static _translate(e,t,n,r){r||=new Float32Array(e.length);for(let i=0,a=e.length;i<a;i+=2)r[i]=t+e[i],r[i+1]=n+e[i+1];return r}static svgRound(e){return Math.round(e*1e4)}static _normalizePoint(e,t,n,r,i){switch(i){case 90:return[1-t/n,e/r];case 180:return[1-e/n,1-t/r];case 270:return[t/n,1-e/r];default:return[e/n,t/r]}}static _normalizePagePoint(e,t,n){switch(n){case 90:return[1-t,e];case 180:return[1-e,1-t];case 270:return[t,1-e];default:return[e,t]}}static createBezierPoints(e,t,n,r,i,a){return[(e+5*n)/6,(t+5*r)/6,(5*n+i)/6,(5*r+a)/6,(n+i)/2,(r+a)/2]}},Cm=class e{#e;#t=[];#n;#r;#i=[];#a=new Float32Array(18);#o;#s;#c;#l;#u;#d;#f=[];static#p=8;static#m=2;static#h=e.#p+e.#m;constructor({x:t,y:n},r,i,a,o,s=0){this.#e=r,this.#d=a*i,this.#r=o,this.#a.set([NaN,NaN,NaN,NaN,t,n],6),this.#n=s,this.#l=e.#p*i,this.#c=e.#h*i,this.#u=i,this.#f.push(t,n)}isEmpty(){return isNaN(this.#a[8])}#g(){let e=this.#a.subarray(4,6),t=this.#a.subarray(16,18),[n,r,i,a]=this.#e;return[(this.#o+(e[0]-t[0])/2-n)/i,(this.#s+(e[1]-t[1])/2-r)/a,(this.#o+(t[0]-e[0])/2-n)/i,(this.#s+(t[1]-e[1])/2-r)/a]}add({x:e,y:t}){this.#o=e,this.#s=t;let[n,r,i,a]=this.#e,[o,s,c,l]=this.#a.subarray(8,12),u=e-c,d=t-l,f=Math.hypot(u,d);if(f<this.#c)return!1;let p=f-this.#l,m=p/f,h=m*u,g=m*d,_=o,v=s;o=c,s=l,c+=h,l+=g,this.#f?.push(e,t);let y=-g/p,b=h/p,x=y*this.#d,S=b*this.#d;return this.#a.set(this.#a.subarray(2,8),0),this.#a.set([c+x,l+S],4),this.#a.set(this.#a.subarray(14,18),12),this.#a.set([c-x,l-S],16),isNaN(this.#a[6])?(this.#i.length===0&&(this.#a.set([o+x,s+S],2),this.#i.push(NaN,NaN,NaN,NaN,(o+x-n)/i,(s+S-r)/a),this.#a.set([o-x,s-S],14),this.#t.push(NaN,NaN,NaN,NaN,(o-x-n)/i,(s-S-r)/a)),this.#a.set([_,v,o,s,c,l],6),!this.isEmpty()):(this.#a.set([_,v,o,s,c,l],6),Math.abs(Math.atan2(v-s,_-o)-Math.atan2(g,h))<Math.PI/2?([o,s,c,l]=this.#a.subarray(2,6),this.#i.push(NaN,NaN,NaN,NaN,((o+c)/2-n)/i,((s+l)/2-r)/a),[o,s,_,v]=this.#a.subarray(14,18),this.#t.push(NaN,NaN,NaN,NaN,((_+o)/2-n)/i,((v+s)/2-r)/a),!0):([_,v,o,s,c,l]=this.#a.subarray(0,6),this.#i.push(((_+5*o)/6-n)/i,((v+5*s)/6-r)/a,((5*o+c)/6-n)/i,((5*s+l)/6-r)/a,((o+c)/2-n)/i,((s+l)/2-r)/a),[c,l,o,s,_,v]=this.#a.subarray(12,18),this.#t.push(((_+5*o)/6-n)/i,((v+5*s)/6-r)/a,((5*o+c)/6-n)/i,((5*s+l)/6-r)/a,((o+c)/2-n)/i,((s+l)/2-r)/a),!0))}toSVGPath(){if(this.isEmpty())return``;let e=this.#i,t=this.#t;if(isNaN(this.#a[6])&&!this.isEmpty())return this.#_();let n=[];n.push(`M${e[4]} ${e[5]}`);for(let t=6;t<e.length;t+=6)isNaN(e[t])?n.push(`L${e[t+4]} ${e[t+5]}`):n.push(`C${e[t]} ${e[t+1]} ${e[t+2]} ${e[t+3]} ${e[t+4]} ${e[t+5]}`);this.#y(n);for(let e=t.length-6;e>=6;e-=6)isNaN(t[e])?n.push(`L${t[e+4]} ${t[e+5]}`):n.push(`C${t[e]} ${t[e+1]} ${t[e+2]} ${t[e+3]} ${t[e+4]} ${t[e+5]}`);return this.#v(n),n.join(` `)}#_(){let[e,t,n,r]=this.#e,[i,a,o,s]=this.#g();return`M${(this.#a[2]-e)/n} ${(this.#a[3]-t)/r} L${(this.#a[4]-e)/n} ${(this.#a[5]-t)/r} L${i} ${a} L${o} ${s} L${(this.#a[16]-e)/n} ${(this.#a[17]-t)/r} L${(this.#a[14]-e)/n} ${(this.#a[15]-t)/r} Z`}#v(e){let t=this.#t;e.push(`L${t[4]} ${t[5]} Z`)}#y(e){let[t,n,r,i]=this.#e,a=this.#a.subarray(4,6),o=this.#a.subarray(16,18),[s,c,l,u]=this.#g();e.push(`L${(a[0]-t)/r} ${(a[1]-n)/i} L${s} ${c} L${l} ${u} L${(o[0]-t)/r} ${(o[1]-n)/i}`)}newFreeDrawOutline(e,t,n,r,i,a){return new wm(e,t,n,r,i,a)}getOutlines(){let e=this.#i,t=this.#t,n=this.#a,[r,i,a,o]=this.#e,s=new Float32Array((this.#f?.length??0)+2);for(let e=0,t=s.length-2;e<t;e+=2)s[e]=(this.#f[e]-r)/a,s[e+1]=(this.#f[e+1]-i)/o;if(s[s.length-2]=(this.#o-r)/a,s[s.length-1]=(this.#s-i)/o,isNaN(n[6])&&!this.isEmpty())return this.#b(s);let c=new Float32Array(this.#i.length+24+this.#t.length),l=e.length;for(let t=0;t<l;t+=2){if(isNaN(e[t])){c[t]=c[t+1]=NaN;continue}c[t]=e[t],c[t+1]=e[t+1]}l=this.#S(c,l);for(let e=t.length-6;e>=6;e-=6)for(let n=0;n<6;n+=2){if(isNaN(t[e+n])){c[l]=c[l+1]=NaN,l+=2;continue}c[l]=t[e+n],c[l+1]=t[e+n+1],l+=2}return this.#x(c,l),this.newFreeDrawOutline(c,s,this.#e,this.#u,this.#n,this.#r)}#b(e){let t=this.#a,[n,r,i,a]=this.#e,[o,s,c,l]=this.#g(),u=new Float32Array(36);return u.set([NaN,NaN,NaN,NaN,(t[2]-n)/i,(t[3]-r)/a,NaN,NaN,NaN,NaN,(t[4]-n)/i,(t[5]-r)/a,NaN,NaN,NaN,NaN,o,s,NaN,NaN,NaN,NaN,c,l,NaN,NaN,NaN,NaN,(t[16]-n)/i,(t[17]-r)/a,NaN,NaN,NaN,NaN,(t[14]-n)/i,(t[15]-r)/a],0),this.newFreeDrawOutline(u,e,this.#e,this.#u,this.#n,this.#r)}#x(e,t){let n=this.#t;return e.set([NaN,NaN,NaN,NaN,n[4],n[5]],t),t+=6}#S(e,t){let n=this.#a.subarray(4,6),r=this.#a.subarray(16,18),[i,a,o,s]=this.#e,[c,l,u,d]=this.#g();return e.set([NaN,NaN,NaN,NaN,(n[0]-i)/o,(n[1]-a)/s,NaN,NaN,NaN,NaN,c,l,NaN,NaN,NaN,NaN,u,d,NaN,NaN,NaN,NaN,(r[0]-i)/o,(r[1]-a)/s],t),t+=24}},wm=class extends ${#e;#t=new Float32Array(4);#n;#r;#i;#a;#o;constructor(e,t,n,r,i,a){super(),this.#o=e,this.#i=t,this.#e=n,this.#a=r,this.#n=i,this.#r=a,this.firstPoint=[NaN,NaN],this.lastPoint=[NaN,NaN],this.#s(a);let[o,s,c,l]=this.#t;for(let t=0,n=e.length;t<n;t+=2)e[t]=(e[t]-o)/c,e[t+1]=(e[t+1]-s)/l;for(let e=0,n=t.length;e<n;e+=2)t[e]=(t[e]-o)/c,t[e+1]=(t[e+1]-s)/l}toSVGPath(){let e=[`M${this.#o[4]} ${this.#o[5]}`];for(let t=6,n=this.#o.length;t<n;t+=6){if(isNaN(this.#o[t])){e.push(`L${this.#o[t+4]} ${this.#o[t+5]}`);continue}e.push(`C${this.#o[t]} ${this.#o[t+1]} ${this.#o[t+2]} ${this.#o[t+3]} ${this.#o[t+4]} ${this.#o[t+5]}`)}return e.push(`Z`),e.join(` `)}serialize([e,t,n,r],i){let a=n-e,o=r-t,s,c;switch(i){case 0:s=$._rescale(this.#o,e,r,a,-o),c=$._rescale(this.#i,e,r,a,-o);break;case 90:s=$._rescaleAndSwap(this.#o,e,t,a,o),c=$._rescaleAndSwap(this.#i,e,t,a,o);break;case 180:s=$._rescale(this.#o,n,t,-a,o),c=$._rescale(this.#i,n,t,-a,o);break;case 270:s=$._rescaleAndSwap(this.#o,n,r,-a,-o),c=$._rescaleAndSwap(this.#i,n,r,-a,-o);break}return{outline:Array.from(s),points:[Array.from(c)]}}#s(e){let t=this.#o,n=t[4],r=t[5],i=[n,r,n,r],a=n,o=r,s=n,c=r,l=e?Math.max:Math.min,u=new Float32Array(4);for(let e=6,d=t.length;e<d;e+=6){let d=t[e+4],f=t[e+5];isNaN(t[e])?(Q.pointBoundingBox(d,f,i),o>f?(a=d,o=f):o===f&&(a=l(a,d)),c<f?(s=d,c=f):c===f&&(s=l(s,d))):(u.set(rl,0),Q.bezierBoundingBox(n,r,...t.slice(e,e+6),u),Q.rectBoundingBox(...u,i),o>u[1]?(a=u[0],o=u[1]):o===u[1]&&(a=l(a,u[0])),c<u[3]?(s=u[2],c=u[3]):c===u[3]&&(s=l(s,u[2]))),n=d,r=f}let d=this.#t;d[0]=i[0]-this.#n,d[1]=i[1]-this.#n,d[2]=i[2]-i[0]+2*this.#n,d[3]=i[3]-i[1]+2*this.#n,this.firstPoint=[a,o],this.lastPoint=[s,c]}get box(){return this.#t}newOutliner(e,t,n,r,i,a=0){return new Cm(e,t,n,r,i,a)}getNewOutline(e,t){let[n,r,i,a]=this.#t,[o,s,c,l]=this.#e,u=i*c,d=a*l,f=n*c+o,p=r*l+s,m=this.newOutliner({x:this.#i[0]*u+f,y:this.#i[1]*d+p},this.#e,this.#a,e,this.#r,t??this.#n);for(let e=2;e<this.#i.length;e+=2)m.add({x:this.#i[e]*u+f,y:this.#i[e+1]*d+p});return m.getOutlines()}},Tm=class{#e;#t;#n;#r=[];#i=[];constructor(e,t=0,n=0,r=!0){let i=rl.slice(),a=10**-4;for(let{x:n,y:r,width:o,height:s}of e){let e=Math.floor((n-t)/a)*a,c=Math.ceil((n+o+t)/a)*a,l=Math.floor((r-t)/a)*a,u=Math.ceil((r+s+t)/a)*a,d=[e,l,u,!0],f=[c,l,u,!1];this.#r.push(d,f),Q.rectBoundingBox(e,l,c,u,i)}let o=i[2]-i[0]+2*n,s=i[3]-i[1]+2*n,c=i[0]-n,l=i[1]-n,u=r?-1/0:1/0,d=1/0,f=this.#r.at(r?-1:-2),p=[f[0],f[2]];for(let e of this.#r){let[t,n,i,a]=e;!a&&r?n<d?(d=n,u=t):n===d&&(u=Math.max(u,t)):a&&!r&&(n<d?(d=n,u=t):n===d&&(u=Math.min(u,t))),e[0]=(t-c)/o,e[1]=(n-l)/s,e[2]=(i-l)/s}this.#e=new Float32Array([c,l,o,s]),this.#t=[u,d],this.#n=p}getOutlines(){this.#r.sort((e,t)=>e[0]-t[0]||e[1]-t[1]||e[2]-t[2]);let e=[];for(let t of this.#r)t[3]?(e.push(...this.#l(t)),this.#s(t)):(this.#c(t),e.push(...this.#l(t)));return this.#a(e)}#a(e){let t=[],n=new Set;for(let n of e){let[e,r,i]=n;t.push([e,r,n],[e,i,n])}t.sort((e,t)=>e[1]-t[1]||e[0]-t[0]);for(let e=0,r=t.length;e<r;e+=2){let r=t[e][2],i=t[e+1][2];r.push(i),i.push(r),n.add(r),n.add(i)}let r=[],i;for(;n.size>0;){let e=n.values().next().value,[t,a,o,s,c]=e;n.delete(e);let l=t,u=a;for(i=[t,o],r.push(i);;){let e;if(n.has(s))e=s;else if(n.has(c))e=c;else break;n.delete(e),[t,a,o,s,c]=e,l!==t&&(i.push(l,u,t,u===a?a:o),l=t),u=u===a?o:a}i.push(l,u)}return new Em(r,this.#e,this.#t,this.#n)}#o(e){let t=this.#i,n=0,r=t.length-1;for(;n<=r;){let i=n+r>>1,a=t[i][0];if(a===e)return i;a<e?n=i+1:r=i-1}return r+1}#s([,e,t]){let n=this.#o(e);this.#i.splice(n,0,[e,t])}#c([,e,t]){let n=this.#o(e);for(let r=n;r<this.#i.length;r++){let[n,i]=this.#i[r];if(n!==e)break;if(n===e&&i===t){this.#i.splice(r,1);return}}for(let r=n-1;r>=0;r--){let[n,i]=this.#i[r];if(n!==e)break;if(n===e&&i===t){this.#i.splice(r,1);return}}}#l(e){let[t,n,r]=e,i=[[t,n,r]],a=this.#o(r);for(let e=0;e<a;e++){let[n,r]=this.#i[e];for(let e=0,a=i.length;e<a;e++){let[,o,s]=i[e];if(!(r<=o||s<=n)){if(o>=n){if(s>r)i[e][1]=r;else{if(a===1)return[];i.splice(e,1),e--,a--}continue}i[e][2]=n,s>r&&i.push([t,r,s])}}}return i}},Em=class extends ${#e;#t;constructor(e,t,n,r){super(),this.#t=e,this.#e=t,this.firstPoint=n,this.lastPoint=r}toSVGPath(){let e=[];for(let t of this.#t){let[n,r]=t;e.push(`M${n} ${r}`);for(let i=2;i<t.length;i+=2){let a=t[i],o=t[i+1];a===n?(e.push(`V${o}`),r=o):o===r&&(e.push(`H${a}`),n=a)}e.push(`Z`)}return e.join(` `)}serialize([e,t,n,r],i){let a=[],o=n-e,s=r-t;for(let t of this.#t){let n=Array(t.length);for(let i=0;i<t.length;i+=2)n[i]=e+t[i]*o,n[i+1]=r-t[i+1]*s;a.push(n)}return a}get box(){return this.#e}get classNamesForOutlining(){return[`highlightOutline`]}},Dm=class extends Cm{newFreeDrawOutline(e,t,n,r,i,a){return new Om(e,t,n,r,i,a)}},Om=class extends wm{newOutliner(e,t,n,r,i,a=0){return new Dm(e,t,n,r,i,a)}},km=class e extends Zu{#e=null;#t=0;#n;#r=null;#i=null;#a=null;#o=null;#s=0;#c=null;#l=null;#u=null;#d=!1;#f=null;#p=null;#m=null;#h=``;#g;#_=``;static _defaultColor=null;static _defaultOpacity=1;static _defaultThickness=12;static _type=`highlight`;static _editorType=ul.HIGHLIGHT;static _freeHighlightId=-1;static _freeHighlight=null;static _freeHighlightClipId=``;static get _keyboardManager(){let t=e.prototype;return Ml(this,`_keyboardManager`,new Gu([[[`ArrowLeft`,`mac+ArrowLeft`],t._moveCaret,{args:[0]}],[[`ArrowRight`,`mac+ArrowRight`],t._moveCaret,{args:[1]}],[[`ArrowUp`,`mac+ArrowUp`],t._moveCaret,{args:[2]}],[[`ArrowDown`,`mac+ArrowDown`],t._moveCaret,{args:[3]}]]))}constructor(t){super({...t,name:`highlightEditor`}),this.color=t.color||e._defaultColor,this.#g=t.thickness||e._defaultThickness,this.opacity=t.opacity||e._defaultOpacity,this.#n=t.boxes||null,this.#_=t.methodOfCreation||``,this.#h=t.text||``,this._isDraggable=!1,this.defaultL10nId=`pdfjs-editor-highlight-editor`,t.highlightId>-1?(this.#d=!0,this.#y(t),this.#w()):this.#n&&(this.#e=t.anchorNode,this.#t=t.anchorOffset,this.#o=t.focusNode,this.#s=t.focusOffset,this.#v(),this.#w(),this.rotate(this.rotation)),this.annotationElementId||this._uiManager.a11yAlert(`pdfjs-editor-highlight-added-alert`)}get telemetryInitialData(){return{action:`added`,type:this.#d?`free_highlight`:`highlight`,color:this._uiManager.getNonHCMColorName(this.color),thickness:this.#g,methodOfCreation:this.#_}}get telemetryFinalData(){return{type:`highlight`,color:this._uiManager.getNonHCMColorName(this.color)}}static computeTelemetryFinalData(e){return{numberOfColors:e.get(`color`).size}}#v(){let e=new Tm(this.#n,.001);this.#l=e.getOutlines(),[this.x,this.y,this.width,this.height]=this.#l.box;let t=new Tm(this.#n,.0025,.001,this._uiManager.direction===`ltr`);this.#a=t.getOutlines();let{firstPoint:n}=this.#l;this.#f=[(n[0]-this.x)/this.width,(n[1]-this.y)/this.height];let{lastPoint:r}=this.#a;this.#p=[(r[0]-this.x)/this.width,(r[1]-this.y)/this.height]}#y({highlightOutlines:t,highlightId:n,clipPathId:r}){if(this.#l=t,this.#a=t.getNewOutline(this.#g/2+1.5,.0025),n>=0)this.#u=n,this.#r=r,this.parent.drawLayer.finalizeDraw(n,{bbox:t.box,path:{d:t.toSVGPath()}}),this.#m=this.parent.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:!0},bbox:this.#a.box,path:{d:this.#a.toSVGPath()}},!0);else if(this.parent){let n=this.parent.viewport.rotation;this.parent.drawLayer.updateProperties(this.#u,{bbox:e.#T(this.#l.box,(n-this.rotation+360)%360),path:{d:t.toSVGPath()}}),this.parent.drawLayer.updateProperties(this.#m,{bbox:e.#T(this.#a.box,n),path:{d:this.#a.toSVGPath()}})}let[i,a,o,s]=t.box;switch(this.rotation){case 0:this.x=i,this.y=a,this.width=o,this.height=s;break;case 90:{let[e,t]=this.parentDimensions;this.x=a,this.y=1-i,this.width=o*t/e,this.height=s*e/t;break}case 180:this.x=1-i,this.y=1-a,this.width=o,this.height=s;break;case 270:{let[e,t]=this.parentDimensions;this.x=1-a,this.y=i,this.width=o*t/e,this.height=s*e/t;break}}let{firstPoint:c}=t;this.#f=[(c[0]-i)/o,(c[1]-a)/s];let{lastPoint:l}=this.#a;this.#p=[(l[0]-i)/o,(l[1]-a)/s]}static initialize(t,n){Zu.initialize(t,n),e._defaultColor||=n.highlightColors?.values().next().value||`#fff066`}static updateDefaultParams(t,n){switch(t){case dl.HIGHLIGHT_COLOR:e._defaultColor=n;break;case dl.HIGHLIGHT_THICKNESS:e._defaultThickness=n;break}}translateInPage(e,t){}get toolbarPosition(){return this.#p}get commentButtonPosition(){return this.#f}updateParams(e,t){switch(e){case dl.HIGHLIGHT_COLOR:this.#b(t);break;case dl.HIGHLIGHT_THICKNESS:this.#x(t);break}}static get defaultPropertiesToUpdate(){return[[dl.HIGHLIGHT_COLOR,e._defaultColor],[dl.HIGHLIGHT_THICKNESS,e._defaultThickness]]}get propertiesToUpdate(){return[[dl.HIGHLIGHT_COLOR,this.color||e._defaultColor],[dl.HIGHLIGHT_THICKNESS,this.#g||e._defaultThickness],[dl.HIGHLIGHT_FREE,this.#d]]}onUpdatedColor(){this.parent?.drawLayer.updateProperties(this.#u,{root:{fill:this.color,"fill-opacity":this.opacity}}),this.#i?.updateColor(this.color),super.onUpdatedColor()}#b(t){let n=(e,t)=>{this.color=e,this.opacity=t,this.onUpdatedColor()},r=this.color,i=this.opacity;this.addCommands({cmd:n.bind(this,t,e._defaultOpacity),undo:n.bind(this,r,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:dl.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:`color_changed`,color:this._uiManager.getNonHCMColorName(t)},!0)}#x(e){let t=this.#g,n=e=>{this.#g=e,this.#S(e)};this.addCommands({cmd:n.bind(this,e),undo:n.bind(this,t),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:dl.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:`thickness_changed`,thickness:e},!0)}get toolbarButtons(){return this._uiManager.highlightColors?[[`colorPicker`,this.#i=new Ip({editor:this})]]:super.toolbarButtons}disableEditing(){super.disableEditing(),this.div.classList.toggle(`disabled`,!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle(`disabled`,!1)}fixAndSetPosition(){return super.fixAndSetPosition(this.#O())}getBaseTranslation(){return[0,0]}getRect(e,t){return super.getRect(e,t,this.#O())}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),e&&this.div.focus()}remove(){this.#C(),this._reportTelemetry({action:`deleted`}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#w(),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){let t=!1;this.parent&&!e?this.#C():e&&(this.#w(e),t=!this.parent&&this.div?.classList.contains(`selectedEditor`)),super.setParent(e),this.show(this._isVisible),t&&this.select()}#S(e){this.#d&&(this.#y({highlightOutlines:this.#l.getNewOutline(e/2)}),this.fixAndSetPosition(),this.setDims())}#C(){this.#u===null||!this.parent||(this.parent.drawLayer.remove(this.#u),this.#u=null,this.parent.drawLayer.remove(this.#m),this.#m=null)}#w(e=this.parent){this.#u===null&&({id:this.#u,clipPathId:this.#r}=e.drawLayer.draw({bbox:this.#l.box,root:{viewBox:`0 0 1 1`,fill:this.color,"fill-opacity":this.opacity},rootClass:{highlight:!0,free:this.#d},path:{d:this.#l.toSVGPath()}},!1,!0),this.#m=e.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:this.#d},bbox:this.#a.box,path:{d:this.#a.toSVGPath()}},this.#d),this.#c&&(this.#c.style.clipPath=this.#r))}static#T([e,t,n,r],i){switch(i){case 90:return[1-t-r,e,r,n];case 180:return[1-e-n,1-t-r,n,r];case 270:return[t,1-e-n,r,n]}return[e,t,n,r]}rotate(t){let{drawLayer:n}=this.parent,r;this.#d?(t=(t-this.rotation+360)%360,r=e.#T(this.#l.box,t)):r=e.#T([this.x,this.y,this.width,this.height],t),n.updateProperties(this.#u,{bbox:r,root:{"data-main-rotation":t}}),n.updateProperties(this.#m,{bbox:e.#T(this.#a.box,t),root:{"data-main-rotation":t}})}render(){if(this.div)return this.div;let e=super.render();this.#h&&(e.setAttribute(`aria-label`,this.#h),e.setAttribute(`role`,`mark`)),this.#d?e.classList.add(`free`):this.div.addEventListener(`keydown`,this.#E.bind(this),{signal:this._uiManager._signal});let t=this.#c=document.createElement(`div`);return e.append(t),t.setAttribute(`aria-hidden`,`true`),t.className=`internal`,t.style.clipPath=this.#r,this.setDims(),Bu(this,this.#c,[`pointerover`,`pointerleave`]),this.enableEditing(),e}pointerover(){this.isSelected||this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!0}})}pointerleave(){this.isSelected||this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!1}})}#E(t){e._keyboardManager.exec(this,t)}_moveCaret(e){switch(this.parent.unselect(this),e){case 0:case 2:this.#D(!0);break;case 1:case 3:this.#D(!1);break}}#D(e){if(!this.#e)return;let t=window.getSelection();e?t.setPosition(this.#e,this.#t):t.setPosition(this.#o,this.#s)}select(){super.select(),this.#m&&this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{hovered:!1,selected:!0}})}unselect(){super.unselect(),this.#m&&(this.parent?.drawLayer.updateProperties(this.#m,{rootClass:{selected:!1}}),this.#d||this.#D(!1))}get _mustFixPosition(){return!this.#d}show(e=this._isVisible){super.show(e),this.parent&&(this.parent.drawLayer.updateProperties(this.#u,{rootClass:{hidden:!e}}),this.parent.drawLayer.updateProperties(this.#m,{rootClass:{hidden:!e}}))}#O(){return this.#d?this.rotation:0}#k(){if(this.#d)return null;let[e,t]=this.pageDimensions,[n,r]=this.pageTranslation,i=this.#n,a=new Float32Array(i.length*8),o=0;for(let{x:s,y:c,width:l,height:u}of i){let i=s*e+n,d=(1-c)*t+r;a[o]=a[o+4]=i,a[o+1]=a[o+3]=d,a[o+2]=a[o+6]=i+l*e,a[o+5]=a[o+7]=d-u*t,o+=8}return a}#A(e){return this.#l.serialize(e,this.#O())}static startHighlighting(e,t,{target:n,x:r,y:i}){let{x:a,y:o,width:s,height:c}=n.getBoundingClientRect(),l=new AbortController,u=e.combinedSignal(l),d=t=>{l.abort(),this.#M(e,t)};window.addEventListener(`blur`,d,{signal:u}),window.addEventListener(`pointerup`,d,{signal:u}),window.addEventListener(`pointerdown`,hu,{capture:!0,passive:!1,signal:u}),window.addEventListener(`contextmenu`,mu,{signal:u}),n.addEventListener(`pointermove`,this.#j.bind(this,e),{signal:u}),this._freeHighlight=new Dm({x:r,y:i},[a,o,s,c],e.scale,this._defaultThickness/2,t,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=e.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:`0 0 1 1`,fill:this._defaultColor,"fill-opacity":this._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:this._freeHighlight.toSVGPath()}},!0,!0)}static#j(e,t){this._freeHighlight.add(t)&&e.drawLayer.updateProperties(this._freeHighlightId,{path:{d:this._freeHighlight.toSVGPath()}})}static#M(e,t){this._freeHighlight.isEmpty()?e.drawLayer.remove(this._freeHighlightId):e.createAndAddNewEditor(t,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:`main_toolbar`}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=``}static async deserialize(e,t,n){let r=null;if(e instanceof mm){let{data:{quadPoints:t,rect:n,rotation:i,id:a,color:o,opacity:s,popupRef:c,richText:l,contentsObj:u,creationDate:d,modificationDate:f},parent:{page:{pageNumber:p}}}=e;r=e={annotationType:ul.HIGHLIGHT,color:Array.from(o),opacity:s,quadPoints:t,boxes:null,pageIndex:p-1,rect:n.slice(0),rotation:i,annotationElementId:a,id:a,deleted:!1,popupRef:c,richText:l,comment:u?.str||null,creationDate:d,modificationDate:f}}else if(e instanceof pm){let{data:{inkLists:t,rect:n,rotation:i,id:a,color:o,borderStyle:{rawWidth:s},popupRef:c,richText:l,contentsObj:u,creationDate:d,modificationDate:f},parent:{page:{pageNumber:p}}}=e;r=e={annotationType:ul.HIGHLIGHT,color:Array.from(o),thickness:s,inkLists:t,boxes:null,pageIndex:p-1,rect:n.slice(0),rotation:i,annotationElementId:a,id:a,deleted:!1,popupRef:c,richText:l,comment:u?.str||null,creationDate:d,modificationDate:f}}let{color:i,quadPoints:a,inkLists:o,outlines:s,opacity:c}=e,l=await super.deserialize(e,t,n);l.color=Q.makeHexColor(...i),l.opacity=c||1,o&&(l.#g=e.thickness),l._initialData=r,e.comment&&l.setCommentData(e);let[u,d]=l.pageDimensions,[f,p]=l.pageTranslation;if(a){let e=l.#n=[];for(let t=0;t<a.length;t+=8)e.push({x:(a[t]-f)/u,y:1-(a[t+1]-p)/d,width:(a[t+2]-a[t])/u,height:(a[t+1]-a[t+5])/d});l.#v(),l.#w(),l.rotate(l.rotation)}else if(o||s){l.#d=!0;let e=(o||s.points)[0],n={x:e[0]-f,y:d-(e[1]-p)},r=new Dm(n,[0,0,u,d],1,l.#g/2,!0,.001);for(let t=0,i=e.length;t<i;t+=2)n.x=e[t]-f,n.y=d-(e[t+1]-p),r.add(n);let{id:i,clipPathId:a}=t.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:`0 0 1 1`,fill:l.color,"fill-opacity":l._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:r.toSVGPath()}},!0,!0);l.#y({highlightOutlines:r.getOutlines(),highlightId:i,clipPathId:a}),l.#w(),l.rotate(l.parentRotation)}return l}serialize(e=!1){if(this.isEmpty()||e)return null;if(this.deleted)return this.serializeDeleted();let t=Zu._colorManager.convert(this._uiManager.getNonHCMColor(this.color)),n=super.serialize(e);return Object.assign(n,{color:t,opacity:this.opacity,thickness:this.#g,quadPoints:this.#k(),outlines:this.#A(n.rect)}),this.addComment(n),this.annotationElementId&&!this.#N(n)?null:(n.id=this.annotationElementId,n)}#N(e){let{color:t}=this._initialData;return this.hasEditedComment||e.color.some((e,n)=>e!==t[n])}renderAnnotationElement(e){return this.deleted?(e.hide(),null):(e.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}static canCreateNewEmptyEditor(){return!1}},Am=class{#e=Object.create(null);updateProperty(e,t){this[e]=t,this.updateSVGProperty(e,t)}updateProperties(e){if(e)for(let[t,n]of Object.entries(e))t.startsWith(`_`)||this.updateProperty(t,n)}updateSVGProperty(e,t){this.#e[e]=t}toSVGProperties(){let e=this.#e;return this.#e=Object.create(null),{root:e}}reset(){this.#e=Object.create(null)}updateAll(e=this){this.updateProperties(e)}clone(){El(`Not implemented`)}},jm=class e extends Zu{#e=null;#t;_colorPicker=null;_drawId=null;static _currentDrawId=-1;static _currentParent=null;static#n=null;static#r=null;static#i=null;static _INNER_MARGIN=3;constructor(e){super(e),this.#t=e.mustBeCommitted||!1,this._addOutlines(e)}onUpdatedColor(){this._colorPicker?.update(this.color),super.onUpdatedColor()}onUpdatedOpacity(){this._colorPicker?.updateOpacity?.(this.opacity)}_addOutlines(e){e.drawOutlines&&(this.#a(e),this.#c())}#a({drawOutlines:e,drawId:t,drawingOptions:n}){this.#e=e,this._drawingOptions||=n,this.annotationElementId||this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`),t>=0?(this._drawId=t,this.parent.drawLayer.finalizeDraw(t,e.defaultProperties)):this._drawId=this.#o(e,this.parent),this.#d(e.box)}#o(t,n){let{id:r}=n.drawLayer.draw(e._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,!1);return r}static _mergeSVGProperties(e,t){let n=new Set(Object.keys(e));for(let[r,i]of Object.entries(t))n.has(r)?Object.assign(e[r],i):e[r]=i;return e}static getDefaultDrawingOptions(e){El(`Not implemented`)}static get typesMap(){El(`Not implemented`)}static get isDrawer(){return!0}static get supportMultipleDrawings(){return!1}static updateDefaultParams(t,n){let r=this.typesMap.get(t);r&&this._defaultDrawingOptions.updateProperty(r,n),this._currentParent&&(e.#n.updateProperty(r,n),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(e,t){let n=this.constructor.typesMap.get(e);n&&this._updateProperty(e,n,t)}static get defaultPropertiesToUpdate(){let e=[],t=this._defaultDrawingOptions;for(let[n,r]of this.typesMap)e.push([n,t[r]]);return e}get propertiesToUpdate(){let e=[],{_drawingOptions:t}=this;for(let[n,r]of this.constructor.typesMap)e.push([n,t[r]]);return e}_updateProperty(e,t,n){let r=this._drawingOptions,i=r[t],a=n=>{r.updateProperty(t,n);let i=this.#e.updateProperty(t,n);i&&this.#d(i),this.parent?.drawLayer.updateProperties(this._drawId,r.toSVGProperties()),e===this.colorType?this.onUpdatedColor():e===this.opacityType&&this.onUpdatedOpacity()};this.addCommands({cmd:a.bind(this,n),undo:a.bind(this,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:e,overwriteIfSameType:!0,keepUndo:!0})}_updateColorAndOpacity(e,t){let n=this.constructor.typesMap.get(this.colorType),r=this.constructor.typesMap.get(this.opacityType),i=this._drawingOptions,a=i[n],o=i[r],s=(e,t)=>{i.updateProperty(n,e),i.updateProperty(r,t),this.#e.updateProperty(n,e),this.#e.updateProperty(r,t),this.parent?.drawLayer.updateProperties(this._drawId,i.toSVGProperties()),this.onUpdatedColor(),this.onUpdatedOpacity()};this.addCommands({cmd:s.bind(this,e,t),undo:s.bind(this,a,o),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:dl.INK_COLOR_AND_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathResizingSVGProperties(this.#u()),{bbox:this.#f()}))}_onResized(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathResizedSVGProperties(this.#u()),{bbox:this.#f()}))}_onTranslating(e,t){this.parent?.drawLayer.updateProperties(this._drawId,{bbox:this.#f()})}_onTranslated(){this.parent?.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties(this.#e.getPathTranslatedSVGProperties(this.#u(),this.parentDimensions),{bbox:this.#f()}))}_onStartDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){this.parent?.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}commit(){super.commit(),this.disableEditMode(),this.disableEditing()}disableEditing(){super.disableEditing(),this.div.classList.toggle(`disabled`,!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle(`disabled`,!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,this.#t&&(this.#t=!1,this.commit(),this.parent.setSelected(this),e&&this.isOnScreen&&this.div.focus())}remove(){this.#s(),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#c(),this.#d(this.#e.box),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){let t=!1;this.parent&&!e?(this._uiManager.removeShouldRescale(this),this.#s()):e&&(this._uiManager.addShouldRescale(this),this.#c(e),t=!this.parent&&this.div?.classList.contains(`selectedEditor`)),super.setParent(e),t&&this.select()}#s(){this._drawId===null||!this.parent||(this.parent.drawLayer.remove(this._drawId),this._drawId=null,this._drawingOptions.reset())}#c(e=this.parent){if(!(this._drawId!==null&&this.parent===e)){if(this._drawId!==null){this.parent.drawLayer.updateParent(this._drawId,e.drawLayer);return}this._drawingOptions.updateAll(),this._drawId=this.#o(this.#e,e)}}#l([e,t,n,r]){let{parentDimensions:[i,a],rotation:o}=this;switch(o){case 90:return[t,1-e,a/i*n,i/a*r];case 180:return[1-e,1-t,n,r];case 270:return[1-t,e,a/i*n,i/a*r];default:return[e,t,n,r]}}#u(){let{x:e,y:t,width:n,height:r,parentDimensions:[i,a],rotation:o}=this;switch(o){case 90:return[1-t,e,i/a*n,a/i*r];case 180:return[1-e,1-t,n,r];case 270:return[t,1-e,i/a*n,a/i*r];default:return[e,t,n,r]}}#d(e){[this.x,this.y,this.width,this.height]=this.#l(e),this.div&&(this.fixAndSetPosition(),this.setDims()),this._onResized()}#f(){let{x:e,y:t,width:n,height:r,rotation:i,parentRotation:a,parentDimensions:[o,s]}=this;switch((i*4+a)/90){case 1:return[1-t-r,e,r,n];case 2:return[1-e-n,1-t-r,n,r];case 3:return[t,1-e-n,r,n];case 4:return[e,t-o/s*n,s/o*r,o/s*n];case 5:return[1-t,e,o/s*n,s/o*r];case 6:return[1-e-s/o*r,1-t,s/o*r,o/s*n];case 7:return[t-o/s*n,1-e-s/o*r,o/s*n,s/o*r];case 8:return[e-n,t-r,n,r];case 9:return[1-t,e-n,r,n];case 10:return[1-e,1-t,n,r];case 11:return[t-r,1-e,r,n];case 12:return[e-s/o*r,t,s/o*r,o/s*n];case 13:return[1-t-o/s*n,e-s/o*r,o/s*n,s/o*r];case 14:return[1-e,1-t-o/s*n,s/o*r,o/s*n];case 15:return[t,1-e,o/s*n,s/o*r];default:return[e,t,n,r]}}rotate(){this.parent&&this.parent.drawLayer.updateProperties(this._drawId,e._mergeSVGProperties({bbox:this.#f()},this.#e.updateRotation((this.parentRotation-this.rotation+360)%360)))}onScaleChanging(){this.parent&&this.#d(this.#e.updateParentDimensions(this.parentDimensions,this.parent.scale))}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;let e,t;this._isCopy&&(e=this.x,t=this.y);let n=super.render();n.classList.add(`draw`);let r=document.createElement(`div`);return n.append(r),r.setAttribute(`aria-hidden`,`true`),r.className=`internal`,this.setDims(),this._uiManager.addShouldRescale(this),this.disableEditing(),this._isCopy&&this._moveAfterPaste(e,t),n}static createDrawerInstance(e,t,n,r,i){El(`Not implemented`)}static startDrawing(t,n,r,i){let{target:a,offsetX:o,offsetY:s,pointerId:c,pointerType:l}=i;if(Vu.isInitializedAndDifferentPointerType(l))return;let{viewport:{rotation:u}}=t,{width:d,height:f}=a.getBoundingClientRect(),p=e.#r=new AbortController,m=t.combinedSignal(p);if(Vu.setPointer(l,c),window.addEventListener(`pointerup`,e=>{Vu.isSamePointerIdOrRemove(e.pointerId)&&this._endDraw(e)},{signal:m}),window.addEventListener(`pointercancel`,e=>{Vu.isSamePointerIdOrRemove(e.pointerId)&&this._currentParent.endDrawingSession()},{signal:m}),window.addEventListener(`pointerdown`,t=>{Vu.isSamePointerType(t.pointerType)&&(Vu.initializeAndAddPointerId(t.pointerId),e.#n.isCancellable()&&(e.#n.removeLastElement(),e.#n.isEmpty()?this._currentParent.endDrawingSession(!0):this._endDraw(null)))},{capture:!0,passive:!1,signal:m}),window.addEventListener(`contextmenu`,mu,{signal:m}),a.addEventListener(`pointermove`,this._drawMove.bind(this),{signal:m}),a.addEventListener(`touchmove`,e=>{Vu.isSameTimeStamp(e.timeStamp)&&hu(e)},{signal:m}),t.toggleDrawing(),n._editorUndoBar?.hide(),e.#n){t.drawLayer.updateProperties(this._currentDrawId,e.#n.startNew(o,s,d,f,u));return}n.updateUIForDefaultProperties(this),e.#n=this.createDrawerInstance(o,s,d,f,u),e.#i=this.getDefaultDrawingOptions(),this._currentParent=t,{id:this._currentDrawId}=t.drawLayer.draw(this._mergeSVGProperties(e.#i.toSVGProperties(),e.#n.defaultSVGProperties),!0,!1)}static _drawMove(t){if(Vu.isSameTimeStamp(t.timeStamp),!e.#n)return;let{offsetX:n,offsetY:r,pointerId:i}=t;if(Vu.isSamePointerId(i)){if(Vu.isUsingMultiplePointers()){this._endDraw(t);return}this._currentParent.drawLayer.updateProperties(this._currentDrawId,e.#n.add(n,r)),Vu.setTimeStamp(t.timeStamp),hu(t)}}static _cleanup(t){t&&(this._currentDrawId=-1,this._currentParent=null,e.#n=null,e.#i=null,Vu.clearTimeStamp()),e.#r&&(e.#r.abort(),e.#r=null,Vu.clearPointerIds())}static _endDraw(t){let n=this._currentParent;if(n){if(n.toggleDrawing(!0),this._cleanup(!1),t?.target===n.div&&n.drawLayer.updateProperties(this._currentDrawId,e.#n.end(t.offsetX,t.offsetY)),this.supportMultipleDrawings){let t=e.#n,r=this._currentDrawId,i=t.getLastElement();n.addCommands({cmd:()=>{n.drawLayer.updateProperties(r,t.setLastElement(i))},undo:()=>{n.drawLayer.updateProperties(r,t.removeLastElement())},mustExec:!1,type:dl.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(t){let n=this._currentParent;if(!n)return null;if(n.toggleDrawing(!0),n.cleanUndoStack(dl.DRAW_STEP),!e.#n.isEmpty()){let{pageDimensions:[r,i],scale:a}=n,o=n.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,drawOutlines:e.#n.getOutlines(r*a,i*a,a,this._INNER_MARGIN),drawingOptions:e.#i,mustBeCommitted:!t});return this._cleanup(!0),o}return n.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(e){}static deserializeDraw(e,t,n,r,i,a){El(`Not implemented`)}static async deserialize(e,t,n){let{rawDims:{pageWidth:r,pageHeight:i,pageX:a,pageY:o}}=t.viewport,s=this.deserializeDraw(a,o,r,i,this._INNER_MARGIN,e),c=await super.deserialize(e,t,n);return c.createDrawingOptions(e),c.#a({drawOutlines:s}),c.#c(),c.onScaleChanging(),c.rotate(),c}serializeDraw(e){let[t,n]=this.pageTranslation,[r,i]=this.pageDimensions;return this.#e.serialize([t,n,r,i],e)}renderAnnotationElement(e){return e.updateEdited({rect:this.getPDFRect()}),null}static canCreateNewEmptyEditor(){return!1}},Mm=class{#e=new Float64Array(6);#t;#n;#r;#i;#a;#o=``;#s=0;#c=new Nm;#l;#u;constructor(e,t,n,r,i,a){this.#l=n,this.#u=r,this.#r=i,this.#i=a,[e,t]=this.#d(e,t);let o=this.#t=[NaN,NaN,NaN,NaN,e,t];this.#a=[e,t],this.#n=[{line:o,points:this.#a}],this.#e.set(o,0)}updateProperty(e,t){e===`stroke-width`&&(this.#i=t)}#d(e,t){return $._normalizePoint(e,t,this.#l,this.#u,this.#r)}isEmpty(){return!this.#n||this.#n.length===0}isCancellable(){return this.#a.length<=10}add(e,t){[e,t]=this.#d(e,t);let[n,r,i,a]=this.#e.subarray(2,6),o=e-i,s=t-a;return Math.hypot(this.#l*o,this.#u*s)<=2?null:(this.#a.push(e,t),isNaN(n)?(this.#e.set([i,a,e,t],2),this.#t.push(NaN,NaN,NaN,NaN,e,t),{path:{d:this.toSVGPath()}}):(isNaN(this.#e[0])&&this.#t.splice(6,6),this.#e.set([n,r,i,a,e,t],0),this.#t.push(...$.createBezierPoints(n,r,i,a,e,t)),{path:{d:this.toSVGPath()}}))}end(e,t){return this.add(e,t)||(this.#a.length===2?{path:{d:this.toSVGPath()}}:null)}startNew(e,t,n,r,i){this.#l=n,this.#u=r,this.#r=i,[e,t]=this.#d(e,t);let a=this.#t=[NaN,NaN,NaN,NaN,e,t];this.#a=[e,t];let o=this.#n.at(-1);return o&&(o.line=new Float32Array(o.line),o.points=new Float32Array(o.points)),this.#n.push({line:a,points:this.#a}),this.#e.set(a,0),this.#s=0,this.toSVGPath(),null}getLastElement(){return this.#n.at(-1)}setLastElement(e){return this.#n?(this.#n.push(e),this.#t=e.line,this.#a=e.points,this.#s=0,{path:{d:this.toSVGPath()}}):this.#c.setLastElement(e)}removeLastElement(){if(!this.#n)return this.#c.removeLastElement();this.#n.pop(),this.#o=``;for(let e=0,t=this.#n.length;e<t;e++){let{line:t,points:n}=this.#n[e];this.#t=t,this.#a=n,this.#s=0,this.toSVGPath()}return{path:{d:this.#o}}}toSVGPath(){let e=$.svgRound(this.#t[4]),t=$.svgRound(this.#t[5]);if(this.#a.length===2)return this.#o=`${this.#o} M ${e} ${t} Z`,this.#o;if(this.#a.length<=6){let n=this.#o.lastIndexOf(`M`);this.#o=`${this.#o.slice(0,n)} M ${e} ${t}`,this.#s=6}if(this.#a.length===4){let e=$.svgRound(this.#t[10]),t=$.svgRound(this.#t[11]);return this.#o=`${this.#o} L ${e} ${t}`,this.#s=12,this.#o}let n=[];this.#s===0&&(n.push(`M ${e} ${t}`),this.#s=6);for(let e=this.#s,t=this.#t.length;e<t;e+=6){let[t,r,i,a,o,s]=this.#t.slice(e,e+6).map($.svgRound);n.push(`C${t} ${r} ${i} ${a} ${o} ${s}`)}return this.#o+=n.join(` `),this.#s=this.#t.length,this.#o}getOutlines(e,t,n,r){let i=this.#n.at(-1);return i.line=new Float32Array(i.line),i.points=new Float32Array(i.points),this.#c.build(this.#n,e,t,n,this.#r,this.#i,r),this.#e=null,this.#t=null,this.#n=null,this.#o=null,this.#c}get defaultSVGProperties(){return{root:{viewBox:`0 0 10000 10000`},rootClass:{draw:!0},bbox:[0,0,1,1]}}},Nm=class extends ${#e;#t=0;#n;#r;#i;#a;#o;#s;#c;build(e,t,n,r,i,a,o){this.#i=t,this.#a=n,this.#o=r,this.#s=i,this.#c=a,this.#n=o??0,this.#r=e,this.#d()}get thickness(){return this.#c}setLastElement(e){return this.#r.push(e),{path:{d:this.toSVGPath()}}}removeLastElement(){return this.#r.pop(),{path:{d:this.toSVGPath()}}}toSVGPath(){let e=[];for(let{line:t}of this.#r){if(e.push(`M${$.svgRound(t[4])} ${$.svgRound(t[5])}`),t.length===6){e.push(`Z`);continue}if(t.length===12&&isNaN(t[6])){e.push(`L${$.svgRound(t[10])} ${$.svgRound(t[11])}`);continue}for(let n=6,r=t.length;n<r;n+=6){let[r,i,a,o,s,c]=t.subarray(n,n+6).map($.svgRound);e.push(`C${r} ${i} ${a} ${o} ${s} ${c}`)}}return e.join(``)}serialize([e,t,n,r],i){let a=[],o=[],[s,c,l,u]=this.#u(),d,f,p,m,h,g,_,v,y;switch(this.#s){case 0:y=$._rescale,d=e,f=t+r,p=n,m=-r,h=e+s*n,g=t+(1-c-u)*r,_=e+(s+l)*n,v=t+(1-c)*r;break;case 90:y=$._rescaleAndSwap,d=e,f=t,p=n,m=r,h=e+c*n,g=t+s*r,_=e+(c+u)*n,v=t+(s+l)*r;break;case 180:y=$._rescale,d=e+n,f=t,p=-n,m=r,h=e+(1-s-l)*n,g=t+c*r,_=e+(1-s)*n,v=t+(c+u)*r;break;case 270:y=$._rescaleAndSwap,d=e+n,f=t+r,p=-n,m=-r,h=e+(1-c-u)*n,g=t+(1-s-l)*r,_=e+(1-c)*n,v=t+(1-s)*r;break}for(let{line:e,points:t}of this.#r)a.push(y(e,d,f,p,m,i?Array(e.length):null)),o.push(y(t,d,f,p,m,i?Array(t.length):null));return{lines:a,points:o,rect:[h,g,_,v]}}static deserialize(e,t,n,r,i,{paths:{lines:a,points:o},rotation:s,thickness:c}){let l=[],u,d,f,p,m;switch(s){case 0:m=$._rescale,u=-e/n,d=t/r+1,f=1/n,p=-1/r;break;case 90:m=$._rescaleAndSwap,u=-t/r,d=-e/n,f=1/r,p=1/n;break;case 180:m=$._rescale,u=e/n+1,d=-t/r,f=-1/n,p=1/r;break;case 270:m=$._rescaleAndSwap,u=t/r+1,d=e/n+1,f=-1/r,p=-1/n;break}if(!a){a=[];for(let e of o){let t=e.length;if(t===2){a.push(new Float32Array([NaN,NaN,NaN,NaN,e[0],e[1]]));continue}if(t===4){a.push(new Float32Array([NaN,NaN,NaN,NaN,e[0],e[1],NaN,NaN,NaN,NaN,e[2],e[3]]));continue}let n=new Float32Array(3*(t-2));a.push(n);let[r,i,o,s]=e.subarray(0,4);n.set([NaN,NaN,NaN,NaN,r,i],0);for(let a=4;a<t;a+=2){let t=e[a],c=e[a+1];n.set($.createBezierPoints(r,i,o,s,t,c),(a-2)*3),[r,i,o,s]=[o,s,t,c]}}}for(let e=0,t=a.length;e<t;e++)l.push({line:m(a[e].map(e=>e??NaN),u,d,f,p),points:m(o[e].map(e=>e??NaN),u,d,f,p)});let h=new this.prototype.constructor;return h.build(l,n,r,1,s,c,i),h}#l(e=this.#c){let t=this.#n+e/2*this.#o;return this.#s%180==0?[t/this.#i,t/this.#a]:[t/this.#a,t/this.#i]}#u(){let[e,t,n,r]=this.#e,[i,a]=this.#l(0);return[e+i,t+a,n-2*i,r-2*a]}#d(){let e=this.#e=il.slice();for(let{line:t}of this.#r){if(t.length<=12){for(let n=4,r=t.length;n<r;n+=6)Q.pointBoundingBox(t[n],t[n+1],e);continue}let n=t[4],r=t[5];for(let i=6,a=t.length;i<a;i+=6){let[a,o,s,c,l,u]=t.subarray(i,i+6);Q.bezierBoundingBox(n,r,a,o,s,c,l,u,e),n=l,r=u}}let[t,n]=this.#l();e[0]=eu(e[0]-t,0,1),e[1]=eu(e[1]-n,0,1),e[2]=eu(e[2]+t,0,1),e[3]=eu(e[3]+n,0,1),e[2]-=e[0],e[3]-=e[1]}get box(){return this.#e}updateProperty(e,t){return e===`stroke-width`?this.#f(t):null}#f(e){let[t,n]=this.#l();this.#c=e;let[r,i]=this.#l(),[a,o]=[r-t,i-n],s=this.#e;return s[0]-=a,s[1]-=o,s[2]+=2*a,s[3]+=2*o,s}updateParentDimensions([e,t],n){let[r,i]=this.#l();this.#i=e,this.#a=t,this.#o=n;let[a,o]=this.#l(),s=a-r,c=o-i,l=this.#e;return l[0]-=s,l[1]-=c,l[2]+=2*s,l[3]+=2*c,l}updateRotation(e){return this.#t=e,{path:{transform:this.rotationTransform}}}get viewBox(){return this.#e.map($.svgRound).join(` `)}get defaultProperties(){let[e,t]=this.#e;return{root:{viewBox:this.viewBox},path:{"transform-origin":`${$.svgRound(e)} ${$.svgRound(t)}`}}}get rotationTransform(){let[,,e,t]=this.#e,n=0,r=0,i=0,a=0,o=0,s=0;switch(this.#t){case 90:r=t/e,i=-e/t,o=e;break;case 180:n=-1,a=-1,o=e,s=t;break;case 270:r=-t/e,i=e/t,s=t;break;default:return``}return`matrix(${n} ${r} ${i} ${a} ${$.svgRound(o)} ${$.svgRound(s)})`}getPathResizingSVGProperties([e,t,n,r]){let[i,a]=this.#l(),[o,s,c,l]=this.#e;if(Math.abs(c-i)<=$.PRECISION||Math.abs(l-a)<=$.PRECISION){let i=e+n/2-(o+c/2),a=t+r/2-(s+l/2);return{path:{"transform-origin":`${$.svgRound(e)} ${$.svgRound(t)}`,transform:`${this.rotationTransform} translate(${i} ${a})`}}}let u=(n-2*i)/(c-2*i),d=(r-2*a)/(l-2*a),f=c/n,p=l/r;return{path:{"transform-origin":`${$.svgRound(o)} ${$.svgRound(s)}`,transform:`${this.rotationTransform} scale(${f} ${p}) translate(${$.svgRound(i)} ${$.svgRound(a)}) scale(${u} ${d}) translate(${$.svgRound(-i)} ${$.svgRound(-a)})`}}}getPathResizedSVGProperties([e,t,n,r]){let[i,a]=this.#l(),o=this.#e,[s,c,l,u]=o;if(o[0]=e,o[1]=t,o[2]=n,o[3]=r,Math.abs(l-i)<=$.PRECISION||Math.abs(u-a)<=$.PRECISION){let i=e+n/2-(s+l/2),a=t+r/2-(c+u/2);for(let{line:e,points:t}of this.#r)$._translate(e,i,a,e),$._translate(t,i,a,t);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${$.svgRound(e)} ${$.svgRound(t)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}let d=(n-2*i)/(l-2*i),f=(r-2*a)/(u-2*a),p=-d*(s+i)+e+i,m=-f*(c+a)+t+a;if(d!==1||f!==1||p!==0||m!==0)for(let{line:e,points:t}of this.#r)$._rescale(e,p,m,d,f,e),$._rescale(t,p,m,d,f,t);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${$.svgRound(e)} ${$.svgRound(t)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}getPathTranslatedSVGProperties([e,t],n){let[r,i]=n,a=this.#e,o=e-a[0],s=t-a[1];if(this.#i===r&&this.#a===i)for(let{line:e,points:t}of this.#r)$._translate(e,o,s,e),$._translate(t,o,s,t);else{let e=this.#i/r,t=this.#a/i;this.#i=r,this.#a=i;for(let{line:n,points:r}of this.#r)$._rescale(n,o,s,e,t,n),$._rescale(r,o,s,e,t,r);a[2]*=e,a[3]*=t}return a[0]=e,a[1]=t,{root:{viewBox:this.viewBox},path:{d:this.toSVGPath(),"transform-origin":`${$.svgRound(e)} ${$.svgRound(t)}`}}}get defaultSVGProperties(){let e=this.#e;return{root:{viewBox:this.viewBox},rootClass:{draw:!0},path:{d:this.toSVGPath(),"transform-origin":`${$.svgRound(e[0])} ${$.svgRound(e[1])}`,transform:this.rotationTransform||null},bbox:e}}},Pm=class e extends Am{constructor(e){super(),this._viewParameters=e,super.updateProperties({fill:`none`,stroke:Zu._defaultLineColor,"stroke-opacity":1,"stroke-width":1,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-miterlimit":10})}updateSVGProperty(e,t){e===`stroke-width`&&(t??=this[`stroke-width`],t*=this._viewParameters.realScale),super.updateSVGProperty(e,t)}clone(){let t=new e(this._viewParameters);return t.updateAll(this),t}},Fm=class e extends jm{static _type=`ink`;static _editorType=ul.INK;static _defaultDrawingOptions=null;constructor(e){super({...e,name:`inkEditor`}),this._willKeepAspectRatio=!0,this.defaultL10nId=`pdfjs-editor-ink-editor`}static initialize(e,t){Zu.initialize(e,t),this._defaultDrawingOptions=new Pm(t.viewParameters)}static getDefaultDrawingOptions(e){let t=this._defaultDrawingOptions.clone();return t.updateProperties(e),t}static get supportMultipleDrawings(){return!0}static get typesMap(){return Ml(this,`typesMap`,new Map([[dl.INK_THICKNESS,`stroke-width`],[dl.INK_COLOR,`stroke`],[dl.INK_OPACITY,`stroke-opacity`]]))}static createDrawerInstance(e,t,n,r,i){return new Mm(e,t,n,r,i,this._defaultDrawingOptions[`stroke-width`])}static deserializeDraw(e,t,n,r,i,a){return Nm.deserialize(e,t,n,r,i,a)}static async deserialize(e,t,n){let r=null;if(e instanceof pm){let{data:{inkLists:t,rect:n,rotation:i,id:a,color:o,opacity:s,borderStyle:{rawWidth:c},popupRef:l,richText:u,contentsObj:d,creationDate:f,modificationDate:p},parent:{page:{pageNumber:m}}}=e;r=e={annotationType:ul.INK,color:Array.from(o),thickness:c,opacity:s,paths:{points:t},boxes:null,pageIndex:m-1,rect:n.slice(0),rotation:i,annotationElementId:a,id:a,deleted:!1,popupRef:l,richText:u,comment:d?.str||null,creationDate:f,modificationDate:p}}let i=await super.deserialize(e,t,n);return i._initialData=r,e.comment&&i.setCommentData(e),i}get toolbarButtons(){return this._colorPicker||=new Lp(this),[[`colorPicker`,this._colorPicker]]}get colorType(){return dl.INK_COLOR}get colorAndOpacityType(){return dl.INK_COLOR_AND_OPACITY}get opacityType(){return dl.INK_OPACITY}updateParams(e,t){if(e===dl.INK_COLOR_AND_OPACITY){this._updateColorAndOpacity(t.color,t.opacity);return}super.updateParams(e,t)}static updateDefaultParams(e,t){if(e===dl.INK_COLOR_AND_OPACITY){super.updateDefaultParams(dl.INK_COLOR,t.color),super.updateDefaultParams(dl.INK_OPACITY,t.opacity);return}super.updateDefaultParams(e,t)}get color(){return this._drawingOptions.stroke}get opacity(){return this._drawingOptions[`stroke-opacity`]}onScaleChanging(){if(!this.parent)return;super.onScaleChanging();let{_drawId:e,_drawingOptions:t,parent:n}=this;t.updateSVGProperty(`stroke-width`),n.drawLayer.updateProperties(e,t.toSVGProperties())}static onScaleChangingWhenDrawing(){let e=this._currentParent;e&&(super.onScaleChangingWhenDrawing(),this._defaultDrawingOptions.updateSVGProperty(`stroke-width`),e.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}createDrawingOptions({color:t,thickness:n,opacity:r}){this._drawingOptions=e.getDefaultDrawingOptions({stroke:Q.makeHexColor(...t),"stroke-width":n,"stroke-opacity":r})}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();let{lines:t,points:n}=this.serializeDraw(e),{_drawingOptions:{stroke:r,"stroke-opacity":i,"stroke-width":a}}=this,o=Object.assign(super.serialize(e),{color:Zu._colorManager.convert(r),opacity:i,thickness:a,paths:{lines:t,points:n}});return this.addComment(o),e?(o.isCopy=!0,o):this.annotationElementId&&!this.#e(o)?null:(o.id=this.annotationElementId,o)}#e(e){let{color:t,thickness:n,opacity:r,pageIndex:i}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized||e.color.some((e,n)=>e!==t[n])||e.thickness!==n||e.opacity!==r||e.pageIndex!==i}renderAnnotationElement(e){if(this.deleted)return e.hide(),null;let{points:t,rect:n}=this.serializeDraw(!1);return e.updateEdited({rect:n,thickness:this._drawingOptions[`stroke-width`],points:t,popup:this.comment}),null}},Im=class extends Nm{toSVGPath(){let e=super.toSVGPath();return e.endsWith(`Z`)||(e+=`Z`),e}},Lm=8,Rm=3,zm=class{static#e={maxDim:512,sigmaSFactor:.02,sigmaR:25,kernelSize:16};static#t(e,t,n,r){return n-=e,r-=t,n===0?r>0?0:4:n===1?r+6:2-r}static#n=new Int32Array([0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1]);static#r(e,t,n,r,i,a,o){let s=this.#t(n,r,i,a);for(let i=0;i<8;i++){let a=(-i+s-o+16)%8,c=this.#n[2*a],l=this.#n[2*a+1];if(e[(n+c)*t+(r+l)]!==0)return a}return-1}static#i(e,t,n,r,i,a,o){let s=this.#t(n,r,i,a);for(let i=0;i<8;i++){let a=(i+s+o+16)%8,c=this.#n[2*a],l=this.#n[2*a+1];if(e[(n+c)*t+(r+l)]!==0)return a}return-1}static#a(e,t,n,r){let i=e.length,a=new Int32Array(i);for(let t=0;t<i;t++)a[t]=+(e[t]<=r);for(let e=1;e<n-1;e++)a[e*t]=a[e*t+t-1]=0;for(let e=0;e<t;e++)a[e]=a[t*n-1-e]=0;let o=1,s,c=[];for(let e=1;e<n-1;e++){s=1;for(let n=1;n<t-1;n++){let r=e*t+n,i=a[r];if(i===0)continue;let l=e,u=n;if(i===1&&a[r-1]===0)o+=1,--u;else if(i>=1&&a[r+1]===0)o+=1,u+=1,i>1&&(s=i);else{i!==1&&(s=Math.abs(i));continue}let d=[n,e],f=u===n+1,p={isHole:f,points:d,id:o,parent:0};c.push(p);let m;for(let e of c)if(e.id===s){m=e;break}m?m.isHole?p.parent=f?m.parent:s:p.parent=f?s:m.parent:p.parent=f?s:0;let h=this.#r(a,t,e,n,l,u,0);if(h===-1){a[r]=-o,a[r]!==1&&(s=Math.abs(a[r]));continue}let g=this.#n[2*h],_=this.#n[2*h+1],v=e+g,y=n+_;l=v,u=y;let b=e,x=n;for(;;){let i=this.#i(a,t,b,x,l,u,1);g=this.#n[2*i],_=this.#n[2*i+1];let c=b+g,f=x+_;d.push(f,c);let p=b*t+x;if(a[p+1]===0?a[p]=-o:a[p]===1&&(a[p]=o),c===e&&f===n&&b===v&&x===y){a[r]!==1&&(s=Math.abs(a[r]));break}else l=b,u=x,b=c,x=f}}}return c}static#o(e,t,n,r){if(n-t<=4){for(let i=t;i<n-2;i+=2)r.push(e[i],e[i+1]);return}let i=e[t],a=e[t+1],o=e[n-4]-i,s=e[n-3]-a,c=Math.hypot(o,s),l=o/c,u=s/c,d=l*a-u*i,f=s/o,p=1/c,m=Math.atan(f),h=Math.cos(m),g=Math.sin(m),_=p*(Math.abs(h)+Math.abs(g)),v=p*(1-_+_**2),y=Math.max(Math.atan(Math.abs(g+h)*v),Math.atan(Math.abs(g-h)*v)),b=0,x=t;for(let r=t+2;r<n-2;r+=2){let t=Math.abs(d-l*e[r+1]+u*e[r]);t>b&&(x=r,b=t)}b>(c*y)**2?(this.#o(e,t,x+2,r),this.#o(e,x,n,r)):r.push(i,a)}static#s(e){let t=[],n=e.length;return this.#o(e,0,n,t),t.push(e[n-2],e[n-1]),t.length<=4?null:t}static#c(e,t,n,r,i,a){let o=new Float32Array(a**2),s=-2*r**2,c=a>>1;for(let e=0;e<a;e++){let t=(e-c)**2;for(let n=0;n<a;n++)o[e*a+n]=Math.exp((t+(n-c)**2)/s)}let l=new Float32Array(256),u=-2*i**2;for(let e=0;e<256;e++)l[e]=Math.exp(e**2/u);let d=e.length,f=new Uint8Array(d),p=new Uint32Array(256);for(let r=0;r<n;r++)for(let i=0;i<t;i++){let s=r*t+i,u=e[s],d=0,m=0;for(let s=0;s<a;s++){let f=r+s-c;if(!(f<0||f>=n))for(let n=0;n<a;n++){let r=i+n-c;if(r<0||r>=t)continue;let p=e[f*t+r],h=o[s*a+n]*l[Math.abs(p-u)];d+=p*h,m+=h}}let h=f[s]=Math.round(d/m);p[h]++}return[f,p]}static#l(e){let t=new Uint32Array(256);for(let n of e)t[n]++;return t}static#u(e){let t=e.length,n=new Uint8ClampedArray(t>>2),r=-1/0,i=1/0;for(let t=0,a=n.length;t<a;t++){let a=n[t]=e[t<<2];r=Math.max(r,a),i=Math.min(i,a)}let a=255/(r-i);for(let e=0,t=n.length;e<t;e++)n[e]=(n[e]-i)*a;return n}static#d(e){let t,n=-1/0,r=-1/0,i=e.findIndex(e=>e!==0),a=i,o=i;for(t=i;t<256;t++){let i=e[t];i>n&&(t-a>r&&(r=t-a,o=t-1),n=i,a=t)}for(t=o-1;t>=0&&!(e[t]>e[t+1]);t--);return t}static#f(e){let t=e,{width:n,height:r}=e,{maxDim:i}=this.#e,a=n,o=r;if(n>i||r>i){let s=n,c=r,l=Math.log2(Math.max(n,r)/i),u=Math.floor(l);l=l===u?u-1:u;for(let n=0;n<l;n++){a=Math.ceil(s/2),o=Math.ceil(c/2);let n=new OffscreenCanvas(a,o);n.getContext(`2d`).drawImage(e,0,0,s,c,0,0,a,o),s=a,c=o,e!==t&&e.close(),e=n.transferToImageBitmap()}let d=Math.min(i/a,i/o);a=Math.round(a*d),o=Math.round(o*d)}let s=new OffscreenCanvas(a,o).getContext(`2d`,{willReadFrequently:!0});s.fillStyle=`white`,s.fillRect(0,0,a,o),s.filter=`grayscale(1)`,s.drawImage(e,0,0,e.width,e.height,0,0,a,o);let c=s.getImageData(0,0,a,o).data;return[this.#u(c),a,o]}static extractContoursFromText(e,{fontFamily:t,fontStyle:n,fontWeight:r},i,a,o,s){let c=new OffscreenCanvas(1,1),l=c.getContext(`2d`,{alpha:!1}),u=l.font=`${n} ${r} 200px ${t}`,{actualBoundingBoxLeft:d,actualBoundingBoxRight:f,actualBoundingBoxAscent:p,actualBoundingBoxDescent:m,fontBoundingBoxAscent:h,fontBoundingBoxDescent:g,width:_}=l.measureText(e),v=1.5,y=Math.ceil(Math.max(Math.abs(d)+Math.abs(f)||0,_)*v),b=Math.ceil(Math.max(Math.abs(p)+Math.abs(m)||200,Math.abs(h)+Math.abs(g)||200)*v);c=new OffscreenCanvas(y,b),l=c.getContext(`2d`,{alpha:!0,willReadFrequently:!0}),l.font=u,l.filter=`grayscale(1)`,l.fillStyle=`white`,l.fillRect(0,0,y,b),l.fillStyle=`black`,l.fillText(e,y*(v-1)/2,b*(3-v)/2);let x=this.#u(l.getImageData(0,0,y,b).data),S=this.#l(x),C=this.#d(S),w=this.#a(x,y,b,C);return this.processDrawnLines({lines:{curves:w,width:y,height:b},pageWidth:i,pageHeight:a,rotation:o,innerMargin:s,mustSmooth:!0,areContours:!0})}static process(e,t,n,r,i){let[a,o,s]=this.#f(e),[c,l]=this.#c(a,o,s,Math.hypot(o,s)*this.#e.sigmaSFactor,this.#e.sigmaR,this.#e.kernelSize),u=this.#d(l),d=this.#a(c,o,s,u);return this.processDrawnLines({lines:{curves:d,width:o,height:s},pageWidth:t,pageHeight:n,rotation:r,innerMargin:i,mustSmooth:!0,areContours:!0})}static processDrawnLines({lines:e,pageWidth:t,pageHeight:n,rotation:r,innerMargin:i,mustSmooth:a,areContours:o}){r%180!=0&&([t,n]=[n,t]);let{curves:s,width:c,height:l}=e,u=e.thickness??0,d=[],f=Math.min(t/c,n/l),p=f/t,m=f/n,h=[];for(let{points:e}of s){let t=a?this.#s(e):e;if(!t)continue;h.push(t);let n=t.length,r=new Float32Array(n),i=new Float32Array(3*(n===2?2:n-2));if(d.push({line:i,points:r}),n===2){r[0]=t[0]*p,r[1]=t[1]*m,i.set([NaN,NaN,NaN,NaN,r[0],r[1]],0);continue}let[o,s,c,l]=t;o*=p,s*=m,c*=p,l*=m,r.set([o,s,c,l],0),i.set([NaN,NaN,NaN,NaN,o,s],0);for(let e=4;e<n;e+=2){let n=r[e]=t[e]*p,a=r[e+1]=t[e+1]*m;i.set($.createBezierPoints(o,s,c,l,n,a),(e-2)*3),[o,s,c,l]=[c,l,n,a]}}if(d.length===0)return null;let g=o?new Im:new Nm;return g.build(d,t,n,1,r,o?0:u,i),{outline:g,newCurves:h,areContours:o,thickness:u,width:c,height:l}}static async compressSignature({outlines:e,areContours:t,thickness:n,width:r,height:i}){let a=1/0,o=-1/0,s=0;for(let t of e){s+=t.length;for(let e=2,n=t.length;e<n;e++){let n=t[e]-t[e-2];a=Math.min(a,n),o=Math.max(o,n)}}let c;c=a>=-128&&o<=127?Int8Array:a>=-32768&&o<=32767?Int16Array:Int32Array;let l=e.length,u=Lm+Rm*l,d=new Uint32Array(u),f=0;d[f++]=u*Uint32Array.BYTES_PER_ELEMENT+(s-2*l)*c.BYTES_PER_ELEMENT,d[f++]=0,d[f++]=r,d[f++]=i,d[f++]=+!t,d[f++]=Math.max(0,Math.floor(n??0)),d[f++]=l,d[f++]=c.BYTES_PER_ELEMENT;for(let t of e)d[f++]=t.length-2,d[f++]=t[0],d[f++]=t[1];let p=new CompressionStream(`deflate-raw`),m=p.writable.getWriter();await m.ready,m.write(d);let h=c.prototype.constructor;for(let t of e){let e=new h(t.length-2);for(let n=2,r=t.length;n<r;n++)e[n-2]=t[n]-t[n-2];m.write(e)}return m.close(),(await new Response(p.readable).bytes()).toBase64()}static async decompressSignature(e){try{let t=Uint8Array.fromBase64(e),{readable:n,writable:r}=new DecompressionStream(`deflate-raw`),i=r.getWriter();await i.ready,i.write(t).then(async()=>{await i.ready,await i.close()}).catch(()=>{});let a=null,o=0;for await(let e of n)a||=new Uint8Array(new Uint32Array(e.buffer,0,4)[0]),a.set(e,o),o+=e.length;let s=new Uint32Array(a.buffer,0,a.length>>2),c=s[1];if(c!==0)throw Error(`Invalid version: ${c}`);let l=s[2],u=s[3],d=s[4]===0,f=s[5],p=s[6],m=s[7],h=[],g=(Lm+Rm*p)*Uint32Array.BYTES_PER_ELEMENT,_;switch(m){case Int8Array.BYTES_PER_ELEMENT:_=new Int8Array(a.buffer,g);break;case Int16Array.BYTES_PER_ELEMENT:_=new Int16Array(a.buffer,g);break;case Int32Array.BYTES_PER_ELEMENT:_=new Int32Array(a.buffer,g);break}o=0;for(let e=0;e<p;e++){let t=s[Rm*e+Lm],n=new Float32Array(t+2);h.push(n);for(let t=0;t<Rm-1;t++)n[t]=s[Rm*e+Lm+t+1];for(let e=0;e<t;e++)n[e+2]=n[e]+_[o++]}return{areContours:d,thickness:f,outlines:h,width:l,height:u}}catch(e){return Tl(`decompressSignature: ${e}`),null}}},Bm=class e extends Am{constructor(){super(),super.updateProperties({fill:Zu._defaultLineColor,"stroke-width":0})}clone(){let t=new e;return t.updateAll(this),t}},Vm=class e extends Pm{constructor(e){super(e),super.updateProperties({stroke:Zu._defaultLineColor,"stroke-width":1})}clone(){let t=new e(this._viewParameters);return t.updateAll(this),t}},Hm=class e extends jm{#e=!1;#t=null;#n=null;#r=null;static _type=`signature`;static _editorType=ul.SIGNATURE;static _defaultDrawingOptions=null;constructor(e){super({...e,mustBeCommitted:!0,name:`signatureEditor`}),this._willKeepAspectRatio=!0,this.#n=e.signatureData||null,this.#t=null,this.defaultL10nId=`pdfjs-editor-signature-editor1`}static initialize(e,t){Zu.initialize(e,t),this._defaultDrawingOptions=new Bm,this._defaultDrawnSignatureOptions=new Vm(t.viewParameters)}static getDefaultDrawingOptions(e){let t=this._defaultDrawingOptions.clone();return t.updateProperties(e),t}static get supportMultipleDrawings(){return!1}static get typesMap(){return Ml(this,`typesMap`,new Map)}static get isDrawer(){return!1}get telemetryFinalData(){return{type:`signature`,hasDescription:!!this.#t}}static computeTelemetryFinalData(e){let t=e.get(`hasDescription`);return{hasAltText:t.get(!0)??0,hasNoAltText:t.get(!1)??0}}get isResizable(){return!0}onScaleChanging(){this._drawId!==null&&super.onScaleChanging()}render(){if(this.div)return this.div;let t,n,{_isCopy:r}=this;if(r&&(this._isCopy=!1,t=this.x,n=this.y),super.render(),this._drawId===null)if(this.#n){let{lines:t,mustSmooth:n,areContours:r,description:i,uuid:a,heightInPage:o}=this.#n,{rawDims:{pageWidth:s,pageHeight:c},rotation:l}=this.parent.viewport,u=zm.processDrawnLines({lines:t,pageWidth:s,pageHeight:c,rotation:l,innerMargin:e._INNER_MARGIN,mustSmooth:n,areContours:r});this.addSignature(u,o,i,a)}else this.div.setAttribute(`data-l10n-args`,JSON.stringify({description:``})),this.div.hidden=!0,this._uiManager.getSignature(this);else this.div.setAttribute(`data-l10n-args`,JSON.stringify({description:this.#t||``}));return r&&(this._isCopy=!0,this._moveAfterPaste(t,n)),this.div}setUuid(e){this.#r=e,this.addEditToolbar()}getUuid(){return this.#r}get description(){return this.#t}set description(e){this.#t=e,this.div&&(this.div.setAttribute(`data-l10n-args`,JSON.stringify({description:e})),super.addEditToolbar().then(t=>{t?.updateEditSignatureButton(e)}))}getSignaturePreview(){let{newCurves:e,areContours:t,thickness:n,width:r,height:i}=this.#n,a=Math.max(r,i);return{areContours:t,outline:zm.processDrawnLines({lines:{curves:e.map(e=>({points:e})),thickness:n,width:r,height:i},pageWidth:a,pageHeight:a,rotation:0,innerMargin:0,mustSmooth:!1,areContours:t}).outline}}get toolbarButtons(){return this._uiManager.signatureManager?[[`editSignature`,this._uiManager.signatureManager]]:super.toolbarButtons}addSignature(t,n,r,i){let{x:a,y:o}=this,{outline:s}=this.#n=t;this.#e=s instanceof Im,this.description=r;let c;this.#e?c=e.getDefaultDrawingOptions():(c=e._defaultDrawnSignatureOptions.clone(),c.updateProperties({"stroke-width":s.thickness})),this._addOutlines({drawOutlines:s,drawingOptions:c});let[,l]=this.pageDimensions,u=n/l;u=u>=1?.5:u,this.width*=u/this.height,this.width>=1&&(u*=.9/this.width,this.width=.9),this.height=u,this.setDims(),this.x=a,this.y=o,this.center(),this._onResized(),this.onScaleChanging(),this.rotate(),this._uiManager.addToAnnotationStorage(this),this.setUuid(i),this._reportTelemetry({action:`pdfjs.signature.inserted`,data:{hasBeenSaved:!!i,hasDescription:!!r}}),this.div.hidden=!1}getFromImage(t){let{rawDims:{pageWidth:n,pageHeight:r},rotation:i}=this.parent.viewport;return zm.process(t,n,r,i,e._INNER_MARGIN)}getFromText(t,n){let{rawDims:{pageWidth:r,pageHeight:i},rotation:a}=this.parent.viewport;return zm.extractContoursFromText(t,n,r,i,a,e._INNER_MARGIN)}getDrawnSignature(t){let{rawDims:{pageWidth:n,pageHeight:r},rotation:i}=this.parent.viewport;return zm.processDrawnLines({lines:t,pageWidth:n,pageHeight:r,rotation:i,innerMargin:e._INNER_MARGIN,mustSmooth:!1,areContours:!1})}createDrawingOptions({areContours:t,thickness:n}){t?this._drawingOptions=e.getDefaultDrawingOptions():(this._drawingOptions=e._defaultDrawnSignatureOptions.clone(),this._drawingOptions.updateProperties({"stroke-width":n}))}serialize(e=!1){if(this.isEmpty())return null;let{lines:t,points:n}=this.serializeDraw(e),{_drawingOptions:{"stroke-width":r}}=this,i=Object.assign(super.serialize(e),{isSignature:!0,areContours:this.#e,color:[0,0,0],thickness:this.#e?0:r});return this.addComment(i),e?(i.paths={lines:t,points:n},i.uuid=this.#r,i.isCopy=!0):i.lines=t,this.#t&&(i.accessibilityData={type:`Figure`,alt:this.#t}),i}static deserializeDraw(e,t,n,r,i,a){return a.areContours?Im.deserialize(e,t,n,r,i,a):Nm.deserialize(e,t,n,r,i,a)}static async deserialize(e,t,n){let r=await super.deserialize(e,t,n);return r.#e=e.areContours,r.description=e.accessibilityData?.alt||``,r.#r=e.uuid,r}},Um=class extends Zu{#e=null;#t=null;#n=null;#r=null;#i=null;#a=``;#o=null;#s=!1;#c=null;#l=!1;#u=!1;static _type=`stamp`;static _editorType=ul.STAMP;constructor(e){super({...e,name:`stampEditor`}),this.#r=e.bitmapUrl,this.#i=e.bitmapFile,this.defaultL10nId=`pdfjs-editor-stamp-editor`}static initialize(e,t){Zu.initialize(e,t)}static isHandlingMimeForPasting(e){return Eu.includes(e)}static paste(e,t){t.pasteEditor({mode:ul.STAMP},{bitmapFile:e.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){return{type:`stamp`,hasAltText:!!this.altTextData?.altText}}static computeTelemetryFinalData(e){let t=e.get(`hasAltText`);return{hasAltText:t.get(!0)??0,hasNoAltText:t.get(!1)??0}}#d(e,t=!1){if(!e){this.remove();return}this.#e=e.bitmap,t||(this.#t=e.id,this.#l=e.isSvg),e.file&&(this.#a=e.file.name),this.#m()}#f(){if(this.#n=null,this._uiManager.enableWaiting(!1),this.#o){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#e){this.addEditToolbar().then(()=>{this._editToolbar.hide(),this._uiManager.editAltText(this,!0)});return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&this.#e){this._reportTelemetry({action:`pdfjs.image.image_added`,data:{alt_text_modal:!1,alt_text_type:`empty`}});try{this.mlGuessAltText()}catch{}}this.div.focus()}}async mlGuessAltText(e=null,t=!0){if(this.hasAltTextData())return null;let{mlManager:n}=this._uiManager;if(!n)throw Error(`No ML.`);if(!await n.isEnabledFor(`altText`))throw Error(`ML isn't enabled for alt text.`);let{data:r,width:i,height:a}=e||this.copyCanvas(null,null,!0).imageData,o=await n.guess({name:`altText`,request:{data:r,width:i,height:a,channels:r.length/(i*a)}});if(!o)throw Error(`No response from the AI service.`);if(o.error)throw Error(`Error from the AI service.`);if(o.cancel)return null;if(!o.output)throw Error(`No valid response from the AI service.`);let s=o.output;return await this.setGuessedAltText(s),t&&!this.hasAltTextData()&&(this.altTextData={alt:s,decorative:!1}),s}#p(){if(this.#t){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(this.#t).then(e=>this.#d(e,!0)).finally(()=>this.#f());return}if(this.#r){let e=this.#r;this.#r=null,this._uiManager.enableWaiting(!0),this.#n=this._uiManager.imageManager.getFromUrl(e).then(e=>this.#d(e)).finally(()=>this.#f());return}if(this.#i){let e=this.#i;this.#i=null,this._uiManager.enableWaiting(!0),this.#n=this._uiManager.imageManager.getFromFile(e).then(e=>this.#d(e)).finally(()=>this.#f());return}let e=document.createElement(`input`);e.type=`file`,e.accept=Eu.join(`,`);let t=this._uiManager._signal;this.#n=new Promise(n=>{e.addEventListener(`change`,async()=>{if(!e.files||e.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);let t=await this._uiManager.imageManager.getFromFile(e.files[0]);this._reportTelemetry({action:`pdfjs.image.image_selected`,data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),this.#d(t)}n()},{signal:t}),e.addEventListener(`cancel`,()=>{this.remove(),n()},{signal:t})}).finally(()=>this.#f()),e.click()}remove(){this.#t&&(this.#e=null,this._uiManager.imageManager.deleteId(this.#t),this.#o?.remove(),this.#o=null,this.#c&&=(clearTimeout(this.#c),null)),super.remove()}rebuild(){if(!this.parent){this.#t&&this.#p();return}super.rebuild(),this.div!==null&&(this.#t&&this.#o===null&&this.#p(),this.isAttachedToDOM||this.parent.add(this))}onceAdded(e){this._isDraggable=!0,e&&this.div.focus()}isEmpty(){return!(this.#n||this.#e||this.#r||this.#i||this.#t||this.#s)}get toolbarButtons(){return[[`altText`,this.createAltText()]]}get isResizable(){return!0}render(){if(this.div)return this.div;let e,t;return this._isCopy&&(e=this.x,t=this.y),super.render(),this.div.hidden=!0,this.createAltText(),this.#s||(this.#e?this.#m():this.#p()),this._isCopy&&this._moveAfterPaste(e,t),this._uiManager.addShouldRescale(this),this.div}setCanvas(e,t){let{id:n,bitmap:r}=this._uiManager.imageManager.getFromCanvas(e,t);t.remove(),n&&this._uiManager.imageManager.isValidId(n)&&(this.#t=n,r&&(this.#e=r),this.#s=!1,this.#m())}_onResized(){this.onScaleChanging()}onScaleChanging(){this.parent&&(this.#c!==null&&clearTimeout(this.#c),this.#c=setTimeout(()=>{this.#c=null,this.#g()},200))}#m(){let{div:e}=this,{width:t,height:n}=this.#e,[r,i]=this.pageDimensions,a=.75;if(this.width)t=this.width*r,n=this.height*i;else if(t>a*r||n>a*i){let e=Math.min(a*r/t,a*i/n);t*=e,n*=e}this._uiManager.enableWaiting(!1);let o=this.#o=document.createElement(`canvas`);o.setAttribute(`role`,`img`),this.addContainer(o),this.width=t/r,this.height=n/i,this.setDims(),this._initialOptions?.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(e.hidden=!1),this.#g(),this.#u||=(this.parent.addUndoableEditor(this),!0),this._reportTelemetry({action:`inserted_image`}),this.#a&&this.div.setAttribute(`aria-description`,this.#a),this.annotationElementId||this._uiManager.a11yAlert(`pdfjs-editor-stamp-added-alert`)}copyCanvas(e,t,n=!1){e||=224;let{width:r,height:i}=this.#e,a=new Tu,o=this.#e,s=r,c=i,l=null;if(t){if(r>t||i>t){let e=Math.min(t/r,t/i);s=Math.floor(r*e),c=Math.floor(i*e)}l=document.createElement(`canvas`);let e=l.width=Math.ceil(s*a.sx),n=l.height=Math.ceil(c*a.sy);this.#l||(o=this.#h(e,n));let u=l.getContext(`2d`);u.filter=this._uiManager.hcmFilter;let d=`white`,f=`#cfcfd8`;this._uiManager.hcmFilter===`none`?Du.isDarkMode&&(d=`#8f8f9d`,f=`#42414d`):f=`black`;let p=15*a.sx,m=15*a.sy,h=new OffscreenCanvas(p*2,m*2),g=h.getContext(`2d`);g.fillStyle=d,g.fillRect(0,0,p*2,m*2),g.fillStyle=f,g.fillRect(0,0,p,m),g.fillRect(p,m,p,m),u.fillStyle=u.createPattern(h,`repeat`),u.fillRect(0,0,e,n),u.drawImage(o,0,0,o.width,o.height,0,0,e,n)}let u=null;if(n){let t,n;if(a.symmetric&&o.width<e&&o.height<e)t=o.width,n=o.height;else if(o=this.#e,r>e||i>e){let a=Math.min(e/r,e/i);t=Math.floor(r*a),n=Math.floor(i*a),this.#l||(o=this.#h(t,n))}let s=new OffscreenCanvas(t,n).getContext(`2d`,{willReadFrequently:!0});s.drawImage(o,0,0,o.width,o.height,0,0,t,n),u={width:t,height:n,data:s.getImageData(0,0,t,n).data}}return{canvas:l,width:s,height:c,imageData:u}}#h(e,t){let{width:n,height:r}=this.#e,i=n,a=r,o=this.#e;for(;i>2*e||a>2*t;){let n=i,r=a;i>2*e&&(i=Math.ceil(i/2)),a>2*t&&(a=Math.ceil(a/2));let s=new OffscreenCanvas(i,a);s.getContext(`2d`).drawImage(o,0,0,n,r,0,0,i,a),o=s.transferToImageBitmap()}return o}#g(){let[e,t]=this.parentDimensions,{width:n,height:r}=this,i=new Tu,a=Math.ceil(n*e*i.sx),o=Math.ceil(r*t*i.sy),s=this.#o;if(!s||s.width===a&&s.height===o)return;s.width=a,s.height=o;let c=this.#l?this.#e:this.#h(a,o),l=s.getContext(`2d`);l.filter=this._uiManager.hcmFilter,l.drawImage(c,0,0,c.width,c.height,0,0,a,o)}#_(e){if(e){if(this.#l){let e=this._uiManager.imageManager.getSvgUrl(this.#t);if(e)return e}let e=document.createElement(`canvas`);return{width:e.width,height:e.height}=this.#e,e.getContext(`2d`).drawImage(this.#e,0,0),e.toDataURL()}if(this.#l){let[e,t]=this.pageDimensions,n=Math.round(this.width*e*iu.PDF_TO_CSS_UNITS),r=Math.round(this.height*t*iu.PDF_TO_CSS_UNITS),i=new OffscreenCanvas(n,r);return i.getContext(`2d`).drawImage(this.#e,0,0,this.#e.width,this.#e.height,0,0,n,r),i.transferToImageBitmap()}return structuredClone(this.#e)}static async deserialize(e,t,n){let r=null,i=!1;if(e instanceof vm){let{data:{rect:a,rotation:o,id:s,structParent:c,popupRef:l,richText:u,contentsObj:d,creationDate:f,modificationDate:p},container:m,parent:{page:{pageNumber:h}},canvas:g}=e,_,v;g?(delete e.canvas,{id:_,bitmap:v}=n.imageManager.getFromCanvas(m.id,g),g.remove()):(i=!0,e._hasNoCanvas=!0);let y=(await t._structTree.getAriaAttributes(`${Yl}${s}`))?.get(`aria-label`)||``;r=e={annotationType:ul.STAMP,bitmapId:_,bitmap:v,pageIndex:h-1,rect:a.slice(0),rotation:o,annotationElementId:s,id:s,deleted:!1,accessibilityData:{decorative:!1,altText:y},isSvg:!1,structParent:c,popupRef:l,richText:u,comment:d?.str||null,creationDate:f,modificationDate:p}}let a=await super.deserialize(e,t,n),{rect:o,bitmap:s,bitmapUrl:c,bitmapId:l,isSvg:u,accessibilityData:d}=e;i?(n.addMissingCanvas(e.id,a),a.#s=!0):l&&n.imageManager.isValidId(l)?(a.#t=l,s&&(a.#e=s)):a.#r=c,a.#l=u;let[f,p]=a.pageDimensions;return a.width=(o[2]-o[0])/f,a.height=(o[3]-o[1])/p,d&&(a.altTextData=d),a._initialData=r,e.comment&&a.setCommentData(e),a.#u=!!r,a}serialize(e=!1,t=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();let n=Object.assign(super.serialize(e),{bitmapId:this.#t,isSvg:this.#l});if(this.addComment(n),e)return n.bitmapUrl=this.#_(!0),n.accessibilityData=this.serializeAltText(!0),n.isCopy=!0,n;let{decorative:r,altText:i}=this.serializeAltText(!1);if(!r&&i&&(n.accessibilityData={type:`Figure`,alt:i}),this.annotationElementId){let e=this.#v(n);return e.isSame?null:(e.isSameAltText?delete n.accessibilityData:n.accessibilityData.structParent=this._initialData.structParent??-1,n.id=this.annotationElementId,delete n.bitmapId,n)}if(t===null)return n;t.stamps||=new Map;let a=this.#l?(n.rect[2]-n.rect[0])*(n.rect[3]-n.rect[1]):null;if(!t.stamps.has(this.#t))t.stamps.set(this.#t,{area:a,serialized:n}),n.bitmap=this.#_(!1);else if(this.#l){let e=t.stamps.get(this.#t);a>e.area&&(e.area=a,e.serialized.bitmap.close(),e.serialized.bitmap=this.#_(!1))}return n}#v(e){let{pageIndex:t,accessibilityData:{altText:n}}=this._initialData,r=e.pageIndex===t,i=(e.accessibilityData?.alt||``)===n;return{isSame:!this.hasEditedComment&&!this._hasBeenMoved&&!this._hasBeenResized&&r&&i,isSameAltText:i}}renderAnnotationElement(e){return this.deleted?(e.hide(),null):(e.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}},Wm=class e{#e;#t=!1;#n=null;#r=null;#i=null;#a=new Map;#o=!1;#s=!1;#c=!1;#l=null;#u=null;#d=null;#f=null;#p=null;#m=-1;#h;static _initialized=!1;static#g=new Map([Sm,Fm,Um,km,Hm].map(e=>[e._editorType,e]));constructor({uiManager:t,pageIndex:n,div:r,structTreeLayer:i,accessibilityManager:a,annotationLayer:o,drawLayer:s,textLayer:c,viewport:l,l10n:u}){let d=[...e.#g.values()];if(!e._initialized){e._initialized=!0;for(let e of d)e.initialize(u,t)}t.registerEditorTypes(d),this.#h=t,this.pageIndex=n,this.div=r,this.#e=a,this.#n=o,this.viewport=l,this.#d=c,this.drawLayer=s,this._structTree=i,this.#h.addLayer(this)}get isEmpty(){return this.#a.size===0}get isInvisible(){return this.isEmpty&&this.#h.getMode()===ul.NONE}updateToolbar(e){this.#h.updateToolbar(e)}updateMode(t=this.#h.getMode()){switch(this.#S(),t){case ul.NONE:this.div.classList.toggle(`nonEditing`,!0),this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case ul.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case ul.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);let{classList:n}=this.div;if(n.toggle(`nonEditing`,!1),t===ul.POPUP)n.toggle(`commentEditing`,!0);else{n.toggle(`commentEditing`,!1);for(let r of e.#g.values())n.toggle(`${r._type}Editing`,t===r._editorType)}this.div.hidden=!1}hasTextLayer(e){return e===this.#d?.div}setEditingState(e){this.#h.setEditingState(e)}addCommands(e){this.#h.addCommands(e)}cleanUndoStack(e){this.#h.cleanUndoStack(e)}toggleDrawing(e=!1){this.div.classList.toggle(`drawing`,!e)}togglePointerEvents(e=!1){this.div.classList.toggle(`disabled`,!e)}toggleAnnotationLayerPointerEvents(e=!1){this.#n?.togglePointerEvents(e)}get#_(){return this.#a.size===0?this.#h.getEditors(this.pageIndex):this.#a.values()}async enable(){this.#c=!0,this.div.tabIndex=0,this.togglePointerEvents(!0),this.div.classList.toggle(`nonEditing`,!1),this.#p?.abort(),this.#p=null;let e=new Set;for(let t of this.#_)t.enableEditing(),t.show(!0),t.annotationElementId&&(this.#h.removeChangedExistingAnnotation(t),e.add(t.annotationElementId));let t=this.#n;if(t)for(let n of t.getEditableAnnotations()){if(n.hide(),this.#h.isDeletedAnnotationElement(n.data.id)||e.has(n.data.id))continue;let t=await this.deserialize(n);t&&(this.addOrRebuild(t),t.enableEditing())}this.#c=!1,this.#h._eventBus.dispatch(`editorsrendered`,{source:this,pageNumber:this.pageIndex+1})}disable(){if(this.#s=!0,this.div.tabIndex=-1,this.togglePointerEvents(!1),this.div.classList.toggle(`nonEditing`,!0),this.#d&&!this.#p){this.#p=new AbortController;let e=this.#h.combinedSignal(this.#p);this.#d.div.addEventListener(`pointerdown`,e=>{let{clientX:t,clientY:n,timeStamp:r}=e;if(r-this.#m>500){this.#m=r;return}this.#m=-1;let{classList:i}=this.div;i.toggle(`getElements`,!0);let a=document.elementsFromPoint(t,n);if(i.toggle(`getElements`,!1),!this.div.contains(a[0]))return;let o,s=RegExp(`^${ll}[0-9]+$`);for(let e of a)if(s.test(e.id)){o=e.id;break}if(!o)return;let c=this.#a.get(o);c?.annotationElementId===null&&(hu(e),c.dblclick(e))},{signal:e,capture:!0})}let t=this.#n,n=[];if(t){let e=new Map,r=new Map;for(let t of this.#_){if(t.disableEditing(),!t.annotationElementId){n.push(t);continue}if(t.serialize()!==null){e.set(t.annotationElementId,t);continue}else r.set(t.annotationElementId,t);this.getEditableAnnotation(t.annotationElementId)?.show(),t.remove()}for(let n of t.getEditableAnnotations()){let{id:t}=n.data;if(this.#h.isDeletedAnnotationElement(t)){n.updateEdited({deleted:!0});continue}let i=r.get(t);if(i){i.resetAnnotationElement(n),i.show(!1),n.show();continue}i=e.get(t),i&&(this.#h.addChangedExistingAnnotation(i),i.renderAnnotationElement(n)&&i.show(!1)),n.show()}}this.#S(),this.isEmpty&&(this.div.hidden=!0);let{classList:r}=this.div;for(let t of e.#g.values())r.remove(`${t._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),t?.updateFakeAnnotations(n),this.#s=!1}getEditableAnnotation(e){return this.#n?.getEditableAnnotation(e)||null}setActiveEditor(e){this.#h.getActive()!==e&&this.#h.setActiveEditor(e)}enableTextSelection(){if(this.div.tabIndex=-1,this.#d?.div&&!this.#f){this.#f=new AbortController;let e=this.#h.combinedSignal(this.#f);this.#d.div.addEventListener(`pointerdown`,this.#v.bind(this),{signal:e}),this.#d.div.classList.add(`highlighting`)}}disableTextSelection(){this.div.tabIndex=0,this.#d?.div&&this.#f&&(this.#f.abort(),this.#f=null,this.#d.div.classList.remove(`highlighting`))}#v(e){this.#h.unselectAll();let{target:t}=e;if(t===this.#d.div||(t.getAttribute(`role`)===`img`||t.classList.contains(`endOfContent`)||t.classList.contains(`textLayerImagePlaceholder`))&&this.#d.div.contains(t)){let{isMac:t}=Ul.platform;if(e.button!==0||e.ctrlKey&&t)return;this.#h.showAllEditors(`highlight`,!0,!0),this.#d.div.classList.add(`free`),this.toggleDrawing(),km.startHighlighting(this,this.#h.direction===`ltr`,{target:this.#d.div,x:e.x,y:e.y}),this.#d.div.addEventListener(`pointerup`,()=>{this.#d.div.classList.remove(`free`),this.toggleDrawing(!0)},{once:!0,signal:this.#h._signal}),e.preventDefault()}}enableClick(){if(this.#r)return;this.#r=new AbortController;let e=this.#h.combinedSignal(this.#r);this.div.addEventListener(`pointerdown`,this.pointerdown.bind(this),{signal:e});let t=this.pointerup.bind(this);this.div.addEventListener(`pointerup`,t,{signal:e}),this.div.addEventListener(`pointercancel`,t,{signal:e})}disableClick(){this.#r?.abort(),this.#r=null}attach(e){this.#a.set(e.id,e);let{annotationElementId:t}=e;t&&this.#h.isDeletedAnnotationElement(t)&&this.#h.removeDeletedAnnotationElement(e)}detach(e){this.#a.delete(e.id),this.#e?.removePointerInTextLayer(e.contentDiv),!this.#s&&e.annotationElementId&&this.#h.addDeletedAnnotationElement(e)}remove(e){this.detach(e),this.#h.removeEditor(e),e.div.remove(),e.isAttachedToDOM=!1}changeParent(e){e.parent!==this&&(e.parent&&e.annotationElementId&&(this.#h.addDeletedAnnotationElement(e),Zu.deleteAnnotationElement(e),e.annotationElementId=null),this.attach(e),e.parent?.detach(e),e.setParent(this),e.div&&e.isAttachedToDOM&&(e.div.remove(),this.div.append(e.div)))}add(e){if(!(e.parent===this&&e.isAttachedToDOM)){if(this.changeParent(e),this.#h.addEditor(e),this.attach(e),!e.isAttachedToDOM){let t=e.render();this.div.append(t),e.isAttachedToDOM=!0}e.fixAndSetPosition(),e.onceAdded(!this.#c),this.#h.addToAnnotationStorage(e),e._reportTelemetry(e.telemetryInitialData)}}moveEditorInDOM(e){if(!e.isAttachedToDOM)return;let{activeElement:t}=document;e.div.contains(t)&&!this.#i&&(e._focusEventsAllowed=!1,this.#i=setTimeout(()=>{this.#i=null,e.div.contains(document.activeElement)?e._focusEventsAllowed=!0:(e.div.addEventListener(`focusin`,()=>{e._focusEventsAllowed=!0},{once:!0,signal:this.#h._signal}),t.focus())},0)),e._structTreeParentId=this.#e?.moveElementInDOM(this.div,e.div,e.contentDiv,!0)}addOrRebuild(e){e.needsToBeRebuilt()?(e.parent||=this,e.rebuild(),e.show()):this.add(e)}addUndoableEditor(e){this.addCommands({cmd:()=>e._uiManager.rebuild(e),undo:()=>{e.remove()},mustExec:!1})}getEditorByUID(e){for(let t of this.#a.values())if(t.uid===e)return t;return null}get#y(){return e.#g.get(this.#h.getMode())}combinedSignal(e){return this.#h.combinedSignal(e)}#b(e){let t=this.#y;return t?new t.prototype.constructor(e):null}canCreateNewEmptyEditor(){return this.#y?.canCreateNewEmptyEditor()}async pasteEditor(e,t){this.updateToolbar(e),await this.#h.updateMode(e.mode);let{offsetX:n,offsetY:r}=this.#x(),i=this.#h.getId(),a=this.#b({parent:this,id:i,x:n,y:r,uiManager:this.#h,isCentered:!0,...t});a&&this.add(a)}async deserialize(t){return await e.#g.get(t.annotationType??t.annotationEditorType)?.deserialize(t,this,this.#h)||null}createAndAddNewEditor(e,t,n={}){let r=this.#h.getId(),i=this.#b({parent:this,id:r,x:e.offsetX,y:e.offsetY,uiManager:this.#h,isCentered:t,...n});return i&&this.add(i),i}get boundingClientRect(){return this.div.getBoundingClientRect()}#x(){let{x:e,y:t,width:n,height:r}=this.boundingClientRect,i=Math.max(0,e),a=Math.max(0,t),o=Math.min(window.innerWidth,e+n),s=Math.min(window.innerHeight,t+r),c=(i+o)/2-e,l=(a+s)/2-t,[u,d]=this.viewport.rotation%180==0?[c,l]:[l,c];return{offsetX:u,offsetY:d}}addNewEditor(e={}){this.createAndAddNewEditor(this.#x(),!0,e)}setSelected(e){this.#h.setSelected(e)}toggleSelected(e){this.#h.toggleSelected(e)}unselect(e){this.#h.unselect(e)}pointerup(e){let{isMac:t}=Ul.platform;if(e.button!==0||e.ctrlKey&&t||e.target!==this.div||!this.#o||(this.#o=!1,this.#y?.isDrawer&&this.#y.supportMultipleDrawings))return;if(!this.#t){this.#t=!0;return}let n=this.#h.getMode();if(n===ul.STAMP||n===ul.POPUP||n===ul.SIGNATURE){this.#h.unselectAll();return}this.createAndAddNewEditor(e,!1)}pointerdown(e){if(this.#h.getMode()===ul.HIGHLIGHT&&this.enableTextSelection(),this.#o){this.#o=!1;return}let{isMac:t}=Ul.platform;if(e.button!==0||e.ctrlKey&&t||e.target!==this.div)return;if(this.#o=!0,this.#y?.isDrawer){this.startDrawingSession(e);return}let n=this.#h.getActive();this.#t=!n||n.isEmpty()}startDrawingSession(e){if(this.div.focus({preventScroll:!0}),this.#l){this.#y.startDrawing(this,this.#h,!1,e);return}this.#h.setCurrentDrawingSession(this),this.#l=new AbortController;let t=this.#h.combinedSignal(this.#l);this.div.addEventListener(`blur`,({relatedTarget:e})=>{e&&!this.div.contains(e)&&(this.#u=null,this.commitOrRemove())},{signal:t}),this.#y.startDrawing(this,this.#h,!1,e)}pause(e){if(e){let{activeElement:e}=document;this.div.contains(e)&&(this.#u=e);return}this.#u&&setTimeout(()=>{this.#u?.focus(),this.#u=null},0)}endDrawingSession(e=!1){return this.#l?(this.#h.setCurrentDrawingSession(null),this.#l.abort(),this.#l=null,this.#u=null,this.#y.endDrawing(e)):null}findNewParent(e,t,n){let r=this.#h.findParent(t,n);return r===null||r===this?!1:(r.changeParent(e),!0)}commitOrRemove(){return this.#l?(this.endDrawingSession(),!0):!1}onScaleChanging(){this.#l&&this.#y.onScaleChangingWhenDrawing(this)}destroy(){this.commitOrRemove(),this.#h.getActive()?.parent===this&&(this.#h.commitOrRemove(),this.#h.setActiveEditor(null)),this.#i&&=(clearTimeout(this.#i),null);for(let e of this.#a.values())this.#e?.removePointerInTextLayer(e.contentDiv),e.setParent(null),e.isAttachedToDOM=!1,e.div.remove();this.div=null,this.#a.clear(),this.#h.removeLayer(this)}#S(){for(let e of this.#a.values())e.isEmpty()&&e.remove()}async render({viewport:e}){this.viewport=e,wu(this.div,e);for(let e of this.#h.getEditors(this.pageIndex))this.add(e),e.rebuild();await this.#h.findClonesForPage(this),this.div.hidden=this.isEmpty,this.updateMode()}update({viewport:e}){this.#h.commitOrRemove(),this.#S();let t=this.viewport.rotation,n=e.rotation;if(this.viewport=e,wu(this.div,{rotation:n}),t!==n)for(let e of this.#a.values())e.rotate(n)}get pageDimensions(){let{pageWidth:e,pageHeight:t}=this.viewport.rawDims;return[e,t]}get scale(){return this.#h.viewParameters.realScale}},Gm=class e{#e=null;#t=new Map;#n=new Map;static#r=0;setParent(e){if(!this.#e){this.#e=e;return}if(this.#e!==e){if(this.#t.size>0)for(let t of this.#t.values())t.remove(),e.append(t);this.#e=e}}static get _svgFactory(){return Ml(this,`_svgFactory`,new Hp)}static#i(e,[t,n,r,i]){let{style:a}=e;a.top=`${100*n}%`,a.left=`${100*t}%`,a.width=`${100*r}%`,a.height=`${100*i}%`}#a(){let t=e._svgFactory.create(1,1,!0);return this.#e.append(t),t.setAttribute(`aria-hidden`,!0),t}#o(t,n){let r=e._svgFactory.createElement(`clipPath`);t.append(r);let i=`clip_${n}`;r.setAttribute(`id`,i),r.setAttribute(`clipPathUnits`,`objectBoundingBox`);let a=e._svgFactory.createElement(`use`);return r.append(a),a.setAttribute(`href`,`#${n}`),a.classList.add(`clip`),i}#s(e,t){for(let[n,r]of Object.entries(t))r===null?e.removeAttribute(n):e.setAttribute(n,r)}draw(t,n=!1,r=!1){let i=e.#r++,a=this.#a(),o=e._svgFactory.createElement(`defs`);a.append(o);let s=e._svgFactory.createElement(`path`);o.append(s);let c=`path_${i}`;s.setAttribute(`id`,c),s.setAttribute(`vector-effect`,`non-scaling-stroke`),n&&this.#n.set(i,s);let l=r?this.#o(o,c):null,u=e._svgFactory.createElement(`use`);return a.append(u),u.setAttribute(`href`,`#${c}`),this.updateProperties(a,t),this.#t.set(i,a),{id:i,clipPathId:`url(#${l})`}}drawOutline(t,n){let r=e.#r++,i=this.#a(),a=e._svgFactory.createElement(`defs`);i.append(a);let o=e._svgFactory.createElement(`path`);a.append(o);let s=`path_${r}`;o.setAttribute(`id`,s),o.setAttribute(`vector-effect`,`non-scaling-stroke`);let c;if(n){let t=e._svgFactory.createElement(`mask`);a.append(t),c=`mask_${r}`,t.setAttribute(`id`,c),t.setAttribute(`maskUnits`,`objectBoundingBox`);let n=e._svgFactory.createElement(`rect`);t.append(n),n.setAttribute(`width`,`1`),n.setAttribute(`height`,`1`),n.setAttribute(`fill`,`white`);let i=e._svgFactory.createElement(`use`);t.append(i),i.setAttribute(`href`,`#${s}`),i.setAttribute(`stroke`,`none`),i.setAttribute(`fill`,`black`),i.setAttribute(`fill-rule`,`nonzero`),i.classList.add(`mask`)}let l=e._svgFactory.createElement(`use`);i.append(l),l.setAttribute(`href`,`#${s}`),c&&l.setAttribute(`mask`,`url(#${c})`);let u=l.cloneNode();return i.append(u),l.classList.add(`mainOutline`),u.classList.add(`secondaryOutline`),this.updateProperties(i,t),this.#t.set(r,i),r}finalizeDraw(e,t){this.#n.delete(e),this.updateProperties(e,t)}updateProperties(t,n){if(!n)return;let{root:r,bbox:i,rootClass:a,path:o}=n,s=typeof t==`number`?this.#t.get(t):t;if(s){if(r&&this.#s(s,r),i&&e.#i(s,i),a){let{classList:e}=s;for(let[t,n]of Object.entries(a))e.toggle(t,n)}if(o){let e=s.firstElementChild.firstElementChild;this.#s(e,o)}}}updateParent(e,t){if(t===this)return;let n=this.#t.get(e);n&&(t.#e.append(n),this.#t.delete(e),t.#t.set(e,n))}remove(e){this.#n.delete(e),this.#e!==null&&(this.#t.get(e).remove(),this.#t.delete(e))}destroy(){this.#e=null;for(let e of this.#t.values())e.remove();this.#t.clear(),this.#n.clear()}};function Km(e){return`${(e*100).toFixed(2)}%`}var qm=class e{#e=[];#t=new Map;#n=null;#r=0;#i=0;#a=0;static#o=null;constructor(e,t,n,r){this.#r=e,this.#e=t,this.#i=n.rawDims.pageWidth,this.#a=n.rawDims.pageHeight,this.#n=r}render(){let t=document.createElement(`div`);t.className=`textLayerImages`;for(let e=0;e<this.#e.length;e+=6){let n=this.#s(this.#e.subarray(e,e+6));n&&t.append(n)}return t.addEventListener(`contextmenu`,t=>{if(!(t.target instanceof HTMLCanvasElement))return;let n=t.target,r=this.#t.get(n);if(!r)return;let i=e.#o?.deref();if(i===n)return;i&&(i.width=0,i.height=0),e.#o=new WeakRef(n);let{inverseTransform:a,x1:o,y1:s,width:c,height:l}=r,u=this.#n(),d=Math.ceil(o*u.width),f=Math.ceil(s*u.height),p=Math.floor((o+c/this.#i)*u.width),m=Math.floor((s+l/this.#a)*u.height);n.width=p-d,n.height=m-f;let h=n.getContext(`2d`);h.setTransform(...a),h.translate(-d,-f),h.drawImage(u,0,0)}),t}#s([e,t,n,r,i,a]){let o=Math.hypot((i-e)*this.#i,(a-t)*this.#a),s=Math.hypot((n-e)*this.#i,(r-t)*this.#a);if(o<this.#r||s<this.#r)return null;let c=[(i-e)*this.#i/o,(a-t)*this.#a/o,(n-e)*this.#i/s,(r-t)*this.#a/s,0,0],l=Q.inverseTransform(c),u=document.createElement(`canvas`);return u.className=`textLayerImagePlaceholder`,u.width=0,u.height=0,Object.assign(u.style,{opacity:0,position:`absolute`,left:Km(e),top:Km(t),width:Km(o/this.#i),height:Km(s/this.#a),transformOrigin:`0% 0%`,transform:`matrix(${c.join(`,`)})`}),this.#t.set(u,{inverseTransform:l,width:o,height:s,x1:e,y1:t}),u}};globalThis._pdfjsTestingUtils={HighlightOutliner:Tm},globalThis.pdfjsLib={AbortException:zl,AnnotationEditorLayer:Wm,AnnotationEditorParamsType:dl,AnnotationEditorType:ul,AnnotationEditorUIManager:qu,AnnotationLayer:bm,AnnotationMode:cl,AnnotationType:hl,applyOpacity:ku,build:Fp,ColorPicker:Ip,createValidAbsoluteUrl:kl,CSSConstants:Ou,DOMSVGFactory:Hp,DrawLayer:Gm,FeatureTest:Ul,fetchData:au,findContrastColor:Fu,getDocument:Tp,getFilenameFromUrl:uu,getPdfFilenameFromUrl:du,getRGB:bu,getRGBA:yu,getUuid:Jl,getXfaPageViewport:vu,GlobalWorkerOptions:fp,ImageKind:ml,InvalidPDFException:Il,isDataScheme:cu,isPdfFile:lu,isValidExplicitDest:Nd,makeArr:Zl,makeMap:Ql,makeObj:$l,MathClamp:eu,noContextMenu:mu,normalizeUnicode:ql,OPS:vl,OutputScale:Tu,PasswordResponses:bl,PDFDataRangeTransport:Dp,PDFDateString:_u,PDFWorker:Ap,PermissionFlag:fl,PixelsPerInch:iu,RenderingCancelledException:su,renderRichText:Iu,ResponseException:Ll,setLayerDimensions:wu,shadow:Ml,SignatureExtractor:zm,stopEvent:hu,SupportedImageMimeTypes:Eu,TextLayer:Cp,TextLayerImages:qm,TouchManager:Xu,updateUrlHash:Al,Util:Q,VerbosityLevel:_l,version:Pp,XfaLayer:nu},fp.workerSrc=new URL(`data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KLyoqCiAqIHBkZmpzVmVyc2lvbiA9IDUuNy4yODQKICogcGRmanNCdWlsZCA9IDdlNWIzNmMyZAogKi9jb25zdCBlPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKSx0PVsxLzAsMS8wLC0xLzAsLTEvMF0sYT1uZXcgRmxvYXQzMkFycmF5KHQpLG49Wy4wMDEsMCwwLC4wMDEsMCwwXSxzPTEuMzUscj0uMzUsaT0uMjU5MjU5MjU5MjU5MjU5MjQsbz0xLGw9MixmPTQsYz04LGg9MTYsdT02NCxtPTEyOCxwPTI1NixkPSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIixnPTMsYj05LHc9MTMsaj0xNSxrPTEwMSx5PXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9LHE9MSx2PTIsUz0zLHg9MCxDPTQsRj0xLFQ9MixPPTMsUj17VEVYVDoxLExJTks6MixGUkVFVEVYVDozLExJTkU6NCxTUVVBUkU6NSxDSVJDTEU6NixQT0xZR09OOjcsUE9MWUxJTkU6OCxISUdITElHSFQ6OSxVTkRFUkxJTkU6MTAsU1FVSUdHTFk6MTEsU1RSSUtFT1VUOjEyLFNUQU1QOjEzLENBUkVUOjE0LElOSzoxNSxQT1BVUDoxNixGSUxFQVRUQUNITUVOVDoxNyxTT1VORDoxOCxNT1ZJRToxOSxXSURHRVQ6MjAsU0NSRUVOOjIxLFBSSU5URVJNQVJLOjIyLFRSQVBORVQ6MjMsV0FURVJNQVJLOjI0LFRIUkVFRDoyNSxSRURBQ1Q6MjZ9LEg9Ikdyb3VwIixEPSJSIixNPTEsTj0yLEU9NCxfPTE2LHo9MzIsTD0xMjgsVT01MTIsWD0xLFc9MixLPTQwOTYsRz04MTkyLFY9MzI3NjgsJD02NTUzNixZPTEzMTA3MixKPTEwNDg1NzYsUT0yMDk3MTUyLFo9ODM4ODYwOCxlZT0xNjc3NzIxNix0ZT0xLGFlPTIsbmU9MyxzZT00LHJlPTUsaWU9e0U6Ik1vdXNlIEVudGVyIixYOiJNb3VzZSBFeGl0IixEOiJNb3VzZSBEb3duIixVOiJNb3VzZSBVcCIsRm86IkZvY3VzIixCbDoiQmx1ciIsUE86IlBhZ2VPcGVuIixQQzoiUGFnZUNsb3NlIixQVjoiUGFnZVZpc2libGUiLFBJOiJQYWdlSW52aXNpYmxlIixLOiJLZXlzdHJva2UiLEY6IkZvcm1hdCIsVjoiVmFsaWRhdGUiLEM6IkNhbGN1bGF0ZSJ9LG9lPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifSxsZT17TzoiUGFnZU9wZW4iLEM6IlBhZ2VDbG9zZSJ9LGZlPTEsY2U9NSxoZT0xLHVlPTIsbWU9MyxwZT00LGRlPTUsZ2U9NixiZT03LHdlPTgsamU9OSxrZT0xMCx5ZT0xMSxxZT0xMix2ZT0xMyxTZT0xNCxBZT0xNSx4ZT0xNixDZT0xNyxJZT0xOCxGZT0xOSxUZT0yMCxPZT0yMSxSZT0yMixIZT0yMyxCZT0yNCxEZT0yNSxNZT0yNixOZT0yNyxQZT0yOCxFZT0yOSxfZT0zMCx6ZT0zMSxMZT0zMixVZT0zMyxYZT0zNCxXZT0zNSxLZT0zNixHZT0zNyxWZT0zOCwkZT0zOSxZZT00MCxKZT00MSxRZT00MixaZT00MyxldD00NCx0dD00NSxhdD00NixudD00NyxzdD00OCxydD00OSxpdD01MCxvdD01MSxsdD01MixmdD01MyxjdD01NCxodD01NSx1dD01NixtdD01NyxwdD01OCxkdD01OSxndD02MCxidD02MSx3dD02MixqdD02MyxrdD02NCx5dD02NSxxdD02Nix2dD02NyxTdD02OCxBdD02OSx4dD03MCxDdD03MSxJdD03MixGdD03MyxUdD03NCxPdD03NSxSdD03NixIdD03NyxCdD04MCxEdD04MSxNdD04MyxOdD04NCxQdD04NSxFdD04NixfdD04Nyx6dD04OCxMdD04OSxVdD05MCxYdD05MSxXdD05MixLdD05MyxHdD05NCxWdD0wLCR0PTEsWXQ9MixKdD0zLFF0PTQsWnQ9MSxlYT0yO2xldCB0YT1mZTtmdW5jdGlvbiBnZXRWZXJib3NpdHlMZXZlbCgpe3JldHVybiB0YX1mdW5jdGlvbiBpbmZvKGUpe3RhPj1jZSYmY29uc29sZS5pbmZvKGBJbmZvOiAke2V9YCl9ZnVuY3Rpb24gd2FybihlKXt0YT49ZmUmJmNvbnNvbGUud2FybihgV2FybmluZzogJHtlfWApfWZ1bmN0aW9uIHVucmVhY2hhYmxlKGUpe3Rocm93IG5ldyBFcnJvcihlKX1mdW5jdGlvbiBhc3NlcnQoZSx0KXtlfHx1bnJlYWNoYWJsZSh0KX1mdW5jdGlvbiBjcmVhdGVWYWxpZEFic29sdXRlVXJsKGUsdD1udWxsLGE9bnVsbCl7aWYoIWUpcmV0dXJuIG51bGw7aWYoYSYmInN0cmluZyI9PXR5cGVvZiBlKXtpZihhLmFkZERlZmF1bHRQcm90b2NvbCYmZS5zdGFydHNXaXRoKCJ3d3cuIikpe2NvbnN0IHQ9ZS5tYXRjaCgvXC4vZyk7dD8ubGVuZ3RoPj0yJiYoZT1gaHR0cDovLyR7ZX1gKX1pZihhLnRyeUNvbnZlcnRFbmNvZGluZyl0cnl7ZT1zdHJpbmdUb1VURjhTdHJpbmcoZSl9Y2F0Y2h7fX1jb25zdCBuPXQ/VVJMLnBhcnNlKGUsdCk6VVJMLnBhcnNlKGUpO3JldHVybiBmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe3N3aXRjaChlPy5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShuKT9uOm51bGx9ZnVuY3Rpb24gc2hhZG93KGUsdCxhLG49ITEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmEsZW51bWVyYWJsZTohbixjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITF9KTtyZXR1cm4gYX1jb25zdCBhYT1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24oZSx0KXt0aGlzLm1lc3NhZ2U9ZTt0aGlzLm5hbWU9dH1CYXNlRXhjZXB0aW9uLnByb3RvdHlwZT1uZXcgRXJyb3I7QmFzZUV4Y2VwdGlvbi5jb25zdHJ1Y3Rvcj1CYXNlRXhjZXB0aW9uO3JldHVybiBCYXNlRXhjZXB0aW9ufSgpO2NsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgYWF7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBhYXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX1jbGFzcyBJbnZhbGlkUERGRXhjZXB0aW9uIGV4dGVuZHMgYWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX1jbGFzcyBSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIGFhe2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlLCJSZXNwb25zZUV4Y2VwdGlvbiIpO3RoaXMuc3RhdHVzPXQ7dGhpcy5taXNzaW5nPWF9fWNsYXNzIEZvcm1hdEVycm9yIGV4dGVuZHMgYWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRm9ybWF0RXJyb3IiKX19Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBhYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBieXRlc1RvU3RyaW5nKGUpeyJvYmplY3QiPT10eXBlb2YgZSYmdm9pZCAwIT09ZT8ubGVuZ3RofHx1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYnl0ZXNUb1N0cmluZyIpO2NvbnN0IHQ9ZS5sZW5ndGgsYT04MTkyO2lmKHQ8YSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUpO2NvbnN0IG49W107Zm9yKGxldCBzPTA7czx0O3MrPWEpe2NvbnN0IHI9TWF0aC5taW4ocythLHQpLGk9ZS5zdWJhcnJheShzLHIpO24ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsaSkpfXJldHVybiBuLmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvQnl0ZXMoZSl7InN0cmluZyIhPXR5cGVvZiBlJiZ1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3Igc3RyaW5nVG9CeXRlcyIpO2NvbnN0IHQ9ZS5sZW5ndGgsYT1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IG49MDtuPHQ7KytuKWFbbl09MjU1JmUuY2hhckNvZGVBdChuKTtyZXR1cm4gYX1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzKX1zdGF0aWMgZ2V0IGlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0ltYWdlRGVjb2RlclN1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBJbWFnZURlY29kZXIpfXN0YXRpYyBnZXQgaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRmxvYXQxNkFycmF5U3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIEZsb2F0MTZBcnJheSl9c3RhdGljIGdldCBpc1Nhbml0aXplclN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNTYW5pdGl6ZXJTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgU2FuaXRpemVyKX1zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7Y29uc3R7cGxhdGZvcm06ZSx1c2VyQWdlbnQ6dH09bmF2aWdhdG9yO3JldHVybiBzaGFkb3codGhpcywicGxhdGZvcm0iLHtpc0FuZHJvaWQ6dC5pbmNsdWRlcygiQW5kcm9pZCIpLGlzTGludXg6ZS5pbmNsdWRlcygiTGludXgiKSxpc01hYzplLmluY2x1ZGVzKCJNYWMiKSxpc1dpbmRvd3M6ZS5pbmNsdWRlcygiV2luIiksaXNGaXJlZm94OnQuaW5jbHVkZXMoIkZpcmVmb3giKX0pfXN0YXRpYyBnZXQgaXNDU1NSb3VuZFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNDU1NSb3VuZFN1cHBvcnRlZCIsZ2xvYmFsVGhpcy5DU1M/LnN1cHBvcnRzPy4oIndpZHRoOiByb3VuZCgxLjVweCwgMXB4KSIpKX1zdGF0aWMgZ2V0IGlzQWxwaGFDb2xvcklucHV0U3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0FscGhhQ29sb3JJbnB1dFN1cHBvcnRlZCIsKCgpPT57aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm4hMTtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7ZS50eXBlPSJjb2xvciI7ZS5zZXRBdHRyaWJ1dGUoImFscGhhIiwiIik7ZS52YWx1ZT0iI2ZmMDAwMDgwIjtyZXR1cm4iI2ZmMDAwMCIhPT1lLnZhbHVlfSkoKSl9fWNsYXNzIFV0aWx7c3RhdGljIGdldCBoZXhOdW1zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoZXhOdW1zIixBcnJheS5mcm9tKEFycmF5KDI1Nikua2V5cygpLGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkpfXN0YXRpYyBtYWtlSGV4Q29sb3IoZSx0LGEpe3JldHVybmAjJHt0aGlzLmhleE51bXNbZV19JHt0aGlzLmhleE51bXNbdF19JHt0aGlzLmhleE51bXNbYV19YH1zdGF0aWMgZG9tTWF0cml4VG9UcmFuc2Zvcm0oZSl7cmV0dXJuW2UuYSxlLmIsZS5jLGUuZCxlLmUsZS5mXX1zdGF0aWMgc2NhbGVNaW5NYXgoZSx0KXtsZXQgYTtpZihlWzBdKXtpZihlWzBdPDApe2E9dFswXTt0WzBdPXRbMl07dFsyXT1hfXRbMF0qPWVbMF07dFsyXSo9ZVswXTtpZihlWzNdPDApe2E9dFsxXTt0WzFdPXRbM107dFszXT1hfXRbMV0qPWVbM107dFszXSo9ZVszXX1lbHNle2E9dFswXTt0WzBdPXRbMV07dFsxXT1hO2E9dFsyXTt0WzJdPXRbM107dFszXT1hO2lmKGVbMV08MCl7YT10WzFdO3RbMV09dFszXTt0WzNdPWF9dFsxXSo9ZVsxXTt0WzNdKj1lWzFdO2lmKGVbMl08MCl7YT10WzBdO3RbMF09dFsyXTt0WzJdPWF9dFswXSo9ZVsyXTt0WzJdKj1lWzJdfXRbMF0rPWVbNF07dFsxXSs9ZVs1XTt0WzJdKz1lWzRdO3RbM10rPWVbNV19c3RhdGljIHRyYW5zZm9ybShlLHQpe3JldHVybltlWzBdKnRbMF0rZVsyXSp0WzFdLGVbMV0qdFswXStlWzNdKnRbMV0sZVswXSp0WzJdK2VbMl0qdFszXSxlWzFdKnRbMl0rZVszXSp0WzNdLGVbMF0qdFs0XStlWzJdKnRbNV0rZVs0XSxlWzFdKnRbNF0rZVszXSp0WzVdK2VbNV1dfXN0YXRpYyBtdWx0aXBseUJ5RE9NTWF0cml4KGUsdCl7cmV0dXJuW2VbMF0qdC5hK2VbMl0qdC5iLGVbMV0qdC5hK2VbM10qdC5iLGVbMF0qdC5jK2VbMl0qdC5kLGVbMV0qdC5jK2VbM10qdC5kLGVbMF0qdC5lK2VbMl0qdC5mK2VbNF0sZVsxXSp0LmUrZVszXSp0LmYrZVs1XV19c3RhdGljIGFwcGx5VHJhbnNmb3JtKGUsdCxhPTApe2NvbnN0IG49ZVthXSxzPWVbYSsxXTtlW2FdPW4qdFswXStzKnRbMl0rdFs0XTtlW2ErMV09bip0WzFdK3MqdFszXSt0WzVdfXN0YXRpYyBhcHBseVRyYW5zZm9ybVRvQmV6aWVyKGUsdCxhPTApe2NvbnN0IG49dFswXSxzPXRbMV0scj10WzJdLGk9dFszXSxvPXRbNF0sbD10WzVdO2ZvcihsZXQgdD0wO3Q8Njt0Kz0yKXtjb25zdCBmPWVbYSt0XSxjPWVbYSt0KzFdO2VbYSt0XT1mKm4rYypyK287ZVthK3QrMV09ZipzK2MqaStsfX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKGUsdCl7Y29uc3QgYT1lWzBdLG49ZVsxXSxzPXRbMF0qdFszXS10WzFdKnRbMl07ZVswXT0oYSp0WzNdLW4qdFsyXSt0WzJdKnRbNV0tdFs0XSp0WzNdKS9zO2VbMV09KC1hKnRbMV0rbip0WzBdK3RbNF0qdFsxXS10WzVdKnRbMF0pL3N9c3RhdGljIGF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCxhKXtjb25zdCBuPXRbMF0scz10WzFdLHI9dFsyXSxpPXRbM10sbz10WzRdLGw9dFs1XSxmPWVbMF0sYz1lWzFdLGg9ZVsyXSx1PWVbM107bGV0IG09bipmK28scD1tLGQ9bipoK28sZz1kLGI9aSpjK2wsdz1iLGo9aSp1K2wsaz1qO2lmKDAhPT1zfHwwIT09cil7Y29uc3QgZT1zKmYsdD1zKmgsYT1yKmMsbj1yKnU7bSs9YTtnKz1hO2QrPW47cCs9bjtiKz1lO2srPWU7ais9dDt3Kz10fWFbMF09TWF0aC5taW4oYVswXSxtLGQscCxnKTthWzFdPU1hdGgubWluKGFbMV0sYixqLHcsayk7YVsyXT1NYXRoLm1heChhWzJdLG0sZCxwLGcpO2FbM109TWF0aC5tYXgoYVszXSxiLGosdyxrKX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybShlKXtjb25zdCB0PWVbMF0qZVszXS1lWzFdKmVbMl07cmV0dXJuW2VbM10vdCwtZVsxXS90LC1lWzJdL3QsZVswXS90LChlWzJdKmVbNV0tZVs0XSplWzNdKS90LChlWzRdKmVbMV0tZVs1XSplWzBdKS90XX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZSx0KXtjb25zdCBhPWVbMF0sbj1lWzFdLHM9ZVsyXSxyPWVbM10saT1hKioyK24qKjIsbz1hKnMrbipyLGw9cyoqMityKioyLGY9KGkrbCkvMixjPU1hdGguc3FydChmKioyLShpKmwtbyoqMikpO3RbMF09TWF0aC5zcXJ0KGYrY3x8MSk7dFsxXT1NYXRoLnNxcnQoZi1jfHwxKX1zdGF0aWMgbm9ybWFsaXplUmVjdChlKXtjb25zdCB0PWUuc2xpY2UoMCk7aWYoZVswXT5lWzJdKXt0WzBdPWVbMl07dFsyXT1lWzBdfWlmKGVbMV0+ZVszXSl7dFsxXT1lWzNdO3RbM109ZVsxXX1yZXR1cm4gdH1zdGF0aWMgaW50ZXJzZWN0KGUsdCl7Y29uc3QgYT1NYXRoLm1heChNYXRoLm1pbihlWzBdLGVbMl0pLE1hdGgubWluKHRbMF0sdFsyXSkpLG49TWF0aC5taW4oTWF0aC5tYXgoZVswXSxlWzJdKSxNYXRoLm1heCh0WzBdLHRbMl0pKTtpZihhPm4pcmV0dXJuIG51bGw7Y29uc3Qgcz1NYXRoLm1heChNYXRoLm1pbihlWzFdLGVbM10pLE1hdGgubWluKHRbMV0sdFszXSkpLHI9TWF0aC5taW4oTWF0aC5tYXgoZVsxXSxlWzNdKSxNYXRoLm1heCh0WzFdLHRbM10pKTtyZXR1cm4gcz5yP251bGw6W2EscyxuLHJdfXN0YXRpYyBwb2ludEJvdW5kaW5nQm94KGUsdCxhKXthWzBdPU1hdGgubWluKGFbMF0sZSk7YVsxXT1NYXRoLm1pbihhWzFdLHQpO2FbMl09TWF0aC5tYXgoYVsyXSxlKTthWzNdPU1hdGgubWF4KGFbM10sdCl9c3RhdGljIHJlY3RCb3VuZGluZ0JveChlLHQsYSxuLHMpe3NbMF09TWF0aC5taW4oc1swXSxlLGEpO3NbMV09TWF0aC5taW4oc1sxXSx0LG4pO3NbMl09TWF0aC5tYXgoc1syXSxlLGEpO3NbM109TWF0aC5tYXgoc1szXSx0LG4pfXN0YXRpYyNlKGUsdCxhLG4scyxyLGksbyxsLGYpe2lmKGw8PTB8fGw+PTEpcmV0dXJuO2NvbnN0IGM9MS1sLGg9bCpsLHU9aCpsLG09YyooYyooYyplKzMqbCp0KSszKmgqYSkrdSpuLHA9YyooYyooYypzKzMqbCpyKSszKmgqaSkrdSpvO2ZbMF09TWF0aC5taW4oZlswXSxtKTtmWzFdPU1hdGgubWluKGZbMV0scCk7ZlsyXT1NYXRoLm1heChmWzJdLG0pO2ZbM109TWF0aC5tYXgoZlszXSxwKX1zdGF0aWMjdChlLHQsYSxuLHMscixpLG8sbCxmLGMsaCl7aWYoTWF0aC5hYnMobCk8MWUtMTIpe01hdGguYWJzKGYpPj0xZS0xMiYmdGhpcy4jZShlLHQsYSxuLHMscixpLG8sLWMvZixoKTtyZXR1cm59Y29uc3QgdT1mKioyLTQqYypsO2lmKHU8MClyZXR1cm47Y29uc3QgbT1NYXRoLnNxcnQodSkscD0yKmw7dGhpcy4jZShlLHQsYSxuLHMscixpLG8sKC1mK20pL3AsaCk7dGhpcy4jZShlLHQsYSxuLHMscixpLG8sKC1mLW0pL3AsaCl9c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxhLG4scyxyLGksbyxsKXtsWzBdPU1hdGgubWluKGxbMF0sZSxpKTtsWzFdPU1hdGgubWluKGxbMV0sdCxvKTtsWzJdPU1hdGgubWF4KGxbMl0sZSxpKTtsWzNdPU1hdGgubWF4KGxbM10sdCxvKTt0aGlzLiN0KGUsYSxzLGksdCxuLHIsbywzKigzKihhLXMpLWUraSksNiooZS0yKmErcyksMyooYS1lKSxsKTt0aGlzLiN0KGUsYSxzLGksdCxuLHIsbywzKigzKihuLXIpLXQrbyksNioodC0yKm4rciksMyoobi10KSxsKX19Y29uc3QgbmE9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcyOCw3MTEsNzEwLDcyOSw3MzMsNzMxLDczMCw3MzIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODIyNiw4MjI0LDgyMjUsODIzMCw4MjEyLDgyMTEsNDAyLDgyNjAsODI0OSw4MjUwLDg3MjIsODI0MCw4MjIyLDgyMjAsODIyMSw4MjE2LDgyMTcsODIxOCw4NDgyLDY0MjU3LDY0MjU4LDMyMSwzMzgsMzUyLDM3NiwzODEsMzA1LDMyMiwzMzksMzUzLDM4MiwwLDgzNjRdO2Z1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUsdD0hMSl7aWYoZVswXT49IsOvIil7bGV0IGE7aWYoIsO+Ij09PWVbMF0mJiLDvyI9PT1lWzFdKXthPSJ1dGYtMTZiZSI7ZS5sZW5ndGglMj09MSYmKGU9ZS5zbGljZSgwLC0xKSl9ZWxzZSBpZigiw78iPT09ZVswXSYmIsO+Ij09PWVbMV0pe2E9InV0Zi0xNmxlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIsOvIj09PWVbMF0mJiLCuyI9PT1lWzFdJiYiwr8iPT09ZVsyXSYmKGE9InV0Zi04Iik7aWYoYSl0cnl7Y29uc3Qgbj1uZXcgVGV4dERlY29kZXIoYSx7ZmF0YWw6ITB9KSxzPXN0cmluZ1RvQnl0ZXMoZSkscj1uLmRlY29kZShzKTtyZXR1cm4gdHx8IXIuaW5jbHVkZXMoIhsiKT9yOnIucmVwbGFjZUFsbCgvXHgxYlteXHgxYl0qKD86XHgxYnwkKS9nLCIiKX1jYXRjaChlKXt3YXJuKGBzdHJpbmdUb1BERlN0cmluZzogIiR7ZX0iLmApfX1jb25zdCBhPVtdO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7aWYoIXQmJjI3PT09cil7Zm9yKDsrK248cyYmMjchPT1lLmNoYXJDb2RlQXQobik7KTtjb250aW51ZX1jb25zdCBpPW5hW3JdO2EucHVzaChpP1N0cmluZy5mcm9tQ2hhckNvZGUoaSk6ZS5jaGFyQXQobikpfXJldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGOFN0cmluZyhlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKGUpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpfWZ1bmN0aW9uIGlzQXJyYXlFcXVhbChlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBhPTAsbj1lLmxlbmd0aDthPG47YSsrKWlmKGVbYV0hPT10W2FdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGdldE1vZGlmaWNhdGlvbkRhdGUoZT1uZXcgRGF0ZSl7ZSBpbnN0YW5jZW9mIERhdGV8fChlPW5ldyBEYXRlKGUpKTtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfWxldCBzYT1udWxsLHJhPW51bGw7Y29uc3QgbWFrZUFycj0oKT0+W10sbWFrZU1hcD0oKT0+bmV3IE1hcCxtYWtlT2JqPSgpPT5PYmplY3QuY3JlYXRlKG51bGwpLGlhPVN5bWJvbCgiQ0lSQ1VMQVJfUkVGIiksb2E9U3ltYm9sKCJFT0YiKTtsZXQgbGE9T2JqZWN0LmNyZWF0ZShudWxsKSxmYT1PYmplY3QuY3JlYXRlKG51bGwpLGNhPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiBmYVtlXXx8PW5ldyBOYW1lKGUpfX1jbGFzcyBDbWR7Y29uc3RydWN0b3IoZSl7dGhpcy5jbWQ9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiBsYVtlXXx8PW5ldyBDbWQoZSl9fWNvbnN0IGhhPWZ1bmN0aW9uIG5vblNlcmlhbGl6YWJsZUNsb3N1cmUoKXtyZXR1cm4gaGF9O2NsYXNzIERpY3R7X19ub25TZXJpYWxpemFibGVfXz1oYTsjYT1uZXcgTWFwO29iaklkPW51bGw7c3VwcHJlc3NFbmNyeXB0aW9uPSExO3hyZWY7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLnhyZWY9ZX1hc3NpZ25YcmVmKGUpe3RoaXMueHJlZj1lfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuI2Euc2l6ZX0jbihlLHQsYSxuKXtsZXQgcz10aGlzLiNhLmdldCh0KTtpZih2b2lkIDA9PT1zJiZ2b2lkIDAhPT1hKXtzPXRoaXMuI2EuZ2V0KGEpO3ZvaWQgMD09PXMmJnZvaWQgMCE9PW4mJihzPXRoaXMuI2EuZ2V0KG4pKX1yZXR1cm4gcyBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP2U/dGhpcy54cmVmLmZldGNoQXN5bmMocyx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6dGhpcy54cmVmLmZldGNoKHMsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOnN9Z2V0KGUsdCxhKXtyZXR1cm4gdGhpcy4jbighMSxlLHQsYSl9YXN5bmMgZ2V0QXN5bmMoZSx0LGEpe3JldHVybiB0aGlzLiNuKCEwLGUsdCxhKX1nZXRBcnJheShlLHQsYSl7bGV0IG49dGhpcy4jbighMSxlLHQsYSk7aWYoQXJyYXkuaXNBcnJheShuKSl7bj1uLnNsaWNlKCk7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKW5bZV1pbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYobltlXT10aGlzLnhyZWYuZmV0Y2gobltlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiBufWdldFJhdyhlKXtyZXR1cm4gdGhpcy4jYS5nZXQoZSl9Z2V0S2V5cygpe3JldHVybiB0aGlzLiNhLmtleXMoKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gdGhpcy4jYS52YWx1ZXMoKX1nZXRSYXdFbnRyaWVzKCl7cmV0dXJuIHRoaXMuI2EuZW50cmllcygpfXNldChlLHQpe3RoaXMuI2Euc2V0KGUsdCl9c2V0SWZOb3RFeGlzdHMoZSx0KXt0aGlzLmhhcyhlKXx8dGhpcy5zZXQoZSx0KX1zZXRJZk51bWJlcihlLHQpeyJudW1iZXIiPT10eXBlb2YgdCYmdGhpcy5zZXQoZSx0KX1zZXRJZkFycmF5KGUsdCl7KEFycmF5LmlzQXJyYXkodCl8fEFycmF5QnVmZmVyLmlzVmlldyh0KSkmJnRoaXMuc2V0KGUsdCl9c2V0SWZEZWZpbmVkKGUsdCl7bnVsbCE9dCYmdGhpcy5zZXQoZSx0KX1zZXRJZk5hbWUoZSx0KXsic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5zZXQoZSxOYW1lLmdldCh0KSk6dCBpbnN0YW5jZW9mIE5hbWUmJnRoaXMuc2V0KGUsdCl9c2V0SWZEaWN0KGUsdCl7dCBpbnN0YW5jZW9mIERpY3QmJnRoaXMuc2V0KGUsdCl9aGFzKGUpe3JldHVybiB0aGlzLiNhLmhhcyhlKX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuI2EpeWllbGRbZSx0IGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoKHQsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOnRdfXN0YXRpYyBnZXQgZW1wdHkoKXtjb25zdCBlPW5ldyBEaWN0KG51bGwpO2Uuc2V0PShlLHQpPT57dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBgc2V0YCBvbiB0aGUgZW1wdHkgZGljdGlvbmFyeS4iKX07cmV0dXJuIHNoYWRvdyh0aGlzLCJlbXB0eSIsZSl9c3RhdGljIG1lcmdlKHt4cmVmOmUsZGljdEFycmF5OnQsbWVyZ2VTdWJEaWN0czphPSExfSl7Y29uc3Qgbj1uZXcgRGljdChlKSxzPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbdCxuXW9mIGUuZ2V0UmF3RW50cmllcygpKXtsZXQgZT1zLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO3Muc2V0KHQsZSl9ZWxzZSBpZighKGEmJm4gaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2gobil9Zm9yKGNvbnN0W3QsYV1vZiBzKXtpZigxPT09YS5sZW5ndGh8fCEoYVswXWluc3RhbmNlb2YgRGljdCkpe24uc2V0KHQsYVswXSk7Y29udGludWV9Y29uc3Qgcz1uZXcgRGljdChlKTtmb3IoY29uc3QgZSBvZiBhKWZvcihjb25zdFt0LGFdb2YgZS5nZXRSYXdFbnRyaWVzKCkpcy5zZXRJZk5vdEV4aXN0cyh0LGEpO3Muc2l6ZT4wJiZuLnNldCh0LHMpfXMuY2xlYXIoKTtyZXR1cm4gbi5zaXplPjA/bjpEaWN0LmVtcHR5fWNsb25lKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Zvcihjb25zdFt0LGFdb2YgdGhpcy4jYSllLnNldCh0LGEpO3JldHVybiBlfWRlbGV0ZShlKXt0aGlzLiNhLmRlbGV0ZShlKX19Y2xhc3MgUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5udW09ZTt0aGlzLmdlbj10fXRvU3RyaW5nKCl7cmV0dXJuIDA9PT10aGlzLmdlbj9gJHt0aGlzLm51bX1SYDpgJHt0aGlzLm51bX1SJHt0aGlzLmdlbn1gfXN0YXRpYyBmcm9tU3RyaW5nKGUpe2NvbnN0IHQ9Y2FbZV07aWYodClyZXR1cm4gdDtjb25zdCBhPS9eKFxkKylSKFxkKikkLy5leGVjKGUpO3JldHVybiBhJiYiMCIhPT1hWzFdP2NhW2VdPW5ldyBSZWYocGFyc2VJbnQoYVsxXSwxMCksYVsyXT9wYXJzZUludChhWzJdLDEwKTowKTpudWxsfXN0YXRpYyBnZXQoZSx0KXtjb25zdCBhPTA9PT10P2Ake2V9UmA6YCR7ZX1SJHt0fWA7cmV0dXJuIGNhW2FdfHw9bmV3IFJlZihlLHQpfX1jbGFzcyBSZWZTZXR7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9zZXQ9bmV3IFNldChlPy5fc2V0KX1oYXMoZSl7cmV0dXJuIHRoaXMuX3NldC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSl7dGhpcy5fc2V0LmFkZChlLnRvU3RyaW5nKCkpfXJlbW92ZShlKXt0aGlzLl9zZXQuZGVsZXRlKGUudG9TdHJpbmcoKSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fc2V0LnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fc2V0LmNsZWFyKCl9fWNsYXNzIFJlZlNldENhY2hle19tYXA9bmV3IE1hcDtnZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZS50b1N0cmluZygpKX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0KX1wdXRBbGlhcyhlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHRoaXMuZ2V0KHQpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9tYXAudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX0qdmFsdWVzKCl7eWllbGQqdGhpcy5fbWFwLnZhbHVlcygpfSppdGVtcygpe2Zvcihjb25zdFtlLHRdb2YgdGhpcy5fbWFwKXlpZWxkW1JlZi5mcm9tU3RyaW5nKGUpLHRdfSprZXlzKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fbWFwLmtleXMoKSl5aWVsZCBSZWYuZnJvbVN0cmluZyhlKX19ZnVuY3Rpb24gaXNOYW1lKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOYW1lJiYodm9pZCAwPT09dHx8ZS5uYW1lPT09dCl9ZnVuY3Rpb24gaXNDbWQoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIENtZCYmKHZvaWQgMD09PXR8fGUuY21kPT09dCl9ZnVuY3Rpb24gaXNEaWN0KGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEaWN0JiYodm9pZCAwPT09dHx8aXNOYW1lKGUuZ2V0KCJUeXBlIiksdCkpfWZ1bmN0aW9uIGlzUmVmc0VxdWFsKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59Y2xhc3MgQmFzZVN0cmVhbXtnZXQgbGVuZ3RoKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IGdldHRlciBgbGVuZ3RoYCBhY2Nlc3NlZCIpfWdldCBpc0VtcHR5KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IGdldHRlciBgaXNFbXB0eWAgYWNjZXNzZWQiKX1nZXQgaXNEYXRhTG9hZGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0RhdGFMb2FkZWQiLCEwKX1nZXRCeXRlKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZWAgY2FsbGVkIil9Z2V0Qnl0ZXMoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZXNgIGNhbGxlZCIpfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe3JldHVybiB0aGlzLmdldEJ5dGVzKGUsdCl9YXN5bmMgYXN5bmNHZXRCeXRlcygpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGFzeW5jR2V0Qnl0ZXNgIGNhbGxlZCIpfWdldCBpc0FzeW5jKCl7cmV0dXJuITF9Z2V0IGlzQXN5bmNEZWNvZGVyKCl7cmV0dXJuITF9Z2V0IGlzSW1hZ2VTdHJlYW0oKXtyZXR1cm4hMX1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4hMX1hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZSgpe3JldHVybiBudWxsfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4gYnl0ZXNUb1N0cmluZyh0aGlzLmdldEJ5dGVzKGUpKX1za2lwKGUpe3RoaXMucG9zKz1lfHwxfXJlc2V0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVzZXRgIGNhbGxlZCIpfW1vdmVTdGFydCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1vdmVTdGFydGAgY2FsbGVkIil9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBtYWtlU3ViU3RyZWFtYCBjYWxsZWQiKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiBudWxsfWdldE9yaWdpbmFsU3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtPy5nZXRPcmlnaW5hbFN0cmVhbSgpfHx0aGlzfX1jb25zdCB1YT0vXlsxLTldXC5cZCQvLG1hPTIqKjMxLTEscGE9WzEsMCwwLDEsMCwwXSxkYT1bIkNvbG9yU3BhY2UiLCJFeHRHU3RhdGUiLCJGb250IiwiUGF0dGVybiIsIlByb3BlcnRpZXMiLCJTaGFkaW5nIiwiWE9iamVjdCJdLGdhPVsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il07ZnVuY3Rpb24gZ2V0TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtlKHQpO2U9bnVsbH1yZXR1cm4gdH19Y2xhc3MgTWlzc2luZ0RhdGFFeGNlcHRpb24gZXh0ZW5kcyBhYXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGBNaXNzaW5nIGRhdGEgWyR7ZX0sICR7dH0pYCwiTWlzc2luZ0RhdGFFeGNlcHRpb24iKTt0aGlzLmJlZ2luPWU7dGhpcy5lbmQ9dH19Y2xhc3MgUGFyc2VyRU9GRXhjZXB0aW9uIGV4dGVuZHMgYWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiUGFyc2VyRU9GRXhjZXB0aW9uIil9fWNsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIGFhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZFbnRyeUV4Y2VwdGlvbiIpfX1jbGFzcyBYUmVmUGFyc2VFeGNlcHRpb24gZXh0ZW5kcyBhYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19ZnVuY3Rpb24gYXJyYXlCdWZmZXJzVG9CeXRlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiBuZXcgVWludDhBcnJheSgwKTtpZigxPT09dClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZVswXSk7bGV0IGE9MDtmb3IobGV0IG49MDtuPHQ7bisrKWErPWVbbl0uYnl0ZUxlbmd0aDtjb25zdCBuPW5ldyBVaW50OEFycmF5KGEpO2xldCBzPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyl7Y29uc3QgdD1uZXcgVWludDhBcnJheShlW2FdKTtuLnNldCh0LHMpO3MrPXQuYnl0ZUxlbmd0aH1yZXR1cm4gbn1hc3luYyBmdW5jdGlvbiBmZXRjaEJpbmFyeURhdGEoZSl7Y29uc3QgdD1hd2FpdCBmZXRjaChlKTtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBmaWxlICIke2V9IiB3aXRoICIke3Quc3RhdHVzVGV4dH0iLmApO3JldHVybiB0LmJ5dGVzKCl9ZnVuY3Rpb24gZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDplLGtleTp0LGdldEFycmF5OmE9ITEsc3RvcFdoZW5Gb3VuZDpuPSEwfSl7bGV0IHM7Y29uc3Qgcj1uZXcgUmVmU2V0O2Zvcig7ZSBpbnN0YW5jZW9mIERpY3QmJighZS5vYmpJZHx8IXIuaGFzKGUub2JqSWQpKTspe2Uub2JqSWQmJnIucHV0KGUub2JqSWQpO2NvbnN0IGk9YT9lLmdldEFycmF5KHQpOmUuZ2V0KHQpO2lmKHZvaWQgMCE9PWkpe2lmKG4pcmV0dXJuIGk7KHN8fD1bXSkucHVzaChpKX1lPWUuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gc31mdW5jdGlvbiBkZWVwQ29tcGFyZShlLHQpe2lmKGU9PT10KXJldHVybiEwO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZ0IGluc3RhbmNlb2YgRGljdCl7aWYoZS5zaXplIT09dC5zaXplKXJldHVybiExO2Zvcihjb25zdFthLG5db2YgZS5nZXRSYXdFbnRyaWVzKCkpe2NvbnN0IGU9dC5nZXRSYXcoYSk7aWYodm9pZCAwPT09ZXx8IWRlZXBDb21wYXJlKG4sZSkpcmV0dXJuITF9cmV0dXJuITB9aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheSh0KSl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjthKyspaWYoIWRlZXBDb21wYXJlKGVbYV0sdFthXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9Y29uc3QgYmE9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXthc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgYT0iTSIucmVwZWF0KGUvMWUzfDApK2JhW2UlMWUzLzEwMHwwXStiYVsxMCsoZSUxMDAvMTB8MCldK2JhWzIwK2UlMTBdO3JldHVybiB0P2EudG9Mb3dlckNhc2UoKTphfWZ1bmN0aW9uIGlzV2hpdGVTcGFjZShlKXtyZXR1cm4gMzI9PT1lfHw5PT09ZXx8MTM9PT1lfHwxMD09PWV9ZnVuY3Rpb24gaXNOdW1iZXJBcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpPyhudWxsPT09dHx8ZS5sZW5ndGg9PT10KSYmZS5ldmVyeShlPT4ibnVtYmVyIj09dHlwZW9mIGUpOkFycmF5QnVmZmVyLmlzVmlldyhlKSYmIShlIGluc3RhbmNlb2YgQmlnSW50NjRBcnJheXx8ZSBpbnN0YW5jZW9mIEJpZ1VpbnQ2NEFycmF5KSYmKG51bGw9PT10fHxlLmxlbmd0aD09PXQpfWZ1bmN0aW9uIGxvb2t1cE1hdHJpeChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNik/ZTp0fWZ1bmN0aW9uIGxvb2t1cFJlY3QoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDQpP2U6dH1mdW5jdGlvbiBsb29rdXBOb3JtYWxSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9VdGlsLm5vcm1hbGl6ZVJlY3QoZSk6dH1mdW5jdGlvbiBwYXJzZVhGQVBhdGgoZSl7Y29uc3QgdD0vKC4rKVxbKFxkKylcXSQvO3JldHVybiBlLnNwbGl0KCIuIikubWFwKGU9Pntjb25zdCBhPWUubWF0Y2godCk7cmV0dXJuIGE/e25hbWU6YVsxXSxwb3M6cGFyc2VJbnQoYVsyXSwxMCl9OntuYW1lOmUscG9zOjB9fSl9ZnVuY3Rpb24gZXNjYXBlUERGTmFtZShlKXtjb25zdCB0PVtdO2xldCBhPTA7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtjb25zdCBzPWUuY2hhckNvZGVBdChuKTtpZihzPDMzfHxzPjEyNnx8MzU9PT1zfHw0MD09PXN8fDQxPT09c3x8NjA9PT1zfHw2Mj09PXN8fDkxPT09c3x8OTM9PT1zfHwxMjM9PT1zfHwxMjU9PT1zfHw0Nz09PXN8fDM3PT09cyl7YTxuJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxuKSk7dC5wdXNoKGAjJHtzLnRvU3RyaW5nKDE2KX1gKTthPW4rMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2E8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhhLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLGU9PiJcbiI9PT1lPyJcXG4iOiJcciI9PT1lPyJcXHIiOmBcXCR7ZX1gKX1mdW5jdGlvbiBfY29sbGVjdEpTKGUsdCxhLG4pe2lmKCFlKXJldHVybjtsZXQgcz1udWxsO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKGUpKXJldHVybjtzPWU7bi5wdXQocyk7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHMgb2YgZSlfY29sbGVjdEpTKHMsdCxhLG4pO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIERpY3Qpe2lmKGlzTmFtZShlLmdldCgiUyIpLCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9ZS5nZXQoIkpTIik7bGV0IG47dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bj10LmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgdCYmKG49dCk7biYmPXN0cmluZ1RvUERGU3RyaW5nKG4sITApLnJlcGxhY2VBbGwoIlwwIiwiIik7biYmYS5wdXNoKG4udHJpbSgpKX1fY29sbGVjdEpTKGUuZ2V0UmF3KCJOZXh0IiksdCxhLG4pfXMmJm4ucmVtb3ZlKHMpfWZ1bmN0aW9uIGNvbGxlY3RBY3Rpb25zKGUsdCxhKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCkscz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJBQSIsc3RvcFdoZW5Gb3VuZDohMX0pO2lmKHMpZm9yKGxldCB0PXMubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IHI9c1t0XTtpZihyIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbdCxzXW9mIHIuZ2V0UmF3RW50cmllcygpKXtjb25zdCByPWFbdF07aWYoIXIpY29udGludWU7Y29uc3QgaT1bXTtfY29sbGVjdEpTKHMsZSxpLG5ldyBSZWZTZXQpO2kubGVuZ3RoPjAmJihuW3JdPWkpfX1pZih0LmhhcygiQSIpKXtjb25zdCBhPVtdO19jb2xsZWN0SlModC5nZXQoIkEiKSxlLGEsbmV3IFJlZlNldCk7YS5sZW5ndGg+MCYmKG4uQWN0aW9uPWEpfXJldHVybiBvYmplY3RTaXplKG4pPjA/bjpudWxsfWNvbnN0IHdhPXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uKmNvZGVQb2ludEl0ZXIoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWUuY29kZVBvaW50QXQodCk7YT41NTI5NSYmKGE8NTczNDR8fGE+NjU1MzMpJiZ0Kys7eWllbGQgYX19ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7Y29uc3Qgcz1lLmNvZGVQb2ludEF0KG4pO2lmKDMyPD1zJiZzPD0xMjYpe2NvbnN0IHI9d2Fbc107aWYocil7YTxuJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxuKSk7dC5wdXNoKHIpO2E9bisxfX1lbHNle2E8biYmdC5wdXNoKGUuc3Vic3RyaW5nKGEsbikpO3QucHVzaChgJiN4JHtzLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtzPjU1Mjk1JiYoczw1NzM0NHx8cz42NTUzMykmJm4rKzthPW4rMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2E8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhhLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlLHQ9ITEpe2NvbnN0IGE9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGEmJmFbMV09PT1hWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHthWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7YVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGEgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oXGR8KC0oXGR8LSkpKS8udGVzdChhKXx8IS9eW1x3LVxcXSskLy50ZXN0KGEpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6bixpdGFsaWNBbmdsZTpzfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGEsITApKXJldHVybiExO2NvbnN0IHI9bj9uLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKHIpP3I6IjQwMCI7Y29uc3QgaT1wYXJzZUZsb2F0KHMpO2UuaXRhbGljQW5nbGU9aXNOYU4oaSl8fGk8LTkwfHxpPjkwPyIxNCI6cy50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7cmV0dXJuIHQ/LlsyXT97dXJsOnRbMl0sbmV3V2luZG93OiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJiJ0cnVlIj09PXRbM119Om51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLG5db2YgZSlhLnN0YXJ0c1dpdGgoZCkmJnQuZ2V0T3JJbnNlcnRDb21wdXRlZChuLnBhZ2VJbmRleCxtYWtlQXJyKS5wdXNoKG4pO3JldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShlKXtyZXR1cm4gbnVsbD09ZXx8ZnVuY3Rpb24gaXNBc2NpaShlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuITE7cmV0dXJuIWV8fC9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX0oZSk/ZTpzdHJpbmdUb1VURjE2U3RyaW5nKGUsITApfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZIZXhTdHJpbmcoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjthKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KGEpO3QucHVzaChVdGlsLmhleE51bXNbbj4+OCYyNTVdLFV0aWwuaGV4TnVtc1syNTUmbl0pfXJldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZTdHJpbmcoZSx0PSExKXtjb25zdCBhPVtdO3QmJmEucHVzaCgiw77DvyIpO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQodCk7YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobj4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1Jm4pKX1yZXR1cm4gYS5qb2luKCIiKX1mdW5jdGlvbiBnZXRSb3RhdGlvbk1hdHJpeChlLHQsYSl7c3dpdGNoKGUpe2Nhc2UgOTA6cmV0dXJuWzAsMSwtMSwwLHQsMF07Y2FzZSAxODA6cmV0dXJuWy0xLDAsMCwtMSx0LGFdO2Nhc2UgMjcwOnJldHVyblswLC0xLDEsMCwwLGFdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJvdGF0aW9uIil9fWZ1bmN0aW9uIGdldFNpemVJbkJ5dGVzKGUpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5jZWlsKE1hdGgubG9nMigxK2UpKS84KX1jbGFzcyBRQ01Te3N0YXRpYyNzPW51bGw7c3RhdGljIF9tZW1vcnk9bnVsbDtzdGF0aWMgX211c3RBZGRBbHBoYT0hMTtzdGF0aWMgX2Rlc3RCdWZmZXI9bnVsbDtzdGF0aWMgX2Rlc3RPZmZzZXQ9MDtzdGF0aWMgX2Rlc3RMZW5ndGg9MDtzdGF0aWMgX2Nzc0NvbG9yPSIiO3N0YXRpYyBfbWFrZUhleENvbG9yPW51bGw7c3RhdGljIGdldCBfbWVtb3J5QXJyYXkoKXtjb25zdCBlPXRoaXMuI3M7cmV0dXJuIGU/LmJ5dGVMZW5ndGg/ZTp0aGlzLiNzPW5ldyBVaW50OEFycmF5KHRoaXMuX21lbW9yeS5idWZmZXIpfX1jb25zdCBqYT1PYmplY3QuZnJlZXplKHtSR0I4OjAsMDoiUkdCOCIsUkdCQTg6MSwxOiJSR0JBOCIsQkdSQTg6MiwyOiJCR1JBOCIsR3JheTg6MywzOiJHcmF5OCIsR3JheUE4OjQsNDoiR3JheUE4IixDTVlLOjUsNToiQ01ZSyJ9KSxrYT1PYmplY3QuZnJlZXplKHtQZXJjZXB0dWFsOjAsMDoiUGVyY2VwdHVhbCIsUmVsYXRpdmVDb2xvcmltZXRyaWM6MSwxOiJSZWxhdGl2ZUNvbG9yaW1ldHJpYyIsU2F0dXJhdGlvbjoyLDI6IlNhdHVyYXRpb24iLEFic29sdXRlQ29sb3JpbWV0cmljOjMsMzoiQWJzb2x1dGVDb2xvcmltZXRyaWMifSk7ZnVuY3Rpb24gX193YmdfZ2V0X2ltcG9ydHMoKXtyZXR1cm57X19wcm90b19fOm51bGwsIi4vcWNtc19iZy5qcyI6e19fcHJvdG9fXzpudWxsLF9fd2JnX19fd2JpbmRnZW5fdGhyb3dfNmI2NDQ0OWI5YjllZDMzYzpmdW5jdGlvbihlLHQpe3Rocm93IG5ldyBFcnJvcihmdW5jdGlvbiBnZXRTdHJpbmdGcm9tV2FzbTAoZSx0KXtyZXR1cm4gZnVuY3Rpb24gZGVjb2RlVGV4dChlLHQpe1NhKz10O2lmKFNhPj12YSl7cWE9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIse2lnbm9yZUJPTTohMCxmYXRhbDohMH0pO3FhLmRlY29kZSgpO1NhPXR9cmV0dXJuIHFhLmRlY29kZShnZXRVaW50OEFycmF5TWVtb3J5MCgpLnN1YmFycmF5KGUsZSt0KSl9KGU+Pj49MCx0KX0oZSx0KSl9LF9fd2JnX2NvcHlfcmVzdWx0XzBkMTVmM2JmOWQ5MDEyYWU6ZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24gY29weV9yZXN1bHQoZSx0KXtjb25zdHtfbXVzdEFkZEFscGhhOmEsX2Rlc3RCdWZmZXI6bixfZGVzdE9mZnNldDpzLF9kZXN0TGVuZ3RoOnIsX21lbW9yeUFycmF5Oml9PVFDTVM7aWYodCE9PXIpaWYoYSlmb3IobGV0IGE9ZSxyPWUrdCxvPXM7YTxyO2ErPTMsbys9NCl7bltvXT1pW2FdO25bbysxXT1pW2ErMV07bltvKzJdPWlbYSsyXTtuW28rM109MjU1fWVsc2UgZm9yKGxldCBhPWUscj1lK3Qsbz1zO2E8cjthKz0zLG8rPTQpe25bb109aVthXTtuW28rMV09aVthKzFdO25bbysyXT1pW2ErMl19ZWxzZSBuLnNldChpLnN1YmFycmF5KGUsZSt0KSxzKX0oZT4+PjAsdD4+PjApfSxfX3diZ19jb3B5X3JnYl8wMTA2ZDlkOTQ2NGZjZTQzOmZ1bmN0aW9uKGUpeyFmdW5jdGlvbiBjb3B5X3JnYihlKXtjb25zdHtfZGVzdEJ1ZmZlcjp0LF9kZXN0T2Zmc2V0OmEsX21lbW9yeUFycmF5Om59PVFDTVM7dFthXT1uW2VdO3RbYSsxXT1uW2UrMV07dFthKzJdPW5bZSsyXX0oZT4+PjApfSxfX3diZ19tYWtlX2Nzc1JHQl84ZTI0YjM0ZjcxZjUzNjNlOmZ1bmN0aW9uKGUpeyFmdW5jdGlvbiBtYWtlX2Nzc1JHQihlKXtjb25zdHtfbWVtb3J5QXJyYXk6dH09UUNNUztRQ01TLl9jc3NDb2xvcj1RQ01TLl9tYWtlSGV4Q29sb3IodFtlXSx0W2UrMV0sdFtlKzJdKX0oZT4+PjApfSxfX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlOmZ1bmN0aW9uKCl7Y29uc3QgZT14YS5fX3diaW5kZ2VuX2V4dGVybnJlZnMsdD1lLmdyb3coNCk7ZS5zZXQoMCx2b2lkIDApO2Uuc2V0KHQrMCx2b2lkIDApO2Uuc2V0KHQrMSxudWxsKTtlLnNldCh0KzIsITApO2Uuc2V0KHQrMywhMSl9fX19bGV0IHlhPW51bGw7ZnVuY3Rpb24gZ2V0VWludDhBcnJheU1lbW9yeTAoKXtudWxsIT09eWEmJjAhPT15YS5ieXRlTGVuZ3RofHwoeWE9bmV3IFVpbnQ4QXJyYXkoeGEubWVtb3J5LmJ1ZmZlcikpO3JldHVybiB5YX1mdW5jdGlvbiBwYXNzQXJyYXk4VG9XYXNtMChlLHQpe2NvbnN0IGE9dCgxKmUubGVuZ3RoLDEpPj4+MDtnZXRVaW50OEFycmF5TWVtb3J5MCgpLnNldChlLGEvMSk7Q2E9ZS5sZW5ndGg7cmV0dXJuIGF9bGV0IHFhPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiLHtpZ25vcmVCT006ITAsZmF0YWw6ITB9KTtxYS5kZWNvZGUoKTtjb25zdCB2YT0yMTQ2NDM1MDcyO2xldCBTYT0wO2xldCBBYSx4YSxDYT0wO2Z1bmN0aW9uIF9fd2JnX2ZpbmFsaXplX2luaXQoZSx0KXt4YT1lLmV4cG9ydHM7QWE9dDt5YT1udWxsO3hhLl9fd2JpbmRnZW5fc3RhcnQoKTtyZXR1cm4geGF9ZnVuY3Rpb24gTWF0aENsYW1wKGUsdCxhKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoZSx0KSxhKX1mdW5jdGlvbiBpc0RlZmF1bHREZWNvZGVIZWxwZXIoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtjb25zdCBhPWUubGVuZ3RoO2lmKGE8dCl7d2FybigiRGVjb2RlIG1hcCBsZW5ndGggaXMgdG9vIHNob3J0LiIpO3JldHVybiEwfWlmKGE+dCl7aW5mbygiVHJ1bmNhdGluZyB0b28gbG9uZyBkZWNvZGUgbWFwLiIpO2UubGVuZ3RoPXR9cmV0dXJuITF9Y2xhc3MgQ29sb3JTcGFjZXtzdGF0aWMjcj1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5hbWU9ZTt0aGlzLm51bUNvbXBzPXR9Z2V0UmdiKGUsdCxhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKSl7dGhpcy5nZXRSZ2JJdGVtKGUsdCxhLDApO3JldHVybiBhfWdldFJnYkhleChlLHQpe2NvbnN0IGE9dGhpcy5nZXRSZ2IoZSx0LENvbG9yU3BhY2UuI3IpO3JldHVybiBVdGlsLm1ha2VIZXhDb2xvcihhWzBdLGFbMV0sYVsyXSl9Z2V0UmdiSXRlbShlLHQsYSxuKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsYSxuLHMscixpKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsYSxuLHMscixpLG8sbCl7Y29uc3QgZj10KmE7bGV0IGM9bnVsbDtjb25zdCBoPTE8PGksdT1hIT09c3x8dCE9PW47aWYodGhpcy5pc1Bhc3N0aHJvdWdoKGkpKWM9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZmPmgmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9aTw9OD9uZXcgVWludDhBcnJheShoKTpuZXcgVWludDE2QXJyYXkoaCk7Zm9yKGxldCBlPTA7ZTxoO2UrKyl0W2VdPWU7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypoKTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsaCxhLDAsaSwwKTtpZih1KXtjPW5ldyBVaW50OEFycmF5KDMqZik7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGY7Kyt0KXtjb25zdCBuPTMqb1t0XTtjW2UrK109YVtuXTtjW2UrK109YVtuKzFdO2NbZSsrXT1hW24rMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IG49MDtuPGY7KytuKXtjb25zdCBzPTMqb1tuXTtlW3QrK109YVtzXTtlW3QrK109YVtzKzFdO2VbdCsrXT1hW3MrMl07dCs9bH19fWVsc2UgaWYodSl7Yz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypmKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsZixjLDAsaSwwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxuKnIsZSwwLGksbCk7aWYoYylpZih1KSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsYSxuLHMscixpKXtpPTEhPT1pPzA6aTtjb25zdCBvPWEvcyxsPW4vcjtsZXQgZixjPTA7Y29uc3QgaD1uZXcgVWludDE2QXJyYXkocyksdT0zKmE7Zm9yKGxldCBlPTA7ZTxzO2UrKyloW2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgYT0wO2E8cjthKyspe2NvbnN0IG49TWF0aC5mbG9vcihhKmwpKnU7Zm9yKGxldCBhPTA7YTxzO2ErKyl7Zj1uK2hbYV07dFtjKytdPWVbZisrXTt0W2MrK109ZVtmKytdO3RbYysrXT1lW2YrK107Yys9aX19fShjLGUsdCxhLG4scyxsKTtlbHNle2xldCB0PTAsYT0wO2ZvcihsZXQgcz0wLGk9bipyO3M8aTtzKyspe2VbdCsrXT1jW2ErK107ZVt0KytdPWNbYSsrXTtlW3QrK109Y1thKytdO3QrPWx9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCEwKX1zdGF0aWMgaXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoaXNEZWZhdWx0RGVjb2RlSGVscGVyKGUsMip0KSlyZXR1cm4hMDtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kz0yKWlmKDAhPT1lW3RdfHwxIT09ZVt0KzFdKXJldHVybiExO3JldHVybiEwfX1jbGFzcyBBbHRlcm5hdGVDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJBbHRlcm5hdGUiLGUpO3RoaXMuYmFzZT10O3RoaXMudGludEZuPWE7dGhpcy50bXBCdWY9bmV3IEZsb2F0MzJBcnJheSh0Lm51bUNvbXBzKX1nZXRSZ2JJdGVtKGUsdCxhLG4pe2NvbnN0IHM9dGhpcy50bXBCdWY7dGhpcy50aW50Rm4oZSx0LHMsMCk7dGhpcy5iYXNlLmdldFJnYkl0ZW0ocywwLGEsbil9Z2V0UmdiQnVmZmVyKGUsdCxhLG4scyxyLGkpe2NvbnN0IG89dGhpcy50aW50Rm4sbD10aGlzLmJhc2UsZj0xLygoMTw8ciktMSksYz1sLm51bUNvbXBzLGg9bC51c2VzWmVyb1RvT25lUmFuZ2UsdT0obC5pc1Bhc3N0aHJvdWdoKDgpfHwhaCkmJjA9PT1pO2xldCBtPXU/czowO2NvbnN0IHA9dT9uOm5ldyBVaW50OENsYW1wZWRBcnJheShjKmEpLGQ9dGhpcy5udW1Db21wcyxnPW5ldyBGbG9hdDMyQXJyYXkoZCksYj1uZXcgRmxvYXQzMkFycmF5KGMpO2xldCB3LGo7Zm9yKHc9MDt3PGE7dysrKXtmb3Ioaj0wO2o8ZDtqKyspZ1tqXT1lW3QrK10qZjtvKGcsMCxiLDApO2lmKGgpZm9yKGo9MDtqPGM7aisrKXBbbSsrXT0yNTUqYltqXTtlbHNle2wuZ2V0UmdiSXRlbShiLDAscCxtKTttKz1jfX11fHxsLmdldFJnYkJ1ZmZlcihwLDAsYSxuLHMsOCxpKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcy90aGlzLm51bUNvbXBzLHQpfX1jbGFzcyBQYXR0ZXJuQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJQYXR0ZXJuIixudWxsKTt0aGlzLmJhc2U9ZX1pc0RlZmF1bHREZWNvZGUoZSx0KXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIFBhdHRlcm5DUy5pc0RlZmF1bHREZWNvZGUiKX19Y2xhc3MgSW5kZXhlZENTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkluZGV4ZWQiLDEpO3RoaXMuYmFzZT1lO3RoaXMuaGlnaFZhbD10O2NvbnN0IG49ZS5udW1Db21wcyoodCsxKTt0aGlzLmxvb2t1cD1uZXcgVWludDhBcnJheShuKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgZT1hLmdldEJ5dGVzKG4pO3RoaXMubG9va3VwLnNldChlKX1lbHNle2lmKCJzdHJpbmciIT10eXBlb2YgYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICR7YX1gKTtmb3IobGV0IGU9MDtlPG47KytlKXRoaXMubG9va3VwW2VdPTI1NSZhLmNoYXJDb2RlQXQoZSl9fWdldFJnYkl0ZW0oZSx0LGEsbil7Y29uc3R7YmFzZTpzLGhpZ2hWYWw6cixsb29rdXA6aX09dGhpcyxvPU1hdGhDbGFtcChNYXRoLnJvdW5kKGVbdF0pLDAscikqcy5udW1Db21wcztzLmdldFJnYkJ1ZmZlcihpLG8sMSxhLG4sOCwwKX1nZXRSZ2JCdWZmZXIoZSx0LGEsbixzLHIsaSl7Y29uc3R7YmFzZTpvLGhpZ2hWYWw6bCxsb29rdXA6Zn09dGhpcyx7bnVtQ29tcHM6Y309byxoPW8uZ2V0T3V0cHV0TGVuZ3RoKGMsaSk7Zm9yKGxldCByPTA7cjxhOysrcil7Y29uc3QgYT1NYXRoQ2xhbXAoTWF0aC5yb3VuZChlW3QrK10pLDAsbCkqYztvLmdldFJnYkJ1ZmZlcihmLGEsMSxuLHMsOCxpKTtzKz1ofX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcyx0KX1pc0RlZmF1bHREZWNvZGUoZSx0KXtpZihpc0RlZmF1bHREZWNvZGVIZWxwZXIoZSwyKSlyZXR1cm4hMDtpZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXt3YXJuKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxhLG4pe2NvbnN0IHM9MjU1KmVbdF07YVtuXT1hW24rMV09YVtuKzJdPXN9Z2V0UmdiQnVmZmVyKGUsdCxhLG4scyxyLGkpe2NvbnN0IG89MjU1LygoMTw8ciktMSk7bGV0IGw9dCxmPXM7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1vKmVbbCsrXTtuW2YrK109dDtuW2YrK109dDtuW2YrK109dDtmKz1pfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsYSxuKXthW25dPTI1NSplW3RdO2FbbisxXT0yNTUqZVt0KzFdO2FbbisyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsYSxuLHMscixpKXtpZig4PT09ciYmMD09PWkpe24uc2V0KGUuc3ViYXJyYXkodCx0KzMqYSkscyk7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8ciktMSk7bGV0IGw9dCxmPXM7Zm9yKGxldCB0PTA7dDxhOysrdCl7bltmKytdPW8qZVtsKytdO25bZisrXT1vKmVbbCsrXTtuW2YrK109byplW2wrK107Zis9aX19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jbGFzcyBEZXZpY2VSZ2JhQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQkEiLDQpfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiA0KmV9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4gOD09PWV9ZmlsbFJnYihlLHQsYSxuLHMscixpLG8sbCl7YSE9PXN8fHQhPT1uP2Z1bmN0aW9uIHJlc2l6ZVJnYmFJbWFnZShlLHQsYSxuLHMscixpKXtjb25zdCBvPWEvcyxsPW4vcjtsZXQgZj0wO2NvbnN0IGM9bmV3IFVpbnQxNkFycmF5KHMpO2lmKDE9PT1pKXtmb3IobGV0IGU9MDtlPHM7ZSsrKWNbZV09TWF0aC5mbG9vcihlKm8pO2NvbnN0IG49bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyKSxpPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciksaD1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj8xNjc3NzIxNTo0Mjk0OTY3MDQwO2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IHQ9bi5zdWJhcnJheShNYXRoLmZsb29yKGUqbCkqYSk7Zm9yKGxldCBlPTA7ZTxzO2UrKylpW2YrK118PXRbY1tlXV0maH19ZWxzZXtjb25zdCBuPTQsaT1hKm47Zm9yKGxldCBlPTA7ZTxzO2UrKyljW2VdPU1hdGguZmxvb3IoZSpvKSpuO2ZvcihsZXQgYT0wO2E8cjthKyspe2NvbnN0IG49ZS5zdWJhcnJheShNYXRoLmZsb29yKGEqbCkqaSk7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7Y29uc3QgYT1jW2VdO3RbZisrXT1uW2FdO3RbZisrXT1uW2ErMV07dFtmKytdPW5bYSsyXX19fX0obyxlLHQsYSxuLHMsbCk6ZnVuY3Rpb24gY29weVJnYmFJbWFnZShlLHQsYSl7aWYoMT09PWEpe2NvbnN0IGE9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyKSxuPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlcikscz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj8xNjc3NzIxNTo0Mjk0OTY3MDQwO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyluW2VdfD1hW2VdJnN9ZWxzZXtsZXQgYT0wO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rPTQpe3RbYSsrXT1lW25dO3RbYSsrXT1lW24rMV07dFthKytdPWVbbisyXX19fShvLGUsbCl9fWNsYXNzIERldmljZUNteWtDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlQ01ZSyIsNCl9I2koZSx0LGEsbixzKXtjb25zdCByPWVbdF0qYSxpPWVbdCsxXSphLG89ZVt0KzJdKmEsbD1lW3QrM10qYTtuW3NdPTI1NStyKigtNC4zODczMzIzODQ2MDk5ODgqcis1NC40ODYxNTE5NDE4OTE3NippKzE4LjgyMjkwNTAyMTY1MzAyKm8rMjEyLjI1NjYyNDUxNjM5NTg1KmwtMjg1LjIzMzEwMjYxMzcwMDQpK2kqKDEuNzE0OTc2MzQ3NzM2MjEzNCppLTUuNjA5NjczNjkwNDA0NzMxNSpvKy0xNy44NzM4NzA4NjE0MTU0NDQqbC01LjQ5NzAwNjQyNzE5NjM2NikrbyooLTIuNTIxNzM0MDEzMTY4MzAzMypvLTIxLjI0ODkyMzMzNzM1MzA3MypsKzE3LjUxMTkyNzA4NDE4MTMpK2wqKC0yMS44NjEyMjE0NzQ2MzYwNSpsLTE4OS40ODE4MDgzNTkyMjc0Nyk7bltzKzFdPTI1NStyKig4Ljg0MTA0MTQyMjAzNjE0OSpyKzYwLjExODAyNzA0NTU5NzM2NippKzYuODcxNDI1NTkyMDQ5MDA3Km8rMzEuMTU5MTAwMTMwMDU1OTIyKmwtNzkuMjk3MDg0NDgxNjU0OCkraSooLTE1LjMxMDM2MTMwNjk2NzgxNyppKzE3LjU3NTI1MTI2MTEwOTQ4MipvKzEzMS4zNTI1MDkxMjQ5Mzk3NipsLTE5MC45NDUzMzAyNTg4OTUxKStvKig0LjQ0NDMzOTEwMjg1MjczOSpvKzkuODYzMjg2MTQ5MzQwNSpsLTI0Ljg2NzQxNTgyNTU1ODc4KStsKigtMjAuNzM3MzI1NDcxMTgxMDM0KmwtMTg3LjgwNDUzNzA5NzE5NTc4KTtuW3MrMl09MjU1K3IqKC44ODQyNTIyNDMwMDAzMjk2KnIrOC4wNzg2Nzc1MDMxMTI5MjgqaSszMC44OTk3ODMwOTcwMzcyOSpvLS4yMzg4MzIzODY4OTE3ODkzNCpsLTE0LjE4MzU3Njc5OTY3MzI4NikraSooMTAuNDk1OTMyNzM0MzIwNzIqaSs2My4wMjM3ODQ5NDc1NDA1MipvKzUwLjYwNjk1NzY1NjM2MDczNCpsLTExMi4yMzg4NDI1MzcxOTI0OCkrbyooLjAzMjk2MDQxMTE0ODczMjE3Km8rMTE1LjYwMzg0NDQ5NjQ2NjQxKmwtMTkzLjU4MjA5MzU2ODYxNTA1KStsKigtMjIuMzM4MTY4MDczMDk4ODYqbC0xODAuMTI2MTM5NzQ3MDgzNjcpfWdldFJnYkl0ZW0oZSx0LGEsbil7dGhpcy4jaShlLHQsMSxhLG4pfWdldFJnYkJ1ZmZlcihlLHQsYSxuLHMscixpKXtjb25zdCBvPTEvKCgxPDxyKS0xKTtmb3IobGV0IHI9MDtyPGE7cisrKXt0aGlzLiNpKGUsdCxvLG4scyk7dCs9NDtzKz0zK2l9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlLzQqKDMrdCl8MH19Y2xhc3MgQ2FsR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkNhbEdyYXkiLDEpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbEdyYXkiKTtbdGhpcy5YVyx0aGlzLllXLHRoaXMuWlddPWU7W3RoaXMuWEIsdGhpcy5ZQix0aGlzLlpCXT10fHxbMCwwLDBdO3RoaXMuRz1hfHwxO2lmKHRoaXMuWFc8MHx8dGhpcy5aVzwwfHwxIT09dGhpcy5ZVyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fHdhcm4oYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXtpbmZvKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fSNpKGUsdCxhLG4scyl7Y29uc3Qgcj0oZVt0XSpzKSoqdGhpcy5HLGk9dGhpcy5ZVypyLG89TWF0aC5tYXgoMjk1LjgqaSoqLjMzMzMzMzMzMzMzMzMzMzMtNDAuOCwwKTthW25dPW87YVtuKzFdPW87YVtuKzJdPW99Z2V0UmdiSXRlbShlLHQsYSxuKXt0aGlzLiNpKGUsdCxhLG4sMSl9Z2V0UmdiQnVmZmVyKGUsdCxhLG4scyxyLGkpe2NvbnN0IG89MS8oKDE8PHIpLTEpO2ZvcihsZXQgcj0wO3I8YTsrK3Ipe3RoaXMuI2koZSx0LG4scyxvKTt0Kz0xO3MrPTMraX19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fWNsYXNzIENhbFJHQkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtzdGF0aWMjbz1uZXcgRmxvYXQzMkFycmF5KFsuODk1MSwuMjY2NCwtLjE2MTQsLS43NTAyLDEuNzEzNSwuMDM2NywuMDM4OSwtLjA2ODUsMS4wMjk2XSk7c3RhdGljI2w9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pO3N0YXRpYyNmPW5ldyBGbG9hdDMyQXJyYXkoWzMuMjQwNDU0MiwtMS41MzcxMzg1LC0uNDk4NTMxNCwtLjk2OTI2NiwxLjg3NjAxMDgsLjA0MTU1NiwuMDU1NjQzNCwtLjIwNDAyNTksMS4wNTcyMjUyXSk7c3RhdGljI2M9bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtzdGF0aWMjaD1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyN1PW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI209bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjcD0oMjQvMTE2KSoqMy84O2NvbnN0cnVjdG9yKGUsdCxhLG4pe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbFJHQiIpO2NvbnN0W3MscixpXT10aGlzLndoaXRlUG9pbnQ9ZSxbbyxsLGZdPXRoaXMuYmxhY2tQb2ludD10fHxuZXcgRmxvYXQzMkFycmF5KDMpO1t0aGlzLkdSLHRoaXMuR0csdGhpcy5HQl09YXx8bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtbdGhpcy5NWEEsdGhpcy5NWUEsdGhpcy5NWkEsdGhpcy5NWEIsdGhpcy5NWUIsdGhpcy5NWkIsdGhpcy5NWEMsdGhpcy5NWUMsdGhpcy5NWkNdPW58fG5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7aWYoczwwfHxpPDB8fDEhPT1yKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMgZm9yICR7dGhpcy5uYW1lfSwgbm8gZmFsbGJhY2sgYXZhaWxhYmxlYCk7aWYobzwwfHxsPDB8fGY8MCl7aW5mbyhgSW52YWxpZCBCbGFja1BvaW50IGZvciAke3RoaXMubmFtZX0gWyR7b30sICR7bH0sICR7Zn1dLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLmJsYWNrUG9pbnQ9bmV3IEZsb2F0MzJBcnJheSgzKX1pZih0aGlzLkdSPDB8fHRoaXMuR0c8MHx8dGhpcy5HQjwwKXtpbmZvKGBJbnZhbGlkIEdhbW1hIFske3RoaXMuR1J9LCAke3RoaXMuR0d9LCAke3RoaXMuR0J9XSBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLkdSPXRoaXMuR0c9dGhpcy5HQj0xfX0jZChlLHQsYSl7YVswXT1lWzBdKnRbMF0rZVsxXSp0WzFdK2VbMl0qdFsyXTthWzFdPWVbM10qdFswXStlWzRdKnRbMV0rZVs1XSp0WzJdO2FbMl09ZVs2XSp0WzBdK2VbN10qdFsxXStlWzhdKnRbMl19I2coZSx0LGEpe2FbMF09MSp0WzBdL2VbMF07YVsxXT0xKnRbMV0vZVsxXTthWzJdPTEqdFsyXS9lWzJdfSNiKGUsdCxhKXthWzBdPS45NTA0Nyp0WzBdL2VbMF07YVsxXT0xKnRbMV0vZVsxXTthWzJdPTEuMDg4ODMqdFsyXS9lWzJdfSN3KGUpe3JldHVybiBlPD0uMDAzMTMwOD9NYXRoQ2xhbXAoMTIuOTIqZSwwLDEpOmU+PS45OTU1NDUyNT8xOk1hdGhDbGFtcCgxLjA1NSplKiooMS8yLjQpLS4wNTUsMCwxKX0jaihlKXtyZXR1cm4gZTwwPy10aGlzLiNqKC1lKTplPjg/KChlKzE2KS8xMTYpKiozOmUqQ2FsUkdCQ1MuI3B9I2soZSx0LGEpe2lmKDA9PT1lWzBdJiYwPT09ZVsxXSYmMD09PWVbMl0pe2FbMF09dFswXTthWzFdPXRbMV07YVsyXT10WzJdO3JldHVybn1jb25zdCBuPXRoaXMuI2ooMCkscz0oMS1uKS8oMS10aGlzLiNqKGVbMF0pKSxyPTEtcyxpPSgxLW4pLygxLXRoaXMuI2ooZVsxXSkpLG89MS1pLGw9KDEtbikvKDEtdGhpcy4jaihlWzJdKSksZj0xLWw7YVswXT10WzBdKnMrcjthWzFdPXRbMV0qaStvO2FbMl09dFsyXSpsK2Z9I3koZSx0LGEpe2lmKDE9PT1lWzBdJiYxPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IG49YTt0aGlzLiNkKENhbFJHQkNTLiNvLHQsbik7Y29uc3Qgcz1DYWxSR0JDUy4jaDt0aGlzLiNnKGUsbixzKTt0aGlzLiNkKENhbFJHQkNTLiNsLHMsYSl9I3EoZSx0LGEpe2NvbnN0IG49YTt0aGlzLiNkKENhbFJHQkNTLiNvLHQsbik7Y29uc3Qgcz1DYWxSR0JDUy4jaDt0aGlzLiNiKGUsbixzKTt0aGlzLiNkKENhbFJHQkNTLiNsLHMsYSl9I2koZSx0LGEsbixzKXtjb25zdCByPU1hdGhDbGFtcChlW3RdKnMsMCwxKSxpPU1hdGhDbGFtcChlW3QrMV0qcywwLDEpLG89TWF0aENsYW1wKGVbdCsyXSpzLDAsMSksbD0xPT09cj8xOnIqKnRoaXMuR1IsZj0xPT09aT8xOmkqKnRoaXMuR0csYz0xPT09bz8xOm8qKnRoaXMuR0IsaD10aGlzLk1YQSpsK3RoaXMuTVhCKmYrdGhpcy5NWEMqYyx1PXRoaXMuTVlBKmwrdGhpcy5NWUIqZit0aGlzLk1ZQypjLG09dGhpcy5NWkEqbCt0aGlzLk1aQipmK3RoaXMuTVpDKmMscD1DYWxSR0JDUy4jdTtwWzBdPWg7cFsxXT11O3BbMl09bTtjb25zdCBkPUNhbFJHQkNTLiNtO3RoaXMuI3kodGhpcy53aGl0ZVBvaW50LHAsZCk7Y29uc3QgZz1DYWxSR0JDUy4jdTt0aGlzLiNrKHRoaXMuYmxhY2tQb2ludCxkLGcpO2NvbnN0IGI9Q2FsUkdCQ1MuI207dGhpcy4jcShDYWxSR0JDUy4jYyxnLGIpO2NvbnN0IHc9Q2FsUkdCQ1MuI3U7dGhpcy4jZChDYWxSR0JDUy4jZixiLHcpO2Fbbl09MjU1KnRoaXMuI3cod1swXSk7YVtuKzFdPTI1NSp0aGlzLiN3KHdbMV0pO2FbbisyXT0yNTUqdGhpcy4jdyh3WzJdKX1nZXRSZ2JJdGVtKGUsdCxhLG4pe3RoaXMuI2koZSx0LGEsbiwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEsbixzLHIsaSl7Y29uc3Qgbz0xLygoMTw8ciktMSk7Zm9yKGxldCByPTA7cjxhOysrcil7dGhpcy4jaShlLHQsbixzLG8pO3QrPTM7cys9MytpfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9fWNsYXNzIExhYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkxhYiIsMyk7aWYoIWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLmFtaW4sdGhpcy5hbWF4LHRoaXMuYm1pbix0aGlzLmJtYXhdPWF8fFstMTAwLDEwMCwtMTAwLDEwMF07W3RoaXMuWEIsdGhpcy5ZQix0aGlzLlpCXT10fHxbMCwwLDBdO2lmKHRoaXMuWFc8MHx8dGhpcy5aVzwwfHwxIT09dGhpcy5ZVyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKCJJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Iik7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH1pZih0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KXtpbmZvKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKTt0aGlzLmFtaW49LTEwMDt0aGlzLmFtYXg9MTAwO3RoaXMuYm1pbj0tMTAwO3RoaXMuYm1heD0xMDB9fSN2KGUpe3JldHVybiBlPj02LzI5P2UqKjM6MTA4Lzg0MSooZS00LzI5KX0jUyhlLHQsYSxuKXtyZXR1cm4gYStlKihuLWEpL3R9I2koZSx0LGEsbixzKXtsZXQgcj1lW3RdLGk9ZVt0KzFdLG89ZVt0KzJdO2lmKCExIT09YSl7cj10aGlzLiNTKHIsYSwwLDEwMCk7aT10aGlzLiNTKGksYSx0aGlzLmFtaW4sdGhpcy5hbWF4KTtvPXRoaXMuI1MobyxhLHRoaXMuYm1pbix0aGlzLmJtYXgpfWk+dGhpcy5hbWF4P2k9dGhpcy5hbWF4Omk8dGhpcy5hbWluJiYoaT10aGlzLmFtaW4pO28+dGhpcy5ibWF4P289dGhpcy5ibWF4Om88dGhpcy5ibWluJiYobz10aGlzLmJtaW4pO2NvbnN0IGw9KHIrMTYpLzExNixmPWwraS81MDAsYz1sLW8vMjAwLGg9dGhpcy5YVyp0aGlzLiN2KGYpLHU9dGhpcy5ZVyp0aGlzLiN2KGwpLG09dGhpcy5aVyp0aGlzLiN2KGMpO2xldCBwLGQsZztpZih0aGlzLlpXPDEpe3A9My4xMzM5KmgrLTEuNjE3KnUrLS40OTA2Km07ZD0tLjk3ODUqaCsxLjkxNip1Ky4wMzMzKm07Zz0uMDcyKmgrLS4yMjkqdSsxLjQwNTcqbX1lbHNle3A9My4yNDA2KmgrLTEuNTM3Mip1Ky0uNDk4NiptO2Q9LS45Njg5KmgrMS44NzU4KnUrLjA0MTUqbTtnPS4wNTU3KmgrLS4yMDQqdSsxLjA1NyptfW5bc109MjU1Kk1hdGguc3FydChwKTtuW3MrMV09MjU1Kk1hdGguc3FydChkKTtuW3MrMl09MjU1Kk1hdGguc3FydChnKX1nZXRSZ2JJdGVtKGUsdCxhLG4pe3RoaXMuI2koZSx0LCExLGEsbil9Z2V0UmdiQnVmZmVyKGUsdCxhLG4scyxyLGkpe2NvbnN0IG89KDE8PHIpLTE7Zm9yKGxldCByPTA7cjxhO3IrKyl7dGhpcy4jaShlLHQsbyxuLHMpO3QrPTM7cys9MytpfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuITB9Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybiBzaGFkb3codGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fWZ1bmN0aW9uIGZldGNoU3luYyhlKXtjb25zdCB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oIkdFVCIsZSwhMSk7dC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjt0LnNlbmQobnVsbCk7cmV0dXJuIHQucmVzcG9uc2V9Y2xhc3MgSWNjQ29sb3JTcGFjZSBleHRlbmRzIENvbG9yU3BhY2V7I0E7I3g7c3RhdGljI0M9ITA7c3RhdGljI0k9bnVsbDtzdGF0aWMjRj1udWxsO2NvbnN0cnVjdG9yKGUsdCxhKXtpZighSWNjQ29sb3JTcGFjZS5pc1VzYWJsZSl0aHJvdyBuZXcgRXJyb3IoIk5vIElDQyBjb2xvciBzcGFjZSBzdXBwb3J0Iik7c3VwZXIodCxhKTtsZXQgbjtzd2l0Y2goYSl7Y2FzZSAxOm49amEuR3JheTg7dGhpcy4jeD0oZSx0LGEpPT5mdW5jdGlvbiBxY21zX2NvbnZlcnRfb25lKGUsdCxhKXt4YS5xY21zX2NvbnZlcnRfb25lKGUsdCxhKX0odGhpcy4jQSwyNTUqZVt0XSxhKTticmVhaztjYXNlIDM6bj1qYS5SR0I4O3RoaXMuI3g9KGUsdCxhKT0+ZnVuY3Rpb24gcWNtc19jb252ZXJ0X3RocmVlKGUsdCxhLG4scyl7eGEucWNtc19jb252ZXJ0X3RocmVlKGUsdCxhLG4scyl9KHRoaXMuI0EsMjU1KmVbdF0sMjU1KmVbdCsxXSwyNTUqZVt0KzJdLGEpO2JyZWFrO2Nhc2UgNDpuPWphLkNNWUs7dGhpcy4jeD0oZSx0LGEpPT5mdW5jdGlvbiBxY21zX2NvbnZlcnRfZm91cihlLHQsYSxuLHMscil7eGEucWNtc19jb252ZXJ0X2ZvdXIoZSx0LGEsbixzLHIpfSh0aGlzLiNBLDI1NSplW3RdLDI1NSplW3QrMV0sMjU1KmVbdCsyXSwyNTUqZVt0KzNdLGEpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBudW1iZXIgb2YgY29tcG9uZW50czogJHthfWApfXRoaXMuI0E9ZnVuY3Rpb24gcWNtc190cmFuc2Zvcm1lcl9mcm9tX21lbW9yeShlLHQsYSl7Y29uc3Qgbj1wYXNzQXJyYXk4VG9XYXNtMChlLHhhLl9fd2JpbmRnZW5fbWFsbG9jKSxzPUNhO3JldHVybiB4YS5xY21zX3RyYW5zZm9ybWVyX2Zyb21fbWVtb3J5KG4scyx0LGEpPj4+MH0oZSxuLGthLlBlcmNlcHR1YWwpO2lmKCF0aGlzLiNBKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBJQ0MgY29sb3Igc3BhY2UiKTtJY2NDb2xvclNwYWNlLiNGfHw9bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGU9PnshZnVuY3Rpb24gcWNtc19kcm9wX3RyYW5zZm9ybWVyKGUpe3hhLnFjbXNfZHJvcF90cmFuc2Zvcm1lcihlKX0oZSl9KTtJY2NDb2xvclNwYWNlLiNGLnJlZ2lzdGVyKHRoaXMsdGhpcy4jQSl9Z2V0UmdiSGV4KGUsdCl7dGhpcy4jeChlLHQsITApO3JldHVybiBRQ01TLl9jc3NDb2xvcn1nZXRSZ2JJdGVtKGUsdCxhLG4pe1FDTVMuX2Rlc3RCdWZmZXI9YTtRQ01TLl9kZXN0T2Zmc2V0PW47UUNNUy5fZGVzdExlbmd0aD0zO3RoaXMuI3goZSx0LCExKTtRQ01TLl9kZXN0QnVmZmVyPW51bGx9Z2V0UmdiQnVmZmVyKGUsdCxhLG4scyxyLGkpe2U9ZS5zdWJhcnJheSh0LHQrYSp0aGlzLm51bUNvbXBzKTtpZig4IT09cil7Y29uc3QgdD0yNTUvKCgxPDxyKS0xKTtmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjthKyspZVthXSo9dH1RQ01TLl9tdXN0QWRkQWxwaGE9aSYmbi5idWZmZXI9PT1lLmJ1ZmZlcjtRQ01TLl9kZXN0QnVmZmVyPW47UUNNUy5fZGVzdE9mZnNldD1zO1FDTVMuX2Rlc3RMZW5ndGg9YSooMytpKTshZnVuY3Rpb24gcWNtc19jb252ZXJ0X2FycmF5KGUsdCl7Y29uc3QgYT1wYXNzQXJyYXk4VG9XYXNtMCh0LHhhLl9fd2JpbmRnZW5fbWFsbG9jKSxuPUNhO3hhLnFjbXNfY29udmVydF9hcnJheShlLGEsbil9KHRoaXMuI0EsZSk7UUNNUy5fbXVzdEFkZEFscGhhPSExO1FDTVMuX2Rlc3RCdWZmZXI9bnVsbH1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS90aGlzLm51bUNvbXBzKigzK3QpfDB9c3RhdGljIHNldE9wdGlvbnMoe3VzZVdhc206ZSx1c2VXb3JrZXJGZXRjaDp0LHdhc21Vcmw6YX0pe2lmKHQpe3RoaXMuI0M9ZTt0aGlzLiNJPWF9ZWxzZSB0aGlzLiNDPSExfXN0YXRpYyBnZXQgaXNVc2FibGUoKXtsZXQgZT0hMTtpZih0aGlzLiNDKWlmKHRoaXMuI0kpdHJ5e3RoaXMuX21vZHVsZT1mdW5jdGlvbiBpbml0U3luYyhlKXtpZih2b2lkIDAhPT14YSlyZXR1cm4geGE7dm9pZCAwIT09ZSYmKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PU9iamVjdC5wcm90b3R5cGU/KHttb2R1bGU6ZX09ZSk6Y29uc29sZS53YXJuKCJ1c2luZyBkZXByZWNhdGVkIHBhcmFtZXRlcnMgZm9yIGBpbml0U3luYygpYDsgcGFzcyBhIHNpbmdsZSBvYmplY3QgaW5zdGVhZCIpKTtjb25zdCB0PV9fd2JnX2dldF9pbXBvcnRzKCk7ZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lk1vZHVsZXx8KGU9bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShlKSk7cmV0dXJuIF9fd2JnX2ZpbmFsaXplX2luaXQobmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKGUsdCksZSl9KHttb2R1bGU6ZmV0Y2hTeW5jKGAke3RoaXMuI0l9cWNtc19iZy53YXNtYCl9KTtlPSEhdGhpcy5fbW9kdWxlO1FDTVMuX21lbW9yeT10aGlzLl9tb2R1bGUubWVtb3J5O1FDTVMuX21ha2VIZXhDb2xvcj1VdGlsLm1ha2VIZXhDb2xvci5iaW5kKFV0aWwpfWNhdGNoKGUpe3dhcm4oYElDQ0Jhc2VkIGNvbG9yIHNwYWNlOiAiJHtlfSIuYCl9ZWxzZSB3YXJuKCJObyBJQ0MgY29sb3Igc3BhY2Ugc3VwcG9ydCBkdWUgdG8gbWlzc2luZyBgd2FzbVVybGAgQVBJIG9wdGlvbiIpO3JldHVybiBzaGFkb3codGhpcywiaXNVc2FibGUiLGUpfX1jbGFzcyBDbXlrSUNDQmFzZWRDUyBleHRlbmRzIEljY0NvbG9yU3BhY2V7c3RhdGljI1Q7Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheShmZXRjaFN5bmMoYCR7Q215a0lDQ0Jhc2VkQ1MuI1R9Q0dBVFMwMDFDb21wYXQtdjItbWljcm8uaWNjYCkpLCJEZXZpY2VDTVlLIiw0KX1zdGF0aWMgc2V0T3B0aW9ucyh7aWNjVXJsOmV9KXt0aGlzLiNUPWV9c3RhdGljIGdldCBpc1VzYWJsZSgpe2xldCBlPSExO0ljY0NvbG9yU3BhY2UuaXNVc2FibGUmJih0aGlzLiNUP2U9ITA6d2FybigiTm8gQ01ZSyBJQ0MgcHJvZmlsZSBzdXBwb3J0IGR1ZSB0byBtaXNzaW5nIGBpY2NVcmxgIEFQSSBvcHRpb24iKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc1VzYWJsZSIsZSl9fWNsYXNzIFN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEsbil7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCthfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9bn1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGE9dGhpcy5wb3Msbj10aGlzLmVuZDtpZighZSl7dGhpcy5wb3M9bjtyZXR1cm4gdC5zdWJhcnJheShhLG4pfWxldCBzPWErZTtzPm4mJihzPW4pO3RoaXMucG9zPXM7cmV0dXJuIHQuc3ViYXJyYXkoYSxzKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGEpfWNsb25lKCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsdGhpcy5zdGFydCx0aGlzLmVuZC10aGlzLnN0YXJ0LHRoaXMuZGljdC5jbG9uZSgpKX19Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKHN0cmluZ1RvQnl0ZXMoZSkpfX1jbGFzcyBOdWxsU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoMCkpfX1jbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgU3RyZWFte3Byb2dyZXNzaXZlRGF0YUxlbmd0aD0wO19sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMTtfbG9hZGVkQ2h1bmtzPW5ldyBTZXQ7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1hfWdldE1pc3NpbmdDaHVua3MoKXtjb25zdCBlPVtdO2ZvcihsZXQgdD0wLGE9dGhpcy5udW1DaHVua3M7dDxhOysrdCl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHQpfHxlLnB1c2godCk7cmV0dXJuIGV9Z2V0IG51bUNodW5rc0xvYWRlZCgpe3JldHVybiB0aGlzLl9sb2FkZWRDaHVua3Muc2l6ZX1nZXQgaXNEYXRhTG9hZGVkKCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N9b25SZWNlaXZlRGF0YShlLHQpe2NvbnN0IGE9dGhpcy5jaHVua1NpemU7aWYoZSVhIT09MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCBuPWUrdC5ieXRlTGVuZ3RoO2lmKG4lYSE9PTAmJm4hPT10aGlzLmJ5dGVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBlbmQgb2Zmc2V0OiAke259YCk7dGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkodCksZSk7Y29uc3Qgcz1NYXRoLmZsb29yKGUvYSkscj1NYXRoLmZsb29yKChuLTEpL2EpKzE7Zm9yKGxldCBlPXM7ZTxyOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfW9uUmVjZWl2ZVByb2dyZXNzaXZlRGF0YShlKXtsZXQgdD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDtjb25zdCBhPU1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7dGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkoZSksdCk7dCs9ZS5ieXRlTGVuZ3RoO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPXQ7Y29uc3Qgbj10Pj10aGlzLmVuZD90aGlzLm51bUNodW5rczpNYXRoLmZsb29yKHQvdGhpcy5jaHVua1NpemUpO2ZvcihsZXQgZT1hO2U8bjsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmFkZChlKX1lbnN1cmVCeXRlKGUpe2lmKGU8dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuO2NvbnN0IHQ9TWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKTtpZighKHQ+dGhpcy5udW1DaHVua3MpJiZ0IT09dGhpcy5fbGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bmspe2lmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHQpKXRocm93IG5ldyBNaXNzaW5nRGF0YUV4Y2VwdGlvbihlLGUrMSk7dGhpcy5fbGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10KXJldHVybjtpZih0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgYT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGE+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IG49TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCBzPWE7czxuOysrcylpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhzKSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgYT0wO2E8dDsrK2Epe2NvbnN0IG49KGUrYSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhuKSlyZXR1cm4gbn1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxhPXRoaXMucG9zLG49dGhpcy5lbmQ7aWYoIWUpe24+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoYSxuKTt0aGlzLnBvcz1uO3JldHVybiB0LnN1YmFycmF5KGEsbil9bGV0IHM9YStlO3M+biYmKHM9bik7cz50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShhLHMpO3RoaXMucG9zPXM7cmV0dXJuIHQuc3ViYXJyYXkoYSxzKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTt0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsdCk7cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpe3Q/ZSt0PnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGUsZSt0KTplPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO2Z1bmN0aW9uIENodW5rZWRTdHJlYW1TdWJzdHJlYW0oKXt9Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZS5nZXRNaXNzaW5nQ2h1bmtzPWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLmNodW5rU2l6ZSx0PU1hdGguZmxvb3IodGhpcy5zdGFydC9lKSxhPU1hdGguZmxvb3IoKHRoaXMuZW5kLTEpL2UpKzEsbj1bXTtmb3IobGV0IGU9dDtlPGE7KytlKXRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl8fG4ucHVzaChlKTtyZXR1cm4gbn07T2JqZWN0LmRlZmluZVByb3BlcnR5KENodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLCJpc0RhdGFMb2FkZWQiLHtnZXQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc3x8MD09PXRoaXMuZ2V0TWlzc2luZ0NodW5rcygpLmxlbmd0aH0sY29uZmlndXJhYmxlOiEwfSk7Y29uc3Qgbj1uZXcgQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbTtuLnBvcz1uLnN0YXJ0PWU7bi5lbmQ9ZSt0fHx0aGlzLmVuZDtuLmRpY3Q9YTtyZXR1cm4gbn1nZXRCYXNlU3RyZWFtcygpe3JldHVyblt0aGlzXX19Y2xhc3MgQ2h1bmtlZFN0cmVhbU1hbmFnZXJ7YWJvcnRlZD0hMTtjdXJyUmVxdWVzdElkPTA7X2NodW5rc05lZWRlZEJ5UmVxdWVzdD1uZXcgTWFwO19sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpO19wcm9taXNlc0J5UmVxdWVzdD1uZXcgTWFwO19yZXF1ZXN0c0J5Q2h1bms9bmV3IE1hcDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubGVuZ3RoPXQubGVuZ3RoO3RoaXMuY2h1bmtTaXplPXQucmFuZ2VDaHVua1NpemU7dGhpcy5zdHJlYW09bmV3IENodW5rZWRTdHJlYW0odGhpcy5sZW5ndGgsdGhpcy5jaHVua1NpemUsdGhpcyk7dGhpcy5wZGZTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXJ9YXN5bmMgc2VuZFJlcXVlc3QoZSx0KXtjb25zdCBhPXRoaXMucGRmU3RyZWFtLmdldFJhbmdlUmVhZGVyKGUsdCk7bGV0IG49W107Zm9yKDs7KXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgYS5yZWFkKCk7aWYodGhpcy5hYm9ydGVkKXtuPW51bGw7cmV0dXJufWlmKHQpYnJlYWs7bi5wdXNoKGUpfWlmKDA9PT1uLmxlbmd0aCYmdGhpcy5kaXNhYmxlQXV0b0ZldGNoKXJldHVybjtjb25zdCBzPWFycmF5QnVmZmVyc1RvQnl0ZXMobik7bj1udWxsO3RoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6cy5idWZmZXIsYmVnaW46ZX0pfXJlcXVlc3RBbGxDaHVua3MoZT0hMSl7aWYoIWUpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0TWlzc2luZ0NodW5rcygpO3RoaXMuX3JlcXVlc3RDaHVua3MoZSl9cmV0dXJuIHRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucHJvbWlzZX1fcmVxdWVzdENodW5rcyhlKXtjb25zdCB0PXRoaXMuY3VyclJlcXVlc3RJZCsrLGE9bmV3IFNldDt0aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3Quc2V0KHQsYSk7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLnN0cmVhbS5oYXNDaHVuayh0KXx8YS5hZGQodCk7aWYoMD09PWEuc2l6ZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Y29uc3Qgbj1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5zZXQodCxuKTtjb25zdCBzPVtdO2Zvcihjb25zdCBlIG9mIGEpe2xldCBhPXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYoIWEpe2E9W107dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNldChlLGEpO3MucHVzaChlKX1hLnB1c2godCl9aWYocy5sZW5ndGg+MCl7Y29uc3QgZT10aGlzLmdyb3VwQ2h1bmtzKHMpO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9dC5iZWdpbkNodW5rKnRoaXMuY2h1bmtTaXplLGE9TWF0aC5taW4odC5lbmRDaHVuayp0aGlzLmNodW5rU2l6ZSx0aGlzLmxlbmd0aCk7dGhpcy5zZW5kUmVxdWVzdChlLGEpLmNhdGNoKG4ucmVqZWN0KX19cmV0dXJuIG4ucHJvbWlzZS5jYXRjaChlPT57aWYoIXRoaXMuYWJvcnRlZCl0aHJvdyBlfSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgYT10aGlzLmdldEJlZ2luQ2h1bmsoZSksbj10aGlzLmdldEVuZENodW5rKHQpLHM9W107Zm9yKGxldCBlPWE7ZTxuOysrZSlzLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mocyl9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGEuYmVnaW4pLG49dGhpcy5nZXRFbmRDaHVuayhhLmVuZCk7Zm9yKGxldCBhPWU7YTxuOysrYSl0LmluY2x1ZGVzKGEpfHx0LnB1c2goYSl9dC5zb3J0KChlLHQpPT5lLXQpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKHQpfWdyb3VwQ2h1bmtzKGUpe2NvbnN0IHQ9W107bGV0IGE9LTEsbj0tMTtmb3IobGV0IHM9MCxyPWUubGVuZ3RoO3M8cjsrK3Mpe2NvbnN0IHI9ZVtzXTthPDAmJihhPXIpO2lmKG4+PTAmJm4rMSE9PXIpe3QucHVzaCh7YmVnaW5DaHVuazphLGVuZENodW5rOm4rMX0pO2E9cn1zKzE9PT1lLmxlbmd0aCYmdC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6cisxfSk7bj1yfXJldHVybiB0fW9uUmVjZWl2ZURhdGEoZSl7Y29uc3R7Y2h1bmtTaXplOnQsbGVuZ3RoOmEsc3RyZWFtOm59PXRoaXMscz1lLmNodW5rLHI9dm9pZCAwPT09ZS5iZWdpbixpPXI/bi5wcm9ncmVzc2l2ZURhdGFMZW5ndGg6ZS5iZWdpbixvPWkrcy5ieXRlTGVuZ3RoLGw9TWF0aC5mbG9vcihpL3QpLGY9bzxhP01hdGguZmxvb3Ioby90KTpNYXRoLmNlaWwoby90KTtyP24ub25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKHMpOm4ub25SZWNlaXZlRGF0YShpLHMpO24uaXNEYXRhTG9hZGVkJiZ0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlc29sdmUobik7Y29uc3QgYz1bXTtmb3IobGV0IGU9bDtlPGY7KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoYSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxjLnB1c2goYSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT1uLm51bUNodW5rc0xvYWRlZCl7Y29uc3QgdD1uLm51bUNodW5rcy0xO24uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT1uLm5leHRFbXB0eUNodW5rKGYpO051bWJlci5pc0ludGVnZXIoZSkmJnRoaXMuX3JlcXVlc3RDaHVua3MoW2VdKX1mb3IoY29uc3QgZSBvZiBjKXtjb25zdCB0PXRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmdldChlKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5kZWxldGUoZSk7dC5yZXNvbHZlKCl9dGhpcy5tc2dIYW5kbGVyLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOk1hdGhDbGFtcChuLm51bUNodW5rc0xvYWRlZCp0LG4ucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoLGEpLHRvdGFsOmF9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmU3RyZWFtPy5jYW5jZWxBbGxSZXF1ZXN0cyhlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC52YWx1ZXMoKSl0LnJlamVjdChlKX19ZnVuY3Rpb24gY29udmVydFRvUkdCQShlKXtzd2l0Y2goZS5raW5kKXtjYXNlIEY6cmV0dXJuIGNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKGUpO2Nhc2UgVDpyZXR1cm4gZnVuY3Rpb24gY29udmVydFJHQlRvUkdCQSh7c3JjOmUsc3JjUG9zOnQ9MCxkZXN0OmEsZGVzdFBvczpuPTAsd2lkdGg6cyxoZWlnaHQ6cn0pe2xldCBpPTA7Y29uc3Qgbz1zKnIqMyxsPW8+PjIsZj1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsdCxsKSxjPUZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzQyNzgxOTAwODA6MjU1O2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKXtmb3IoO2k8bC0yO2krPTMsbis9NCl7Y29uc3QgZT1mW2ldLHQ9ZltpKzFdLHM9ZltpKzJdO2Fbbl09ZXxjO2FbbisxXT1lPj4+MjR8dDw8OHxjO2FbbisyXT10Pj4+MTZ8czw8MTZ8YzthW24rM109cz4+Pjh8Y31mb3IobGV0IHM9NCppLHI9dCtvO3M8cjtzKz0zKWFbbisrXT1lW3NdfGVbcysxXTw8OHxlW3MrMl08PDE2fGN9ZWxzZXtmb3IoO2k8bC0yO2krPTMsbis9NCl7Y29uc3QgZT1mW2ldLHQ9ZltpKzFdLHM9ZltpKzJdO2Fbbl09ZXxjO2FbbisxXT1lPDwyNHx0Pj4+OHxjO2FbbisyXT10PDwxNnxzPj4+MTZ8YzthW24rM109czw8OHxjfWZvcihsZXQgcz00Kmkscj10K287czxyO3MrPTMpYVtuKytdPWVbc108PDI0fGVbcysxXTw8MTZ8ZVtzKzJdPDw4fGN9cmV0dXJue3NyY1Bvczp0K28sZGVzdFBvczpufX0oZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDphLHdpZHRoOm4saGVpZ2h0OnMsbm9uQmxhY2tDb2xvcjpyPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTppPSExfSl7Y29uc3Qgbz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbbCxmXT1pP1tyLG9dOltvLHJdLGM9bj4+MyxoPTcmbix1PWxeZixtPWUubGVuZ3RoO2E9bmV3IFVpbnQzMkFycmF5KGEuYnVmZmVyKTtsZXQgcD0wO2ZvcihsZXQgbj0wO248czsrK24pe2Zvcihjb25zdCBuPXQrYzt0PG47Kyt0LHArPTgpe2NvbnN0IG49ZVt0XTthW3BdPWxeLShuPj43JjEpJnU7YVtwKzFdPWxeLShuPj42JjEpJnU7YVtwKzJdPWxeLShuPj41JjEpJnU7YVtwKzNdPWxeLShuPj40JjEpJnU7YVtwKzRdPWxeLShuPj4zJjEpJnU7YVtwKzVdPWxeLShuPj4yJjEpJnU7YVtwKzZdPWxeLShuPj4xJjEpJnU7YVtwKzddPWxeLSgxJm4pJnV9aWYoMD09PWgpY29udGludWU7Y29uc3Qgbj10PG0/ZVt0KytdOjI1NTtmb3IobGV0IGU9MDtlPGg7KytlLCsrcClhW3BdPWxeLShuPj43LWUmMSkmdX1yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpwfX1jbGFzcyBJbWFnZVJlc2l6ZXJ7c3RhdGljI089MjA0ODtzdGF0aWMjUj1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2ltZ0RhdGE9ZTt0aGlzLl9pc01hc2s9dH1zdGF0aWMgZ2V0IGNhblVzZUltYWdlRGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiY2FuVXNlSW1hZ2VEZWNvZGVyIix0aGlzLiNSP0ltYWdlRGVjb2Rlci5pc1R5cGVTdXBwb3J0ZWQoImltYWdlL2JtcCIpOlByb21pc2UucmVzb2x2ZSghMSkpfXN0YXRpYyBuZWVkc1RvQmVSZXNpemVkKGUsdCl7aWYoZTw9dGhpcy4jTyYmdDw9dGhpcy4jTylyZXR1cm4hMTtjb25zdHtNQVhfRElNOmF9PXRoaXM7aWYoZT5hfHx0PmEpcmV0dXJuITA7Y29uc3Qgbj1lKnQ7aWYodGhpcy5faGFzTWF4QXJlYSlyZXR1cm4gbj50aGlzLk1BWF9BUkVBO2lmKG48dGhpcy4jTyoqMilyZXR1cm4hMTtpZih0aGlzLl9hcmVHb29kRGltcyhlLHQpKXt0aGlzLiNPPU1hdGgubWF4KHRoaXMuI08sTWF0aC5mbG9vcihNYXRoLnNxcnQoZSp0KSkpO3JldHVybiExfXRoaXMuI089dGhpcy5fZ3Vlc3NNYXgodGhpcy4jTyxhLDEyOCwwKTtyZXR1cm4gbj4odGhpcy5NQVhfQVJFQT10aGlzLiNPKioyKX1zdGF0aWMgZ2V0UmVkdWNlUG93ZXJGb3JKUFgoZSx0LGEpe2NvbnN0IG49ZSp0LHM9MioqMzAvKDQqYSk7aWYoIXRoaXMubmVlZHNUb0JlUmVzaXplZChlLHQpKXJldHVybiBuPnM/TWF0aC5jZWlsKE1hdGgubG9nMihuL3MpKTowO2NvbnN0e01BWF9ESU06cixNQVhfQVJFQTppfT10aGlzLG89TWF0aC5tYXgoZS9yLHQvcixNYXRoLnNxcnQobi9NYXRoLm1pbihzLGkpKSk7cmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZzIobykpfXN0YXRpYyBnZXQgTUFYX0RJTSgpe3JldHVybiBzaGFkb3codGhpcywiTUFYX0RJTSIsdGhpcy5fZ3Vlc3NNYXgoMjA0OCwzMjc2OCwwLDEpKX1zdGF0aWMgZ2V0IE1BWF9BUkVBKCl7dGhpcy5faGFzTWF4QXJlYT0hMDtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9BUkVBIix0aGlzLl9ndWVzc01heCh0aGlzLiNPLHRoaXMuTUFYX0RJTSwxMjgsMCkqKjIpfXN0YXRpYyBzZXQgTUFYX0FSRUEoZSl7aWYoZT49MCl7dGhpcy5faGFzTWF4QXJlYT0hMDtzaGFkb3codGhpcywiTUFYX0FSRUEiLGUpfX1zdGF0aWMgc2V0T3B0aW9ucyh7Y2FudmFzTWF4QXJlYUluQnl0ZXM6ZT0tMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDp0PSExfSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mik7dGhpcy4jUj10fXN0YXRpYyBfYXJlR29vZERpbXMoZSx0KXt0cnl7Y29uc3QgYT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGUsdCksbj1hLmdldENvbnRleHQoIjJkIik7bi5maWxsUmVjdCgwLDAsMSwxKTtjb25zdCBzPW4uZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbM107YS53aWR0aD1hLmhlaWdodD0xO3JldHVybiAwIT09c31jYXRjaHtyZXR1cm4hMX19c3RhdGljIF9ndWVzc01heChlLHQsYSxuKXtmb3IoO2UrYSsxPHQ7KXtjb25zdCBhPU1hdGguZmxvb3IoKGUrdCkvMikscz1ufHxhO3RoaXMuX2FyZUdvb2REaW1zKGEscyk/ZT1hOnQ9YX1yZXR1cm4gZX1zdGF0aWMgYXN5bmMgY3JlYXRlSW1hZ2UoZSx0PSExKXtyZXR1cm4gbmV3IEltYWdlUmVzaXplcihlLHQpLl9jcmVhdGVJbWFnZSgpfWFzeW5jIF9jcmVhdGVJbWFnZSgpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse3dpZHRoOnQsaGVpZ2h0OmF9PWU7aWYodCphKjQ+bWEpe2NvbnN0IGU9dGhpcy4jSCgpO2lmKGUpcmV0dXJuIGV9Y29uc3Qgbj10aGlzLl9lbmNvZGVCTVAoKTtsZXQgcyxyO2lmKGF3YWl0IEltYWdlUmVzaXplci5jYW5Vc2VJbWFnZURlY29kZXIpe3M9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTpuLHR5cGU6ImltYWdlL2JtcCIscHJlZmVyQW5pbWF0aW9uOiExLHRyYW5zZmVyOltuLmJ1ZmZlcl19KTtyPXMuZGVjb2RlKCkuY2F0Y2goZT0+e3dhcm4oYEJNUCBpbWFnZSBkZWNvZGluZyBmYWlsZWQ6ICR7ZX1gKTtyZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAobmV3IEJsb2IoW3RoaXMuX2VuY29kZUJNUCgpLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSl9KS5maW5hbGx5KCgpPT57cy5jbG9zZSgpfSl9ZWxzZSByPWNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFtuLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSk7Y29uc3R7TUFYX0FSRUE6aSxNQVhfRElNOm99PUltYWdlUmVzaXplcixsPU1hdGgubWF4KHQvbyxhL28sTWF0aC5zcXJ0KHQqYS9pKSksZj1NYXRoLm1heChsLDIpLGM9TWF0aC5yb3VuZCgxMCoobCsxLjI1KSkvMTAvZixoPU1hdGguZmxvb3IoTWF0aC5sb2cyKGMpKSx1PW5ldyBBcnJheShoKzIpLmZpbGwoMik7dVswXT1mO3Uuc3BsaWNlKC0xLDEsYy8oMTw8aCkpO2xldCBtPXQscD1hO2NvbnN0IGQ9YXdhaXQgcjtsZXQgZz1kLmltYWdlfHxkO2Zvcihjb25zdCBlIG9mIHUpe2NvbnN0IHQ9bSxhPXA7bT1NYXRoLmZsb29yKG0vZSk7cD1NYXRoLmZsb29yKHAvZSk7Y29uc3Qgbj1uZXcgT2Zmc2NyZWVuQ2FudmFzKG0scCk7bi5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShnLDAsMCx0LGEsMCwwLG0scCk7Zy5jbG9zZSgpO2c9bi50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX1lLmRhdGE9bnVsbDtlLmJpdG1hcD1nO2Uud2lkdGg9bTtlLmhlaWdodD1wO3JldHVybiBlfSNIKCl7Y29uc3R7X2ltZ0RhdGE6ZX09dGhpcyx7ZGF0YTp0LHdpZHRoOmEsaGVpZ2h0Om4sa2luZDpzfT1lLHI9YSpuKjQsaT1NYXRoLmNlaWwoTWF0aC5sb2cyKHIvbWEpKSxvPWE+PmksbD1uPj5pO2xldCBmLGM9bjt0cnl7Zj1uZXcgVWludDhBcnJheShyKX1jYXRjaHtsZXQgZT1NYXRoLmZsb29yKE1hdGgubG9nMihyKzEpKTtmb3IoOzspdHJ5e2Y9bmV3IFVpbnQ4QXJyYXkoMioqZS0xKTticmVha31jYXRjaHtlLT0xfWM9TWF0aC5mbG9vcigoMioqZS0xKS8oNCphKSk7Y29uc3QgdD1hKmMqNDt0PGYubGVuZ3RoJiYoZj1uZXcgVWludDhBcnJheSh0KSl9Y29uc3QgaD1uZXcgVWludDMyQXJyYXkoZi5idWZmZXIpLHU9bmV3IFVpbnQzMkFycmF5KG8qbCk7bGV0IG09MCxwPTA7Y29uc3QgZD1NYXRoLmNlaWwobi9jKSxnPW4lYz09PTA/bjpuJWM7Zm9yKGxldCBlPTA7ZTxkO2UrKyl7Y29uc3Qgbj1lPGQtMT9jOmc7KHtzcmNQb3M6bX09Y29udmVydFRvUkdCQSh7a2luZDpzLHNyYzp0LGRlc3Q6aCx3aWR0aDphLGhlaWdodDpuLGludmVyc2VEZWNvZGU6dGhpcy5faXNNYXNrLHNyY1BvczptfSkpO2ZvcihsZXQgZT0wLHQ9bj4+aTtlPHQ7ZSsrKXtjb25zdCB0PWguc3ViYXJyYXkoKGU8PGkpKmEpO2ZvcihsZXQgZT0wO2U8bztlKyspdVtwKytdPXRbZTw8aV19fWlmKEltYWdlUmVzaXplci5uZWVkc1RvQmVSZXNpemVkKG8sbCkpe2UuZGF0YT11O2Uud2lkdGg9bztlLmhlaWdodD1sO2Uua2luZD1PO3JldHVybiBudWxsfWNvbnN0IGI9bmV3IE9mZnNjcmVlbkNhbnZhcyhvLGwpO2IuZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KS5wdXRJbWFnZURhdGEobmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkodS5idWZmZXIpLG8sbCksMCwwKTtlLmRhdGE9bnVsbDtlLmJpdG1hcD1iLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpO2Uud2lkdGg9bztlLmhlaWdodD1sO3JldHVybiBlfV9lbmNvZGVCTVAoKXtjb25zdHt3aWR0aDplLGhlaWdodDp0LGtpbmQ6YX09dGhpcy5faW1nRGF0YTtsZXQgbixzPXRoaXMuX2ltZ0RhdGEuZGF0YSxyPW5ldyBVaW50OEFycmF5KDApLGk9cixvPTA7c3dpdGNoKGEpe2Nhc2UgRjp7bj0xO3I9bmV3IFVpbnQ4QXJyYXkodGhpcy5faXNNYXNrP1syNTUsMjU1LDI1NSwyNTUsMCwwLDAsMF06WzAsMCwwLDAsMjU1LDI1NSwyNTUsMjU1XSk7Y29uc3QgYT1lKzc+PjMsaT1hKzMmLTQ7aWYoYSE9PWkpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoaSp0KTtsZXQgbj0wO2ZvcihsZXQgcj0wLG89dCphO3I8bztyKz1hLG4rPWkpZS5zZXQocy5zdWJhcnJheShyLHIrYSksbik7cz1lfWJyZWFrfWNhc2UgVDpuPTI0O2lmKDMmZSl7Y29uc3QgYT0zKmUsbj1hKzMmLTQscj1uLWEsaT1uZXcgVWludDhBcnJheShuKnQpO2xldCBvPTA7Zm9yKGxldCBlPTAsbj10KmE7ZTxuO2UrPWEpe2NvbnN0IHQ9cy5zdWJhcnJheShlLGUrYSk7Zm9yKGxldCBlPTA7ZTxhO2UrPTMpe2lbbysrXT10W2UrMl07aVtvKytdPXRbZSsxXTtpW28rK109dFtlXX1vKz1yfXM9aX1lbHNlIGZvcihsZXQgZT0wLHQ9cy5sZW5ndGg7ZTx0O2UrPTMpe2NvbnN0IHQ9c1tlXTtzW2VdPXNbZSsyXTtzW2UrMl09dH1icmVhaztjYXNlIE86bj0zMjtvPTM7aT1uZXcgVWludDhBcnJheSg2OCk7Y29uc3QgYT1uZXcgRGF0YVZpZXcoaS5idWZmZXIpO2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKXthLnNldFVpbnQzMigwLDI1NSwhMCk7YS5zZXRVaW50MzIoNCw2NTI4MCwhMCk7YS5zZXRVaW50MzIoOCwxNjcxMTY4MCwhMCk7YS5zZXRVaW50MzIoMTIsNDI3ODE5MDA4MCwhMCl9ZWxzZXthLnNldFVpbnQzMigwLDQyNzgxOTAwODAsITApO2Euc2V0VWludDMyKDQsMTY3MTE2ODAsITApO2Euc2V0VWludDMyKDgsNjUyODAsITApO2Euc2V0VWludDMyKDEyLDI1NSwhMCl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0Iil9bGV0IGw9MDtjb25zdCBmPTQwK2kubGVuZ3RoLGM9MTQrZityLmxlbmd0aCtzLmxlbmd0aCxoPW5ldyBVaW50OEFycmF5KGMpLHU9bmV3IERhdGFWaWV3KGguYnVmZmVyKTt1LnNldFVpbnQxNihsLDE5Nzc4LCEwKTtsKz0yO3Uuc2V0VWludDMyKGwsYywhMCk7bCs9NDt1LnNldFVpbnQzMihsLDAsITApO2wrPTQ7dS5zZXRVaW50MzIobCwxNCtmK3IubGVuZ3RoLCEwKTtsKz00O3Uuc2V0VWludDMyKGwsZiwhMCk7bCs9NDt1LnNldEludDMyKGwsZSwhMCk7bCs9NDt1LnNldEludDMyKGwsLXQsITApO2wrPTQ7dS5zZXRVaW50MTYobCwxLCEwKTtsKz0yO3Uuc2V0VWludDE2KGwsbiwhMCk7bCs9Mjt1LnNldFVpbnQzMihsLG8sITApO2wrPTQ7dS5zZXRVaW50MzIobCwwLCEwKTtsKz00O3Uuc2V0SW50MzIobCwwLCEwKTtsKz00O3Uuc2V0SW50MzIobCwwLCEwKTtsKz00O3Uuc2V0VWludDMyKGwsci5sZW5ndGgvNCwhMCk7bCs9NDt1LnNldFVpbnQzMihsLDAsITApO2wrPTQ7aC5zZXQoaSxsKTtsKz1pLmxlbmd0aDtoLnNldChyLGwpO2wrPXIubGVuZ3RoO2guc2V0KHMsbCk7cmV0dXJuIGh9fWNvbnN0IElhPWFzeW5jIGZ1bmN0aW9uIEpCaWcyKGU9e30pe3ZhciB0PWUscXVpdF89KGUsdCk9Pnt0aHJvdyB0fSxhPWltcG9ydC5tZXRhLnVybDt0cnl7bmV3IFVSTCgiLiIsYSkuaHJlZn1jYXRjaHt9MDtjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpO3ZhciBuLHMscixpLG8sbD1jb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSksZj0hMSxjPSExO2Z1bmN0aW9uIHVwZGF0ZU1lbW9yeVZpZXdzKCl7dmFyIGU9dS5idWZmZXI7aT1uZXcgSW50OEFycmF5KGUpO25ldyBJbnQxNkFycmF5KGUpO289bmV3IFVpbnQ4QXJyYXkoZSk7bmV3IFVpbnQxNkFycmF5KGUpO25ldyBJbnQzMkFycmF5KGUpO25ldyBVaW50MzJBcnJheShlKTtuZXcgRmxvYXQzMkFycmF5KGUpO25ldyBGbG9hdDY0QXJyYXkoZSk7bmV3IEJpZ0ludDY0QXJyYXkoZSk7bmV3IEJpZ1VpbnQ2NEFycmF5KGUpfWNsYXNzIEV4aXRTdGF0dXN7bmFtZT0iRXhpdFN0YXR1cyI7Y29uc3RydWN0b3IoZSl7dGhpcy5tZXNzYWdlPWBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCR7ZX0pYDt0aGlzLnN0YXR1cz1lfX12YXIgaCx1LGNhbGxSdW50aW1lQ2FsbGJhY2tzPWU9Pntmb3IoO2UubGVuZ3RoPjA7KWUuc2hpZnQoKSh0KX0sbT1bXSxhZGRPblBvc3RSdW49ZT0+bS5wdXNoKGUpLHA9W10sYWRkT25QcmVSdW49ZT0+cC5wdXNoKGUpLGQ9ITAsZz0wLGI9e30saGFuZGxlRXhjZXB0aW9uPWU9PntpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1c3x8InVud2luZCI9PWUpcmV0dXJuIG47cXVpdF8oMCxlKX0sa2VlcFJ1bnRpbWVBbGl2ZT0oKT0+ZHx8Zz4wLF9wcm9jX2V4aXQ9ZT0+e249ZTtpZigha2VlcFJ1bnRpbWVBbGl2ZSgpKXt0Lm9uRXhpdD8uKGUpO2Y9ITB9cXVpdF8oMCxuZXcgRXhpdFN0YXR1cyhlKSl9LF9leGl0PShlLHQpPT57bj1lO19wcm9jX2V4aXQoZSl9LGNhbGxVc2VyQ2FsbGJhY2s9ZT0+e2lmKCFmKXRyeXtyZXR1cm4gZSgpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX1maW5hbGx5eygoKT0+e2lmKCFrZWVwUnVudGltZUFsaXZlKCkpdHJ5e19leGl0KG4pfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX19KSgpfX0sYWxpZ25NZW1vcnk9KGUsdCk9Pk1hdGguY2VpbChlL3QpKnQsZ3Jvd01lbW9yeT1lPT57dmFyIHQ9KGUtdS5idWZmZXIuYnl0ZUxlbmd0aCs2NTUzNSkvNjU1MzZ8MDt0cnl7dS5ncm93KHQpO3VwZGF0ZU1lbW9yeVZpZXdzKCk7cmV0dXJuIDF9Y2F0Y2goZSl7fX07dC5ub0V4aXRSdW50aW1lJiYoZD10Lm5vRXhpdFJ1bnRpbWUpO3QucHJpbnQmJnQucHJpbnQ7dC5wcmludEVyciYmKGw9dC5wcmludEVycik7dC53YXNtQmluYXJ5JiZ0Lndhc21CaW5hcnk7dC5hcmd1bWVudHMmJnQuYXJndW1lbnRzO3QudGhpc1Byb2dyYW0mJnQudGhpc1Byb2dyYW07aWYodC5wcmVJbml0KXsiZnVuY3Rpb24iPT10eXBlb2YgdC5wcmVJbml0JiYodC5wcmVJbml0PVt0LnByZUluaXRdKTtmb3IoO3QucHJlSW5pdC5sZW5ndGg+MDspdC5wcmVJbml0LnNoaWZ0KCkoKX10LndyaXRlQXJyYXlUb01lbW9yeT0oZSx0KT0+e2kuc2V0KGUsdCl9O3ZhciB3LGo9e2U6KCk9PmZ1bmN0aW9uIGFib3J0KGUpe3Qub25BYm9ydD8uKGUpO2woZT0iQWJvcnRlZCgiK2UrIikiKTtmPSEwO2UrPSIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIjt2YXIgYT1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGUpO3I/LihhKTt0aHJvdyBhfSgiIiksYjooKT0+e2Q9ITE7Zz0wfSxjOihlLHQpPT57aWYoYltlXSl7Y2xlYXJUaW1lb3V0KGJbZV0uaWQpO2RlbGV0ZSBiW2VdfWlmKCF0KXJldHVybiAwO3ZhciBhPXNldFRpbWVvdXQoKCk9PntkZWxldGUgYltlXTtjYWxsVXNlckNhbGxiYWNrKCgpPT5oKGUscGVyZm9ybWFuY2Uubm93KCkpKX0sdCk7YltlXT17aWQ6YSx0aW1lb3V0X21zOnR9O3JldHVybiAwfSxnOmZ1bmN0aW9uIF9jcmVhdGVJbWFnZURhdGEoZSl7dC5pbWFnZURhdGE9bmV3IFVpbnQ4QXJyYXkoZSl9LGQ6ZT0+e3ZhciB0PW8ubGVuZ3RoLGE9MjE0NzQ4MzY0ODtpZigoZT4+Pj0wKT5hKXJldHVybiExO2Zvcih2YXIgbj0xO248PTQ7bio9Mil7dmFyIHM9dCooMSsuMi9uKTtzPU1hdGgubWluKHMsZSsxMDA2NjMyOTYpO3ZhciByPU1hdGgubWluKGEsYWxpZ25NZW1vcnkoTWF0aC5tYXgoZSxzKSw2NTUzNikpO2lmKGdyb3dNZW1vcnkocikpcmV0dXJuITB9cmV0dXJuITF9LGE6X3Byb2NfZXhpdCxoOmZ1bmN0aW9uIF9zZXRJbWFnZURhdGEoZSxhLG4scyl7aWYobj09PWEpe3QuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheShvLnN1YmFycmF5KGUsZStuKnMpKTtyZXR1cm59Y29uc3Qgcj1hKnMsaT10LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkocik7Zm9yKGxldCB0PWUscz0wO3M8cjt0Kz1uLHMrPWEpaS5zZXQoby5zdWJhcnJheSh0LHQrYSkscyl9LGY6ZnVuY3Rpb24gX3NldExpbmVEYXRhKGUsYSxuKXt0LmltYWdlRGF0YS5zZXQoby5zdWJhcnJheShlLGUrYSksbil9fTt3PWF3YWl0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVdhc20oKXtmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoZSxhKXshZnVuY3Rpb24gYXNzaWduV2FzbUV4cG9ydHMoZSl7dC5fbWFsbG9jPWUuazt0Ll9mcmVlPWUubDt0Ll9qYmlnMl9kZWNvZGU9ZS5tO3QuX2NjaXR0X2RlY29kZT1lLm47aD1lLm87dT1lLmk7ZS5fX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlfSh3PWUuZXhwb3J0cyk7dXBkYXRlTWVtb3J5Vmlld3MoKTtyZXR1cm4gd312YXIgZT1mdW5jdGlvbiBnZXRXYXNtSW1wb3J0cygpe3JldHVybnthOmp9fSgpO3JldHVybiBuZXcgUHJvbWlzZSgoYSxuKT0+e3QuaW5zdGFudGlhdGVXYXNtKGUsKGUsdCk9PnthKHJlY2VpdmVJbnN0YW5jZShlKSl9KX0pfSgpOyFmdW5jdGlvbiBydW4oKXshZnVuY3Rpb24gcHJlUnVuKCl7aWYodC5wcmVSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiB0LnByZVJ1biYmKHQucHJlUnVuPVt0LnByZVJ1bl0pO2Zvcig7dC5wcmVSdW4ubGVuZ3RoOylhZGRPblByZVJ1bih0LnByZVJ1bi5zaGlmdCgpKX1jYWxsUnVudGltZUNhbGxiYWNrcyhwKX0oKTtmdW5jdGlvbiBkb1J1bigpe3QuY2FsbGVkUnVuPSEwO2lmKCFmKXshZnVuY3Rpb24gaW5pdFJ1bnRpbWUoKXtjPSEwO3cuaigpfSgpO3M/Lih0KTt0Lm9uUnVudGltZUluaXRpYWxpemVkPy4oKTshZnVuY3Rpb24gcG9zdFJ1bigpe2lmKHQucG9zdFJ1bil7ImZ1bmN0aW9uIj09dHlwZW9mIHQucG9zdFJ1biYmKHQucG9zdFJ1bj1bdC5wb3N0UnVuXSk7Zm9yKDt0LnBvc3RSdW4ubGVuZ3RoOylhZGRPblBvc3RSdW4odC5wb3N0UnVuLnNoaWZ0KCkpfWNhbGxSdW50aW1lQ2FsbGJhY2tzKG0pfSgpfX1pZih0LnNldFN0YXR1cyl7dC5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKTtzZXRUaW1lb3V0KCgpPT57c2V0VGltZW91dCgoKT0+dC5zZXRTdGF0dXMoIiIpLDEpO2RvUnVuKCl9LDEpfWVsc2UgZG9SdW4oKX0oKTtyZXR1cm4gYz90Om5ldyBQcm9taXNlKChlLHQpPT57cz1lO3I9dH0pfTtjbGFzcyBKYmlnMkVycm9yIGV4dGVuZHMgYWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSmJpZzJFcnJvciIpfX1jbGFzcyBKQmlnMkNDSVRURmF4SW1hZ2V7c3RhdGljI0I9bnVsbDtzdGF0aWMjRD1udWxsO3N0YXRpYyNNPW51bGw7c3RhdGljI0M9ITA7c3RhdGljI049ITA7c3RhdGljI0k9bnVsbDtzdGF0aWMgc2V0T3B0aW9ucyh7aGFuZGxlcjplLHVzZVdhc206dCx1c2VXb3JrZXJGZXRjaDphLHdhc21Vcmw6bn0pe3RoaXMuI0M9dDt0aGlzLiNOPWE7dGhpcy4jST1uO2F8fCh0aGlzLiNEPWUpfXN0YXRpYyBhc3luYyNQKGUpe2NvbnN0IHQ9YCR7dGhpcy4jSX1qYmlnMl9ub3dhc21fZmFsbGJhY2suanNgO2xldCBhPW51bGw7dHJ5e2E9KGF3YWl0IGltcG9ydCgKLyp3ZWJwYWNrSWdub3JlOiB0cnVlKi8KLypAdml0ZS1pZ25vcmUqLwp0KSkuZGVmYXVsdCgpfWNhdGNoKGUpe3dhcm4oYEpCaWcyQ0NJVFRGYXhJbWFnZSNnZXRKc01vZHVsZTogJHtlfWApfWUoYSl9c3RhdGljIGFzeW5jI0UoZSx0LGEpe2NvbnN0IG49ImpiaWcyLndhc20iO3RyeXt0aGlzLiNCfHwodGhpcy4jTj90aGlzLiNCPWF3YWl0IGZldGNoQmluYXJ5RGF0YShgJHt0aGlzLiNJfSR7bn1gKTp0aGlzLiNCPWF3YWl0IHRoaXMuI0Quc2VuZFdpdGhQcm9taXNlKCJGZXRjaEJpbmFyeURhdGEiLHtraW5kOiJ3YXNtVXJsIixmaWxlbmFtZTpufSkpO3JldHVybiBhKChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh0aGlzLiNCLHQpKS5pbnN0YW5jZSl9Y2F0Y2godCl7d2FybihgSkJpZzJDQ0lUVEZheEltYWdlI2luc3RhbnRpYXRlV2FzbTogJHt0fWApO3RoaXMuI1AoZSk7cmV0dXJuIG51bGx9ZmluYWxseXt0aGlzLiNEPW51bGx9fXN0YXRpYyBhc3luYyBkZWNvZGUoZSx0LGEsbixzKXtpZighdGhpcy4jTSl7Y29uc3R7cHJvbWlzZTplLHJlc29sdmU6dH09UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCksYT1bZV07dGhpcy4jQz9hLnB1c2goSWEoe3dhcm4saW5zdGFudGlhdGVXYXNtOnRoaXMuI0UuYmluZCh0aGlzLHQpfSkpOnRoaXMuI1AodCk7dGhpcy4jTT1Qcm9taXNlLnJhY2UoYSl9Y29uc3Qgcj1hd2FpdCB0aGlzLiNNO2lmKCFyKXRocm93IG5ldyBKYmlnMkVycm9yKCJKQmlnMiBmYWlsZWQgdG8gaW5pdGlhbGl6ZSIpO2xldCBpLG87dHJ5e2NvbnN0IGw9ZS5sZW5ndGg7aT1yLl9tYWxsb2MobCk7ci53cml0ZUFycmF5VG9NZW1vcnkoZSxpKTtpZihzKXIuX2NjaXR0X2RlY29kZShpLGwsdCxhLHMuSyxzLkVuZE9mTGluZT8xOjAscy5FbmNvZGVkQnl0ZUFsaWduPzE6MCxzLkJsYWNrSXMxPzE6MCxzLkNvbHVtbnMscy5Sb3dzKTtlbHNle2NvbnN0IGU9bj9uLmxlbmd0aDowO2lmKGU+MCl7bz1yLl9tYWxsb2MoZSk7ci53cml0ZUFycmF5VG9NZW1vcnkobixvKX1yLl9qYmlnMl9kZWNvZGUoaSxsLHQsYSxvLGUpfWlmKCFyLmltYWdlRGF0YSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiVW5rbm93biBlcnJvciIpO2NvbnN0e2ltYWdlRGF0YTpmfT1yO3IuaW1hZ2VEYXRhPW51bGw7cmV0dXJuIGZ9ZmluYWxseXtpJiZyLl9mcmVlKGkpO28mJnIuX2ZyZWUobyl9fXN0YXRpYyBjbGVhbnVwKCl7dGhpcy4jTT1udWxsfX1jb25zdCBGYT1uZXcgVWludDhBcnJheSgwKTtjbGFzcyBEZWNvZGVTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fcmF3TWluQnVmZmVyTGVuZ3RoPWV8fDA7dGhpcy5wb3M9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZW9mPSExO3RoaXMuYnVmZmVyPUZhO3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2xldCBhPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7YTxlOylhKj0yO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoYSk7bi5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPW59Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUsdD1udWxsKXtjb25zdCBhPXRoaXMucG9zO2xldCBuO2lmKGUpe3RoaXMuZW5zdXJlQnVmZmVyKGErZSk7bj1hK2U7Zm9yKDshdGhpcy5lb2YmJnRoaXMuYnVmZmVyTGVuZ3RoPG47KXRoaXMucmVhZEJsb2NrKHQpO2NvbnN0IHM9dGhpcy5idWZmZXJMZW5ndGg7bj5zJiYobj1zKX1lbHNle2Zvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jayh0KTtuPXRoaXMuYnVmZmVyTGVuZ3RofXRoaXMucG9zPW47cmV0dXJuIHRoaXMuYnVmZmVyLnN1YmFycmF5KGEsbil9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdCl7aWYoIXRoaXMuY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIpcmV0dXJuIHRoaXMuaXNBc3luY0RlY29kZXI/dGhpcy5kZWNvZGVJbWFnZShudWxsLGUsdCk6dGhpcy5nZXRCeXRlcyhlLHQpO2NvbnN0IGE9YXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpO3JldHVybiB0aGlzLmRlY29kZUltYWdlKGEsZSx0KX1hc3luYyBhc3luY0dldEJ5dGVzRnJvbURlY29tcHJlc3Npb25TdHJlYW0oZSl7dGhpcy5zdHJlYW0ucmVzZXQoKTtjb25zdCB0PXRoaXMuc3RyZWFtLmlzQXN5bmM/YXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpOnRoaXMuc3RyZWFtLmdldEJ5dGVzKCk7dHJ5e2NvbnN0e3JlYWRhYmxlOmEsd3JpdGFibGU6bn09bmV3IERlY29tcHJlc3Npb25TdHJlYW0oZSkscz1uLmdldFdyaXRlcigpO2F3YWl0IHMucmVhZHk7cy53cml0ZSh0KS50aGVuKGFzeW5jKCk9Pnthd2FpdCBzLnJlYWR5O2F3YWl0IHMuY2xvc2UoKX0pLmNhdGNoKCgpPT57fSk7Y29uc3Qgcj1bXTtsZXQgaT0wO2ZvciBhd2FpdChjb25zdCBlIG9mIGEpe3IucHVzaChlKTtpKz1lLmJ5dGVMZW5ndGh9Y29uc3Qgbz1uZXcgVWludDhBcnJheShpKTtsZXQgbD0wO2Zvcihjb25zdCBlIG9mIHIpe28uc2V0KGUsbCk7bCs9ZS5ieXRlTGVuZ3RofXJldHVybntkZWNvbXByZXNzZWQ6byxjb21wcmVzc2VkOnR9fWNhdGNoe3JldHVybntkZWNvbXByZXNzZWQ6bnVsbCxjb21wcmVzc2VkOnR9fX1yZXNldCgpe3RoaXMucG9zPTB9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXtpZih2b2lkIDA9PT10KWZvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO2Vsc2V7Y29uc3QgYT1lK3Q7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9YSYmIXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpfXJldHVybiBuZXcgU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxhKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cmVhbT90aGlzLnN0cmVhbS5nZXRCYXNlU3RyZWFtcygpOm51bGx9Y2xvbmUoKXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtyZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ1ZmZlcix0aGlzLnN0YXJ0LHRoaXMuZW5kLXRoaXMuc3RhcnQsdGhpcy5kaWN0LmNsb25lKCkpfX1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe2U9ZS5maWx0ZXIoZT0+ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiFlLmlzSW1hZ2VTdHJlYW0pO2xldCBhPTA7Zm9yKGNvbnN0IHQgb2YgZSlhKz10IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtP3QuX3Jhd01pbkJ1ZmZlckxlbmd0aDp0Lmxlbmd0aDtzdXBlcihhKTt0aGlzLnN0cmVhbXM9ZTt0aGlzLl9vbkVycm9yPXR9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbXM7aWYoMD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLnNoaWZ0KCk7bGV0IGE7dHJ5e2E9dC5nZXRCeXRlcygpfWNhdGNoKGUpe2lmKHRoaXMuX29uRXJyb3Ipe3RoaXMuX29uRXJyb3IoZSx0LmRpY3Q/Lm9iaklkKTtyZXR1cm59dGhyb3cgZX1jb25zdCBuPXRoaXMuYnVmZmVyTGVuZ3RoLHM9bithLmxlbmd0aDt0aGlzLmVuc3VyZUJ1ZmZlcihzKS5zZXQoYSxuKTt0aGlzLmJ1ZmZlckxlbmd0aD1zfWdldEJhc2VTdHJlYW1zKCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzLnN0cmVhbXMpe2NvbnN0IGE9dC5nZXRCYXNlU3RyZWFtcygpO2EmJmUucHVzaCguLi5hKX1yZXR1cm4gZS5sZW5ndGg+MD9lOm51bGx9fWNsYXNzIENvbG9yU3BhY2VVdGlsc3tzdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczphPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5Om4sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cixhc3luY0lmTm90Q2FjaGVkOmk9ITF9KXtjb25zdCBvPXt4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5Om4sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn07bGV0IGwsZixjO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2Y9ZTtjb25zdCBhPXMuZ2V0QnlSZWYoZil8fHIuZ2V0QnlSZWYoZik7aWYoYSlyZXR1cm4gYTtlPXQuZmV0Y2goZSl9aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2w9ZS5uYW1lO2NvbnN0IHQ9ci5nZXRCeU5hbWUobCk7aWYodClyZXR1cm4gdH10cnl7Yz10aGlzLiNfKGUsbyl9Y2F0Y2goZSl7aWYoaSYmIShlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pKXJldHVybiBQcm9taXNlLnJlamVjdChlKTt0aHJvdyBlfWlmKGx8fGYpe3Iuc2V0KGwsZixjKTtmJiZzLnNldChudWxsLGYsYyl9cmV0dXJuIGk/UHJvbWlzZS5yZXNvbHZlKGMpOmN9c3RhdGljI3ooZSx0KXtjb25zdHtnbG9iYWxDb2xvclNwYWNlQ2FjaGU6YX09dDtsZXQgbjtpZihlIGluc3RhbmNlb2YgUmVmKXtuPWU7Y29uc3QgdD1hLmdldEJ5UmVmKG4pO2lmKHQpcmV0dXJuIHR9Y29uc3Qgcz10aGlzLiNfKGUsdCk7biYmYS5zZXQobnVsbCxuLHMpO3JldHVybiBzfXN0YXRpYyNfKGUsdCl7Y29uc3R7eHJlZjphLHJlc291cmNlczpuLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpyfT10O2lmKChlPWEuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5yZ2I7Y2FzZSJEZXZpY2VSR0JBIjpyZXR1cm4gdGhpcy5yZ2JhO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobnVsbCk7ZGVmYXVsdDppZihuIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgYT1uLmdldCgiQ29sb3JTcGFjZSIpO2lmKGEgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBuPWEuZ2V0KGUubmFtZSk7aWYobil7aWYobiBpbnN0YW5jZW9mIE5hbWUpcmV0dXJuIHRoaXMuI18obix0KTtlPW47YnJlYWt9fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCk7cmV0dXJuIHRoaXMuZ3JheX1pZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBuPWEuZmV0Y2hJZlJlZihlWzBdKS5uYW1lO2xldCBpLG8sbCxmLGMsaDtzd2l0Y2gobil7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5yZ2I7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLmNteWs7Y2FzZSJDYWxHcmF5IjppPWEuZmV0Y2hJZlJlZihlWzFdKTtmPWkuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPWkuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtoPWkuZ2V0KCJHYW1tYSIpO3JldHVybiBuZXcgQ2FsR3JheUNTKGYsYyxoKTtjYXNlIkNhbFJHQiI6aT1hLmZldGNoSWZSZWYoZVsxXSk7Zj1pLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Yz1pLmdldEFycmF5KCJCbGFja1BvaW50Iik7aD1pLmdldEFycmF5KCJHYW1tYSIpO2NvbnN0IHU9aS5nZXRBcnJheSgiTWF0cml4Iik7cmV0dXJuIG5ldyBDYWxSR0JDUyhmLGMsaCx1KTtjYXNlIklDQ0Jhc2VkIjpjb25zdCBtPWVbMV1pbnN0YW5jZW9mIFJlZjtpZihtKXtjb25zdCB0PXIuZ2V0QnlSZWYoZVsxXSk7aWYodClyZXR1cm4gdH1jb25zdCBwPWEuZmV0Y2hJZlJlZihlWzFdKSxkPXAuZGljdDtvPWQuZ2V0KCJOIik7aWYoSWNjQ29sb3JTcGFjZS5pc1VzYWJsZSl0cnl7Y29uc3QgdD1uZXcgSWNjQ29sb3JTcGFjZShwLmdldEJ5dGVzKCksIklDQ0Jhc2VkIixvKTttJiZyLnNldChudWxsLGVbMV0sdCk7cmV0dXJuIHR9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IHQ7d2FybihgSUNDQmFzZWQgY29sb3Igc3BhY2UgKCR7ZVsxXX0pOiAiJHt0fSIuYCl9Y29uc3QgZz1kLmdldFJhdygiQWx0ZXJuYXRlIik7aWYoZyl7Y29uc3QgZT10aGlzLiN6KGcsdCk7aWYoZS5udW1Db21wcz09PW8pcmV0dXJuIGU7d2FybigiSUNDQmFzZWQgY29sb3Igc3BhY2U6IElnbm9yaW5nIGluY29ycmVjdCAvQWx0ZXJuYXRlIGVudHJ5LiIpfWlmKDE9PT1vKXJldHVybiB0aGlzLmdyYXk7aWYoMz09PW8pcmV0dXJuIHRoaXMucmdiO2lmKDQ9PT1vKXJldHVybiB0aGlzLmNteWs7YnJlYWs7Y2FzZSJQYXR0ZXJuIjpsPWVbMV18fG51bGw7bCYmKGw9dGhpcy4jeihsLHQpKTtyZXR1cm4gbmV3IFBhdHRlcm5DUyhsKTtjYXNlIkkiOmNhc2UiSW5kZXhlZCI6bD10aGlzLiN6KGVbMV0sdCk7Y29uc3QgYj1NYXRoQ2xhbXAoYS5mZXRjaElmUmVmKGVbMl0pLDAsMjU1KSx3PWEuZmV0Y2hJZlJlZihlWzNdKTtyZXR1cm4gbmV3IEluZGV4ZWRDUyhsLGIsdyk7Y2FzZSJTZXBhcmF0aW9uIjpjYXNlIkRldmljZU4iOmNvbnN0IGo9YS5mZXRjaElmUmVmKGVbMV0pO289QXJyYXkuaXNBcnJheShqKT9qLmxlbmd0aDoxO2w9dGhpcy4jeihlWzJdLHQpO2NvbnN0IGs9cy5jcmVhdGUoZVszXSk7cmV0dXJuIG5ldyBBbHRlcm5hdGVDUyhvLGwsayk7Y2FzZSJMYWIiOmk9YS5mZXRjaElmUmVmKGVbMV0pO2Y9aS5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9aS5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2NvbnN0IHk9aS5nZXRBcnJheSgiUmFuZ2UiKTtyZXR1cm4gbmV3IExhYkNTKGYsYyx5KTtkZWZhdWx0Ondhcm4oYFVuaW1wbGVtZW50ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7bn1gKTtyZXR1cm4gdGhpcy5ncmF5fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7ZX1gKTtyZXR1cm4gdGhpcy5ncmF5fXN0YXRpYyBnZXQgZ3JheSgpe3JldHVybiBzaGFkb3codGhpcywiZ3JheSIsbmV3IERldmljZUdyYXlDUyl9c3RhdGljIGdldCByZ2IoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJnYiIsbmV3IERldmljZVJnYkNTKX1zdGF0aWMgZ2V0IHJnYmEoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJnYmEiLG5ldyBEZXZpY2VSZ2JhQ1MpfXN0YXRpYyBnZXQgY215aygpe2lmKENteWtJQ0NCYXNlZENTLmlzVXNhYmxlKXRyeXtyZXR1cm4gc2hhZG93KHRoaXMsImNteWsiLG5ldyBDbXlrSUNDQmFzZWRDUyl9Y2F0Y2h7d2FybigiQ01ZSyBmYWxsYmFjazogRGV2aWNlQ01ZSyIpfXJldHVybiBzaGFkb3codGhpcywiY215ayIsbmV3IERldmljZUNteWtDUyl9fWNsYXNzIEpwZWdFcnJvciBleHRlbmRzIGFhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIGFhe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiRE5MTWFya2VyRXJyb3IiKTt0aGlzLnNjYW5MaW5lcz10fX1jbGFzcyBFT0lNYXJrZXJFcnJvciBleHRlbmRzIGFhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkVPSU1hcmtlckVycm9yIil9fWNvbnN0IFRhPW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSksT2E9NDAxNyxSYT03OTksSGE9MzQwNixCYT0yMjc2LERhPTE1NjcsTWE9Mzc4NCxOYT01NzkzLFBhPTI4OTY7ZnVuY3Rpb24gYnVpbGRIdWZmbWFuVGFibGUoZSx0KXtsZXQgYSxuLHM9MCxyPTE2O2Zvcig7cj4wJiYhZVtyLTFdOylyLS07Y29uc3QgaT1be2NoaWxkcmVuOltdLGluZGV4OjB9XTtsZXQgbyxsPWlbMF07Zm9yKGE9MDthPHI7YSsrKXtmb3Iobj0wO248ZVthXTtuKyspe2w9aS5wb3AoKTtsLmNoaWxkcmVuW2wuaW5kZXhdPXRbc107Zm9yKDtsLmluZGV4PjA7KWw9aS5wb3AoKTtsLmluZGV4Kys7aS5wdXNoKGwpO2Zvcig7aS5sZW5ndGg8PWE7KXtpLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2wuY2hpbGRyZW5bbC5pbmRleF09by5jaGlsZHJlbjtsPW99cysrfWlmKGErMTxyKXtpLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2wuY2hpbGRyZW5bbC5pbmRleF09by5jaGlsZHJlbjtsPW99fXJldHVybiBpWzBdLmNoaWxkcmVufWZ1bmN0aW9uIGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUsdCxhKXtyZXR1cm4gNjQqKChlLmJsb2Nrc1BlckxpbmUrMSkqdCthKX1mdW5jdGlvbiBkZWNvZGVTY2FuKGUsdCxhLG4scyxyLGksbyxsLGYsYz0hMSl7Y29uc3QgaD1uLm1jdXNQZXJMaW5lLHU9bi5wcm9ncmVzc2l2ZSxtPWE7bGV0IHA9MCxkPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGQ+MCl7ZC0tO3JldHVybiBwPj5kJjF9cD1lW2ErK107aWYoMjU1PT09cCl7Y29uc3Qgcz1lW2ErK107aWYocyl7aWYoMjIwPT09cyYmYyl7YSs9Mjtjb25zdCBlPXQuZ2V0VWludDE2KGEpO2ErPTI7aWYoZT4wJiZlIT09bi5zY2FuTGluZXMpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixlKX1lbHNlIGlmKDIxNz09PXMpe2lmKGMpe2NvbnN0IGU9aiooOD09PW4ucHJlY2lzaW9uPzg6MCk7aWYoZT4wJiZNYXRoLnJvdW5kKG4uc2NhbkxpbmVzL2UpPj01KXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSwgcG9zc2libHkgY2F1c2VkIGJ5IGluY29ycmVjdCBgc2NhbkxpbmVzYCBwYXJhbWV0ZXIiLGUpfXRocm93IG5ldyBFT0lNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIpfXRocm93IG5ldyBKcGVnRXJyb3IoYHVuZXhwZWN0ZWQgbWFya2VyICR7KHA8PDh8cykudG9TdHJpbmcoMTYpfWApfX1kPTc7cmV0dXJuIHA+Pj43fWZ1bmN0aW9uIGRlY29kZUh1ZmZtYW4oZSl7bGV0IHQ9ZTtmb3IoOzspe3Q9dFtyZWFkQml0KCldO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOnJldHVybiB0O2Nhc2Uib2JqZWN0Ijpjb250aW51ZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gcmVjZWl2ZShlKXtsZXQgdD0wO2Zvcig7ZT4wOyl7dD10PDwxfHJlYWRCaXQoKTtlLS19cmV0dXJuIHR9ZnVuY3Rpb24gcmVjZWl2ZUFuZEV4dGVuZChlKXtpZigxPT09ZSlyZXR1cm4gMT09PXJlYWRCaXQoKT8xOi0xO2NvbnN0IHQ9cmVjZWl2ZShlKTtyZXR1cm4gdD49MTw8ZS0xP3Q6dCsoLTE8PGUpKzF9bGV0IGc9MDtsZXQgYix3PTA7bGV0IGo9MDtmdW5jdGlvbiBkZWNvZGVNY3UoZSx0LGEsbixzKXtjb25zdCByPWElaDtqPShhL2h8MCkqZS52K247Y29uc3QgaT1yKmUuaCtzO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLGosaSkpfWZ1bmN0aW9uIGRlY29kZUJsb2NrKGUsdCxhKXtqPWEvZS5ibG9ja3NQZXJMaW5lfDA7Y29uc3Qgbj1hJWUuYmxvY2tzUGVyTGluZTt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxqLG4pKX1jb25zdCBrPXMubGVuZ3RoO2xldCB5LHEsdixTLHgsQztDPXU/MD09PWk/MD09PWw/ZnVuY3Rpb24gZGVjb2RlRENGaXJzdChlLHQpe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxuPTA9PT1hPzA6cmVjZWl2ZUFuZEV4dGVuZChhKTw8ZjtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPW59OmZ1bmN0aW9uIGRlY29kZURDU3VjY2Vzc2l2ZShlLHQpe2UuYmxvY2tEYXRhW3RdfD1yZWFkQml0KCk8PGZ9OjA9PT1sP2Z1bmN0aW9uIGRlY29kZUFDRmlyc3QoZSx0KXtpZihnPjApe2ctLTtyZXR1cm59bGV0IGE9aTtjb25zdCBuPW87Zm9yKDthPD1uOyl7Y29uc3Qgbj1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLHM9MTUmbixyPW4+PjQ7aWYoMD09PXMpe2lmKHI8MTUpe2c9cmVjZWl2ZShyKSsoMTw8ciktMTticmVha31hKz0xNjtjb250aW51ZX1hKz1yO2NvbnN0IGk9VGFbYV07ZS5ibG9ja0RhdGFbdCtpXT1yZWNlaXZlQW5kRXh0ZW5kKHMpKigxPDxmKTthKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgYT1pO2NvbnN0IG49bztsZXQgcyxyLGw9MDtmb3IoO2E8PW47KXtjb25zdCBuPXQrVGFbYV0saT1lLmJsb2NrRGF0YVtuXTwwPy0xOjE7c3dpdGNoKHcpe2Nhc2UgMDpyPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyk7cz0xNSZyO2w9cj4+NDtpZigwPT09cylpZihsPDE1KXtnPXJlY2VpdmUobCkrKDE8PGwpO3c9NH1lbHNle2w9MTY7dz0xfWVsc2V7aWYoMSE9PXMpdGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBBQ24gZW5jb2RpbmciKTtiPXJlY2VpdmVBbmRFeHRlbmQocyk7dz1sPzI6M31jb250aW51ZTtjYXNlIDE6Y2FzZSAyOmlmKGUuYmxvY2tEYXRhW25dKWUuYmxvY2tEYXRhW25dKz1pKihyZWFkQml0KCk8PGYpO2Vsc2V7bC0tOzA9PT1sJiYodz0yPT09dz8zOjApfWJyZWFrO2Nhc2UgMzppZihlLmJsb2NrRGF0YVtuXSllLmJsb2NrRGF0YVtuXSs9aSoocmVhZEJpdCgpPDxmKTtlbHNle2UuYmxvY2tEYXRhW25dPWI8PGY7dz0wfWJyZWFrO2Nhc2UgNDplLmJsb2NrRGF0YVtuXSYmKGUuYmxvY2tEYXRhW25dKz1pKihyZWFkQml0KCk8PGYpKX1hKyt9aWYoND09PXcpe2ctLTswPT09ZyYmKHc9MCl9fTpmdW5jdGlvbiBkZWNvZGVCYXNlbGluZShlLHQpe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxuPTA9PT1hPzA6cmVjZWl2ZUFuZEV4dGVuZChhKTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPW47bGV0IHM9MTtmb3IoO3M8NjQ7KXtjb25zdCBhPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksbj0xNSZhLHI9YT4+NDtpZigwPT09bil7aWYocjwxNSlicmVhaztzKz0xNjtjb250aW51ZX1zKz1yO2NvbnN0IGk9VGFbc107ZS5ibG9ja0RhdGFbdCtpXT1yZWNlaXZlQW5kRXh0ZW5kKG4pO3MrK319O2xldCBGLFQ9MDtjb25zdCBPPTE9PT1rP3NbMF0uYmxvY2tzUGVyTGluZSpzWzBdLmJsb2Nrc1BlckNvbHVtbjpoKm4ubWN1c1BlckNvbHVtbjtsZXQgUixIO2Zvcig7VDw9Tzspe2NvbnN0IG49cj9NYXRoLm1pbihPLVQscik6TztpZihuPjApe2ZvcihxPTA7cTxrO3ErKylzW3FdLnByZWQ9MDtnPTA7aWYoMT09PWspe3k9c1swXTtmb3IoeD0wO3g8bjt4Kyspe2RlY29kZUJsb2NrKHksQyxUKTtUKyt9fWVsc2UgZm9yKHg9MDt4PG47eCsrKXtmb3IocT0wO3E8aztxKyspe3k9c1txXTtSPXkuaDtIPXkudjtmb3Iodj0wO3Y8SDt2KyspZm9yKFM9MDtTPFI7UysrKWRlY29kZU1jdSh5LEMsVCx2LFMpfVQrK319ZD0wO0Y9ZmluZE5leHRGaWxlTWFya2VyKGUsdCxhKTtpZighRilicmVhaztpZihGLmludmFsaWQpe3dhcm4oYGRlY29kZVNjYW4gLSAke24+MD8idW5leHBlY3RlZCI6ImV4Y2Vzc2l2ZSJ9IE1DVSBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogJHtGLmludmFsaWR9YCk7YT1GLm9mZnNldH1pZighKEYubWFya2VyPj02NTQ4OCYmRi5tYXJrZXI8PTY1NDk1KSlicmVhazthKz0yfXJldHVybiBhLW19ZnVuY3Rpb24gcXVhbnRpemVBbmRJbnZlcnNlKGUsdCxhKXtjb25zdCBuPWUucXVhbnRpemF0aW9uVGFibGUscz1lLmJsb2NrRGF0YTtsZXQgcixpLG8sbCxmLGMsaCx1LG0scCxkLGcsYix3LGosayx5O2lmKCFuKXRocm93IG5ldyBKcGVnRXJyb3IoIm1pc3NpbmcgcmVxdWlyZWQgUXVhbnRpemF0aW9uIFRhYmxlLiIpO2ZvcihsZXQgZT0wO2U8NjQ7ZSs9OCl7bT1zW3QrZV07cD1zW3QrZSsxXTtkPXNbdCtlKzJdO2c9c1t0K2UrM107Yj1zW3QrZSs0XTt3PXNbdCtlKzVdO2o9c1t0K2UrNl07az1zW3QrZSs3XTttKj1uW2VdO2lmKDAhPT0ocHxkfGd8Ynx3fGp8aykpe3AqPW5bZSsxXTtkKj1uW2UrMl07Zyo9bltlKzNdO2IqPW5bZSs0XTt3Kj1uW2UrNV07aio9bltlKzZdO2sqPW5bZSs3XTtyPU5hKm0rMTI4Pj44O2k9TmEqYisxMjg+Pjg7bz1kO2w9ajtmPVBhKihwLWspKzEyOD4+ODt1PVBhKihwK2spKzEyOD4+ODtjPWc8PDQ7aD13PDw0O3I9citpKzE+PjE7aT1yLWk7eT1vKk1hK2wqRGErMTI4Pj44O289bypEYS1sKk1hKzEyOD4+ODtsPXk7Zj1mK2grMT4+MTtoPWYtaDt1PXUrYysxPj4xO2M9dS1jO3I9citsKzE+PjE7bD1yLWw7aT1pK28rMT4+MTtvPWktbzt5PWYqQmErdSpIYSsyMDQ4Pj4xMjtmPWYqSGEtdSpCYSsyMDQ4Pj4xMjt1PXk7eT1jKlJhK2gqT2ErMjA0OD4+MTI7Yz1jKk9hLWgqUmErMjA0OD4+MTI7aD15O2FbZV09cit1O2FbZSs3XT1yLXU7YVtlKzFdPWkraDthW2UrNl09aS1oO2FbZSsyXT1vK2M7YVtlKzVdPW8tYzthW2UrM109bCtmO2FbZSs0XT1sLWZ9ZWxzZXt5PU5hKm0rNTEyPj4xMDthW2VdPXk7YVtlKzFdPXk7YVtlKzJdPXk7YVtlKzNdPXk7YVtlKzRdPXk7YVtlKzVdPXk7YVtlKzZdPXk7YVtlKzddPXl9fWZvcihsZXQgZT0wO2U8ODsrK2Upe209YVtlXTtwPWFbZSs4XTtkPWFbZSsxNl07Zz1hW2UrMjRdO2I9YVtlKzMyXTt3PWFbZSs0MF07aj1hW2UrNDhdO2s9YVtlKzU2XTtpZigwIT09KHB8ZHxnfGJ8d3xqfGspKXtyPU5hKm0rMjA0OD4+MTI7aT1OYSpiKzIwNDg+PjEyO289ZDtsPWo7Zj1QYSoocC1rKSsyMDQ4Pj4xMjt1PVBhKihwK2spKzIwNDg+PjEyO2M9ZztoPXc7cj00MTEyKyhyK2krMT4+MSk7aT1yLWk7eT1vKk1hK2wqRGErMjA0OD4+MTI7bz1vKkRhLWwqTWErMjA0OD4+MTI7bD15O2Y9ZitoKzE+PjE7aD1mLWg7dT11K2MrMT4+MTtjPXUtYztyPXIrbCsxPj4xO2w9ci1sO2k9aStvKzE+PjE7bz1pLW87eT1mKkJhK3UqSGErMjA0OD4+MTI7Zj1mKkhhLXUqQmErMjA0OD4+MTI7dT15O3k9YypSYStoKk9hKzIwNDg+PjEyO2M9YypPYS1oKlJhKzIwNDg+PjEyO2g9eTttPXIrdTtrPXItdTtwPWkraDtqPWktaDtkPW8rYzt3PW8tYztnPWwrZjtiPWwtZjttPDE2P209MDptPj00MDgwP209MjU1Om0+Pj00O3A8MTY/cD0wOnA+PTQwODA/cD0yNTU6cD4+PTQ7ZDwxNj9kPTA6ZD49NDA4MD9kPTI1NTpkPj49NDtnPDE2P2c9MDpnPj00MDgwP2c9MjU1Omc+Pj00O2I8MTY/Yj0wOmI+PTQwODA/Yj0yNTU6Yj4+PTQ7dzwxNj93PTA6dz49NDA4MD93PTI1NTp3Pj49NDtqPDE2P2o9MDpqPj00MDgwP2o9MjU1Omo+Pj00O2s8MTY/az0wOms+PTQwODA/az0yNTU6az4+PTQ7c1t0K2VdPW07c1t0K2UrOF09cDtzW3QrZSsxNl09ZDtzW3QrZSsyNF09ZztzW3QrZSszMl09YjtzW3QrZSs0MF09dztzW3QrZSs0OF09ajtzW3QrZSs1Nl09a31lbHNle3k9TmEqbSs4MTkyPj4xNDt5PXk8LTIwNDA/MDp5Pj0yMDI0PzI1NTp5KzIwNTY+PjQ7c1t0K2VdPXk7c1t0K2UrOF09eTtzW3QrZSsxNl09eTtzW3QrZSsyNF09eTtzW3QrZSszMl09eTtzW3QrZSs0MF09eTtzW3QrZSs0OF09eTtzW3QrZSs1Nl09eX19fWZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShlLHQpe2NvbnN0IGE9dC5ibG9ja3NQZXJMaW5lLG49dC5ibG9ja3NQZXJDb2x1bW4scz1uZXcgSW50MTZBcnJheSg2NCk7Zm9yKGxldCBlPTA7ZTxuO2UrKylmb3IobGV0IG49MDtuPGE7bisrKXtxdWFudGl6ZUFuZEludmVyc2UodCxnZXRCbG9ja0J1ZmZlck9mZnNldCh0LGUsbikscyl9cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIGZpbmROZXh0RmlsZU1hcmtlcihlLHQsYSxuPWEpe2NvbnN0IHM9ZS5sZW5ndGgtMTtsZXQgcj1uPGE/bjphO2lmKGE+PXMpcmV0dXJuIG51bGw7Y29uc3QgaT10LmdldFVpbnQxNihhKTtpZihpPj02NTQ3MiYmaTw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6aSxvZmZzZXQ6YX07bGV0IG89dC5nZXRVaW50MTYocik7Zm9yKDshKG8+PTY1NDcyJiZvPD02NTUzNCk7KXtpZigrK3I+PXMpcmV0dXJuIG51bGw7bz10LmdldFVpbnQxNihyKX1yZXR1cm57aW52YWxpZDppLnRvU3RyaW5nKDE2KSxtYXJrZXI6byxvZmZzZXQ6cn19ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksYT1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCBuIG9mIGUuY29tcG9uZW50cyl7Y29uc3Qgcz1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqbi5oL2UubWF4SCkscj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKm4udi9lLm1heFYpLGk9dCpuLmgsbz02NCooYSpuLnYpKihpKzEpO24uYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO24uYmxvY2tzUGVyTGluZT1zO24uYmxvY2tzUGVyQ29sdW1uPXJ9ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1hfWZ1bmN0aW9uIHJlYWREYXRhQmxvY2soZSx0LGEpe2NvbnN0IG49dC5nZXRVaW50MTYoYSk7bGV0IHM9KGErPTIpK24tMjtjb25zdCByPWZpbmROZXh0RmlsZU1hcmtlcihlLHQscyxhKTtpZihyPy5pbnZhbGlkKXt3YXJuKCJyZWFkRGF0YUJsb2NrIC0gaW5jb3JyZWN0IGxlbmd0aCwgY3VycmVudCBtYXJrZXIgaXM6ICIrci5pbnZhbGlkKTtzPXIub2Zmc2V0fWNvbnN0IGk9ZS5zdWJhcnJheShhLHMpO3JldHVybnthcHBEYXRhOmksb2xkT2Zmc2V0OmEsbmV3T2Zmc2V0OmEraS5sZW5ndGh9fWZ1bmN0aW9uIHNraXBEYXRhKGUsdCxhKXtjb25zdCBuPXQuZ2V0VWludDE2KGEpLHM9KGErPTIpK24tMixyPWZpbmROZXh0RmlsZU1hcmtlcihlLHQscyxhKTtyZXR1cm4gcj8uaW52YWxpZD9yLm9mZnNldDpzfWNsYXNzIEpwZWdJbWFnZXtjb25zdHJ1Y3Rvcih7ZGVjb2RlVHJhbnNmb3JtOmU9bnVsbCxjb2xvclRyYW5zZm9ybTp0PS0xfT17fSl7dGhpcy5fZGVjb2RlVHJhbnNmb3JtPWU7dGhpcy5fY29sb3JUcmFuc2Zvcm09dH1zdGF0aWMgY2FuVXNlSW1hZ2VEZWNvZGVyKGUsdD0tMSl7Y29uc3QgYT1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCk7bGV0IG49bnVsbCxzPTAscj1udWxsLGk9YS5nZXRVaW50MTYocyk7cys9MjtpZig2NTQ5NiE9PWkpdGhyb3cgbmV3IEpwZWdFcnJvcigiU09JIG5vdCBmb3VuZCIpO2k9YS5nZXRVaW50MTYocyk7cys9MjtlOmZvcig7NjU0OTchPT1pOyl7c3dpdGNoKGkpe2Nhc2UgNjU1MDU6Y29uc3R7YXBwRGF0YTp0LG9sZE9mZnNldDpvLG5ld09mZnNldDpsfT1yZWFkRGF0YUJsb2NrKGUsYSxzKTtzPWw7aWYoNjk9PT10WzBdJiYxMjA9PT10WzFdJiYxMDU9PT10WzJdJiYxMDI9PT10WzNdJiYwPT09dFs0XSYmMD09PXRbNV0pe2lmKG4pdGhyb3cgbmV3IEpwZWdFcnJvcigiRHVwbGljYXRlIEVYSUYtYmxvY2tzIGZvdW5kLiIpO249e2V4aWZTdGFydDpvKzYsZXhpZkVuZDpsfX1pPWEuZ2V0VWludDE2KHMpO3MrPTI7Y29udGludWU7Y2FzZSA2NTQ3MjpjYXNlIDY1NDczOmNhc2UgNjU0NzQ6cj1lW3MrN107YnJlYWsgZTtjYXNlIDY1NTM1OjI1NSE9PWVbc10mJnMtLX1zPXNraXBEYXRhKGUsYSxzKTtpPWEuZ2V0VWludDE2KHMpO3MrPTJ9cmV0dXJuIDQ9PT1yfHwzPT09ciYmMD09PXQ/bnVsbDpufHx7fX1wYXJzZShlLHtkbmxTY2FuTGluZXM6dD1udWxsfT17fSl7Y29uc3QgYT1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCksbj1lLmxlbmd0aC0xO2xldCBzLHIsaT0wLG89bnVsbCxsPW51bGwsZj0wO2NvbnN0IGM9W10saD1bXSx1PVtdO2xldCBtPWEuZ2V0VWludDE2KGkpO2krPTI7aWYoNjU0OTYhPT1tKXRocm93IG5ldyBKcGVnRXJyb3IoIlNPSSBub3QgZm91bmQiKTttPWEuZ2V0VWludDE2KGkpO2krPTI7ZTpmb3IoOzY1NDk3IT09bTspe2xldCBwLGQsZztzd2l0Y2gobSl7Y2FzZSA2NTUwNDpjYXNlIDY1NTA1OmNhc2UgNjU1MDY6Y2FzZSA2NTUwNzpjYXNlIDY1NTA4OmNhc2UgNjU1MDk6Y2FzZSA2NTUxMDpjYXNlIDY1NTExOmNhc2UgNjU1MTI6Y2FzZSA2NTUxMzpjYXNlIDY1NTE0OmNhc2UgNjU1MTU6Y2FzZSA2NTUxNjpjYXNlIDY1NTE3OmNhc2UgNjU1MTg6Y2FzZSA2NTUxOTpjYXNlIDY1NTM0OmNvbnN0e2FwcERhdGE6YixuZXdPZmZzZXQ6d309cmVhZERhdGFCbG9jayhlLGEsaSk7aT13OzY1NTA0PT09bSYmNzQ9PT1iWzBdJiY3MD09PWJbMV0mJjczPT09YlsyXSYmNzA9PT1iWzNdJiYwPT09Yls0XSYmKG89e3ZlcnNpb246e21ham9yOmJbNV0sbWlub3I6Yls2XX0sZGVuc2l0eVVuaXRzOmJbN10seERlbnNpdHk6Yls4XTw8OHxiWzldLHlEZW5zaXR5OmJbMTBdPDw4fGJbMTFdLHRodW1iV2lkdGg6YlsxMl0sdGh1bWJIZWlnaHQ6YlsxM10sdGh1bWJEYXRhOmIuc3ViYXJyYXkoMTQsMTQrMypiWzEyXSpiWzEzXSl9KTs2NTUxOD09PW0mJjY1PT09YlswXSYmMTAwPT09YlsxXSYmMTExPT09YlsyXSYmOTg9PT1iWzNdJiYxMDE9PT1iWzRdJiYobD17dmVyc2lvbjpiWzVdPDw4fGJbNl0sZmxhZ3MwOmJbN108PDh8Yls4XSxmbGFnczE6Yls5XTw8OHxiWzEwXSx0cmFuc2Zvcm1Db2RlOmJbMTFdfSk7YnJlYWs7Y2FzZSA2NTQ5OTpjb25zdCBqPWEuZ2V0VWludDE2KGkpO2krPTI7Y29uc3Qgaz1qK2ktMjtsZXQgeTtmb3IoO2k8azspe2NvbnN0IHQ9ZVtpKytdLG49bmV3IFVpbnQxNkFycmF5KDY0KTtpZih0Pj40KXtpZih0Pj40IT0xKXRocm93IG5ldyBKcGVnRXJyb3IoIkRRVCAtIGludmFsaWQgdGFibGUgc3BlYyIpO2ZvcihkPTA7ZDw2NDtkKyspe3k9VGFbZF07blt5XT1hLmdldFVpbnQxNihpKTtpKz0yfX1lbHNlIGZvcihkPTA7ZDw2NDtkKyspe3k9VGFbZF07blt5XT1lW2krK119Y1sxNSZ0XT1ufWJyZWFrO2Nhc2UgNjU0NzI6Y2FzZSA2NTQ3MzpjYXNlIDY1NDc0OmlmKHMpdGhyb3cgbmV3IEpwZWdFcnJvcigiT25seSBzaW5nbGUgZnJhbWUgSlBFR3Mgc3VwcG9ydGVkIik7aSs9MjtzPXt9O3MuZXh0ZW5kZWQ9NjU0NzM9PT1tO3MucHJvZ3Jlc3NpdmU9NjU0NzQ9PT1tO3MucHJlY2lzaW9uPWVbaSsrXTtjb25zdCBxPWEuZ2V0VWludDE2KGkpO2krPTI7cy5zY2FuTGluZXM9dHx8cTtzLnNhbXBsZXNQZXJMaW5lPWEuZ2V0VWludDE2KGkpO2krPTI7cy5jb21wb25lbnRzPVtdO3MuY29tcG9uZW50SWRzPXt9O2NvbnN0IHY9ZVtpKytdO2xldCBTPTAseD0wO2ZvcihwPTA7cDx2O3ArKyl7Y29uc3QgdD1lW2ldLGE9ZVtpKzFdPj40LG49MTUmZVtpKzFdO1M8YSYmKFM9YSk7eDxuJiYoeD1uKTtjb25zdCByPWVbaSsyXTtnPXMuY29tcG9uZW50cy5wdXNoKHtoOmEsdjpuLHF1YW50aXphdGlvbklkOnIscXVhbnRpemF0aW9uVGFibGU6bnVsbH0pO3MuY29tcG9uZW50SWRzW3RdPWctMTtpKz0zfXMubWF4SD1TO3MubWF4Vj14O3ByZXBhcmVDb21wb25lbnRzKHMpO2JyZWFrO2Nhc2UgNjU0NzY6Y29uc3QgQz1hLmdldFVpbnQxNihpKTtpKz0yO2ZvcihwPTI7cDxDOyl7Y29uc3QgdD1lW2krK10sYT1uZXcgVWludDhBcnJheSgxNik7bGV0IG49MDtmb3IoZD0wO2Q8MTY7ZCsrLGkrKyluKz1hW2RdPWVbaV07Y29uc3Qgcz1uZXcgVWludDhBcnJheShuKTtmb3IoZD0wO2Q8bjtkKyssaSsrKXNbZF09ZVtpXTtwKz0xNytuOyh0Pj40P2g6dSlbMTUmdF09YnVpbGRIdWZmbWFuVGFibGUoYSxzKX1icmVhaztjYXNlIDY1NTAxOmkrPTI7cj1hLmdldFVpbnQxNihpKTtpKz0yO2JyZWFrO2Nhc2UgNjU0OTg6Y29uc3QgRj0xPT09KytmJiYhdDtpKz0yO2NvbnN0IFQ9ZVtpKytdLE89W107Zm9yKHA9MDtwPFQ7cCsrKXtjb25zdCB0PWVbaSsrXSxhPXMuY29tcG9uZW50SWRzW3RdLG49cy5jb21wb25lbnRzW2FdO24uaW5kZXg9dDtjb25zdCByPWVbaSsrXTtuLmh1ZmZtYW5UYWJsZURDPXVbcj4+NF07bi5odWZmbWFuVGFibGVBQz1oWzE1JnJdO08ucHVzaChuKX1jb25zdCBSPWVbaSsrXSxIPWVbaSsrXSxEPWVbaSsrXTt0cnl7aSs9ZGVjb2RlU2NhbihlLGEsaSxzLE8scixSLEgsRD4+NCwxNSZELEYpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXt3YXJuKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgZX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6aSs9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbaV0mJmktLTticmVhaztkZWZhdWx0OmNvbnN0IE09ZmluZE5leHRGaWxlTWFya2VyKGUsYSxpLTIsaS0zKTtpZihNPy5pbnZhbGlkKXt3YXJuKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmV4cGVjdGVkIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAiK00uaW52YWxpZCk7aT1NLm9mZnNldDticmVha31pZighTXx8aT49bil7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbWFnZSBkYXRhIHdpdGhvdXQgZmluZGluZyBhbiBFT0kgbWFya2VyICgweEZGRDkpLiIpO2JyZWFrIGV9dGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIrbS50b1N0cmluZygxNikpfWlmKGk8bil7bT1hLmdldFVpbnQxNihpKTtpKz0yfWVsc2UgbT0wfWlmKCFzKXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIG5vIGZyYW1lIGRhdGEgZm91bmQuIik7dGhpcy53aWR0aD1zLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PXMuc2NhbkxpbmVzO3RoaXMuamZpZj1vO3RoaXMuYWRvYmU9bDt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2Ygcy5jb21wb25lbnRzKXtjb25zdCB0PWNbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvcy5tYXhILHNjYWxlWTplLnYvcy5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxhPSExKXtjb25zdCBuPXRoaXMud2lkdGgvZSxzPXRoaXMuaGVpZ2h0L3Q7bGV0IHIsaSxvLGwsZixjLGgsdSxtLHAsZCxnPTA7Y29uc3QgYj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHc9ZSp0KmIsaj1uZXcgVWludDhDbGFtcGVkQXJyYXkodyksaz1uZXcgVWludDMyQXJyYXkoZSkseT00Mjk0OTY3Mjg4O2xldCBxO2ZvcihoPTA7aDxiO2grKyl7cj10aGlzLmNvbXBvbmVudHNbaF07aT1yLnNjYWxlWCpuO289ci5zY2FsZVkqcztnPWg7ZD1yLm91dHB1dDtsPXIuYmxvY2tzUGVyTGluZSsxPDwzO2lmKGkhPT1xKXtmb3IoZj0wO2Y8ZTtmKyspe3U9MHxmKmk7a1tmXT0odSZ5KTw8M3w3JnV9cT1pfWZvcihjPTA7Yzx0O2MrKyl7dT0wfGMqbztwPWwqKHUmeSl8KDcmdSk8PDM7Zm9yKGY9MDtmPGU7ZisrKXtqW2ddPWRbcCtrW2ZdXTtnKz1ifX19bGV0IHY9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2F8fDQhPT1ifHx2fHwodj1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYodilmb3IoaD0wO2g8dzspZm9yKHU9MCxtPTA7dTxiO3UrKyxoKyssbSs9MilqW2hdPShqW2hdKnZbbV0+PjgpK3ZbbSsxXTtyZXR1cm4gan1nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxhLG47Zm9yKGxldCBzPTAscj1lLmxlbmd0aDtzPHI7cys9Myl7dD1lW3NdO2E9ZVtzKzFdO249ZVtzKzJdO2Vbc109dC0xNzkuNDU2KzEuNDAyKm47ZVtzKzFdPXQrMTM1LjQ1OS0uMzQ0KmEtLjcxNCpuO2VbcysyXT10LTIyNi44MTYrMS43NzIqYX1yZXR1cm4gZX1fY29udmVydFljY1RvUmdiYShlLHQpe2ZvcihsZXQgYT0wLG49MCxzPWUubGVuZ3RoO2E8czthKz0zLG4rPTQpe2NvbnN0IHM9ZVthXSxyPWVbYSsxXSxpPWVbYSsyXTt0W25dPXMtMTc5LjQ1NisxLjQwMippO3RbbisxXT1zKzEzNS40NTktLjM0NCpyLS43MTQqaTt0W24rMl09cy0yMjYuODE2KzEuNzcyKnI7dFtuKzNdPTI1NX1yZXR1cm4gdH1fY29udmVydFljY2tUb1JnYihlKXt0aGlzLl9jb252ZXJ0WWNja1RvQ215ayhlKTtyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihlKX1fY29udmVydFljY2tUb1JnYmEoZSl7dGhpcy5fY29udmVydFljY2tUb0NteWsoZSk7cmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2JhKGUpfV9jb252ZXJ0WWNja1RvQ215ayhlKXtsZXQgdCxhLG47Zm9yKGxldCBzPTAscj1lLmxlbmd0aDtzPHI7cys9NCl7dD1lW3NdO2E9ZVtzKzFdO249ZVtzKzJdO2Vbc109NDM0LjQ1Ni10LTEuNDAyKm47ZVtzKzFdPTExOS41NDEtdCsuMzQ0KmErLjcxNCpuO2VbcysyXT00ODEuODE2LXQtMS43NzIqYX1yZXR1cm4gZX1fY29udmVydENteWtUb1JnYihlKXtjb25zdCB0PWUubGVuZ3RoLzQ7Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiQnVmZmVyKGUsMCx0LGUsMCw4LDApO3JldHVybiBlLnN1YmFycmF5KDAsMyp0KX1fY29udmVydENteWtUb1JnYmEoZSl7Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiQnVmZmVyKGUsMCxlLmxlbmd0aC80LGUsMCw4LDEpO2lmKENvbG9yU3BhY2VVdGlscy5jbXlrIGluc3RhbmNlb2YgRGV2aWNlQ215a0NTKWZvcihsZXQgdD0zLGE9ZS5sZW5ndGg7dDxhO3QrPTQpZVt0XT0yNTU7cmV0dXJuIGV9Z2V0RGF0YSh7d2lkdGg6ZSxoZWlnaHQ6dCxmb3JjZVJHQkE6YT0hMSxmb3JjZVJHQjpuPSExLGlzU291cmNlUERGOnM9ITF9KXtpZih0aGlzLm51bUNvbXBvbmVudHM+NCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJVbnN1cHBvcnRlZCBjb2xvciBtb2RlIik7Y29uc3Qgcj10aGlzLl9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxzKTtpZigxPT09dGhpcy5udW1Db21wb25lbnRzJiYoYXx8bikpe2NvbnN0IGU9ci5sZW5ndGgqKGE/NDozKSx0PW5ldyBVaW50OENsYW1wZWRBcnJheShlKTtsZXQgbj0wO2lmKGEpIWZ1bmN0aW9uIGdyYXlUb1JHQkEoZSx0KXtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjthKyspdFthXT02NTc5MyplW2FdfDQyNzgxOTAwODA7ZWxzZSBmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjthKyspdFthXT0xNjg0MzAwOCplW2FdfDI1NX0ocixuZXcgVWludDMyQXJyYXkodC5idWZmZXIpKTtlbHNlIGZvcihjb25zdCBlIG9mIHIpe3RbbisrXT1lO3RbbisrXT1lO3RbbisrXT1lfXJldHVybiB0fWlmKDM9PT10aGlzLm51bUNvbXBvbmVudHMmJnRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXtpZihhKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShyLmxlbmd0aC8zKjQpO3JldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2JhKHIsZSl9cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihyKX1pZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gYT90aGlzLl9jb252ZXJ0WWNja1RvUmdiYShyKTpuP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2Iocik6dGhpcy5fY29udmVydFljY2tUb0NteWsocik7aWYoYSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEocik7aWYobilyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihyKX1yZXR1cm4gcn19Y2xhc3MgSnBlZ1N0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtzdGF0aWMjUj1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1hfXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI1I/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvanBlZyIpOlByb21pc2UucmVzb2x2ZSghMSkpfXN0YXRpYyBzZXRPcHRpb25zKHtpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDplPSExfSl7dGhpcy4jUj1lfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1nZXQganBlZ09wdGlvbnMoKXtjb25zdCBlPXtkZWNvZGVUcmFuc2Zvcm06dm9pZCAwLGNvbG9yVHJhbnNmb3JtOnZvaWQgMH0sdD10aGlzLmRpY3QuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZigodGhpcy5mb3JjZVJHQkF8fHRoaXMuZm9yY2VSR0IpJiZBcnJheS5pc0FycmF5KHQpKXtjb25zdCBhPXRoaXMuZGljdC5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxuPXQubGVuZ3RoLHM9bmV3IEludDMyQXJyYXkobik7bGV0IHI9ITE7Y29uc3QgaT0oMTw8YSktMTtmb3IobGV0IGU9MDtlPG47ZSs9Mil7c1tlXT0yNTYqKHRbZSsxXS10W2VdKXwwO3NbZSsxXT10W2VdKml8MDsyNTY9PT1zW2VdJiYwPT09c1tlKzFdfHwocj0hMCl9ciYmKGUuZGVjb2RlVHJhbnNmb3JtPXMpfWlmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJqcGVnT3B0aW9ucyIsZSl9I0woZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aC0xO3Q8YTt0KyspaWYoMjU1PT09ZVt0XSYmMjE2PT09ZVt0KzFdKXt0PjAmJihlPWUuc3ViYXJyYXkodCkpO2JyZWFrfXJldHVybiBlfWRlY29kZUltYWdlKGUpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlPXRoaXMuI0woZXx8dGhpcy5ieXRlcyk7Y29uc3QgdD1uZXcgSnBlZ0ltYWdlKHRoaXMuanBlZ09wdGlvbnMpO3QucGFyc2UoZSk7Y29uc3QgYT10LmdldERhdGEoe3dpZHRoOnRoaXMuZHJhd1dpZHRoLGhlaWdodDp0aGlzLmRyYXdIZWlnaHQsZm9yY2VSR0JBOnRoaXMuZm9yY2VSR0JBLGZvcmNlUkdCOnRoaXMuZm9yY2VSR0IsaXNTb3VyY2VQREY6ITB9KTt0aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPWEubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY31hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZSgpe2lmKCFhd2FpdCBKcGVnU3RyZWFtLmNhblVzZUltYWdlRGVjb2RlcilyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuanBlZ09wdGlvbnM7aWYoZS5kZWNvZGVUcmFuc2Zvcm0pcmV0dXJuIG51bGw7bGV0IHQ7dHJ5e2NvbnN0IGE9dGhpcy5jYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlciYmYXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpfHx0aGlzLmJ5dGVzO2lmKCFhKXJldHVybiBudWxsO2xldCBuPXRoaXMuI0woYSk7Y29uc3Qgcz1KcGVnSW1hZ2UuY2FuVXNlSW1hZ2VEZWNvZGVyKG4sZS5jb2xvclRyYW5zZm9ybSk7aWYoIXMpcmV0dXJuIG51bGw7aWYocy5leGlmU3RhcnQpe249bi5zbGljZSgpO24uZmlsbCgwLHMuZXhpZlN0YXJ0LHMuZXhpZkVuZCl9dD1uZXcgSW1hZ2VEZWNvZGVyKHtkYXRhOm4sdHlwZToiaW1hZ2UvanBlZyIscHJlZmVyQW5pbWF0aW9uOiExfSk7cmV0dXJuKGF3YWl0IHQuZGVjb2RlKCkpLmltYWdlfWNhdGNoKGUpe3dhcm4oYGdldFRyYW5zZmVyYWJsZUltYWdlIC0gZmFpbGVkOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9ZmluYWxseXt0Py5jbG9zZSgpfX1nZXQgaXNJbWFnZVN0cmVhbSgpe3JldHVybiEwfX1jb25zdCBFYT1hc3luYyBmdW5jdGlvbiBPcGVuSlBFRyhlPXt9KXt2YXIgdD1lLGE9Ii4vdGhpcy5wcm9ncmFtIixxdWl0Xz0oZSx0KT0+e3Rocm93IHR9LG49aW1wb3J0Lm1ldGEudXJsO3RyeXtuZXcgVVJMKCIuIixuKS5ocmVmfWNhdGNoe30wO3ZhciBzLHIsaSxvLGwsZixjLGg9Y29uc29sZS5sb2cuYmluZChjb25zb2xlKSx1PWNvbnNvbGUuZXJyb3IuYmluZChjb25zb2xlKSxtPSExLHA9ITE7ZnVuY3Rpb24gdXBkYXRlTWVtb3J5Vmlld3MoKXt2YXIgZT1nLmJ1ZmZlcjtsPW5ldyBJbnQ4QXJyYXkoZSk7bmV3IEludDE2QXJyYXkoZSk7Yz1uZXcgVWludDhBcnJheShlKTtuZXcgVWludDE2QXJyYXkoZSk7bz1uZXcgSW50MzJBcnJheShlKTtmPW5ldyBVaW50MzJBcnJheShlKTtuZXcgRmxvYXQzMkFycmF5KGUpO25ldyBGbG9hdDY0QXJyYXkoZSk7bmV3IEJpZ0ludDY0QXJyYXkoZSk7bmV3IEJpZ1VpbnQ2NEFycmF5KGUpfWNsYXNzIEV4aXRTdGF0dXN7bmFtZT0iRXhpdFN0YXR1cyI7Y29uc3RydWN0b3IoZSl7dGhpcy5tZXNzYWdlPWBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCR7ZX0pYDt0aGlzLnN0YXR1cz1lfX12YXIgZCxnLGNhbGxSdW50aW1lQ2FsbGJhY2tzPWU9Pntmb3IoO2UubGVuZ3RoPjA7KWUuc2hpZnQoKSh0KX0sYj1bXSxhZGRPblBvc3RSdW49ZT0+Yi5wdXNoKGUpLHc9W10sYWRkT25QcmVSdW49ZT0+dy5wdXNoKGUpLGo9ITAsaz0wLHk9e30saGFuZGxlRXhjZXB0aW9uPWU9PntpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1c3x8InVud2luZCI9PWUpcmV0dXJuIHM7cXVpdF8oMCxlKX0sa2VlcFJ1bnRpbWVBbGl2ZT0oKT0+anx8az4wLF9wcm9jX2V4aXQ9ZT0+e3M9ZTtpZigha2VlcFJ1bnRpbWVBbGl2ZSgpKXt0Lm9uRXhpdD8uKGUpO209ITB9cXVpdF8oMCxuZXcgRXhpdFN0YXR1cyhlKSl9LF9leGl0PShlLHQpPT57cz1lO19wcm9jX2V4aXQoZSl9LGNhbGxVc2VyQ2FsbGJhY2s9ZT0+e2lmKCFtKXRyeXtyZXR1cm4gZSgpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX1maW5hbGx5eygoKT0+e2lmKCFrZWVwUnVudGltZUFsaXZlKCkpdHJ5e19leGl0KHMpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX19KSgpfX0sYWxpZ25NZW1vcnk9KGUsdCk9Pk1hdGguY2VpbChlL3QpKnQsZ3Jvd01lbW9yeT1lPT57dmFyIHQ9KGUtZy5idWZmZXIuYnl0ZUxlbmd0aCs2NTUzNSkvNjU1MzZ8MDt0cnl7Zy5ncm93KHQpO3VwZGF0ZU1lbW9yeVZpZXdzKCk7cmV0dXJuIDF9Y2F0Y2goZSl7fX0scT17fSxnZXRFbnZTdHJpbmdzPSgpPT57aWYoIWdldEVudlN0cmluZ3Muc3RyaW5ncyl7dmFyIGU9e1VTRVI6IndlYl91c2VyIixMT0dOQU1FOiJ3ZWJfdXNlciIsUEFUSDoiLyIsUFdEOiIvIixIT01FOiIvaG9tZS93ZWJfdXNlciIsTEFORzooZ2xvYmFsVGhpcy5uYXZpZ2F0b3I/Lmxhbmd1YWdlPz8iQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzphfHwiLi90aGlzLnByb2dyYW0ifTtmb3IodmFyIHQgaW4gcSl2b2lkIDA9PT1xW3RdP2RlbGV0ZSBlW3RdOmVbdF09cVt0XTt2YXIgbj1bXTtmb3IodmFyIHQgaW4gZSluLnB1c2goYCR7dH09JHtlW3RdfWApO2dldEVudlN0cmluZ3Muc3RyaW5ncz1ufXJldHVybiBnZXRFbnZTdHJpbmdzLnN0cmluZ3N9LHN0cmluZ1RvVVRGOD0oZSx0LGEpPT4oKGUsdCxhLG4pPT57aWYoIShuPjApKXJldHVybiAwO2Zvcih2YXIgcz1hLHI9YStuLTEsaT0wO2k8ZS5sZW5ndGg7KytpKXt2YXIgbz1lLmNvZGVQb2ludEF0KGkpO2lmKG88PTEyNyl7aWYoYT49cilicmVhazt0W2ErK109b31lbHNlIGlmKG88PTIwNDcpe2lmKGErMT49cilicmVhazt0W2ErK109MTkyfG8+PjY7dFthKytdPTEyOHw2MyZvfWVsc2UgaWYobzw9NjU1MzUpe2lmKGErMj49cilicmVhazt0W2ErK109MjI0fG8+PjEyO3RbYSsrXT0xMjh8bz4+NiY2Mzt0W2ErK109MTI4fDYzJm99ZWxzZXtpZihhKzM+PXIpYnJlYWs7dFthKytdPTI0MHxvPj4xODt0W2ErK109MTI4fG8+PjEyJjYzO3RbYSsrXT0xMjh8bz4+NiY2Mzt0W2ErK109MTI4fDYzJm87aSsrfX10W2FdPTA7cmV0dXJuIGEtc30pKGUsYyx0LGEpLGxlbmd0aEJ5dGVzVVRGOD1lPT57Zm9yKHZhciB0PTAsYT0wO2E8ZS5sZW5ndGg7KythKXt2YXIgbj1lLmNoYXJDb2RlQXQoYSk7aWYobjw9MTI3KXQrKztlbHNlIGlmKG48PTIwNDcpdCs9MjtlbHNlIGlmKG4+PTU1Mjk2JiZuPD01NzM0Myl7dCs9NDsrK2F9ZWxzZSB0Kz0zfXJldHVybiB0fSx2PVtudWxsLFtdLFtdXSxTPWdsb2JhbFRoaXMuVGV4dERlY29kZXImJm5ldyBUZXh0RGVjb2RlcixVVEY4QXJyYXlUb1N0cmluZz0oZSx0PTAsYSxuKT0+e3ZhciBzPSgoZSx0LGEsbik9Pnt2YXIgcz10K2E7aWYobilyZXR1cm4gcztmb3IoO2VbdF0mJiEodD49cyk7KSsrdDtyZXR1cm4gdH0pKGUsdCxhLG4pO2lmKHMtdD4xNiYmZS5idWZmZXImJlMpcmV0dXJuIFMuZGVjb2RlKGUuc3ViYXJyYXkodCxzKSk7Zm9yKHZhciByPSIiO3Q8czspe3ZhciBpPWVbdCsrXTtpZigxMjgmaSl7dmFyIG89NjMmZVt0KytdO2lmKDE5MiE9KDIyNCZpKSl7dmFyIGw9NjMmZVt0KytdO2lmKChpPTIyND09KDI0MCZpKT8oMTUmaSk8PDEyfG88PDZ8bDooNyZpKTw8MTh8bzw8MTJ8bDw8Nnw2MyZlW3QrK10pPDY1NTM2KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUoaSk7ZWxzZXt2YXIgZj1pLTY1NTM2O3IrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8Zj4+MTAsNTYzMjB8MTAyMyZmKX19ZWxzZSByKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgzMSZpKTw8NnxvKX1lbHNlIHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoaSl9cmV0dXJuIHJ9LHByaW50Q2hhcj0oZSx0KT0+e3ZhciBhPXZbZV07aWYoMD09PXR8fDEwPT09dCl7KDE9PT1lP2g6dSkoVVRGOEFycmF5VG9TdHJpbmcoYSkpO2EubGVuZ3RoPTB9ZWxzZSBhLnB1c2godCl9LFVURjhUb1N0cmluZz0oZSx0LGEpPT5lP1VURjhBcnJheVRvU3RyaW5nKGMsZSx0LGEpOiIiO3Qubm9FeGl0UnVudGltZSYmKGo9dC5ub0V4aXRSdW50aW1lKTt0LnByaW50JiYoaD10LnByaW50KTt0LnByaW50RXJyJiYodT10LnByaW50RXJyKTt0Lndhc21CaW5hcnkmJnQud2FzbUJpbmFyeTt0LmFyZ3VtZW50cyYmdC5hcmd1bWVudHM7dC50aGlzUHJvZ3JhbSYmKGE9dC50aGlzUHJvZ3JhbSk7aWYodC5wcmVJbml0KXsiZnVuY3Rpb24iPT10eXBlb2YgdC5wcmVJbml0JiYodC5wcmVJbml0PVt0LnByZUluaXRdKTtmb3IoO3QucHJlSW5pdC5sZW5ndGg+MDspdC5wcmVJbml0LnNoaWZ0KCkoKX10LndyaXRlQXJyYXlUb01lbW9yeT0oZSx0KT0+e2wuc2V0KGUsdCl9O3ZhciB4LEM9e206KCk9PmZ1bmN0aW9uIGFib3J0KGUpe3Qub25BYm9ydD8uKGUpO3UoZT1gQWJvcnRlZCgke2V9KWApO209ITA7ZSs9Ii4gQnVpbGQgd2l0aCAtc0FTU0VSVElPTlMgZm9yIG1vcmUgaW5mby4iO3ZhciBhPW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IoZSk7aT8uKGEpO3Rocm93IGF9KCIiKSxsOigpPT57aj0hMTtrPTB9LGk6KGUsdCk9PntpZih5W2VdKXtjbGVhclRpbWVvdXQoeVtlXS5pZCk7ZGVsZXRlIHlbZV19aWYoIXQpcmV0dXJuIDA7dmFyIGE9c2V0VGltZW91dCgoKT0+e2RlbGV0ZSB5W2VdO2NhbGxVc2VyQ2FsbGJhY2soKCk9PmQoZSxwZXJmb3JtYW5jZS5ub3coKSkpfSx0KTt5W2VdPXtpZDphLHRpbWVvdXRfbXM6dH07cmV0dXJuIDB9LGY6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzEoZSxhKXtlPj49Mjtjb25zdCBuPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheShhKSxzPW8uc3ViYXJyYXkoZSxlK2EpO24uc2V0KHMpfSxlOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18zKGUsYSxuLHMpe2U+Pj0yO2E+Pj0yO24+Pj0yO2NvbnN0IHI9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqcyksaT1vLnN1YmFycmF5KGUsZStzKSxsPW8uc3ViYXJyYXkoYSxhK3MpLGY9by5zdWJhcnJheShuLG4rcyk7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7clszKmVdPWlbZV07clszKmUrMV09bFtlXTtyWzMqZSsyXT1mW2VdfX0sZDpmdW5jdGlvbiBfY29weV9waXhlbHNfNChlLGEsbixzLHIpe2U+Pj0yO2E+Pj0yO24+Pj0yO3M+Pj0yO2NvbnN0IGk9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqciksbD1vLnN1YmFycmF5KGUsZStyKSxmPW8uc3ViYXJyYXkoYSxhK3IpLGM9by5zdWJhcnJheShuLG4rciksaD1vLnN1YmFycmF5KHMscytyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtpWzQqZV09bFtlXTtpWzQqZSsxXT1mW2VdO2lbNCplKzJdPWNbZV07aVs0KmUrM109aFtlXX19LGo6ZT0+e3ZhciB0PWMubGVuZ3RoLGE9MjE0NzQ4MzY0ODtpZigoZT4+Pj0wKT5hKXJldHVybiExO2Zvcih2YXIgbj0xO248PTQ7bio9Mil7dmFyIHM9dCooMSsuMi9uKTtzPU1hdGgubWluKHMsZSsxMDA2NjMyOTYpO3ZhciByPU1hdGgubWluKGEsYWxpZ25NZW1vcnkoTWF0aC5tYXgoZSxzKSw2NTUzNikpO2lmKGdyb3dNZW1vcnkocikpcmV0dXJuITB9cmV0dXJuITF9LG86KGUsdCk9Pnt2YXIgYT0wLG49MDtmb3IodmFyIHMgb2YgZ2V0RW52U3RyaW5ncygpKXt2YXIgcj10K2E7ZltlK24+PjJdPXI7YSs9c3RyaW5nVG9VVEY4KHMsciwxLzApKzE7bis9NH1yZXR1cm4gMH0scDooZSx0KT0+e3ZhciBhPWdldEVudlN0cmluZ3MoKTtmW2U+PjJdPWEubGVuZ3RoO3ZhciBuPTA7Zm9yKHZhciBzIG9mIGEpbis9bGVuZ3RoQnl0ZXNVVEY4KHMpKzE7Zlt0Pj4yXT1uO3JldHVybiAwfSxuOmZ1bmN0aW9uIF9mZF9zZWVrKGUsdCxhLG4pe3Q9KHM9dCk8LTkwMDcxOTkyNTQ3NDA5OTJ8fHM+OTAwNzE5OTI1NDc0MDk5Mj9OYU46TnVtYmVyKHMpO3ZhciBzO3JldHVybiA3MH0sYjooZSx0LGEsbik9Pntmb3IodmFyIHM9MCxyPTA7cjxhO3IrKyl7dmFyIGk9Zlt0Pj4yXSxvPWZbdCs0Pj4yXTt0Kz04O2Zvcih2YXIgbD0wO2w8bztsKyspcHJpbnRDaGFyKGUsY1tpK2xdKTtzKz1vfWZbbj4+Ml09cztyZXR1cm4gMH0scTpmdW5jdGlvbiBfZ3JheV90b19yZ2JhKGUsYSl7ZT4+PTI7Y29uc3Qgbj10LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCphKSxzPW8uc3ViYXJyYXkoZSxlK2EpO2ZvcihsZXQgZT0wO2U8YTtlKyspe25bNCplXT1uWzQqZSsxXT1uWzQqZSsyXT1zW2VdO25bNCplKzNdPTI1NX19LGg6ZnVuY3Rpb24gX2dyYXlhX3RvX3JnYmEoZSxhLG4pe2U+Pj0yO2E+Pj0yO2NvbnN0IHM9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqbikscj1vLnN1YmFycmF5KGUsZStuKSxpPW8uc3ViYXJyYXkoYSxhK24pO2ZvcihsZXQgZT0wO2U8bjtlKyspe3NbNCplXT1zWzQqZSsxXT1zWzQqZSsyXT1yW2VdO3NbNCplKzNdPWlbZV19fSxjOmZ1bmN0aW9uIF9qc1ByaW50V2FybmluZyhlKXtjb25zdCBhPVVURjhUb1N0cmluZyhlKTsodC53YXJufHxjb25zb2xlLndhcm4pKGBPcGVuSlBFRzogJHthfWApfSxrOl9wcm9jX2V4aXQsZzpmdW5jdGlvbiBfcmdiX3RvX3JnYmEoZSxhLG4scyl7ZT4+PTI7YT4+PTI7bj4+PTI7Y29uc3Qgcj10LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCpzKSxpPW8uc3ViYXJyYXkoZSxlK3MpLGw9by5zdWJhcnJheShhLGErcyksZj1vLnN1YmFycmF5KG4sbitzKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtyWzQqZV09aVtlXTtyWzQqZSsxXT1sW2VdO3JbNCplKzJdPWZbZV07cls0KmUrM109MjU1fX0sYTpmdW5jdGlvbiBfc3RvcmVFcnJvck1lc3NhZ2UoZSl7Y29uc3QgYT1VVEY4VG9TdHJpbmcoZSk7dC5lcnJvck1lc3NhZ2VzP3QuZXJyb3JNZXNzYWdlcys9IlxuIithOnQuZXJyb3JNZXNzYWdlcz1hfX07eD1hd2FpdCBhc3luYyBmdW5jdGlvbiBjcmVhdGVXYXNtKCl7ZnVuY3Rpb24gcmVjZWl2ZUluc3RhbmNlKGUsYSl7IWZ1bmN0aW9uIGFzc2lnbldhc21FeHBvcnRzKGUpe3QuX21hbGxvYz1lLnQ7dC5fZnJlZT1lLnU7dC5fanAyX2RlY29kZT1lLnY7ZD1lLnc7Zz1lLnI7ZS5fX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlfSh4PWUuZXhwb3J0cyk7dXBkYXRlTWVtb3J5Vmlld3MoKTtyZXR1cm4geH12YXIgZT1mdW5jdGlvbiBnZXRXYXNtSW1wb3J0cygpe3JldHVybnthOkN9fSgpO3JldHVybiBuZXcgUHJvbWlzZSgoYSxuKT0+e3QuaW5zdGFudGlhdGVXYXNtKGUsKGUsdCk9PnthKHJlY2VpdmVJbnN0YW5jZShlKSl9KX0pfSgpOyFmdW5jdGlvbiBydW4oKXshZnVuY3Rpb24gcHJlUnVuKCl7aWYodC5wcmVSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiB0LnByZVJ1biYmKHQucHJlUnVuPVt0LnByZVJ1bl0pO2Zvcig7dC5wcmVSdW4ubGVuZ3RoOylhZGRPblByZVJ1bih0LnByZVJ1bi5zaGlmdCgpKX1jYWxsUnVudGltZUNhbGxiYWNrcyh3KX0oKTtmdW5jdGlvbiBkb1J1bigpe3QuY2FsbGVkUnVuPSEwO2lmKCFtKXshZnVuY3Rpb24gaW5pdFJ1bnRpbWUoKXtwPSEwO3gucygpfSgpO3I/Lih0KTt0Lm9uUnVudGltZUluaXRpYWxpemVkPy4oKTshZnVuY3Rpb24gcG9zdFJ1bigpe2lmKHQucG9zdFJ1bil7ImZ1bmN0aW9uIj09dHlwZW9mIHQucG9zdFJ1biYmKHQucG9zdFJ1bj1bdC5wb3N0UnVuXSk7Zm9yKDt0LnBvc3RSdW4ubGVuZ3RoOylhZGRPblBvc3RSdW4odC5wb3N0UnVuLnNoaWZ0KCkpfWNhbGxSdW50aW1lQ2FsbGJhY2tzKGIpfSgpfX1pZih0LnNldFN0YXR1cyl7dC5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKTtzZXRUaW1lb3V0KCgpPT57c2V0VGltZW91dCgoKT0+dC5zZXRTdGF0dXMoIiIpLDEpO2RvUnVuKCl9LDEpfWVsc2UgZG9SdW4oKX0oKTtyZXR1cm4gcD90Om5ldyBQcm9taXNlKChlLHQpPT57cj1lO2k9dH0pfTtjbGFzcyBKcHhFcnJvciBleHRlbmRzIGFhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpweEVycm9yIil9fWNsYXNzIEpweEltYWdle3N0YXRpYyNCPW51bGw7c3RhdGljI0Q9bnVsbDtzdGF0aWMjTT1udWxsO3N0YXRpYyNDPSEwO3N0YXRpYyNOPSEwO3N0YXRpYyNJPW51bGw7c3RhdGljIHNldE9wdGlvbnMoe2hhbmRsZXI6ZSx1c2VXYXNtOnQsdXNlV29ya2VyRmV0Y2g6YSx3YXNtVXJsOm59KXt0aGlzLiNDPXQ7dGhpcy4jTj1hO3RoaXMuI0k9bjthfHwodGhpcy4jRD1lKX1zdGF0aWMgYXN5bmMjUChlKXtjb25zdCB0PWAke3RoaXMuI0l9b3BlbmpwZWdfbm93YXNtX2ZhbGxiYWNrLmpzYDtsZXQgYT1udWxsO3RyeXthPShhd2FpdCBpbXBvcnQoCi8qd2VicGFja0lnbm9yZTogdHJ1ZSovCi8qQHZpdGUtaWdub3JlKi8KdCkpLmRlZmF1bHQoKX1jYXRjaChlKXt3YXJuKGBKcHhJbWFnZSNnZXRKc01vZHVsZTogJHtlfWApfWUoYSl9c3RhdGljIGFzeW5jI0UoZSx0LGEpe2NvbnN0IG49Im9wZW5qcGVnLndhc20iO3RyeXt0aGlzLiNCfHwodGhpcy4jTj90aGlzLiNCPWF3YWl0IGZldGNoQmluYXJ5RGF0YShgJHt0aGlzLiNJfSR7bn1gKTp0aGlzLiNCPWF3YWl0IHRoaXMuI0Quc2VuZFdpdGhQcm9taXNlKCJGZXRjaEJpbmFyeURhdGEiLHtraW5kOiJ3YXNtVXJsIixmaWxlbmFtZTpufSkpO3JldHVybiBhKChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh0aGlzLiNCLHQpKS5pbnN0YW5jZSl9Y2F0Y2godCl7d2FybihgSnB4SW1hZ2UjaW5zdGFudGlhdGVXYXNtOiAke3R9YCk7dGhpcy4jUChlKTtyZXR1cm4gbnVsbH1maW5hbGx5e3RoaXMuI0Q9bnVsbH19c3RhdGljIGFzeW5jIGRlY29kZShlLHtudW1Db21wb25lbnRzOnQ9NCxpc0luZGV4ZWRDb2xvcm1hcDphPSExLHNtYXNrSW5EYXRhOm49ITEscmVkdWNlUG93ZXI6cz0wfT17fSl7aWYoIXRoaXMuI00pe2NvbnN0e3Byb21pc2U6ZSxyZXNvbHZlOnR9PVByb21pc2Uud2l0aFJlc29sdmVycygpLGE9W2VdO3RoaXMuI0M/YS5wdXNoKEVhKHt3YXJuLGluc3RhbnRpYXRlV2FzbTp0aGlzLiNFLmJpbmQodGhpcyx0KX0pKTp0aGlzLiNQKHQpO3RoaXMuI009UHJvbWlzZS5yYWNlKGEpfWNvbnN0IHI9YXdhaXQgdGhpcy4jTTtpZighcil0aHJvdyBuZXcgSnB4RXJyb3IoIk9wZW5KUEVHIGZhaWxlZCB0byBpbml0aWFsaXplIik7bGV0IGk7dHJ5e2NvbnN0IG89ZS5sZW5ndGg7aT1yLl9tYWxsb2Mobyk7ci53cml0ZUFycmF5VG9NZW1vcnkoZSxpKTtpZihyLl9qcDJfZGVjb2RlKGksbyx0PjA/dDowLCEhYSwhIW4scykpe2NvbnN0e2Vycm9yTWVzc2FnZXM6ZX09cjtpZihlKXtkZWxldGUgci5lcnJvck1lc3NhZ2VzO3Rocm93IG5ldyBKcHhFcnJvcihlKX10aHJvdyBuZXcgSnB4RXJyb3IoIlVua25vd24gZXJyb3IiKX1jb25zdHtpbWFnZURhdGE6bH09cjtyLmltYWdlRGF0YT1udWxsO3JldHVybiBsfWZpbmFsbHl7aSYmci5fZnJlZShpKX19c3RhdGljIGNsZWFudXAoKXt0aGlzLiNNPW51bGx9c3RhdGljIHBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGUpe2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7dD49MDspe2NvbnN0IGE9dDt0PWUuZ2V0Qnl0ZSgpO2lmKDY1MzYxPT09KGE8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLG49ZS5nZXRJbnQzMigpPj4+MCxzPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtyZXR1cm57d2lkdGg6dC1uLGhlaWdodDphLXMsYml0c1BlckNvbXBvbmVudDo4LGNvbXBvbmVudHNDb3VudDplLmdldFVpbnQxNigpfX19dGhyb3cgbmV3IEpweEVycm9yKCJObyBzaXplIG1hcmtlciBmb3VuZCBpbiBKUFggc3RyZWFtIil9fWZ1bmN0aW9uIGFkZFN0YXRlKGUsdCxhLG4scyl7bGV0IHI9ZTtmb3IobGV0IGU9MCxhPXQubGVuZ3RoLTE7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO3I9clthXXx8PVtdfXJbdC5hdCgtMSldPXtjaGVja0ZuOmEsaXRlcmF0ZUZuOm4scHJvY2Vzc0ZuOnN9fWNvbnN0IF9hPVtdO2FkZFN0YXRlKF9hLFtrZSxxZSxFdCx5ZV0sbnVsbCxmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gYVt0XT09PWtlO2Nhc2UgMTpyZXR1cm4gYVt0XT09PXFlO2Nhc2UgMjpyZXR1cm4gYVt0XT09PUV0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXllfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUlubGluZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHtufWApfSxmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LHM9ZS5pQ3VycixyPXMtMyxpPXMtMixvPXMtMSxsPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcikvNCksMjAwKTtpZihsPDEwKXJldHVybiB0LSh0LXIpJTQ7bGV0IGY9MDtjb25zdCBjPVtdO2xldCBoPTAsdT0xLG09MTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PW5baSsoZTw8MildLGE9bltvKyhlPDwyKV1bMF07aWYodSthLndpZHRoPjFlMyl7Zj1NYXRoLm1heChmLHUpO20rPWgrMjt1PTA7aD0wfWMucHVzaCh7dHJhbnNmb3JtOnQseDp1LHk6bSx3OmEud2lkdGgsaDphLmhlaWdodH0pO3UrPWEud2lkdGgrMjtoPU1hdGgubWF4KGgsYS5oZWlnaHQpfWNvbnN0IHA9TWF0aC5tYXgoZix1KSsxLGQ9bStoKzEsZz1uZXcgVWludDhBcnJheShwKmQqNCksYj1wPDwyO2ZvcihsZXQgZT0wO2U8bDtlKyspe2NvbnN0IHQ9bltvKyhlPDwyKV1bMF0uZGF0YSxhPWNbZV0udzw8MjtsZXQgcz0wLHI9Y1tlXS54K2NbZV0ueSpwPDwyO2cuc2V0KHQuc3ViYXJyYXkoMCxhKSxyLWIpO2ZvcihsZXQgbj0wLGk9Y1tlXS5oO248aTtuKyspe2cuc2V0KHQuc3ViYXJyYXkocyxzK2EpLHIpO3MrPWE7cis9Yn1nLnNldCh0LnN1YmFycmF5KHMtYSxzKSxyKTtmb3IoO3I+PTA7KXt0W3ItNF09dFtyXTt0W3ItM109dFtyKzFdO3Rbci0yXT10W3IrMl07dFtyLTFdPXRbciszXTt0W3IrYV09dFtyK2EtNF07dFtyK2ErMV09dFtyK2EtM107dFtyK2ErMl09dFtyK2EtMl07dFtyK2ErM109dFtyK2EtMV07ci09Yn19Y29uc3Qgdz17d2lkdGg6cCxoZWlnaHQ6ZH07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKHAsZCk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShnLmJ1ZmZlcikscCxkKSwwLDApO3cuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7dy5kYXRhPW51bGx9ZWxzZXt3LmtpbmQ9Tzt3LmRhdGE9Z31hLnNwbGljZShyLDQqbCxfdCk7bi5zcGxpY2Uociw0KmwsW3csY10pO3JldHVybiByKzF9KTthZGRTdGF0ZShfYSxba2UscWUsTXQseWVdLG51bGwsZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBhW3RdPT09a2U7Y2FzZSAxOnJldHVybiBhW3RdPT09cWU7Y2FzZSAyOnJldHVybiBhW3RdPT09TXQ7Y2FzZSAzOnJldHVybiBhW3RdPT09eWV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtufWApfSxmdW5jdGlvbiBmb3VuZEltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxzPWUuaUN1cnIscj1zLTMsaT1zLTIsbz1zLTE7bGV0IGw9TWF0aC5mbG9vcigodC1yKS80KTtpZihsPDEwKXJldHVybiB0LSh0LXIpJTQ7bGV0IGYsYyxoPSExO2NvbnN0IHU9bltvXVswXSxtPW5baV1bMF0scD1uW2ldWzFdLGQ9bltpXVsyXSxnPW5baV1bM107aWYocD09PWQpe2g9ITA7Zj1pKzQ7bGV0IGU9bys0O2ZvcihsZXQgdD0xO3Q8bDt0KyssZis9NCxlKz00KXtjPW5bZl07aWYobltlXVswXSE9PXV8fGNbMF0hPT1tfHxjWzFdIT09cHx8Y1syXSE9PWR8fGNbM10hPT1nKXt0PDEwP2g9ITE6bD10O2JyZWFrfX19aWYoaCl7bD1NYXRoLm1pbihsLDFlMyk7Y29uc3QgZT1uZXcgRmxvYXQzMkFycmF5KDIqbCk7Zj1pO2ZvcihsZXQgdD0wO3Q8bDt0KyssZis9NCl7Yz1uW2ZdO2VbdDw8MV09Y1s0XTtlWzErKHQ8PDEpXT1jWzVdfWEuc3BsaWNlKHIsNCpsLEx0KTtuLnNwbGljZShyLDQqbCxbdSxtLHAsZCxnLGVdKX1lbHNle2w9TWF0aC5taW4obCwxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxsO3QrKyl7Yz1uW2krKHQ8PDIpXTtjb25zdCBhPW5bbysodDw8MildWzBdO2UucHVzaCh7ZGF0YTphLmRhdGEsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsaW50ZXJwb2xhdGU6YS5pbnRlcnBvbGF0ZSxjb3VudDphLmNvdW50LHRyYW5zZm9ybTpjfSl9YS5zcGxpY2Uociw0KmwsTnQpO24uc3BsaWNlKHIsNCpsLFtlXSl9cmV0dXJuIHIrMX0pO2FkZFN0YXRlKF9hLFtrZSxxZSxQdCx5ZV0sZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxhPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbYV1bMV0mJjA9PT10W2FdWzJdfSxmdW5jdGlvbiBpdGVyYXRlSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXkscz0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gocyl7Y2FzZSAwOnJldHVybiBhW3RdPT09a2U7Y2FzZSAxOmlmKGFbdF0hPT1xZSlyZXR1cm4hMTtjb25zdCBzPWUuaUN1cnItMixyPW5bc11bMF0saT1uW3NdWzNdO3JldHVybiBuW3RdWzBdPT09ciYmMD09PW5bdF1bMV0mJjA9PT1uW3RdWzJdJiZuW3RdWzNdPT09aTtjYXNlIDI6aWYoYVt0XSE9PVB0KXJldHVybiExO2NvbnN0IG89bltlLmlDdXJyLTFdWzBdO3JldHVybiBuW3RdWzBdPT09bztjYXNlIDM6cmV0dXJuIGFbdF09PT15ZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7c31gKX0sZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LHM9ZS5pQ3VycixyPXMtMyxpPXMtMixvPW5bcy0xXVswXSxsPW5baV1bMF0sZj1uW2ldWzNdLGM9TWF0aC5taW4oTWF0aC5mbG9vcigodC1yKS80KSwxZTMpO2lmKGM8MylyZXR1cm4gdC0odC1yKSU0O2NvbnN0IGg9bmV3IEZsb2F0MzJBcnJheSgyKmMpO2xldCB1PWk7Zm9yKGxldCBlPTA7ZTxjO2UrKyx1Kz00KXtjb25zdCB0PW5bdV07aFtlPDwxXT10WzRdO2hbMSsoZTw8MSldPXRbNV19Y29uc3QgbT1bbyxsLGYsaF07YS5zcGxpY2Uociw0KmMsenQpO24uc3BsaWNlKHIsNCpjLG0pO3JldHVybiByKzF9KTthZGRTdGF0ZShfYSxbemUsR2UsUWUsZXQsTGVdLG51bGwsZnVuY3Rpb24gaXRlcmF0ZVNob3dUZXh0R3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LHM9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKHMpe2Nhc2UgMDpyZXR1cm4gYVt0XT09PXplO2Nhc2UgMTpyZXR1cm4gYVt0XT09PUdlO2Nhc2UgMjpyZXR1cm4gYVt0XT09PVFlO2Nhc2UgMzppZihhW3RdIT09ZXQpcmV0dXJuITE7Y29uc3Qgcz1lLmlDdXJyLTMscj1uW3NdWzBdLGk9bltzXVsxXTtyZXR1cm4gblt0XVswXT09PXImJm5bdF1bMV09PT1pO2Nhc2UgNDpyZXR1cm4gYVt0XT09PUxlfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtzfWApfSxmdW5jdGlvbihlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXkscz1lLmlDdXJyLHI9cy00LGk9cy0zLG89cy0yLGw9cy0xLGY9cyxjPW5baV1bMF0saD1uW2ldWzFdO2xldCB1PU1hdGgubWluKE1hdGguZmxvb3IoKHQtcikvNSksMWUzKTtpZih1PDMpcmV0dXJuIHQtKHQtciklNTtsZXQgbT1yO2lmKHI+PTQmJmFbci00XT09PWFbaV0mJmFbci0zXT09PWFbb10mJmFbci0yXT09PWFbbF0mJmFbci0xXT09PWFbZl0mJm5bci00XVswXT09PWMmJm5bci00XVsxXT09PWgpe3UrKzttLT01fWxldCBwPW0rNDtmb3IobGV0IGU9MTtlPHU7ZSsrKXthLnNwbGljZShwLDMpO24uc3BsaWNlKHAsMyk7cCs9Mn1yZXR1cm4gcCsxfSk7YWRkU3RhdGUoX2EsW2tlLHFlLFh0LHllXSxlPT57Y29uc3QgdD1lLmFyZ3NBcnJheSxhPXRbZS5pQ3Vyci0xXVswXTtpZihhIT09VGUmJmEhPT1PZSYmYSE9PUJlJiZhIT09RGUmJmEhPT1NZSYmYSE9PU5lKXJldHVybiEwO2NvbnN0IG49dFtlLmlDdXJyLTJdO3JldHVybiAxPT09blswXSYmMD09PW5bMV0mJjA9PT1uWzJdJiYxPT09blszXX0sKCk9PiExLChlLHQpPT57Y29uc3R7Zm5BcnJheTpuLGFyZ3NBcnJheTpzfT1lLHI9ZS5pQ3VycixpPXItMyxvPXItMixsPXNbci0xXSxmPXNbb10sWyxbY10saF09bDtpZihoKXtjb25zdCBlPWEuc2xpY2UoKTtVdGlsLmF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGgsZixlKTtoLnNldChlKTtmb3IobGV0IGU9MCx0PWMubGVuZ3RoO2U8dDspc3dpdGNoKGNbZSsrXSl7Y2FzZSBWdDpjYXNlICR0OlV0aWwuYXBwbHlUcmFuc2Zvcm0oYyxmLGUpO2UrPTI7YnJlYWs7Y2FzZSBZdDpVdGlsLmFwcGx5VHJhbnNmb3JtVG9CZXppZXIoYyxmLGUpO2UrPTZ9fW4uc3BsaWNlKGksNCxYdCk7cy5zcGxpY2UoaSw0LGwpO3JldHVybiBpKzF9KTtjbGFzcyBOdWxsT3B0aW1pemVye2NvbnN0cnVjdG9yKGUpe3RoaXMucXVldWU9ZX1fb3B0aW1pemUoKXt9cHVzaChlLHQpe3RoaXMucXVldWUuZm5BcnJheS5wdXNoKGUpO3RoaXMucXVldWUuYXJnc0FycmF5LnB1c2godCk7dGhpcy5fb3B0aW1pemUoKX1mbHVzaCgpe31yZXNldCgpe319Y2xhc3MgUXVldWVPcHRpbWl6ZXIgZXh0ZW5kcyBOdWxsT3B0aW1pemVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RhdGU9bnVsbDt0aGlzLmNvbnRleHQ9e2lDdXJyOjAsZm5BcnJheTplLmZuQXJyYXksYXJnc0FycmF5OmUuYXJnc0FycmF5LGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOk9wZXJhdG9yTGlzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZH07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfV9vcHRpbWl6ZSgpe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5O2xldCB0PXRoaXMubGFzdFByb2Nlc3NlZCxhPWUubGVuZ3RoLG49dGhpcy5zdGF0ZSxzPXRoaXMubWF0Y2g7aWYoIW4mJiFzJiZ0KzE9PT1hJiYhX2FbZVt0XV0pe3RoaXMubGFzdFByb2Nlc3NlZD1hO3JldHVybn1jb25zdCByPXRoaXMuY29udGV4dDtmb3IoO3Q8YTspe2lmKHMpe2lmKCgwLHMuaXRlcmF0ZUZuKShyLHQpKXt0Kys7Y29udGludWV9dD0oMCxzLnByb2Nlc3NGbikocix0KzEpO2E9ZS5sZW5ndGg7cz1udWxsO249bnVsbDtpZih0Pj1hKWJyZWFrfW49KG58fF9hKVtlW3RdXTtpZihuJiYhQXJyYXkuaXNBcnJheShuKSl7ci5pQ3Vycj10O3QrKztpZighbi5jaGVja0ZufHwoMCxuLmNoZWNrRm4pKHIpKXtzPW47bj1udWxsfWVsc2Ugbj1udWxsfWVsc2UgdCsrfXRoaXMuc3RhdGU9bjt0aGlzLm1hdGNoPXM7dGhpcy5sYXN0UHJvY2Vzc2VkPXR9Zmx1c2goKXtmb3IoO3RoaXMubWF0Y2g7KXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheS5sZW5ndGg7dGhpcy5sYXN0UHJvY2Vzc2VkPSgwLHRoaXMubWF0Y2gucHJvY2Vzc0ZuKSh0aGlzLmNvbnRleHQsZSk7dGhpcy5tYXRjaD1udWxsO3RoaXMuc3RhdGU9bnVsbDt0aGlzLl9vcHRpbWl6ZSgpfX1yZXNldCgpe3RoaXMuc3RhdGU9bnVsbDt0aGlzLm1hdGNoPW51bGw7dGhpcy5sYXN0UHJvY2Vzc2VkPTB9fWNsYXNzIE9wZXJhdG9yTGlzdHtzdGF0aWMgQ0hVTktfU0laRT0xZTM7c3RhdGljIENIVU5LX1NJWkVfQUJPVVQ9dGhpcy5DSFVOS19TSVpFLTU7c3RhdGljIGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPSExO2NvbnN0cnVjdG9yKGU9MCx0KXt0aGlzLl9zdHJlYW1TaW5rPXQ7dGhpcy5mbkFycmF5PVtdO3RoaXMuYXJnc0FycmF5PVtdO3RoaXMub3B0aW1pemVyPSF0fHxlJnA/bmV3IE51bGxPcHRpbWl6ZXIodGhpcyk6bmV3IFF1ZXVlT3B0aW1pemVyKHRoaXMpO3RoaXMuZGVwZW5kZW5jaWVzPW5ldyBTZXQ7dGhpcy5fdG90YWxMZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMuX3Jlc29sdmVkPXQ/bnVsbDpQcm9taXNlLnJlc29sdmUoKX1zdGF0aWMgc2V0T3B0aW9ucyh7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6ZX0pe3RoaXMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuYXJnc0FycmF5Lmxlbmd0aH1nZXQgcmVhZHkoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZWR8fHRoaXMuX3N0cmVhbVNpbmsucmVhZHl9Z2V0IHRvdGFsTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3RvdGFsTGVuZ3RoK3RoaXMubGVuZ3RofWFkZE9wKGUsdCl7dGhpcy5vcHRpbWl6ZXIucHVzaChlLHQpO3RoaXMud2VpZ2h0Kys7dGhpcy5fc3RyZWFtU2luayYmKHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRXx8dGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFX0FCT1VUJiYoZT09PXllfHxlPT09TGUpKSYmdGhpcy5mbHVzaCgpfWFkZEltYWdlT3BzKGUsdCxhLG49ITEpe2lmKG4pe3RoaXMuYWRkT3Aoa2UpO3RoaXMuYWRkT3AoamUsW1tbIlNNYXNrIiwhMV1dXSl9dm9pZCAwIT09YSYmdGhpcy5hZGRPcCh4dCxbIk9DIixhXSk7dGhpcy5hZGRPcChlLHQpO3ZvaWQgMCE9PWEmJnRoaXMuYWRkT3AoQ3QsW10pO24mJnRoaXMuYWRkT3AoeWUpfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3AoaGUsW2VdKX19YWRkRGVwZW5kZW5jaWVzKGUpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGREZXBlbmRlbmN5KHQpfWFkZE9wTGlzdChlKXtpZihlIGluc3RhbmNlb2YgT3BlcmF0b3JMaXN0KXtmb3IoY29uc3QgdCBvZiBlLmRlcGVuZGVuY2llcyl0aGlzLmRlcGVuZGVuY2llcy5hZGQodCk7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXRoaXMuYWRkT3AoZS5mbkFycmF5W3RdLGUuYXJnc0FycmF5W3RdKX1lbHNlIHdhcm4oJ2FkZE9wTGlzdCAtIGlnbm9yaW5nIGludmFsaWQgIm9wTGlzdCIgcGFyYW1ldGVyLicpfWdldElSKCl7cmV0dXJue2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsZW5ndGg6dGhpcy5sZW5ndGh9fWdldCBfdHJhbnNmZXJzKCl7Y29uc3QgZT1bXSx7Zm5BcnJheTp0LGFyZ3NBcnJheTphLGxlbmd0aDpufT10aGlzO2ZvcihsZXQgcz0wO3M8bjtzKyspc3dpdGNoKHRbc10pe2Nhc2UgRXQ6Y2FzZSBfdDpjYXNlIE10Ontjb25zdHtiaXRtYXA6dCxkYXRhOm59PWFbc11bMF07KHR8fG4/LmJ1ZmZlcikmJmUucHVzaCh0fHxuLmJ1ZmZlcik7YnJlYWt9Y2FzZSBYdDp7Y29uc3RbLFt0XSxuXT1hW3NdO3QmJmUucHVzaCh0LmJ1ZmZlcixuLmJ1ZmZlcik7YnJlYWt9Y2FzZSBUdDpjb25zdFt0LG5dPWFbc107dCYmZS5wdXNoKHQuYnVmZmVyKTtuJiZlLnB1c2gobi5idWZmZXIpO2JyZWFrO2Nhc2UgUWU6ZS5wdXNoKGFbc11bMF0uYnVmZmVyKX1yZXR1cm4gZX1mbHVzaChlPSExLHQ9bnVsbCl7dGhpcy5vcHRpbWl6ZXIuZmx1c2goKTtjb25zdCBhPXRoaXMubGVuZ3RoO3RoaXMuX3RvdGFsTGVuZ3RoKz1hO3RoaXMuX3N0cmVhbVNpbmsuZW5xdWV1ZSh7Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxhc3RDaHVuazplLHNlcGFyYXRlQW5ub3RzOnQsbGVuZ3RoOmF9LDEsdGhpcy5fdHJhbnNmZXJzKTt0aGlzLmRlcGVuZGVuY2llcy5jbGVhcigpO3RoaXMuZm5BcnJheS5sZW5ndGg9MDt0aGlzLmFyZ3NBcnJheS5sZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMub3B0aW1pemVyLnJlc2V0KCl9fWNsYXNzIENoZWNrZWRPcGVyYXRvckxpc3QgZXh0ZW5kcyBPcGVyYXRvckxpc3R7bmVlZHNJc29sYXRpb249ITE7YWRkT3AoZSx0KXtpZighdGhpcy5uZWVkc0lzb2xhdGlvbilpZihlPT09UnQpdGhpcy5uZWVkc0lzb2xhdGlvbj10WzBdLm5lZWRzSXNvbGF0aW9uO2Vsc2UgaWYoZT09PWplKWZvcihjb25zdFtlLGFdb2YgdFswXSl7aWYoIkJNIj09PWUmJiJzb3VyY2Utb3ZlciIhPT1hKXt0aGlzLm5lZWRzSXNvbGF0aW9uPSEwO2JyZWFrfWlmKCJTTWFzayI9PT1lJiYhMSE9PWEpe3RoaXMubmVlZHNJc29sYXRpb249ITA7YnJlYWt9fXN1cGVyLmFkZE9wKGUsdCl9fWNvbnN0IHphPTEsTGE9MixVYT0zLFhhPTQsV2E9NSxLYT02LEdhPTc7Y2xhc3MgUGF0dGVybntzdGF0aWMjVT0hMTtjb25zdHJ1Y3Rvcigpe3VucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBQYXR0ZXJuLiIpfXN0YXRpYyBzZXRPcHRpb25zKHtoYXNHUFU6ZX0pe3RoaXMuI1U9ZX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxhLG4scyxyKXtjb25zdCBpPWUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2UuZGljdDplLG89aS5nZXQoIlNoYWRpbmdUeXBlIik7dHJ5e3N3aXRjaChvKXtjYXNlIHphOnJldHVybiBuZXcgRnVuY3Rpb25CYXNlZFNoYWRpbmcoaSx0LGEsbixzLHIpO2Nhc2UgTGE6Y2FzZSBVYTpyZXR1cm4gbmV3IFJhZGlhbEF4aWFsU2hhZGluZyhpLHQsYSxuLHMscik7Y2FzZSBYYTpjYXNlIFdhOmNhc2UgS2E6Y2FzZSBHYTpyZXR1cm4gbmV3IE1lc2hTaGFkaW5nKGUsdCxhLG4scyxyKTtkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5zdXBwb3J0ZWQgU2hhZGluZ1R5cGU6ICIrbyl9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oZSk7cmV0dXJuIG5ldyBEdW1teVNoYWRpbmd9fX1jbGFzcyBCYXNlU2hhZGluZ3tzdGF0aWMgU01BTExfTlVNQkVSPTFlLTY7Z2V0SVIoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRJUmAgY2FsbGVkLiIpfX1jbGFzcyBSYWRpYWxBeGlhbFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tjb25zdHJ1Y3RvcihlLHQsYSxuLHMscil7c3VwZXIoKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2xldCBpPTA7dGhpcy5zaGFkaW5nVHlwZT09PUxhP2k9NDp0aGlzLnNoYWRpbmdUeXBlPT09VWEmJihpPTYpO3RoaXMuY29vcmRzQXJyPWUuZ2V0QXJyYXkoIkNvb3JkcyIpO2lmKCFpc051bWJlckFycmF5KHRoaXMuY29vcmRzQXJyLGkpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUmFkaWFsQXhpYWxTaGFkaW5nOiBJbnZhbGlkIC9Db29yZHMgYXJyYXkuIik7Y29uc3Qgbz1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6bixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSk7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBsPTAsZj0xO2NvbnN0IGM9ZS5nZXRBcnJheSgiRG9tYWluIik7aXNOdW1iZXJBcnJheShjLDIpJiYoW2wsZl09Yyk7bGV0IGg9ITEsdT0hMTtjb25zdCBtPWUuZ2V0QXJyYXkoIkV4dGVuZCIpOyhmdW5jdGlvbiBpc0Jvb2xlYW5BcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYobnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoZT0+ImJvb2xlYW4iPT10eXBlb2YgZSl9KShtLDIpJiYoW2gsdV09bSk7dGhpcy5leHRlbmRTdGFydD1oO3RoaXMuZXh0ZW5kRW5kPXU7Y29uc3QgcD1lLmdldFJhdygiRnVuY3Rpb24iKSxkPW4uY3JlYXRlKHAsITApLGc9KGYtbCkvODQwLGI9dGhpcy5jb2xvclN0b3BzPVtdO2lmKGw+PWZ8fGc8PTApe2luZm8oIkJhZCBzaGFkaW5nIGRvbWFpbi4iKTtyZXR1cm59Y29uc3Qgdz1uZXcgRmxvYXQzMkFycmF5KG8ubnVtQ29tcHMpLGo9bmV3IEZsb2F0MzJBcnJheSgxKTtsZXQgaz0wO2pbMF09bDtkKGosMCx3LDApO2NvbnN0IHk9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO28uZ2V0UmdiKHcsMCx5KTtsZXRbcSx2LFNdPXk7Yi5wdXNoKFswLFV0aWwubWFrZUhleENvbG9yKHEsdixTKV0pO2xldCB4PTE7alswXT1sK2c7ZChqLDAsdywwKTtvLmdldFJnYih3LDAseSk7bGV0W0MsRixUXT15LE89Qy1xKzEsUj1GLXYrMSxIPVQtUysxLEQ9Qy1xLTEsTT1GLXYtMSxOPVQtUy0xO2ZvcihsZXQgZT0yO2U8ODQwO2UrKyl7alswXT1sK2UqZztkKGosMCx3LDApO28uZ2V0UmdiKHcsMCx5KTtjb25zdFt0LGEsbl09eSxzPWUtaztPPU1hdGgubWluKE8sKHQtcSsxKS9zKTtSPU1hdGgubWluKFIsKGEtdisxKS9zKTtIPU1hdGgubWluKEgsKG4tUysxKS9zKTtEPU1hdGgubWF4KEQsKHQtcS0xKS9zKTtNPU1hdGgubWF4KE0sKGEtdi0xKS9zKTtOPU1hdGgubWF4KE4sKG4tUy0xKS9zKTtpZighKEQ8PU8mJk08PVImJk48PUgpKXtjb25zdCBlPVV0aWwubWFrZUhleENvbG9yKEMsRixUKTtiLnB1c2goW3gvODQwLGVdKTtPPXQtQysxO1I9YS1GKzE7SD1uLVQrMTtEPXQtQy0xO009YS1GLTE7Tj1uLVQtMTtrPXg7cT1DO3Y9RjtTPVR9eD1lO0M9dDtGPWE7VD1ufWIucHVzaChbMSxVdGlsLm1ha2VIZXhDb2xvcihDLEYsVCldKTtsZXQgRT0idHJhbnNwYXJlbnQiO2UuaGFzKCJCYWNrZ3JvdW5kIikmJihFPW8uZ2V0UmdiSGV4KGUuZ2V0KCJCYWNrZ3JvdW5kIiksMCkpO2lmKCFoKXtiLnVuc2hpZnQoWzAsRV0pO2JbMV1bMF0rPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUn1pZighdSl7Yi5hdCgtMSlbMF0tPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUjtiLnB1c2goWzEsRV0pfXRoaXMuY29sb3JTdG9wcz1ifWdldElSKCl7Y29uc3R7Y29vcmRzQXJyOmUsc2hhZGluZ1R5cGU6dH09dGhpcztsZXQgYSxuLHMscixpO2lmKHQ9PT1MYSl7bj1bZVswXSxlWzFdXTtzPVtlWzJdLGVbM11dO3I9bnVsbDtpPW51bGw7YT0iYXhpYWwifWVsc2UgaWYodD09PVVhKXtuPVtlWzBdLGVbMV1dO3M9W2VbM10sZVs0XV07cj1lWzJdO2k9ZVs1XTthPSJyYWRpYWwifWVsc2UgdW5yZWFjaGFibGUoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsYSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLG4scyxyLGldfX1mdW5jdGlvbiBidWlsZE1lc2hWZXJ0ZXhEYXRhKGUsdCxhKXtsZXQgbj0wO2Zvcihjb25zdCBlIG9mIGEpaWYoZS50eXBlPT09cSluKz1lLmNvb3Jkcy5sZW5ndGg7ZWxzZSBpZihlLnR5cGU9PT12KXtjb25zdCB0PWUudmVydGljZXNQZXJSb3c7bis9KE1hdGguZmxvb3IoZS5jb29yZHMubGVuZ3RoL3QpLTEpKih0LTEpKjZ9Y29uc3Qgcz1uZXcgRmxvYXQzMkFycmF5KDIqbikscj1uZXcgVWludDhBcnJheSg0Km4pO2xldCBpPTAsbz0wO2NvbnN0IGFkZFZlcnRleD0oYSxuKT0+e3NbaSsrXT1lWzIqYV07c1tpKytdPWVbMiphKzFdO3JbbysrXT10WzQqbl07cltvKytdPXRbNCpuKzFdO3JbbysrXT10WzQqbisyXTtvKyt9O2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IHQ9ZS5jb29yZHMsYT1lLmNvbG9ycztpZihlLnR5cGU9PT1xKWZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylhZGRWZXJ0ZXgodFtlXSxhW2VdKTtlbHNlIGlmKGUudHlwZT09PXYpe2NvbnN0IG49ZS52ZXJ0aWNlc1BlclJvdyxzPU1hdGguZmxvb3IodC5sZW5ndGgvbiktMSxyPW4tMTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtsZXQgcz1lKm47Zm9yKGxldCBlPTA7ZTxyO2UrKyxzKyspe2FkZFZlcnRleCh0W3NdLGFbc10pO2FkZFZlcnRleCh0W3MrMV0sYVtzKzFdKTthZGRWZXJ0ZXgodFtzK25dLGFbcytuXSk7YWRkVmVydGV4KHRbcytuKzFdLGFbcytuKzFdKTthZGRWZXJ0ZXgodFtzKzFdLGFbcysxXSk7YWRkVmVydGV4KHRbcytuXSxhW3Mrbl0pfX19fXJldHVybntwb3NEYXRhOnMsY29sRGF0YTpyLHZlcnRleENvdW50Om59fWNsYXNzIEZ1bmN0aW9uQmFzZWRTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIE1BWF9TVEVQX0NPVU5UPTUxMjtjb25zdHJ1Y3RvcihlLGEsbixzLHIsaSl7c3VwZXIoKTt0aGlzLmJib3g9bG9va3VwTm9ybWFsUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCk7Y29uc3Qgbz1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6YSxyZXNvdXJjZXM6bixwZGZGdW5jdGlvbkZhY3Rvcnk6cyxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6cixsb2NhbENvbG9yU3BhY2VDYWNoZTppfSk7dGhpcy5iYWNrZ3JvdW5kPWUuaGFzKCJCYWNrZ3JvdW5kIik/by5nZXRSZ2IoZS5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IGw9ZS5nZXRSYXcoIkZ1bmN0aW9uIik7aWYoIWwpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGdW5jdGlvbkJhc2VkU2hhZGluZzogbWlzc2luZyAvRnVuY3Rpb24iKTtjb25zdCBmPXMuY3JlYXRlKGwsITApLFtjLGgsdSxtXT1sb29rdXBSZWN0KGUuZ2V0QXJyYXkoIkRvbWFpbiIpLFswLDEsMCwxXSkscD1sb29rdXBNYXRyaXgoZS5nZXRBcnJheSgiTWF0cml4IikscGEpO3RoaXMuYm91bmRzPXQuc2xpY2UoKTtVdGlsLmF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KFtjLHUsaCxtXSxwLHRoaXMuYm91bmRzKTtjb25zdCBkPXRoaXMuYm91bmRzWzJdLXRoaXMuYm91bmRzWzBdLGc9dGhpcy5ib3VuZHNbM10tdGhpcy5ib3VuZHNbMV0sYj1NYXRoQ2xhbXAoTWF0aC5jZWlsKGQpLDEsRnVuY3Rpb25CYXNlZFNoYWRpbmcuTUFYX1NURVBfQ09VTlQpLHc9TWF0aENsYW1wKE1hdGguY2VpbChnKSwxLEZ1bmN0aW9uQmFzZWRTaGFkaW5nLk1BWF9TVEVQX0NPVU5UKSxqPWIrMSxrPSh3KzEpKmoseT10aGlzLmNvb3Jkcz1uZXcgRmxvYXQzMkFycmF5KDIqaykscT10aGlzLmNvbG9ycz1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCprKSxTPW5ldyBGbG9hdDMyQXJyYXkoMikseD1uZXcgRmxvYXQzMkFycmF5KG8ubnVtQ29tcHMpLEM9KGgtYykvYixGPShtLXUpL3csVD1DLzIsTz1GLzI7bGV0IFI9MCxIPTA7Zm9yKGxldCBlPTA7ZTw9dztlKyspe2NvbnN0IHQ9dStGKmU7U1sxXT1lPT09dz90LU86dDtmb3IobGV0IGU9MDtlPD1iO2UrKyl7Y29uc3QgYT1jK0MqZTtTWzBdPWU9PT1iP2EtVDphO2YoUywwLHgsMCk7eVtSXT1hO3lbUisxXT10O1V0aWwuYXBwbHlUcmFuc2Zvcm0oeSxwLFIpO1IrPTI7by5nZXRSZ2JJdGVtKHgsMCxxLEgpO0grPTR9fWNvbnN0IEQ9bmV3IFVpbnQzMkFycmF5KGspO2ZvcihsZXQgZT0wO2U8aztlKyspRFtlXT1lO3RoaXMuZmlndXJlcz1be3R5cGU6dixjb29yZHM6RCxjb2xvcnM6bmV3IFVpbnQzMkFycmF5KEQpLHZlcnRpY2VzUGVyUm93Omp9XX1nZXRJUigpe2NvbnN0e3Bvc0RhdGE6ZSxjb2xEYXRhOnQsdmVydGV4Q291bnQ6YX09YnVpbGRNZXNoVmVydGV4RGF0YSh0aGlzLmNvb3Jkcyx0aGlzLmNvbG9ycyx0aGlzLmZpZ3VyZXMpO3JldHVyblsiTWVzaCIsemEsZSx0LGEsdGhpcy5ib3VuZHMsdGhpcy5iYm94LHRoaXMuYmFja2dyb3VuZF19fWNsYXNzIE1lc2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMuY29udGV4dD10O3RoaXMuYnVmZmVyPTA7dGhpcy5idWZmZXJMZW5ndGg9MDtjb25zdCBhPXQubnVtQ29tcHM7dGhpcy50bXBDb21wc0J1Zj1uZXcgRmxvYXQzMkFycmF5KGEpO2NvbnN0IG49dC5jb2xvclNwYWNlLm51bUNvbXBzO3RoaXMudG1wQ3NDb21wc0J1Zj10LmNvbG9yRm4/bmV3IEZsb2F0MzJBcnJheShuKTp0aGlzLnRtcENvbXBzQnVmfWdldCBoYXNEYXRhKCl7aWYodGhpcy5zdHJlYW0uZW5kKXJldHVybiB0aGlzLnN0cmVhbS5wb3M8dGhpcy5zdHJlYW0uZW5kO2lmKHRoaXMuYnVmZmVyTGVuZ3RoPjApcmV0dXJuITA7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7aWYoZTwwKXJldHVybiExO3RoaXMuYnVmZmVyPWU7dGhpcy5idWZmZXJMZW5ndGg9ODtyZXR1cm4hMH1yZWFkQml0cyhlKXtjb25zdHtzdHJlYW06dH09dGhpcztsZXR7YnVmZmVyOmEsYnVmZmVyTGVuZ3RoOm59PXRoaXM7aWYoMzI9PT1lKXtpZigwPT09bilyZXR1cm4gdC5nZXRJbnQzMigpPj4+MDthPWE8PDI0fHQuZ2V0Qnl0ZSgpPDwxNnx0LmdldEJ5dGUoKTw8OHx0LmdldEJ5dGUoKTtjb25zdCBlPXQuZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PG4pLTE7cmV0dXJuKGE8PDgtbnwoMjU1JmUpPj5uKT4+PjB9aWYoOD09PWUmJjA9PT1uKXJldHVybiB0LmdldEJ5dGUoKTtmb3IoO248ZTspe2E9YTw8OHx0LmdldEJ5dGUoKTtuKz04fW4tPWU7dGhpcy5idWZmZXJMZW5ndGg9bjt0aGlzLmJ1ZmZlcj1hJigxPDxuKS0xO3JldHVybiBhPj5ufWFsaWduKCl7dGhpcy5idWZmZXI9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wfXJlYWRGbGFnKCl7cmV0dXJuIHRoaXMucmVhZEJpdHModGhpcy5jb250ZXh0LmJpdHNQZXJGbGFnKX1yZWFkQ29vcmRpbmF0ZSgpe2NvbnN0e2JpdHNQZXJDb29yZGluYXRlOmUsZGVjb2RlOnR9PXRoaXMuY29udGV4dCxhPXRoaXMucmVhZEJpdHMoZSksbj10aGlzLnJlYWRCaXRzKGUpLHM9ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMDtyZXR1cm5bYSpzKih0WzFdLXRbMF0pK3RbMF0sbipzKih0WzNdLXRbMl0pK3RbMl1dfXJlYWRDb21wb25lbnRzKCl7Y29uc3R7Yml0c1BlckNvbXBvbmVudDplLGNvbG9yRm46dCxjb2xvclNwYWNlOmEsZGVjb2RlOm4sbnVtQ29tcHM6c309dGhpcy5jb250ZXh0LHI9ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxpPXRoaXMudG1wQ29tcHNCdWY7Zm9yKGxldCB0PTAsYT00O3Q8czt0KyssYSs9Mil7Y29uc3Qgcz10aGlzLnJlYWRCaXRzKGUpO2lbdF09cypyKihuW2ErMV0tblthXSkrblthXX1jb25zdCBvPXRoaXMudG1wQ3NDb21wc0J1Zjt0Py4oaSwwLG8sMCk7cmV0dXJuIGEuZ2V0UmdiKG8sMCl9fWxldCBWYT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGdldEIoZSl7cmV0dXJuIFZhW2VdfHw9ZnVuY3Rpb24gYnVpbGRCKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBhPTA7YTw9ZTthKyspe2NvbnN0IG49YS9lLHM9MS1uO3QucHVzaChuZXcgRmxvYXQzMkFycmF5KFtzKiozLDMqbipzKioyLDMqbioqMipzLG4qKjNdKSl9cmV0dXJuIHR9KGUpfWNsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIE1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTM7c3RhdGljIE1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTIwO3N0YXRpYyBUUklBTkdMRV9ERU5TSVRZPTIwO2NvbnN0cnVjdG9yKGUsdCxhLG4scyxyKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IGk9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9aS5nZXQoIlNoYWRpbmdUeXBlIik7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoaS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG89Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczppLmdldFJhdygiQ1MiKXx8aS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5Om4sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn0pO3RoaXMuYmFja2dyb3VuZD1pLmhhcygiQmFja2dyb3VuZCIpP28uZ2V0UmdiKGkuZ2V0KCJCYWNrZ3JvdW5kIiksMCk6bnVsbDtjb25zdCBsPWkuZ2V0UmF3KCJGdW5jdGlvbiIpLGY9bD9uLmNyZWF0ZShsLCEwKTpudWxsO3RoaXMuY29vcmRzPVtdO3RoaXMuY29sb3JzPVtdO3RoaXMuZmlndXJlcz1bXTtjb25zdCBjPXtiaXRzUGVyQ29vcmRpbmF0ZTppLmdldCgiQml0c1BlckNvb3JkaW5hdGUiKSxiaXRzUGVyQ29tcG9uZW50OmkuZ2V0KCJCaXRzUGVyQ29tcG9uZW50IiksYml0c1BlckZsYWc6aS5nZXQoIkJpdHNQZXJGbGFnIiksZGVjb2RlOmkuZ2V0QXJyYXkoIkRlY29kZSIpLGNvbG9yRm46Zixjb2xvclNwYWNlOm8sbnVtQ29tcHM6Zj8xOm8ubnVtQ29tcHN9LGg9bmV3IE1lc2hTdHJlYW1SZWFkZXIoZSxjKTtsZXQgdT0hMTtzd2l0Y2godGhpcy5zaGFkaW5nVHlwZSl7Y2FzZSBYYTp0aGlzLl9kZWNvZGVUeXBlNFNoYWRpbmcoaCk7YnJlYWs7Y2FzZSBXYTpjb25zdCBlPTB8aS5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBWZXJ0aWNlc1BlclJvdyIpO3RoaXMuX2RlY29kZVR5cGU1U2hhZGluZyhoLGUpO2JyZWFrO2Nhc2UgS2E6dGhpcy5fZGVjb2RlVHlwZTZTaGFkaW5nKGgpO3U9ITA7YnJlYWs7Y2FzZSBHYTp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcoaCk7dT0hMDticmVhaztkZWZhdWx0OnVucmVhY2hhYmxlKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYodSl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPVtdLHM9W107bGV0IHI9MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IGk9ZS5yZWFkRmxhZygpLG89ZS5yZWFkQ29vcmRpbmF0ZSgpLGw9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1yKXtpZighKDA8PWkmJmk8PTIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNCBmbGFnIik7c3dpdGNoKGkpe2Nhc2UgMDpyPTM7YnJlYWs7Y2FzZSAxOnMucHVzaChzLmF0KC0yKSxzLmF0KC0xKSk7cj0xO2JyZWFrO2Nhc2UgMjpzLnB1c2gocy5hdCgtMykscy5hdCgtMSkpO3I9MX1uLnB1c2goaSl9cy5wdXNoKHQubGVuZ3RoKTt0LnB1c2gobyk7YS5wdXNoKGwpO3ItLTtlLmFsaWduKCl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6cSxjb29yZHM6bmV3IEludDMyQXJyYXkocyksY29sb3JzOm5ldyBJbnQzMkFycmF5KHMpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGE9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxzPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCkscj1lLnJlYWRDb21wb25lbnRzKCk7cy5wdXNoKGEubGVuZ3RoKTthLnB1c2godCk7bi5wdXNoKHIpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOnYsY29vcmRzOm5ldyBJbnQzMkFycmF5KHMpLGNvbG9yczpuZXcgSW50MzJBcnJheShzKSx2ZXJ0aWNlc1BlclJvdzp0fSl9X2RlY29kZVR5cGU2U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMsbj1uZXcgSW50MzJBcnJheSgxNikscz1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHI9ZS5yZWFkRmxhZygpO2lmKCEoMDw9ciYmcjw9MykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU2IGZsYWciKTtjb25zdCBpPXQubGVuZ3RoO2ZvcihsZXQgYT0wLG49MCE9PXI/ODoxMjthPG47YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IG89YS5sZW5ndGg7Zm9yKGxldCB0PTAsbj0wIT09cj8yOjQ7dDxuO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxmLGMsaDtzd2l0Y2gocil7Y2FzZSAwOm5bMTJdPWkrMztuWzEzXT1pKzQ7blsxNF09aSs1O25bMTVdPWkrNjtuWzhdPWkrMjtuWzExXT1pKzc7bls0XT1pKzE7bls3XT1pKzg7blswXT1pO25bMV09aSsxMTtuWzJdPWkrMTA7blszXT1pKzk7c1syXT1vKzE7c1szXT1vKzI7c1swXT1vO3NbMV09byszO2JyZWFrO2Nhc2UgMTpsPW5bMTJdO2Y9blsxM107Yz1uWzE0XTtoPW5bMTVdO25bMTJdPWg7blsxM109aSswO25bMTRdPWkrMTtuWzE1XT1pKzI7bls4XT1jO25bMTFdPWkrMztuWzRdPWY7bls3XT1pKzQ7blswXT1sO25bMV09aSs3O25bMl09aSs2O25bM109aSs1O2w9c1syXTtmPXNbM107c1syXT1mO3NbM109bztzWzBdPWw7c1sxXT1vKzE7YnJlYWs7Y2FzZSAyOmw9blsxNV07Zj1uWzExXTtuWzEyXT1uWzNdO25bMTNdPWkrMDtuWzE0XT1pKzE7blsxNV09aSsyO25bOF09bls3XTtuWzExXT1pKzM7bls0XT1mO25bN109aSs0O25bMF09bDtuWzFdPWkrNztuWzJdPWkrNjtuWzNdPWkrNTtsPXNbM107c1syXT1zWzFdO3NbM109bztzWzBdPWw7c1sxXT1vKzE7YnJlYWs7Y2FzZSAzOm5bMTJdPW5bMF07blsxM109aSswO25bMTRdPWkrMTtuWzE1XT1pKzI7bls4XT1uWzFdO25bMTFdPWkrMztuWzRdPW5bMl07bls3XT1pKzQ7blswXT1uWzNdO25bMV09aSs3O25bMl09aSs2O25bM109aSs1O3NbMl09c1swXTtzWzNdPW87c1swXT1zWzFdO3NbMV09bysxfW5bNV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtuWzBdXVswXS10W25bMTVdXVswXSs2Kih0W25bNF1dWzBdK3RbblsxXV1bMF0pLTIqKHRbblsxMl1dWzBdK3RbblszXV1bMF0pKzMqKHRbblsxM11dWzBdK3Rbbls3XV1bMF0pKS85LCgtNCp0W25bMF1dWzFdLXRbblsxNV1dWzFdKzYqKHRbbls0XV1bMV0rdFtuWzFdXVsxXSktMioodFtuWzEyXV1bMV0rdFtuWzNdXVsxXSkrMyoodFtuWzEzXV1bMV0rdFtuWzddXVsxXSkpLzldKTtuWzZdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblszXV1bMF0tdFtuWzEyXV1bMF0rNioodFtuWzJdXVswXSt0W25bN11dWzBdKS0yKih0W25bMF1dWzBdK3RbblsxNV1dWzBdKSszKih0W25bNF1dWzBdK3RbblsxNF1dWzBdKSkvOSwoLTQqdFtuWzNdXVsxXS10W25bMTJdXVsxXSs2Kih0W25bMl1dWzFdK3Rbbls3XV1bMV0pLTIqKHRbblswXV1bMV0rdFtuWzE1XV1bMV0pKzMqKHRbbls0XV1bMV0rdFtuWzE0XV1bMV0pKS85XSk7bls5XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W25bMTJdXVswXS10W25bM11dWzBdKzYqKHRbbls4XV1bMF0rdFtuWzEzXV1bMF0pLTIqKHRbblswXV1bMF0rdFtuWzE1XV1bMF0pKzMqKHRbblsxMV1dWzBdK3RbblsxXV1bMF0pKS85LCgtNCp0W25bMTJdXVsxXS10W25bM11dWzFdKzYqKHRbbls4XV1bMV0rdFtuWzEzXV1bMV0pLTIqKHRbblswXV1bMV0rdFtuWzE1XV1bMV0pKzMqKHRbblsxMV1dWzFdK3RbblsxXV1bMV0pKS85XSk7blsxMF09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtuWzE1XV1bMF0tdFtuWzBdXVswXSs2Kih0W25bMTFdXVswXSt0W25bMTRdXVswXSktMioodFtuWzEyXV1bMF0rdFtuWzNdXVswXSkrMyoodFtuWzJdXVswXSt0W25bOF1dWzBdKSkvOSwoLTQqdFtuWzE1XV1bMV0tdFtuWzBdXVsxXSs2Kih0W25bMTFdXVsxXSt0W25bMTRdXVsxXSktMioodFtuWzEyXV1bMV0rdFtuWzNdXVsxXSkrMyoodFtuWzJdXVsxXSt0W25bOF1dWzFdKSkvOV0pO3RoaXMuZmlndXJlcy5wdXNoKHt0eXBlOlMsY29vcmRzOm5ldyBJbnQzMkFycmF5KG4pLGNvbG9yczpuZXcgSW50MzJBcnJheShzKX0pfX1fZGVjb2RlVHlwZTdTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPW5ldyBJbnQzMkFycmF5KDE2KSxzPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcj1lLnJlYWRGbGFnKCk7aWYoISgwPD1yJiZyPD0zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBhPTAsbj0wIT09cj8xMjoxNjthPG47YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IG89YS5sZW5ndGg7Zm9yKGxldCB0PTAsbj0wIT09cj8yOjQ7dDxuO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxmLGMsaDtzd2l0Y2gocil7Y2FzZSAwOm5bMTJdPWkrMztuWzEzXT1pKzQ7blsxNF09aSs1O25bMTVdPWkrNjtuWzhdPWkrMjtuWzldPWkrMTM7blsxMF09aSsxNDtuWzExXT1pKzc7bls0XT1pKzE7bls1XT1pKzEyO25bNl09aSsxNTtuWzddPWkrODtuWzBdPWk7blsxXT1pKzExO25bMl09aSsxMDtuWzNdPWkrOTtzWzJdPW8rMTtzWzNdPW8rMjtzWzBdPW87c1sxXT1vKzM7YnJlYWs7Y2FzZSAxOmw9blsxMl07Zj1uWzEzXTtjPW5bMTRdO2g9blsxNV07blsxMl09aDtuWzEzXT1pKzA7blsxNF09aSsxO25bMTVdPWkrMjtuWzhdPWM7bls5XT1pKzk7blsxMF09aSsxMDtuWzExXT1pKzM7bls0XT1mO25bNV09aSs4O25bNl09aSsxMTtuWzddPWkrNDtuWzBdPWw7blsxXT1pKzc7blsyXT1pKzY7blszXT1pKzU7bD1zWzJdO2Y9c1szXTtzWzJdPWY7c1szXT1vO3NbMF09bDtzWzFdPW8rMTticmVhaztjYXNlIDI6bD1uWzE1XTtmPW5bMTFdO25bMTJdPW5bM107blsxM109aSswO25bMTRdPWkrMTtuWzE1XT1pKzI7bls4XT1uWzddO25bOV09aSs5O25bMTBdPWkrMTA7blsxMV09aSszO25bNF09ZjtuWzVdPWkrODtuWzZdPWkrMTE7bls3XT1pKzQ7blswXT1sO25bMV09aSs3O25bMl09aSs2O25bM109aSs1O2w9c1szXTtzWzJdPXNbMV07c1szXT1vO3NbMF09bDtzWzFdPW8rMTticmVhaztjYXNlIDM6blsxMl09blswXTtuWzEzXT1pKzA7blsxNF09aSsxO25bMTVdPWkrMjtuWzhdPW5bMV07bls5XT1pKzk7blsxMF09aSsxMDtuWzExXT1pKzM7bls0XT1uWzJdO25bNV09aSs4O25bNl09aSsxMTtuWzddPWkrNDtuWzBdPW5bM107blsxXT1pKzc7blsyXT1pKzY7blszXT1pKzU7c1syXT1zWzBdO3NbM109bztzWzBdPXNbMV07c1sxXT1vKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6Uyxjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KHMpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTthc3NlcnQodC50eXBlPT09UywiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IGE9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxzPXQuY29vcmRzLHI9dC5jb2xvcnMsaT1NYXRoLm1pbihhW3NbMF1dWzBdLGFbc1szXV1bMF0sYVtzWzEyXV1bMF0sYVtzWzE1XV1bMF0pLG89TWF0aC5taW4oYVtzWzBdXVsxXSxhW3NbM11dWzFdLGFbc1sxMl1dWzFdLGFbc1sxNV1dWzFdKSxsPU1hdGgubWF4KGFbc1swXV1bMF0sYVtzWzNdXVswXSxhW3NbMTJdXVswXSxhW3NbMTVdXVswXSksZj1NYXRoLm1heChhW3NbMF1dWzFdLGFbc1szXV1bMV0sYVtzWzEyXV1bMV0sYVtzWzE1XV1bMV0pO2xldCBjPU1hdGguY2VpbCgobC1pKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO2M9TWF0aENsYW1wKGMsTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQpO2xldCBoPU1hdGguY2VpbCgoZi1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO2g9TWF0aENsYW1wKGgsTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQpO2NvbnN0IHU9YysxLG09bmV3IEludDMyQXJyYXkoKGgrMSkqdSkscD1uZXcgSW50MzJBcnJheSgoaCsxKSp1KTtsZXQgZD0wO2NvbnN0IGc9bmV3IFVpbnQ4QXJyYXkoMyksYj1uZXcgVWludDhBcnJheSgzKSx3PW5bclswXV0saj1uW3JbMV1dLGs9bltyWzJdXSx5PW5bclszXV0scT1nZXRCKGgpLHg9Z2V0QihjKTtmb3IobGV0IGU9MDtlPD1oO2UrKyl7Z1swXT0od1swXSooaC1lKStrWzBdKmUpL2h8MDtnWzFdPSh3WzFdKihoLWUpK2tbMV0qZSkvaHwwO2dbMl09KHdbMl0qKGgtZSkra1syXSplKS9ofDA7YlswXT0oalswXSooaC1lKSt5WzBdKmUpL2h8MDtiWzFdPShqWzFdKihoLWUpK3lbMV0qZSkvaHwwO2JbMl09KGpbMl0qKGgtZSkreVsyXSplKS9ofDA7Zm9yKGxldCB0PTA7dDw9Yzt0KyssZCsrKXtpZighKDAhPT1lJiZlIT09aHx8MCE9PXQmJnQhPT1jKSljb250aW51ZTtsZXQgcj0wLGk9MCxvPTA7Zm9yKGxldCBuPTA7bjw9MztuKyspZm9yKGxldCBsPTA7bDw9MztsKyssbysrKXtjb25zdCBmPXFbZV1bbl0qeFt0XVtsXTtyKz1hW3Nbb11dWzBdKmY7aSs9YVtzW29dXVsxXSpmfW1bZF09YS5sZW5ndGg7YS5wdXNoKFtyLGldKTtwW2RdPW4ubGVuZ3RoO2NvbnN0IGw9bmV3IFVpbnQ4QXJyYXkoMyk7bFswXT0oZ1swXSooYy10KStiWzBdKnQpL2N8MDtsWzFdPShnWzFdKihjLXQpK2JbMV0qdCkvY3wwO2xbMl09KGdbMl0qKGMtdCkrYlsyXSp0KS9jfDA7bi5wdXNoKGwpfX1tWzBdPXNbMF07cFswXT1yWzBdO21bY109c1szXTtwW2NdPXJbMV07bVt1KmhdPXNbMTJdO3BbdSpoXT1yWzJdO21bdSpoK2NdPXNbMTVdO3BbdSpoK2NdPXJbM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOnYsY29vcmRzOm0sY29sb3JzOnAsdmVydGljZXNQZXJSb3c6dX19X3VwZGF0ZUJvdW5kcygpeyFmdW5jdGlvbiBtZXNoVXBkYXRlQm91bmRzKGUpe2xldCB0PWUuY29vcmRzWzBdWzBdLGE9ZS5jb29yZHNbMF1bMV0sbj10LHM9YTtmb3IobGV0IHI9MSxpPWUuY29vcmRzLmxlbmd0aDtyPGk7cisrKXtjb25zdCBpPWUuY29vcmRzW3JdWzBdLG89ZS5jb29yZHNbcl1bMV07dD10Pmk/aTp0O2E9YT5vP286YTtuPW48aT9pOm47cz1zPG8/bzpzfWUuYm91bmRzPVt0LGEsbixzXX0odGhpcyl9X3BhY2tEYXRhKCl7IWZ1bmN0aW9uIG1lc2hQYWNrRGF0YShlKXtsZXQgdCxhLG47Y29uc3Qgcz1lLmNvb3JkcyxyPW5ldyBGbG9hdDMyQXJyYXkoMipzLmxlbmd0aCk7Zm9yKHQ9MCxhPTAsbj1zLmxlbmd0aDt0PG47dCsrKXtjb25zdCBlPXNbdF07clthKytdPWVbMF07clthKytdPWVbMV19ZS5jb29yZHM9cjtjb25zdCBpPWUuY29sb3JzLG89bmV3IFVpbnQ4QXJyYXkoNCppLmxlbmd0aCk7Zm9yKHQ9MCxhPTAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBlPWlbdF07b1thKytdPWVbMF07b1thKytdPWVbMV07b1thKytdPWVbMl07YSsrfWUuY29sb3JzPW87Zm9yKGNvbnN0IHQgb2YgZS5maWd1cmVzKXt0LmNvb3Jkcz1uZXcgVWludDMyQXJyYXkodC5jb29yZHMpO3QuY29sb3JzPW5ldyBVaW50MzJBcnJheSh0LmNvbG9ycyl9fSh0aGlzKX1nZXRJUigpe2NvbnN0e3Bvc0RhdGE6ZSxjb2xEYXRhOnQsdmVydGV4Q291bnQ6YX09YnVpbGRNZXNoVmVydGV4RGF0YSh0aGlzLmNvb3Jkcyx0aGlzLmNvbG9ycyx0aGlzLmZpZ3VyZXMpO3JldHVyblsiTWVzaCIsdGhpcy5zaGFkaW5nVHlwZSxlLHQsYSx0aGlzLmJvdW5kcyx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fWZ1bmN0aW9uIGdldFRpbGluZ1BhdHRlcm5JUihlLHQsYSxuPSEwKXtjb25zdCBzPWxvb2t1cE1hdHJpeCh0LmdldEFycmF5KCJNYXRyaXgiKSxwYSkscj1sb29rdXBOb3JtYWxSZWN0KHQuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZighcnx8clsyXS1yWzBdPT09MHx8clszXS1yWzFdPT09MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9CQm94IGFycmF5LiIpO2NvbnN0IGk9dC5nZXQoIlhTdGVwIik7aWYoIm51bWJlciIhPXR5cGVvZiBpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1hTdGVwIHZhbHVlLiIpO2NvbnN0IG89dC5nZXQoIllTdGVwIik7aWYoIm51bWJlciIhPXR5cGVvZiBvKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1lTdGVwIHZhbHVlLiIpO2NvbnN0IGw9dC5nZXQoIlBhaW50VHlwZSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1BhaW50VHlwZSB2YWx1ZS4iKTtjb25zdCBmPXQuZ2V0KCJUaWxpbmdUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIoZikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvVGlsaW5nVHlwZSB2YWx1ZS4iKTtyZXR1cm5bIlRpbGluZ1BhdHRlcm4iLGEsZSxzLHIsaSxvLGwsZixuXX1mdW5jdGlvbiBoZXhUb0ludChlLHQpe2xldCBhPTA7Zm9yKGxldCBuPTA7bjw9dDtuKyspYT1hPDw4fGVbbl07cmV0dXJuIGE+Pj4wfWZ1bmN0aW9uIGhleFRvU3RyKGUsdCl7cmV0dXJuIDE9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdKTozPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSxlWzJdLGVbM10pOlN0cmluZy5mcm9tQ2hhckNvZGUoLi4uZS5zdWJhcnJheSgwLHQrMSkpfWZ1bmN0aW9uIGFkZEhleChlLHQsYSl7bGV0IG49MDtmb3IobGV0IHM9YTtzPj0wO3MtLSl7bis9ZVtzXSt0W3NdO2Vbc109MjU1Jm47bj4+PTh9fWZ1bmN0aW9uIGluY0hleChlLHQpe2xldCBhPTE7Zm9yKGxldCBuPXQ7bj49MCYmYT4wO24tLSl7YSs9ZVtuXTtlW25dPTI1NSZhO2E+Pj04fX1jb25zdCAkYT0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFtIGV4dGVuZHMgU3RyZWFte3RtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSk7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwwLGUubGVuZ3RoLG51bGwpfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgYT10aGlzLmdldEJ5dGUoKTtpZihhPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmYSk7dD10PDw3fDEyNyZhfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmdldEJ5dGVzKHQrMSkpfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgYTtjb25zdCBuPXRoaXMudG1wQnVmO2xldCBzPTA7ZG97Y29uc3QgZT10aGlzLmdldEJ5dGUoKTtpZihlPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2E9ISgxMjgmZSk7bltzKytdPTEyNyZlfXdoaWxlKCFhKTtsZXQgcj10LGk9MCxvPTA7Zm9yKDtyPj0wOyl7Zm9yKDtvPDgmJm4ubGVuZ3RoPjA7KXtpfD1uWy0tc108PG87bys9N31lW3JdPTI1NSZpO3ItLTtpPj49ODtvLT04fX1yZWFkSGV4U2lnbmVkKGUsdCl7dGhpcy5yZWFkSGV4TnVtYmVyKGUsdCk7Y29uc3QgYT0xJmVbdF0/MjU1OjA7bGV0IG49MDtmb3IobGV0IHM9MDtzPD10O3MrKyl7bj0oMSZuKTw8OHxlW3NdO2Vbc109bj4+MV5hfX1yZWFkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKSx0PW5ldyBBcnJheShlKTtmb3IobGV0IGE9MDthPGU7YSsrKXRbYV09dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoLi4udCl9fWNsYXNzIEJpbmFyeUNNYXBSZWFkZXJ7YXN5bmMgcHJvY2VzcyhlLHQsYSl7Y29uc3Qgbj1uZXcgQmluYXJ5Q01hcFN0cmVhbShlKSxzPW4uZ2V0Qnl0ZSgpO3QudmVydGljYWw9ISEoMSZzKTtsZXQgcj1udWxsO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoJGEpLG89bmV3IFVpbnQ4QXJyYXkoJGEpLGw9bmV3IFVpbnQ4QXJyYXkoJGEpLGY9bmV3IFVpbnQ4QXJyYXkoJGEpLGM9bmV3IFVpbnQ4QXJyYXkoJGEpO2xldCBoLHU7Zm9yKDsodT1uLmdldEJ5dGUoKSk+PTA7KXtjb25zdCBlPXU+PjU7aWYoNz09PWUpe3N3aXRjaCgzMSZ1KXtjYXNlIDA6bi5yZWFkU3RyaW5nKCk7YnJlYWs7Y2FzZSAxOnI9bi5yZWFkU3RyaW5nKCl9Y29udGludWV9Y29uc3QgYT0hISgxNiZ1KSxzPTE1JnU7aWYocysxPiRhKXRocm93IG5ldyBFcnJvcigiQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzOiBJbnZhbGlkIGRhdGFTaXplLiIpO2NvbnN0IG09MSxwPW4ucmVhZE51bWJlcigpO3N3aXRjaChlKXtjYXNlIDA6bi5yZWFkSGV4KGkscyk7bi5yZWFkSGV4TnVtYmVyKG8scyk7YWRkSGV4KG8saSxzKTt0LmFkZENvZGVzcGFjZVJhbmdlKHMrMSxoZXhUb0ludChpLHMpLGhleFRvSW50KG8scykpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChvLHMpO24ucmVhZEhleE51bWJlcihpLHMpO2FkZEhleChpLG8scyk7bi5yZWFkSGV4TnVtYmVyKG8scyk7YWRkSGV4KG8saSxzKTt0LmFkZENvZGVzcGFjZVJhbmdlKHMrMSxoZXhUb0ludChpLHMpLGhleFRvSW50KG8scykpfWJyZWFrO2Nhc2UgMTpuLnJlYWRIZXgoaSxzKTtuLnJlYWRIZXhOdW1iZXIobyxzKTthZGRIZXgobyxpLHMpO24ucmVhZE51bWJlcigpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChvLHMpO24ucmVhZEhleE51bWJlcihpLHMpO2FkZEhleChpLG8scyk7bi5yZWFkSGV4TnVtYmVyKG8scyk7YWRkSGV4KG8saSxzKTtuLnJlYWROdW1iZXIoKX1icmVhaztjYXNlIDI6bi5yZWFkSGV4KGwscyk7aD1uLnJlYWROdW1iZXIoKTt0Lm1hcE9uZShoZXhUb0ludChsLHMpLGgpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChsLHMpO2lmKCFhKXtuLnJlYWRIZXhOdW1iZXIoYyxzKTthZGRIZXgobCxjLHMpfWg9bi5yZWFkU2lnbmVkKCkrKGgrMSk7dC5tYXBPbmUoaGV4VG9JbnQobCxzKSxoKX1icmVhaztjYXNlIDM6bi5yZWFkSGV4KGkscyk7bi5yZWFkSGV4TnVtYmVyKG8scyk7YWRkSGV4KG8saSxzKTtoPW4ucmVhZE51bWJlcigpO3QubWFwQ2lkUmFuZ2UoaGV4VG9JbnQoaSxzKSxoZXhUb0ludChvLHMpLGgpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChvLHMpO2lmKGEpaS5zZXQobyk7ZWxzZXtuLnJlYWRIZXhOdW1iZXIoaSxzKTthZGRIZXgoaSxvLHMpfW4ucmVhZEhleE51bWJlcihvLHMpO2FkZEhleChvLGkscyk7aD1uLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KGkscyksaGV4VG9JbnQobyxzKSxoKX1icmVhaztjYXNlIDQ6bi5yZWFkSGV4KGwsbSk7bi5yZWFkSGV4KGYscyk7dC5tYXBPbmUoaGV4VG9JbnQobCxtKSxoZXhUb1N0cihmLHMpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobCxtKTtpZighYSl7bi5yZWFkSGV4TnVtYmVyKGMsbSk7YWRkSGV4KGwsYyxtKX1pbmNIZXgoZixzKTtuLnJlYWRIZXhTaWduZWQoYyxzKTthZGRIZXgoZixjLHMpO3QubWFwT25lKGhleFRvSW50KGwsbSksaGV4VG9TdHIoZixzKSl9YnJlYWs7Y2FzZSA1Om4ucmVhZEhleChpLG0pO24ucmVhZEhleE51bWJlcihvLG0pO2FkZEhleChvLGksbSk7bi5yZWFkSGV4KGYscyk7dC5tYXBCZlJhbmdlKGhleFRvSW50KGksbSksaGV4VG9JbnQobyxtKSxoZXhUb1N0cihmLHMpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobyxtKTtpZihhKWkuc2V0KG8pO2Vsc2V7bi5yZWFkSGV4TnVtYmVyKGksbSk7YWRkSGV4KGksbyxtKX1uLnJlYWRIZXhOdW1iZXIobyxtKTthZGRIZXgobyxpLG0pO24ucmVhZEhleChmLHMpO3QubWFwQmZSYW5nZShoZXhUb0ludChpLG0pLGhleFRvSW50KG8sbSksaGV4VG9TdHIoZixzKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEJpbmFyeUNNYXBSZWFkZXIucHJvY2VzcyAtIHVua25vd24gdHlwZTogJHtlfWApfX1yZXR1cm4gcj9hKHIpOnR9fWNsYXNzIEFzY2lpODVTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17I1g9bmV3IFVpbnQ4QXJyYXkoNSk7Y29uc3RydWN0b3IoZSx0KXt0JiYodCo9LjgpO3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGg7bGV0IG4scztpZigxMjI9PT10KXtuPXRoaXMuZW5zdXJlQnVmZmVyKGErNCk7bi5maWxsKDAsYSxhKzQpO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcj10aGlzLiNYO3JbMF09dDtmb3Iocz0xO3M8NTsrK3Mpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7cltzXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31uPXRoaXMuZW5zdXJlQnVmZmVyKGErcy0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9cy0xO2lmKHM8NSl7ci5maWxsKDExNyxzLDUpO3RoaXMuZW9mPSEwfWxldCBpPTA7Zm9yKHM9MDtzPDU7KytzKWk9ODUqaSsocltzXS0zMyk7Zm9yKHM9MztzPj0wOy0tcyl7blthK3NdPTI1NSZpO2k+Pj04fX19fWNsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsYT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgbj10aGlzLmJ1ZmZlckxlbmd0aCxzPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYoczwwKXM9ZTtlbHNle2FbbisrXT1zPDw0fGU7cz0tMX19aWYocz49MCYmdGhpcy5lb2Ype2FbbisrXT1zPDw0O3M9LTF9dGhpcy5maXJzdERpZ2l0PXM7dGhpcy5idWZmZXJMZW5ndGg9bn19bGV0IFlhPSgoKT0+e2NvbnN0IGU9SW50MzJBcnJheS5mcm9tKFsyNTYsNDAyLDQzNiw0NjgsNTAwLDUzNCw1NjYsNTk4LDYzMCw2NjIsNjk0LDcyNiw3NTgsNzkwLDgyMiw4NTQsODg2LDkyMCw5NTIsOTg0LDEwMTYsMTA0OCwxMDgwXSksdD1JbnQzMkFycmF5LmZyb20oWzEsMiwzLDQsMCw1LDE3LDYsMTYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTVdKSxhPUludDMyQXJyYXkuZnJvbShbMCwzLDIsMSwwLDAsMCwwLDAsMCwzLDMsMywzLDMsM10pLG49SW50MzJBcnJheS5mcm9tKFswLDAsMCwwLC0xLDEsLTIsMiwtMywzLC0xLDEsLTIsMiwtMywzXSkscz1JbnQzMkFycmF5LmZyb20oWzEzMTA3MiwxMzEwNzYsMTMxMDc1LDE5NjYxMCwxMzEwNzIsMTMxMDc2LDEzMTA3NSwyNjIxNDUsMTMxMDcyLDEzMTA3NiwxMzEwNzUsMTk2NjEwLDEzMTA3MiwxMzEwNzYsMTMxMDc1LDI2MjE0OV0pLHI9SW50MzJBcnJheS5mcm9tKFsxLDUsOSwxMywxNywyNSwzMyw0MSw0OSw2NSw4MSw5NywxMTMsMTQ1LDE3NywyMDksMjQxLDMwNSwzNjksNDk3LDc1MywxMjY1LDIyODksNDMzNyw4NDMzLDE2NjI1XSksaT1JbnQzMkFycmF5LmZyb20oWzIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsNiw2LDcsOCw5LDEwLDExLDEyLDEzLDI0XSksbz1JbnQxNkFycmF5LmZyb20oWzAsMCwwLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw3LDgsOSwxMCwxMiwxNCwyNF0pLGw9SW50MTZBcnJheS5mcm9tKFswLDAsMCwwLDAsMCwwLDAsMSwxLDIsMiwzLDMsNCw0LDUsNSw2LDcsOCw5LDEwLDI0XSksZj1uZXcgSW50MTZBcnJheSgyODE2KTshZnVuY3Rpb24gdW5wYWNrQ29tbWFuZExvb2t1cFRhYmxlKGUpe2NvbnN0IHQ9bmV3IEludDMyQXJyYXkoMjQpLGE9bmV3IEludDMyQXJyYXkoMjQpO2FbMF09Mjtmb3IobGV0IGU9MDtlPDIzOysrZSl7dFtlKzFdPXRbZV0rKDE8PG9bZV0pO2FbZSsxXT1hW2VdKygxPDxsW2VdKX1mb3IobGV0IG49MDtuPDcwNDsrK24pe2xldCBzPW4+PjYscj0tNDtpZihzPj0yKXtzLT0yO3I9MH1jb25zdCBpPSgxNzAwNjQ+PjIqcyYzKTw8M3xuPj4zJjcsZj0oMTU2MjI4Pj4yKnMmMyk8PDN8NyZuLGM9YVtmXSxoPXIrTWF0aC5taW4oYyw1KS0yLHU9NCpuO2VbdV09b1tpXXxsW2ZdPDw4O2VbdSsxXT10W2ldO2VbdSsyXT1hW2ZdO2VbdSszXT1ofX0oZik7ZnVuY3Rpb24gbG9nMmZsb29yKGUpe2xldCB0PS0xLGE9MTYsbj1lO2Zvcig7YT4wOyl7bGV0IGU9bj4+YTtpZigwIT09ZSl7dCs9YTtuPWV9YT4+PTF9cmV0dXJuIHQrbn1mdW5jdGlvbiBjYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0U2l6ZShlLHQsYSl7cmV0dXJuIDE2K3QrMiooYTw8ZSl9ZnVuY3Rpb24gY2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldExpbWl0KGUsdCxhLG4pe2lmKHQ8bisoMjw8YSkpcmV0dXJuIG1ha2VFcnJvcihlLC0yMyk7Y29uc3Qgcz00Kyh0LW4+PmEpLHI9bG9nMmZsb29yKHMpLTE7cmV0dXJuKChyLTE8PDF8cz4+ciYxKS0xPDxhKSsoMTw8YSkrbisxNn1mdW5jdGlvbiBpbml0U3RhdGUoZSl7aWYoMCE9PWUucnVubmluZ1N0YXRlKXJldHVybiBtYWtlRXJyb3IoZSwtMjYpO2UuYmxvY2tUcmVlcz1uZXcgSW50MzJBcnJheSgzMDkxKTtlLmJsb2NrVHJlZXNbMF09NztlLmRpc3RSYklkeD0zO2xldCB0PWNhbGN1bGF0ZURpc3RhbmNlQWxwaGFiZXRMaW1pdChlLDIxNDc0ODM2NDQsMywxMjApO2lmKHQ8MClyZXR1cm4gdDtjb25zdCBhPXQ7ZS5kaXN0RXh0cmFCaXRzPW5ldyBJbnQ4QXJyYXkoYSk7ZS5kaXN0T2Zmc2V0PW5ldyBJbnQzMkFycmF5KGEpO3Q9ZnVuY3Rpb24gaW5pdEJpdFJlYWRlcihlKXtlLmJ5dGVCdWZmZXI9bmV3IEludDhBcnJheSg0MTYwKTtlLmFjY3VtdWxhdG9yMzI9MDtlLnNob3J0QnVmZmVyPW5ldyBJbnQxNkFycmF5KDIwODApO2UuYml0T2Zmc2V0PTMyO2UuaGFsZk9mZnNldD0yMDQ4O2UuZW5kT2ZTdHJlYW1SZWFjaGVkPTA7cmV0dXJuIHByZXBhcmUoZSl9KGUpO2lmKHQ8MClyZXR1cm4gdDtlLnJ1bm5pbmdTdGF0ZT0xO3JldHVybiAwfWZ1bmN0aW9uIGRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShlKXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWlmKDAhPT1yZWFkRmV3Qml0cyhlLDEpKXtjb25zdCB0PXJlYWRGZXdCaXRzKGUsMyk7cmV0dXJuIDA9PT10PzE6cmVhZEZld0JpdHMoZSx0KSsoMTw8dCl9cmV0dXJuIDB9ZnVuY3Rpb24gcmVhZFN5bWJvbChlLHQsYSl7bGV0IG49ZVt0XTtjb25zdCBzPWEuYWNjdW11bGF0b3IzMj4+PmEuYml0T2Zmc2V0O24rPTI1NSZzO2NvbnN0IHI9ZVtuXT4+MTYsaT02NTUzNSZlW25dO2lmKHI8PTgpe2EuYml0T2Zmc2V0Kz1yO3JldHVybiBpfW4rPWk7bis9KHMmKDE8PHIpLTEpPj4+ODthLmJpdE9mZnNldCs9OCsoZVtuXT4+MTYpO3JldHVybiA2NTUzNSZlW25dfWZ1bmN0aW9uIHJlYWRCbG9ja0xlbmd0aChlLHQsYSl7aWYoYS5iaXRPZmZzZXQ+PTE2KXthLmFjY3VtdWxhdG9yMzI9YS5zaG9ydEJ1ZmZlclthLmhhbGZPZmZzZXQrK108PDE2fGEuYWNjdW11bGF0b3IzMj4+PjE2O2EuYml0T2Zmc2V0LT0xNn1jb25zdCBuPXJlYWRTeW1ib2woZSx0LGEpLHM9aVtuXTtpZihhLmJpdE9mZnNldD49MTYpe2EuYWNjdW11bGF0b3IzMj1hLnNob3J0QnVmZmVyW2EuaGFsZk9mZnNldCsrXTw8MTZ8YS5hY2N1bXVsYXRvcjMyPj4+MTY7YS5iaXRPZmZzZXQtPTE2fXJldHVybiByW25dKyhzPD0xNj9yZWFkRmV3Qml0cyhhLHMpOnJlYWRNYW55Qml0cyhhLHMpKX1mdW5jdGlvbiBtb3ZlVG9Gcm9udChlLHQpe2xldCBhPXQ7Y29uc3Qgbj1lW2FdO2Zvcig7YT4wOyl7ZVthXT1lW2EtMV07YS0tfWVbMF09bn1mdW5jdGlvbiByZWFkU2ltcGxlSHVmZm1hbkNvZGUoZSx0LGEsbixzKXtjb25zdCByPW5ldyBJbnQzMkFycmF5KHQpLGk9bmV3IEludDMyQXJyYXkoNCksbz0xK2xvZzJmbG9vcihlLTEpLGw9cmVhZEZld0JpdHMocywyKSsxO2ZvcihsZXQgZT0wO2U8bDsrK2Upe2lmKHMuYml0T2Zmc2V0Pj0xNil7cy5hY2N1bXVsYXRvcjMyPXMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdPDwxNnxzLmFjY3VtdWxhdG9yMzI+Pj4xNjtzLmJpdE9mZnNldC09MTZ9Y29uc3QgYT1yZWFkRmV3Qml0cyhzLG8pO2lmKGE+PXQpcmV0dXJuIG1ha2VFcnJvcihzLC0xNSk7aVtlXT1hfWNvbnN0IGY9ZnVuY3Rpb24gY2hlY2tEdXBlcyhlLHQsYSl7Zm9yKGxldCBuPTA7bjxhLTE7KytuKWZvcihsZXQgcz1uKzE7czxhOysrcylpZih0W25dPT09dFtzXSlyZXR1cm4gbWFrZUVycm9yKGUsLTcpO3JldHVybiAwfShzLGksbCk7aWYoZjwwKXJldHVybiBmO2xldCBjPWw7ND09PWwmJihjKz1yZWFkRmV3Qml0cyhzLDEpKTtzd2l0Y2goYyl7Y2FzZSAxOnJbaVswXV09MTticmVhaztjYXNlIDI6cltpWzBdXT0xO3JbaVsxXV09MTticmVhaztjYXNlIDM6cltpWzBdXT0xO3JbaVsxXV09MjtyW2lbMl1dPTI7YnJlYWs7Y2FzZSA0OnJbaVswXV09MjtyW2lbMV1dPTI7cltpWzJdXT0yO3JbaVszXV09MjticmVhaztjYXNlIDU6cltpWzBdXT0xO3JbaVsxXV09MjtyW2lbMl1dPTM7cltpWzNdXT0zfXJldHVybiBidWlsZEh1ZmZtYW5UYWJsZShhLG4sOCxyLHQpfWZ1bmN0aW9uIHJlYWRDb21wbGV4SHVmZm1hbkNvZGUoZSxhLG4scixpKXtjb25zdCBvPW5ldyBJbnQzMkFycmF5KGUpLGw9bmV3IEludDMyQXJyYXkoMTgpO2xldCBmPTMyLGM9MDtmb3IobGV0IGU9YTtlPDE4OysrZSl7Y29uc3QgYT10W2VdO2lmKGkuYml0T2Zmc2V0Pj0xNil7aS5hY2N1bXVsYXRvcjMyPWkuc2hvcnRCdWZmZXJbaS5oYWxmT2Zmc2V0KytdPDwxNnxpLmFjY3VtdWxhdG9yMzI+Pj4xNjtpLmJpdE9mZnNldC09MTZ9Y29uc3Qgbj1pLmFjY3VtdWxhdG9yMzI+Pj5pLmJpdE9mZnNldCYxNTtpLmJpdE9mZnNldCs9c1tuXT4+MTY7Y29uc3Qgcj02NTUzNSZzW25dO2xbYV09cjtpZigwIT09cil7Zi09MzI+PnI7YysrO2lmKGY8PTApYnJlYWt9fWlmKDAhPT1mJiYxIT09YylyZXR1cm4gbWFrZUVycm9yKGksLTQpO2NvbnN0IGg9ZnVuY3Rpb24gcmVhZEh1ZmZtYW5Db2RlTGVuZ3RocyhlLHQsYSxuKXtsZXQgcz0wLHI9OCxpPTAsbz0wLGw9MzI3Njg7Y29uc3QgZj1uZXcgSW50MzJBcnJheSgzMyk7YnVpbGRIdWZmbWFuVGFibGUoZixmLmxlbmd0aC0xLDUsZSwxOCk7Zm9yKDtzPHQmJmw+MDspe2lmKG4uaGFsZk9mZnNldD4yMDMwKXtjb25zdCBlPXJlYWRNb3JlSW5wdXQobik7aWYoZTwwKXJldHVybiBlfWlmKG4uYml0T2Zmc2V0Pj0xNil7bi5hY2N1bXVsYXRvcjMyPW4uc2hvcnRCdWZmZXJbbi5oYWxmT2Zmc2V0KytdPDwxNnxuLmFjY3VtdWxhdG9yMzI+Pj4xNjtuLmJpdE9mZnNldC09MTZ9Y29uc3QgZT1uLmFjY3VtdWxhdG9yMzI+Pj5uLmJpdE9mZnNldCYzMTtuLmJpdE9mZnNldCs9ZltlXT4+MTY7Y29uc3QgYz02NTUzNSZmW2VdO2lmKGM8MTYpe2k9MDthW3MrK109YztpZigwIT09Yyl7cj1jO2wtPTMyNzY4Pj5jfX1lbHNle2NvbnN0IGU9Yy0xNDtsZXQgZj0wOzE2PT09YyYmKGY9cik7aWYobyE9PWYpe2k9MDtvPWZ9Y29uc3QgaD1pO2lmKGk+MCl7aS09MjtpPDw9ZX1pZihuLmJpdE9mZnNldD49MTYpe24uYWNjdW11bGF0b3IzMj1uLnNob3J0QnVmZmVyW24uaGFsZk9mZnNldCsrXTw8MTZ8bi5hY2N1bXVsYXRvcjMyPj4+MTY7bi5iaXRPZmZzZXQtPTE2fWkrPXJlYWRGZXdCaXRzKG4sZSkrMztjb25zdCB1PWktaDtpZihzK3U+dClyZXR1cm4gbWFrZUVycm9yKG4sLTIpO2ZvcihsZXQgZT0wO2U8dTsrK2UpYVtzKytdPW87MCE9PW8mJihsLT11PDwxNS1vKX19aWYoMCE9PWwpcmV0dXJuIG1ha2VFcnJvcihuLC0xOCk7YS5maWxsKDAscyx0KTtyZXR1cm4gMH0obCxlLG8saSk7cmV0dXJuIGg8MD9oOmJ1aWxkSHVmZm1hblRhYmxlKG4sciw4LG8sZSl9ZnVuY3Rpb24gcmVhZEh1ZmZtYW5Db2RlKGUsdCxhLG4scyl7aWYocy5oYWxmT2Zmc2V0PjIwMzApe2NvbnN0IGU9cmVhZE1vcmVJbnB1dChzKTtpZihlPDApcmV0dXJuIGV9aWYocy5iaXRPZmZzZXQ+PTE2KXtzLmFjY3VtdWxhdG9yMzI9cy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK108PDE2fHMuYWNjdW11bGF0b3IzMj4+PjE2O3MuYml0T2Zmc2V0LT0xNn1jb25zdCByPXJlYWRGZXdCaXRzKHMsMik7cmV0dXJuIDE9PT1yP3JlYWRTaW1wbGVIdWZmbWFuQ29kZShlLHQsYSxuLHMpOnJlYWRDb21wbGV4SHVmZm1hbkNvZGUodCxyLGEsbixzKX1mdW5jdGlvbiBkZWNvZGVDb250ZXh0TWFwKHQsYSxuKXtsZXQgcztpZihuLmhhbGZPZmZzZXQ+MjAzMCl7cz1yZWFkTW9yZUlucHV0KG4pO2lmKHM8MClyZXR1cm4gc31jb25zdCByPWRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShuKSsxO2lmKDE9PT1yKXthLmZpbGwoMCwwLHQpO3JldHVybiByfWlmKG4uYml0T2Zmc2V0Pj0xNil7bi5hY2N1bXVsYXRvcjMyPW4uc2hvcnRCdWZmZXJbbi5oYWxmT2Zmc2V0KytdPDwxNnxuLmFjY3VtdWxhdG9yMzI+Pj4xNjtuLmJpdE9mZnNldC09MTZ9bGV0IGk9MDswIT09cmVhZEZld0JpdHMobiwxKSYmKGk9cmVhZEZld0JpdHMobiw0KSsxKTtjb25zdCBvPXIraSxsPWVbbyszMT4+NV0sZj1uZXcgSW50MzJBcnJheShsKzEpLGM9Zi5sZW5ndGgtMTtzPXJlYWRIdWZmbWFuQ29kZShvLG8sZixjLG4pO2lmKHM8MClyZXR1cm4gcztsZXQgaD0wO2Zvcig7aDx0Oyl7aWYobi5oYWxmT2Zmc2V0PjIwMzApe3M9cmVhZE1vcmVJbnB1dChuKTtpZihzPDApcmV0dXJuIHN9aWYobi5iaXRPZmZzZXQ+PTE2KXtuLmFjY3VtdWxhdG9yMzI9bi5zaG9ydEJ1ZmZlcltuLmhhbGZPZmZzZXQrK108PDE2fG4uYWNjdW11bGF0b3IzMj4+PjE2O24uYml0T2Zmc2V0LT0xNn1jb25zdCBlPXJlYWRTeW1ib2woZixjLG4pO2lmKDA9PT1lKXthW2hdPTA7aCsrfWVsc2UgaWYoZTw9aSl7aWYobi5iaXRPZmZzZXQ+PTE2KXtuLmFjY3VtdWxhdG9yMzI9bi5zaG9ydEJ1ZmZlcltuLmhhbGZPZmZzZXQrK108PDE2fG4uYWNjdW11bGF0b3IzMj4+PjE2O24uYml0T2Zmc2V0LT0xNn1sZXQgcz0oMTw8ZSkrcmVhZEZld0JpdHMobixlKTtmb3IoOzAhPT1zOyl7aWYoaD49dClyZXR1cm4gbWFrZUVycm9yKG4sLTMpO2FbaF09MDtoKys7cy0tfX1lbHNle2FbaF09ZS1pO2grK319aWYobi5iaXRPZmZzZXQ+PTE2KXtuLmFjY3VtdWxhdG9yMzI9bi5zaG9ydEJ1ZmZlcltuLmhhbGZPZmZzZXQrK108PDE2fG4uYWNjdW11bGF0b3IzMj4+PjE2O24uYml0T2Zmc2V0LT0xNn0xPT09cmVhZEZld0JpdHMobiwxKSYmZnVuY3Rpb24gaW52ZXJzZU1vdmVUb0Zyb250VHJhbnNmb3JtKGUsdCl7Y29uc3QgYT1uZXcgSW50MzJBcnJheSgyNTYpO2ZvcihsZXQgZT0wO2U8MjU2OysrZSlhW2VdPWU7Zm9yKGxldCBuPTA7bjx0Oysrbil7Y29uc3QgdD0yNTUmZVtuXTtlW25dPWFbdF07MCE9PXQmJm1vdmVUb0Zyb250KGEsdCl9fShhLHQpO3JldHVybiByfWZ1bmN0aW9uIGRlY29kZUJsb2NrVHlwZUFuZExlbmd0aChlLHQsYSl7Y29uc3Qgbj1lLnJpbmdzLHM9NCsyKnQ7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1sZXQgcj1yZWFkU3ltYm9sKGUuYmxvY2tUcmVlcywyKnQsZSk7Y29uc3QgaT1yZWFkQmxvY2tMZW5ndGgoZS5ibG9ja1RyZWVzLDIqdCsxLGUpOzE9PT1yP3I9bltzKzFdKzE6MD09PXI/cj1uW3NdOnItPTI7cj49YSYmKHItPWEpO25bc109bltzKzFdO25bcysxXT1yO3JldHVybiBpfWZ1bmN0aW9uIGRlY29kZUxpdGVyYWxCbG9ja1N3aXRjaChlKXtlLmxpdGVyYWxCbG9ja0xlbmd0aD1kZWNvZGVCbG9ja1R5cGVBbmRMZW5ndGgoZSwwLGUubnVtTGl0ZXJhbEJsb2NrVHlwZXMpO2NvbnN0IHQ9ZS5yaW5nc1s1XTtlLmNvbnRleHRNYXBTbGljZT10PDw2O2UubGl0ZXJhbFRyZWVJZHg9MjU1JmUuY29udGV4dE1hcFtlLmNvbnRleHRNYXBTbGljZV07Y29uc3QgYT1lLmNvbnRleHRNb2Rlc1t0XTtlLmNvbnRleHRMb29rdXBPZmZzZXQxPWE8PDk7ZS5jb250ZXh0TG9va3VwT2Zmc2V0Mj1lLmNvbnRleHRMb29rdXBPZmZzZXQxKzI1Nn1mdW5jdGlvbiBkZWNvZGVDb21tYW5kQmxvY2tTd2l0Y2goZSl7ZS5jb21tYW5kQmxvY2tMZW5ndGg9ZGVjb2RlQmxvY2tUeXBlQW5kTGVuZ3RoKGUsMSxlLm51bUNvbW1hbmRCbG9ja1R5cGVzKTtlLmNvbW1hbmRUcmVlSWR4PWUucmluZ3NbN119ZnVuY3Rpb24gZGVjb2RlRGlzdGFuY2VCbG9ja1N3aXRjaChlKXtlLmRpc3RhbmNlQmxvY2tMZW5ndGg9ZGVjb2RlQmxvY2tUeXBlQW5kTGVuZ3RoKGUsMixlLm51bURpc3RhbmNlQmxvY2tUeXBlcyk7ZS5kaXN0Q29udGV4dE1hcFNsaWNlPWUucmluZ3NbOV08PDJ9ZnVuY3Rpb24gcmVhZE5leHRNZXRhYmxvY2tIZWFkZXIoZSl7aWYoMCE9PWUuaW5wdXRFbmQpe2UubmV4dFJ1bm5pbmdTdGF0ZT0xMDtlLnJ1bm5pbmdTdGF0ZT0xMjtyZXR1cm4gMH1lLmxpdGVyYWxUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoMCk7ZS5jb21tYW5kVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KDApO2UuZGlzdGFuY2VUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoMCk7bGV0IHQ7aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9dD1mdW5jdGlvbiBkZWNvZGVNZXRhQmxvY2tMZW5ndGgoZSl7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1lLmlucHV0RW5kPXJlYWRGZXdCaXRzKGUsMSk7ZS5tZXRhQmxvY2tMZW5ndGg9MDtlLmlzVW5jb21wcmVzc2VkPTA7ZS5pc01ldGFkYXRhPTA7aWYoMCE9PWUuaW5wdXRFbmQmJjAhPT1yZWFkRmV3Qml0cyhlLDEpKXJldHVybiAwO2NvbnN0IHQ9cmVhZEZld0JpdHMoZSwyKSs0O2lmKDc9PT10KXtlLmlzTWV0YWRhdGE9MTtpZigwIT09cmVhZEZld0JpdHMoZSwxKSlyZXR1cm4gbWFrZUVycm9yKGUsLTYpO2NvbnN0IHQ9cmVhZEZld0JpdHMoZSwyKTtpZigwPT09dClyZXR1cm4gMDtmb3IobGV0IGE9MDthPHQ7KythKXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWNvbnN0IG49cmVhZEZld0JpdHMoZSw4KTtpZigwPT09biYmYSsxPT09dCYmdD4xKXJldHVybiBtYWtlRXJyb3IoZSwtOCk7ZS5tZXRhQmxvY2tMZW5ndGgrPW48PDgqYX19ZWxzZSBmb3IobGV0IGE9MDthPHQ7KythKXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWNvbnN0IG49cmVhZEZld0JpdHMoZSw0KTtpZigwPT09biYmYSsxPT09dCYmdD40KXJldHVybiBtYWtlRXJyb3IoZSwtOCk7ZS5tZXRhQmxvY2tMZW5ndGgrPW48PDQqYX1lLm1ldGFCbG9ja0xlbmd0aCsrOzA9PT1lLmlucHV0RW5kJiYoZS5pc1VuY29tcHJlc3NlZD1yZWFkRmV3Qml0cyhlLDEpKTtyZXR1cm4gMH0oZSk7aWYodDwwKXJldHVybiB0O2lmKDA9PT1lLm1ldGFCbG9ja0xlbmd0aCYmMD09PWUuaXNNZXRhZGF0YSlyZXR1cm4gMDtpZigwIT09ZS5pc1VuY29tcHJlc3NlZHx8MCE9PWUuaXNNZXRhZGF0YSl7dD1qdW1wVG9CeXRlQm91bmRhcnkoZSk7aWYodDwwKXJldHVybiB0OzA9PT1lLmlzTWV0YWRhdGE/ZS5ydW5uaW5nU3RhdGU9NjplLnJ1bm5pbmdTdGF0ZT01fWVsc2UgZS5ydW5uaW5nU3RhdGU9MztpZigwIT09ZS5pc01ldGFkYXRhKXJldHVybiAwO2UuZXhwZWN0ZWRUb3RhbFNpemUrPWUubWV0YUJsb2NrTGVuZ3RoO2UuZXhwZWN0ZWRUb3RhbFNpemU+MTw8MzAmJihlLmV4cGVjdGVkVG90YWxTaXplPTE8PDMwKTtlLnJpbmdCdWZmZXJTaXplPGUubWF4UmluZ0J1ZmZlclNpemUmJmZ1bmN0aW9uIG1heWJlUmVhbGxvY2F0ZVJpbmdCdWZmZXIoZSl7bGV0IHQ9ZS5tYXhSaW5nQnVmZmVyU2l6ZTtpZih0PmUuZXhwZWN0ZWRUb3RhbFNpemUpe2NvbnN0IGE9ZS5leHBlY3RlZFRvdGFsU2l6ZTtmb3IoO3Q+PjE+YTspdD4+PTE7MD09PWUuaW5wdXRFbmQmJnQ8MTYzODQmJmUubWF4UmluZ0J1ZmZlclNpemU+PTE2Mzg0JiYodD0xNjM4NCl9aWYodDw9ZS5yaW5nQnVmZmVyU2l6ZSlyZXR1cm47Y29uc3QgYT1uZXcgSW50OEFycmF5KHQrMzcpLG49ZS5yaW5nQnVmZmVyOzAhPT1uLmxlbmd0aCYmYS5zZXQobi5zdWJhcnJheSgwLGUucmluZ0J1ZmZlclNpemUpLDApO2UucmluZ0J1ZmZlcj1hO2UucmluZ0J1ZmZlclNpemU9dH0oZSk7cmV0dXJuIDB9ZnVuY3Rpb24gcmVhZE1ldGFibG9ja1BhcnRpdGlvbihlLHQsYSl7bGV0IG49ZS5ibG9ja1RyZWVzWzIqdF07aWYoYTw9MSl7ZS5ibG9ja1RyZWVzWzIqdCsxXT1uO2UuYmxvY2tUcmVlc1syKnQrMl09bjtyZXR1cm4gMTw8Mjh9Y29uc3Qgcz1hKzI7bGV0IHI9cmVhZEh1ZmZtYW5Db2RlKHMscyxlLmJsb2NrVHJlZXMsMip0LGUpO2lmKHI8MClyZXR1cm4gcjtuKz1yO2UuYmxvY2tUcmVlc1syKnQrMV09bjtyPXJlYWRIdWZmbWFuQ29kZSgyNiwyNixlLmJsb2NrVHJlZXMsMip0KzEsZSk7aWYocjwwKXJldHVybiByO24rPXI7ZS5ibG9ja1RyZWVzWzIqdCsyXT1uO3JldHVybiByZWFkQmxvY2tMZW5ndGgoZS5ibG9ja1RyZWVzLDIqdCsxLGUpfWZ1bmN0aW9uIHJlYWRNZXRhYmxvY2tIdWZmbWFuQ29kZXNBbmRDb250ZXh0TWFwcyhlKXtlLm51bUxpdGVyYWxCbG9ja1R5cGVzPWRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShlKSsxO2xldCB0PXJlYWRNZXRhYmxvY2tQYXJ0aXRpb24oZSwwLGUubnVtTGl0ZXJhbEJsb2NrVHlwZXMpO2lmKHQ8MClyZXR1cm4gdDtlLmxpdGVyYWxCbG9ja0xlbmd0aD10O2UubnVtQ29tbWFuZEJsb2NrVHlwZXM9ZGVjb2RlVmFyTGVuVW5zaWduZWRCeXRlKGUpKzE7dD1yZWFkTWV0YWJsb2NrUGFydGl0aW9uKGUsMSxlLm51bUNvbW1hbmRCbG9ja1R5cGVzKTtpZih0PDApcmV0dXJuIHQ7ZS5jb21tYW5kQmxvY2tMZW5ndGg9dDtlLm51bURpc3RhbmNlQmxvY2tUeXBlcz1kZWNvZGVWYXJMZW5VbnNpZ25lZEJ5dGUoZSkrMTt0PXJlYWRNZXRhYmxvY2tQYXJ0aXRpb24oZSwyLGUubnVtRGlzdGFuY2VCbG9ja1R5cGVzKTtpZih0PDApcmV0dXJuIHQ7ZS5kaXN0YW5jZUJsb2NrTGVuZ3RoPXQ7aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1lLmRpc3RhbmNlUG9zdGZpeEJpdHM9cmVhZEZld0JpdHMoZSwyKTtlLm51bURpcmVjdERpc3RhbmNlQ29kZXM9cmVhZEZld0JpdHMoZSw0KTw8ZS5kaXN0YW5jZVBvc3RmaXhCaXRzO2UuY29udGV4dE1vZGVzPW5ldyBJbnQ4QXJyYXkoZS5udW1MaXRlcmFsQmxvY2tUeXBlcyk7bGV0IGE9MDtmb3IoO2E8ZS5udW1MaXRlcmFsQmxvY2tUeXBlczspe2NvbnN0IG49TWF0aC5taW4oYSs5NixlLm51bUxpdGVyYWxCbG9ja1R5cGVzKTtmb3IoO2E8bjspe2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9ZS5jb250ZXh0TW9kZXNbYV09cmVhZEZld0JpdHMoZSwyKTthKyt9aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9fWNvbnN0IG49ZS5udW1MaXRlcmFsQmxvY2tUeXBlczw8NjtlLmNvbnRleHRNYXA9bmV3IEludDhBcnJheShuKTt0PWRlY29kZUNvbnRleHRNYXAobixlLmNvbnRleHRNYXAsZSk7aWYodDwwKXJldHVybiB0O2NvbnN0IHM9dDtlLnRyaXZpYWxMaXRlcmFsQ29udGV4dD0xO2ZvcihsZXQgdD0wO3Q8bjsrK3QpaWYoZS5jb250ZXh0TWFwW3RdIT09dD4+Nil7ZS50cml2aWFsTGl0ZXJhbENvbnRleHQ9MDticmVha31lLmRpc3RDb250ZXh0TWFwPW5ldyBJbnQ4QXJyYXkoZS5udW1EaXN0YW5jZUJsb2NrVHlwZXM8PDIpO3Q9ZGVjb2RlQ29udGV4dE1hcChlLm51bURpc3RhbmNlQmxvY2tUeXBlczw8MixlLmRpc3RDb250ZXh0TWFwLGUpO2lmKHQ8MClyZXR1cm4gdDtjb25zdCByPXQ7ZS5saXRlcmFsVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KGh1ZmZtYW5UcmVlR3JvdXBBbGxvY1NpemUoMjU2LHMpKTt0PWRlY29kZUh1ZmZtYW5UcmVlR3JvdXAoMjU2LDI1NixzLGUsZS5saXRlcmFsVHJlZUdyb3VwKTtpZih0PDApcmV0dXJuIHQ7ZS5jb21tYW5kVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KGh1ZmZtYW5UcmVlR3JvdXBBbGxvY1NpemUoNzA0LGUubnVtQ29tbWFuZEJsb2NrVHlwZXMpKTt0PWRlY29kZUh1ZmZtYW5UcmVlR3JvdXAoNzA0LDcwNCxlLm51bUNvbW1hbmRCbG9ja1R5cGVzLGUsZS5jb21tYW5kVHJlZUdyb3VwKTtpZih0PDApcmV0dXJuIHQ7bGV0IGk9Y2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldFNpemUoZS5kaXN0YW5jZVBvc3RmaXhCaXRzLGUubnVtRGlyZWN0RGlzdGFuY2VDb2RlcywyNCksbz1pO2lmKDE9PT1lLmlzTGFyZ2VXaW5kb3cpe2k9Y2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldFNpemUoZS5kaXN0YW5jZVBvc3RmaXhCaXRzLGUubnVtRGlyZWN0RGlzdGFuY2VDb2Rlcyw2Mik7dD1jYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0TGltaXQoZSwyMTQ3NDgzNjQ0LGUuZGlzdGFuY2VQb3N0Zml4Qml0cyxlLm51bURpcmVjdERpc3RhbmNlQ29kZXMpO2lmKHQ8MClyZXR1cm4gdDtvPXR9ZS5kaXN0YW5jZVRyZWVHcm91cD1uZXcgSW50MzJBcnJheShodWZmbWFuVHJlZUdyb3VwQWxsb2NTaXplKG8scikpO3Q9ZGVjb2RlSHVmZm1hblRyZWVHcm91cChpLG8scixlLGUuZGlzdGFuY2VUcmVlR3JvdXApO2lmKHQ8MClyZXR1cm4gdDshZnVuY3Rpb24gY2FsY3VsYXRlRGlzdGFuY2VMdXQoZSx0KXtjb25zdCBhPWUuZGlzdEV4dHJhQml0cyxuPWUuZGlzdE9mZnNldCxzPWUuZGlzdGFuY2VQb3N0Zml4Qml0cyxyPWUubnVtRGlyZWN0RGlzdGFuY2VDb2RlcyxpPTE8PHM7bGV0IG89MSxsPTAsZj0xNjtmb3IobGV0IGU9MDtlPHI7KytlKXthW2ZdPTA7bltmXT1lKzE7KytmfWZvcig7Zjx0Oyl7Y29uc3QgZT1yKygoMitsPDxvKS00PDxzKSsxO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2FbZl09bztuW2ZdPWUrdDsrK2Z9bys9bDtsXj0xfX0oZSxvKTtlLmNvbnRleHRNYXBTbGljZT0wO2UuZGlzdENvbnRleHRNYXBTbGljZT0wO2UuY29udGV4dExvb2t1cE9mZnNldDE9NTEyKmUuY29udGV4dE1vZGVzWzBdO2UuY29udGV4dExvb2t1cE9mZnNldDI9ZS5jb250ZXh0TG9va3VwT2Zmc2V0MSsyNTY7ZS5saXRlcmFsVHJlZUlkeD0wO2UuY29tbWFuZFRyZWVJZHg9MDtlLnJpbmdzWzRdPTE7ZS5yaW5nc1s1XT0wO2UucmluZ3NbNl09MTtlLnJpbmdzWzddPTA7ZS5yaW5nc1s4XT0xO2UucmluZ3NbOV09MDtyZXR1cm4gMH1mdW5jdGlvbiBjb3B5VW5jb21wcmVzc2VkRGF0YShlKXtjb25zdCB0PWUucmluZ0J1ZmZlcjtsZXQgYTtpZihlLm1ldGFCbG9ja0xlbmd0aDw9MCl7YT1yZWxvYWQoZSk7aWYoYTwwKXJldHVybiBhO2UucnVubmluZ1N0YXRlPTI7cmV0dXJuIDB9Y29uc3Qgbj1NYXRoLm1pbihlLnJpbmdCdWZmZXJTaXplLWUucG9zLGUubWV0YUJsb2NrTGVuZ3RoKTthPWZ1bmN0aW9uIGNvcHlSYXdCeXRlcyhlLHQsYSxuKXtsZXQgcz1hLHI9bjtpZig3JmUuYml0T2Zmc2V0KXJldHVybiBtYWtlRXJyb3IoZSwtMzApO2Zvcig7MzIhPT1lLmJpdE9mZnNldCYmMCE9PXI7KXt0W3MrK109ZS5hY2N1bXVsYXRvcjMyPj4+ZS5iaXRPZmZzZXQ7ZS5iaXRPZmZzZXQrPTg7ci0tfWlmKDA9PT1yKXJldHVybiAwO2NvbnN0IGk9TWF0aC5taW4oaGFsZkF2YWlsYWJsZShlKSxyPj4xKTtpZihpPjApe2NvbnN0IGE9ZS5oYWxmT2Zmc2V0PDwxLG49aTw8MTt0LnNldChlLmJ5dGVCdWZmZXIuc3ViYXJyYXkoYSxhK24pLHMpO3MrPW47ci09bjtlLmhhbGZPZmZzZXQrPWl9aWYoMD09PXIpcmV0dXJuIDA7aWYoaGFsZkF2YWlsYWJsZShlKT4wKXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWZvcig7MCE9PXI7KXt0W3MrK109ZS5hY2N1bXVsYXRvcjMyPj4+ZS5iaXRPZmZzZXQ7ZS5iaXRPZmZzZXQrPTg7ci0tfXJldHVybiBjaGVja0hlYWx0aChlLDApfWZvcig7cj4wOyl7Y29uc3QgYT1yZWFkSW5wdXQoZSx0LHMscik7aWYoYTwtMSlyZXR1cm4gYTtpZihhPD0wKXJldHVybiBtYWtlRXJyb3IoZSwtMTYpO3MrPWE7ci09YX1yZXR1cm4gMH0oZSx0LGUucG9zLG4pO2lmKGE8MClyZXR1cm4gYTtlLm1ldGFCbG9ja0xlbmd0aC09bjtlLnBvcys9bjtpZihlLnBvcz09PWUucmluZ0J1ZmZlclNpemUpe2UubmV4dFJ1bm5pbmdTdGF0ZT02O2UucnVubmluZ1N0YXRlPTEyO3JldHVybiAwfWE9cmVsb2FkKGUpO2lmKGE8MClyZXR1cm4gYTtlLnJ1bm5pbmdTdGF0ZT0yO3JldHVybiAwfWZ1bmN0aW9uIHdyaXRlUmluZ0J1ZmZlcihlKXtjb25zdCB0PU1hdGgubWluKGUub3V0cHV0TGVuZ3RoLWUub3V0cHV0VXNlZCxlLnJpbmdCdWZmZXJCeXRlc1JlYWR5LWUucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbik7aWYoMCE9PXQpe2Uub3V0cHV0LnNldChlLnJpbmdCdWZmZXIuc3ViYXJyYXkoZS5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuLGUucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbit0KSxlLm91dHB1dE9mZnNldCtlLm91dHB1dFVzZWQpO2Uub3V0cHV0VXNlZCs9dDtlLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4rPXR9cmV0dXJuIGUub3V0cHV0VXNlZDxlLm91dHB1dExlbmd0aD8wOjJ9ZnVuY3Rpb24gaHVmZm1hblRyZWVHcm91cEFsbG9jU2l6ZSh0LGEpe3JldHVybiBhK2EqZVt0KzMxPj41XX1mdW5jdGlvbiBkZWNvZGVIdWZmbWFuVHJlZUdyb3VwKGUsdCxhLG4scyl7bGV0IHI9YTtmb3IobGV0IGk9MDtpPGE7KytpKXtzW2ldPXI7Y29uc3QgYT1yZWFkSHVmZm1hbkNvZGUoZSx0LHMsaSxuKTtpZihhPDApcmV0dXJuIGE7cis9YX1yZXR1cm4gMH1mdW5jdGlvbiBjYWxjdWxhdGVGZW5jZShlKXtsZXQgdD1lLnJpbmdCdWZmZXJTaXplOzAhPT1lLmlzRWFnZXImJih0PU1hdGgubWluKHQsZS5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuK2Uub3V0cHV0TGVuZ3RoLWUub3V0cHV0VXNlZCkpO3JldHVybiB0fWZ1bmN0aW9uIGRvVXNlRGljdGlvbmFyeShlLHQpe2lmKGUuZGlzdGFuY2U+MjE0NzQ4MzY0NClyZXR1cm4gbWFrZUVycm9yKGUsLTkpO2NvbnN0IGE9ZS5kaXN0YW5jZS1lLm1heERpc3RhbmNlLTEtZS5jZFRvdGFsU2l6ZTtpZihhPDApe2NvbnN0IHQ9ZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbXBvdW5kRGljdGlvbmFyeUNvcHkoZSx0LGEpey0xPT09ZS5jZEJsb2NrQml0cyYmZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbXBvdW5kRGljdGlvbmFyeShlKXtlLmNkQmxvY2tNYXA9bmV3IEludDhBcnJheSgyNTYpO2xldCB0PTg7Zm9yKDtlLmNkVG90YWxTaXplLTE+PnQ7KXQrKzt0LT04O2UuY2RCbG9ja0JpdHM9dDtsZXQgYT0wLG49MDtmb3IoO2E8ZS5jZFRvdGFsU2l6ZTspe2Zvcig7ZS5jZENodW5rT2Zmc2V0c1tuKzFdPGE7KW4rKztlLmNkQmxvY2tNYXBbYT4+dF09bjthKz0xPDx0fX0oZSk7bGV0IG49ZS5jZEJsb2NrTWFwW3Q+PmUuY2RCbG9ja0JpdHNdO2Zvcig7dD49ZS5jZENodW5rT2Zmc2V0c1tuKzFdOyluKys7aWYoZS5jZFRvdGFsU2l6ZT50K2EpcmV0dXJuIG1ha2VFcnJvcihlLC05KTtlLmRpc3RSYklkeD1lLmRpc3RSYklkeCsxJjM7ZS5yaW5nc1tlLmRpc3RSYklkeF09ZS5kaXN0YW5jZTtlLm1ldGFCbG9ja0xlbmd0aC09YTtlLmNkQnJJbmRleD1uO2UuY2RCck9mZnNldD10LWUuY2RDaHVua09mZnNldHNbbl07ZS5jZEJyTGVuZ3RoPWE7ZS5jZEJyQ29waWVkPTA7cmV0dXJuIDB9KGUsLWEtMSxlLmNvcHlMZW5ndGgpO2lmKHQ8MClyZXR1cm4gdDtlLnJ1bm5pbmdTdGF0ZT0xNH1lbHNle2NvbnN0IG49dSxzPWUuY29weUxlbmd0aDtpZihzPjMxKXJldHVybiBtYWtlRXJyb3IoZSwtOSk7Y29uc3Qgcj1wW3NdO2lmKDA9PT1yKXJldHVybiBtYWtlRXJyb3IoZSwtOSk7bGV0IGk9bVtzXTtjb25zdCBvPWE+PnI7aSs9KGEmKDE8PHIpLTEpKnM7Y29uc3QgbD1jO2lmKG8+PWwubnVtVHJhbnNmb3JtcylyZXR1cm4gbWFrZUVycm9yKGUsLTkpO2NvbnN0IGY9ZnVuY3Rpb24gdHJhbnNmb3JtRGljdGlvbmFyeVdvcmQoZSx0LGEsbixzLHIsaSl7bGV0IG89dDtjb25zdCBsPXIudHJpcGxldHMsZj1yLnByZWZpeFN1ZmZpeFN0b3JhZ2UsYz1yLnByZWZpeFN1ZmZpeEhlYWRzLGg9MyppLHU9bFtoXSxtPWxbaCsxXSxwPWxbaCsyXTtsZXQgZD1jW3VdO2NvbnN0IGc9Y1t1KzFdO2xldCBiPWNbcF07Y29uc3Qgdz1jW3ArMV07bGV0IGo9bS0xMSxrPW07KGo8MXx8aj45KSYmKGo9MCk7KGs8MXx8az45KSYmKGs9MCk7Zm9yKDtkIT09ZzspZVtvKytdPWZbZCsrXTtsZXQgeT1zO2o+eSYmKGo9eSk7bGV0IHE9bitqO3ktPWo7eS09aztsZXQgdj15O2Zvcig7dj4wOyl7ZVtvKytdPWFbcSsrXTt2LS19aWYoMTA9PT1tfHwxMT09PW0pe2xldCB0PW8teTsxMD09PW0mJih5PTEpO2Zvcig7eT4wOyl7Y29uc3QgYT0yNTUmZVt0XTtpZihhPDE5Mil7YT49OTcmJmE8PTEyMiYmKGVbdF09MzJeZVt0XSk7dCs9MTt5LT0xfWVsc2UgaWYoYTwyMjQpe2VbdCsxXT0zMl5lW3QrMV07dCs9Mjt5LT0yfWVsc2V7ZVt0KzJdPTVeZVt0KzJdO3QrPTM7eS09M319fWVsc2UgaWYoMjE9PT1tfHwyMj09PW0pe2xldCB0PW8teTtjb25zdCBhPXIucGFyYW1zW2ldO2xldCBuPTE2Nzc3MjE2LSgzMjc2OCZhKSsoMzI3NjcmYSk7Zm9yKDt5PjA7KXtsZXQgYT0xO2NvbnN0IHM9MjU1JmVbdF07aWYoczwxMjgpe24rPXM7ZVt0XT0xMjcmbn1lbHNlIGlmKHM8MTkyKTtlbHNlIGlmKHM8MjI0KWlmKHk+PTIpe2NvbnN0IHI9ZVt0KzFdO24rPTYzJnJ8KDMxJnMpPDw2O2VbdF09MTkyfG4+PjYmMzE7ZVt0KzFdPTE5MiZyfDYzJm47YT0yfWVsc2UgYT15O2Vsc2UgaWYoczwyNDApaWYoeT49Myl7Y29uc3Qgcj1lW3QrMV0saT1lW3QrMl07bis9NjMmaXwoNjMmcik8PDZ8KDE1JnMpPDwxMjtlW3RdPTIyNHxuPj4xMiYxNTtlW3QrMV09MTkyJnJ8bj4+NiY2MztlW3QrMl09MTkyJml8NjMmbjthPTN9ZWxzZSBhPXk7ZWxzZSBpZihzPDI0OClpZih5Pj00KXtjb25zdCByPWVbdCsxXSxpPWVbdCsyXSxvPWVbdCszXTtuKz02MyZvfCg2MyZpKTw8NnwoNjMmcik8PDEyfCg3JnMpPDwxODtlW3RdPTI0MHxuPj4xOCY3O2VbdCsxXT0xOTImcnxuPj4xMiY2MztlW3QrMl09MTkyJml8bj4+NiY2MztlW3QrM109MTkyJm98NjMmbjthPTR9ZWxzZSBhPXk7dCs9YTt5LT1hOzIxPT09bSYmKHk9MCl9fWZvcig7YiE9PXc7KWVbbysrXT1mW2IrK107cmV0dXJuIG8tdH0oZS5yaW5nQnVmZmVyLGUucG9zLG4saSxzLGwsbyk7ZS5wb3MrPWY7ZS5tZXRhQmxvY2tMZW5ndGgtPWY7aWYoZS5wb3M+PXQpe2UubmV4dFJ1bm5pbmdTdGF0ZT00O2UucnVubmluZ1N0YXRlPTEyO3JldHVybiAwfWUucnVubmluZ1N0YXRlPTR9cmV0dXJuIDB9ZnVuY3Rpb24gY29weUZyb21Db21wb3VuZERpY3Rpb25hcnkoZSx0KXtsZXQgYT1lLnBvcztjb25zdCBuPWE7Zm9yKDtlLmNkQnJMZW5ndGghPT1lLmNkQnJDb3BpZWQ7KXtjb25zdCBuPXQtYSxzPWUuY2RDaHVua09mZnNldHNbZS5jZEJySW5kZXgrMV0tZS5jZENodW5rT2Zmc2V0c1tlLmNkQnJJbmRleF0tZS5jZEJyT2Zmc2V0O2xldCByPWUuY2RCckxlbmd0aC1lLmNkQnJDb3BpZWQ7cj5zJiYocj1zKTtyPm4mJihyPW4pO2UucmluZ0J1ZmZlci5zZXQoZS5jZENodW5rc1tlLmNkQnJJbmRleF0uc3ViYXJyYXkoZS5jZEJyT2Zmc2V0LGUuY2RCck9mZnNldCtyKSxhKTthKz1yO2UuY2RCck9mZnNldCs9cjtlLmNkQnJDb3BpZWQrPXI7aWYocj09PXMpe2UuY2RCckluZGV4Kys7ZS5jZEJyT2Zmc2V0PTB9aWYoYT49dClicmVha31yZXR1cm4gYS1ufWZ1bmN0aW9uIGRlY29tcHJlc3MoZSl7bGV0IHQ7aWYoMD09PWUucnVubmluZ1N0YXRlKXJldHVybiBtYWtlRXJyb3IoZSwtMjUpO2lmKGUucnVubmluZ1N0YXRlPDApcmV0dXJuIG1ha2VFcnJvcihlLC0yOCk7aWYoMTE9PT1lLnJ1bm5pbmdTdGF0ZSlyZXR1cm4gbWFrZUVycm9yKGUsLTIyKTtpZigxPT09ZS5ydW5uaW5nU3RhdGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZGVjb2RlV2luZG93Qml0cyhlKXtjb25zdCB0PWUuaXNMYXJnZVdpbmRvdztlLmlzTGFyZ2VXaW5kb3c9MDtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWlmKDA9PT1yZWFkRmV3Qml0cyhlLDEpKXJldHVybiAxNjtsZXQgYT1yZWFkRmV3Qml0cyhlLDMpO2lmKDAhPT1hKXJldHVybiAxNythO2E9cmVhZEZld0JpdHMoZSwzKTtpZigwIT09YSl7aWYoMT09PWEpe2lmKDA9PT10KXJldHVybi0xO2UuaXNMYXJnZVdpbmRvdz0xO2lmKDE9PT1yZWFkRmV3Qml0cyhlLDEpKXJldHVybi0xO2E9cmVhZEZld0JpdHMoZSw2KTtyZXR1cm4gYTwxMHx8YT4zMD8tMTphfXJldHVybiA4K2F9cmV0dXJuIDE3fShlKTtpZigtMT09PXQpcmV0dXJuIG1ha2VFcnJvcihlLC0xMSk7ZS5tYXhSaW5nQnVmZmVyU2l6ZT0xPDx0O2UubWF4QmFja3dhcmREaXN0YW5jZT1lLm1heFJpbmdCdWZmZXJTaXplLTE2O2UucnVubmluZ1N0YXRlPTJ9bGV0IHM9Y2FsY3VsYXRlRmVuY2UoZSkscj1lLnJpbmdCdWZmZXJTaXplLTEsaT1lLnJpbmdCdWZmZXI7Zm9yKDsxMCE9PWUucnVubmluZ1N0YXRlOylzd2l0Y2goZS5ydW5uaW5nU3RhdGUpe2Nhc2UgMjppZihlLm1ldGFCbG9ja0xlbmd0aDwwKXJldHVybiBtYWtlRXJyb3IoZSwtMTApO3Q9cmVhZE5leHRNZXRhYmxvY2tIZWFkZXIoZSk7aWYodDwwKXJldHVybiB0O3M9Y2FsY3VsYXRlRmVuY2UoZSk7cj1lLnJpbmdCdWZmZXJTaXplLTE7aT1lLnJpbmdCdWZmZXI7Y29udGludWU7Y2FzZSAzOnQ9cmVhZE1ldGFibG9ja0h1ZmZtYW5Db2Rlc0FuZENvbnRleHRNYXBzKGUpO2lmKHQ8MClyZXR1cm4gdDtlLnJ1bm5pbmdTdGF0ZT00O2NvbnRpbnVlO2Nhc2UgNDppZihlLm1ldGFCbG9ja0xlbmd0aDw9MCl7ZS5ydW5uaW5nU3RhdGU9Mjtjb250aW51ZX1pZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH0wPT09ZS5jb21tYW5kQmxvY2tMZW5ndGgmJmRlY29kZUNvbW1hbmRCbG9ja1N3aXRjaChlKTtlLmNvbW1hbmRCbG9ja0xlbmd0aC0tO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9Y29uc3Qgbz1yZWFkU3ltYm9sKGUuY29tbWFuZFRyZWVHcm91cCxlLmNvbW1hbmRUcmVlSWR4LGUpPDwyLGw9ZltvXSxjPWZbbysxXSx1PWZbbysyXTtlLmRpc3RhbmNlQ29kZT1mW28rM107aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1jb25zdCBtPTI1NSZsO2UuaW5zZXJ0TGVuZ3RoPWMrKG08PTE2P3JlYWRGZXdCaXRzKGUsbSk6cmVhZE1hbnlCaXRzKGUsbSkpO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9Y29uc3QgcD1sPj44O2UuY29weUxlbmd0aD11KyhwPD0xNj9yZWFkRmV3Qml0cyhlLHApOnJlYWRNYW55Qml0cyhlLHApKTtlLmo9MDtlLnJ1bm5pbmdTdGF0ZT03O2NvbnRpbnVlO2Nhc2UgNzppZigwIT09ZS50cml2aWFsTGl0ZXJhbENvbnRleHQpZm9yKDtlLmo8ZS5pbnNlcnRMZW5ndGg7KXtpZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH0wPT09ZS5saXRlcmFsQmxvY2tMZW5ndGgmJmRlY29kZUxpdGVyYWxCbG9ja1N3aXRjaChlKTtlLmxpdGVyYWxCbG9ja0xlbmd0aC0tO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9aVtlLnBvc109cmVhZFN5bWJvbChlLmxpdGVyYWxUcmVlR3JvdXAsZS5saXRlcmFsVHJlZUlkeCxlKTtlLnBvcysrO2UuaisrO2lmKGUucG9zPj1zKXtlLm5leHRSdW5uaW5nU3RhdGU9NztlLnJ1bm5pbmdTdGF0ZT0xMjticmVha319ZWxzZXtsZXQgYT0yNTUmaVtlLnBvcy0xJnJdLG49MjU1JmlbZS5wb3MtMiZyXTtmb3IoO2UuajxlLmluc2VydExlbmd0aDspe2lmKGUuaGFsZk9mZnNldD4yMDMwKXt0PXJlYWRNb3JlSW5wdXQoZSk7aWYodDwwKXJldHVybiB0fTA9PT1lLmxpdGVyYWxCbG9ja0xlbmd0aCYmZGVjb2RlTGl0ZXJhbEJsb2NrU3dpdGNoKGUpO2NvbnN0IHI9aFtlLmNvbnRleHRMb29rdXBPZmZzZXQxK2FdfGhbZS5jb250ZXh0TG9va3VwT2Zmc2V0MituXSxvPTI1NSZlLmNvbnRleHRNYXBbZS5jb250ZXh0TWFwU2xpY2Urcl07ZS5saXRlcmFsQmxvY2tMZW5ndGgtLTtuPWE7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1hPXJlYWRTeW1ib2woZS5saXRlcmFsVHJlZUdyb3VwLG8sZSk7aVtlLnBvc109YTtlLnBvcysrO2UuaisrO2lmKGUucG9zPj1zKXtlLm5leHRSdW5uaW5nU3RhdGU9NztlLnJ1bm5pbmdTdGF0ZT0xMjticmVha319fWlmKDchPT1lLnJ1bm5pbmdTdGF0ZSljb250aW51ZTtlLm1ldGFCbG9ja0xlbmd0aC09ZS5pbnNlcnRMZW5ndGg7aWYoZS5tZXRhQmxvY2tMZW5ndGg8PTApe2UucnVubmluZ1N0YXRlPTQ7Y29udGludWV9bGV0IGQ9ZS5kaXN0YW5jZUNvZGU7aWYoZDwwKWUuZGlzdGFuY2U9ZS5yaW5nc1tlLmRpc3RSYklkeF07ZWxzZXtpZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH0wPT09ZS5kaXN0YW5jZUJsb2NrTGVuZ3RoJiZkZWNvZGVEaXN0YW5jZUJsb2NrU3dpdGNoKGUpO2UuZGlzdGFuY2VCbG9ja0xlbmd0aC0tO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9Y29uc3Qgcz0yNTUmZS5kaXN0Q29udGV4dE1hcFtlLmRpc3RDb250ZXh0TWFwU2xpY2UrZF07ZD1yZWFkU3ltYm9sKGUuZGlzdGFuY2VUcmVlR3JvdXAscyxlKTtpZihkPDE2KXtjb25zdCB0PWUuZGlzdFJiSWR4K2FbZF0mMztlLmRpc3RhbmNlPWUucmluZ3NbdF0rbltkXTtpZihlLmRpc3RhbmNlPDApcmV0dXJuIG1ha2VFcnJvcihlLC0xMil9ZWxzZXtjb25zdCB0PWUuZGlzdEV4dHJhQml0c1tkXTtsZXQgYTtpZihlLmJpdE9mZnNldCt0PD0zMilhPXJlYWRGZXdCaXRzKGUsdCk7ZWxzZXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWE9dDw9MTY/cmVhZEZld0JpdHMoZSx0KTpyZWFkTWFueUJpdHMoZSx0KX1lLmRpc3RhbmNlPWUuZGlzdE9mZnNldFtkXSsoYTw8ZS5kaXN0YW5jZVBvc3RmaXhCaXRzKX19ZS5tYXhEaXN0YW5jZSE9PWUubWF4QmFja3dhcmREaXN0YW5jZSYmZS5wb3M8ZS5tYXhCYWNrd2FyZERpc3RhbmNlP2UubWF4RGlzdGFuY2U9ZS5wb3M6ZS5tYXhEaXN0YW5jZT1lLm1heEJhY2t3YXJkRGlzdGFuY2U7aWYoZS5kaXN0YW5jZT5lLm1heERpc3RhbmNlKXtlLnJ1bm5pbmdTdGF0ZT05O2NvbnRpbnVlfWlmKGQ+MCl7ZS5kaXN0UmJJZHg9ZS5kaXN0UmJJZHgrMSYzO2UucmluZ3NbZS5kaXN0UmJJZHhdPWUuZGlzdGFuY2V9aWYoZS5jb3B5TGVuZ3RoPmUubWV0YUJsb2NrTGVuZ3RoKXJldHVybiBtYWtlRXJyb3IoZSwtOSk7ZS5qPTA7ZS5ydW5uaW5nU3RhdGU9ODtjb250aW51ZTtjYXNlIDg6bGV0IGc9ZS5wb3MtZS5kaXN0YW5jZSZyLGI9ZS5wb3M7Y29uc3Qgdz1lLmNvcHlMZW5ndGgtZS5qLGo9Zyt3LGs9Yit3O2lmKGo8ciYmazxyKXtpZih3PDEyfHxqPmImJms+Zyl7Y29uc3QgZT13KzM+PjI7Zm9yKGxldCB0PTA7dDxlOysrdCl7aVtiKytdPWlbZysrXTtpW2IrK109aVtnKytdO2lbYisrXT1pW2crK107aVtiKytdPWlbZysrXX19ZWxzZSBpLmNvcHlXaXRoaW4oYixnLGopO2Uuais9dztlLm1ldGFCbG9ja0xlbmd0aC09dztlLnBvcys9d31lbHNlIGZvcig7ZS5qPGUuY29weUxlbmd0aDspe2lbZS5wb3NdPWlbZS5wb3MtZS5kaXN0YW5jZSZyXTtlLm1ldGFCbG9ja0xlbmd0aC0tO2UucG9zKys7ZS5qKys7aWYoZS5wb3M+PXMpe2UubmV4dFJ1bm5pbmdTdGF0ZT04O2UucnVubmluZ1N0YXRlPTEyO2JyZWFrfX04PT09ZS5ydW5uaW5nU3RhdGUmJihlLnJ1bm5pbmdTdGF0ZT00KTtjb250aW51ZTtjYXNlIDk6dD1kb1VzZURpY3Rpb25hcnkoZSxzKTtpZih0PDApcmV0dXJuIHQ7Y29udGludWU7Y2FzZSAxNDplLnBvcys9Y29weUZyb21Db21wb3VuZERpY3Rpb25hcnkoZSxzKTtpZihlLnBvcz49cyl7ZS5uZXh0UnVubmluZ1N0YXRlPTE0O2UucnVubmluZ1N0YXRlPTEyO3JldHVybiAyfWUucnVubmluZ1N0YXRlPTQ7Y29udGludWU7Y2FzZSA1OmZvcig7ZS5tZXRhQmxvY2tMZW5ndGg+MDspe2lmKGUuaGFsZk9mZnNldD4yMDMwKXt0PXJlYWRNb3JlSW5wdXQoZSk7aWYodDwwKXJldHVybiB0fWlmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9cmVhZEZld0JpdHMoZSw4KTtlLm1ldGFCbG9ja0xlbmd0aC0tfWUucnVubmluZ1N0YXRlPTI7Y29udGludWU7Y2FzZSA2OnQ9Y29weVVuY29tcHJlc3NlZERhdGEoZSk7aWYodDwwKXJldHVybiB0O2NvbnRpbnVlO2Nhc2UgMTI6ZS5yaW5nQnVmZmVyQnl0ZXNSZWFkeT1NYXRoLm1pbihlLnBvcyxlLnJpbmdCdWZmZXJTaXplKTtlLnJ1bm5pbmdTdGF0ZT0xMztjb250aW51ZTtjYXNlIDEzOnQ9d3JpdGVSaW5nQnVmZmVyKGUpO2lmKDAhPT10KXJldHVybiB0O2UucG9zPj1lLm1heEJhY2t3YXJkRGlzdGFuY2UmJihlLm1heERpc3RhbmNlPWUubWF4QmFja3dhcmREaXN0YW5jZSk7aWYoZS5wb3M+PWUucmluZ0J1ZmZlclNpemUpe2UucG9zPmUucmluZ0J1ZmZlclNpemUmJmkuY29weVdpdGhpbigwLGUucmluZ0J1ZmZlclNpemUsZS5wb3MpO2UucG9zPWUucG9zJnI7ZS5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuPTB9ZS5ydW5uaW5nU3RhdGU9ZS5uZXh0UnVubmluZ1N0YXRlO2NvbnRpbnVlO2RlZmF1bHQ6cmV0dXJuIG1ha2VFcnJvcihlLC0yOCl9aWYoMTAhPT1lLnJ1bm5pbmdTdGF0ZSlyZXR1cm4gbWFrZUVycm9yKGUsLTI5KTtpZihlLm1ldGFCbG9ja0xlbmd0aDwwKXJldHVybiBtYWtlRXJyb3IoZSwtMTApO3Q9anVtcFRvQnl0ZUJvdW5kYXJ5KGUpO2lmKDAhPT10KXJldHVybiB0O3Q9Y2hlY2tIZWFsdGgoZSwxKTtyZXR1cm4gMCE9PXQ/dDoxfWNvbnN0IGM9bmV3IGZ1bmN0aW9uIFRyYW5zZm9ybXMoZSx0LGEpe3RoaXMubnVtVHJhbnNmb3Jtcz0wO3RoaXMudHJpcGxldHM9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5wcmVmaXhTdWZmaXhTdG9yYWdlPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5wcmVmaXhTdWZmaXhIZWFkcz1uZXcgSW50MzJBcnJheSgwKTt0aGlzLnBhcmFtcz1uZXcgSW50MTZBcnJheSgwKTt0aGlzLm51bVRyYW5zZm9ybXM9ZTt0aGlzLnRyaXBsZXRzPW5ldyBJbnQzMkFycmF5KDMqZSk7dGhpcy5wYXJhbXM9bmV3IEludDE2QXJyYXkoZSk7dGhpcy5wcmVmaXhTdWZmaXhTdG9yYWdlPW5ldyBJbnQ4QXJyYXkodCk7dGhpcy5wcmVmaXhTdWZmaXhIZWFkcz1uZXcgSW50MzJBcnJheShhKzEpfSgxMjEsMTY3LDUwKTshZnVuY3Rpb24gdW5wYWNrVHJhbnNmb3JtcyhlLHQsYSxuLHMpe2NvbnN0IHI9dG9VdGY4UnVuZXMobiksaT1yLmxlbmd0aDtsZXQgbz0xLGw9MDtmb3IobGV0IGE9MDthPGk7KythKXtjb25zdCBuPXJbYV07MzU9PT1uP3RbbysrXT1sOmVbbCsrXT1ufWZvcihsZXQgZT0wO2U8MzYzOysrZSlhW2VdPXMuY2hhckNvZGVBdChlKS0zMn0oYy5wcmVmaXhTdWZmaXhTdG9yYWdlLGMucHJlZml4U3VmZml4SGVhZHMsYy50cmlwbGV0cywnIyAjcyAjLCAjZSAjLiMgdGhlICMuY29tLyPDgsKgIyBvZiAjIGFuZCAjIGluICMgdG8gIyIjIj4jXG4jXSMgZm9yICMgYSAjIHRoYXQgIy4gIyB3aXRoICNcJyMgZnJvbSAjIGJ5ICMuIFRoZSAjIG9uICMgYXMgIyBpcyAjaW5nICNcblx0IzojZWQgIygjIGF0ICNseSAjPSIjIG9mIHRoZSAjLiBUaGlzICMsIyBub3QgI2VyICNhbCAjPVwnI2Z1bCAjaXZlICNsZXNzICNlc3QgI2l6ZSAjb3VzICMnLCIgICAgICEhICEgLCAgKiEgICYhICBcIiAhICApICogICAqIC0gICEgIyAhICAjISohICArICAsJCAhICAtICAlICAuICAvICMgICAwICAxIC4gIFwiICAgMiAgMyEqICAgNCUgICEgIyAvICAgNSAgNiAgNyAgOCAwICAxICYgICAkICAgOSArICAgOiAgOyAgPCAnICAhPSAgPiAgPyEgNCAgQCA0ICAyICAmICAgQSAqIyAoICAgQiAgQyYgKSAlICApICEqIyAqLSUgQSArISAqLiAgRCEgJScgICYgRSAqNiAgRiAgRyUgISAqQSAqJSAgSCEgRCAgSSErISAgSiErICAgSyArLSAqNCEgQSAgTCEqNCAgTSAgTiArNiAgTyEqJSArLiEgSyAqRyAgUCArJSggICEgRyAqRCArRCAgUSArIyAqSyEqRyErRCErIyArRyArQSArNCErJSArSyErNCEqRCErSyEqSyIpO2Z1bmN0aW9uIGdldE5leHRLZXkoZSx0KXtsZXQgYT0xPDx0LTE7Zm9yKDswIT09KGUmYSk7KWE+Pj0xO3JldHVybihlJmEtMSkrYX1mdW5jdGlvbiByZXBsaWNhdGVWYWx1ZShlLHQsYSxuLHMpe2xldCByPW47Zm9yKDtyPjA7KXtyLT1hO2VbdCtyXT1zfX1mdW5jdGlvbiBuZXh0VGFibGVCaXRTaXplKGUsdCxhKXtsZXQgbj10LHM9MTw8bi1hO2Zvcig7bjwxNTspe3MtPWVbbl07aWYoczw9MClicmVhaztuKys7czw8PTF9cmV0dXJuIG4tYX1mdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQsYSxuLHMpe2NvbnN0IHI9ZVt0XSxpPW5ldyBJbnQzMkFycmF5KHMpLG89bmV3IEludDMyQXJyYXkoMTYpLGw9bmV3IEludDMyQXJyYXkoMTYpO2ZvcihsZXQgZT0wO2U8czsrK2Upb1tuW2VdXSsrO2xbMV09MDtmb3IobGV0IGU9MTtlPDE1OysrZSlsW2UrMV09bFtlXStvW2VdO2ZvcihsZXQgZT0wO2U8czsrK2UpMCE9PW5bZV0mJihpW2xbbltlXV0rK109ZSk7bGV0IGY9YSxjPTE8PGYsaD1jO2lmKDE9PT1sWzE1XSl7Zm9yKGxldCB0PTA7dDxoOysrdCllW3IrdF09aVswXTtyZXR1cm4gaH1sZXQgdT0wLG09MCxwPTE7Zm9yKGxldCB0PTE7dDw9YTsrK3Qpe3A8PD0xO2Zvcig7b1t0XT4wOyl7cmVwbGljYXRlVmFsdWUoZSxyK3UscCxjLHQ8PDE2fGlbbSsrXSk7dT1nZXROZXh0S2V5KHUsdCk7b1t0XS0tfX1jb25zdCBkPWgtMTtsZXQgZz0tMSxiPXI7cD0xO2ZvcihsZXQgdD1hKzE7dDw9MTU7Kyt0KXtwPDw9MTtmb3IoO29bdF0+MDspe2lmKCh1JmQpIT09Zyl7Yis9YztmPW5leHRUYWJsZUJpdFNpemUobyx0LGEpO2M9MTw8ZjtoKz1jO2c9dSZkO2VbcitnXT1mK2E8PDE2fGItci1nfXJlcGxpY2F0ZVZhbHVlKGUsYisodT4+YSkscCxjLHQtYTw8MTZ8aVttKytdKTt1PWdldE5leHRLZXkodSx0KTtvW3RdLS19fXJldHVybiBofWZ1bmN0aW9uIHJlYWRNb3JlSW5wdXQoZSl7aWYoMCE9PWUuZW5kT2ZTdHJlYW1SZWFjaGVkKXJldHVybiBoYWxmQXZhaWxhYmxlKGUpPj0tMj8wOm1ha2VFcnJvcihlLC0xNik7Y29uc3QgdD1lLmhhbGZPZmZzZXQ8PDE7bGV0IGE9NDA5Ni10O2UuYnl0ZUJ1ZmZlci5jb3B5V2l0aGluKDAsdCw0MDk2KTtlLmhhbGZPZmZzZXQ9MDtmb3IoO2E8NDA5Njspe2NvbnN0IHQ9NDA5Ni1hLG49cmVhZElucHV0KGUsZS5ieXRlQnVmZmVyLGEsdCk7aWYobjwtMSlyZXR1cm4gbjtpZihuPD0wKXtlLmVuZE9mU3RyZWFtUmVhY2hlZD0xO2UudGFpbEJ5dGVzPWE7YSs9MTticmVha31hKz1ufSFmdW5jdGlvbiBieXRlc1RvTmliYmxlcyhlLHQpe2NvbnN0IGE9ZS5ieXRlQnVmZmVyLG49dD4+MSxzPWUuc2hvcnRCdWZmZXI7Zm9yKGxldCBlPTA7ZTxuOysrZSlzW2VdPTI1NSZhWzIqZV18KDI1NSZhWzIqZSsxXSk8PDh9KGUsYSk7cmV0dXJuIDB9ZnVuY3Rpb24gY2hlY2tIZWFsdGgoZSx0KXtpZigwPT09ZS5lbmRPZlN0cmVhbVJlYWNoZWQpcmV0dXJuIDA7Y29uc3QgYT0oZS5oYWxmT2Zmc2V0PDwxKSsoZS5iaXRPZmZzZXQrNz4+MyktNDtyZXR1cm4gYT5lLnRhaWxCeXRlcz9tYWtlRXJyb3IoZSwtMTMpOjAhPT10JiZhIT09ZS50YWlsQnl0ZXM/bWFrZUVycm9yKGUsLTE3KTowfWZ1bmN0aW9uIHJlYWRGZXdCaXRzKGUsdCl7Y29uc3QgYT1lLmFjY3VtdWxhdG9yMzI+Pj5lLmJpdE9mZnNldCYoMTw8dCktMTtlLmJpdE9mZnNldCs9dDtyZXR1cm4gYX1mdW5jdGlvbiByZWFkTWFueUJpdHMoZSx0KXtjb25zdCBhPXJlYWRGZXdCaXRzKGUsMTYpO2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2O3JldHVybiBhfHJlYWRGZXdCaXRzKGUsdC0xNik8PDE2fWZ1bmN0aW9uIHByZXBhcmUoZSl7aWYoZS5oYWxmT2Zmc2V0PjIwMzApe2NvbnN0IHQ9cmVhZE1vcmVJbnB1dChlKTtpZigwIT09dClyZXR1cm4gdH1sZXQgdD1jaGVja0hlYWx0aChlLDApO2lmKDAhPT10KXJldHVybiB0O2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2O2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2O3JldHVybiAwfWZ1bmN0aW9uIHJlbG9hZChlKXtyZXR1cm4gMzI9PT1lLmJpdE9mZnNldD9wcmVwYXJlKGUpOjB9ZnVuY3Rpb24ganVtcFRvQnl0ZUJvdW5kYXJ5KGUpe2NvbnN0IHQ9MzItZS5iaXRPZmZzZXQmNztpZigwIT09dCl7aWYoMCE9PXJlYWRGZXdCaXRzKGUsdCkpcmV0dXJuIG1ha2VFcnJvcihlLC01KX1yZXR1cm4gMH1mdW5jdGlvbiBoYWxmQXZhaWxhYmxlKGUpe2xldCB0PTIwNDg7MCE9PWUuZW5kT2ZTdHJlYW1SZWFjaGVkJiYodD1lLnRhaWxCeXRlcysxPj4xKTtyZXR1cm4gdC1lLmhhbGZPZmZzZXR9Y29uc3QgaD1uZXcgSW50MzJBcnJheSgyMDQ4KTshZnVuY3Rpb24gdW5wYWNrTG9va3VwVGFibGUoZSx0LGEpe2ZvcihsZXQgdD0wO3Q8MjU2OysrdCl7ZVt0XT02MyZ0O2VbNTEyK3RdPXQ+PjI7ZVsxNzkyK3RdPTIrKHQ+PjYpfWZvcihsZXQgYT0wO2E8MTI4OysrYSllWzEwMjQrYV09NCoodC5jaGFyQ29kZUF0KGEpLTMyKTtmb3IobGV0IHQ9MDt0PDY0OysrdCl7ZVsxMTUyK3RdPTEmdDtlWzEyMTYrdF09MisoMSZ0KX1sZXQgbj0xMjgwO2ZvcihsZXQgdD0wO3Q8MTk7Kyt0KXtjb25zdCBzPTMmdCxyPWEuY2hhckNvZGVBdCh0KS0zMjtmb3IobGV0IHQ9MDt0PHI7Kyt0KWVbbisrXT1zfWZvcihsZXQgdD0wO3Q8MTY7Kyt0KXtlWzE3OTIrdF09MTtlWzIwMzIrdF09Nn1lWzE3OTJdPTA7ZVsyMDQ3XT03O2ZvcihsZXQgdD0wO3Q8MjU2OysrdCllWzE1MzYrdF09ZVsxNzkyK3RdPDwzfShoLCIgICAgICAgICAhISAgISAgICAgICAgICAgICAgICAgIFwiIyQjIyUjJCYnIyMoIykjKysrKysrKysrKygoJionIyMsLS0tLC0tLSwtLS0tLSwtLS0tLSwtLS0tLSYjJyMjIy4vLy8uLy8vLi8vLy8vLi8vLy8vLi8vLy8vJiMnIyAiLCJBLyogICc6ICAmIDogJCAgwoEgQCIpO2Z1bmN0aW9uIFN0YXRlKCl7dGhpcy5yaW5nQnVmZmVyPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5jb250ZXh0TW9kZXM9bmV3IEludDhBcnJheSgwKTt0aGlzLmNvbnRleHRNYXA9bmV3IEludDhBcnJheSgwKTt0aGlzLmRpc3RDb250ZXh0TWFwPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5kaXN0RXh0cmFCaXRzPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5vdXRwdXQ9bmV3IEludDhBcnJheSgwKTt0aGlzLmJ5dGVCdWZmZXI9bmV3IEludDhBcnJheSgwKTt0aGlzLnNob3J0QnVmZmVyPW5ldyBJbnQxNkFycmF5KDApO3RoaXMuaW50QnVmZmVyPW5ldyBJbnQzMkFycmF5KDApO3RoaXMucmluZ3M9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5ibG9ja1RyZWVzPW5ldyBJbnQzMkFycmF5KDApO3RoaXMubGl0ZXJhbFRyZWVHcm91cD1uZXcgSW50MzJBcnJheSgwKTt0aGlzLmNvbW1hbmRUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5kaXN0YW5jZVRyZWVHcm91cD1uZXcgSW50MzJBcnJheSgwKTt0aGlzLmRpc3RPZmZzZXQ9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5hY2N1bXVsYXRvcjY0PTA7dGhpcy5ydW5uaW5nU3RhdGU9MDt0aGlzLm5leHRSdW5uaW5nU3RhdGU9MDt0aGlzLmFjY3VtdWxhdG9yMzI9MDt0aGlzLmJpdE9mZnNldD0wO3RoaXMuaGFsZk9mZnNldD0wO3RoaXMudGFpbEJ5dGVzPTA7dGhpcy5lbmRPZlN0cmVhbVJlYWNoZWQ9MDt0aGlzLm1ldGFCbG9ja0xlbmd0aD0wO3RoaXMuaW5wdXRFbmQ9MDt0aGlzLmlzVW5jb21wcmVzc2VkPTA7dGhpcy5pc01ldGFkYXRhPTA7dGhpcy5saXRlcmFsQmxvY2tMZW5ndGg9MDt0aGlzLm51bUxpdGVyYWxCbG9ja1R5cGVzPTA7dGhpcy5jb21tYW5kQmxvY2tMZW5ndGg9MDt0aGlzLm51bUNvbW1hbmRCbG9ja1R5cGVzPTA7dGhpcy5kaXN0YW5jZUJsb2NrTGVuZ3RoPTA7dGhpcy5udW1EaXN0YW5jZUJsb2NrVHlwZXM9MDt0aGlzLnBvcz0wO3RoaXMubWF4RGlzdGFuY2U9MDt0aGlzLmRpc3RSYklkeD0wO3RoaXMudHJpdmlhbExpdGVyYWxDb250ZXh0PTA7dGhpcy5saXRlcmFsVHJlZUlkeD0wO3RoaXMuY29tbWFuZFRyZWVJZHg9MDt0aGlzLmo9MDt0aGlzLmluc2VydExlbmd0aD0wO3RoaXMuY29udGV4dE1hcFNsaWNlPTA7dGhpcy5kaXN0Q29udGV4dE1hcFNsaWNlPTA7dGhpcy5jb250ZXh0TG9va3VwT2Zmc2V0MT0wO3RoaXMuY29udGV4dExvb2t1cE9mZnNldDI9MDt0aGlzLmRpc3RhbmNlQ29kZT0wO3RoaXMubnVtRGlyZWN0RGlzdGFuY2VDb2Rlcz0wO3RoaXMuZGlzdGFuY2VQb3N0Zml4Qml0cz0wO3RoaXMuZGlzdGFuY2U9MDt0aGlzLmNvcHlMZW5ndGg9MDt0aGlzLm1heEJhY2t3YXJkRGlzdGFuY2U9MDt0aGlzLm1heFJpbmdCdWZmZXJTaXplPTA7dGhpcy5yaW5nQnVmZmVyU2l6ZT0wO3RoaXMuZXhwZWN0ZWRUb3RhbFNpemU9MDt0aGlzLm91dHB1dE9mZnNldD0wO3RoaXMub3V0cHV0TGVuZ3RoPTA7dGhpcy5vdXRwdXRVc2VkPTA7dGhpcy5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuPTA7dGhpcy5yaW5nQnVmZmVyQnl0ZXNSZWFkeT0wO3RoaXMuaXNFYWdlcj0wO3RoaXMuaXNMYXJnZVdpbmRvdz0wO3RoaXMuY2ROdW1DaHVua3M9MDt0aGlzLmNkVG90YWxTaXplPTA7dGhpcy5jZEJySW5kZXg9MDt0aGlzLmNkQnJPZmZzZXQ9MDt0aGlzLmNkQnJMZW5ndGg9MDt0aGlzLmNkQnJDb3BpZWQ9MDt0aGlzLmNkQ2h1bmtzPW5ldyBBcnJheSgwKTt0aGlzLmNkQ2h1bmtPZmZzZXRzPW5ldyBJbnQzMkFycmF5KDApO3RoaXMuY2RCbG9ja0JpdHM9MDt0aGlzLmNkQmxvY2tNYXA9bmV3IEludDhBcnJheSgwKTt0aGlzLmlucHV0PW5ldyBJbnB1dFN0cmVhbShuZXcgSW50OEFycmF5KDApKTt0aGlzLnJpbmdCdWZmZXI9bmV3IEludDhBcnJheSgwKTt0aGlzLnJpbmdzPW5ldyBJbnQzMkFycmF5KDEwKTt0aGlzLnJpbmdzWzBdPTE2O3RoaXMucmluZ3NbMV09MTU7dGhpcy5yaW5nc1syXT0xMTt0aGlzLnJpbmdzWzNdPTR9bGV0IHU9bmV3IEludDhBcnJheSgwKTtjb25zdCBtPW5ldyBJbnQzMkFycmF5KDMyKSxwPW5ldyBJbnQzMkFycmF5KDMyKTtjb25zdCBkPW5ldyBJbnQ4QXJyYXkoMTIyNzg0KSxnPW5ldyBJbnQzMkFycmF5KDI1KTshZnVuY3Rpb24gdW5wYWNrRGljdGlvbmFyeURhdGEoZSx0LGEsbixzLHIpe2NvbnN0IGk9ZnVuY3Rpb24gdG9Vc0FzY2lpQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBJbnQ4QXJyYXkodCk7Zm9yKGxldCBuPTA7bjx0OysrbilhW25dPWUuY2hhckNvZGVBdChuKTtyZXR1cm4gYX0odCthKSxvPXRvVXRmOFJ1bmVzKG4pO2xldCBsPTA7Y29uc3QgZj1vLmxlbmd0aD4+MTtmb3IobGV0IGU9MDtlPGY7KytlKXtjb25zdCB0PW9bMiplXS0zNixhPW9bMiplKzFdLTM2O2ZvcihsZXQgZT0wO2U8dDsrK2Upe2lbbF09M15pW2xdO2wrK31mb3IobGV0IGU9MDtlPGE7KytlKXtpW2xdPTIzNl5pW2xdO2wrK319Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDsrK2Upc1tlXT1yLmNoYXJDb2RlQXQoZSktNjU7ZS5zZXQoaSl9KGQsJ3dqbmZnbHRtb2plZm9mZXdhYmBoYGxnZmdid2Jwa2x0bG1venBqd2Zgand6bHNmbWl2cHdvamhmZXFmZnRscWh3Znt3emZicWx1ZnFhbGd6b2x1ZmVscW5hbGxoc29iem9qdWZvam1ma2Zvc2tsbmZwamdmbmxxZnRscWdvbG1kd2tmbnVqZnRlam1nc2JkZmdienBldm9va2ZiZ3dmcW5mYmBrYnFmYmVxbG53cXZmbmJxaGJhb2Z2c2xta2pka2did2ZvYm1nbWZ0cGZ1Zm1tZnt3YGJwZmFsd2tzbHB3dnBmZ25iZ2ZrYm1na2ZxZnRrYndtYm5mT2ptaGFvbGRwanlmYWJwZmtmb2duYmhmbmJqbXZwZnEkKiMoa2xvZ2ZtZ3B0andrTWZ0cHFmYmd0ZnFmcGpkbXdiaGZrYnVmZGJuZnBmZm1gYm9vc2J3a3Rmb29zb3ZwbmZtdmVqb25zYnF3aWxqbXdranBvanB3ZGxsZ21mZmd0YnpwdGZwd2lsYXBuam1nYm9wbG9sZGxxamBrdnBmcG9icHd3ZmJuYnFuemVsbGdoam1kdGpvb2ZicHd0YnFnYWZwd2VqcWZTYmRmaG1sdGJ0Ynotc21kbmx1ZndrYm1vbGJnZGp1ZnBmb2VtbHdmbnZga2VmZmduYm16cWxgaGpgbG1sbWBmb2xsaGtqZ2ZnamZnS2xuZnF2b2ZrbHB3Ymlie2ptZWxgb3Zhb2J0cG9mcHBrYm9lcGxuZnB2YGt5bG1mMjMzJmxtZnBgYnFmV2puZnFiYGZhb3ZmZWx2cXRmZmhlYmBma2xzZmRidWZrYnFnb2xwd3RrZm1zYnFoaGZzd3NicHBwa2pzcWxsbktXTk9zb2JtV3pzZmdsbWZwYnVmaGZmc2VvYmRvam1ocGxvZ2VqdWZ3bGxocWJ3ZndsdG1pdm5zd2t2cGdicWhgYnFnZWpvZmVmYnFwd2J6aGpvb3drYndlYm9vYnZ3bGZ1ZnEtYGxud2JvaHBrbHN1bHdmZ2Zmc25sZ2ZxZnB3d3ZxbWFscW1hYm1nZWZvb3FscGZ2cW8rcGhqbXFsb2ZgbG5mYmB3cGJkZnBuZmZ3ZGxvZy1pc2Rqd2ZudWJxemVmb3d3a2ZtcGZtZ2dxbHNVamZ0YGxzejItMyE/LGI9cHdsc2ZvcGZvamZwd2x2cXNiYGgtZGplc2Jwd2BwcDxkcWJ6bmZibSVkdzhxamdmcGtsd29id2ZwYmpncWxiZ3VicSNlZmZvaWxrbXFqYGhzbHF3ZWJwdyRWQi5nZmJnPyxhPXNsbHFham9vd3pzZlYtUC10bGxnbnZwdzFzezhKbWVscWJtaHRqZ2Z0Ym13dGJvb29mYmdYM144c2J2b3RidWZwdnFmXCcrJCB0Ymp3bmJwcGJxbnBkbGZwZGJqbW9ibWRzYmpnIi4uI29sYGh2bWp3cWxsd3Rib2hlanFudGplZntubyFwbG1kd2ZwdzEzc3toam1ncWx0cHdsbG9lbG13bmJqb3BiZWZwd2JxbmJzcGBscWZxYmptZW9sdGFiYXpwc2JtcGJ6cDdzezg1c3s4YnF3cGVsbHdxZmJvdGpoamtmYndwd2Zzd3Fqc2xxZCxvYmhmdGZiaHdsb2dFbHFuYGJwd2VibXBhYm1odWZxenF2bXBpdm96d2JwaDJzezhkbGJvZHFmdHBvbHRmZ2Rmamc+IXBmd3A2c3s4LWlwPDczc3tqZSMrcGxsbXBmYndtbG1md3ZhZnlmcWxwZm13cWZmZ2ViYHdqbXdsZGpld2ticW4yO3N7YGJuZmtqb29hbG9neWxsbnVsamdmYnB6cWptZGVqb29zZmJoam1qd2BscHcwc3s4aWJgaHdiZHBhandwcWxvb2ZnandobWZ0bWZicT8iLi5kcWx0SVBMTWd2d3pNYm5mcGJvZnpsdiNvbHdwc2JqbWlieXlgbG9nZnpmcGVqcGt0dHQtcWpwaHdiYXBzcWZ1MjNze3FqcGYxNnN7QW92ZmdqbWQwMzMvYWJvb2VscWdmYnFtdGpvZ2Fsey1lYmpxb2JgaHVmcXBzYmpxaXZtZndmYGtqZSsic2pgaGZ1am9cJyshIHRicW5vbHFnZ2xmcHN2b28vMzMzamdmYmdxYnRrdmRmcHNsd2V2bWdhdnFta3FmZWBmb29oZnpwd2pgaGtsdnFvbHBwZXZmbzIxc3twdmp3Z2Zib1FQUCFiZGZnZHFmekRGVyFmYnBmYmpucGRqcW9iamdwO3N7OG1idXpkcWpnd2pzcCA6Ojp0YnFwb2JnemBicXAqOCN+c2tzPGtmb293Ym9vdGtsbnlrOVx0KSwOXHQjMjMza2Jvby1cdFx0QjRzezhzdnBrYGtidzNzezhgcWZ0KSw/LGticGs0NnN7ZW9id3FicWYjJSUjd2Zvb2BibnNsbXdsb2JqZ25qcHBwaGpzd2Ztd2VqbWZuYm9mZGZ3cHNvbHc3MzMvDlx0Dlx0YGxsb2VmZnctc2tzP2FxPWZxamBubHB3ZHZqZ2Fmb29nZnBga2JqcW5id2tid2xuLGpuZCUgOzFvdmBoYGZtdzMzMzh3am16ZGxtZmt3bm9wZm9vZ3F2ZEVRRkZtbGdmbWpgaDxqZz5vbHBmbXZvb3VicHd0am1nUVBQI3RmYnFxZm96YWZmbXBibmZndmhmbWJwYmBic2Z0anBrZHZvZVcxMDlrandwcG9sd2Rid2ZoamBoYW92cXdrZnoyNnN7JCQqOCo4IT1ucGpmdGptcGFqcWdwbHF3YWZ3YnBmZmhXMjs5bHFncHdxZmZuYm9vNTNze2VicW4ObHVwYWx6cFgzXi0kKjghU0xQV2FmYnFoamdwKjh+fm5icXp3Zm1nK1ZIKnJ2Ymd5azlcbi5wankuLi4uc3FscyQqOA5vamV3VzI6OXVqYGZibWd6Z2Zhdz1RUFBzbGxvbWZgaGFvbHRXMjU5Z2xscWZ1Ym9XMjQ5b2Z3cGViam9scWJvc2xvb21sdWJgbG9wZGZtZiMObHhwbGV3cWxuZndqb29xbHBwP2swPXNsdnFlYmdmc2ptaD93cT1uam1qKn8iK25qbWZ5azkEYWJxcGtmYnEzMyo4bmpvaCMuLj1qcWxtZXFmZ2dqcGh0Zm13cGxqb3N2d3AsaXAsa2xvelcxMTlKUEFNVzEzOWJnYm5wZmZwP2sxPWlwbG0kLyMkYGxtd1cxMjkjUVBQb2xsc2JwamJubGxtPyxzPXBsdm9PSk1GZWxxd2BicXdXMjc5P2syPTszc3siLi4/OnN7OFczNzluamhmOTc1WW1qYGZqbWBrWmxxaHFqYGZ5azlcYiQqKjhzdnFmbmJkZnNicWJ3bG1mYWxtZzkwNFlcXGxlXFwkXio4MzMzL3lrOVx2d2JtaHpicWdhbHRvYXZwazk2NVlJYnViMDNze1x0f35cdCZAMCY5MDdZaWZlZUZbU0pgYnBrdWpwYmRsb2VwbWx0eWs5BXJ2ZnEtYHBwcGpgaG5mYnduam0tYWptZ2dmb29ranFmc2pgcHFmbXc5MDVZS1dXUy4xMzJlbHdsdGxvZUZNRyN7YWx7OTY3WUFMR1pnamBoOFx0flx0ZntqdzkwNll1YnFwYWZidyR+KjhnamZ3Ojo6OGJtbWZ+fj8sWGpeLU9ibWRobi5edGpxZndsenBiZ2dwcGZib2JvZns4XHRcbn5mYGtsbWptZi1scWQzMzYqd2xtemlmdHBwYm1nb2ZkcHFsbGUzMzMqIzEzM3RqbWZkZmJxZ2xkcGFsbHdkYnF6YHZ3cHd6b2Z3Zm5zd2psbS17bm9gbGBoZGJtZFwnKyQtNjNze1NrLUduanBgYm9ibW9sYm1nZnBobmpvZnF6Ym12bWp7Z2pwYCo4flx0Z3Zwd2BvanMqLVx0XHQ0M3N7LjEzM0dVR3A0Xj0/d2JzZmdmbmxqKCgqdGJkZmZ2cWxza2pvbHN3cGtsb2ZFQlJwYnBqbS4xNVdvYmFwc2Z3cFZRTyNhdm9oYGxsaDh+Dlx0S0ZCR1gzXipiYWFxaXZibSsyOjtvZnBrd3RqbT8saj1wbG16ZHZ6cGV2YGhzanNmfy5cdCIzMzEqbWdsdFgyXjhYXjhcdE9sZCNwYm93Dlx0XG5cbmFibWR3cWpuYWJ3ayp4Dlx0MzNze1x0fio4aGw5XDBlZmZwYmc9DnA5LCwjWF44d2xvb3NvdmQrKnhcdHgOXHQjLWlwJDEzM3NndmJvYWxidy1JU0QqOFx0fnJ2bHcqOFx0XHQkKjhcdA5cdH4OMTMyNzEzMjYxMzI1MTMyNDEzMjsxMzI6MTMxMzEzMTIxMzExMTMxMDEzMTcxMzE2MTMxNTEzMTQxMzE7MTMxOjEzMDMxMzAyMTMwMTEzMDAxMzA3MTMwNjEzMDUxMzA0MTMyMDEzMjExMzIyMTMyMzEzMzoxMzM7MTMzNDEzMzUxMzM2MTMzNzEzMzAxMzMxMTMzMjEzMzMyOjo6Mjo6OzI6OjQyOjo1Mjo6NjI6OjcyOjowMjo6MTI6OjIyOjozMjo7OjI6OzsyOjs0Mjo7NTI6OzYyOjs3Mjo7MDI6OzEyOjsyMjo7MzI6NDoyOjQ7Mjo0NDI6NDUyOjQ2Mjo0NzI6NDAyOjQxMjo0MjI6NDMyOjU6Mjo1OzI6NTQyOjU1Mjo1NjI6NTcyOjUwMjo1MTI6NTIyOjUzMjo2OjI6NjsyOjY0Mjo2NTI6NjYyOjY3Mjo2MDI6NjEyOjYyMjo2MzIzMzMyMzE3MjA6NzMzMzM6Ojo6YGxubG4vTXBmcHdmZnB3YnNmcWx3bGdsa2JgZmBiZ2JiL11sYWpmbWcvQWJicC9BdWpnYmBicGxsd3FsZWxxbHBsb2xsd3FiYHZib2dqaWxwamdsZHFibXdqc2x3Zm5iZ2ZhZmJvZGxydi9FZnB3bG1iZ2J3cWZwc2xgbGBicGJhYmlsd2xnYnBqbWxiZHZic3ZmcHZtbHBibXdmZ2pgZm92anBmb29ibmJ6bHlsbWJibmxxc2pwbGxhcWJgb2pgZm9vbGdqbHBrbHFiYGJwajxbPFxcPFE8XFw8UjxQPWw8XFw9bD1vPW48XFw8UTxZPFM8UjxSPW48VDxbPFE8UjxYPFI9bjxSPFo8WTxSPFE8VD1pPHE8XFw8WTxZPF09ZzxQPWc8fj1nPW08UjxePWc8XjxSPHE8UjxSPF08czxSPFc8VDxRPFQ8TDxIPHE8WTxwPWc9bj1nPHI8UTxUPFA8WDxcXDx7PFxcPHg8XFw8cT1vPHI8XT1uPFk8dDxbPFk8VTxRPW88UDxQPE49Zz1vPFo1bTVmNE81ajVpNEs1aTRVNW81aDRPNWQ0XTRDNWY0SzVtNWU1azVkNWg1aTVoNW80SzVkNWg1azRENF80SzVoNEk1ajVrNWY0TzVmNW40QzVrNWg0RzVpNEQ1azVoNWQ1aDVmNEQ1aDRLNWY0RDVvNFg1ZjRLNWk0TzVpNWo0RjRENWY1aDVqNEE0RDVrNWk1aTRYNWQ0WGVqcXB3dWpnZmxvamRrd3RscW9nbmZnamJ0a2p3ZmBvbHBmYW9iYGhxamRrd3BuYm9vYWxsaHBzb2JgZm52cGpgZWpmb2dscWdmcXNsam13dWJvdmZvZnVmb3diYW9mYWxicWdrbHZwZmRxbHZzdGxxaHB6ZmJxcHB3Yndmd2xnYnp0YndmcXB3YnF3cHd6b2ZnZmJ3a3NsdGZxc2tsbWZtamRrd2ZxcWxxam1zdndiYWx2d3dmcW5wd2p3b2Z3bGxvcGZ1Zm13b2xgYm93am5mcG9icWRmdGxxZ3BkYm5mcHBrbHF3cHNiYGZlbGB2cGBvZmJxbmxnZm9hb2xgaGR2amdmcWJnamxwa2JxZnRsbmZtYmRiam1ubG1mempuYmRmbWJuZnB6bHZtZG9qbWZwb2J3ZnFgbG9scWRxZmZtZXFsbXclYm5zOHRid2BrZWxxYGZzcWpgZnF2b2ZwYWZkam1iZXdmcXVqcGp3anBwdmZicWZicGFmb2x0am1nZnt3bHdib2tsdnFwb2JhZm9zcWptd3NxZnBwYXZqb3dvam1ocHBzZmZncHd2Z3p3cWJnZmVsdm1ncGZtcGZ2bWdmcXBrbHRtZWxxbnBxYm1kZmJnZ2ZncHdqb29ubHVmZ3diaGZtYmFsdWZlb2Jwa2Vqe2ZnbGV3Zm1sd2tmcXVqZnRwYGtmYGhvZmRib3FqdWZxandmbnBydmpgaHBrYnNma3ZuYm1me2pwd2Rsam1kbmx1amZ3a2pxZ2FicGpgc2ZiYGZwd2JkZnRqZ3drb2xkam1qZ2ZicHRxbHdmc2JkZnB2cGZxcGdxanVmcHdscWZhcWZiaHBsdndrdWxqYGZwandmcG5sbXdrdGtmcWZhdmpvZ3RramBrZmJxd2tlbHF2bndrcWZmcHNscXdzYnF3ekBvamBob2x0ZnFvanVmcGBvYnBwb2J6ZnFmbXdxenB3bHF6dnBiZGZwbHZtZ2BsdnF3emx2cSNhanF3a3Nsc3Zzd3pzZnBic3NvekpuYmRmYWZqbWR2c3NmcW1sd2ZwZnVmcXpwa2x0cG5mYm1wZnt3cWJuYndga3dxYmBoaG1sdG1mYnFvemFmZGJtcHZzZnFzYnNmcW1scXdrb2ZicW1kanVmbW1ibmZnZm1nZmdXZnFucHNicXdwRHFsdnNhcWJtZ3Zwam1kdGxuYm1lYm9wZnFmYmd6YnZnamx3YmhmcHRram9mLWBsbixvanVmZ2BicGZwZ2Jqb3pga2pvZ2RxZmJ3aXZnZGZ3a2xwZnZtandwbWZ1ZnFhcWxiZ2BsYnB3YGx1ZnFic3NvZmVqb2ZwYHpgb2ZwYGZtZnNvYm1wYG9qYGh0cWp3ZnJ2ZmZtc2pmYGZmbmJqb2VxYm5mbG9nZnFza2x3bG9qbmp3YGJga2ZganVqb3BgYm9mZm13ZnF3a2ZuZndrZnFmd2x2YGthbHZtZ3FsemJvYnBoZmd0a2xvZnBqbWBmcHdsYGgjbWJuZmViandra2ZicXdmbnN3emxlZWZxcGBsc2ZsdG1mZ25qZGt3Ym9hdm53a2ptaGFvbGxnYnFxYnpuYmlscXdxdnB3YGJtbG12bWpsbWBsdm13dWJvamdwd2xtZlB3em9mT2xkam1rYnNzemxgYHZxb2ZldzllcWZwa3J2andmZWpvbnBkcWJnZm1mZmdwdnFhYm1lamRrd2FicGpwa2x1ZnFidndsOHFsdndmLWt3bm9uantmZ2VqbWJvWmx2cSNwb2pnZndsc2pgYXFsdG1ib2xtZmdxYnRtcHNvandxZmJga1FqZGt3Z2J3ZnBuYnFga3J2bHdmZGxsZ3BPam1ocGdsdmF3YnB6bWB3a3ZuYWJvb2x0YGtqZmV6bHZ3a21sdWZvMjNzezhwZnF1ZnZtd2pva2JtZ3BAa2ZgaFBzYmBmcnZmcXppYm5mcGZydmJvd3RqYGYzLzMzM1B3YnF3c2JtZm9wbG1kcHFsdm1nZmpka3dwa2pld3RscXdrc2xwd3BvZmJncHRmZmhwYnVsamd3a2ZwZm5qb2Zwc29ibWZwbmJxd2Jvc2tic29ibXduYnFocHFid2Zwc29ienBgb2JqbnBib2Zwd2Z7d3Bwd2JxcHRxbG1kPyxrMD13a2ptZC1scWQsbnZvd2prZmJxZ1NsdGZxcHdibWd3bGhmbXBsb2pnK3dranBhcWptZHBranNwcHdiZWV3cWpmZ2Bib29wZXZvb3plYmB3cGJkZm13V2tqcCMsLC4uPWJnbmptZmR6c3dGdWZtdzI2c3s4Rm5iam93cXZmIWBxbHBwcHNmbXdhb2xkcGFseyE9bWx3ZmdvZmJ1ZmBram1icGp5ZnBkdmZwdz8sazc9cWxhbHdrZmJ1endxdmYvcGZ1Zm1kcWJtZ2Bxam5mcGpkbXBidGJxZmdibWBmc2ticGY9PyIuLmZtXFxWUCUgMDo4MTMzc3tcXG1ibmZvYndqbWZtaWx6Ymliey1id2psbXBuandrVi1QLSNrbG9ncHNmd2Zxam1namJtYnUhPWBrYmptcGBscWZgbG5mcGdsam1kc3FqbHFQa2JxZjI6OjNwcWxuYm1vanB3cGlic2JtZWJvb3B3cWpib2x0bWZxYmRxZmY/LGsxPWJhdnBmYm9mcXdsc2ZxYiEuLCxUYGJxZ3Bram9vcHdmYm5wU2tsd2x3cXZ3a2BvZmJtLXNrczxwYmptd25md2Jvb2x2anBuZmJtd3NxbGxlYXFqZmVxbHQhPWRmbXFmd3F2YGhvbGxocFVib3ZmRXFibmYtbWZ3LC4uPVx0P3dxeiN4XHR1YnEjbmJoZnBgbHB3cHNvYmptYmd2b3dydmZwd3dxYmptb2JhbHFrZm9zcGBidnBmbmJkamBubHdscXdrZmpxMTYzc3tvZmJwd3B3ZnNwQGx2bXdgbHZvZ2RvYnBwcGpnZnBldm1ncGtsd2ZvYnRicWdubHZ3a25sdWZwc2JxanBkanVmcGd2d2Brd2Z7YnBlcXZqd212b28vf39YXjh3bHMhPVx0PyIuLlNMUFchbGBmYm0/YXEsPWVvbGxxcHNmYmhnZnN3ayNwanlmYWJtaHBgYndga2BrYnF3MTNzezhib2pkbWdmYm9wdGx2b2c2M3N7OHZxbz4hc2JxaHBubHZwZk5scHcjLS0tPyxibmxtZGFxYmptYWxneiNtbG1mOGFicGZnYGJxcXpncWJld3FmZWZxc2JkZlxca2xuZi1uZndmcWdmb2J6Z3FmYm5zcWx1Zmlsam13Pyx3cT1ncXZkcD8iLi4jYnNxam9qZ2Zib2Jvb2ZtZntiYHdlbHF3a2BsZ2Zwb2xkamBVamZ0I3BmZm5wYW9ibWhzbHF3cCMrMTMzcGJ1ZmdcXG9qbWhkbGJvcGRxYm13ZHFmZmhrbG5mcHFqbWRwcWJ3ZmcwM3N7OHRrbHBmc2JxcGYrKjghI0FvbGBob2ptdntpbG1mcHNqe2ZvJCo4IT0qOGplKy5vZmV3Z2J1amdrbHFwZkVsYHZwcWJqcGZhbHtmcFdxYmBoZm5mbXc/LGZuPWFicSE9LXBxYD53bHRmcWJvdz4hYGJhb2ZrZm1xejE3c3s4cGZ3dnNqd2JvenBrYnFzbmptbHF3YnB3ZnRibXdwd2tqcC1xZnBmd3RrZmZvZGpxb3AsYHBwLDIzMyY4YG92YXBwd3ZlZWFqYW9mdWx3ZnAjMjMzM2hscWZifio4Dlx0YWJtZ3BydmZ2Zj4jeH44OzNzezhgaGptZHgOXHRcblxuYmtmYmdgb2xgaGpxanBrb2poZiNxYndqbHB3YndwRWxxbiF6YmtsbCpYM144QmFsdndlam1ncD8sazI9Z2ZhdmR3YnBocFZRTyM+YGZvb3B+KisqODIxc3s4c3FqbmZ3Zm9vcHd2cW1wM3s1MzMtaXNkIXBzYmptYWZiYGt3YntmcG5qYHFsYm1kZm8uLj0/LGRqZXdwcHdmdWYub2ptaGFsZ3otfio4XHRcbm5sdm13IysyOjpFQlI/LHFsZGZxZXFibWhAb2JwcDE7c3s4ZWZmZ3A/azI9P3BgbHd3d2Zwd3AxMXN7OGdxam1oKiN/fyNvZnRqcHBrYm9vIDMwOjgjZWxxI29sdWZndGJwd2YzM3N7OGliOQ9ucGpubG0/ZWxtd3Fmc296bmZmd3B2bXdmcWBrZmJzd2pka3dBcWJtZyojIj4jZ3FmcHBgb2pzcHFsbG5wbG1oZnpubGFqb25iam0tTWJuZiNzb2J3ZmV2bW16d3FmZnBgbG4sITItaXNkdG5sZ2ZzYnFiblBXQlFXb2ZldyNqZ2dmbS8jMTMyKjhcdH5cdGVscW4tdWpxdnBga2JqcXdxYm1wdGxxcHdTYmRmcGp3amxtc2J3YGs/Ii4uXHRsLmBiYGVqcW5wd2x2cXAvMzMzI2JwamJtaigoKnhiZ2xhZiQqWDNeamc+MjNhbHdrOG5mbXYjLTEtbmotc21kIWhmdWptYGxiYGtAa2pvZ2FxdmBmMS1pc2RWUU8qKC1pc2R/cHZqd2Zwb2pgZmticXF6MjEzISNwdGZmd3dxPQ5cdG1ibmY+Z2pmZGxzYmRmI3B0anBwLi49XHRcdCBlZWU4IT1PbGQtYGxuIXdxZmJ3cGtmZncqIyUlIzI3c3s4cG9mZnNtd2Ztd2Vqb2ZnaWI5D29qZz4hYE1ibmYhdGxxcGZwa2x3cC5hbHsuZ2Zvd2JcdCVvdzhhZmJxcDk3O1k/Z2J3Yi5xdnFibz8sYj0jcHNmbWdhYmhmcXBrbHNwPiMhIThza3MhPWB3amxtMjBzezhhcWpibWtmb29scGp5Zj5sPiYxRSNpbGptbmJ6YWY/am5kI2puZCE9LyNlaXBqbmQhIyEqWDNeTldsc0FXenNmIW1mdG96R2JtcGhgeWZga3dxYmpvaG1sdHA/LGs2PWViciE9eWsuYG0yMyo4XHQuMiEqOHd6c2Y+YW92ZnB3cXZvemdidWpwLWlwJDg9Dlx0PyJwd2ZmbyN6bHYjazE9Dlx0ZWxxbiNpZnB2cDIzMyYjbmZtdi0OXHRcbg5cdHRib2ZwcWpwaHB2bmZtd2dnam1kYS5vamh3ZmJga2RqZSEjdWZkYnBnYm1waGZmcHdqcGtyanNwdmxuanBsYXFmZ2ZwZ2ZmbXdxZndsZ2xwc3ZmZ2ZiL11scGZwdy9Nd2pmbWZrYnB3Ymx3cWxwc2Jxd2ZnbG1nZm12ZnVsa2JgZnFlbHFuYm5qcG5sbmZpbHFudm1nbGJydi9BZy9BYnBwL19vbGJ6dmdiZWZga2J3bGdicHdibXdsbmZtbHBnYndscGx3cWJwcGp3amxudmBrbGJrbHFib3ZkYnFuYnpscWZwd2xwa2xxYnB3Zm1mcWJtd2ZwZWx3bHBmcHdicHNiL0FwbXZmdWJwYm92Z2VscWxwbmZnamxydmpmbW5mcGZwc2xnZnFga2pvZnBmcS9NdWZgZnBnZmBqcWlscC9FZnB3YnF1Zm13YmRxdnNsa2Zga2xmb29scHdmbWRsYm5qZGxgbHBicG1qdWZvZGZtd2ZuanBuYmJqcWZwaXZvamx3Zm5icGtiYGpiZWJ1bHFpdm1qbG9qYXFmc3Ztd2xhdmZtbGJ2d2xxYmFxam9hdmZtYndme3dsbmJxeWxwYmFmcW9qcHdib3ZmZGxgL19ubGZtZnFsaXZmZGxzZnEvVmtiYWZxZnB3bHptdm1gYm52aWZxdWJvbHFldmZxYm9qYXFsZHZwd2JqZHZib3Vsd2xwYGJwbHBkdi9BYnN2ZmdscGxubHBidWpwbHZwd2ZnZ2ZhZm1tbGBrZmF2cGBiZWJvd2JmdnFscHBmcWpmZ2pga2xgdnFwbGBvYnVmYGJwYnBvZi9fbXNvYnlsb2JxZGxsYXFicHVqcHdiYnNsemxpdm13bHdxYndidWpwd2xgcWZicWBibnNsa2ZubHBgam1gbGBicWRsc2pwbHBscWdmbWtiYGZtL01xZmJnanBgbHNmZ3FsYGZxYGJzdmZnYnNic2ZvbmZtbHEvVndqb2BvYnFsaWxxZGZgYm9vZnNsbWZxd2JxZ2ZtYmdqZm5icWBicGpkdmZmb29icHBqZG9sYGxga2ZubHdscG5iZ3FmYG9icGZxZnB3bG1qL11scnZmZ2JzYnBicWFibWBsa2ppbHB1amJpZnNiYW9sL0Vwd2Z1amZtZnFmam1sZ2ZpYnFlbG1nbGBibWJvbWxxd2ZvZndxYmBidnBid2xuYnFuYm1scG92bWZwYnZ3bHB1am9vYnVmbWdsc2ZwYnF3anNscHdmbWRibmJxYGxvb2Z1YnNiZ3Fmdm1qZ2x1Ym5scHlsbWJwYm5hbHBhYm1nYm5icWpiYmF2cGxudmBrYnB2YWpxcWpsaWJ1anVqcWRxYmdsYGtqYGJib28vQWlsdWZtZ2pga2JmcHdibXdib2ZwcGJvanFwdmZvbHNmcGxwZWptZnBvb2JuYmF2cGBsL0Vwd2Jvb2ZkYm1mZHFsc29ieWJrdm5scXNiZGJxaXZtd2JnbGFvZmpwb2JwYWxvcGJhYi9dbGtiYW9ib3Zga2IvbXFmYmdqYGZtaXZkYnFtbHdicHVib29mYm9vL01gYnFkYmdsb2xxYmFiaWxmcHcvRWR2cHdsbmZtd2ZuYnFqbGVqcW5iYGxwd2xlamBrYnNvYndia2xkYnFicXdmcG9memZwYnJ2Zm9udnBmbGFicGZwc2xgbHBuandiZ2BqZm9sYGtqYGxuamZnbGRibWJxcGJtd2xmd2JzYmdmYWZwc29iemJxZmdmcHBqZndmYGxxd2ZgbHFmYmd2Z2JwZ2ZwZmx1amZpbGdmcGZiYmR2YnAlcnZsdzhnbG5iam1gbG5ubG1wd2J3dnBmdWZtd3BuYnB3ZnFwenB3Zm5iYHdqbG1hYm1tZnFxZm5sdWZwYHFsb292c2did2Zkb2xhYm9uZmdqdm5lam93ZnFtdm5hZnFga2JtZGZxZnB2b3dzdmFvamBwYHFmZm1ga2xscGZtbHFuYm93cWJ1Zm9qcHB2ZnBwbHZxYGZ3YnFkZndwc3FqbWRubGd2b2ZubGFqb2ZwdGp3YGtza2x3bHBhbHFnZnFxZmRqbG1qd3Bmb2VwbGBqYm9iYHdqdWZgbG92bm1xZmBscWdlbG9vbHR3andvZj1mandrZnFvZm1kd2tlYm5qb3plcWpmbWdvYnpsdndidndrbHFgcWZid2ZxZnVqZnRwdm5uZnFwZnF1ZnFzb2J6Zmdzb2J6ZnFme3NibWdzbG9qYHplbHFuYndnbHZhb2ZzbGptd3BwZnFqZnBzZnFwbG1vanVqbWRnZnBqZG1ubG13a3BlbHFgZnB2bWpydmZ0Zmpka3dzZmxzb2ZmbWZxZHptYnd2cWZwZmJxYGtlamR2cWZrYnVqbWRgdnB3bG5sZWVwZndvZnd3ZnF0am1nbHRwdmFuandxZm1nZnFkcWx2c3B2c29sYmdrZmJvd2tuZndrbGd1amdmbHBwYGtsbG9ldnd2cWZwa2JnbHRnZmFid2Z1Ym92ZnBMYWlmYHdsd2tmcXBxamRrd3BvZmJkdmZga3FsbmZwam5zb2ZtbHdqYGZwa2JxZmdmbWdqbWRwZmJwbG1xZnNscXdsbW9qbWZwcnZicWZhdnd3bG1qbmJkZnBmbWJhb2ZubHVqbWRvYndmcHd0am13ZnFFcWJtYGZzZnFqbGdwd3FsbWRxZnNmYndPbG1nbG1nZndiam9lbHFuZmdnZm5ibWdwZmB2cWZzYnBwZmd3bGRkb2Zzb2JgZnBnZnVqYGZwd2J3amBgandqZnBwd3FmYm56Zm9vbHRid3diYGhwd3FmZndlb2pka3dramdnZm1qbWVsIT1sc2ZtZmd2cGZldm91Ym9vZnpgYnZwZnBvZmJnZnFwZmBxZndwZmBsbWdnYm5iZGZwc2xxd3Bme2Bmc3dxYndqbWRwamRtZmd3a2ptZHBmZWVmYHdlamZvZ3Bwd2J3ZnBsZWVqYGZ1anB2Ym9mZ2p3bHF1bG92bmZRZnNscXdudnBmdm5ubHVqZnBzYnFmbXdiYGBmcHBubHB3b3pubHdrZnEhI2pnPiFuYnFoZndkcWx2bWdga2JtYGZwdnF1ZnphZmVscWZwem5hbG9ubG5mbXdwc2ZmYGtubHdqbG1qbXBqZ2ZuYnd3ZnFAZm13ZnFsYWlmYHdme2pwd3Buamdnb2ZGdnFsc2ZkcWx0d2tvZmRiYHpuYm1tZnFmbWx2ZGtgYnFmZnFibXB0ZnFscWpkam1zbHF3Ym9gb2pmbXdwZm9mYHdxYm1nbG5gb2xwZmd3bHNqYHBgbG5qbWRlYndrZnFsc3dqbG1wam5zb3pxYmpwZmdmcGBic2Zga2xwZm1ga3ZxYGtnZmVqbWZxZmJwbG1gbHFtZnFsdndzdnduZm5scXpqZXFibmZzbG9qYGZubGdmb3BNdm5hZnFndnFqbWRsZWVmcXBwd3pvZnBoam9vZmdvanB3ZmdgYm9vZmdwam91ZnFuYnFkam1nZm9md2ZhZnd3ZnFhcWx0cGZvam5qd3BEb2xhYm9wam1kb2Z0amdkZndgZm13ZnFhdmdkZndtbHRxYnNgcWZnandgb2JqbnBmbWRqbWZwYmVmd3pga2xqYGZwc2pxancucHd6b2Zwc3FmYmduYmhqbWRtZmZnZmdxdnBwamJzb2ZicGZme3dmbXdQYHFqc3dhcWxoZm1ib29sdHBga2JxZGZnanVqZ2ZlYmB3bHFuZm5hZnEuYWJwZmd3a2ZscXpgbG1lamRicWx2bWd0bHFoZmdrZm9zZmdAa3ZxYGtqbnNiYHdwa2x2b2dib3RienBvbGRsISNhbHd3bG5vanB3IT0qeHVicSNzcWZlantscWJtZGZLZmJnZnEtc3ZwaytgbHZzb2ZkYnFnZm1hcWpnZGZvYnZtYGtRZnVqZnR3YmhqbWR1anBqbG1vand3b2ZnYndqbWRBdnd3bG1hZmJ2d3p3a2ZuZnBlbHFkbHdQZmJxYGtibWBrbHFib25scHdvbGJnZmdAa2JtZGZxZnd2cW1wd3FqbWRxZm9sYmdObGFqb2ZqbWBsbmZwdnNzb3pQbHZxYGZscWdmcXB1amZ0ZmclbWFwczhgbHZxcGZCYWx2dyNqcG9ibWc/a3dubyNgbGxoamZtYm5mPiFibmJ5bG1ubGdmcW1iZ3VqYGZqbT8sYj05I1drZiNnamJvbGRrbHZwZnBBRkRKTSNOZntqYGxwd2Jxd3BgZm13cWZrZmpka3diZ2dqbWRKcG9ibWdicHBmd3BGbnNqcWZQYGtsbG9mZWVscXdnanFmYHdtZmJxb3puYm12Ym9QZm9mYHctXHRcdExtZmlsam1mZ25mbXYhPVNram9qc2J0YnFncGtibWdvZmpuc2xxd0xlZWpgZnFmZGJxZ3Boam9vcG1id2psbVBzbHF3cGdmZHFmZnRmZmhveiMrZi1kLWFma2ptZ2dsYHdscW9sZGRmZ3ZtandmZz8sYT0/LGFmZGptcHNvYm13cGJwcGpwd2Jxd2pwd2pwcHZmZzAzM3N7f2BibWJnYmJkZm1genBga2ZuZnFmbmJqbUFxYnlqb3BibnNvZm9sZGwhPWFmemxtZy5wYGJvZmJgYGZzd3BmcXVmZ25icWptZkVsbHdmcWBibmZxYj8sazI9XHRcXGVscW4hb2ZidWZwcHdxZnBwISMsPQ5cdC1kamUhI2xtb2xiZ29sYmdmcUx7ZWxxZ3BqcHdmcXB2cXVqdW9qcHdmbWVmbmJvZkdmcGpkbXBqeWY+IWJzc2Zib3dme3chPW9mdWZvcHdrYm1ocGtqZGtmcWVscWBmZ2Jtam5ib2JtemxtZkJlcWpgYmJkcWZmZ3FmYGZtd1NmbHNvZj9hcSMsPXRsbWdmcXNxamBmcHd2cW1mZ39/I3h+OG5iam0hPWptb2ptZnB2bWdienRxYnMhPWViam9mZ2BmbXB2cG5qbXZ3ZmFmYmBsbXJ2bHdmcDI2M3N7f2Zwd2J3ZnFmbmx3ZmZuYmpvIW9qbWhmZ3FqZGt3OHBqZG1ib2VscW5ibzIta3dub3BqZG12c3Nxam1gZmVvbGJ3OS1zbWQhI2VscXZuLUJgYGZwcHNic2ZxcHBsdm1ncGZ7d2ZtZ0tmamRrd3BvamdmcVZXRS47ISVibnM4I0FmZWxxZi0jVGp3a3B3dmdqbGx0bWZxcG5ibWJkZnNxbGVqd2lSdmZxemJtbXZib3NicWJucGFsdmRrd2Vibmx2cGRsbGRvZm9sbWRmcWooKCojeGpwcWJmb3BiemptZGdmYGpnZmtsbmYhPWtmYmdmcWZtcHZxZmFxYm1ga3NqZmBmcGFvbGBoOHB3YndmZ3dscyE9P3FiYGptZHFmcGp5Zi4uJWR3OHNiYGp3enBme3Zib2F2cWZidi1pc2QhIzIzLzMzM2xhd2JqbXdqd29mcGJubHZtdy8jSm1gLWBsbmZnem5mbXYhI296cWpgcHdsZ2J6LWptZ2ZmZ2Bsdm13elxcb2xkbC1FYm5qb3pvbGxoZmdOYnFoZndvcGYjamVTb2J6ZnF3dnFoZnoqOHVicSNlbHFmcHdkanVqbWRmcXFscXBHbG5iam1+Zm9wZnhqbXBmcXdBb2xkPyxlbGx3ZnFvbGRqbS1lYnB3ZnFiZGZtd3A/YWxneiMyM3N7IzNzcWJkbmJlcWpnYnppdm1qbHFnbG9vYnFzb2JgZmdgbHVmcXBzb3Zkam02LzMzMyNzYmRmIT1hbHB3bG0td2ZwdytidWJ3YnF3ZnB3ZmdcXGBsdm13ZWxxdm5wcGBrZm5iam1nZnsvZWpvb2ZncGticWZwcWZiZ2ZxYm9mcXcrYnNzZmJxUHZhbmp3b2ptZiE9YWxneiE9XHQpI1drZldrbHZka3BmZmptZGlmcXBmek1mdHA/LHVmcWplemZ7c2Zxd2ptaXZxenRqZ3drPkBsbGhqZlBXQlFXI2JgcWxwcFxcam5iZGZ3a3FmYmdtYndqdWZzbGBoZndhbHshPVx0UHpwd2ZuI0didWpnYGJtYGZxd2Jhb2Zwc3FsdWZnQnNxam8jcWZib296Z3FqdWZxandmbiE9bmxxZiE9YWxicWdwYGxvbHFwYGJuc3ZwZWpxcHcjf38jWF44bmZnamItZHZqd2JxZWptanBrdGpnd2s5cGtsdGZnTHdrZnEjLXNrcyEjYnBwdm5mb2J6ZnFwdGpvcGxtcHdscWZwcWZvamZlcHRmZ2ZtQHZwd2xuZmJwam96I3psdnEjUHdxam1kXHRcdFRram93YnpvbHFgb2ZicTlxZnBscXdlcWZtYGt3a2x2ZGshKiMoIyE/YWxnej1hdnpqbWRhcWJtZ3BOZm5hZnFtYm5mIT1sc3NqbWRwZmB3bHE2c3s4IT11cHNiYGZzbHB3ZnFuYmlscSNgbGVlZmZuYnF3am1uYnd2cWZrYnNzZm0/LG1idT1oYm1wYnBvam1oIT1KbmJkZnA+ZWJvcGZ0a2pvZiNrcHNiYGYzJWJuczgjXHRcdEptIyNzbHRmcVNsb3Boai5gbG9scWlscWdibUFsd3dsblB3YnF3Iy5gbHZtdzEta3dub21mdHAhPTMyLWlzZExtb2ptZi5xamRrd25qb29mcXBmbWpscUpQQU0jMzMvMzMzI2R2amdmcHVib3ZmKmZgd2psbXFmc2JqcS17bm8hIyNxamRrd3Ata3duby5hb2xgaHFmZEZ7czlrbHVmcXRqd2tqbXVqcWRqbXNrbG1mcD8sd3E9DnZwam1kI1x0XG51YnEjPSQqOFx0XG4/LHdnPVx0Pyx3cT1cdGFia2JwYmFxYnBqb2Rib2ZkbG5iZHpicXNsb3BoanBxc3BoajRdNEM1ZFxiVEFcbnprXHZCbFxiUX9cdlVtBUd4XGJTTVxubUNcYlRBXHR3UVxuZH1cYldAXGJUbFxiVEZcdGlAXHRjVFx2Qk1cdnxqBEJWXHRxd1x0Y0NcYldJXG5wYVx0Zk1cbntaBXtYXGJURlxiVlZcYlZLXHR/bQRrRlx0W11cYlBtXGJUdlxuc0lcdnBnXHRbSVxiUXAEbXhcdl9XXG5eTVxucGVcdlF9XHZHdVxuZWxcbnBlBENoBEJWXGJUQVx0U29cbnprXHZHTFx2eERcbmRbBUp6BU1ZXGJRcARsaVxuZmxcbnBDBXtCBU50XHZ3VFx0aV9cYlRnBFFRXG58cFx2WE5cYlFTXHZ4RARRQ1xiV1pcdHBEXHZWU1xiVFcFTnQEWWhcbnp1BEtqBU59XHR3clx0SGFcbl9EXHRqYFx2UX1cdldwXG54WgR7Y1x0amlcdEJVXG5iRARhfFx0VG5cdHBWXG5aZFxubUNcdkVWBXtYXHRjfVx0VG9cYldsXGJVZFx0SVFcdGNnXHZ4c1xuWFdcdHdSXHZla1x0Y31cdF15XHRKblxucnBcbmVnXG5wVlxuelxcBXtXXG5wbFxuelxcXG56VVx0UGNcdGB7XGJWQFxuY3xcYlJ3XHRpX1xiVmJcbndYXHRIdgRTdVxiVEZcdl9XXHZXc1x2c0kFbX9cblRUXG5kY1x0VVNcdH1mXHRpWlxiV3pcdGN9BE1EXHRCZVx0aURcdkBAXGJUbFxiUHZcdH10BFN3BE1gXHZuVVx0a1dcdmVkXG5xb1x2eFlcdEF8XGJUelx2eWAEQlIEQk1cdGlhBFhVXG55dQRuXlx0ZkxcdGlJXG5YV1x0ZkRcYld6XGJXQFx0eWpcdH9tXHRhdlx0Qk5cdmJcXFx0cERcYlRmXG5ZW1x0Sm5cYlF5XHRbXlx2V2Ncdnl1BERsBENKXHZXalx2SFJcdGBWXHZ1V1x0UXlcbnBAXHZHdQVwbARKbVxiV1tcbkxQXG54Q1xuYG1cdHdRBXVpBX9SXG5iSVx0d1FcdEJaXHRXVgRCUlxucGdcdGNnBXRpBENXXG5feVx0UmdcYlFhXHZRQlx2V2NcblliBWxlXG5nRQRTdVxuTFtcdFF/XHRlYVx0ZGpcdl1XXG5ifgRNYFx0d0xcYlRWXGJWSFxudH9cbnBsXHR8YgVzX1xiVXxcYlRhBG9RBWx2BFNrBE1gXGJUdlx2S31cbmZsXHRjQwRvUQRCUlx0SGtcdHxkXGJRcFx0SEtcdEJaXHZIUlxiUHZcdkx4XHZFWlxiVH9cYlR2XHRpRAVvRAVNVVx2d0IEU3UFa2AEU3RcbnRDXHRQbFx0S2dcbm9pXHRqWVx2eFkEaH1cbnprXGJXWlx0f21cdmVgXHRUQlx0ZkVcbnprXHRgegRZaFxuVnxcdEhLXHRBSlx0QUpcYlVMXHRwXFxcdHFsXG5ZYwRLZFxuZnkEWWhcdFtJXHZEZwRKbVxuXW5cbmxiXGJVZFxue1pcdGx1XHRmcwRvUVxiVFcESm1cdndCXHRlYQRZaARCQ1x0c2JcdFRuXG56VVxuX3lcdnhZXHRRXVxuZ3cEbXRcdE9cXFxudGJcYldXXGJReVx0bUlcdFZbXG55XFxcbmFCXHZSYlx0d1Fcbl1RBFFKXGJXZ1x2V2FcYlFqXG50Q1xiVkhcblltXHZ4c1xiVktcbmVsXGJXSVx2eFkEQ3FcbnRSXHZIVlxiVGxcYlZ3XHRheVxiUWFcYlZWXHR9dFx0ZGpcbnJ8XHRwXFxcdHdSXG57aVxuVFRcdFtJXHRpW1x0QUpcdnhzXHZfV1x0ZHtcdlF9XHRjZ1x0VHpcdEF8XHRDalx2TG0FTn0FbX9cbmJLXHRkWlx0cFxcXHRgVlx0c1ZcbnBAXHRpRFx0d1FcdlF9XGJUZgVrYQRKbVx2QEBcYlZgXHR6cFxuQE4EU3dcdGlJXHRjZ1xub2kEU3VcYlZ3BGxvBEN5XHRjfVx2YlxcXHRzVQRCQVxiV0lcYlRmXG54U1x0VnBcbmR8XGJUVlx2YkNcdE5vBUp1XG5UQ1x0fGBcbntaXHREXVxiVXxcdGN9BWxtXGJUbFx0QnZcdFBsXHRjfVxiUXBcdH9tXG5Ma1x0a2pcbkBOBFNiBEtPXHRqX1x0cFxcXG56VVxiVGxcYlRnXGJXSVx0Y2YEWE9cYldXXG5kegRsaVx0Qk5cbmRbXGJXTwRNRFx2S0NcdGRqXHRJX1xiVlZcbnlcXFx2TG0FeGxcdHhCXHRrVlx2YlxcXHZKV1x2VlNcdFZ4XHZ4RFx0ZHsETURcYlRhXHR8YFx2UHoEUn1cdldzBEJNXG5zSQRDTlxiVGEESm1cbnBlXHRpX1xucFZcbnJoXHRSZFx0SHZcbn5BXG54Ulx2V2hcdldrXG54U1x2QXpcdndYXG5iSQRvUVx0ZndcbnFJXG5WfFxudW4Fen9cdnBnXHRkXFxcdm9BBXtEXHRpXwV4QlxiVH9cdGBWBXFyXHRUVARnXQRDQVx2dVJcdFZKXHRUYFxucHdcdlJiXHRJX1xuQ3gEUm9cdnNJBENqBEtoXHRCdlx0V1YEQkIFb0QFe0RcbmhjBEttXHZeUlx0UUVcbntJXG5wQFxuY3wFR3RcdGN9BERsXG56VQVxTlx0c1YFa31cdEhoXHZ8alxucW8FdXxcdFFdXHZlawV/WgRNYARTdFxucGVcdGRqXGJWR1x2ZUVcdH9tXHZXYwR8SVxuW1dcdGZMXGJUf1x0QloEU3VcdkthBENxBU50BFlbXG5xSVxiVHZcdGZNXHRpQFx0fWYEQlxcXHRReVx2QmxcYldnBFhEBWtjXHZ4W1xiVlZcdFFdXHR/YVx0UHlcdnhEXG5mSVx0fWYFb0RcdGRqXHRTRwVsc1x0fkQEQ05cbntaXHRcXHZcbl9EXG5oY1x2eF8EQ1tcdEFKXG5MTVx0VngEQ0lcdGJqXHRjXlx0Y0ZcbnRDBFN4XHR3cgRYQVxiVVxcXHR8YVx2S1xcXGJUVlxiVmpcbmR8XHRmcwRDWFxudGJcYlJ3XHRWeFx0QUVcdEF8XGJUfwVOdFx2RGdcdFZjXGJUbARkQFxucG9cdH9NXHRjRlxucGVcdGlaXHRCb1xiU3FcbmZIBGxgXGJUeFxiV2ZcdEhFXHZGe1x0Y09cdGZEXG5sbVx2ZlpcbmxtXHZlVVx0ZEcEQkhcYlRWXHRTaQVNV1xud1hcbnpcXFx0XFxjBENYXG5kfVx0bH1cYlFwXGJUVlx0Rn5cYlF/XHRgaVxuZ0AFbk9cYlVkXGJUbFxuTFtcdHdRXHRqaVxudENcdHxKXG5MVVxuYUJcdnhZBEtqXHRBSgV1Tlx0aVtcbnBlBFNrXHZEZ1x2eF1cYlZiXGJWVlxuZWFcdGtWXG5xSVxiVGEEU2tcbkFPXHRwRFxudGJcbnRzXG55aVxiVmdcdGlfXHZfV1xuTGsFTnRcdHlqXHRmTQRSf1x0aUlcYlRsXHZ3WFx0c1Zcdk1sXG55dVx0QUpcYlZqBEtPXHRXVlx2QX1cdld/XG5ycFx0aURcdnxvBWx2XHZzSQRCTVx0ZH5cdENVXGJWYgRlVlxucENcdndUXHRqYFx0Y31cdnhzXHZwc1x2dmhcdFdWXHZHZ1x2QWVcdlZLXHZdV1x0cmdcdldjBUZgXHRCclx2YlxcXHRkWlxiUXBcbnFJBGtGXG5Ma1x2QVJcYldJXGJUZ1x0YnNcdGR3XG57TFxuX3lcdGlaXGJUQVx0bGdcYlZWXGJUbFx0ZGtcbmBrXHRhe1x0aV8Fe0EFd2pcdHdOXHZAQFxiVGVcdGlfXG5fRFx0d0xcbkFIXHZpS1x2ZWtcbltdXHRwX1x0eWpcYlR2XHRVU1x0W3JcbntJXG5wcwVHdFx2VktcbnBsBFN9XHZXUFx0fGQETURcdkhWXGJUfwRSfQRNYFxiVFZcYlZIBWx2BENoXGJXWwRLZVx0Untcdl5SXHRhYlx0QlpcdFZBXHRCYFxuZHxcbmhzBEtlXHRCZQRPaVx0UntcdGRcXAVuQlxiV1pcdGRaXHRWSgVPc1x0f20EdVFcdmhaBFFABFFRXG5mSVxiV1sEQlxcBGxpXG56VVxuTWQETWBcbnhTXGJWVlxuXFx9XHZ4RFx0f21cYlRwBElTXG5jfFx0a1YFaX5cdFZ7XHZoWlx0fGJcYld0XG5AUlx2b0Fcdm5VXGJXSVx0ZWFcdEJgXHRpRFx0Y31cdFR6BEJSXHZRQgVOalx0Q1BcdFtJXGJUdlx0YFcFdU5cdnBnXHZwZ1x2V2NcdGlUXHRic1x0d0xcdFVfXHRjXFxcdHxoXHZLYVx0TnJcdGZMXG5xfFxuenVcbnpcXFx0TnJcYlVnXHR8YgRtYFxiVHZcbnlkXG5ycFxiV2ZcdFVYBEJWXG56a1xuZH1cdHdRXHR9ZgRDZVx2ZWRcYlRXXGJTQlxueFVcdGNuXGJUYlxuZX9cdGFcXFx0U0dcYlV8XG5wVlxuTlxcBEtuXHZuVVx0QXRcdHBEXHZeUlx2SXIEYltcdFJ7XHRkRVx2eERcdldLXHZXQVxiUUxcYldABFN1XGJVZFxuRE1cdFBjBENBBERsBG9RXHRIcwV3aQR1Ylxuf2FcYlFwBU9iXG5MUFxiVGwEWVtcdkt9XHRBSlxiUX8Ebl5cdnNBXGJTTVxucU1cYldaXG5eV1x2ensEU3xcdGZEXGJWS1xiVHZcYlB2BEJCXHRDUARkRlx0aWRcdnhzBG14XHZ3c1x0Y0NcbnRDXHR5YwVNYFx2V39cbnJoXGJRcFx2eEQEXFxvXG5zSQRfa1xuenUEa0ZcdGZEBFhzBFhPXHRqcFxiVHYEQlMFe0JcdEJyXG56UVxuYklcdGN7BEJEBEJWBW5PXGJURlx0Y2EFSmRcdGZMXHRQVlx0SV9cbmxLBGBvXHR3WFxucGFcdGd1XGJQfQV7XlxiV2ZcbntJXHRCTlxucGEES2xcdnBnXHRjblx0ZkxcdnZoBENxXGJUbFx2blVcYlNxBENtXHR3UlxiVUpcbnBlXG55ZFxuWWcEQ3lcdktXXHRmRFxuZWEEb1FcdGpfXHRCdgRuTVx2SURcYlRhXG56QQVwbFxuXW5cYlRhXHRSe1x0ZnJcbl95XGJVZwV7WAVra1x2eEQEfEkFeGxcbmZ5BENlXHZ3QlxuTGtcdmRdXG5vaVxufWhcdFFdXG5wZVxiVncESGsET1FcbnprXHRBSlxucFZcYlB2XG55XFxcdEF7BE9pXGJTQgRYQVx2ZUVcdGpwXG5xfVx0aUQFcU5cdl5SXHR/bVx0aVpcdEJyXGJWZ1xub2lcblxcWFx0VV9cbmN8XHZIVlxiVGZcdFRuBFxcTgRcXE5cbnVCBWx2XG55dVx0VGRcYlRmXGJQTFx2XVdcdGRHXG5BYFxud15cbmdJXG5wZVx0ZHdcbnpcXAVpYVxiV1pcdGNGBEptXG57WlxiV08EX2sERGYEUlJcdGRcXFxiVlZcdnhzBEJOBXRpBGxtXHRUZFx0XXlcdkhWXHRTb1x2fGoEWFhcdEF8XHZaXlx2R3VcYlRXBU1gBGtGXHZoWlx2VktcdGRHXHZCbFx0YXlcbnhVBXFFBW5PXGJWd1xucUkEQ1hcbmV/XHRQbFxiV09cdkxtXHRkTAV1SARDbVx0ZFQEZm5cdndCBWthXHZuVVxuQE1cbnlUXHRIdlx0XFx9BEtoXHRkfgRZaAVrfVxuZVJcdGRcXFxiV0lcdHxiXHRIS1x0aURcYlRXBU1ZXG5wbFxiUV9cdHdyXHZBeFx0SEVcYlRnXGJTcQV2cFx2YlxcXGJXT1xuT2xcbnNJXG5meVx2SURcdFxcY1xue1pcbl5+XG5wZVxuQU9cdFRUXHZ4dgRrX1xiV09cdnxqXHZ3Qlx0UXlcdGlAXHRQbFx0SGFcdGRaBWt9BHJhXHRVVFx2SmNcdmVkXG5wQFx0UU5cbmR8XHRralx0SGsETWBcbm9pXHR3clx0ZFxcXG5scVxub19cbmxiXG5MW1x0YWMEQkIEQkgEQ21cbnBsXHRJUVxiVktcdnhzXG5gZVx2aUtcbnBhBE9pXHRVU1xiVHBcdGZEXG5QRwVrawRYQVxuelxcXG5lZ1x2V2hcdHdSBXFOXG5xU1x0Y24EbG9cbnhTXG5eV1x0QlVcbnR/XHRIRVx0cFxcXHRmRlx0ZndcYlZWXGJXQFx0YWtcdlZLBWxzXHRWSlxiVlZcdmVFBFxcb1xueVhcblltBE1gBWxMXG5kfFxuemtcdEF7BXNFXHR3UQRYVFxudH9cdFBsXHRdeVx2d1QFe3AETURcdmJcXFx0UV0ES2pcdEpuXG5BSFx2UmJcdEJVXHRIS1x0XFxjXG5mSQVtf1xucU1cbkBSXHRTb1xub2kEQlRcdEh2XG5feQRLaFx0QlpcdF1pXGJVSlx0VnsEU3JcbmJJXHZHZ1x0YV9cYlRSXG5mSVxuZmxcdFtLXHRJSQRTfFx2dVdcdGlJXGJXSVxucUlcdnxqBEJWXGJWZ1xiV1oEa0ZcdnhdXGJUQVx0YWJcdGZyXHRpQFx0SmRcdEpkXHZwc1xuQU9cYlRhBXh1XHRpRFxuemtcdHxkXHR8YFxiV1tcdGxQXHRkR1xiVlZcdnd9XHZxT1x0aVtcYlF/XGJUelx2VkZcdHdOBXRzXHRkd1xiVHZcbmVTXG5naVx0TnIFeVNcbnBlXGJWVlxiU3FcbmBtXHR5alx0QlpcdldYXGJTQlx0Y1xcXG5VUlx0W0pcdGNfBG5NXGJXUVx2QXhcbk1kXHRCcgV1aVx2eFlcYlNNXHZXY1x2fGpcdnhzXHR9UVx0Qk9cYlBMXGJXV1x0Zk1cbkFPXHRQY1x2ZVUEZV5cYlRnXG5xSVx0YWNcYlB2XHRjRgRvUVx0UX9cdmhaBWthXG56XFxcdGlLXHRCVVxuYGtcdENQBFN8BE1gXG57SVx0U3sEX09cdEJaBFppBFNrXHRwc1x0cFxcXG5ZdVxuXXNcbnhDXGJXdFxuYkRcdGtWXHZHdQV5U1xucUFcdFtyXG5lSwRNYFx0ZFoFbExcYlVnXGJUbFxuYkRcdFVTXHZiXFxcdHBWXG5jYwRTXFxcdGN0XHRgelxiUExcdldzXG5BYFxuZWdcYlNxBXVFBENSXHZEZ1x0YFdcdnp7XHZXYwRTawRTa1x0YldcYlVnXHRlYVxueFpcdGlJXHRVWFx0VkpcbnFuXHRTe1x2UmJcYlRRXG5wbAVHdFx2dVcFdWpcbnBGXG5xSVx0ZkxcdFtJXHRpYQRYT1xueXVcdkRnXHZlZFx0cXsEVkdcYlF/BWthXHRWalx0a1ZcdHhCXG5kfFxucEBcdFFOXHRQY1x0cHMEXWpcdGtWXHRvVVxiVHBcbnpVBW5CXHZCXVx0YXtcYlZAXG5dbgRtYFx0Y3pcdFJ7BG1gXGJRYVx2d1RcYlNNBU1ZBXFOXHRkagV+c1x2UX0FTVlcdk1CXHRCdlx0d1JcYlJnXHZRfVx0cWxcdktDXG5ybQV4dQRDQ1x2d0JcdnZoXHRCcQRYcVxucFZcdGlfBU9iBXVFXG5iZFxucW9cdntpXG5Dflx0QkxcdmVFBXVIXGJWagRFeQRHelx2elJcdntpXHRjZlxue1pcbl1uBFhBXHZHdVx2blVcdGhTXHZHSVxuQ2NcdEhFXGJUQVx0SEIEQkgEQ2pcbkNjXGJURlx0SEVcblhJXHRBe1xiUX9cdGNcXFx2bU9cdldYXG5mSFxucEAFTVlcYlRGXG5sS1x0QnRcbnpVXHRUVARLbVx2d1RcbnBWXG5kdFx2eUlcdFZ4XHRRf1x0UmdcdFRkXG56VVxiUlNcbkxNXHR3QQRuTVx0VG5cbmRTXHRdZ1xuTGNcdndCXHR9dFx0W0lcdENQBGtYXHZGbVx2aFoFbX9cdGlbXG5wQFx2UX1cdld/XHR8ZFxuTU9cbk1kXHRmX1x0ZkRcdGNKXHRIelx2UmJcdGlvXHRQeQRZW1xueFVcdGN0XHZAQFx0d3dcYlB2BEJNBEZGXG50YgV2fFx2S21cdEJxXHRCcQRLaARgb1xuWmQEWFVcdGldXHR8YFx0U3QEQlxcXGJRf1x2X1dcdFRKXG5xSVx0fGFcdEF7XHZ1UARNRFx0UGxcbnhSXHRmTFx2d3NcdGN7XHRkXFxcYlZgXG5lZ1x0SEsFa2NcbmR8XGJWVlxueVxcBWtjXHRpXVxiVkdcdGBWXHRzc1x0SV9cdEFFXHRic1x0ZHVcbmVsXHRwRFx2V39cbnFzBWx2XGJTTQRaaVx2VksFaWFcdlFCXHRRf1xue1pcYlB0XHZLbFxubEtcbmhzXG5kU1xiVksFbWZcbmReXHRrVlx0Y09cbmN8XGJWSFx0XFxdXGJUdlxiU3FcdG1JXHZEZ1x0VkpcdGNuXG55XFxcYlZnXGJUdlxueVhcYlRGXHRdXVxiVHBcbm9pXG5oc1x2ZVVcbkJmXHRkagVNclxufHBcdFxcZ1x0XXJcYlZiBXtEXG5kWwRYTlx0Zk1cdE9cXAVzX1x0Y2ZcdGlaBFhOXHZXY1x0cXZcbmBtXHRVXgVvRFxuZHxcdkdnXHRkRVx2d2YEbG8EdX1cbmR8BW9RXHRgaQRPaVx2eERcbmRaXG5DeARZd1xuemtcbnRiXG5nd1x0eWpcdEJgXG55WFx2cHNcbnRDXHZwUFx2cXdcYlB1XGJQWFx0RG1cbnB3BU5qXHRzc1x0YUdcdnhzXGJQdFxub0wER3pcdE9rXHRpQFx0aV0EZUNcdElRXHRpaVx0ZGpcdkBKXHR8ZAV1aFxiV1pcdmVVXHZuVVxiVGFcdGNDBGddXG56awRZaFxiVktcbkxVXG5wQFxudGJcbnRSXHRDalx2TlBcdGlAXGJQe1xuXFx9XG57Y1xud1hcdGZMXGJWR1x0Y3tcdHxgXHRBSlx0fENcdGZEBWxuXHR8ZFx0YnNcbnFJBXtCXHZBeFxucEBcbnprXHZSYgVPc1x2V1MEZV5cdkRfXHRCdlx2V2RcYlZiXHZ4c1x2ZUVcYlJ3XG5dblxufHBcdmd8XHRmdwVrY1xiVEkFa2FcblxcVARTcFx0anVcdnBzXG5wZQV1fFx2R3JcYlZlXHRDVQRdTQRYVVx2eERcYlRhXHRJUVx2V3FcdENVXHRhbVx0ZGpcYlNvBFN3XHZuVQRDaFx0UV0Fc19cYlB0XHRmU1xiVGFcdFxcfVxuQE8EWWNcdFVaXGJUeFxucGVcdm5VXG56VVx0fH1cdGlEXG56XFxcYlNNXHZ4RARCUlxuelFcdFFOBF1NBFloXG5MUFx2Rm1cdkxYBXZjXHZxbAVrYVx0SEtcYlZiXG50Q1xuQ3lcYlR2XG51VgRvUVx0YHpcdFtJXHRCYFx2UmJcdHlqXHRzYlx2V3NcYlRsXHRrVlx2ZWRcbmV/BWxMXHZ4Tlx0f21cbkpuXHRqWVx2eERcYlZiXGJTcVx2eXVcdHdMXHZYTFxiVEFcdHBnXHRBdFx0bkQEWFhcdHdSXG5wbFxuaHcFeVNcbnBzXHRjT1xiV1tcdnxqBFhOXHRzVlx0cFxcXHRCZVxuYn5cbkFKXG5dZQVrYAVxTlx0ZHdcdFdWXHRIRVx2RVYFSnpcdGlkXHRCYFx0emgFRV1cdGZEXGJUZwVxTlxiVGFcdGphBEN2XGJTTVxuaGNcYlVlBXRfXHRpZQRnXVx0d1FcblBuXGJWQlx0andcYlZnXHZiRVx0QlpcdlJIXGJQe1x0anBcblxcfVx0YV9cdGNDXHR8YVx2RF1cdEJaXHRpW1x0ZkRcdnhXXG5vX1x0ZFxcXG5fRFxudGJcdFxcY1x0QUpcbmxLBG9RBGxvXHZMeFx2TUBcYldaBEtuXHZwZ1xuVGlcbkl2XG58clx2QH0FSnoFTG0FV2gFa30FbG5cdnhEXG5dcwRnY1x2cHNcdEJyXGJUV1x2Qk0FdFpcbkJZBERXXHRqZlx2U1cEQ31cbnFvXHRkRVx0bXZcdElRXGJQUFxiVWIFbHYEQkNcbnpRXHRbSVx2Z2xcbmlnXGJVcwRCVFx2YkNcYlNxXHRzVVx0aVdcbkpuXHRTWVx0SEtcdHJnXG5wVlx2SURcdnxqBEtPXHRgU1x0fGFgdmJtZ2xmbXVqYnFuYmdxamdhdnBgYnFqbWpgamx3amZuc2xzbHFydmZgdmZtd2JmcHdiZ2xzdmZnZm1pdmZkbHBgbG13cWJmcHcvTW1tbG5hcWZ3amZtZm1zZnFlam9uYm1mcWJibmpkbHBganZnYmdgZm13cWxidm1ydmZzdmZnZnBnZm13cWxzcWpuZnFzcWZgamxwZmQvVm1hdmZtbHB1bG91ZnFzdm13bHBwZm5ibWJrYmEvQWJiZGxwd2xtdmZ1bHB2bWpnbHBgYnFvbHBmcnZqc2xtai9dbHBudmBrbHBib2R2bWJgbHFxZmxqbmJkZm1zYnF3anFicXFqYWJuYnEvQWJrbG5hcWZmbnNvZmx1ZnFnYmdgYm5hamxudmBrYnBldmZxbG1zYnBiZ2xvL0FtZmJzYnFmYGZtdmZ1YnBgdnFwbHBmcHdiYWJydmpmcWxvamFxbHBgdmJtd2xiYGBmcGxuamR2Zm91YnFqbHBgdmJ3cWx3amZtZnBkcXZzbHBwZnEvTW1mdnFsc2JuZmdqbHBlcWZtd2ZiYGZxYGJnZm4vTXBsZWZxd2JgbGBrZnBubGdmb2xqd2JvamJvZndxYnBib2QvVm1gbG5zcWJgdmJvZnBme2pwd2ZgdmZxc2xwamZtZ2xzcWZtcGJvb2ZkYnF1amJpZnBnam1mcWxudnFgamJzbGdxL01zdmZwd2xnamJxamxzdmZhb2xydmpmcWZuYm12Zm9zcWxzamxgcWpwanBgamZxd2xwZmR2cWxudmZxd2ZldmZtd2ZgZnFxYnFkcWJtZ2ZmZWZgd2xzYnF3ZnBuZmdqZ2JzcWxzamJsZXFmYGZ3amZxcWJmLm5iam91YnFqYnBlbHFuYnBldnd2cWxsYWlmd2xwZmR2anFxamZwZGxtbHFuYnBuanBubHAvVm1qYGxgYm5qbWxwandqbHBxYnkvX21nZmFqZ2xzcXZmYWJ3bG9mZ2x3Zm0vQWJpZnAvVnBmcHNmcWxgbGBqbWJscWpkZm13amZtZ2JgamZtd2xgL01nanlrYmFvYnFwZnEvQWJvYndqbWJldmZxeWJmcHdqb2xkdmZxcWJmbXdxYnEvRXtqd2xvL19zZnliZGZtZ2J1L0FnZmxmdWp3YnFzYmRqbWJuZndxbHBpYnVqZnFzYmdxZnBlL01gam9gYmFmeWIvTXFmYnBwYm9qZ2JmbXUvQWxpYnMvX21iYXZwbHBhamZtZnB3Znt3bHBvb2Z1YnFzdmZnYm1ldmZxd2ZgbG4vVm1gb2JwZnBrdm5ibWx3Zm1qZ2xham9hYmx2bWpnYmdmcHcvTXBmZ2p3YnFgcWZiZ2w8WDxXPWM9az1uPFI8VjxcXDxWPFQ8VzxUPWE9bjxSPF49bTxZPFk8XzxSPFM9bDxUPW48XFw8VjxZPWU8WT1vPFo8WTx2PFxcPFY8XTxZPFs8XT1nPFc8UjxRPFQ8fj1tPFk8UzxSPFg8QT1uPFI9bjxSPFA9azxZPFA8UTxZPW48VzxZPW49bDxcXDxbPFI8UTxcXDxfPFg8WTxQPFE8WTx4PFc9YzxzPWw8VDxRPFxcPW08UTxUPWk9bjxZPFA8Vj1uPFI8XzxSPFg8XjxSPW49bjxcXDxQPE08RDx8PFA8XFw9YzxLPW48UjxePFxcPW08XjxcXDxQPFk8UD1vPE48XFw8VjxYPF48XFw8UTxcXDxQPWE9bjxUPWE9bj1vPH48XFw8UD1uPFk9aTxTPWw8Uj1uPW89bjxRPFxcPFg8WDxRPWM8fjxSPW49bj1sPFQ8UTxZPFU8fjxcXD1tPFE8VDxQPW08XFw8UD1uPFI9bj1sPW88XTxyPFE8VDxQPFQ9bDxRPFk8WTxyPHI8cjxXPFQ9aj1hPW48XFw8cjxRPFxcPFE8WTxQPFg8UjxQPFA8UjxVPFg8XjxZPFI8UTxSPW09bzxYXGZIeVxmSWtcZkhVXGZJZFxmSHlcZklsXGZIVFxmSWtcZkh5XGZIUlxmSHlcZklnXGZIeFxmSFxcXGZIRlxmSFxcXGZIRFxmSWtcZkhjXGZIeVxmSHlcZkhTXGZIQVxmSWxcZkhrXGZIVFxmSHlcZkhcXFxmSEhcZklnXGZIVVxmSWdcZkhqXGZIRlxmSFVcZklsXGZIQ1xmSFVcZkhDXGZIUlxmSEhcZkh5XGZISVxmSFJpYmRxYm1cZkhqXGZIcFxmSHBcZklnXGZIaVxmSEBcZkhKXGZJZ1xmSHtcZkhkXGZIcFxmSFJcZkh7XGZIY1xmSFVcZkhCXGZIa1xmSERcZkhZXGZIVVxmSENcZklrXGZISVxmSWtcZkhJXGZJbFxmSHRcZkhcXFxmSHBcZkhAXGZISlxmSWxcZkh5XGZIZFxmSHBcZklsXGZIWVxmSWtcZkhEXGZIZFxmSERcZkhjXGZIVVxmSFxcXGZIZVxmSFRcZkhCXGZJa1xmSHlcZkhCXGZIWVxmSWdcZkheXGZJa1xmSFRcZkhAXGZIQlxmSGRcZkhKXGZJa1xmSH9cZkhcXFxmSGpcZkhCXGZIQFxmSFRcZkhBXGZIXFxcZkhAXGZIRFxmSHZcZkheXGZIQlxmSERcZkhqXGZIe1xmSFRcZklsXGZIXlxmSWw0VTVoNWU0STVoNWU1azRcXDRLNE40QjRdNFU0QzRDNEs1aDVlNWs0XFw1azRZNWQ0XTRWNWY0XTVvNEs1ajVkNWg0SzRENWY1ajRVNF00WjRcXDVoNW81azVqNEs1ZjVkNWk1bjRLNWg0VTVoNWY0SzVqNEs1aDVvNWo0QTRGNWU1bjRENWg1ZDRBNEU0SzRCNF01bTVuNFs0VTRENEM0XTVvNWo0STRcXDRLNW81aTRLNEs0QTRDNEk1aDRLNW01ZjVrNEQ0VTRaNW81ZjVtNEQ0QTRHNWQ1aTVqNWQ1azVkNE81ajRLNEA0QzRLNWg1azRLNF81aDVpNFU1ajRDNWg1ZjRfNFU0RDRdNFk1aDVlNWk1ajRcXDRENWs0SzRPNWo1azVpNEc1aDVvNWo0RjRLNWg0SzRBNWY0RzVpNFk0XTRYNF00QTRBNWQ1aDVkNW01ZjRLNFxcNEs1aDVvNWg1aTRdNEU0SzVqNEY0SzVoNW00TzRENWQ0QjRLNFk0TzVqNEY0SzVqNWs0SzVoNWY0VTRaNWQ1ZDVuNEM0SzRENWo0QjVmNF00RDVqNEY1aDVvNWk0WDRLNE01ZDVrNWY0SzRENWQ1bjRZNFk1ZDVpNEs0XTVuNWk0TzRBNEM1ajRBNWo0VTRDNWk0XTRPNWY0SzRBNEU1bzRGNEQ0QzVkNWo1ZjRANEQ1aTVqNWs0RjRBNEY0QDVrNEU0XzVqNEU1ZjRGNWk1bzRdNEU0VjReNEU1ajVtNF80RDVmNEY1aDVoNWs1aDVqNEs0RjVoNW81bjVoNEQ1aDVpNEs0VTVqNWs0TzVkNWg0WDVmNE01ajVkNF00TzVpNEs1bTVmNW80RDVvNWg0XFw0SzRGNF00RjRENEQ0TzVqNWs1aTRfNEs1ajVvNEQ1ZjRVNW01bjRDNEE0XzVqNWg1azVpNFg0VTRdNE81azVoNFg1azRdNW40WzRdNFs1aDREc3FsZWpvZnBmcXVqYGZnZmVidm93a2pucGZvZWdmd2Jqb3BgbG13Zm13cHZzc2xxd3B3YnF3ZmduZnBwYmRmcHZgYGZwcGVicGtqbG0/d2p3b2Y9YGx2bXdxemJgYGx2bXdgcWZid2ZncHdscWpmcHFmcHZvd3Bxdm1tam1kc3FsYGZwcHRxandqbWRsYWlmYHdwdWpwamFvZnRmb2BsbmZicXdqYG9mdm1obWx0bW1md3RscWhgbG5zYm16Z3ptYm5qYGFxbHRwZnFzcWp1YmB6c3FsYW9mblBmcXVqYGZxZnBzZmB3Z2pwc29ienFmcnZmcHdxZnBmcXVmdGZhcGp3ZmtqcHdscXplcWpmbWdwbHN3amxtcHRscWhqbWR1ZnFwamxtbmpvb2psbWBrYm1tZm90am1nbHQtYmdncWZwcHVqcGp3Zmd0ZmJ3a2ZxYGxxcWZgd3NxbGd2YHdmZ2pxZmB3ZWxxdGJxZ3psdiNgYm1xZm5sdWZncHZhaWZgd2BsbXdxbG9icWBranVmYHZxcWZtd3FmYmdqbWRvamFxYnF6b2puandmZ25ibWJkZnFldnF3a2ZxcHZubmJxem5iYGtqbWZuam12d2Zwc3FqdWJ3ZmBsbXdme3dzcWxkcWJucGxgamZ3em12bmFmcXB0cWp3d2ZtZm1iYW9mZ3dxamRkZnFwbHZxYGZwb2xiZ2ptZGZvZm5mbXdzYnF3bWZxZWptYm9venNmcWVmYHduZmJtam1kcHpwd2ZucGhmZnNqbWRgdm93dnFmJXJ2bHc4L2lsdnFtYm9zcWxpZmB3cHZxZWJgZnAlcnZsdzhme3NqcWZwcWZ1amZ0cGFib2JtYGZGbWRvanBrQGxtd2Ztd3drcWx2ZGtTb2ZicGYjbHNqbWpsbWBsbXdiYHdidWZxYmRmc3FqbmJxenVqb29iZGZQc2JtanBrZGJvb2ZxemdmYG9qbWZuZmZ3am1kbmpwcGpsbXNsc3ZvYnFydmJvand6bmZicHZxZmRmbWZxYm9wc2ZgamZwcGZwcGpsbXBmYHdqbG10cWp3ZnFwYGx2bXdmcWptandqYm9xZnNscXdwZWpkdnFmcG5mbmFmcXBrbG9nam1kZ2pwc3Z3ZmZicW9qZnFme3NxZnBwZ2pkandib3NqYHd2cWZCbWx3a2ZxbmJxcWpmZ3dxYmVlamBvZmJnam1kYGtibWRmZ2BmbXdxYm91amB3bHF6am5iZGZwLHFmYnBsbXBwd3ZnamZwZWZid3ZxZm9qcHdqbWRudnB3I2FmcGBrbGxvcFVmcXBqbG12cHZib296ZnNqcGxnZnNvYnpqbWRkcWx0am1kbGF1amx2cGx1ZnFvYnpzcWZwZm13YmB3amxtcD8sdm89Dlx0dHFic3NmcWJvcWZiZ3pgZnF3YmptcWZib2p3enB3bHFiZGZibWx3a2ZxZ2ZwaHdsc2xlZWZxZmdzYnd3ZnFtdm12cHZib0dqZGp3Ym9gYnNqd2JvVGZhcGp3ZmViam92cWZgbG1tZmB3cWZndmBmZ0JtZ3FsamdnZmBiZ2ZwcWZkdm9icSMlYm5zOCNibWpuYm9wcWZvZmJwZkJ2d2xuYndkZnd3am1kbmZ3a2xncG1sd2tqbWRTbHN2b2JxYGJzd2psbW9md3dmcXBgYnN3dnFmcGBqZm1gZm9qYGZtcGZga2JtZGZwRm1kb2JtZz4yJWJuczhLanB3bHF6Iz4jbWZ0I0BmbXdxYm92c2did2ZnUHNmYGpib01md3RscWhxZnJ2anFmYGxubmZtd3RicW1qbWRAbG9vZmRmd2xsb2FicXFmbmJqbXBhZmBidnBmZm9mYHdmZ0dmdndwYGtlam1ibWBmdGxxaGZxcHJ2amBob3phZnd0ZmZtZntiYHdvenBmd3dqbWRnanBmYnBmUGxgamZ3enRmYnNsbXBme2tqYWp3JW93OCIuLkBsbXdxbG9gb2JwcGZwYGx1ZnFmZ2x2d29qbWZid3diYGhwZ2Z1amBmcCt0am1nbHRzdnFzbHBmd2p3b2Y+IU5sYWpvZiNoam9vam1kcGtsdGptZEp3Ym9qYm1ncWxzc2Zna2ZidWpvemZlZWZgd3AuMiReKjhcdGBsbWVqcW5AdnFxZm13Ymd1Ym1gZnBrYnFqbWRsc2Ztam1kZ3FidGptZGFqb29qbG1scWdmcWZnRGZxbmJtenFmb2J3Zmc/LGVscW49am1gb3ZnZnRrZndrZnFnZmVqbWZnUGBqZm1gZmBid2JvbGRCcXdqYG9mYXZ3d2xtcG9icWRmcHd2bWplbHFuaWx2cW1menBqZ2ZhYnFAa2pgYmRsa2xvamdiekRmbWZxYm9zYnBwYmRmLyVydmx3OGJtam5id2ZlZmZvam1kYnFxanVmZ3NicHBqbWRtYnd2cWJvcWx2ZGtvei1cdFx0V2tmI2F2dyNtbHdnZm1wand6QXFqd2JqbUBram1mcGZvYmBoI2xld3FqYXZ3ZkpxZm9ibWchI2did2IuZWJgd2xxcHFmYGZqdWZ3a2J3I2pwT2phcWJxemt2cGFibWdqbSNlYmB3YmVlYmpxcEBrYnFvZnBxYmdqYGJvYXFsdmRrd2VqbWdqbWRvYm1nam1kOW9ibWQ+IXFmd3ZxbSNvZmJnZnFwc29ibW1mZ3NxZm5qdm5zYmBoYmRmQm5mcWpgYkZnandqbG1eJXJ2bHc4TmZwcGJkZm1mZmcjd2x1Ym92Zj4hYGxuc29me29sbGhqbWRwd2J3amxtYWZvamZ1ZnBuYm9vZnEubmxham9mcWZgbHFncHRibXcjd2xoam1nI2xlRWpxZmVse3psdiNicWZwam5qb2JxcHd2Z2pmZ25ie2pudm5rZmJnam1kcWJzamdvemBvam5id2Zoam1kZ2xuZm5mcWRmZ2JubHZtd3BlbHZtZ2Znc2psbWZmcWVscW52b2Jnem1icHd6a2x0I3dsI1B2c3NscXdxZnVmbXZmZmBsbWxuelFmcHZvd3BhcWx3a2ZxcGxvZ2pmcW9icWRmb3pgYm9vam1kLSVydmx3OEJgYGx2bXdGZ3RicWcjcGZkbmZtd1FsYWZxdyNmZWVscXdwU2JgamVqYG9mYnFtZmd2cyN0andra2ZqZGt3OXRmI2tidWZCbWRmb2ZwbWJ3amxtcFxccGZicWBrYnNzb2pmZ2JgcnZqcWZuYnBwanVmZHFibXdmZzkjZWJvcGZ3cWZid2ZnYWpkZGZwd2FmbWZlandncWp1am1kUHd2Z2pmcG5qbWpudm5zZnFrYnNwbmxxbWptZHBmb29qbWRqcCN2cGZncWZ1ZnFwZnVicWpibXcjcWxvZj4hbmpwcGptZGJga2pmdWZzcWxubHdmcHd2Z2Ztd3BsbmZsbWZme3dxZm5mcWZwd2xxZmFsd3dsbjlmdWxvdWZnYm9vI3drZnBqd2ZuYnNmbWRvanBrdGJ6I3dsIyNCdmR2cHdwem5hbG9wQGxuc2Jtem5id3dmcXBudnBqYGJvYmRiam1wd3BmcXVqbWR+KisqOA5cdHNiem5mbXd3cWx2YW9mYGxtYGZzd2BsbnNicWZzYnFmbXdwc29iemZxcHFmZGpsbXBubG1qd2xxIyQkV2tmI3RqbW1qbWRme3NvbHFmYmdic3dmZ0Rib29mcXpzcWxndmBmYmFqb2p3emZta2JtYGZgYnFmZnFwKi0jV2tmI2Bsb29mYHdQZmJxYGsjYm1gamZtd2Z7anB3ZmdlbGx3ZnEja2JtZ29mcXNxam13ZmdgbG1wbG9mRmJwd2ZxbWZ7c2xxd3B0am1nbHRwQGtibW1mb2pvb2ZkYm9tZnZ3cWJvcHZkZGZwd1xca2ZiZ2ZxcGpkbWptZC1rd25vIT1wZnd3b2ZndGZwd2ZxbWBidnBqbWQudGZhaGp3YG9iam5mZ0l2cHdqYGZga2Jzd2ZxdWpgd2pucFdrbG5icCNubHlqb29ic3FsbmpwZnNicXdqZnBmZ2p3amxtbHZ3cGpnZjllYm9wZi9rdm1ncWZnTG96bnNqYFxcYXZ3d2xtYnZ3a2xxcHFmYmBrZmdga3FsbWpgZ2ZuYm1ncHBmYGxtZ3BzcWx3ZmB3Ymdsc3dmZ3NxZnNicWZtZmp3a2ZxZHFmYndvemRxZmJ3ZnFsdWZxYm9vam5zcWx1ZmBsbm5ibWdwc2ZgamJvcGZicWBrLXRscXBranNldm1nam1kd2tsdmRrd2tqZGtmcHdqbXB3ZmJndndqb2p3enJ2YnF3ZnFAdm93dnFmd2Zwd2ptZGBvZmJxb3pme3NscGZnQXFsdHBmcW9qYWZxYm9+I2Bid2BrU3FsaWZgd2Z7Ym5zb2ZramdmKyo4RW9scWpnYmJtcHRmcXBib29sdGZnRm5zZnFscWdmZWZtcGZwZnFqbHZwZXFmZmdsblBmdWZxYm8uYXZ3d2xtRXZxd2tmcWx2dyNsZSMiPiNtdm9vd3Fiam1mZ0dmbW5icWh1bGpnKzMqLGJvby1pcHNxZnVmbXdRZnJ2ZnB3UHdmc2tmbVx0XHRUa2ZtI2xhcGZxdWY/LGsxPQ5cdE5sZ2ZxbSNzcWx1amdmISNib3c+IWFscWdmcXAtXHRcdEVscSNcdFx0TmJteiNicXdqcHdwc2x0ZnFmZ3NmcWVscW5lamB3amxtd3pzZiNsZW5mZ2pgYm93amBoZndwbHNzbHBmZ0Bsdm1gam90andtZnBwaXZwd2pgZkRmbHFkZiNBZm9kanZuLS0tPyxiPXd0and3ZnFtbHdiYW96dGJqd2ptZHRicWVicWYjTHdrZnEjcWJtaGptZHNrcWJwZnBuZm13amxtcHZxdWp1ZnBga2xvYnE/LHM9Dlx0I0Bsdm13cXpqZG1scWZnb2xwcCNsZWl2cHcjYnBEZmxxZGpicHdxYm1kZj9rZmJnPT9wd2xzc2ZnMiReKjgOXHRqcG9ibWdwbWx3YmFvZmFscWdmcTlvanB3I2xlYGJxcWpmZzIzMy8zMzM/LGswPVx0I3BmdWZxYm9hZmBsbmZwcGZvZmB3I3RmZ2dqbWQzMy1rd25vbmxtYnFga2xlZSN3a2Z3ZmJga2Zxa2pka296I2FqbG9sZHpvamVmI2xlbHEjZnVmbXFqcGYjbGUlcWJydmw4c292cGxtZmt2bXdqbWQrd2tsdmRrR2x2ZG9icGlsam1qbWRganFgb2ZwRWxxI3drZkJtYGpmbXdVamZ3bWJudWZramBvZnB2YGsjYnBgcXpwd2JvdWJvdmYjPlRqbWdsdHBmbWlsemZnYiNwbmJvb2JwcHZuZmc/YiNqZz4hZWxxZmpkbSNCb28jcWprbHQjd2tmR2pwc29ienFmd2pxZmdrbHRmdWZxa2pnZ2ZtOGFid3dvZnBwZmZoam1kYGJham1md3RicCNtbHdvbGxoI2J3YGxtZ3Zgd2RmdyN3a2ZJYm12YnF6a2Jzc2ZtcHd2cW1qbWRiOWtsdWZxTG1vam1mI0VxZm1gayNvYmBoam1kd3pzamBib2Z7d3FiYHdmbWZuamZwZnVmbSNqZWRmbWZxYndnZmBqZ2ZnYnFmI21sdyxwZmJxYGthZm9qZmVwLmpuYmRmOW9sYGJ3Zmdwd2J3amAtb2xkam0hPWBsbXVmcXd1amxvZm13Zm13ZnFmZ2VqcXB3IT1ganFgdmp3RWptb2JtZ2BrZm5qcHdwa2YjdGJwMjNzezghPWJwI3B2YGtnanVqZ2ZnPyxwc2JtPXRqb28jYWZvam1mI2xlYiNkcWZid256cHdmcXosam1nZnstZWJvb2ptZGd2ZiN3bCNxYmpvdGJ6YGxvb2ZkZm5sbXB3ZnFnZnBgZm13ancjdGp3a212YG9mYnFJZnRqcGsjc3Fsd2Zwd0FxandqcGtlb2x0ZnFwc3FmZ2pgd3FmZWxxbnBhdnd3bG0jdGtsI3RicG9mYHd2cWZqbXB3Ym13cHZqYGpnZmRmbWZxamBzZnFqbGdwbmJxaGZ3cFBsYGpibyNlanBram1kYGxuYWptZmRxYnNramB0am1tZnFwP2FxIyw9P2F6I3drZiNNYnd2cWJvU3FqdWJgemBsbGhqZnBsdndgbG5mcWZwbG91ZlB0ZmdqcGthcWpmZW96U2ZxcGpibXBsI252YGtAZm13dnF6Z2ZzamB3cGBsb3ZubXBrbHZwam1kcGBxanN3cG1me3cjd2xhZmJxam1kbmJzc2ptZHFmdWpwZmdpUnZmcXorLnRqZ3drOXdqd29mIT13bGxvd2pzUGZgd2psbWdmcGpkbXBXdnFoanBremx2bWRmcS1uYndgayt+KisqOFx0XHRhdnFtam1kbHNmcWJ3ZmdmZHFmZnBwbHZxYGY+UWpga2JxZ2BvbHBmb3pzb2Jwd2pgZm13cWpmcD8sd3E9Dlx0YGxvbHE5IHZvI2pnPiFzbHBwZnBwcWxvb2ptZHNrenBqYHBlYmpvam1kZntmYHZ3ZmBsbXdmcHdvam1oI3dsR2ZlYnZvdz9hcSMsPVx0OSN3cXZmL2BrYnF3ZnF3bHZxanBuYG9icHBqYHNxbGBmZmdme3NvYmptPyxrMj0OXHRsbW9qbWYtPHtubyN1Zmtmb3NqbWRnamJubG1ndnBmI3drZmJqcW9qbWZmbWcjLi49Ki1id3dxK3FmYmdmcXBrbHB3am1kIGVlZWVlZXFmYm9qeWZVam1gZm13cGpkbWJvcCNwcWA+ISxTcWxndmB3Z2Zwc2p3ZmdqdWZxcGZ3Zm9vam1kU3Zhb2pgI2tmb2cjam1JbHBmc2sjd2tmYndxZmJlZWZgd3A/cHd6b2Y9YiNvYnFkZmdsZnBtJHdvYndmcS8jRm9mbmZtd2VidWpgbG1gcWZid2xxS3ZtZGJxekJqcXNscXdwZmYjd2tmcGwjd2tid05qYGtiZm9QenB3Zm5wU3FsZHFibnAvI2JtZyMjdGpnd2s+ZiVydmx3OHdxYmdqbWRvZmV3IT1cdHNmcXBsbXBEbG9nZm0jQmVlYmpxcGRxYm5uYnFlbHFuam1kZ2Zwd3FsempnZmIjbGVgYnBmI2xlbG9nZnB3I3dranAjanAtcHFgIz4jYGJxd2xsbXFmZGpwd3FAbG5ubG1wTnZwb2pucFRrYncjanBqbSNuYm16bmJxaGptZHFmdWZib3BKbWdmZmcvZnJ2Ym9veixwa2x0XFxibHZ3Z2xscWZwYGJzZitCdnB3cWpiZGZtZndqYHB6cHdmbi9KbSN3a2YjcGp3d2ptZEtmI2JvcGxKcG9ibWdwQmBiZ2Zuelx0XG5cbj8iLi5HYm1qZm8jYWptZ2ptZGFvbGBoIT1qbnNscGZndndqb2p5ZkJhcWJrYm4rZntgZnN3eHRqZ3drOXN2d3dqbWQqLWt3bm8rf38jWF44XHRHQldCWCMpaGp3YGtmbW5sdm13ZmdiYHd2Ym8jZ2pib2Zgd25iam1veiNcXGFvYm1oJGptcHdib29me3NmcXdwamUrd3pzZkp3I2JvcGwlYGxzejgjIT1XZnFucGFscW0jam1Mc3dqbG1wZmJwd2ZxbXdib2hqbWRgbG1gZnFtZGJqbWZnI2xtZGxqbWRpdnB3amV6YHFqd2pgcGViYHdscXpqd3AjbHRtYnBwYnZvd2ptdWp3ZmdvYnB3am1ka2pwI2x0bWtxZmU+ISwhI3Fmbz4hZ2Z1Zm9sc2BsbWBmcXdnamJkcWJuZ2xvb2JxcGBvdnB3ZnFza3M8amc+Ym9gbGtsbyo4fiorKjh2cGptZCNiPT9wc2JtPXVmcHBmb3BxZnVqdWJvQmdncWZwcGJuYndmdnFibWdxbGpnYm9vZmRmZ2pvb21mcHB0Ym9oam1kYGZtd2ZxcHJ2Ym9qZXpuYndga2Zwdm1qZWpmZ2Z7d2ptYHdHZmVmbXBmZ2pmZyNqbVx0XG4/Ii4uI2B2cHdsbnBvam1oam1kT2p3d29mI0FsbGgjbGVmdWZtam1kbmptLWlwPGJxZiN3a2ZobG13Ymh3d2xnYnokcC1rd25vISN3YnFkZnc+dGZicWptZEJvbyNRamQ4XHR+KisqOHFianBqbWQjQm9wbC8jYHF2YGpib2JhbHZ3IT1nZmBvYnFmLi49XHQ/cGBlanFmZWx7YnAjbnZga2Jzc29qZnBqbWdmey8jcC8jYXZ3I3d6c2YjPiNcdA5cdD8iLi53bHRicWdwUWZgbHFncFNxanVid2ZFbHFmamRtU3FmbmpmcWBrbGpgZnBVanF3dmJvcWZ3dnFtcEBsbm5mbXdTbHRmcWZnam1vam1mOHNsdWZxd3pga2JuYWZxT2p1am1kI3Vsb3ZuZnBCbXdrbG16b2xkam0hI1Fmb2J3ZmdGYGxtbG56cWZiYGtmcGB2d3dqbWRkcWJ1and6b2plZiNqbUBrYnN3ZnEucGtiZ2x0TWx3YmFvZj8sd2c9Dlx0I3Fmd3ZxbXB3Ymdqdm50amdkZndwdWJxemptZHdxYnVmb3BrZm9nI2F6dGtsI2JxZnRscWgjam1lYmB2b3d6Ym1kdm9icXRrbCNrYmdianFzbHF3d2x0bSNsZVx0XHRQbG5mIyRgb2pgaCRga2JxZGZwaGZ6dGxxZ2p3I3Rqb29gand6I2xlK3dranAqOEJtZ3FmdCN2bWpydmYjYGtmYGhmZ2xxI25scWYwMzNzezgjcWZ3dnFtOHFwamxtPiFzb3Zkam1wdGp3a2ptI2tmcXBmb2VQd2J3amxtRWZnZnFib3VmbXd2cWZzdmFvanBrcGZtdyN3bHdmbXBqbG1iYHdxZnBwYGxuZiN3bGVqbWRmcXBHdmhmI2xlc2Zsc29mL2Z7c29sand0a2J3I2pwa2JxbmxtemIjbmJpbHEhOSFrd3dzam0ja2pwI25mbXYhPVx0bmxtd2tvemxlZWpgZnFgbHZtYGpvZGJqbWptZGZ1Zm0jam1Qdm5uYnF6Z2J3ZiNsZW9semJvd3plandtZnBwYm1nI3RicGZuc2ZxbHFwdnNxZm5mUGZgbG1nI2tmYnFqbWRRdnBwamJtb2xtZGZwd0JvYWZxd2JvYndmcWJvcGZ3I2xlI3BuYm9vIT0tYnNzZm1nZ2wjdGp3a2VmZ2ZxYm9hYm1oI2xlYWZtZmJ3a0dmcHNqd2ZAYnNqd2JvZHFsdm1ncCovI2JtZyNzZnFgZm13ancjZXFsbmBvbHBqbWRgbG13YmptSm1wd2ZiZ2VqZXdmZm1icCN0Zm9vLXpia2xsLXFmcHNsbWdlamRrd2ZxbGFwYHZxZnFmZW9mYHdscWRibWpgPiNOYndrLWZnandqbWRsbW9qbWYjc2JnZ2ptZGIjdGtsb2ZsbWZxcWxxemZicSNsZWZtZyNsZSNhYnFxamZxdGtmbSNqd2tmYmdmcSNrbG5mI2xlcWZwdm5mZ3FmbWJuZmdwd3FsbWQ9a2Zid2ptZHFmd2JqbXBgb2x2Z2VxdGJ6I2xlI05icWBrIzJobWx0am1kam0jc2Jxd0Fmd3RmZm1vZnBwbG1wYG9scGZwd3VqcXd2Ym9vam1ocCE9YHFscHBmZ0ZNRyMuLj1lYm5sdnAjYnRicWdmZ09qYGZtcGZLZmJvd2sjZWJqcW96I3RmYm93a3puam1qbmJvQmVxamBibWBsbnNmd2ZvYmFmbyE9cGptZGptZGVicW5mcXBBcWJwam8qZ2pwYHZwcHFmc29iYGZEcWZkbHF6ZWxtdyNgbHN2cXB2Zmdic3NmYnFwbmJoZiN2c3Fsdm1nZmdhbHdrI2xlYW9sYGhmZ3BidCN3a2ZsZWVqYGZwYGxvbHZxcGplK2dsYHZ0a2ZtI2tmZm1lbHFgZnN2cGsrZXZCdmR2cHcjVldFLjshPUVibXdicHpqbSNubHB3am1pdnFmZ1ZwdmJvb3plYnFuam1kYG9scHZxZmxhaWZgdyNnZmVmbWBmdnBmI2xlI05mZ2pgYm8/YWxnej1cdGZ1amdmbXdhZiN2cGZnaGZ6QGxnZnBqe3dmZm1KcG9ibmpgIDMzMzMzM2Ztd2pxZiN0amdmb3ojYmB3anVmIyt3enNmbGVsbWYjYGJtYGxvbHEjPnBzZmJoZnFme3dmbWdwU2t6cGpgcHdmcXFiam0/d2FsZ3o9ZXZtZnFib3VqZnRqbWRuamdnb2YjYHFqYGhmd3NxbHNrZndwa2pld2ZnZ2xgd2xxcFF2cHBmb28jd2JxZGZ3YGxuc2Jgd2JvZGZhcWJwbGBqYm8uYXZvaCNsZW5ibSNibWc/LHdnPVx0I2tmI29mZXcqLXVibysqZWJvcGYqOG9sZGpgYm9hYm1oam1ka2xuZiN3bG1ibmptZCNCcWp5bG1iYHFmZ2p3cCo4XHR+KjhcdGVsdm1nZnFqbSN3dnFtQGxvb2ptcGFmZWxxZiNBdncjd2tmYGticWRmZ1dqd29mIT1AYnN3YmptcHNmb29mZ2RsZ2dmcHBXYmQjLi49Qmdnam1kOWF2dyN0YnBRZmBmbXcjc2J3amZtd2FiYGgjam0+ZWJvcGYlT2ptYGxvbXRmI2htbHRAbHZtd2ZxSXZnYmpwbnBgcWpzdyNib3dmcWZnJF4qOFx0IyNrYnAjd2tmdm1gb2ZicUZ1Zm13JC9hbHdrI2ptbWx3I2Jvb1x0XHQ/Ii4uI3NvYmBqbWRrYnFnI3dsI2BmbXdmcXBscXcjbGVgb2pmbXdwcHdxZmZ3cEFmcW1icWdicHBmcXdwd2ZtZyN3bGVibXdicHpnbHRtI2pta2JxYWx2cUVxZmZnbG5pZnRmb3F6LGJhbHZ3LS1wZmJxYGtvZmRmbWdwanAjbmJnZm5sZ2ZxbSNsbW96I2xtbG1veiN3bGpuYmRmISNvam1mYnEjc2JqbXdmcWJtZyNtbHdxYnFmb3ojYmBxbG16bmdmb2p1ZnFwa2xxd2ZxMzMlYm5zOGJwI25ibXp0amd3az4hLCkjPyJYQHdqd29mIz5sZSN3a2Yjb2x0ZnB3I3NqYGhmZyNmcGBic2ZndnBmcCNsZXNmbHNvZnAjU3Zhb2pgTmJ3d2tmdHdiYHdqYHBnYm5iZGZndGJ6I2VscW9idHAjbGVmYnB6I3dsI3RqbWdsdHB3cWxtZCMjcGpuc29mfmBid2BrK3BmdWZtd2tqbWVsYWx7dGZtdyN3bHNiam13ZmdgandqeWZtSiNnbG0kd3Fmd3FmYnctI1BsbmYjdHQtISo4XHRhbG5ham1kbmJqb3dsOW5iZ2Yjam0tI05ibXojYGJxcWpmcH9/eH44dGp0bHFoI2xlcHptbG16bmdmZWZid3BlYnVscWZnbHN3amBib3NiZGZXcWJ2bW9mcHAjcGZtZ2ptZG9mZXchPT9gbG5QYGxxQm9vI3drZmlSdmZxei13bHZxanB3QG9icHBqYGVib3BmISNUam9rZm9ucHZhdnFhcGRmbXZqbWZhanBrbHNwLXBzb2p3K2RvbGFibyNlbG9vbHRwYWxneiNsZW1sbmptYm9AbG13YmB3cGZgdm9icW9mZXcjd2xga2pmZW96LmtqZ2dmbS5hYm1tZnE/LG9qPVx0XHQtI1RrZm0jam0jYWx3a2dqcG5qcHBGe3NvbHFmYm90YnpwI3VqYiN3a2Zwc2IvXWxvdGZvZWJxZnF2b2ptZCNicXFibWRmYGJzd2JqbWtqcCNwbG1xdm9mI2xla2Yjd2xsaGp3cGZvZS8+MyVibnM4K2Bib29mZ3BibnNvZnB3bCNuYmhmYGxuLHNiZE5icXdqbSNIZm1tZmd6YmBgZnN3cGV2b28jbGVrYm1nb2ZnQWZwamdmcCwsLi49PyxiYW9mI3dsd2JxZGZ3cGZwcGZtYGZram4jd2wjandwI2F6I2Bsbm5sbS1uam1mcWJvd2wjd2JoZnRienAjd2xwLWxxZCxvYmd1anBmZ3NmbWJvd3pwam5zb2Y5amUjd2tmek9md3dmcXBiI3BrbHF3S2ZxYWZxd3B3cWpoZnAjZHFsdnNwLW9mbWR3a2VvamRrd3BsdWZxb2JzcG9sdG96I29mcHBmcSNwbGBqYm8jPyxzPVx0XG5cbmp3I2ptd2xxYm1oZmcjcWJ3ZiNsZXZvPQ5cdCMjYnd3Zm5zd3NianEjbGVuYmhmI2p3SGxtd2Jod0Jtd2xtamxrYnVqbWQjcWJ3am1kcCNiYHdqdWZwd3FmYm5wd3Fic3NmZyEqLWBwcCtrbHB3am9mb2ZiZyN3bG9qd3dvZiNkcWx2c3AvU2pgd3ZxZi4uPQ5cdA5cdCNxbHRwPiEjbGFpZmB3am11ZnFwZj9lbGx3ZnFAdnB3bG5VPT9fLHBgcXBsb3VqbWRAa2JuYWZxcG9idWZxenRsdm1nZmd0a2ZxZmJwIj4jJHZtZ2VscSNib29zYnF3b3ojLnFqZGt3OUJxYmFqYm1hYmBoZmcjYGZtd3ZxenZtancjbGVubGFqb2YuRnZxbHNmL2pwI2tsbmZxanBoI2xlZ2ZwanFmZ0Bvam13bG1gbHB3I2xlYmRmI2xlI2FmYGxuZiNtbG1mI2xlcyVydmx3OE5qZ2dvZiNmYmckKlgzQHFqd2pgcHB3dmdqbHA9JWBsc3o4ZHFsdnMhPWJwcGZuYW9uYmhqbWQjc3FmcHBmZ3RqZ2Rmdy1zcDkhIzwjcWZhdmpvd2F6I3BsbmZFbHFuZnEjZmdqd2xxcGdmb2J6ZmdAYm1sbWpga2JnI3drZnN2cGtqbWRgb2JwcD4hYXZ3I2JxZnNicXdqYm9BYmF6b2xtYWx3d2xuI2BicXFqZnFAbG5uYm1nandwI3ZwZkJwI3Rqd2tgbHZxcGZwYiN3a2pxZ2dmbWx3ZnBib3BsI2ptS2x2cHdsbTEzc3s4IT1iYGB2cGZnZ2x2YW9mI2RsYm8jbGVFYm5sdnAjKi1ham1nK3NxamZwd3AjTG1vam1mam0jSXZvenB3IygjIWRgbG1wdm93Z2Zgam5ib2tmb3Nldm9xZnVqdWZnanAjdWZxenEkKCRqc3dvbHBqbWQjZWZuYm9mcGpwI2JvcGxwd3FqbWRwZ2J6cCNsZWJxcWp1Ym9ldnd2cWYjP2xhaWZgd2VscWBqbWRQd3FqbWQrISMsPVx0XG5cbmtmcWYjanBmbWBsZ2ZnLSMjV2tmI2Fib29sbG1nbG1mI2F6LGBsbm5sbWFkYGxvbHFvYnQjbGUjSm1namJtYmJ1bGpnZmdhdncjd2tmMXN7IzBze2lydmZxei1iZXdmcSNic2xvamB6LW5mbSNibWdlbGx3ZnEuPiN3cXZmOGVscSN2cGZwYHFmZm0tSm1namJtI2puYmRmIz5lYm5qb3ova3d3czksLCMlbWFwczhncWp1ZnFwZndmcW1ib3BibmYjYnBtbHdqYGZndWpmdGZxcH4qKyo4XHQjanAjbmxxZnBmYnBsbXBlbHFuZnEjd2tmI21mdGpwI2l2cHdgbG1wZm13I1BmYnFga3RicCN3a2Z0a3ojd2tmcGtqc3NmZ2FxPT9hcT10amd3azkja2ZqZGt3Pm5iZ2YjbGVgdmpwam1manAjd2tid2IjdWZxeiNCZ25qcWJvI2Vqe2ZnOG1scW5ibyNOanBwamxtU3FmcHAvI2xtd2Jxamxga2JxcGZ3d3F6I3dsI2ptdWJnZmc+IXdxdmYhcHNiYGptZGpwI25scHdiI25scWYjd2x3Ym9vemVib28jbGV+KjgOXHQjI2pubmZtcGZ3am5mI2ptcGZ3I2x2d3Bid2pwZXp3bCNlam1nZ2x0bSN3bG9sdyNsZSNTb2J6ZnFwam0jSXZtZnJ2Ym13dm5tbHcjd2tmd2puZiN3bGdqcHdibXdFam1tanBrcHFgIz4jK3BqbWRvZiNrZm9zI2xlRGZxbmJtI29idCNibWdvYmFmb2ZnZWxxZnB3cGBsbGhqbWRwc2JgZiE9a2ZiZ2ZxLnRmb28jYnBQd2Jtb2Z6YXFqZ2RmcCxkb2xhYm9AcWxid2piI0JhbHZ3I1gzXjhcdCMjancvI2JtZ2RxbHZzZmdhZmptZCNiKnh3a3FsdGtmI25iZ2ZvamRrd2ZxZndramBib0VFRUVFRSFhbHd3bG4hb2poZiNiI2Zuc29senBvanVmI2ptYnAjcGZmbXNxam13ZnFubHB3I2xldmEub2ptaHFmaWZgd3BibWcjdnBmam5iZGYhPXB2YGBmZmdlZmZnam1kTXZgb2ZicWptZWxxbmJ3bCNrZm9zVGxuZm0kcE1mandrZnFOZntqYGJtc3Fsd2ZqbT93YmFvZiNheiNuYm16a2Zib3drem9idHB2andnZnVqcGZnLXN2cGsreHBmb29mcXBwam5zb3ojV2txbHZkay1gbGxoamYjSm5iZGYrbG9nZnEhPXZwLWlwIT0jUGptYGYjdm1qdWZxcG9icWRmcSNsc2ZtI3dsIi4uI2ZtZ29qZnAjam0kXio4Dlx0IyNuYnFoZnd0a2wjanAjKyFHTE5AbG5ibWJkZmdsbWYjZWxxd3pzZmxlI0hqbWRnbG5zcWxlandwc3Fsc2xwZndsI3BrbHRgZm13ZnE4bmJnZiNqd2dxZnBwZmd0ZnFmI2ptbmp7d3ZxZnNxZmBqcGZicWpwam1kcHFgIz4jJG5iaGYjYiNwZmB2cWZnQWJzd2pwd3Vsd2ptZCNcdFxuXG51YnEjTmJxYGsjMWRxZnQjdnNAb2puYndmLXFmbmx1ZnBoam9vZmd0Ynojd2tmPyxrZmJnPWViYGYjbGViYHdqbWQjcWpka3chPXdsI3RscWhxZmd2YGZwa2JwI2tiZ2ZxZmB3Zmdwa2x0Kyo4YmB3amxtPmFsbGgjbGVibSNicWZiPj4jIWt3dz9rZmJnZnFcdD9rd25vPWBsbWVscW5lYmBqbWQjYGxsaGpmLXFmb3ojbG1rbHB3ZmcjLWB2cHdsbmtmI3RmbXdhdncjZWxxcHNxZmJnI0VibmpveiNiI25mYm1wbHZ3I3drZmVscXZucC1lbGx3YmRmIT1ObGFqb0BvZm5mbXdwISNqZz4hYnAja2pka2ptd2ZtcGYuLj0/Ii4uZWZuYm9mI2pwI3BmZm1qbnNvamZncGZ3I3drZmIjcHdid2ZibWcja2pwZWJwd2Zwd2FmcGpnZnBhdnd3bG1cXGFsdm1nZmchPT9qbmQjSm1lbGFse2Z1Zm13cC9iI3psdm1kYm1nI2JxZk1id2p1ZiNga2Zic2ZxV2puZmx2d2JtZyNrYnBmbWRqbWZwdGxtI3drZitubHB3b3pxamRrdzkjZWptZyNiIy5hbHd3bG5TcWptYGYjYnFmYiNsZW5scWYjbGVwZmJxYGtcXG1id3ZxZi9vZmRib296c2ZxamxnL29ibWcjbGVscSN0andram1ndmBmZ3NxbHVqbWRuanBwam9mb2xgYm9vekJkYmptcHd3a2YjdGJ6aCVydmx3OHN7OCE9Dlx0c3Zwa2ZnI2JhYm1nbG1tdm5mcWJvQGZxd2JqbUptI3dranBubHFmI2ptbHEjcGxuZm1ibmYjanBibWcvI2ptYHFsdG1mZ0pQQU0jMy5gcWZid2ZwTGB3bGFmcW5ieiNtbHdgZm13ZnEjb2J3ZiNqbUdmZWZtYGZmbWJgd2ZndGpwayN3bGFxbGJnb3pgbGxvam1kbG1vbGJnPmp3LSNXa2ZxZmBsdWZxTmZuYWZxcGtmamRrdyNicHB2bmZwP2t3bm89XHRzZmxzb2Ytam0jbG1mIz50am1nbHRlbGx3ZnFcXGIjZGxsZyNxZmhvYm5ibHdrZnFwL3dsI3dranBcXGBsbGhqZnNibWZvIT1PbG1nbG0vZ2Zlam1mcGBxdnBrZmdhYnN3anBuYGxicHdib3B3Ynd2cCN3andvZiEjbmx1ZiN3bG9scHcjam1hZnd3ZnEjam5zb2pmcHFqdWJvcXpwZnF1ZnFwI1B6cHdmblNmcWtic3BmcCNibWcjYGxtd2ZtZ2VvbHRqbWRvYnB3ZmcjcWpwZiNqbURmbWZwanB1amZ0I2xlcWpwam1kI3BmZm4jd2xhdncjam0jYWJgaGptZGtmI3Rqb29kanVmbSNiZGp1am1kI2Bqd2pmcC1lb2x0I2xlI09id2ZxI2JvbyNhdndLamRrdGJ6bG1veiNhenBqZG0jbGVrZiNnbGZwZ2plZWZxcGFid3dmcXolYm5zOG9icGptZG9mcHdrcWZid3BqbXdmZGZxd2JoZiNsbXFmZXZwZmdgYm9vZmcjPlZQJWJuc1BmZiN3a2ZtYndqdWZwYXojd2tqcHB6cHdmbi1rZmJnI2xlOWtsdWZxL29mcGFqYm1wdnFtYm5mYm1nI2Jvb2Bsbm5sbSxrZmJnZnFcXFxcc2JxYm5wS2JxdWJxZyxzantmby1xZm5sdWJvcGwjb2xtZHFsb2YjbGVpbGptd296cGh6cGBxYlZtamBsZ2ZhcSMsPQ5cdEJ3b2Jtd2JtdmBvZnZwQGx2bXd6L3N2cWZveiNgbHZtdyE9ZmJwam96I2F2am9nI2JsbWBvamBoYiNkanVmbXNsam13ZnFrJXJ2bHc4ZnVmbXdwI2ZvcGYjeFx0Z2p3amxtcG1sdCN3a2YvI3Rqd2sjbmJtI3RrbGxxZCxUZmFsbWYjYm1nYGJ1Ym9xektmI2dqZmdwZmJ3d29mMzMvMzMzI3h0am1nbHRrYnVmI3dsamUrdGptZ2JtZyNqd3BwbG9mb3ojbiVydmx3OHFmbWZ0ZmdHZndxbGp3Ym5sbWRwd2Zqd2tmcSN3a2ZuI2ptUGZtYndscVZwPyxiPT9Iam1kI2xlRXFibWBqcC5zcWxndmBrZiN2cGZnYnF3I2JtZ2tqbiNibWd2cGZnI2F6cGBscWptZGJ3I2tsbmZ3bCNrYnVmcWZvYndmcGpham9qd3plYmB3amxtQXZlZWJvbG9qbWghPT90a2J3I2tmZXFmZiN3bEBqd3ojbGVgbG5mI2ptcGZgd2xxcGBsdm13ZmdsbWYjZ2J6bWZxdWx2cHBydmJxZiN+OGplK2Rsam0jdGtid2puZCEjYm9qcCNsbW96cGZicWBrLHd2ZnBnYnpvbGxwZm96UGxvbG5sbXBme3ZibyMuIz9iI2txbmZnanZuIUdMI01MVyNFcWJtYGYvdGp3ayNiI3RicSNibWdwZmBsbWcjd2JoZiNiIz0OXHQOXHQOXHRuYnFoZncta2pka3RiemdsbWYjam1gd2p1and6IW9icHchPWxhb2pkZmdxanBmI3dsIXZtZ2Zlam5iZ2Yjd2wjRmJxb3ojc3FianBmZ2ptI2p3cCNlbHEja2pwYndrb2Z3Zkl2c2p3ZnFaYmtsbCIjd2ZxbmZnI3BsI25ibXpxZmJvb3ojcC0jV2tmI2IjdGxuYm08dWJvdmY+Z2pxZmB3I3FqZGt3ISNhamB6YG9mYmBqbWQ+IWdieiNibWdwd2J3am1kUWJ3a2ZxL2tqZGtmcSNMZWVqYGYjYnFmI21sdHdqbmZwLyN0a2ZtI2Ijc2J6I2VscWxtI3dranAub2ptaCE9OGFscWdmcWJxbHZtZyNibW12Ym8jd2tmI01mdHN2dyN3a2YtYGxuISN3YmhqbSN3bGIjYXFqZmUram0jd2tmZHFsdnNwLTgjdGpnd2tmbXl6bmZwcGpuc29mI2ptI29id2Z4cWZ3dnFtd2tmcWJzemIjc2xqbXdhYm1tam1kam1ocCE9XHQrKjghI3FmYiNzb2JgZl92MzMwQGJiYWx2dyNid3E9Dlx0XG5cbmBgbHZtdyNkanVmcCNiP1BAUUpTV1Fiam90Ynp3a2ZuZnAsd2xsb2Fse0F6SmcrIXtrdm5ibXAvdGJ3YGtmcGptI3BsbmYjamUjK3RqYGxuam1kI2VscW5id3AjVm1nZnEjYXZ3I2ticGtibWdmZyNuYmdmI2F6d2tibSNqbWVmYnEjbGVnZm1sd2ZnLGplcWJuZm9mZXcjam11bG93YmRmam0jZmJga2IlcnZsdzhhYnBmI2xlSm0jbmJtenZtZ2ZxZGxxZmRqbmZwYmB3amxtIz8scz0OXHQ/dnB3bG5VYjglZHc4PyxqbnNscXdwbHEjd2tid25scHdveiMlYm5zOHFmI3BqeWY+IT8sYj0/LGtiI2BvYnBwc2JwcGp1ZktscHcjPiNUa2Z3a2ZxZWZxd2pvZlVicWpsdnA+WF44K2V2YGJuZnFicCw9Pyx3Zz1iYHdwI2JwSm0jcGxuZj0OXHQOXHQ/ImxxZGJtanAjP2FxIyw9QWZqaWptZGBid2JvL0xnZnZ3cGBrZnZxbHNmdmZ2cGhicWJkYmZqb2RmcHVmbXBoYmZwc2IvXWJuZm1wYmlmdnB2YnFqbHdxYmFiaWxuL0V7amBscy9NZGptYnBqZm5zcWZwanB3Zm5ibGB3dmFxZmd2cWJtd2ZiL11iZ2pxZm5zcWZwYm5sbmZtd2xtdmZwd3Fsc3FqbmZxYndxYnUvRXBkcWJgamJwbXZmcHdxYnNxbGBmcGxmcHdiZ2xwYGJvamdiZ3NmcXBsbWJtL1ZuZnFsYmB2ZnFnbG4vVnBqYGJuamZuYXFsbGVmcXdicGJvZHZtbHBzYi9BcGZwZmlmbnNvbGdmcWZga2xiZ2ZuL01wc3FqdWJnbGJkcWZkYnFmbW9iYGZwc2xwamFvZmtsd2ZvZnBwZnVqb29ic3FqbmZxbC9Wb3dqbmxmdWZtd2xwYnFga2p1bGB2b3d2cWJudmlmcWZwZm13cWJnYmJtdm1gamxmbmFicWRsbmZxYGJnbGRxYm1nZnBmcHd2Z2psbmZpbHFmcGVmYXFmcWxnanBmL11sd3ZxanBubGAvX2dqZGxzbHF3YmdiZnBzYmBqbGVibmpvamJibXdsbWpsc2Zxbmp3ZmR2YnFnYnFib2R2bWJwc3FmYGpscGJvZHZqZm1wZm13amdsdWpwandicHcvQXd2b2xgbG1sYGZxcGZkdm1nbGBsbXBmaWxlcWJtYGpibmptdndscHBmZHZtZ2J3Zm1mbmxwZmVmYHdscG4vTW9iZGJwZnBqL19tcWZ1anB3YmRxYm1iZ2JgbG5zcWJxam1kcWZwbGRicWAvQWJiYGBqL19tZmB2YmdscXJ2amZtZnBqbWBvdnBsZ2ZhZnEvTW5id2ZxamJrbG5hcWZwbnZmcHdxYnNsZ3EvQWJuYi9dYm1iL1Zvd2puYmZwd2JubHBsZWpgamJvd2JuYWpmbW1qbWQvVm1wYm92Z2xwc2xnZm5scG5maWxxYnFzbHBqd2psbWF2cGptZnBwa2xuZnNiZGZwZmB2cWp3em9ibWR2YmRmcHdibWdicWdgYm5zYmpkbWVmYnd2cWZwYGJ3ZmRscXpme3dmcW1ib2Bram9ncWZtcWZwZnF1ZmdxZnBmYnFga2Z7YGtibWRmZWJ1bHFqd2Z3Zm5zb2J3Zm5qb2p3YnF6am1ndnB3cXpwZnF1amBmcG5id2ZxamJvc3FsZ3Zgd3B5LmptZ2Z7OWBsbm5mbXdwcGxld3RicWZgbG5zb2Z3ZmBib2ZtZ2Jxc29id2VscW5icXdqYG9mcHFmcnZqcWZnbmx1Zm5mbXdydmZwd2psbWF2am9nam1kc2xvandqYHBzbHBwamFvZnFmb2pkamxtc2t6cGpgYm9lZmZnYWJgaHFmZGpwd2Zxc2pgd3ZxZnBnanBiYW9mZ3NxbHdsYGxvYnZnamZtYGZwZnd3am1kcGJgd2p1and6Zm9mbmZtd3BvZmJxbWptZGJtendram1kYmFwd3FiYHdzcWxkcWZwcGx1ZnF1amZ0bmJkYnlqbWZmYGxtbG5qYHdxYmptam1kc3FmcHB2cWZ1YnFqbHZwIz9wd3FsbWQ9c3Fsc2Zxd3pwa2xzc2ptZHdsZGZ3a2ZxYmd1Ym1gZmdhZmtidWpscWdsdG1vbGJnZWZid3ZxZmdlbGx3YWJvb3Bmb2Zgd2ZnT2JtZHZiZGZnanB3Ym1gZnFmbmZuYWZxd3FiYGhqbWRzYnBwdGxxZ25sZ2plamZncHd2Z2Ztd3BnanFmYHdvemVqZGt3am1kbWxxd2tmcW1nYndiYWJwZmVmcHdqdWJvYXFmYmhqbWRvbGBid2psbWptd2ZxbWZ3Z3Fsc2dsdG1zcWJgd2pgZmZ1amdmbWBmZXZtYHdqbG1uYnFxamJkZnFmcHNsbXBmc3FsYW9mbnBtZmRid2p1ZnNxbGRxYm5wYm1ib3pwanBxZm9mYnBmZ2FibW1mcSE9c3ZxYGticGZzbG9qYGpmcHFmZGpsbWJvYHFmYndqdWZicWR2bmZtd2FsbGhuYnFocWZlZnFxZnFga2ZuamBib2dqdWpwamxtYGJvb2FiYGhwZnNicWJ3ZnNxbGlmYHdwYGxtZW9qYHdrYnFndGJxZmptd2ZxZnB3Z2ZvanVmcXpubHZtd2JqbWxhd2JqbWZnPiNlYm9wZjhlbHErdWJxI2JgYGZzd2ZnYGJzYmBqd3pgbG5zdndmcWpnZm13and6YmpxYHFiZXdmbnNvbHpmZ3NxbHNscGZnZ2xuZnB3amBqbWBvdmdmcHNxbHVqZ2Zna2xwc2p3Ym91ZnF3amBib2Bsb29ic3BmYnNzcWxiYGtzYnF3bWZxcG9sZGwhPT9iZ2J2ZGt3ZnFidndrbHEhI2B2b3d2cWJvZWJuam9qZnAsam5iZGZwLGJwcGZuYW96c2x0ZnFldm93ZmJga2ptZGVqbWpwa2ZnZ2pwd3FqYHdgcWp3amBib2Bkai5ham0sc3Zxc2xwZnBxZnJ2anFmcGZvZmB3amxtYWZgbG5qbWRzcWx1amdmcGJgYmdmbmpgZntmcWBqcGZiYHd2Ym9vem5mZ2pgam1mYGxtcHdibXdiYGBqZ2Ztd05iZGJ5am1mZ2xgdm5mbXdwd2Jxd2ptZGFsd3dsbiE9bGFwZnF1Zmc5IyVydmx3OGZ7d2ZtZ2Znc3FmdWpsdnBQbGV3dGJxZmB2cHdsbmZxZ2ZganBqbG1wd3FmbWR3a2dmd2Jqb2ZncG9qZGt3b3pzb2JtbWptZHdme3dicWZiYHZxcWZtYHpmdWZxemxtZnB3cWJqZGt3d3FibXBlZnFzbHBqd2p1ZnNxbGd2YGZna2ZxandiZGZwa2pzc2ptZGJhcGxvdndmcWZgZmp1ZmdxZm9mdWJtd2F2d3dsbSEjdWpsb2ZtYGZibXp0a2ZxZmFmbWZlandwb2J2bWBrZmdxZmBmbXdvemJvb2pibWBmZWxvb2x0Zmdudm93anNvZmF2b29md2ptam1gb3ZnZmdsYGB2cXFmZ2ptd2ZxbWJvXCcrd2tqcCotcWZzdmFvamA9P3dxPT93Z2BsbWRxZnBwcWZgbHFnZmd2b3dqbmJ3ZnBsb3Z3amxtP3ZvI2pnPiFnanBgbHVmcUtsbmY/LGI9dGZhcGp3ZnBtZnd0bHFocGJvd2tsdmRrZm13anFmb3puZm5scWpib25mcHBiZGZwYGxtd2ptdmZiYHdqdWYhPXBsbmZ0a2J3dWpgd2xxamJUZnB3ZnFtIyN3andvZj4hT2xgYndqbG1gbG13cWJgd3VqcGp3bHFwR2x0bW9sYmd0andrbHZ3I3FqZGt3IT1cdG5mYnB2cWZwdGpnd2sjPiN1YnFqYmFvZmptdWxvdWZndWpxZGptamJtbHFuYm9vemtic3NmbWZnYmBgbHZtd3Bwd2JtZ2ptZG1id2psbWJvUWZkanB3ZnFzcWZzYnFmZ2BsbXdxbG9wYmBgdnFid2ZhanF3a2dienB3cWJ3ZmR6bGVlamBqYm9kcWJza2pgcGBxam5qbWJvc2xwcGphb3pgbG1wdm5mcVNmcXBsbWJvcHNmYmhqbWR1Ym9qZ2J3ZmJga2pmdWZnLWlzZCEjLD1uYmBram1mcD8sazE9XHQjI2hmenRscWdwZXFqZm1nb3phcWx3a2ZxcGBsbmFqbWZnbHFqZGptYm9gbG5zbHBmZ2Z7c2Zgd2ZnYmdmcnZid2ZzYmhqcHdibWVsb29sdCEjdWJvdmJhb2Y/LG9iYWZvPXFmb2J3anVmYXFqbWRqbWRqbWBxZmJwZmRsdWZxbWxxc292ZGptcCxPanB3I2xlI0tmYmdmcSE9ISNtYm5mPiEjKyVydmx3OGRxYmd2YndmPyxrZmJnPVx0YGxubmZxYGZuYm9ienBqYmdqcWZgd2xxbmJqbXdiam04a2ZqZGt3OXBga2Zndm9mYGtibWRqbWRhYmBoI3dsI2Bid2tsb2pgc2J3d2ZxbXBgbG9scTkjIGRxZmJ3ZnB3cHZzc29qZnBxZm9qYmFvZj8sdm89XHRcblxuP3Bmb2ZgdyNgandqeWZtcGBvbHdram1kdGJ3YGtqbWQ/b2ojamc+IXBzZmBqZWpgYGJxcXpqbWRwZm13Zm1gZj9gZm13ZnE9YGxtd3FicHd3a2ptaGptZGBid2BrK2YqcGx2d2tmcW1OamBrYmZvI25mcWBrYm13YGJxbHZwZm9zYmdnam1kOWptd2ZxamxxLXBzb2p3KyFvanlid2psbUxgd2xhZnEjKnhxZnd2cW1qbnNxbHVmZy4uJWR3OFx0XHRgbHVmcWJkZmBrYmpxbmJtLXNtZCEjLD1wdmFpZmB3cFFqYGticWcjdGtid2Z1ZnFzcWxhYmFvenFmYGx1ZnF6YWJwZmFib29pdmdkbmZtd2BsbW1mYHctLWBwcCEjLD0jdGZhcGp3ZnFmc2xxd2ZnZ2ZlYnZvdyEsPT8sYj0OXHRmb2Zgd3FqYHBgbHdvYm1nYHFmYndqbG1ydmJtd2p3ei0jSlBBTSMzZ2pnI21sdyNqbXB3Ym1gZi5wZmJxYGsuISNvYm1kPiFwc2ZiaGZxcEBsbnN2d2ZxYGxtd2JqbXBicWBranVmcG5qbWpwd2ZxcWZiYHdqbG1nanBgbHZtd0p3Ym9qYm1sYHFqd2ZxamJwd3FsbWRvejkjJGt3d3M5JHBgcWpzdyRgbHVmcWptZGxlZWZxam1kYnNzZmJxZmdBcWp3anBrI2pnZm13amV6RWJgZmFsbGhtdm5mcWx2cHVma2pgb2ZwYGxtYGZxbXBCbmZxamBibWtibWdvam1kZ2p1I2pnPiFUam9vamJuI3NxbHVqZ2ZxXFxgbG13Zm13YmBgdnFiYHpwZmB3amxtI2JtZ2ZxcGxtZW9me2phb2ZAYndmZGxxem9idHFmbWBmP3BgcWpzdz1vYnpsdnc+IWJzc3FsdWZnI25ie2pudm5rZmJnZnEhPT8sd2Jhb2Y9UGZxdWpgZnBrYm5qb3dsbWB2cXFmbXcjYGJtYmdqYm1ga2JtbWZvcCx3a2ZuZnAsLGJxd2pgb2Zsc3dqbG1ib3NscXd2ZGJvdWJvdmY+ISFqbXdmcXVib3RqcWZvZnBwZm13andvZmdiZGZtYGpmcFBmYnFgayEjbmZicHZxZmd3a2x2cGJtZ3BzZm1nam1kJWtmb29qczhtZnQjR2J3ZiEjcGp5Zj4hc2JkZk1ibmZuamdnb2YhIyEjLD0/LGI9a2pnZ2ZtIT1wZnJ2Zm1gZnNmcXBsbWJvbHVmcWVvbHRsc2ptamxtcGpvb2ptbGpwb2ptaHAhPVx0XG4/d2p3b2Y9dWZxcGpsbXBwYnd2cWdiendmcW5qbWJvandmbnNxbHNmbWRqbWZmcXBmYHdqbG1wZ2ZwamRtZnFzcWxzbHBibz4hZWJvcGYhRnBzYi9dbG9xZm9mYnBmcHB2YW5qdyEjZnElcnZsdzhiZ2dqd2psbXB6bnN3bG5wbHFqZm13ZmdxZnBsdnFgZnFqZGt3IT0/c29mYnB2cWZwd2J3amxtcGtqcHdscXotb2ZidWptZCMjYWxxZ2ZxPmBsbXdmbXdwYGZtd2ZxIT0tXHRcdFBsbmYjZ2pxZmB3Zmdwdmp3YmFvZmF2b2RicWpiLXBrbHQrKjhnZnBqZG1mZ0RmbWZxYm8jYGxtYGZzd3BGe2Juc29mcHRqb29qYm5wTHFqZGptYm8hPT9wc2JtPXBmYnFgayE9bHNmcWJ3bHFxZnJ2ZnB3cGIjJXJ2bHc4Ym9vbHRqbWRHbGB2bmZtd3FmdWpwamxtLSNcdFx0V2tmI3psdnFwZm9lQGxtd2JgdyNuamBramRibUZtZG9qcGsjYGxvdm5hamJzcWpscWp3enNxam13am1kZ3FqbWhqbWRlYmBqb2p3enFmd3ZxbWZnQGxtd2ZtdyNsZWVqYGZxcFF2cHBqYm0jZGZtZnFid2YuOzs2Oi4yIWptZ2pgYndmZWJuam9qYnEjcnZib2p3em5icWRqbTkzI2BsbXdmbXd1amZ0c2xxd2BsbXdiYHdwLndqd29mIT1zbHF3YmFvZi1vZm1kd2sjZm9qZGphb2ZqbXVsb3VmcGJ3b2Jtd2pgbG1vbGJnPiFnZmVidm93LXB2c3NvamZnc2J6bmZtd3Bkb2xwcGJxelx0XHRCZXdmcSNkdmpnYm1gZj8sd2c9P3dnZm1gbGdqbWRuamdnb2YhPWBibmYjd2wjZ2pwc29ienBwYGx3d2pwa2lsbWJ3a2JtbmJpbHFqd3p0amdkZndwLWBvam1qYGJvd2tiam9ibWd3ZmJga2ZxcD9rZmJnPVx0XG5iZWVmYHdmZ3B2c3NscXdwc2xqbXdmcTh3bFB3cWptZD8scG5ib289bGhvYmtsbmJ0am9vI2FmI2ptdWZwd2xxMyEjYm93PiFrbG9qZ2J6cFFmcGx2cWBmb2pgZm1wZmcjK3RramBrIy0jQmV3ZnEjYGxtcGpnZnF1anBqd2ptZGZ7c29scWZxc3FqbmJxeiNwZmJxYGshI2JtZ3FsamchcnZqYGhveiNuZmZ3am1kcGZwd2puYndmOHFmd3ZxbSM4YGxvbHE5ICNrZmpka3c+YnNzcWx1Ym8vIyVydmx3OCNga2ZgaGZnLW5qbS1pcCFuYmRtZndqYD0/LGI9PyxrZWxxZmBicHctI1Rram9mI3drdnFwZ2J6Z3VmcXdqcGYlZmJgdndmOGticEBvYnBwZnVib3Zid2ZscWdmcWptZGZ7anB3am1kc2J3amZtd3AjTG1vam1mI2Bsb2xxYmdsTHN3amxtcCFgYm5zYWZvbz8iLi4jZm1nPyxwc2JtPT8/YXEjLD0OXHRcXHNsc3ZzcH9wYGpmbWBmcC8lcnZsdzgjcnZib2p3eiNUam1nbHRwI2JwcGpkbWZna2ZqZGt3OSM/YSNgb2JwcG9mJXJ2bHc4I3Vib3ZmPiEjQGxuc2JtemZ7Ym5zb2ZwP2plcWJuZiNhZm9qZnVmcHNxZnBmbXdwbmJxcGtib29zYnF3I2xlI3NxbHNmcW96Ki1cdFx0V2tmI3die2xtbG56bnZgayNsZSM/LHBzYm09XHQhI2did2IucHF3dmR2L0ZwcGBxbG9vV2wjc3FsaWZgdz9rZmJnPQ5cdGJ3d2xxbWZ6Zm5za2JwanBwc2xtcGxxcGVibWB6YWx7dGxxb2ckcCN0am9nb2plZmBrZmBoZmc+cGZwcGpsbXBzcWxkcWJubnN7OGVsbXcuI1NxbGlmYHdpbHZxbWJvcGFmb2pmdWZndWJgYndqbG13a2xuc3BsbW9qZGt3am1kYm1nI3drZiNwc2ZgamJvI2FscWdmcT4zYGtmYGhqbWQ/LHdhbGd6PT9hdnd3bG0jQGxuc29md2Zgb2ZicWVqe1x0P2tmYmc9XHRicXdqYG9mIz9wZmB3amxtZWptZ2ptZHBxbG9mI2ptI3Nsc3ZvYnEjI0xgd2xhZnF0ZmFwandmI2Z7c2xwdnFmdnBmZyN3bCMjYGtibWRmcGxzZnFid2ZnYG9qYGhqbWRmbXdmcWptZGBsbm5ibWdwam1lbHFuZmcjbXZuYWZxcCMjPyxnanU9YHFmYndqbWRsbVB2YW5qd25icXpvYm1nYGxvb2ZkZnBibWJvendqYG9qcHdqbWRwYGxtd2Jgdy1vbGRkZmdKbWJndWpwbHF6cGphb2ptZHBgbG13Zm13IXAlcnZsdzgqcC0jV2tqcCNzYmBoYmRmcGBrZmBoYWx7cHZkZGZwd3BzcWZkbWJtd3dsbmxxcWx0cHNiYGptZD5qYGxtLXNtZGlic2JtZnBmYGxnZmFicGZhdnd3bG0hPWRibmFvam1kcHZgayNicCMvI3Rram9mIz8scHNibT0jbmpwcGx2cWpwc2xxd2ptZHdsczkyc3sjLT8scHNibT13Zm1wamxtcHRqZ3drPiExb2J5em9sYmdtbHVmbmFmcXZwZmcjam0ja2ZqZGt3PiFgcWpzdyE9XHQlbWFwczg/LD93cT0/d2cja2ZqZGt3OTEsc3FsZ3Zgd2Bsdm13cXojam1gb3ZnZiNlbGx3ZnEhIyVvdzgiLi4jd2p3b2YhPT8saXJ2ZnF6LT8sZWxxbj1cdCtcdkJsXGJRfyorXHZVbQVHeCprcXVid3Boamp3Ym9qYm1scWxuL05tKG93L1BxaC9LZjRLNF00QzVkd2JuYWovRW1tbHdqYGpicG5mbXBiaWZwc2ZxcGxtYnBnZnFmYGtscG1iYGpsbWJvcGZxdWpgamxgbG13YmB3bHZwdmJxamxwc3FsZHFibmJkbGFqZnFtbGZuc3FmcGJwYm12bWBqbHB1Ym9mbWBqYmBsb2xuYWpiZ2Zwc3YvRXBnZnNscXdmcHNxbHpmYHdsc3FsZ3Zgd2xzL1Zhb2pgbG1scGx3cWxwa2pwd2xxamJzcWZwZm13Zm5qb29sbWZwbmZnamJtd2ZzcWZkdm13YmJtd2ZxamxxcWZgdnFwbHBzcWxhb2ZuYnBibXdqYmRsbXZmcHdxbHBsc2ptai9fbWpuc3FqbmpxbmpmbXdxYnBibi9FcWpgYnVmbWdmZ2xxcGxgamZnYmdxZnBzZmB3bHFmYm9qeWJxcWZkanB3cWxzYm9iYXFicGptd2ZxL0VwZm13bG1gZnBmcHNmYGpib25qZm5hcWxwcWZib2pnYmdgL19xZ2xhYnlicWJkbHlicy9NZGptYnBwbGBqYm9mcGFvbHJ2ZmJxZGZwd2ovX21ib3J2am9mcXBqcHdmbmJwYGpmbWBqYnBgbG5zb2Z3bHVmcXBqL19tYGxuc29md2JmcHd2Z2pscHMvVmFvamBibGFpZndqdWxib2pgYm13ZmF2cGBiZ2xxYGJtd2pnYmdmbXdxYmdicGJgYGpsbWZwYnFga2p1bHBwdnNmcWpscW5iemxxL0FiYm9mbmJtamJldm1gai9fbS9Wb3dqbmxwa2JgamZtZ2xicnZmb29scGZnamBqL19tZWZxbWJtZ2xibmFqZm13ZmViYGZhbGxobXZmcHdxYnBgb2pmbXdmcHNxbGBmcGxwYWJwd2Jtd2ZzcWZwZm13YnFmc2xxd2JxYGxtZHFmcGxzdmFvamBicWBsbmZxYGpsYGxtd3Fid2xpL191Zm1mcGdqcHdxandsdy9FYG1qYGJgbG1pdm13bGZtZnFkL0Fid3FiYWJpYnFicHd2cWpicHFmYGpmbXdmdndqb2p5YnFhbG9mdy9BbXBib3ViZ2xxYGxxcWZgd2J3cWJhYmlscHNxam5mcWxwbWZkbGBqbHBvamFmcXdiZ2dmd2Jvb2Zwc2Jtd2Jvb2JzcS9fe2pubGJvbmZxL0FiYm1qbmJvZnBydmovRW1mcGBscWJ5L19tcGZgYGovX21hdnBgYm1nbGxzYGpsbWZwZnt3ZnFqbHFgbG1gZnN3bHdsZ2J1L0FiZGJvZnEvQWJmcGBxamFqcW5mZ2pgam1ib2pgZm1gamJgbG1wdm93YmJwc2Zgd2xwYHEvQXdqYGJnL19vYnFmcGl2cHdqYGpiZ2ZhZnEvTW1zZnEvQWxnbG1mYGZwandibmJtd2ZtZnFzZnJ2Zi9dbHFmYGphamdid3FqYXZtYm93Zm1mcWplZmBibWBqL19tYGJtYnFqYnBnZnBgYnFkYmdqdWZxcGxwbmJvb2xxYGJxZnJ2amZxZncvRWBtamBsZ2ZhZnEvQWJ1anVqZm1nYmVqbWJteWJwYmdmb2Jtd2Zldm1gamxtYmBsbXBmaWxwZ2plL0Fgam9ganZnYmdmcGJtd2pkdmJwYnVibXliZ2J3L0VxbmptbHZtamdiZ2ZwcC9NbWBrZnlgYm5zYi9dYnBsZXdsbWpgcWZ1anB3YnBgbG13amZtZnBmYHdscWZwbmxuZm13bHBlYmB2b3diZ2BxL0VnandsZ2p1ZnFwYnBwdnN2ZnB3bGViYHdscWZwcGZkdm1nbHBzZnJ2Zi9dYjxfPFI8WDxcXDxZPW08VzxUPFk9bT1uPWA8XT1nPFc8UjxdPWc9bj1gPWE9bjxSPFA8eT1tPFc8VD1uPFI8XzxSPFA8WTxRPWM8Xj1tPFk9aT1hPW48UjxVPFg8XFw8WjxZPF09ZzxXPFQ8XzxSPFg9bzxYPFk8UT1gPWE9bjxSPW48XT1nPFc8XFw9bTxZPF09YzxSPFg8VDxRPW08WTxdPFk8UTxcXDxYPFI9bTxcXDxVPW49aDxSPW48UjxRPFk8XzxSPW08XjxSPFQ9bTxePFI8VTxUPF89bD1nPW48UjxaPFk8Xj1tPFk8UD1tPF48Uj1iPFc8VD1kPWA9YT1uPFQ9aTxTPFI8VjxcXDxYPFE8WTxVPFg8UjxQPFxcPFA8VD1sPFxcPFc8VDxdPFI9bjxZPFA9bz1pPFI9bj1jPFg8Xj1vPWk9bTxZPW48VDxXPWI8WDxUPFg8WTxXPFI8UDxUPWw8WT1uPFk8XT1jPW08XjxSPFk8XjxUPFg8WT1rPFk8XzxSPWE9bjxUPFA9bT1rPFk9bj1uPFk8UD1nPWo8WTxRPWc9bT1uPFxcPFc8XjxZPFg9YD1uPFk8UDxZPF48UjxYPWc9bjxZPF08WTxePWc9ZDxZPFE8XFw8UDxUPW48VDxTPFxcPW48UjxQPW88Uz1sPFxcPF48VzxUPWo8XFw8UjxYPFE8XFw8XzxSPFg9ZzxbPFE8XFw9YjxQPFI8Xz1vPFg9bD1vPF88Xj1tPFk8VTxUPFg8WT1uPFY8VDxRPFI8UjxYPFE8UjxYPFk8VzxcXDxYPFk8VzxZPW09bDxSPFY8VD1iPFE9YzxePFk9bT1gPHk9bT1uPWA9bDxcXDxbPFxcPFE8XFw9ZDxUNEs1aDVoNWs0SzVoNEY1ZjRANWk1ZjRVNEI0SzRZNEU0SzVoNFxcNWY0VTVoNWY1azRANEM1ZjRDNEs1aDRONWo0SzVoNF00QzRGNEE1bzVpNFk1bTRBNEU1bzRLNWo0RjRLNWg1aDVmNWY1bzVkNWo0WDRENW80RTVtNWY1azRLNEQ1ajRLNEY0QTVkNEs0TTRPNW80RzRdNEI1aDRLNWg0SzVoNEE0RDRDNWg1ZjVoNEM0XTVkNF80SzRaNFY0WzRGNW81ZDVqNWs1ajRLNW80XzRLNEE0RTVqNEs0QzVmNEs1aDRbNEQ0VTVoNWY1bzRYNW80XTRLNWY1aTVvNWo1aTVqNWs0SzRYNF01bzRFNF00SjVmNF81ajRYNWY0WzVpNEs0XFw0SzRLNWg1bTVqNFg0RDRLNEQ0RjRVNEQ0XTRdNEE1aTRFNW80SzVtNEU1ZjVuNWQ1aDVpNF01bzReNW81aDVpNEU0TzRBNWk0QzVuNWg0RDVmNWY0VTVqNWY0WTVkNF00RTRbNF01ZjVuNFg0SzRdNW80QDVkNEs1aDRPNEI0XTVlNWk0VTVqNEs0SzRENEE0RzRVNF01ZDRaNEQ0WDVvNWg1aTRfNEA1aDRENWo0SzVqNEI0SzVoNEM1bzRGNEs0RDVvNWg1ZjRFNEQ0QzVkNWo0TzVmNFo0SzVmNWQ0QDRDNW00XTVmNW41bzRGNEQ0RjRPNW00WjVoNWk0WzRENEI0SzVvNEc0XTRENEs0XTVvNEs1bTRaNWg0SzRBNWg1ZTVqNW00XzVrNE81ZjRLNWk0XTRDNWQ0QzRPNWo1azRLNEM1ZjVqNEs0SzVoNEs1ajVpNFU0XTRaNEY0VTVoNWk0QzRLNEI1aDVpNWk1bzVqAwMDAwMDAwMCAwIDAgMCAwEDAQMBAwEDBwMHAwcDBwMDAgFcMAcGBQQEBQYHXDABAgNcdlxuXHRcYg8OXHJcZlxmXHIOD1xiXHRcblx2ExIREBcWFRQUFRYXEBESExsaGRgfHh0cHB0eHxgZGhsTExMTAwMDAwMDAwMTExMTAgMDAwEDAwMBAwMDAgMDAwIDAwNcMAMDAxMTAwIDAwMCAwMTEwMCAwMDXHYDXHYDXHYDXHYDAwMCAwEDXDADBwMGAwUDBHFmcGx2cWBmcGBsdm13cWpmcHJ2ZnB3amxtcGZydmpzbmZtd2Bsbm52bWp3emJ1YmpvYmFvZmtqZGtvamRrd0dXRyx7a3dub25icWhmd2ptZGhtbHRvZmdkZnBsbmZ3a2ptZGBsbXdiam1mcWdqcWZgd2psbXB2YXBgcWphZmJndWZxd2pwZmBrYnFiYHdmcSEjdWJvdmY+IT8scGZvZmB3PUJ2cHdxYm9qYiEjYG9icHA+IXBqd3Zid2psbWJ2d2tscWp3emVsb29sdGptZHNxam5icWpvemxzZnFid2psbWBrYm9vZm1kZmdmdWZvbHNmZ2JtbG16bmx2cGV2bWB3amxtI2V2bWB3amxtcGBsbnNibWpmcHB3cXZgd3ZxZmJkcWZmbmZtdyEjd2p3b2Y+IXNsd2Ztd2pib2ZndmBid2psbWJxZHZuZm13cHBmYGxtZ2JxemBsc3pxamRrd29ibWR2YmRmcGZ7YG92cGp1ZmBsbWdqd2psbT8sZWxxbj0OXHRwd2J3Zm5mbXdid3dmbXdqbG1BamxkcWJza3p+I2ZvcGYjeFx0cGxvdndqbG1wdGtmbSN3a2YjQm1ib3p3amBwd2Zuc29id2ZwZ2JtZGZxbHZwcGJ3Zm9vandmZ2xgdm5mbXdwc3Zhb2pwa2Zxam5zbHF3Ym13c3Fsd2x3enNmam1lb3ZmbWBmJXFicnZsOD8sZmVlZmB3anVmZGZtZnFib296d3FibXBlbHFuYWZidndqZXZvd3FibXBzbHF3bHFkYm1qeWZnc3Zhb2pwa2Znc3FsbmptZm13dm13am8jd2tmd2t2bmFtYmpvTWJ3amxtYm8jLWVsYHZwKyo4bHVmcSN3a2YjbmpkcWJ3amxtYm1tbHZtYGZnZWxsd2ZxIT1cdGZ7YGZzd2psbW9mcHAjd2tibWZ7c2ZtcGp1ZmVscW5id2psbWVxYm5mdGxxaHdmcXFqd2xxem1namBid2psbWB2cXFmbXdvemBvYnBwTWJuZmBxandqYGpwbndxYmdqd2psbWZvcGZ0a2ZxZkJvZntibWdmcWJzc2xqbXdmZ25id2ZxamJvcGFxbGJnYGJwd25mbXdqbG1mZ2JlZWpvamJ3Zj8sbHN3amxtPXdxZmJ3bmZtd2dqZWVmcWZtdyxnZmVidm93LVNxZnBqZ2Ztd2xtYG9qYGg+IWFqbGRxYnNremx3a2ZxdGpwZnNmcW5ibWZtd0VxYm0vS2JqcEtsb296dGxsZ2Z7c2JtcGpsbXB3Ym1nYnFncD8scHd6b2Y9XHRxZmd2YHdqbG1HZmBmbmFmcSNzcWZlZnFxZmdAYm5hcWpnZGZsc3NsbWZtd3BBdnBqbWZwcCNgbG1ldnBqbG09XHQ/d2p3b2Y9c3FmcGZtd2ZnZntzb2JqbWZnZ2xmcCNtbHcjdGxxb2d0amdmam13ZnFlYmBmc2xwandqbG1wbWZ0cHNic2ZxPyx3YmFvZj1cdG5sdm13YmptcG9qaGYjd2tmI2ZwcGZtd2pib2VqbWJtYGpib3Bmb2Zgd2psbWJgd2psbT4hLGJhYm1nbG1mZ0ZndmBid2psbXNicXBmSm13K3B3YmFqb2p3enZtYmFvZiN3bD8sd2p3b2Y9XHRxZm9id2psbXBNbHdmI3drYndmZWVqYGpmbXdzZnFlbHFuZmd3dGwjemZicXBQam1gZiN3a2Z3a2ZxZmVscWZ0cWJzc2ZxIT1ib3dmcW1id2ZqbWBxZmJwZmdBYnd3b2YjbGVzZnFgZmp1Zmd3cXpqbWQjd2xtZmBmcHBicXpzbHF3cWJ6Zmdmb2Zgd2psbXBGb2p5YmFmd2s/LGplcWJuZj1nanBgbHVmcXpqbXB2cWJtYGZwLW9mbWR3azhvZmRmbWdicXpEZmxkcWJza3pgYm1namdid2ZgbHFzbHFid2ZwbG5md2puZnBwZnF1amBmcC1qbWtmcWp3Zmc/LHB3cWxtZD1AbG5udm1qd3pxZm9qZGpsdnBvbGBid2psbXBAbG5uand3ZmZhdmpvZ2ptZHB3a2YjdGxxb2dtbCNvbG1kZnFhZmRqbW1qbWRxZmVmcWZtYGZgYm1tbHcjYWZlcWZydmZtYHp3enNqYGJvb3pqbXdsI3drZiNxZm9id2p1ZjhxZmBscWdqbWRzcWZwamdmbXdqbWp3amJvb3p3ZmBrbWpydmZ3a2YjbHdrZnFqdyNgYm0jYWZme2pwd2ZtYGZ2bWdmcW9qbWZ3a2pwI3dqbmZ3Zm9mc2tsbWZqd2ZucGBsc2ZzcWJgd2pgZnBiZ3VibXdiZGYqOHFmd3ZxbSNFbHEjbHdrZnFzcWx1amdqbWRnZm5sYHFiYHphbHdrI3drZiNme3dmbXBqdWZwdmVlZnFqbWRwdnNzbHF3ZmdgbG5zdndmcXAjZXZtYHdqbG1zcWJgd2pgYm9wYmpnI3drYndqdyNuYnojYWZGbWRvanBrPyxlcWxuI3drZiNwYGtmZ3ZvZmdnbHRtb2xiZ3A/LG9iYWZvPVx0cHZwc2Zgd2ZnbmJxZGptOSMzcHNqcWp3dmJvPyxrZmJnPVx0XHRuamBxbHBsZXdkcWJndmJvb3pnanBgdnBwZmdrZiNhZmBibmZme2ZgdndqdWZpcnZmcXotaXBrbHZwZmtsb2dgbG1lanFuZmdzdnFga2JwZmdvandmcWJvb3pnZnB3cWx6Zmd2cyN3bCN3a2Z1YnFqYndqbG1xZm5iam1qbWRqdyNqcCNtbHdgZm13dnFqZnBJYnNibWZwZiNibmxtZCN3a2ZgbG5zb2Z3Zmdib2RscWp3a25qbXdmcWZwd3BxZmFmb29qbG12bWdmZWptZmdmbWBsdnFiZGZxZnBqeWJhb2ZqbXVsb3VqbWRwZm1wandqdWZ2bWp1ZnFwYm9zcWx1anBqbG0rYm93a2x2ZGtlZmJ3dnFqbWRgbG1ndmB3ZmcqLyN0a2pgayNgbG13am12Zmcua2ZiZ2ZxIT1FZmFxdmJxeiNtdm5mcWx2cCNsdWZxZW9sdDlgbG5zbG1mbXdlcWJkbmZtd3Bme2Bmb29mbXdgbG9wc2JtPiF3ZmBrbWpgYm9tZmJxI3drZiNCZ3VibWBmZyNwbHZxYGYjbGVme3NxZnBwZmdLbG1kI0hsbWQjRWJgZmFsbGhudm93anNvZiNuZmBrYm1qcG5mb2Z1YndqbG1sZWVmbXBqdWY/LGVscW49XHRcbnBzbG1wbHFmZ2dsYHZuZm13LWxxIyVydmx3OHdrZnFmI2JxZndrbHBmI3RrbG5sdWZuZm13cHNxbGBmcHBmcGdqZWVqYHZvd3B2YW5qd3dmZ3FmYGxubmZtZ2BsbXVqbWBmZ3NxbG5sd2ptZCEjdGpnd2s+IS1xZnNvYmBmK2BvYnBwamBib2BsYm9qd2psbWtqcCNlanFwd2dmYGpwamxtcGJwcGpwd2Jtd2ptZ2pgYndmZ2Z1bG92d2psbS50cWJzc2ZxIWZtbHZkayN3bGJvbG1kI3drZmdmb2p1ZnFmZy4uPQ5cdD8iLi5CbmZxamBibSNzcWx3ZmB3ZmdNbHVmbmFmcSM/LHB3em9mPT9ldnFtand2cWZKbXdmcW1mdyMjbG1hb3ZxPiFwdnBzZm1nZmdxZmBqc2pmbXdhYnBmZyNsbSNObHFmbHVmcS9iYWxvanBrZmdgbG9vZmB3Zmd0ZnFmI25iZ2Zmbmx3amxtYm9mbmZxZGZtYHptYnFxYndqdWZiZ3VsYGJ3ZnBzezhhbHFnZnFgbG5uand3ZmdnanE+IW93cSFmbnNvbHpmZnBxZnBmYnFgay0jcGZvZmB3ZmdwdmBgZnBwbHFgdnB3bG5mcXBnanBzb2J6ZmdQZnN3Zm5hZnFiZ2dAb2JwcCtFYmBmYWxsaCNwdmRkZnB3ZmdibWcjb2J3ZnFsc2ZxYndqbWRmb2JhbHFid2ZQbG5md2puZnBKbXB3and2d2ZgZnF3Ymptb3pqbXB3Ym9vZmdlbG9vbHRmcXBJZnF2cGJvZm53a2Z6I2tidWZgbG5zdndqbWRkZm1mcWJ3ZmdzcWx1am1gZnBkdmJxYm13ZmZicWFqd3FicXpxZmBsZG1qeWZ0Ym13Zmcjd2xzezh0amd3azl3a2ZscXojbGVhZmtidWpsdnFUa2pvZiN3a2ZmcHdqbmJ3ZmdhZmRibSN3bCNqdyNhZmBibmZuYmRtand2Z2ZudnB3I2tidWZubHFmI3drYm1HanFmYHdscXpme3dmbXBqbG1wZmBxZndicXptYnd2cWJvb3psYGB2cXFqbWR1YnFqYmFvZnBkanVmbSN3a2Zzb2J3ZWxxbi0/LG9iYWZvPT9lYmpvZmcjd2xgbG5zbHZtZ3Boam1ncCNsZSNwbGBqZndqZnBib2xtZHBqZ2YjLi4lZHc4XHRcdHBsdndrdGZwd3drZiNxamRrd3FiZ2pid2psbW5ieiNrYnVmI3ZtZnBgYnNmK3BzbGhmbSNqbSEja3FmZT4hLHNxbGRxYm5uZmxtb3ojd2tmI2BsbmYjZXFsbmdqcWZgd2xxemF2cWpmZyNqbWIjcGpuam9icXdrZnojdGZxZj8sZWxtdz0/LE1scXRmZGpibXBzZmBqZWpmZ3NxbGd2YGptZHNicHBmbWRmcSttZnQjR2J3ZndmbnNscWJxemVqYHdqbG1ib0Jld2ZxI3drZmZydmJ3amxtcGdsdG1vbGJnLXFmZHZvYnFvemdmdWZvbHNmcWJhbHVmI3drZm9qbWhmZyN3bHNrZm1sbmZtYnNmcWpsZyNsZXdsbG93anMhPXB2YXB3Ym1gZmJ2d2xuYndqYGJwc2ZgdyNsZUJubG1kI3drZmBsbW1mYHdmZ2Zwd2puYndmcEJqcSNFbHFgZnB6cHdmbiNsZWxhaWZgd2p1ZmpubmZnamJ3Zm5iaGptZCNqd3Niam13am1kcGBsbXJ2ZnFmZ2JxZiNwd2pvb3NxbGBmZ3ZxZmRxbHR3ayNsZWtmYmdmZyNhekZ2cWxzZmJtI2dqdWpwamxtcG5sb2Zgdm9mcGVxYm1ga2pwZmptd2Ztd2psbWJ3d3FiYHdmZ2Bram9na2xsZ2JvcGwjdnBmZ2dmZ2pgYndmZ3BqbWRic2xxZmdmZHFmZiNsZWVid2tmcSNsZWBsbWVvamB3cD8sYj0/LHM9XHRgYm5mI2VxbG50ZnFmI3ZwZmdtbHdmI3drYndxZmBmanVqbWRGe2ZgdndqdWZmdWZtI25scWZiYGBmcHAjd2xgbG5uYm1nZnFTbG9qd2pgYm9udnBqYGpibXBnZm9qYGpsdnBzcWpwbG1mcXBiZ3VmbXcjbGVWV0UuOyEjLD0/IlhAR0JXQlghPUBsbXdiYHdQbHZ3a2ZxbSNhZGBsb2xxPiFwZnFqZnAjbGUtI0p3I3RicCNqbSNGdnFsc2ZzZnFuand3Zmd1Ym9qZ2J3Zi1ic3NmYnFqbWRsZWVqYGpib3BwZnFqbHZwb3oub2JtZHZiZGZqbWp3amJ3Zmdme3dmbWdqbWRvbG1kLndmcW5qbWVvYndqbG1wdmBrI3drYndkZndAbGxoamZuYnFoZmcjYXo/LGF2d3dsbT1qbnNvZm5mbXdhdncjancjanBqbWBxZmJwZnBnbHRtI3drZiNxZnJ2anFqbWRnZnNmbWdmbXcuLj1cdD8iLi4jam13ZnF1amZ0VGp3ayN3a2YjYGxzamZwI2xlYGxtcGZtcHZwdGJwI2F2am93VWZtZnl2Zm9iK2VscW5mcW96d2tmI3B3Yndmc2ZxcGxtbWZvcHdxYndmZGpgZWJ1bHZxI2xlam11Zm13amxtVGpoanNmZ2piYGxtd2ptZm13dWpxd3Zib296dGtqYGsjdGJwc3FqbWBqc29mQGxuc29md2YjamdmbXdqYGJvcGtsdCN3a2J3c3Fqbmp3anVmYnRieiNlcWxubmxvZmB2b2Jxc3FmYGpwZm96Z2pwcGxvdWZnVm1nZnEjd2tmdWZxcGpsbT4hPSVtYXBzOD8sSncjanAjd2tmI1dranAjanAjdGpvbyNrYnVmbHFkYm1qcG5wcGxuZiN3am5mRXFqZmdxamBrdGJwI2VqcXB3d2tmI2xtb3ojZWJgdyN3a2J3ZWxxbiNqZz4hc3FmYGZnam1kV2Zga21qYGJvc2t6cGpganB3bGBgdnFwI2ptbWJ1amRid2xxcGZgd2psbSE9cHNibSNqZz4hcGx2ZGt3I3dsYWZvbHQjd2tmcHZxdWp1am1kfj8scHd6b2Y9a2pwI2dmYndrYnAjam0jd2tmYGJ2cGZnI2F6c2Jxd2pib296ZntqcHdqbWQjdnBqbWQjd2tmdGJwI2RqdWZtYiNvanB3I2xlb2Z1Zm9wI2xlbWx3amxtI2xlTGVlamBqYm8jZ2pwbmpwcGZncGBqZm13anB3cWZwZm5hb2ZwZ3Zzb2pgYndmZntzb2xwanVmcWZgbHVmcWZnYm9vI2x3a2ZxZGJvb2ZxamZweHNiZ2dqbWQ5c2Zsc29mI2xlcWZkamxtI2xlYmdncWZwcGZwYnBwbGBqYndmam5kI2Jvdz4ham0jbmxnZnFtcGtsdm9nI2FmbmZ3a2xnI2xlcWZzbHF3am1kd2puZnB3Ym5zbWZmZ2ZnI3dsd2tmI0RxZmJ3cWZkYnFnam1kcGZmbmZnI3dsdWpmdGZnI2Jwam5zYmB3I2xtamdmYiN3a2J3d2tmI1RscW9na2ZqZGt3I2xlZntzYm1nam1kV2tmcGYjYnFmYHZxcWZtdyE9YGJxZmV2b296bmJqbXdiam1wYGticWRmI2xlQG9icHBqYGJvYmdncWZwcGZnc3FmZ2pgd2ZnbHRtZnFwa2pzP2dqdSNqZz4hcWpka3chPQ5cdHFmcGpnZm1gZm9mYnVmI3drZmBsbXdmbXchPWJxZiNsZXdmbSMjfiorKjgOXHRzcWxhYmFveiNTcWxlZnBwbHEuYXZ3d2xtISNxZnBzbG1nZmdwYnpwI3drYndrYmcjd2wjYWZzb2JgZmcjam1Ldm1kYnFqYm1wd2J3dnAjbGVwZnF1ZnAjYnBWbWp1ZnFwYm9me2ZgdndqbG1iZGRxZmRid2ZlbHEjdGtqYGtqbWVmYHdqbG1iZHFmZmcjd2xrbHRmdWZxLyNzbHN2b2JxIT1zb2JgZmcjbG1gbG1wd3F2YHdmb2Zgd2xxYm9wem5hbG8jbGVqbWBvdmdqbWRxZnd2cW0jd2xicWBrandmYHdAa3FqcHdqYm1zcWZ1amx2cCNvanVqbWQjam1mYnBqZnEjd2xzcWxlZnBwbHFcdCVvdzgiLi4jZmVlZmB3I2xlYm1ib3p3amBwdGJwI3diaGZtdGtmcWYjd2tmd2xsaCNsdWZxYWZvamZlI2ptQmVxamhiYm1wYnAjZWJxI2Jwc3FmdWZtd2ZndGxxaCN0andrYiNwc2ZgamJvP2VqZm9ncGZ3QGtxanB3bmJwUWZ3cWpmdWZnXHRcdEptI3drZiNhYmBoI2ptd2xtbHF3a2ZicHduYmRieWptZnA9P3B3cWxtZD1gbG5uand3ZmZkbHVmcW1qbWRkcWx2c3AjbGVwd2xxZmcjam1mcHdiYW9qcGtiI2RmbWZxYm9qd3AjZWpxcHd3a2ZqcSNsdG1zbHN2b2J3ZmdibSNsYWlmYHdAYnFqYWFmYm1ib29sdCN3a2ZnanB3cWpgd3B0anBgbG1wam1vbGBid2psbS04I3RqZ3drOSNqbWtiYWp3ZmdQbGBqYm9qcHdJYm12YnF6IzI/LGVsbHdmcT1wam5qb2Jxb3pga2xqYGYjbGV3a2YjcGJuZiNwc2ZgamVqYCNhdnBqbWZwcCNXa2YjZWpxcHctb2ZtZHdrOCNnZnBqcWYjd2xnZmJvI3Rqd2twam1gZiN3a2Z2cGZxQmRmbXdgbG1gZmp1ZmdqbWdmey1za3NicCMlcnZsdzhmbWRiZGYjam1xZmBmbXdvei9lZnQjemZicXB0ZnFmI2JvcGxcdD9rZmJnPVx0P2ZnandmZyNhemJxZiNobWx0bWBqd2pmcCNqbWJgYGZwcGhmemBsbWdmbm1mZ2JvcGwja2J1ZnBmcXVqYGZwL2VibmpveiNsZVBga2xsbyNsZWBsbXVmcXdmZ21id3ZxZiNsZSNvYm1kdmJkZm5qbWpwd2ZxcD8sbGFpZmB3PXdrZnFmI2pwI2Ijc2xzdm9icXBmcnZmbWBmcGJndWxgYndmZ1drZnojdGZxZmJteiNsd2tmcW9sYGJ3amxtPmZtd2ZxI3drZm52YGsjbmxxZnFmZW9mYHdmZ3RicCNtYm5mZ2xxamRqbWJvI2Ijd3pzamBib3RrZm0jd2tmemZtZGptZmZxcGBsdm9nI21sd3FmcGpnZm13cHRmZ21mcGdiendrZiN3a2pxZyNzcWxndmB3cElibXZicXojMXRrYncjd2tmemIjYGZxd2JqbXFmYmB3amxtcHNxbGBmcHBscWJld2ZxI2tqcHdrZiNvYnB3I2BsbXdiam1mZyE9PyxnanU9XHQ/LGI9Pyx3Zz1nZnNmbWcjbG1wZmJxYGshPVx0c2pmYGZwI2xlYGxuc2Z3am1kUWZlZnFmbWBmd2ZtbWZwcGZmdGtqYGsja2JwI3VmcXBqbG0+Pyxwc2JtPSM/PyxrZmJnZnE9ZGp1ZnAjd2tma2pwd2xxamJtdWJvdmY+ISE9c2JnZ2ptZDkzdWpmdCN3a2J3d2xkZndrZnEvd2tmI25scHcjdGJwI2Vsdm1ncHZhcGZ3I2xlYnd3YmBoI2xtYGtqb2dxZm0vc2xqbXdwI2xlc2ZxcGxtYm8jc2xwandqbG05Ym9vZmRmZ296QG9mdWZvYm1ndGJwI29id2ZxYm1nI2Jld2ZxYnFmI2RqdWZtdGJwI3B3am9vcGBxbG9vam1kZ2ZwamRtI2xlbmJoZnAjd2tmbnZgayNvZnBwQm5mcWpgYm1wLVx0XHRCZXdmcSMvI2F2dyN3a2ZOdnBmdm4jbGVvbHZqcGpibWIrZXFsbiN3a2Zuam1tZnBsd2JzYnF3amBvZnBiI3NxbGBmcHBHbG5qbWpgYm11bG92bmYjbGVxZnd2cW1qbWRnZmVmbXBqdWYzM3N7f3FqZGtuYmdmI2VxbG5ubHZwZmx1ZnEhI3B3em9mPiFwd2J3ZnAjbGUrdGtqYGsjanBgbG13am12ZnBFcWJtYGpwYGxhdmpvZ2ptZCN0andrbHZ3I2J0andrI3BsbmZ0a2wjdGx2b2diI2VscW4jbGViI3NicXcjbGVhZmVscWYjandobWx0bSNicCMjUGZxdWpgZnBvbGBid2psbSNibWcjbGV3Zm1uZmJwdnFqbWRibWcjancjanBzYnNmcWFiYGh1Ym92ZnAjbGUOXHQ/d2p3b2Y9PiN0am1nbHQtZ2Z3ZnFuam1mZnElcnZsdzgjc29iemZnI2F6Ym1nI2ZicW96PyxgZm13ZnE9ZXFsbiN3a2pwd2tmI3drcWZmc2x0ZnEjYm1nbGUjJXJ2bHc4am1tZnFLV05PP2Ija3FmZT4hejlqbW9qbWY4QGt2cWBrI2xld2tmI2Z1Zm13dWZxeiNramRrbGVlamBqYm8jLmtmamRrdzkjYGxtd2Ztdz4hLGBkai5ham0sd2wjYHFmYndmYmVxamhiYm1wZnBzZnFibXdsZXFibS9LYmpwb2J3dWpmKU12b2pmd3Z1ailfKGBmKU13am1iKGFmKU13am1iXGZVaFxmVHtcZlROXG57SVxucEAERnJcdkJsXGJRf1x0QXtcdlVtBUd4XHRBewF5cAZZQVwwelhcYlRWXGJXbFxiVWQEQk1cdkJ7XG5wVlx2QHgEQlxcXG5wQAREYgRHelx0YWxcbnBhXHRmTVx0dURcYlZ+BG14XHZRfVxuZFNcdHBcXFxiVktcYlNdXGJVfAVvRFx0a1ZcdmVkXHZIUlxuYn4ETWBcbkpwBW9EBHxRXG5MUARTd1xiVGxcbkFJXG54Q1xiV3RcdEJxBUZgBENtXHZMbVx0S3hcdH10XGJQdlxueVxcXG5hQlx0Vn9cblpkBFhVBGxpXHRmclx0aUBcdEJIBEJEBEJWXHRgVlxuW11cdHBfXHRUblxufkFcbnhSXHR1RFx0YHtcYlZAXHRUblx0SEtcdEFKXHZ4cwRaZlxucUkEWmZcdkJNXHZ8alx0fXRcYlNNXG5tQ1x2UX1wZnF1amBqbHBicXcvQWB2b2xicWRmbXdqbWJhYnFgZm9sbWJgdmJvcnZqZnFzdmFvamBiZ2xzcWxndmB3bHBzbG8vQXdqYGJxZnBzdmZwd2J0amhqc2ZnamJwamR2amZtd2ZhL1ZwcnZmZ2JgbG52bWpnYmdwZmR2cWpnYmdzcWptYGpzYm9zcWZkdm13YnBgbG13Zm1qZ2xxZnBzbG1nZnF1Zm1meXZmb2JzcWxhb2ZuYnBnamBqZm5hcWZxZm9iYGovX21tbHVqZm5hcWZwam5qb2JxZnBzcWx6ZmB3bHBzcWxkcWJuYnBqbXB3and2d2xiYHdqdWpnYmdmbWB2Zm13cWJmYGxtbG4vQWJqbi9NZGZtZnBgbG13YmB3YnFnZnBgYnFkYnFtZmBmcGJxamxid2ZtYGovX213Zm8vRWVsbWxgbG5qcGovX21gYm1gamxtZnBgYnNiYGpnYmdmbWBsbXdxYnFibS9Nb2pwanBlYnVscWp3bHB3L0VxbmptbHBzcWx1am1gamJmd2pydmZ3YnBmb2ZuZm13bHBldm1gamxtZnBxZnB2b3diZ2xgYnEvTWB3ZnFzcWxzamZnYmdzcWptYGpzamxtZmBmcGpnYmdudm1qYGpzYm9gcWZiYGovX21nZnBgYnFkYnBzcWZwZm1gamJgbG5mcWBqYm9sc2ptamxtZnBmaWZxYGpgamxmZ2p3bHFqYm9wYm9ibmJtYGJkbG15L01vZnlnbGB2bmZtd2xzZm8vQWB2b2JxZmBqZm13ZnBkZm1mcWJvZnB3YnFxYmRsbWJzcS9NYHdqYGJtbHVmZ2JnZnBzcWxzdmZwd2JzYmBqZm13ZnB3L0VgbWpgYnBsYWlmd2p1bHBgbG13YmB3bHBcZkhCXGZJa1xmSG5cZkheXGZIU1xmSGNcZkhVXGZJZFxmSG5cZkh7XGZIQ1xmSFJcZkhUXGZIUlxmSElcZkhjXGZIWVxmSG5cZkhcXFxmSFVcZklrXGZIeVxmSWdcZkhkXGZIeVxmSW1cZkh3XGZIXFxcZkhVXGZIUlxmSEBcZkhSXGZISlxmSHlcZkhVXGZIUlxmSFRcZkhBXGZJbFxmSFVcZkltXGZIY1xmSFxcXGZIVVxmSWxcZkhCXGZJZFxmSG5cZkhKXGZIU1xmSERcZkhAXGZIUlxmSEhnanNvbGdsYHBcZkhUXGZIQlxmSENcZkhcXFxmSW5cZkhGXGZIRFxmSFJcZkhCXGZIRlxmSEhcZkhSXGZIR1xmSFNcZkhcXFxmSHhcZkhUXGZISFxmSEhcZkhcXFxmSFVcZkheXGZJZ1xmSHtcZkhVXGZJbVxmSGpcZkhAXGZIUlxmSFxcXGZISlxmSWtcZkhaXGZIVVxmSW1cZkhkXGZIelxmSWtcZkheXGZIQ1xmSEpcZkhTXGZIeVxmSFJcZkhCXGZIWVxmSWtcZkhAXGZISFxmSWxcZkhEXGZIQFxmSWxcZkh2XGZIQlxmSWBcZkhIXGZIVFxmSFJcZkheXGZIXlxmSWtcZkh6XGZIcFxmSWVcZkhAXGZIQlxmSEpcZkhKXGZISFxmSElcZkhSXGZIRFxmSFVcZklsXGZIWlxmSFVcZkhcXFxmSGlcZkheXGZIe1xmSHlcZkhBXGZJbFxmSERcZkh7XGZIXFxcZkhGXGZIUlxmSFRcZkhcXFxmSFJcZkhIXGZIeVxmSFNcZkhjXGZIZVxmSFRcZklrXGZIe1xmSENcZklsXGZIVVxmSW5cZkhtXGZIalxmSHtcZklrXGZIc1xmSWxcZkhCXGZIelxmSWdcZkhwXGZIeVxmSFJcZkhcXFxmSGlcZkhBXGZJbFxmSHtcZkhDXGZJa1xmSEhcZkltXGZIQlxmSFlcZklnXGZIc1xmSEpcZklrXGZIblxmSGlcZkh7XGZIXFxcZkh8XGZIVFxmSWtcZkhCXGZJa1xmSF5cZkheXGZIe1xmSFJcZkhVXGZIUlxmSF5cZkhmXGZIRlxmSFxcXGZIdlxmSFJcZkhcXFxmSHxcZkhUXGZIUlxmSEpcZklrXGZIXFxcZkhwXGZIU1xmSFRcZkhKXGZIU1xmSF5cZkhAXGZIblxmSEpcZkhAXGZIRFxmSFJcZkhVXGZJblxmSG5cZkheXGZIUlxmSHpcZkhwXGZJbFxmSEhcZkhAXGZIc1xmSERcZkhCXGZIU1xmSF5cZkhrXGZIVFxmSWtcZkhqXGZIRFxmSWtcZkhEXGZIQ1xmSFJcZkh5XGZJbVxmSF5cZkheXGZJZVxmSHtcZkhBXGZIUlxmSHtcZkhcXFxmSWtcZkheXGZIcFxmSHtcZkhVXGZIXFxcZkhSXGZIQlxmSF5cZkh7XGZJa1xmSEZcZklrXGZIcFxmSFVcZkhSXGZISVxmSGtcZkhUXGZJbFxmSFRcZkhVXGZJbFxmSHlcZkheXGZIUlxmSExcZklsXGZIeVxmSFVcZkhSXGZIbVxmSEpcZkluXGZIXFxcZkhIXGZIVVxmSEhcZkhUXGZIUlxmSEhcZkhDXGZIUlxmSEpcZkhqXGZIQ1xmSFJcZkhGXGZIUlxmSHlcZkh5XGZJYFxmSERcZkhaXGZIUlxmSEJcZkhKXGZJa1xmSHpcZkhDXGZIVVxmSWxcZkhcXFxmSFJcZkhDXGZIelxmSW1cZkhKXGZIXlxmSHtcZklsYGJ3ZmRscWpmcGZ7c2ZxamZtYGY/LHdqd29mPQ5cdEBsc3pxamRrdyNpYnVicGBxanN3YGxtZ2p3amxtcGZ1ZnF6d2tqbWQ/cyNgb2JwcD4hd2Zga21sb2xkemFiYGhkcWx2bWc/YiNgb2JwcD4hbmJtYmRmbmZtdyVgbHN6OCMxMzJpYnViUGBxanN3YGticWJgd2ZxcGFxZmJnYHF2bmF3a2ZucGZvdWZwa2xxanlsbXdib2RsdWZxbW5mbXdAYm9qZWxxbWpiYmB3anVqd2pmcGdqcGBsdWZxZmdNYnVqZGJ3amxtd3FibXBqd2psbWBsbW1mYHdqbG1tYnVqZGJ3amxtYnNzZmJxYm1gZj8sd2p3b2Y9P25ga2ZgaGFseyEjd2Zga21qcnZmcHNxbHdmYHdqbG1ic3NicWZtd296YnAjdGZvbyNicHZtdyQvIyRWQi5xZnBsb3Z3amxtbHNmcWJ3amxtcHdmb2Z1anBqbG13cWJtcG9id2ZnVGJwa2ptZHdsbW1idWpkYndscS0jPiN0am1nbHQtam5zcWZwcGpsbSVvdzhhcSVkdzhvandmcWJ3dnFmc2xzdm9id2psbWFkYGxvbHE+ISBmcHNmYGpib296I2BsbXdmbXc+IXNxbGd2YHdqbG1tZnRwb2Z3d2Zxc3Fsc2Zxd2pmcGdmZWptandqbG1vZmJnZnFwa2pzV2Zga21sb2xkelNicW9qYm5mbXdgbG5zYnFqcGxtdm8jYG9icHA+IS1qbWdme0xlKyFgbG1gb3ZwamxtZ2pwYHZwcGpsbWBsbnNsbWZtd3BhamxvbGRqYGJvUWZ1bG92d2psbVxcYGxtd2JqbWZxdm1nZnFwd2xsZ21scGBxanN3PT9zZnFuanBwamxtZmJgayNsd2tmcWJ3bmxwc2tmcWYjbG1lbGB2cD4hP2VscW4jamc+IXNxbGBmcHBqbWR3a2pwLXVib3ZmZGZtZnFid2psbUBsbWVmcWZtYGZwdmFwZnJ2Zm13dGZvby5obWx0bXVicWpid2psbXBxZnN2d2J3amxtc2tmbWxuZm1sbWdqcGBqc29qbWZvbGRsLXNtZCEjK2dsYHZuZm13L2Fsdm1nYnFqZnBme3NxZnBwamxtcGZ3d29mbmZtd0FiYGhkcWx2bWdsdncjbGUjd2tmZm13ZnFzcWpwZisha3d3c3A5ISN2bWZwYGJzZishc2JwcHRscWchI2dmbmxgcWJ3amA/YiNrcWZlPiEsdHFic3NmcSE9XHRuZm5hZnFwa2pzb2ptZHZqcHdqYHN7OHNiZ2dqbWRza2pvbHBsc2t6YnBwanB3Ym1gZnZtanVmcXBqd3plYmBqb2p3amZwcWZgbGRtanlmZ3NxZmVmcWZtYGZqZSMrd3pzZmxlbmJqbXdiam1mZ3VsYGJhdm9icXprenNsd2tmcGpwLXB2YW5qdysqOCVibnM4bWFwczhibW1sd2J3amxtYWZram1nI3drZkVsdm1nYndqbG1zdmFvanBrZnEhYnBwdm5zd2psbWptd3FsZ3ZgZmdgbHFxdnN3amxtcGBqZm13anB3cGZ7c29qYGp3b3pqbXB3ZmJnI2xlZ2puZm1wamxtcCNsbUBvamBoPiFgbG1wamdmcWZnZ2ZzYnF3bmZtd2xgYHZzYndqbG1wbGxtI2Jld2Zxam11ZnB3bmZtd3NxbG1sdm1gZmdqZ2Ztd2plamZnZntzZnFqbmZtd05ibWJkZm5mbXdkZmxkcWJza2pgISNrZmpka3c+IW9qbWgjcWZvPiEtcWZzb2JgZissZ2ZzcWZwcGpsbWBsbWVmcWZtYGZzdm1qcGtuZm13Zm9qbmptYndmZ3FmcGpwd2JtYGZiZ2Jzd2J3amxtbHNzbHBqd2psbXRmb28jaG1sdG1wdnNzb2ZuZm13Z2Z3ZnFuam1mZ2syI2BvYnBwPiEzc3s4bmJxZGptbmZga2JtamBib3B3YndqcHdqYHBgZm9mYXFid2ZnRGx1ZnFtbmZtd1x0XHRHdnFqbWQjd2dmdWZvbHNmcXBicXdqZWpgamJvZnJ2anVib2Ztd2xxamRqbWJ3ZmdAbG5uanBwamxtYnd3YmBrbmZtdz9wc2JtI2pnPiF3a2ZxZiN0ZnFmTWZnZnFvYm1ncGFmemxtZyN3a2ZxZmRqcHdmcWZnaWx2cW1ib2pwd2VxZnJ2Zm13b3pib28jbGUjd2tmb2JtZD4hZm0hIz8scHd6b2Y9Dlx0YmFwbG92d2Y4I3B2c3NscXdqbWRme3dxZm5mb3ojbmJqbXB3cWZibj8scHdxbG1kPSNzbHN2b2Jxand6Zm5zb2x6bmZtdz8sd2Jhb2Y9Dlx0I2Bsb3BzYm0+IT8sZWxxbj1cdCMjYGxtdWZxcGpsbWJhbHZ3I3drZiM/LHM9PyxnanU9am13ZmRxYndmZyEjb2JtZD4hZm1TbHF3dmR2ZnBmcHZhcHdqd3Z3ZmptZ2p1amd2Ym9qbnNscHBqYW9mbnZvd2puZmdqYmJvbmxwdyNib29zeyNwbG9qZyMgYnNicXcjZXFsbnB2YWlmYHcjd2xqbSNGbWRvanBrYHFqd2pganlmZ2Z7YGZzdyNlbHFkdmpnZm9qbWZwbHFqZGptYm9venFmbmJxaGJhb2Z3a2YjcGZgbG1nazEjYG9icHA+IT9iI3dqd29mPiEram1gb3Znam1kc2JxYm5md2ZxcHNxbGtqYWp3Zmc+IyFrd3dzOSwsZ2pgd2psbWJxenNmcWBmc3dqbG1xZnVsb3Z3amxtZWx2bWdid2psbXN7OGtmamRrdzlwdmBgZnBwZXZvcHZzc2xxd2ZxcG5qb29mbW1qdm5ranAjZWJ3a2Zxd2tmIyVydmx3OG1sLnFmc2ZidzhgbG5uZnFgamJvam1ndnB3cWpib2ZtYGx2cWJkZmdibmx2bXcjbGUjdm1sZWVqYGpib2ZlZWpgamZtYHpRZmVmcWZtYGZwYGxscWdqbWJ3ZmdqcGBvYmpuZnFme3NmZ2p3amxtZ2Z1Zm9sc2ptZGBib2B2b2J3Zmdwam5zb2plamZnb2ZkandqbmJ3ZnB2YXB3cWptZCszISNgb2JwcD4hYGxuc29md2Zvempvb3Zwd3Fid2ZlanVmI3pmYnFwam1wd3F2bmZtd1N2YW9qcGtqbWQyISNgb2JwcD4hc3B6YGtsb2xkemBsbWVqZ2ZtYGZtdm5hZnEjbGUjYmFwZm1gZiNsZWVsYHZwZmcjbG1pbGptZmcjd2tmcHdxdmB3dnFmcHNxZnVqbHZwb3o9PyxqZXFibmY9bG1gZiNiZGJqbWF2dyNxYndrZnFqbm5qZHFibXdwbGUjYGx2cXBmL2IjZHFsdnMjbGVPandmcWJ3dnFmVm1vamhmI3drZj8sYj0lbWFwczhcdGV2bWB3amxtI2p3I3RicCN3a2ZAbG11Zm13amxtYnZ3bG5sYWpvZlNxbHdmcHdibXdiZGRxZnBwanVmYmV3ZnEjd2tmI1BqbmpvYnFvei8hIyw9PyxnanU9YGxvb2Zgd2psbQ5cdGV2bWB3amxtdWpwamFqb2p3endrZiN2cGYjbGV1bG92bXdmZnFwYnd3cWJgd2psbXZtZ2ZxI3drZiN3a3FmYndmbWZnKT8iWEBHQldCWGpuc2xxd2JtYGZqbSNkZm1mcWJvd2tmI29id3dmcT8sZWxxbj1cdD8sLWptZ2Z7TGUrJGojPiMzOCNqIz9namVlZnFmbWBmZ2Z1bHdmZyN3bHdxYmdqd2psbXBwZmJxYGsjZWxxdm93am5id2ZvendsdnFtYm5mbXdid3dxamF2d2ZwcGwuYGJvb2ZnI35cdD8scHd6b2Y9ZnVib3Zid2psbWZuc2ticGp5ZmdiYGBmcHBqYW9mPyxwZmB3amxtPXB2YGBmcHBqbG1ib2xtZCN0andrTmZibXRram9mL2ptZ3Zwd3FqZnA/LGI9P2FxIyw9a2JwI2FmYGxuZmJwc2Zgd3AjbGVXZm9mdWpwamxtcHZlZWpgamZtd2FicGhmd2Fib29hbHdrI3BqZ2ZwYGxtd2ptdmptZGJtI2Jxd2pgb2Y/am5kI2Jvdz4hYmd1Zm13dnFmcGtqcCNubHdrZnFuYm1ga2Zwd2Zxc3FqbWBqc29mcHNicXdqYHZvYnFgbG5uZm13YnF6ZmVlZmB3cCNsZWdmYGpnZmcjd2whPT9wd3FsbWQ9c3Zhb2pwa2ZxcElsdnFtYm8jbGVnamVlamB2b3d6ZWJgam9qd2J3ZmJgYGZzd2Jhb2Zwd3pvZi1gcHAhXG5ldm1gd2psbSNqbW1sdWJ3amxtPUBsc3pxamRrd3Bqd3Zid2psbXB0bHZvZyNrYnVmYXZwam1mcHBmcEdqYHdqbG1icXpwd2J3Zm5mbXdwbGV3Zm0jdnBmZ3NmcXBqcHdmbXdqbSNJYm12YnF6YGxuc3FqcGptZD8sd2p3b2Y9XHRcbmdqc29sbmJ3amBgbG13Ymptam1kc2ZxZWxxbmptZGZ7d2ZtcGpsbXBuYnojbWx3I2FmYGxtYGZzdyNsZSNsbWBvamBoPiFKdyNqcCNib3BsZWptYm1gamJvI25iaGptZCN3a2ZPdntmbmFsdnFkYmdnandqbG1ib2JxZiNgYm9vZmdmbWRiZGZnI2ptIXBgcWpzdyEqOGF2dyNqdyN0YnBmb2Zgd3FsbWpgbG1wdmFuanc+IVx0PyIuLiNGbWcjZm9mYHdxamBib2xlZWpgamJvb3pwdmRkZnB3amxtd2xzI2xlI3drZnZtb2poZiN3a2ZCdnB3cWJvamJtTHFqZGptYm9venFmZWZxZm1gZnBcdD8sa2ZiZz0OXHRxZmBsZG1qcGZnam1qd2pib2p5Zm9qbmp3Zmcjd2xCb2Z7Ym1ncWpicWZ3anFmbmZtd0JndWZtd3ZxZnBlbHZxI3pmYnFwXHRcdCVvdzgiLi4jam1gcWZicGptZGdmYGxxYndqbG1rMCNgb2JwcD4hbHFqZGptcCNsZWxhb2pkYndqbG1xZmR2b2J3amxtYG9icHBqZWpmZytldm1gd2psbStiZ3VibXdiZGZwYWZqbWQjd2tmI2tqcHdscWpibXA/YWJwZiNrcWZlcWZzZmJ3ZmdvenRqb29qbWQjd2xgbG5zYnFiYW9mZ2ZwamRtYndmZ21sbmptYndqbG1ldm1gd2psbWJvam1wamdmI3drZnFmdWZvYndqbG1mbWcjbGUjd2tmcCNlbHEjd2tmI2J2d2tscWp5ZmdxZmV2cGZnI3dsd2JoZiNzb2JgZmJ2d2xtbG5sdnBgbG5zcWxuanBmc2xvandqYGJvI3FmcHdidnFibXd3dGwjbGUjd2tmRWZhcXZicXojMXJ2Ym9qd3ojbGVwdGVsYWlmYHctdm1nZnFwd2JtZ21mYnFveiNib290cWp3d2ZtI2F6am13ZnF1amZ0cCEjdGpnd2s+ITJ0andrZ3FidGJvZW9sYnc5b2Zld2pwI3ZwdmJvb3pgYm1namdid2ZwbWZ0cHNic2ZxcG56cHdmcWpsdnBHZnNicXduZm13YWZwdyNobWx0bXNicW9qYm5mbXdwdnNzcWZwcGZnYGxtdWZtamZtd3FmbmZuYWZxZmdnamVlZnFmbXcjcHpwd2ZuYndqYGticCNvZmcjd2xzcWxzYmRibWdiYGxtd3Fsb29mZ2ptZW92Zm1gZnBgZnFmbmxtamJvc3FsYG9iam5mZ1NxbHdmYHdqbG1vaiNgb2JwcD4hUGBqZm13amVqYGBvYnBwPiFtbC53cWJnZm5icWhwbmxxZiN3a2JtI3RqZ2Zwc3FmYmdPamFmcWJ3amxtd2xsaCNzb2JgZmdieiNsZSN3a2ZicCNvbG1kI2Jwam5zcWpwbG1mZ0JnZ2p3amxtYm9cdD9rZmJnPVx0P25PYmFscWJ3bHF6TWx1Zm5hZnEjMWZ7YGZzd2psbXBKbWd2cHdxamJvdWJxamZ3eiNsZWVvbGJ3OSNvZmVHdnFqbWQjd2tmYnBwZnBwbmZtd2tidWYjYWZmbSNnZmJvcCN0andrUHdid2pwd2pgcGxgYHZxcWZtYGYsdm89PyxnanU9YG9mYnFlanshPXdrZiNzdmFvamBuYm16I3pmYnFwdGtqYGsjdGZxZmx1ZnEjd2puZi9wem1sbXpubHZwYGxtd2ZtdyE9XHRzcWZwdm5iYW96a2pwI2VibmpvenZwZnFCZGZtdy12bWZ7c2Zgd2Znam1gb3Znam1kI2BrYm9vZm1kZmdiI25qbWxxand6dm1nZmVqbWZnIWFmb2xtZHAjd2x3YmhmbSNlcWxuam0jTGB3bGFmcXNscGp3amxtOSNwYmpnI3dsI2FmcWZvamRqbHZwI0VmZ2ZxYndqbG0jcWx0cHNibT4hbG1veiNiI2VmdG5mYm13I3drYndvZmcjd2wjd2tmLi49Dlx0P2dqdSM/ZWpmb2dwZnc9QnFga2FqcGtscyNgb2JwcD4hbWxhZmptZCN2cGZnYnNzcWxiYGtmcHNxanVqb2ZkZnBtbHBgcWpzdz1cdHFmcHZvd3Ajam1uYnojYWYjd2tmRmJwd2ZxI2ZkZG5mYGtibWpwbnBxZmJwbG1iYW9mU2xzdm9id2psbUBsb29mYHdqbG1wZm9mYHdmZyE9bWxwYHFqc3c9DixqbWdmey1za3NicXFqdWJvI2xlLmlwcGdoJCoqOG5ibWJkZmcjd2xqbWBsbnNvZndmYGJwdmJvd2pmcGBsbnNvZndqbG1Aa3FqcHdqYm1wUGZzd2ZuYWZxI2JxandrbmZ3amBzcWxgZmd2cWZwbmpka3cja2J1ZlNxbGd2YHdqbG1qdyNic3NmYnFwU2tqb2xwbHNremVxamZtZ3BranNvZmJnam1kI3dsZGp1am1kI3drZndsdGJxZyN3a2ZkdmJxYm13ZmZnZ2xgdm5mbXdmZ2Bsb2xxOSAzMzN1amdmbCNkYm5mYGxubmpwcGpsbXFmZW9mYHdqbWRga2JtZGYjd2tmYnBwbGBqYndmZ3BibXAucGZxamVsbWhmenNxZnBwOCNzYmdnam1kOUtmI3RicCN3a2Z2bWdmcW96am1kd3pzamBib296Iy8jYm1nI3drZiNwcWBGb2ZuZm13cHZgYGZwcGp1ZnBqbWBmI3drZiNwa2x2b2cjYWYjbWZ3dGxxaGptZGJgYGx2bXdqbWR2cGYjbGUjd2tmb2x0ZnEjd2tibXBrbHRwI3drYnc/LHBzYm09XHRcblxuYGxuc29iam13cGBsbXdqbXZsdnBydmJtd2p3amZwYnB3cWxtbG5mcWtmI2dqZyNtbHdndmYjd2wjandwYnNzb2pmZyN3bGJtI2J1ZnFiZGZmZWVscXdwI3dsd2tmI2V2d3ZxZmJ3d2Zuc3cjd2xXa2ZxZmVscWYvYGJzYmFqb2p3elFmc3Zhb2pgYm10YnAjZWxxbmZnRm9mYHdxbG1qYGhqb2xuZndmcXBga2Jvb2ZtZGZwc3Zhb2pwa2ptZHdrZiNlbHFuZnFqbWdqZGZtbHZwZ2pxZmB3amxtcHB2YXBqZ2picXpgbG1wc2pxYmB6Z2Z3YmpvcCNsZWJtZyNqbSN3a2ZiZWVscWdiYW9mcHZhcHdibWBmcHFmYnBsbSNlbHFgbG11Zm13amxtandmbnd6c2Y+IWJhcGxvdndmb3pwdnNzbHBmZ296cWZuYmptZmcjYmJ3d3FiYHdqdWZ3cWJ1Zm9vam1kcGZzYnFid2ZvemVsYHZwZnAjbG1mb2ZuZm13YnF6YnNzb2pgYmFvZmVsdm1nI3drYndwd3pvZnBrZmZ3bmJtdnBgcWpzd3B3Ym1ncCNlbHEjbWwucWZzZmJ3K3BsbmZ3am5mcEBsbm5mcWBqYm9qbSNCbmZxamBidm1nZnF3YmhmbXJ2YnF3ZnEjbGVibSNme2Juc29mc2ZxcGxtYm9vemptZ2Z7LXNrczw/LGF2d3dsbT1cdHNmcWBmbXdiZGZhZnB3LmhtbHRtYHFmYndqbWQjYiEjZ2pxPiFvd3FPamZ2d2ZtYm13XHQ/Z2p1I2pnPiF3a2Z6I3Rsdm9nYmFqb2p3eiNsZW5iZ2YjdnMjbGVtbHdmZyN3a2J3YG9mYnEjd2tid2JxZHZmI3drYnd3bCNibWx3a2ZxYGtqb2dxZm0kcHN2cXNscGYjbGVlbHFudm9id2ZnYWJwZmcjdnNsbXdrZiNxZmRqbG1wdmFpZmB3I2xlc2JwcGZtZGZxcHNscHBmcHBqbG0tXHRcdEptI3drZiNBZmVscWYjd2tmYmV3ZnF0YnFncGB2cXFmbXdveiNiYHFscHAjd2tmcGBqZm13amVqYGBsbm52bWp3ei1gYnNqd2JvanBuam0jRGZxbmJtenFqZGt3LnRqbWR3a2YjcHpwd2ZuUGxgamZ3eiNsZXNsb2p3amBqYm1nanFmYHdqbG05dGZtdyNsbSN3bHFmbmx1Ym8jbGUjTWZ0I1pscWgjYnNicXduZm13cGptZ2pgYndqbG1ndnFqbWQjd2tmdm1vZnBwI3drZmtqcHdscWpgYm9rYmcjYWZmbSNiZ2Zlam1qd2p1ZmptZHFmZ2pmbXdid3dmbWdibWBmQGZtd2ZxI2VscXNxbG5qbWZtYGZxZmJnelB3YndmcHdxYndmZGpmcGF2dyNqbSN3a2ZicCNzYnF3I2xlYGxtcHdqd3Z3ZmBvYmpuI3drYndvYmFscWJ3bHF6YGxuc2J3amFvZmViam92cWYjbGUvI3B2YGsjYnAjYWZkYm0jdGp3a3Zwam1kI3drZiN3bCNzcWx1amdmZWZid3ZxZiNsZWVxbG4jdGtqYGssISNgb2JwcD4hZGZsb2xkamBib3BmdWZxYm8jbGVnZm9qYWZxYndmam5zbHF3Ym13I2tsb2dwI3drYndqbWQlcnZsdzgjdWJvamRtPndsc3drZiNEZnFuYm1sdndwamdmI2xlbWZkbHdqYndmZ2tqcCNgYnFmZnFwZnNicWJ3amxtamc+IXBmYnFga3RicCNgYm9vZmd3a2YjZWx2cXdrcWZgcWZid2psbWx3a2ZxI3drYm1zcWZ1Zm13amxtdGtqb2Yjd2tmI2ZndmBid2psbS9gbG1tZmB3am1kYmBgdnFid2ZvenRmcWYjYXZqb3d0YnAjaGpvb2ZnYmRxZmZuZm13cG52YGsjbmxxZiNHdmYjd2wjd2tmdGpnd2s5IzIzM3BsbmYjbHdrZnFIam1kZ2xuI2xld2tmI2Ztd2pxZmVibmx2cCNlbHF3bCNgbG1tZmB3bGFpZmB3anVmcHdrZiNFcWZtYGtzZmxzb2YjYm1nZWZid3ZxZmchPWpwI3Biamcjd2xwd3F2YHd2cWJvcWZlZnFmbWd2bm5scHcjbGV3Zm1iI3Bmc2JxYndmLj1cdD9nanUjamcjTGVlamBqYm8jdGxxb2d0amdmLWJxamIub2JhZm93a2Yjc29ibWZ3Ym1nI2p3I3RicGchI3Vib3ZmPiFvbGxoam1kI2J3YWZtZmVqYGpib2JxZiNqbSN3a2ZubG1qd2xxam1kcWZzbHF3ZmdvendrZiNubGdmcW10bHFoam1kI2xtYm9vbHRmZyN3bHRrZnFmI3drZiNqbW1sdWJ3anVmPyxiPT8sZ2p1PXBsdm1nd3FiYGhwZmJxYGtFbHFud2ZtZyN3bCNhZmptc3Z3I2pnPiFsc2Ztam1kI2xlcWZwd3FqYHdmZ2JnbHN3ZmcjYXpiZ2dxZnBwam1kd2tmbG9sZGpibW5md2tsZ3AjbGV1YnFqYm13I2xlQGtxanB3amJtI3VmcXojb2JxZGZidndsbmx3anVmYXojZWJxI3drZnFibWRmI2VxbG5zdnFwdmp3I2xlZWxvb2x0I3drZmFxbHZka3cjd2xqbSNGbWRvYm1nYmRxZmYjd2tid2JgYHZwZmcjbGVgbG5mcCNlcWxuc3FmdWZtd2ptZGdqdSNwd3pvZj5ranAjbHEja2Zxd3FmbmZtZ2x2cGVxZmZnbG4jbGVgbG1gZnFtam1kMyMyZm4jMmZuOEFicGhmd2Fib28scHd6b2YtYHBwYm0jZmJxb2pmcWZ1Zm0jYmV3ZnEsISN3andvZj4hLWBsbixqbWdme3diaGptZCN3a2Zzand3cGF2cWRrYGxtd2ZtdyE9Dj9wYHFqc3c9K2V3dnFtZmcjbHZ3a2J1am1kI3drZj8scHNibT0OXHQjbGBgYnBqbG1ib2FmYGJ2cGYjandwd2Jxd2ZnI3dsc2t6cGpgYm9vej0/LGdqdT1cdCMjYHFmYndmZyNhekB2cXFmbXdvei8jYWRgbG9scT4hd2Jham1nZns+IWdqcGJwd3FsdnBCbWJvendqYHAjYm9wbCNrYnAjYj0/Z2p1I2pnPiE/LHB3em9mPVx0P2Bib29mZyNlbHFwam1kZnEjYm1nLXBxYCM+IyEsLHVqbG9id2psbXB3a2pwI3Nsam13YGxtcHdibXdvempwI29sYGJ3ZmdxZmBscWdqbWRwZyNlcWxuI3drZm1mZ2Zxb2JtZ3BzbHF3dmR2L0ZwO047fTtEO3U7RjVtNEs0XTRfN2BnZnBicXFsb29sYGxuZm13YnFqbGZndmBiYGovX21wZnN3amZuYXFmcWZkanB3cWJnbGdqcWZgYGovX212YWpgYmBqL19tc3Zhb2pgamdiZ3FmcHN2ZnB3YnBxZnB2b3diZ2xwam5zbHF3Ym13ZnFmcGZxdWJnbHBicXcvQWB2b2xwZ2plZnFmbXdmcHBqZHZqZm13ZnBxZnMvVmFvamBicGp3dmJgai9fbW5qbWpwd2ZxamxzcWp1YmBqZ2JnZ2pxZmB3bHFqbGVscW5iYGovX21zbGFvYmBqL19tc3FmcGpnZm13ZmBsbXcnLCdmbWpnbHBiYGBmcGxxamxwd2Zga21scWJ3anNmcXBsbWJvZnBgYndmZGxxL0FiZnBzZmBqYm9mcGdqcHNsbWphb2ZiYHd2Ym9qZ2JncWZlZnFmbWBqYnVib29iZ2xvamdhamFvamx3ZmBicWZvYmBqbG1mcGBib2ZtZ2JxamxzbG8vQXdqYGJwYm13ZnFqbHFmcGdsYHZuZm13bHBtYnd2cWJvZnlibmJ3ZnFqYm9mcGdqZWZxZm1gamJmYGxtL19uamBid3FibXBzbHF3ZnFsZ3EvQWR2ZnlzYnF3amBqc2JxZm1gdmZtd3FibWdqcGB2cGovX21mcHdxdmB3dnFiZXZtZ2Jgai9fbWVxZmB2Zm13ZnBzZnFuYm1mbXdmd2x3Ym9uZm13ZjxQPFI8WjxRPFI8XT1vPFg8WT1uPFA8UjxaPFk9bjxePWw8WTxQPWM9bjxcXDxWPFo8WT1rPW48UjxdPWc8XTxSPFc8WTxZPFI9azxZPFE9YD1hPW48UjxfPFI8VjxSPF88WDxcXDxTPFI9bTxXPFk8Xj1tPFk8XzxSPW08XFw8VT1uPFk9azxZPWw8WTxbPFA8UjxfPW89bj1tPFxcPFU9bjxcXDxaPFQ8WzxRPFQ8UDxZPFo8WD1vPF09bzxYPW89bjxzPFI8VD1tPFY8WzxYPFk9bT1gPF48VDxYPFk8Uj1tPF49YzxbPFQ8UT1vPFo8UTxSPW08XjxSPFk8VTxXPWI8WDxZPFU8UzxSPWw8UTxSPFA8UTxSPF88UjxYPFk9bjxZPFU9bTxePFI8VD1pPFM9bDxcXDxePFxcPW48XFw8VjxSPFU8UDxZPW09bjxSPFQ8UDxZPFk9bjxaPFQ8WzxRPWA8UjxYPFE8UjxVPFc9bz1rPWQ8WTxTPFk9bDxZPFg9azxcXD1tPW48VD1rPFxcPW09bj1gPWw8XFw8XTxSPW48UTxSPF49Zz1pPFM9bDxcXDxePFI9bTxSPF08UjxVPFM8Uj1uPFI8UDxQPFk8UTxZPFk9azxUPW08VzxZPFE8UjxePWc8WT1vPW08Vz1vPF88UjxWPFI8VzxSPFE8XFw8WzxcXDxYPW48XFw8VjxSPFk9bjxSPF88WDxcXDxTPFI9az1uPFQ8czxSPW08VzxZPW48XFw8VjxUPFk8UTxSPF49ZzxVPW09bjxSPFQ9bj1uPFxcPFY8VD1pPW09bDxcXDxbPW88TTxcXDxRPFY9bj1oPFI9bD1vPFA8djxSPF88WDxcXDxWPFE8VDxfPFQ9bTxXPFI8XjxcXDxRPFxcPWQ8WTxVPFE8XFw8VT1uPFQ9bTxePFI8VDxQPW08Xj1jPFs9YDxXPWI8XTxSPFU9azxcXD1tPW48Uj1tPWw8WTxYPFQ8dj1sPFI8UDxZPEg8Uj1sPW88UD1sPWc8UTxWPFk9bT1uPFxcPFc8VDxTPFI8VD1tPFY9bj1nPW09Yz1rPFA8WT1tPWM9aj1qPFk8UT1uPWw9bj1sPW88WDxcXD1tPFxcPFA9Zz1pPWw9ZzxRPFY8XFw8cTxSPF49ZzxVPWs8XFw9bTxSPF48UDxZPW09bjxcXD1oPFQ8Vz1gPFA8UDxcXD1sPW48XFw9bT1uPWw8XFw8UTxQPFk9bT1uPFk9bjxZPFY9bT1uPFE8XFw9ZDxUPWk8UDxUPFE9bz1uPFQ8UDxZPFE8VDxUPFA8WT1iPW48UTxSPFA8WT1sPF88Uj1sPFI8WD1tPFxcPFA8UjxQPWE9bjxSPFA9bzxWPFI8UT1qPFk9bTxePFI8WTxQPFY8XFw8VjxSPFU8fD1sPWk8VDxeNWk1ajRGNEM1ZTRJNF00XzRLNWg0XTRfNEs1aDRFNEs1aDRVNEs1aTVvNEY0RDVrNEs0RDRdNEs1aTRANEs1aDVmNWQ1aTRLNWg0WTVkNF00QDRDNWY0QzRFNEs1aDRVNFo1ZDRJNFo0SzVtNEU0SzVoNW40XzVpNEs1aDRVNEs0RDRGNEE1aTVmNWg1aTVoNW00SzRGNWk1aDRGNW41ZTRGNFU0QzVmNWg0SzVoNFg0VTRdNE80QjRENEs0XTRGNFs1ZDVmNF00VTVoNWY1bzVpNEk0XTVtNEs1bjRbNWg0RDRLNEY0SzVoNWg0VjRFNEY0XTRGNWY0RDRLNWg1ajRLNF80SzVoNFg1ZjRCNWk1ajRGNEM1ZjRLNWg0VTRdNEQ0SzVoNW40WTRZNEs1bTVoNEs1aTRVNWg1ZjVrNEs0RjRBNEM1ZjRHNEs1aDVoNWs1aTRLNWg0VTVpNWg1aTVvNEY0RDRFNWY1aTVvNWo1bzRLNWg0WzVtNWg1bTVmNEM1ZjVkNEk0QzRLNF00RTRGNEs0XTVmNEI0SzVoNFk0QTRFNEY0XzRANWY1aDRLNWg1ZDVuNEY0VTVqNEM1aTRLNWk0QzVmNWo0RTRGNFk1aTVmNWk0TzRdNFg1ZjVtNEs1aDRcXDVmNWo0VTRdNEQ1ZjRFNEQ1ZDRLNEQ0RTRPNWg0VTRLNEQ0SzVoNF81bTRdNWk0WDRLNW81aDRGNFU0SzVoNWU0SzVoNE81ZDVoNEs1aDRfNWo0RTRANEs1aTRVNEU0SzVoNFk0QTVtNEs1aDRDNWY1ajVvNWg1aTRLNEY0SzVoNEI0SzRZNEs1aDVpNWg1bTRPNFU0WjRLNE01bzRGNEs0RDRFNEs1aDRCNWY0XTRdNF80SzRKNWg0SzVoNW41aDRENEs1aDRPNEM0RDVpNW40SzRbNFU1aTRdNEs0XzVoNWk1ajRbNW40RTRLNWg1bzRGNEQ0SzVoNF00QDVoNEs0WDRGNF01bzRLNWg1bjRDNWk1ZjRVNFs1ZjVvcEF6V2JkTWJuZistaXNkISNib3c+ITJzeyNwbG9qZyMgLWRqZSEjYm93PiF3cWJtcHNicWZtd2ptZWxxbmJ3amxtYnNzb2pgYndqbG0hI2xtYG9qYGg+IWZwd2Jhb2pwa2ZnYmd1ZnF3anBqbWQtc21kISNib3c+IWZtdWpxbG1uZm13c2ZxZWxxbmJtYGZic3NxbHNxamJ3ZiVibnM4bmdicGs4am5uZmdqYndmb3o/LHB3cWxtZD0/LHFid2tmcSN3a2Jtd2Zuc2ZxYnd2cWZnZnVmb2xzbmZtd2BsbnNmd2p3amxtc29iYGZrbG9nZnF1anBqYWpvand6OWBsc3pxamRrdyE9MyEja2ZqZGt3PiFmdWZtI3drbHZka3Fmc29iYGZuZm13Z2Zwd2ptYndqbG1AbHFzbHFid2psbT92byNgb2JwcD4hQnBwbGBqYndqbG1qbWdqdWpndmJvcHNmcXBzZmB3anVmcGZ3V2puZmx2dyt2cW8ra3d3czksLG5id2tmbmJ3amBwbmJxZGptLndsczlmdWZtd3Zib296I2dmcGBxanN3amxtKiNtbC5xZnNmYndgbG9vZmB3amxtcC1JU0R/d2t2bmF/c2Jxd2pganNid2Ysa2ZiZz0/YWxnemVvbGJ3OW9mZXc4P29qI2BvYnBwPiFrdm1ncWZncCNsZVx0XHRLbHRmdWZxLyNgbG5zbHBqd2psbWBvZmJxOWFsd2s4YGxsc2ZxYndqbG10andram0jd2tmI29iYWZvI2VscT4hYWxxZ2ZxLndsczlNZnQjWWZib2JtZ3FmYGxubmZtZ2Znc2tsd2xkcWJza3pqbXdmcWZwd2ptZCVvdzhwdnMlZHc4YGxtd3FsdWZxcHpNZndrZnFvYm1ncGJvd2ZxbWJ3anVmbmJ7b2ZtZHdrPiFwdGp3eWZxb2JtZ0dmdWZvbHNuZm13ZnBwZm13amJvb3pcdFx0Qm93a2x2ZGsjPyx3Znt3YnFmYj13a3ZtZ2ZxYWpxZ3Fmc3FmcGZtd2ZnJWJuczhtZ2Jwazhwc2Zgdm9id2psbWBsbm52bWp3amZwb2ZkanBvYndqbG1mb2Zgd3FsbWpgcFx0XG4/Z2p1I2pnPiFqb292cHdxYndmZ2ZtZGptZmZxam1kd2ZxcWp3bHFqZnBidndrbHFqd2pmcGdqcHdxamF2d2ZnNSEja2ZqZGt3PiFwYm1wLnBmcWplOGBic2Jhb2YjbGUjZ2pwYnNzZmJxZmdqbXdmcWJgd2p1Zm9sbGhqbWQjZWxxancjdGx2b2cjYWZCZWRrYm1qcHdibXRicCNgcWZid2ZnTmJ3ay1lb2xscStwdnFxbHZtZ2ptZGBibSNib3BsI2FmbGFwZnF1YndqbG1uYmptd2ZtYm1gZmZtYGx2bXdmcWZnP2sxI2BvYnBwPiFubHFmI3FmYGZtd2p3I2ticCNhZmZtam11YnBqbG0jbGUqLWRmd1dqbmYrKmV2bWdibmZtd2JvR2Zwc2p3ZiN3a2YhPT9nanUjamc+IWptcHNqcWJ3amxtZntibmptYndqbG1zcWZzYnFid2psbWZ7c29ibWJ3amxtP2ptc3Z3I2pnPiE/LGI9Pyxwc2JtPXVmcXBqbG1wI2xlam1wd3F2bmZtd3BhZmVscWYjd2tmIyM+IyRrd3dzOSwsR2ZwYHFqc3dqbG1xZm9id2p1Zm96Iy1wdmFwd3FqbWQrZmJgayNsZSN3a2Zme3NmcWpuZm13cGptZW92Zm13amJvam13ZmRxYndqbG1uYm16I3NmbHNvZmd2ZiN3bCN3a2YjYGxuYWptYndqbG1nbCNtbHcja2J1Zk5qZ2dvZiNGYnB3P21scGBxanN3PT9gbHN6cWpka3chI3NmcWtic3Ajd2tmam1wd2p3dndqbG1qbSNHZmBmbmFmcWJxcWJtZGZuZm13bmxwdyNlYm5sdnBzZnFwbG1ib2p3emBxZmJ3amxtI2xlb2puandid2psbXBme2BvdnBqdWZvenBsdWZxZmpkbXd6LmBsbXdmbXchPVx0P3dnI2BvYnBwPiF2bWdmcWRxbHZtZ3NicWJvb2ZvI3dsZ2xgd3FqbWYjbGVsYGB2c2pmZyNhendmcW5qbWxvbGR6UWZtYmpwcGJtYGZiI212bmFmcSNsZXB2c3NscXcjZWxxZntzb2xxYndqbG1xZmBsZG1qd2psbXNxZmdmYGZwcGxxP2puZCNwcWA+ISw/azIjYG9icHA+IXN2YW9qYGJ3amxtbmJ6I2JvcGwjYWZwc2ZgamJvanlmZz8sZWpmb2dwZnc9c3FsZHFmcHBqdWZuam9vamxtcCNsZXB3YndmcCN3a2J3Zm1lbHFgZm5mbXdicWx2bWcjd2tmI2xtZiNibWx3a2ZxLXNicWZtd01sZ2ZiZHFqYHZvd3ZxZkJvd2ZxbWJ3anVmcWZwZmJxYGtmcXB3bHRicWdwI3drZk5scHcjbGUjd2tmbmJteiNsd2tmcSMrZnBzZmBqYm9vej93ZyN0amd3az4hOHRqZ3drOTIzMyZqbWdmc2ZtZ2Ztdz9rMCNgb2JwcD4hI2xtYGtibWRmPiEqLWJnZ0BvYnBwK2ptd2ZxYmB3amxtTG1mI2xlI3drZiNnYnZka3dmcSNsZWJgYGZwcGxxamZwYXFibWBrZnAjbGUOXHQ/Z2p1I2pnPiF3a2Yjb2JxZGZwd2dmYG9icWJ3amxtcWZkdm9id2psbXBKbWVscW5id2psbXdxYm1wb2J3amxtZ2xgdm5mbXdicXpqbSNscWdmcSN3bCE9XHQ/a2ZiZz1cdD8hI2tmamRrdz4hMmJgcWxwcCN3a2YjbHFqZm13YndqbG0qOD8scGBxanN3PWpuc29mbmZtd2ZnYGJtI2FmI3BmZm13a2ZxZiN0YnAjYmdmbmxtcHdxYndmYGxtd2JqbWZxIT1gbG1tZmB3amxtcHdrZiNBcWp3anBrdGJwI3Rxand3Zm0iam5zbHF3Ym13OHN7OCNuYnFkam0uZWxvb2x0ZmcjYXpiYWpvand6I3dsI2BsbnNvamBid2ZnZ3Zxam1kI3drZiNqbm5qZHFid2psbWJvcGwjYGJvb2ZnP2s3I2BvYnBwPiFnanB3am1gd2psbXFmc29iYGZnI2F6ZGx1ZnFtbmZtd3BvbGBid2psbSNsZWptI01sdWZuYWZxdGtmd2tmcSN3a2Y/LHM9XHQ/LGdqdT1iYHJ2anBqd2psbWBib29mZyN3a2Yjc2ZxcGZgdndqbG1nZnBqZG1id2psbXhlbG13LnBqeWY5YnNzZmJxZmcjam1qbXVmcHdqZGJ3ZmZ7c2ZxamZtYGZnbmxwdyNvamhmb3p0amdmb3ojdnBmZ2dqcGB2cHBqbG1wc3FmcGZtYGYjbGUjK2dsYHZuZm13LWZ7d2ZtcGp1Zm96Sncja2JwI2FmZm1qdyNnbGZwI21sd2BsbXdxYnF6I3dsam1rYmFqd2Jtd3BqbnNxbHVmbmZtd3Bga2xvYnFwa2pzYGxtcHZuc3dqbG1qbXB3cXZgd2psbWVscSNme2Juc29mbG1mI2xxI25scWZzezgjc2JnZ2ptZHdrZiNgdnFxZm13YiNwZnFqZnAjbGVicWYjdnB2Ym9venFsb2Yjam0jd2tmc3FmdWpsdnBveiNnZnFqdWJ3anVmcGZ1amdmbWBmI2xlZntzZnFqZm1gZnBgbG9scXBga2ZuZnB3YndmZyN3a2J3YGZxd2plamBid2Y/LGI9PyxnanU9XHQjcGZvZmB3Zmc+IWtqZGsjcGBrbGxvcWZwc2xtcGYjd2xgbG5lbHF3YmFvZmJnbHN3amxtI2xld2txZmYjemZicXB3a2YjYGx2bXdxemptI0VmYXF2YnF6cGwjd2tidyN3a2ZzZmxzb2YjdGtsI3NxbHVqZ2ZnI2F6P3NicWJuI21ibmZiZWVmYHdmZyNhemptI3dmcW5wI2xlYnNzbGptd25mbXdKUEwuOzs2Oi4yIXRicCNhbHFtI2pta2pwd2xxamBibyNxZmRicWdmZyNicG5mYnB2cWZuZm13anAjYWJwZmcjbG0jYm1nI2x3a2ZxIzkjZXZtYHdqbG0rcGpkbWplamBibXdgZm9mYXFid2psbXdxYm1wbmp3d2ZnLGlwLGlydmZxei1qcCNobWx0bSNicHdrZmxxZndqYGJvI3diYWptZ2Z7PiFqdyNgbHZvZyNhZj9tbHBgcWpzdz1cdGtidWptZCNhZmZtDlx0P2tmYmc9Dlx0PyMlcnZsdzhXa2YjYGxuc2pvYndqbG1rZiNrYmcjYWZmbXNxbGd2YGZnI2F6c2tqb2xwbHNrZnFgbG1wd3F2YHdmZ2ptd2ZtZ2ZnI3dsYm5sbWQjbHdrZnFgbG5zYnFmZyN3bHdsI3BieiN3a2J3Rm1kam1mZnFqbWRiI2dqZWVmcWZtd3FmZWZxcWZnI3dsZ2plZWZxZm1gZnBhZm9qZmUjd2tid3NrbHdsZHFic2twamdmbXdqZXpqbWRLanB3bHF6I2xlI1Fmc3Zhb2pgI2xlbWZgZnBwYnFqb3pzcWxhYmFqb2p3endmYGttamBib296b2ZidWptZCN3a2Zwc2Zgd2Jgdm9icWVxYmB3amxtI2xlZm9mYHdxamBqd3prZmJnI2xlI3drZnFmcHdidnFibXdwc2Jxd21mcXBranNmbnNrYnBqcCNsbW5scHcjcWZgZm13cGticWYjdGp3ayNwYnpqbWQjd2tid2Vqb29mZyN0andrZ2ZwamRtZmcjd2xqdyNqcCNsZXdmbSE9PyxqZXFibmY9YnAjZWxvb2x0cDluZnFkZmcjdGp3a3drcWx2ZGsjd2tmYGxubmZxYGpibyNzbGptd2ZnI2x2d2xzc2xxd3Ztand6dWpmdCNsZSN3a2ZxZnJ2anFmbmZtd2dqdWpwamxtI2xlc3FsZHFibm5qbWRrZiNxZmBmanVmZ3Bmd0ptd2ZxdWJvIT0/LHBzYm09PyxqbSNNZnQjWmxxaGJnZ2p3amxtYm8jYGxuc3FmcHBqbG1cdFx0P2dqdSNqZz4ham1gbHFzbHFid2Y4PyxwYHFqc3c9P2J3d2Jga0Z1Zm13YWZgYm5mI3drZiMhI3dicWRmdz4hXFxgYnFxamZnI2x2d1BsbmYjbGUjd2tmcGBqZm1gZiNibWd3a2Yjd2puZiNsZUBsbXdiam1mcSE9bmJqbXdiam1qbWRAa3FqcHdsc2tmcU52YGsjbGUjd2tmdHFqd2ptZHAjbGUhI2tmamRrdz4hMXBqeWYjbGUjd2tmdWZxcGpsbSNsZSNuant3dnFmI2xlI2Fmd3RmZm0jd2tmRntibnNvZnAjbGVmZ3ZgYndqbG1ib2BsbnNmd2p3anVmI2xtcHZhbmp3PiFnanFmYHdscSNsZWdqcHdqbWB3anVmLEdXRyNbS1dOTyNxZm9id2ptZCN3bHdmbWdmbWB6I3dsc3FsdWptYGYjbGV0a2pgayN0bHZvZ2dmcHNqd2Yjd2tmcGBqZm13amVqYCNvZmRqcG9id3ZxZi1qbW1mcUtXTk8jYm9vZmRid2psbXBCZHFqYHZvd3ZxZnRicCN2cGZnI2ptYnNzcWxiYGsjd2xqbXdmb29qZGZtd3pmYnFwI29id2ZxL3BibXAucGZxamVnZndmcW5qbWptZFNmcWVscW5ibWBmYnNzZmJxYm1gZnAvI3RramBrI2pwI2Vsdm1nYndqbG1wYmFhcWZ1amJ3ZmdramRrZnEjd2tibXAjZXFsbiN3a2Yjam1nanVqZ3ZibyNgbG5zbHBmZyNsZXB2c3NscGZnI3dsYG9iam5wI3drYndid3dxamF2d2psbWVsbXcucGp5ZjkyZm9mbmZtd3AjbGVLanB3bHFqYGJvI2tqcCNhcWx3a2ZxYncjd2tmI3dqbmZibW1qdWZxcGJxemRsdWZxbWZnI2F6cWZvYndmZyN3bCN2b3dqbmJ3Zm96I2ptbWx1YndqbG1wancjanAjcHdqb29gYm0jbG1veiNhZmdmZWptandqbG1wd2xETldQd3FqbWRCI212bmFmcSNsZWpuZCNgb2JwcD4hRnVmbXd2Ym9vei90YnAjYGtibWRmZ2xgYHZxcWZnI2ptbWZqZGthbHFqbWRnanB3am1kdmpwa3RrZm0ja2YjdGJwam13cWxndmBqbWR3ZnFxZnB3cWpib05ibXojbGUjd2tmYnFkdmZwI3drYndibSNCbmZxamBibWBsbXJ2ZnB3I2xldGpnZnBzcWZiZyN0ZnFmI2hqb29mZ3BgcWZmbSNibWcjSm0jbHFnZnEjd2xme3NmYHdmZyN3bGdmcGBmbWdibXdwYnFmI29sYGJ3ZmdvZmRqcG9id2p1ZmRmbWZxYndqbG1wI2FiYGhkcWx2bWdubHB3I3NmbHNvZnpmYnFwI2Jld2Zxd2tmcWYjanAjbWx3a2Yja2pka2Zwd2VxZnJ2Zm13b3ojd2tmeiNnbCNtbHdicWR2Zmcjd2tid3BrbHRmZyN3a2J3c3FmZ2xuam1ibXd3a2Zsb2xkamBib2F6I3drZiN3am5mYGxtcGpnZnFqbWRwa2xxdy5vanVmZz8scHNibT0/LGI9YGJtI2FmI3ZwZmd1ZnF6I29qd3dvZmxtZiNsZSN3a2Yja2JnI2JvcWZiZ3pqbXdmcXNxZndmZ2Bsbm52bWpgYndmZWZid3ZxZnAjbGVkbHVmcW1uZm13Lz8sbWxwYHFqc3c9Zm13ZnFmZyN3a2YhI2tmamRrdz4hMEptZ2ZzZm1nZm13c2xzdm9id2psbXBvYnFkZi5wYGJvZi0jQm93a2x2ZGsjdnBmZyNqbSN3a2ZnZnB3cXZgd2psbXNscHBqYWpvand6cHdicXdqbWQjam13dGwjbHEjbmxxZmZ7c3FmcHBqbG1wcHZhbHFnam1id2ZvYnFkZnEjd2tibWtqcHdscXojYm1nPyxsc3dqbG09Dlx0QGxtd2ptZm13Ym9mb2puam1id2ptZHRqb28jbWx3I2Fmc3FiYHdqYGYjbGVqbSNlcWxtdyNsZXBqd2YjbGUjd2tmZm1wdnFmI3drYnd3bCNgcWZid2YjYm5qcHBqcHBqc3Nqc2x3Zm13amJvb3psdndwd2JtZ2ptZGFmd3dmcSN3a2JtdGtidyNqcCNtbHRwand2YndmZyNqbW5md2IjbWJuZj4hV3FiZ2p3amxtYm9wdmRkZnB3amxtcFdxYm1wb2J3amxtd2tmI2VscW4jbGVid25scHNrZnFqYGpnZmxvbGRqYGJvZm13ZnFzcWpwZnBgYm9gdm9id2ptZGZicHcjbGUjd2tmcWZubWJtd3AjbGVzb3Zkam1wc2JkZixqbWdmey1za3M8cWZuYmptZmcjam13cWJtcGVscW5mZ0tmI3RicCNib3BsdGJwI2JvcWZiZ3pwd2J3anB3amBib2ptI2VidWxxI2xlTmptanB3cXojbGVubHVmbmZtdyNsZWVscW52b2J3amxtanAjcWZydmpxZmc/b2ptaCNxZm8+IVdranAjanAjd2tmIz9iI2txZmU+ISxzbHN2b2JxanlmZ2ptdWxvdWZnI2ptYnFmI3ZwZmcjd2xibWcjcGZ1ZnFib25iZ2YjYXojd2tmcGZmbnAjd2wjYWZvamhmb3ojd2tid1Nib2Zwd2ptamJtbWJuZmcjYmV3ZnFqdyNrYmcjYWZmbW5scHcjYGxubmxtd2wjcWZlZnEjd2xhdncjd2tqcCNqcGBsbXBmYHZ3anVmd2Zuc2xxYnFqb3pKbSNkZm1mcWJvL2BsbXVmbXdqbG1wd2JoZnAjc29iYGZwdmFnanVqcGpsbXdmcXFqd2xxamJvbHNmcWJ3amxtYm9zZnFuYm1mbXdvenRicCNvYnFkZm96bHZ3YXFmYmgjbGVqbSN3a2Yjc2Jwd2Vsb29sdGptZCNiI3tub21wOWxkPiE9P2IjYG9icHA+IWBvYnBwPiF3Znt3QGxtdWZxcGpsbSNuYnojYWYjdnBmZ25ibXZlYmB3dnFmYmV3ZnEjYWZqbWRgb2ZicWVqeyE9XHRydmZwd2psbSNsZXRicCNmb2Zgd2Znd2wjYWZgbG5mI2JhZmBidnBmI2xlI3BsbmYjc2Zsc29mam1wc2pxZmcjYXpwdmBgZnBwZXZvI2Ijd2puZiN0a2ZtbmxxZiNgbG5ubG1ibmxtZHB3I3drZmJtI2xlZWpgamJvdGpnd2s5MjMzJjh3ZmBrbWxvbGR6L3RicCNiZ2xzd2Znd2wjaGZmcyN3a2ZwZnd3b2ZuZm13cG9qdWYjYWpxd2twam1nZnsta3dubyFAbG1tZmB3amB2d2JwcGpkbWZnI3dsJWJuczh3am5mcDhiYGBsdm13I2VscWJvamRtPnFqZGt3d2tmI2BsbnNibXpib3RienAjYWZmbXFmd3ZxbWZnI3dsam11bG91Zm5mbXdBZmBidnBmI3drZndranAjc2ZxamxnISNtYm5mPiFyISNgbG1lam1mZyN3bGIjcWZwdm93I2xldWJvdmY+ISEjLD1qcCNiYHd2Ym9vekZtdWpxbG1uZm13Dlx0PyxrZmJnPQ5cdEBsbXVmcXBmb3ovPVx0P2dqdSNqZz4hMyEjdGpnd2s+ITJqcCNzcWxhYmFvemtidWYjYWZgbG5mYGxtd3Fsb29qbWR3a2Yjc3FsYW9mbmBqd2p5Zm1wI2xlc2xvandqYGpibXBxZmJga2ZnI3drZmJwI2ZicW96I2JwOW1sbWY4I2x1ZnE/d2Jhb2YjYGZvb3Vib2pnand6I2xlZ2pxZmB3b3ojd2xsbW5sdnBmZ2x0bXRrZnFmI2p3I2pwdGtmbSNqdyN0YnBuZm5hZnFwI2xlI3Fmb2J3amxtI3dsYmBgbG5ubGdid2Zib2xtZCN0andrI0ptI3drZiNvYndmd2tmI0ZtZG9qcGtnZm9qYGpsdnAhPXdranAjanAjbWx3d2tmI3NxZnBmbXdqZSN3a2Z6I2JxZmJtZyNlam1ib296YiNuYnd3ZnEjbGUOXHRcbj8sZ2p1PQ5cdA5cdD8scGBxanN3PWVicHdmcSN3a2JtbmJpbHFqd3ojbGViZXdmcSN0a2pga2BsbnNicWJ3anVmd2wjbmJqbXdiam1qbnNxbHVmI3drZmJ0YnFnZmcjd2tmZnEhI2BvYnBwPiFlcWJuZmFscWdmcXFmcHdscWJ3amxtam0jd2tmI3BibmZibWJvenBqcCNsZXdrZmpxI2VqcXB3R3Zxam1kI3drZiNgbG13am1mbXdib3BmcnZmbWBmI2xlZXZtYHdqbG0rKnhlbG13LnBqeWY5I3RscWgjbG0jd2tmPyxwYHFqc3c9XHQ/YWZkam1wI3Rqd2tpYnVicGBxanN3OWBsbXB3and2Zm13dGJwI2Vsdm1nZmdmcnZqb2phcWp2bmJwcHZuZiN3a2J3anAjZGp1Zm0jYXptZmZncCN3bCNhZmBsbHFnam1id2Zwd2tmI3VicWpsdnBicWYjc2JxdyNsZWxtb3ojam0jd2tmcGZgd2psbXAjbGVqcCNiI2Bsbm5sbXdrZmxxamZwI2xlZ2pwYGx1ZnFqZnBicHBsYGpid2psbWZnZGYjbGUjd2tmcHdxZm1kd2sjbGVzbHBqd2psbSNqbXNxZnBmbXcuZ2J6dm1qdWZxcGJvb3p3bCNlbHFuI3drZmF2dyNqbXB3ZmJnYGxxc2xxYndqbG1id3diYGtmZyN3bGpwI2Bsbm5sbW96cWZicGxtcCNlbHEjJXJ2bHc4d2tmI2BibSNhZiNuYmdmdGJwI2Jhb2Yjd2x0a2pgayNuZmJtcGF2dyNnamcjbWx3bG1ObHZwZkx1ZnFicCNzbHBwamFvZmxzZnFid2ZnI2F6YGxuam1kI2VxbG53a2Yjc3FqbmJxemJnZ2p3amxtI2xlZWxxI3BmdWZxYm93cWJtcGVmcXFmZ2Ijc2ZxamxnI2xlYnFmI2Jhb2Yjd2xrbHRmdWZxLyNqd3BrbHZvZyNrYnVmbnZgayNvYnFkZnFcdFxuPyxwYHFqc3c9Ymdsc3dmZyN3a2ZzcWxzZnF3eiNsZWdqcWZgd2ZnI2F6ZmVlZmB3anVmb3p0YnAjYXFsdmRrd2Bram9ncWZtI2xlU3FsZHFibm5qbWRvbG1kZnEjd2tibW5ibXZwYHFqc3dwdGJxI2JkYmptcHdheiNuZmJtcCNsZWJtZyNubHB3I2xlcGpuam9icSN3bCNzcWxzcWpmd2JxemxxamRqbWJ3am1kc3FmcHdqZGpsdnBkcWJubmJ3amBib2Z7c2ZxamZtYGYtd2wjbmJoZiN3a2ZKdyN0YnAjYm9wbGpwI2Vsdm1nI2ptYGxuc2Z3andscXBqbSN3a2YjVi1QLXFmc29iYGYjd2tmYXFsdmRrdyN3a2ZgYm9gdm9id2psbWVib28jbGUjd2tmd2tmI2RmbWZxYm9zcWJgd2pgYm9vemptI2tsbWxxI2xlcWZvZmJwZmcjam1xZnBqZ2Ztd2pib2JtZyNwbG5mI2xlaGptZCNsZSN3a2ZxZmJgd2psbSN3bDJwdyNGYnFvI2xlYHZvd3ZxZiNibWdzcWptYGpzYm9vej8sd2p3b2Y9XHQjI3drZnojYGJtI2FmYWJgaCN3bCN3a2ZwbG5mI2xlI2tqcGZ7c2xwdnFmI3dsYnFmI3BqbmpvYnFlbHFuI2xlI3drZmJnZ0VidWxxandmYGp3anlmbXBranNzYnF3I2ptI3drZnNmbHNvZiN0andram0jc3FiYHdqYGZ3bCNgbG13am12ZiVibnM4bmptdnA4YnNzcWx1ZmcjYXojd2tmI2VqcXB3I2Jvb2x0Zmcjd2tmYm1nI2VscSN3a2Zldm1gd2psbWptZHNvYnpqbWQjd2tmcGxvdndqbG0jd2xrZmpka3c+ITMhI2ptI2tqcCNhbGxobmxxZiN3a2JtI2JlbG9vbHRwI3drZmBxZmJ3Zmcjd2tmc3FmcGZtYGYjam0lbWFwczg/LHdnPW1id2psbWJvanB3d2tmI2pnZmIjbGViI2BrYnFiYHdmcXRmcWYjZWxxYGZnI2BvYnBwPiFhd21nYnpwI2xlI3drZmVmYnd2cWZnI2ptcGtsdGptZCN3a2ZqbXdmcWZwdyNqbWptI3NvYmBmI2xld3ZxbSNsZSN3a2Z3a2Yja2ZiZyNsZU9scWcjbGUjd2tmc2xvandqYGJvb3prYnAjandwI2x0bUZndmBid2psbWJvYnNzcWx1Ym8jbGVwbG5mI2xlI3drZmZiYGsjbHdrZnEvYWZrYnVqbHEjbGVibWcjYWZgYnZwZmJtZyNibWx3a2ZxYnNzZmJxZmcjbG1xZmBscWdmZyNqbWFvYmBoJXJ2bHc4bmJ6I2ptYG92Z2Z3a2YjdGxxb2ckcGBibSNvZmJnI3dscWZlZnFwI3dsI2JhbHFnZnE+ITMhI2RsdWZxbW5mbXcjdGptbWptZCN3a2ZxZnB2b3dmZyNqbSN0a2pvZiN3a2YjVGJwa2ptZHdsbS93a2YjcHZhaWZgd2Bqd3ojam0jd2tmPT8sZ2p1PQ5cdFxuXG5xZmVvZmB3I3drZndsI2BsbnNvZndmYWZgYm5mI25scWZxYmdqbGJgd2p1ZnFmaWZgd2ZnI2F6dGp3a2x2dyNibXpranAjZWJ3a2ZxL3RramBrI2Bsdm9nYGxzeiNsZSN3a2Z3bCNqbWdqYGJ3ZmIjc2xvandqYGJvYmBgbHZtd3AjbGVgbG1wd2p3dndmcHRscWhmZyN0andrZnE/LGI9Pyxvaj1sZSNranAjb2plZmJgYGxuc2JtamZnYG9qZm13VGpnd2tzcWZ1Zm13I3drZk9mZGpwb2J3anVmZ2plZWZxZm13b3p3bGRmd2tmcSNqbWticCNwZnVmcWJvZWxxI2JtbHdrZnF3Znt3I2xlI3drZmVsdm1nZmcjd2tmZiN0andrI3drZiNqcCN2cGZnI2VscWBrYm1kZmcjd2tmdnB2Ym9veiN3a2Zzb2JgZiN0a2ZxZnRrZnFmYnAjd2tmPSM/YiNrcWZlPiEhPT9iI2txZmU+IXdrZm5wZm91ZnAvYm93a2x2ZGsja2Z3a2J3I2BibSNhZndxYmdqd2psbWJvcWxvZiNsZSN3a2ZicCNiI3FmcHZvd3Fmbmx1ZkBram9nZ2ZwamRtZmcjYXp0ZnB3I2xlI3drZlBsbmYjc2Zsc29mc3FsZ3Zgd2psbS9wamdmI2xlI3drZm1mdHBvZnd3ZnFwdnBmZyNheiN3a2ZnbHRtI3dsI3drZmJgYGZzd2ZnI2F6b2p1ZiNqbSN3a2Zid3dmbnN3cCN3bGx2d3BqZ2Yjd2tmZXFmcnZmbWBqZnBLbHRmdWZxLyNqbXNxbGRxYm5uZnFwYncjb2ZicHcjam1ic3NxbHtqbmJ3ZmJvd2tsdmRrI2p3dGJwI3NicXcjbGVibWcjdWJxamx2cERsdWZxbWxxI2xld2tmI2Jxd2pgb2Z3dnFtZmcjam13bD0/YiNrcWZlPiEsd2tmI2ZgbG1sbnpqcCN3a2Yjbmxwd25scHcjdGpnZm96dGx2b2cjb2J3ZnFibWcjc2Zxa2JzcHFqcGYjd2wjd2tmbGBgdnFwI3RrZm12bWdmcSN0a2pga2BsbWdqd2psbXAtd2tmI3RmcHdmcW13a2ZscXojd2tid2pwI3NxbGd2YGZnd2tmI2Bqd3ojbGVqbSN0a2pgayNrZnBmZm0jam0jd2tmd2tmI2BmbXdxYm9hdmpvZ2ptZCNsZW5ibXojbGUja2pwYnFmYiNsZSN3a2ZqcCN3a2YjbG1vem5scHcjbGUjd2tmbmJteiNsZSN3a2Z3a2YjVGZwd2ZxbVdrZnFmI2pwI21sZnt3Zm1nZmcjd2xQd2J3anB3amBib2Bsb3BzYm0+MSN/cGtscXcjcHdscXpzbHBwamFvZiN3bHdsc2xvbGRqYGJvYHFqd2pgYm8jbGVxZnNscXdmZyN3bGIjQGtxanB3amJtZ2ZganBqbG0jd2xqcCNmcnZibyN3bHNxbGFvZm5wI2xlV2tqcCNgYm0jYWZuZnFga2JtZ2pwZmVscSNubHB3I2xlbWwjZnVqZ2ZtYGZmZ2p3amxtcCNsZWZvZm5mbXdwI2ptJXJ2bHc4LSNXa2ZgbG4sam5iZGZwLHRramBrI25iaGZwd2tmI3NxbGBmcHBxZm5iam1wI3drZm9qd2ZxYnd2cWYvanAjYiNuZm5hZnF3a2Yjc2xzdm9icXdrZiNibWBqZm13c3FsYW9mbnAjam13am5mI2xlI3drZmdmZWZid2ZnI2F6YWxneiNsZSN3a2ZiI2VmdCN6ZmJxcG52YGsjbGUjd2tmd2tmI3RscWgjbGVAYm9qZWxxbWpiL3BmcXVmZyNicCNiZGx1ZnFtbmZtdy1gbG1gZnN3cCNsZW5sdWZuZm13I2ptXG5cbj9nanUjamc+IWp3ISN1Ym92Zj4hb2JtZHZiZGYjbGVicCN3a2Z6I2JxZnNxbGd2YGZnI2ptanAjd2tidyN3a2Zme3NvYmptI3drZmdqdT0/LGdqdT1cdEtsdGZ1ZnEjd2tmb2ZiZyN3bCN3a2Zcbj9iI2txZmU+ISx0YnAjZHFibXdmZ3NmbHNvZiNrYnVmYGxtd2ptdmJvb3p0YnAjcGZmbSNicGJtZyNxZm9id2Znd2tmI3Fsb2YjbGVzcWxzbHBmZyNhemxlI3drZiNhZnB3ZmJgayNsd2tmcS1AbG1wd2Jtd2ptZnNmbHNvZiNlcWxuZ2pib2Zgd3AjbGV3bCNxZnVqcGpsbXRicCNxZm1ibmZnYiNwbHZxYGYjbGV3a2Yjam1qd2pib29idm1ga2ZnI2ptc3FsdWpnZiN3a2Z3bCN3a2YjdGZwd3RrZnFmI3drZnFmYm1nI3BqbmpvYnFhZnd0ZmZtI3d0bGpwI2JvcGwjd2tmRm1kb2pwayNibWdgbG1nandqbG1wL3drYncjancjdGJwZm13andvZmcjd2x3a2ZucGZvdWZwLXJ2Ym13and6I2xlcWJtcHNicWZtYHp3a2YjcGJuZiNicHdsI2lsam0jd2tmYGx2bXdxeiNibWd3a2pwI2pwI3drZldranAjb2ZnI3dsYiNwd2J3Zm5mbXdgbG13cWJwdyN3bG9icHdKbWdme0xld2txbHZkayNranBqcCNnZnBqZG1mZ3drZiN3ZnFuI2pwanAjc3FsdWpnZmdzcWx3ZmB3I3drZm1kPyxiPT8sb2o9V2tmI2B2cXFmbXd3a2YjcGp3ZiNsZXB2YXB3Ym13amJvZntzZnFqZm1gZi9qbSN3a2YjVGZwd3drZnojcGtsdm9ncG9sdWZtKGFqbWJgbG5mbXdicWpscHZtanVmcXBqZ2JnYGxtZ2pgamxtZnBiYHdqdWpnYmdmcGZ7c2ZxamZtYGpid2ZgbWxvbGQvQWJzcWxndmBgai9fbXN2bXd2YmBqL19tYnNvamBiYGovX21gbG13cWJwZi9dYmBid2ZkbHEvQWJwcWZkanB3cWJxcGZzcWxlZnBqbG1ib3dxYndibmpmbXdscWZkL0Fwd3Fid2ZwZmBxZndicS9BYnNxam1ganNib2Zwc3Fsd2ZgYGovX21qbnNscXdibXdmcGpuc2xxd2JtYGpic2xwamFqb2pnYmdqbXdmcWZwYm13ZmBxZmBqbmpmbXdsbWZgZnBqZ2JnZnBwdnBgcWphanFwZmJwbGBqYmBqL19tZ2pwc2xtamFvZnBmdWJvdmJgai9fbWZwd3ZnamJtd2ZwcWZwc2xtcGJhb2ZxZnBsb3Zgai9fbWR2Ymdib2JpYnFicWZkanB3cWJnbHBsc2xxd3ZtamdiZ2BsbmZxYGpib2ZwZWx3bGRxYmUvQWJidndscWpnYmdmcGptZGZtamZxL0Fid2ZvZnVqcGovX21gbG5zZndmbWBqYmxzZnFiYGpsbWZwZnB3YmFvZmBqZ2xwam5zb2ZuZm13ZmJgd3Zib25mbXdmbWJ1ZmRiYGovX21gbG1lbHFuamdiZ29qbWYua2ZqZGt3OWVsbXcuZWJuam96OSEjOSMha3d3czksLGJzc29qYGJ3amxtcG9qbWghI2txZmU+IXBzZmBqZWpgYm9veiwsPyJYQEdCV0JYXHRMcWRibWp5YndqbG1nanB3cWphdndqbG0zc3s4I2tmamRrdzlxZm9id2psbXBranNnZnVqYGYudGpnd2s/Z2p1I2BvYnBwPiE/b2JhZm8jZWxxPiFxZmRqcHdxYndqbG0/LG1scGBxanN3PVx0LGptZ2Z7LWt3bm8hdGptZ2x0LWxzZm0rIyJqbnNscXdibXc4YnNzb2pgYndqbG0sam1nZnNmbWdmbWBmLCx0dHQtZGxsZG9mbHFkYm1qeWJ3amxtYnZ3bGBsbnNvZndmcWZydmpxZm5mbXdwYGxtcGZxdWJ3anVmP2VscW4jbWJuZj4ham13Zm9vZmB3dmJvbmJxZGptLm9mZXc5Mjt3ayNgZm13dnF6Ym0jam5zbHF3Ym13am1wd2p3dndqbG1wYmFhcWZ1amJ3amxtP2puZCNgb2JwcD4hbHFkYm1qcGJ3amxtYGp1am9qeWJ3amxtMjp3ayNgZm13dnF6YnFga2p3ZmB3dnFmam1gbHFzbHFid2ZnMTN3ayNgZm13dnF6LmBsbXdiam1mcSE9bmxwdyNtbHdiYW96LD0/LGI9PyxnanU9bWx3amVqYGJ3amxtJHZtZ2Zlam1mZyQqRXZxd2tmcW5scWYvYWZvamZ1ZiN3a2J3am1tZnFLV05PIz4jc3FqbHEjd2wjd2tmZ3FibmJ3amBib296cWZlZnFxam1kI3dsbWZkbHdqYndqbG1wa2ZiZ3J2YnF3ZnFwUGx2d2sjQmVxamBidm1wdmBgZnBwZXZvU2ZtbXB6b3VibWpiQnAjYiNxZnB2b3cvP2t3bm8jb2JtZD4hJW93OCxwdnMlZHc4Z2Zib2ptZCN0andrc2tqb2JnZm9za2pia2pwd2xxamBib296Kjg/LHBgcWpzdz1cdHNiZ2dqbWQud2xzOWZ7c2Zxam5mbXdib2Rmd0J3d3FqYXZ3ZmptcHdxdmB3amxtcHdmYGttbG9sZGpmcHNicXcjbGUjd2tmIz5ldm1gd2psbSsqeHB2YXBgcWpzd2psbW8tZ3dnIT0OXHQ/a3dkZmxkcWJza2pgYm9AbG1wd2p3dndqbG0kLyNldm1gd2psbStwdnNzbHF3ZmcjYXpiZHFqYHZvd3ZxYm9gbG1wd3F2YHdqbG1zdmFvamBid2psbXBlbG13LnBqeWY5IzJiI3VicWpmd3ojbGU/Z2p1I3B3em9mPiFGbWB6YG9sc2ZnamJqZXFibmYjcHFgPiFnZm5sbXB3cWJ3ZmdiYGBsbnNvanBrZmd2bWp1ZnFwandqZnBHZm5sZHFic2tqYHAqOD8scGBxanN3PT9nZmdqYGJ3Zmcjd2xobWx0b2ZnZGYjbGVwYndqcGViYHdqbG1zYnF3amB2b2Jxb3o/LGdqdT0/LGdqdT1GbWRvanBrIytWUCpic3NmbWdAa2pvZyt3cWJtcG5qcHBqbG1wLSNLbHRmdWZxLyNqbXdmb29qZGZtYGYhI3diYWptZ2Z7PiFlb2xidzlxamRrdzhAbG5ubG10ZmJvd2txYm1kam1kI2VxbG5qbSN0a2pgayN3a2ZidyNvZmJwdyNsbWZxZnNxbGd2YHdqbG1mbWB6YG9sc2ZnamI4ZWxtdy5wanlmOTJpdnFqcGdqYHdqbG1idyN3a2J3I3dqbmYhPT9iI2BvYnBwPiFKbSNiZ2dqd2psbS9nZnBgcWpzd2psbShgbG11ZnFwYndqbG1gbG13YmB3I3Rqd2tqcCNkZm1mcWJvb3pxISNgbG13Zm13PiFxZnNxZnBmbXdqbWQlb3c4bmJ3ayVkdzhzcWZwZm13YndqbG1sYGBicGpsbWJvb3o/am5kI3RqZ3drPiFtYnVqZGJ3amxtIT1gbG5zZm1wYndqbG1ga2Juc2psbXBranNuZmdqYj4hYm9vISN1amxvYndqbG0jbGVxZmVmcWZtYGYjd2xxZnd2cW0jd3F2ZjhQd3FqYHcsLEZNISN3cWJtcGJgd2psbXBqbXdmcXVmbXdqbG11ZnFqZWpgYndqbG1KbWVscW5id2psbSNnamVlamB2b3dqZnBAa2Juc2psbXBranNgYnNiYWpvandqZnA/IlhmbWdqZV4uLj1+XHQ/LHBgcWpzdz1cdEBrcWpwd2pibWp3emVscSNme2Juc29mL1NxbGVmcHBqbG1ib3FmcHdxamB3amxtcHB2ZGRmcHcjd2tid3RicCNxZm9mYnBmZytwdmBrI2JwI3drZnFmbmx1ZkBvYnBwK3ZtZm5zb2x6bmZtd3drZiNCbmZxamBibXB3cXZgd3ZxZiNsZSxqbWdmey1rd25vI3N2YW9qcGtmZyNqbXBzYm0jYG9icHA+ISE9P2Ija3FmZT4hLGptd3FsZ3Zgd2psbWFmb2xtZGptZCN3bGBvYmpuZmcjd2tid2BsbXBmcnZmbWBmcD9uZndiI21ibmY+IUR2amdmI3dsI3drZmx1ZnF0a2ZvbmptZGJkYmptcHcjd2tmI2BsbWBmbXdxYndmZy9cdC1tbG13bHZgayNsYXBmcXVid2psbXA/LGI9XHQ/LGdqdT1cdGUjK2dsYHZuZm13LWFscWdmcTkjMnN7I3hlbG13LnBqeWY5MndxZmJ3bmZtdyNsZTMhI2tmamRrdz4hMm5sZ2plamBid2psbUptZ2ZzZm1nZm1gZmdqdWpnZmcjam13bGRxZmJ3ZnEjd2tibWJga2pmdWZuZm13cGZwd2Jhb2pwa2ptZElidWJQYHFqc3chI21mdWZxd2tmb2ZwcHBqZG1qZWpgYm1gZkFxbGJnYGJwd2ptZD0lbWFwczg/LHdnPWBsbXdiam1mcSE9XHRwdmBrI2JwI3drZiNqbWVvdmZtYGYjbGViI3NicXdqYHZvYnFwcWA+JGt3d3M5LCxtYnVqZGJ3amxtISNrYm9lI2xlI3drZiNwdmFwd2Jtd2pibyMlbWFwczg/LGdqdT1iZ3VibXdiZGYjbGVnanBgbHVmcXojbGVldm1nYm5mbXdibyNuZndxbHNsb2p3Ym13a2YjbHNzbHBqd2YhI3tubzlvYm1kPiFnZm9qYWZxYndmb3pib2pkbT5gZm13ZnFmdWxvdndqbG0jbGVzcWZwZnF1YndqbG1qbnNxbHVmbmZtd3BhZmRqbW1qbWQjam1JZnB2cCNAa3FqcHdTdmFvamBid2psbXBnanBiZHFmZm5mbXd3Znt3LmJvamRtOXEvI2V2bWB3amxtKypwam5qb2JxandqZnBhbGd6PT8sa3dubz1qcCNgdnFxZm13b3pib3NrYmFmd2pgYm9qcCNwbG5md2puZnB3enNmPiFqbmJkZixuYm16I2xlI3drZiNlb2x0OWtqZ2dmbThidWJqb2Jhb2Yjam1nZnBgcWphZiN3a2Zme2pwd2ZtYGYjbGVib28jbHVmcSN3a2Z3a2YjSm13ZnFtZndcbj92byNgb2JwcD4ham1wd2Jvb2J3amxtbWZqZGthbHFrbGxnYnFuZmcjZWxxYGZwcWZndmBqbWQjd2tmYGxtd2ptdmZwI3dsTWxtZndrZm9mcHAvd2Zuc2ZxYnd2cWZwXHRcblxuP2Ija3FmZT4hYG9scGYjd2wjd2tmZntibnNvZnAjbGUjanAjYmFsdncjd2tmK3BmZiNhZm9sdCotISNqZz4hcGZicWBrc3FsZWZwcGpsbWJvanAjYnViam9iYW9md2tmI2xlZWpgamJvXG5cbj8scGBxanN3PVx0XHRcblxuP2dqdSNqZz4hYmBgZm9mcWJ3amxtd2txbHZkayN3a2YjS2JvbyNsZSNFYm5mZ2ZwYHFqc3dqbG1wd3FibXBvYndqbG1wam13ZnFlZnFmbWBmI3d6c2Y+JHdme3cscWZgZm13I3pmYnFwam0jd2tmI3RscW9ndWZxeiNzbHN2b2JxeGFiYGhkcWx2bWc5d3FiZ2p3amxtYm8jcGxuZiNsZSN3a2YjYGxtbWZgd2ZnI3dsZntzb2xqd2J3amxtZm5mcWRmbWBmI2xlYGxtcHdqd3Z3amxtQiNLanB3bHF6I2xlcGpkbWplamBibXcjbmJtdmViYHd2cWZnZntzZmB3YndqbG1wPT9tbHBgcWpzdz0/YGJtI2FmI2Vsdm1nYWZgYnZwZiN3a2Yja2JwI21sdyNhZmZtbWZqZGthbHZxam1kdGp3a2x2dyN3a2YjYmdnZmcjd2wjd2tmXG4/b2ojYG9icHA+IWptcHdxdm5mbXdib1BsdWpmdyNWbWpsbWJgaG1sdG9mZ2RmZ3RramBrI2BibSNhZm1ibmYjZWxxI3drZmJ3d2Ztd2psbSN3bGJ3d2Zuc3dwI3dsI2dmdWZvbHNuZm13cEptI2ViYHcvI3drZj9vaiNgb2JwcD4hYmpuc29qYGJ3amxtcHB2andiYW9mI2VscW52YGsjbGUjd2tmI2Bsb2xtanlid2psbXNxZnBqZ2Ztd2pib2BibWBmb0F2YWFvZiNKbWVscW5id2psbW5scHcjbGUjd2tmI2pwI2dmcGBxamFmZ3FmcHcjbGUjd2tmI25scWYjbHEjb2ZwcGptI1Bmc3dmbmFmcUptd2Zvb2pkZm1gZnBxYD4ha3d3czksLHN7OCNrZmpka3c5I2J1YmpvYmFvZiN3bG5ibXZlYmB3dnFmcWt2bmJtI3FqZGt3cG9qbWgja3FmZT4hLGJ1YmpvYmFqb2p3enNxbHNscXdqbG1ib2x2d3BqZ2Yjd2tmI2Jwd3FsbWxuamBib2t2bmJtI2Fmam1kcG1ibmYjbGUjd2tmI2JxZiNlbHZtZyNqbWJxZiNhYnBmZyNsbXBuYm9vZnEjd2tibWIjc2ZxcGxtI3RrbGZ7c2JtcGpsbSNsZWJxZHZqbWQjd2tid21sdCNobWx0bSNicEptI3drZiNmYnFvemptd2ZxbmZnamJ3ZmdmcWp1ZmcjZXFsblBgYm1nam1idWpibT8sYj0/LGdqdT0OXHRgbG1wamdmcSN3a2ZibSNmcHdqbmJ3Zmd3a2YjTWJ3amxtYm8/Z2p1I2pnPiFzYmRxZnB2b3dqbWQjam1gbG5uanBwamxtZmdibWJvbGRsdnAjd2xicWYjcWZydmpxZmcsdm89XHQ/LGdqdT1cdHRicCNhYnBmZyNsbWJtZyNhZmBibmYjYiVtYXBzOCVtYXBzOHchI3Vib3ZmPiEhI3RicCNgYnN3dnFmZ21sI25scWYjd2tibXFmcHNmYHdqdWZvemBsbXdqbXZmI3dsIz0OXHQ/a2ZiZz0OXHQ/dGZxZiNgcWZid2ZnbmxxZiNkZm1mcWJvam1lbHFuYndqbG0jdnBmZyNlbHEjd2tmam1nZnNmbWdmbXcjd2tmI0puc2ZxamJvYGxuc2xtZm13I2xld2wjd2tmI21scXdram1gb3ZnZiN3a2YjQGxtcHdxdmB3amxtcGpnZiNsZSN3a2YjdGx2b2cjbWx3I2FmZWxxI2ptcHdibWBmam11Zm13amxtI2xlbmxxZiNgbG5zb2Z7YGxvb2Zgd2p1Zm96YWJgaGRxbHZtZzkjd2Z7dy5ib2pkbTkjandwI2xxamRqbWJvam13bCNiYGBsdm13d2tqcCNzcWxgZnBwYm0jZnt3Zm1wanVma2x0ZnVmcS8jd2tmd2tmeiNicWYjbWx3cWZpZmB3Zmcjd2tmYHFqd2pganBuI2xlZ3Zxam1kI3RramBrc3FsYWJhb3ojd2tmd2tqcCNicXdqYG9mK2V2bWB3amxtKyp4SncjcGtsdm9nI2FmYm0jYmRxZmZuZm13YmBgamdmbXdib296Z2plZWZxcCNlcWxuQnFga2p3ZmB3dnFmYWZ3d2ZxI2htbHRtYnFxYm1kZm5mbXdwam1lb3ZmbWBmI2xtYnd3Zm1nZmcjd2tmamdmbXdqYGJvI3dscGx2d2sjbGUjd2tmc2JwcCN3a3FsdmRre25vISN3andvZj4hdGZqZGt3OWFsb2c4YHFmYndqbWQjd2tmZ2pwc29iejltbG1mcWZzb2JgZmcjd2tmP2puZCNwcWA+ISxqa3d3c3A5LCx0dHQtVGxxb2cjVGJxI0pKd2Zwd2pubG1qYm9wZWx2bWcjam0jd2tmcWZydmpxZmcjd2wjYm1nI3drYncjd2tmYWZ3dGZmbSN3a2YjdGJwI2dmcGpkbWZnYGxtcGpwd3AjbGUjYGxtcGpnZnFiYW96c3Zhb2pwa2ZnI2F6d2tmI29ibWR2YmRmQGxtcGZxdWJ3amxtYGxtcGpwd2ZnI2xlcWZlZnEjd2wjd2tmYWJgaCN3bCN3a2YjYHBwISNuZmdqYj4hU2Zsc29mI2VxbG4jYnViam9iYW9mI2xtc3FsdWZnI3dsI2FmcHZkZGZwd2psbXAhdGJwI2htbHRtI2JwdWJxamZ3amZwI2xlb2poZm96I3dsI2FmYGxuc3FqcGZnI2xlcHZzc2xxdyN3a2Yja2JtZ3AjbGUjd2tmYGx2c29mZyN0andrYGxtbWZgdyNibWcjYWxxZ2ZxOW1sbWY4c2ZxZWxxbmJtYGZwYWZlbHFmI2Fmam1kb2J3ZnEjYWZgYm5mYGJvYHZvYndqbG1wbGV3Zm0jYGJvb2ZncWZwamdmbXdwI2xlbmZibWptZCN3a2J3PT9vaiNgb2JwcD4hZnVqZ2ZtYGYjZWxxZntzb2JtYndqbG1wZm11anFsbW5mbXdwIT0/LGI9PyxnanU9dGtqYGsjYm9vbHRwSm13cWxndmB3amxtZ2Z1Zm9sc2ZnI2F6YiN0amdmI3FibWRmbG0jYWZrYm9lI2xldWJvamRtPiF3bHMhc3FqbWBqc29mI2xlYncjd2tmI3dqbmYvPyxtbHBgcWpzdz0OcGJqZyN3bCNrYnVmam0jd2tmI2VqcXB3dGtqb2YjbHdrZnFwa3pzbHdrZndqYGJvc2tqb2xwbHNrZnFwc2x0ZnEjbGUjd2tmYGxtd2JqbWZnI2ptc2ZxZWxxbmZnI2F6am1iYWpvand6I3dsdGZxZiN0cWp3d2ZtcHNibSNwd3pvZj4ham1zdncjbWJuZj4hd2tmI3J2ZnB3amxtam13Zm1nZmcjZWxxcWZpZmB3amxtI2xlam5zb2pmcCN3a2J3am11Zm13Zmcjd2tmd2tmI3B3Ym1nYnFndGJwI3NxbGFiYW96b2ptaCNhZnd0ZmZtc3FsZWZwcGxxI2xlam13ZnFiYHdqbG1wYGtibWRqbWQjd2tmSm1namJtI0xgZmJtI2BvYnBwPiFvYnB3dGxxaGptZCN0andrJGt3d3M5LCx0dHQtemZicXAjYWZlbHFmV2tqcCN0YnAjd2tmcWZgcWZid2psbWJvZm13ZnFqbWQjd2tmbmZicHZxZm5mbXdwYm0jZnt3cWZuZm96dWJvdmYjbGUjd2tmcHdicXcjbGUjd2tmXHQ/LHBgcWpzdz1cdFx0Ym0jZmVlbHF3I3dsam1gcWZicGYjd2tmd2wjd2tmI3BsdndrcHNiYGptZD4hMyE9cHZlZWpgamZtd296d2tmI0Z2cWxzZmJtYGxtdWZxd2ZnI3dsYG9mYnFXam5mbHZ3Z2pnI21sdyNrYnVmYGxtcGZydmZtd296ZWxxI3drZiNtZnt3Znt3Zm1wamxtI2xlZmBsbWxuamAjYm1nYm93a2x2ZGsjd2tmYnFmI3NxbGd2YGZnYm1nI3Rqd2sjd2tmam1wdmVlamBqZm13ZGp1Zm0jYXojd2tmcHdid2ptZCN3a2J3ZntzZm1nand2cWZwPyxwc2JtPT8sYj1cdHdrbHZka3cjd2tid2xtI3drZiNhYnBqcGBmb29zYmdnam1kPmpuYmRmI2xlI3drZnFmd3ZxbWptZCN3bGptZWxxbmJ3amxtL3Bmc2JxYndmZyNhemJwcGJwcGptYndmZ3AhI2BsbXdmbXc+IWJ2d2tscWp3eiNsZW1scXdrdGZwd2ZxbT8sZ2p1PVx0P2dqdSMhPT8sZ2p1PQ5cdCMjYGxtcHZvd2J3amxtYGxubnZtand6I2xld2tmI21id2psbWJvancjcGtsdm9nI2Fmc2Jxd2pganNibXdwI2JvamRtPiFvZmV3d2tmI2RxZmJ3ZnB3cGZvZmB3amxtI2xlcHZzZnFtYnd2cWJvZ2ZzZm1nZm13I2xtanAjbmZtd2psbWZnYm9vbHRqbWQjd2tmdGJwI2ptdWZtd2ZnYmBgbG5zYm16am1ka2pwI3NmcXBsbWJvYnViam9iYW9mI2J3cHd2Z3ojbGUjd2tmbG0jd2tmI2x3a2ZxZntmYHZ3amxtI2xlS3ZuYm0jUWpka3dwd2ZxbnAjbGUjd2tmYnBwbGBqYndqbG1wcWZwZmJxYGsjYm1ncHZgYGZmZ2ZnI2F6Z2ZlZmJ3Zmcjd2tmYm1nI2VxbG4jd2tmYXZ3I3drZnojYnFmYGxubmJtZ2ZxI2xlcHdid2YjbGUjd2tmemZicXAjbGUjYmRmd2tmI3B3dmd6I2xlP3ZvI2BvYnBwPiFwc29iYGYjam0jd2tmdGtmcWYja2YjdGJwP29qI2BvYnBwPiFld2tmcWYjYnFmI21sdGtqYGsjYWZgYm5ma2Yjc3Zhb2pwa2ZnZntzcWZwcGZnI2ptd2wjdGtqYGsjd2tmYGxubmpwcGpsbWZxZWxtdy50Zmpka3c5d2ZxcWp3bHF6I2xlZnt3Zm1wamxtcCE9UWxuYm0jRm5zanFmZnJ2Ym8jd2wjd2tmSm0jYGxtd3FicHcva2x0ZnVmcS8jYm1nanAjd3pzamBib296Ym1nI2tqcCN0amVmK2JvcGwjYGJvb2ZnPT92byNgb2JwcD4hZmVlZmB3anVmb3ojZnVsb3VmZyNqbXdscGZmbiN3bCNrYnVmdGtqYGsjanAjd2tmd2tmcWYjdGJwI21sYm0jZntgZm9vZm13Ym9vI2xlI3drZnBmZ2ZwYHFqYWZnI2F6Sm0jc3FiYHdqYGYvYXFsYmdgYnB3am1kYGticWRmZyN0andrcWZlb2Zgd2ZnI2ptcHZhaWZgd2ZnI3dsbmpvandicXojYm1nd2wjd2tmI3Nsam13ZmBsbWxuamBib296cGZ3V2JxZGZ3am1kYnFmI2Jgd3Zib296dWpgd2xxeiNsdWZxKyo4PyxwYHFqc3c9YGxtd2ptdmx2cG96cWZydmpxZmcjZWxxZnVsb3Z3amxtYnF6Ym0jZmVlZmB3anVmbWxxd2sjbGUjd2tmLyN0a2pgayN0YnAjZXFsbXcjbGUjd2tmbHEjbHdrZnF0anBmcGxuZiNlbHFuI2xla2JnI21sdyNhZmZtZGZtZnFid2ZnI2F6am1lbHFuYndqbG0tc2Zxbmp3d2ZnI3dsam1gb3ZnZnAjd2tmZ2Z1Zm9sc25mbXcvZm13ZnFmZyNqbXdsd2tmI3NxZnVqbHZwYGxtcGpwd2Ztd296YnFmI2htbHRtI2Jwd2tmI2VqZm9nI2xld2tqcCN3enNmI2xlZGp1Zm0jd2wjd2tmd2tmI3dqd29mI2xlYGxtd2JqbXAjd2tmam1wd2JtYGZwI2xlam0jd2tmI21scXdrZ3ZmI3dsI3drZmpxYnFmI2dmcGpkbWZnYGxxc2xxYndqbG1wdGJwI3drYncjd2tmbG1mI2xlI3drZnBmbmxxZiNzbHN2b2JxcHZgYGZmZ2ZnI2ptcHZzc2xxdyNlcWxuam0jZ2plZWZxZm13Z2xuam1id2ZnI2F6Z2ZwamRtZmcjZWxxbHRtZnFwa2pzI2xlYm1nI3NscHBqYW96cHdibWdicWdqeWZncWZwc2xtcGZXZnt3dGJwI2ptd2ZtZ2ZncWZgZmp1Zmcjd2tmYnBwdm5mZyN3a2J3YnFmYnAjbGUjd2tmc3FqbmJxam96I2ptd2tmI2FicGpwI2xlam0jd2tmI3BmbXBmYmBgbHZtd3AjZWxxZ2Zwd3FsemZnI2F6Yncjb2ZicHcjd3RsdGJwI2dmYG9icWZnYGx2b2cjbWx3I2FmUGZgcWZ3YnF6I2xlYnNzZmJxI3dsI2FmbmJxZGptLndsczkyLF1fcCh/X3AoXCcsZGYqeHdrcWx0I2Z+OHdrZiNwd2JxdyNsZXd0bCNwZnNicWJ3Zm9ibWR2YmRmI2JtZ3RrbCNrYmcjYWZmbWxzZnFid2psbSNsZWdmYndrI2xlI3drZnFmYm8jbXZuYWZxcFxuP29qbWgjcWZvPiFzcWx1amdmZyN3a2Z3a2YjcHdscXojbGVgbG5zZndqd2psbXBmbWRvanBrIytWSCpmbWRvanBrIytWUCo8cDxSPFE8XzxSPFc8TT1sPFM9bTxWPFQ9bT1sPFM9bTxWPFQ9bT1sPFM9bTxWPFI1aDRVNF00RDVmNEVcbkFPBUd4XGJUQVxuemtcdkJsXGJRf1xiVEFcbnprXHZVbVxiUX9cYlRBXG56a1xucGUFdXxcdGlAXHRjVFxiVlZcblxcfVxueFNcdFZwBXRTBWtgXHRbWFx0W1hcdkhSXGJQdlxiVFdcYlVlXG5/YVxiUXBcdl9XXHZXc1xueFNcdkF6XG5feQRLaGptZWxxbmJgai9fbWtmcXFibmpmbXdicGZvZmB3cS9fbWpgbGdmcGBxanNgai9fbWBvYnBqZWpgYmdscGBsbWxgam5qZm13bHN2YW9qYGJgai9fbXFmb2JgamxtYmdicGptZWxxbi9Nd2pgYnFmb2JgamxtYmdscGdmc2Jxd2JuZm13bHdxYmFiaWJnbHFmcGdqcWZgd2JuZm13ZmJ6dm13Ym5qZm13bG5mcWBiZ2xPamFxZmBsbXcvTWB3Zm1scGtiYWp3YmBqbG1mcGB2bnNvam5qZm13bHFmcHdidnFibXdmcGdqcHNscGpgai9fbWBsbXBmYHZmbWBqYmZvZmB3cS9fbWpgYmJzb2pgYmBqbG1mcGdmcGBsbWZgd2JnbGptcHdib2Jgai9fbXFmYm9qeWJgai9fbXZ3am9qeWJgai9fbWZtYGpgb2xzZmdqYmZtZWZxbmZnYmdmcGptcHdxdm5mbXdscGZ7c2ZxamZtYGpicGptcHdqd3Zgai9fbXNicXdqYHZvYnFmcHB2YWBid2ZkbHFqYj1uPFI8Vz1gPFY8UjxMPFI9bT1tPFQ8VD1sPFxcPF08Uj1uPWc8XTxSPFc9YD1kPFk8Uz1sPFI9bT1uPFI8UDxSPFo8WT1uPFk8WD1sPW88XzxUPWk9bTxXPW89azxcXDxZPW08WTxVPWs8XFw9bTxePW08WTxfPFg8XFw8TDxSPW09bTxUPWM8cDxSPW08VjxePFk8WD1sPW88XzxUPFk8XzxSPWw8UjxYPFxcPF48UjxTPWw8Uj1tPFg8XFw8UTxRPWc9aTxYPFI8VzxaPFE9ZzxUPFA8WTxRPFE8UjxwPFI9bTxWPF49Zz1sPW88XTxXPFk8VTxwPFI9bTxWPF48XFw9bT1uPWw8XFw8UT1nPFE8VD1rPFk8XzxSPWw8XFw8XTxSPW48WTxYPFI8VzxaPFk8UT1vPW08Vz1vPF88VD1uPFk8UzxZPWw9YDxyPFg8UTxcXDxWPFI8UzxSPW48UjxQPW89bDxcXDxdPFI9bj1vPFxcPFM9bDxZPFc9YzxePFI8UjxdPWU8WTxSPFg8UTxSPF88Uj1tPF48UjxZPF88Uj1tPW48XFw9bj1gPFQ8WD1sPW88XzxSPFU9aDxSPWw9bzxQPFk9aTxSPWw8Uj1kPFI8Uz1sPFI9bjxUPF49bT1tPWc8VzxWPFxcPFY8XFw8WjxYPWc8VTxePFc8XFw9bT1uPFQ8Xz1sPW88UzxTPWc8XjxQPFk9bT1uPFk9bDxcXDxdPFI9bjxcXD1tPFY8XFw8WzxcXDxXPFM8WT1sPF49ZzxVPFg8WTxXPFxcPW49YDxYPFk8UT1gPF88VDxTPFk9bDxUPFI8WDxdPFQ8WzxRPFk9bTxSPW08UTxSPF48WTxQPFI8UDxZPFE9bjxWPW88UzxUPW49YDxYPFI8VzxaPFE8XFw9bDxcXDxQPFY8XFw9aTxRPFxcPWs8XFw8VzxSPEw8XFw8XTxSPW48XFw8TjxSPFc9YDxWPFI9bTxSPF49bTxZPFA8Xj1uPFI9bDxSPFU8UTxcXD1rPFxcPFc8XFw9bTxTPFQ9bTxSPFY9bTxXPW88WjxdPWc9bTxUPW09bjxZPFA8UzxZPWs8XFw9bjxUPFE8UjxePFI8XzxSPFM8UjxQPFI9ZTxUPW08XFw8VT1uPFI8XjxTPFI9azxZPFA9bzxTPFI8UDxSPWU9YDxYPFI8VzxaPFE8Uj1tPW09ZzxXPFY8VDxdPWc9bT1uPWw8UjxYPFxcPFE8UT1nPFk8UDxRPFI8XzxUPFk8Uz1sPFI8WTxWPW48TTxZPFU9azxcXD1tPFA8UjxYPFk8VzxUPW48XFw8VjxSPF88UjxSPFE8VzxcXDxVPFE8XzxSPWw8UjxYPFk8XjxZPWw9bTxUPWM9bT1uPWw8XFw8UTxZPWg8VDxXPWA8UD1nPW89bDxSPF48UT1jPWw8XFw8WzxRPWc9aTxUPW08VjxcXD1uPWA8UTxZPFg8WTxXPWI9YzxRPF48XFw9bD1jPFA8WTxRPWA9ZDxZPFA8UTxSPF88VD1pPFg8XFw8UTxRPFI8VTxbPFE8XFw9azxUPW48UTxZPFc9YDxbPWM9aDxSPWw9bzxQPFxcPE48WTxTPFk9bD1gPFA8WT1tPWM9ajxcXDxbPFxcPWU8VD1uPWc8dz1vPWs9ZDxUPFlcZkhEXGZIVVxmSWxcZkhuXGZIeVxmSFxcXGZIRFxmSWtcZkhpXGZIRlxmSERcZklrXGZIeVxmSFNcZkhDXGZIUlxmSHlcZkhcXFxmSWtcZkhuXGZIaVxmSERcZklhXGZIQ1xmSHlcZklhXGZIQ1xmSFJcZkh7XGZIUlxmSGtcZkhNXGZIQFxmSFJcZkhcXFxmSWtcZkh5XGZIU1xmSFRcZklsXGZISlxmSFNcZkhDXGZIUlxmSEZcZkhVXGZIXlxmSWtcZkhUXGZIU1xmSG5cZkhVXGZIQVxmSFJcZkhcXFxmSEhcZkhpXGZIRlxmSERcZklsXGZIWVxmSFJcZkheXGZJa1xmSFRcZklrXGZIWVxmSFJcZkh5XGZIXFxcZkhIXGZJa1xmSEJcZklrXGZIXFxcZklrXGZIVVxmSWdcZkhEXGZJa1xmSFRcZkh5XGZISFxmSWtcZkhAXGZIVVxmSW1cZkhIXGZIVFxmSFJcZkhrXGZIc1xmSFVcZklnXGZIe1xmSFJcZkhwXGZIUlxmSERcZklrXGZIQlxmSFNcZkhEXGZIc1xmSHlcZkhcXFxmSEhcZkhSXGZIeVxmSFxcXGZIRFxmSFJcZkhlXGZIRFxmSHlcZklrXGZIQ1xmSFVcZkhSXGZIbVxmSFRcZkhAXGZIVFxmSWtcZkhBXGZIUlxmSFtcZkhSXGZIalxmSEZcZkh5XGZJa1xmSF5cZkhTXGZIQ1xmSWtcZkhaXGZJbVxmSFxcXGZJblxmSGtcZkhUXGZIeVxmSWtcZkh0XGZIblxmSHNcZklrXGZIQlxmSWtcZkhcXFxmSWxcZkhUXGZIeVxmSEhcZkhSXGZIQlxmSWtcZkhcXFxmSFJcZkheXGZJa1xmSHlcZkhcXFxmSGlcZkhLXGZIU1xmSHlcZkhpXGZIRlxmSERcZkhSXGZIVFxmSEJcZkhSXGZIcFxmSEJcZkltXGZIcVxmSWtcZkh5XGZIUlxmSFxcXGZIT1xmSFVcZklnXGZISFxmSFJcZkh5XGZITVxmSFBcZklsXGZIQ1xmSFVcZkhSXGZIblxmSFVcZklnXGZIc1xmSF5cZkhaXGZIQFxmSWFcZkhKXGZIXlxmSFNcZkhDXGZIUlxmSHBcZklsXGZIWVxmSERcZkhwXGZIUlxmSEhcZkhSXGZIeVxmSWRcZkhUXGZJa1xmSGpcZkhGXGZIeVxmSFJcZkhZXGZIUlxmSF5cZklsXGZISlxmSWtcZkhEXGZJa1xmSEZcZkluXGZIXFxcZklsXGZIRlxmSFJcZkhEXGZJbFxmSGVcZkhUXGZIeVxmSWtcZkhVXGZJZ1xmSHtcZklsXGZIQFxmSWRcZkhMXGZIeVxmSGpcZkhGXGZIeVxmSWxcZkhZXGZIXFxcZklhXGZIW1xmSHtcZkhSXGZIblxmSFlcZkhqXGZIRlxmSHlcZklnXGZIcFxmSFNcZkheXGZIUlxmSHBcZkhSXGZIRFxmSFJcZkhUXGZIVVxmSEJcZkhIXGZIVVxmSEJcZklrXGZIblxmSGVcZkhEXGZIeVxmSWxcZkhDXGZIUlxmSFVcZkluXGZISlxmSFxcXGZJYVxmSHBcZkhUXGZJblxmSHZcZklsXGZIRlxmSFRcZkhuXGZISlxmSFRcZkhZXGZIUlxmSF5cZkhVXGZJZ1xmSERcZkhSXGZIVVxmSWdcZkhIXGZJbFxmSHBcZklkXGZIVFxmSWtcZkhZXGZIUlxmSEZcZkhUXGZIcFxmSERcZkhIXGZIUlxmSERcZklrXGZISFxmSFJcZkhwXGZIUlxmSFxcXGZJbFxmSHRcZkhSXGZIQ1xmSF5cZkhwXGZIU1xmSF5cZklrXGZIRFxmSWxcZkh2XGZJa1xmSHBcZkhSXGZIblxmSHZcZkhGXGZISFxmSWFcZkhcXFxmSHtcZkluXGZIe1xmSF5cZkhwXGZIUlxmSEhcZklrXGZIQFxmSFJcZkhVXGZIXFxcZkhqXGZIRlxmSERcZklrXGZIWVxmSFJcZkhVXGZIRFxmSGtcZkhUXGZIeVxmSFJcZkhUXGZJbVxmSEBcZkhVXGZIXFxcZkhVXGZIRFxmSWtcZkhrXGZIVFxmSFRcZklrXGZIVFxmSFVcZkhTXGZISFxmSEBcZkhNXGZIUFxmSWtcZkh0XGZIc1xmSERcZkhSXGZISFxmSF5cZkhSXGZIWlxmSEZcZkhSXGZIblxmSHZcZkhaXGZJYVxmSFxcXGZJbFxmSEBcZkhNXGZIUFxmSWxcZkhVXGZJZ1xmSEhcZklrXGZIVFxmSFJcZkhkXGZIc1xmSFpcZkhSXGZIQ1xmSEpcZkhUXGZIeVxmSEhcZklsXGZIcFxmSFJcZkhIXGZJbFxmSFlcZkhSXGZIXlxmSFJcZkhVXGZIcFxmSFJcZkhcXFxmSEZcZkhzXGZIRFxmSFJcZkhcXFxmSHpcZkhEXGZJa1xmSFRcZkhNXGZIUFxmSHlcZkhCXGZIU1xmSF5cZkhSXGZIZVxmSFRcZkh5XGZJbFxmSHlcZklrXGZIWVxmSF5cZkheXGZIe1xmSEhcZkhSXGZIelxmSFJcZkhEXGZIUlxmSGlcZkhcXFxmSWFcZkhJXGZIcFxmSFVcZkhSXGZIblxmSEpcZklrXGZIelxmSFJcZkhGXGZIVVxmSF5cZklsXGZIRFxmSFNcZkhDXGZIQlxmSEBcZkhTXGZIRFxmSFJcZkhAXGZJZFxmSG5cZkh5XGZIeVxmSFVcZklsXGZIblxmSHlcZkhVXGZIRFxmSFJcZkhKXGZJa1xmSEhcZkhSXGZIVVxmSEJcZkheXGZJa1xmSHlcZkhSXGZIR1xmSWxcZkhwXGZIQFxmSHlcZkhTXGZISFxmSW1cZkhcXFxmSEhcZkhCXGZIUlxmSG5cZkh7XGZIWVxmSFVcZklsXGZIblxmSFxcXGZJZ1xmSHBcZkhQXGZIQlxmSFNcZkheXGZJbFxmSGpcZkhcXFxmSWdcZkhGXGZIVFxmSWtcZkhEXGZIUlxmSENcZkhSXGZISlxmSFlcZkheXGZJa1xmSERcZklrXGZIelxmSFJcZkhIXGZIUlxmSHlcZkhcXFxmSWxcZkhAXGZIZVxmSERcZkh5XGZIUlxmSHBcZkhZXGZIUlxmSEBcZkhGXGZJblxmSFxcXGZIUlxmSEBcZkhNXGZIUFxmSFJcZkhUXGZJYFxmSEpcZkhSXGZIWlxmSWtcZkhDXGZIXFxcZkh5XGZIU1xmSENcZklrXGZIeVxmSFVcZkhSXGZIblxmSGlcZkh5XGZIVFxmSFxcXGZIQFxmSERcZkhSXGZIY1xmSFlcZkhVXGZIUlxmSG5cZkhUXGZJYVxmSElcZkheXGZIQlxmSFNcZkheXGZJa1xmSF5cZklrXGZIelxmSHlcZkhZXGZIU1xmSFtcZkhDXGZIeVxmSWFcZkhcXFxmSG5cZkhUXGZIQlxmSW5cZkhVXGZISVxmSFJcZkhEXGZIUjRGNF80RjRbNWY0VTVpNFg0SzRdNW80RTRENWQ0SzRfNFs0RTRLNWg0WTVtNEE0RTVpNWQ0SzRaNWY0VTRLNWg0QjRLNFk0RTRLNWg1aTReNWY0QzRLNWg0VTRLNWk0RTRLNWg1bzRLNEY0RDRLNWg0XTRDNWQ0QzRENF01ajRLNWk0QDRLNWg0QzVkNWg0RTRLNWg0VTRLNWg1aTRLNWg1aTVkNW40VTRLNWg0VTRdNEQ1ZjRLNWg0XzRdNWY0VTRLNWg0QDVkNEs1aDRLNWg0XFw1azRLNEQ0SzVoNEE1ZjRLNEU0SzVoNEE1bjVkNW40SzVoNW80XTVmNWk0SzVoNFU0XTRLNW41aTRBNW01ZDRUNEU0SzVoNEc0SzVqNWY1aTRYNEs1azRDNEU0SzVoNWk0XTRPNEU0SzVoNW40XTRONWo0SzVoNFg0RDRLNEQ0SzVoNEE1ZDRLNF00SzVoNEA0QzVmNEM0SzVoNE80XzRdNEU0SzVoNFU1aDVkNWk1aTRANWk1ZDRVNEU0SzVoNF00QTVpNWo0SzVoNWo1bjRLNFs1bTVoNF80WzVmNWo0SzVoNW81ZDVmNEY0SzVoNEM1ajVmNEs0RDRdNW80SzRGNWs0SzVoNF01ZjRLNFo0RjRBNWY0SzRGNWY0RDRGNWQ1bjVmNEY0SzVoNE81ZDVoNWU0SzVoNEQ0XTVmNEM0SzVoNW81aDRLNWk0SzVoNF00SzRENFs0SzVoNFg0QjRZNWY0XzVmNEs0XTRLNEY0SzVoNEc0SzVoNEc0SzVoNFk1aDRLNEU0SzVoNEE0QzVmNEc0SzVoNF41ZDRLNF00SzVoNEI1aDVmNEA0SzVoNEA1aTVmNFU0SzVoNFU0SzVpNWs0SzVoNEA1aTRLNWg0SzVoNF80SzRVNEU1aTRYNEs1azRDNWs0SzVoNF00SjVmNF80SzVoNEM0QjVkNWg0SzVoNW01ajVmNEU0SzVoNW80RjRLNEQ0SzVoNEM1ZDRdNWY0SzVoNEM0XTVkNF80SzRfNEY0VjRdNW40RjRZNEs1aTVmNWk0SzVoNEQ1ajRLNEY0SzVoNFU0VDVmNWlmbXdmcXdiam1uZm13dm1nZnFwd2JtZ2ptZCM+I2V2bWB3amxtKyotaXNkISN0amd3az4hYGxtZWpkdnFid2psbS1zbWQhI3RqZ3drPiE/YWxneiNgb2JwcD4hTmJ3ay1xYm1nbG4rKmBsbXdmbnNscWJxeiNWbWp3ZmcjUHdid2ZwYGpxYHZucHdibWBmcC1ic3NmbWdAa2pvZytscWRibWp5YndqbG1wP3BzYm0jYG9icHA+ISE9P2puZCNwcWA+ISxnanB3am1kdmpwa2Znd2tsdnBibWdwI2xlI2Bsbm52bWpgYndqbG1gb2ZicSE9PyxnanU9am11ZnB3amRid2psbWVidWpgbG0tamBsISNuYnFkam0ucWpka3c5YWJwZmcjbG0jd2tmI05icHBiYGt2cGZ3d3B3YmFvZiNhbHFnZnE+am13ZnFtYndqbG1ib2JvcGwjaG1sdG0jYnBzcWxtdm1gamJ3amxtYWJgaGRxbHZtZzkgZXNiZ2dqbWQub2ZldzlFbHEjZntibnNvZi8jbmpwYGZvb2JtZmx2cCVvdzgsbmJ3ayVkdzhzcHpga2xvbGRqYGJvam0jc2Jxd2pgdm9icWZicWBrISN3enNmPiFlbHFuI25md2tsZz4hYnAjbHNzbHBmZyN3bFB2c3FmbmYjQGx2cXdsYGBicGpsbWJvb3ojQmdnandqbG1ib296L01scXdrI0JuZnFqYGJzezhhYmBoZHFsdm1nbHNzbHF3dm1qd2pmcEZtd2Zxd2JqbW5mbXctd2xPbHRmcUBicGYrbmJtdmViYHd2cWptZHNxbGVmcHBqbG1ibyNgbG5ham1mZyN0andrRWxxI2ptcHdibWBmL2BsbXBqcHdqbWQjbGUhI25ie29mbWR3az4hcWZ3dnFtI2Vib3BmOGBsbXBgamx2cG1mcHBOZmdqd2ZxcWJtZmJtZnt3cWJscWdqbWJxemJwcGJwcGptYndqbG1wdmFwZnJ2Zm13b3ojYXZ3d2xtI3d6c2Y+IXdrZiNtdm5hZnEjbGV3a2YjbHFqZGptYm8jYGxuc3Fma2ZtcGp1ZnFmZWZxcCN3bCN3a2Y/LHZvPVx0PyxnanU9XHRza2pvbHBsc2tqYGJvb2xgYndqbG0ta3FmZXRicCNzdmFvanBrZmdQYm0jRXFibWBqcGBsK2V2bWB3amxtKyp4XHQ/Z2p1I2pnPiFuYmptcGxza2pwd2pgYndmZ25id2tmbmJ3amBibyMsa2ZiZz0OXHQ/YWxnenB2ZGRmcHdwI3drYndnbGB2bmZtd2J3amxtYGxtYGZtd3Fid2psbXFmb2J3amxtcGtqc3BuYnoja2J1ZiNhZmZtK2VscSNme2Juc29mL1dranAjYnF3amBvZiNqbSNwbG5mI2BicGZwc2Jxd3AjbGUjd2tmI2dmZWptandqbG0jbGVEcWZidyNBcWp3YmptI2Bmb29zYmdnam1kPmZydmp1Ym9mbXcjd2xzb2JgZmtsb2dmcT4hOCNlbG13LnBqeWY5I2l2cHdqZWpgYndqbG1hZm9qZnVmZyN3a2J3cHZlZWZxZmcjZXFsbmJ3d2Zuc3dmZyN3bCNvZmJnZnEjbGUjd2tmYHFqc3chI3BxYD4hLCtldm1gd2psbSsqI3hicWYjYnViam9iYW9mXHRcbj9vam1oI3Fmbz4hI3BxYD4ka3d3czksLGptd2ZxZnB3Zmcjam1gbG11Zm13amxtYm8jISNib3c+ISEjLD0/LGJxZiNkZm1mcWJvb3prYnAjYm9wbCNhZmZtbmxwdyNzbHN2b2JxI2BscXFmcHNsbWdqbWRgcWZnandmZyN0andrd3pvZj4hYWxxZ2ZxOT8sYj0/LHBzYm09PywtZGplISN0amd3az4hP2plcWJuZiNwcWA+IXdiYW9mI2BvYnBwPiFqbW9qbWYuYW9sYGg4YmBgbHFnam1kI3dsI3dsZGZ3a2ZxI3Rqd2tic3NxbHtqbmJ3Zm96c2Jxb2pibmZtd2Jxem5scWYjYm1nI25scWZnanBzb2J6OW1sbWY4d3FiZ2p3amxtYm9venNxZmdsbmptYm13b3olbWFwczh/JW1hcHM4JW1hcHM4Pyxwc2JtPSNgZm9vcHNiYGptZD4/am1zdncjbWJuZj4hbHEhI2BsbXdmbXc+IWBsbXdxbHVmcXBqYm9zcWxzZnF3ej4hbGQ5LHsucGtsYGh0YnVmLmdmbmxtcHdxYndqbG1wdnFxbHZtZ2ZnI2F6TWZ1ZnF3a2ZvZnBwL3RicCN3a2YjZWpxcHdgbG1wamdmcWJhb2YjQm93a2x2ZGsjd2tmI2Bsb29iYWxxYndqbG1wa2x2b2cjbWx3I2Fmc3Fsc2xxd2psbSNsZT9wc2JtI3B3em9mPiFobWx0bSNicCN3a2YjcGtscXdveiNiZXdmcWVscSNqbXB3Ym1gZi9nZnBgcWphZmcjYnAjLGtmYmc9XHQ/YWxneiNwd2Jxd2ptZCN0andram1gcWZicGptZG96I3drZiNlYmB3I3drYndnanBgdnBwamxtI2xlbmpnZ29mI2xlI3drZmJtI2ptZ2p1amd2Ym9namVlamB2b3cjd2wjc2xqbXcjbGUjdWpmdGtsbmxwZnt2Ym9qd3piYGBmc3dibWBmI2xlPyxwc2JtPT8sZ2p1PW5ibXZlYmB3dnFmcXBscWpkam0jbGUjd2tmYGxubmxtb3ojdnBmZ2puc2xxd2JtYGYjbGVnZm1sbmptYndqbG1wYWJgaGRxbHZtZzkjIG9mbWR3ayNsZSN3a2ZnZndmcW5qbWJ3amxtYiNwamRtamVqYGJtdyEjYWxxZ2ZxPiEzIT1xZnVsb3Z3amxtYnF6c3FqbWBqc29mcCNsZWpwI2BsbXBqZ2ZxZmd0YnAjZ2Z1Zm9sc2ZnSm1nbC5GdnFsc2ZibXV2b21mcWJhb2Yjd2xzcWxzbG1mbXdwI2xlYnFmI3BsbmZ3am5mcGBvbHBmcSN3bCN3a2ZNZnQjWmxxaCNAand6I21ibmY+IXBmYnFga2J3d3FqYXZ3Zmcjd2xgbHZxcGYjbGUjd2tmbmJ3a2ZuYndqYGpibWF6I3drZiNmbWcjbGVidyN3a2YjZm1nI2xlISNhbHFnZnE+ITMhI3dmYGttbG9sZGpgYm8tcWZubHVmQG9icHArYXFibWBrI2xlI3drZmZ1amdmbWBmI3drYnciWGZtZ2plXi4uPQ5cdEptcHdqd3Z3ZiNsZSNqbXdsI2IjcGptZG9mcWZwc2Zgd2p1Zm96LWJtZyN3a2ZxZmVscWZzcWxzZnF3amZwI2xlanAjb2xgYndmZyNqbXBsbmYjbGUjdGtqYGtXa2ZxZiNqcCNib3BsYGxtd2ptdmZnI3dsI2Jzc2ZicWJtYGYjbGUjJWJuczhtZ2JwazgjZ2ZwYHFqYWZwI3drZmBsbXBqZ2ZxYndqbG1idndrbHEjbGUjd2tmam1nZnNmbWdmbXdvemZydmpzc2ZnI3Rqd2tnbGZwI21sdyNrYnVmPyxiPT9iI2txZmU+IWBsbWV2cGZnI3Rqd2s/b2ptaCNrcWZlPiEsYncjd2tmI2JkZiNsZWJzc2ZicSNqbSN3a2ZXa2ZwZiNqbWBvdmdmcWZkYnFnb2ZwcCNsZWBsdm9nI2FmI3ZwZmcjcHd6b2Y+JXJ2bHc4cGZ1ZnFibyN3am5mcHFmc3FmcGZtdyN3a2ZhbGd6PVx0Pyxrd25vPXdrbHZka3cjd2wjYWZzbHN2b2J3amxtI2xlc2xwcGpham9qd2pmcHNmcWBmbXdiZGYjbGViYGBmcHAjd2wjd2tmYm0jYnd3Zm5zdyN3bHNxbGd2YHdqbG0jbGVpcnZmcXosaXJ2ZnF6d3RsI2dqZWVmcWZtd2Fmb2xtZCN3bCN3a2ZmcHdiYW9qcGtuZm13cWZzb2Jgam1kI3drZmdmcGBxanN3amxtISNnZndmcW5qbWYjd2tmYnViam9iYW9mI2VscUJgYGxxZ2ptZCN3bCN0amdmI3FibWRmI2xlXG4/Z2p1I2BvYnBwPiFubHFmI2Bsbm5sbW96bHFkYm1qcGJ3amxtcGV2bWB3amxtYm9qd3p0YnAjYGxuc29md2ZnIyVibnM4bmdicGs4I3NicXdqYGpzYndqbG13a2YjYGticWJgd2ZxYm0jYmdnandqbG1ib2Jzc2ZicXAjd2wjYWZlYmB3I3drYncjd2tmYm0jZntibnNvZiNsZXBqZG1qZWpgYm13b3psbW5sdnBmbHVmcT4hYWZgYnZwZiN3a2Z6I2Jwem1gIz4jd3F2ZjhzcWxhb2ZucCN0andrcGZmbnAjd2wja2J1ZndrZiNxZnB2b3cjbGUjcHFgPiFrd3dzOSwsZWJuam9qYnEjdGp3a3NscHBmcHBqbG0jbGVldm1gd2psbSMrKiN4d2xsaCNzb2JgZiNqbWJtZyNwbG5md2puZnBwdmFwd2Jtd2pib296P3BzYm09Pyxwc2JtPWpwI2xld2ZtI3ZwZmdqbSNibSNid3dmbnN3ZHFmYncjZ2ZibyNsZUZtdWpxbG1uZm13Ym9wdmBgZnBwZXZvb3ojdWpxd3Zib296I2JvbzEzd2sjYGZtd3Zxei9zcWxlZnBwamxtYm9wbWZgZnBwYnF6I3dsI2dmd2ZxbmptZmcjYXpgbG5zYndqYWpvand6YWZgYnZwZiNqdyNqcEdqYHdqbG1icXojbGVubGdqZWpgYndqbG1wV2tmI2Vsb29sdGptZG5ieiNxZmVmcSN3bDlAbG1wZnJ2Zm13b3ovSm13ZnFtYndqbG1ib2Jvd2tsdmRrI3BsbmZ3a2J3I3Rsdm9nI2FmdGxxb2ckcCNlanFwd2BvYnBwamVqZmcjYnBhbHd3bG4jbGUjd2tmK3NicXdqYHZvYnFvemJvamRtPiFvZmV3ISNubHB3I2Bsbm5sbW96YWJwanAjZWxxI3drZmVsdm1nYndqbG0jbGVgbG13cWphdndqbG1wc2xzdm9icWp3eiNsZWBmbXdmcSNsZSN3a2Z3bCNxZmd2YGYjd2tmaXZxanBnamB3amxtcGJzc3Fse2puYndqbG0jbG1ubHZwZmx2dz4hTWZ0I1dmcHdibmZtd2Bsb29mYHdqbG0jbGU/LHBzYm09PyxiPT8sam0jd2tmI1ZtandmZ2Vqb24jZ2pxZmB3bHEucHdxamB3LWd3ZyE9a2JwI2FmZm0jdnBmZ3Fmd3ZxbSN3bCN3a2Zib3drbHZkayN3a2pwYGtibWRmI2ptI3drZnBmdWZxYm8jbHdrZnFhdncjd2tmcWYjYnFmdm1zcWZgZmdmbXdmZ2pwI3BqbmpvYnEjd2xmcHNmYGpib296I2ptdGZqZGt3OSNhbG9nOGpwI2Bib29mZyN3a2ZgbG5zdndid2psbWJvam1namBid2Yjd2tid3FmcHdxamB3Zmcjd2xcbj9uZndiI21ibmY+IWJxZiN3enNqYGJvb3pgbG1lb2pgdyN0andrS2x0ZnVmcS8jd2tmI0JtI2Z7Ym5zb2YjbGVgbG5zYnFmZyN0andrcnZibXdqd2pmcCNsZXFid2tmcSN3a2JtI2JgbG1wd2Zvb2J3amxtbWZgZnBwYnF6I2VscXFmc2xxd2ZnI3drYndwc2ZgamVqYGJ3amxtc2xvandqYGJvI2JtZyVtYXBzOCVtYXBzOD9xZmVmcWZtYGZwI3dsd2tmI3BibmYjemZicURsdWZxbW5mbXcjbGVkZm1mcWJ3amxtI2xla2J1ZiNtbHcjYWZmbXBmdWZxYm8jemZicXBgbG5uanduZm13I3dsXG5cbj92byNgb2JwcD4hdWpwdmJvanlid2psbTI6d2sjYGZtd3Zxei9zcWJgd2p3amxtZnFwd2tidyNrZiN0bHZvZ2JtZyNgbG13am12ZmdsYGB2c2J3amxtI2xlanAjZ2Zlam1mZyNicGBmbXdxZiNsZSN3a2Z3a2YjYm5sdm13I2xlPT9nanUjcHd6b2Y+IWZydmp1Ym9mbXcjbGVnamVlZnFmbXdqYndmYXFsdmRrdyNiYWx2d25icWRqbS5vZmV3OSNidndsbmJ3amBib296d2tsdmRrdyNsZSNicFBsbmYjbGUjd2tmcGZcdD9nanUjYG9icHA+IWptc3Z3I2BvYnBwPiFxZnNvYmBmZyN0andranAjbG1mI2xlI3drZmZndmBid2psbSNibWdqbWVvdmZtYGZnI2F6cWZzdndid2psbSNicFx0P25md2IjbWJuZj4hYmBgbG5ubGdid2psbT8sZ2p1PVx0PyxnanU9b2JxZGYjc2JxdyNsZUptcHdqd3Z3ZiNlbHF3a2YjcGwuYGJvb2ZnI2JkYmptcHcjd2tmI0ptI3dranAjYGJwZi90YnAjYnNzbGptd2ZnYG9iam5mZyN3bCNhZktsdGZ1ZnEvI3dranBHZnNicXduZm13I2xld2tmI3FmbmJqbWptZGZlZWZgdyNsbSN3a2ZzYnF3amB2b2Jxb3ojZ2ZibyN0andrI3drZlx0P2dqdSNwd3pvZj4hYm9ubHB3I2JvdGJ6cGJxZiNgdnFxZm13b3pme3NxZnBwamxtI2xlc2tqb2xwbHNreiNsZWVscSNubHFmI3drYm1ganVqb2p5YndqbG1wbG0jd2tmI2pwb2JtZ3Bmb2Zgd2ZnSm1nZntgYm0jcWZwdm93I2ptISN1Ym92Zj4hISMsPXdrZiNwd3F2YHd2cWYjLD0/LGI9PyxnanU9TmJteiNsZSN3a2ZwZmBidnBmZyNheiN3a2ZsZSN3a2YjVm1qd2ZncHNibSNgb2JwcD4hbmBibSNhZiN3cWJgZmdqcCNxZm9id2ZnI3dsYWZgYm5mI2xtZiNsZWpwI2VxZnJ2Zm13b3pvanVqbWQjam0jd2tmd2tmbHFmd2pgYm9vekVsb29sdGptZCN3a2ZRZnVsb3Z3amxtYnF6ZGx1ZnFtbmZtdyNqbWpwI2dmd2ZxbmptZmd3a2Yjc2xvandqYGJvam13cWxndmBmZyNqbXB2ZWVqYGpmbXcjd2xnZnBgcWpzd2psbSE9cGtscXcjcHdscWpmcHBmc2JxYndqbG0jbGVicCN3bCN0a2Z3a2ZxaG1sdG0jZWxxI2p3cHRicCNqbWp3amJvb3pnanBzb2J6OWFvbGBoanAjYm0jZntibnNvZndrZiNzcWptYGpzYm9gbG1wanB3cCNsZSNicWZgbGRtanlmZyNicCxhbGd6PT8sa3dubz1iI3B2YXB3Ym13amJvcWZgbG1wd3F2YHdmZ2tmYmcjbGUjcHdid2ZxZnBqcHdibWBmI3dsdm1nZnFkcWJndmJ3ZldrZnFmI2JxZiN3dGxkcWJ1andid2psbWJvYnFmI2dmcGBxamFmZ2ptd2Ztd2psbWJvb3pwZnF1ZmcjYnAjd2tmYG9icHA+IWtmYmdmcWxzc2xwandqbG0jd2xldm1nYm5mbXdib296Z2xuam1id2ZnI3drZmJtZyN3a2YjbHdrZnFib29qYm1gZiN0andrdGJwI2VscWBmZyN3bHFmcHNmYHdqdWZvei9ibWcjc2xvandqYGJvam0jcHZzc2xxdyNsZXNmbHNvZiNqbSN3a2YxM3drI2BmbXd2cXotYm1nI3N2YW9qcGtmZ29sYmdAa2Jxd2FmYnd3bCN2bWdmcXB3Ym1nbmZuYWZxI3B3YndmcGZtdWpxbG1uZm13Ym9lanFwdyNrYm9lI2xlYGx2bXdxamZwI2JtZ2JxYGtqd2Zgd3ZxYm9hZiNgbG1wamdmcWZnYGticWJgd2ZxanlmZ2BvZmJxSm13ZnF1Ym9idndrbHFqd2J3anVmRWZnZnFid2psbSNsZXRicCNwdmBgZmZnZmdibWcjd2tmcWYjYnFmYiNgbG1wZnJ2Zm1gZndrZiNTcWZwamdmbXdib3BsI2ptYG92Z2ZnZXFmZiNwbGV3dGJxZnB2YGBmcHBqbG0jbGVnZnVmb2xzZmcjd2tmdGJwI2dmcHdxbHpmZ2J0YnojZXFsbiN3a2Y4XHQ/LHBgcWpzdz1cdD9ib3drbHZkayN3a2Z6ZWxvb2x0ZmcjYXojYm5scWYjc2x0ZnFldm9xZnB2b3dmZyNqbSNiVm1qdWZxcGp3eiNsZUtsdGZ1ZnEvI25ibXp3a2Yjc3FmcGpnZm13S2x0ZnVmcS8jcGxuZmpwI3drbHZka3cjd2x2bXdqbyN3a2YjZm1ndGJwI2JtbWx2bWBmZ2JxZiNqbnNscXdibXdib3BsI2ptYG92Z2ZwPT9qbXN2dyN3enNmPndrZiNgZm13ZnEjbGUjR0wjTUxXI0JPV0ZRdnBmZyN3bCNxZmVmcXdrZm5mcCw8cGxxdz53a2J3I2tiZyNhZmZtd2tmI2FicGpwI2VscWticCNnZnVmb2xzZmdqbSN3a2YjcHZubmZxYGxuc2JxYndqdWZvemdmcGBxamFmZyN3a2ZwdmBrI2JwI3drbHBmd2tmI3FmcHZvd2ptZGpwI2puc2xwcGphb2Z1YnFqbHZwI2x3a2ZxUGx2d2sjQmVxamBibWtidWYjd2tmI3BibmZmZWVmYHdqdWZtZnBwam0jdGtqYGsjYGJwZjgjd2Z7dy5ib2pkbTlwd3F2YHd2cWYjYm1nOCNhYmBoZHFsdm1nOXFmZGJxZ2ptZCN3a2ZwdnNzbHF3Zmcjd2tmanAjYm9wbCNobWx0bXB3em9mPiFuYnFkam1qbWBvdmdqbWQjd2tmYWJrYnBiI05mb2J6dm1scXBoI2FsaG4vSW9tbHFwaCNtem1scXBocG9sdWZtKU0oYWptYmptd2ZxbWJgamxtYm9gYm9qZWpgYmBqL19tYGxudm1qYGJgai9fbWBsbXB3cXZgYGovX20hPT9nanUjYG9icHA+IWdqcGJuYWpkdmJ3amxtR2xuYmptTWJuZiQvIyRiZ25qbWpwd3Fid2psbXBqbnZvd2JtZmx2cG96d3FibXBzbHF3YndqbG1KbXdmcW1id2psbWJvI25icWRqbS5hbHd3bG45cWZwc2xtcGpham9qd3o/IlhmbWdqZV4uLj1cdD8sPT9uZndiI21ibmY+IWpuc29mbmZtd2J3amxtam1lcWJwd3F2YHd2cWZxZnNxZnBmbXdid2psbWFscWdmcS5hbHd3bG45PyxrZmJnPVx0P2FsZ3o9Pmt3d3MmMEImMUUmMUU/ZWxxbiNuZndrbGc+IW5md2tsZz4hc2xwdyEjLGVidWpgbG0tamBsISN+KjhcdD8scGBxanN3PVx0LXBmd0J3d3FqYXZ3ZitCZ25qbWpwd3Fid2psbT4jbWZ0I0JxcWJ6Kyo4PyJYZm1namVeLi49Dlx0Z2pwc29iejlhb2xgaDhWbWVscXd2bWJ3Zm96LyE9JW1hcHM4PyxnanU9LGVidWpgbG0tamBsIT0+JHB3em9mcGtmZnckI2pnZm13amVqYGJ3amxtLyNlbHEjZntibnNvZi8/b2o9P2Ija3FmZT4hLGJtI2Jvd2ZxbWJ3anVmYnAjYiNxZnB2b3cjbGVzdyE9PyxwYHFqc3c9XHR3enNmPiFwdmFuanchI1x0K2V2bWB3amxtKyojeHFmYGxubmZtZ2J3amxtZWxxbiNiYHdqbG0+ISx3cWJtcGVscW5id2psbXFmYGxtcHdxdmB3amxtLXB3em9mLWdqcHNvYnojQmBgbHFnam1kI3dsI2tqZ2dmbSEjbWJuZj4hYm9sbWQjdGp3ayN3a2ZnbGB2bmZtdy1hbGd6LWJzc3Fse2puYndmb3ojQGxubnZtamBid2psbXBzbHB3ISNiYHdqbG0+IW5mYm1qbWQjJXJ2bHc4Li4/IlhmbWdqZV4uLj1TcWpuZiNOam1qcHdmcWBrYnFiYHdmcWpwd2pgPyxiPSM/YiNgb2JwcD53a2Yja2pwd2xxeiNsZSNsbW5sdnBmbHVmcT4hd2tmI2RsdWZxbW5mbXdrcWZlPiFrd3dzcDksLHRicCNscWpkam1ib296dGJwI2ptd3FsZ3ZgZmdgb2JwcGplamBid2psbXFmc3FmcGZtd2J3anVmYnFmI2BsbXBqZ2ZxZmc/IlhmbWdqZV4uLj1cdFx0Z2ZzZm1ncCNsbSN3a2ZWbWp1ZnFwand6I2xlI2ptI2BsbXdxYnB3I3dsI3NvYmBma2xvZ2ZxPiFqbSN3a2YjYGJwZiNsZWptd2ZxbWJ3amxtYm8jYGxtcHdqd3Z3amxtYm9wd3pvZj4hYWxxZ2ZxLjkjZXZtYHdqbG0rKiN4QWZgYnZwZiNsZSN3a2YucHdxamB3LWd3ZyE9XHQ/d2Jhb2YjYG9icHA+IWJgYGxuc2JtamZnI2F6YmBgbHZtdyNsZSN3a2Y/cGBxanN3I3BxYD4hLG1id3ZxZiNsZSN3a2Yjd2tmI3NmbHNvZiNqbSNqbSNiZ2dqd2psbSN3bHAqOCNpcC1qZyM+I2pnISN0amd3az4hMjMzJiFxZmRicWdqbWQjd2tmI1FsbmJtI0Bid2tsb2pgYm0jam1nZnNmbWdmbXdlbG9vbHRqbWQjd2tmIy1kamUhI3RqZ3drPiEyd2tmI2Vsb29sdGptZCNnanBgcWpuam1id2psbWJxYGtiZmxvbGRqYGJvc3FqbmYjbmptanB3ZnEtaXAhPT8scGBxanN3PWBsbmFqbWJ3amxtI2xlI25icWRqbXRqZ3drPiFgcWZid2ZGb2ZuZm13K3QtYnd3YmBrRnVmbXcrPyxiPT8sd2c9Pyx3cT1wcWA+IWt3d3NwOSwsYkptI3NicXdqYHZvYnEvI2JvamRtPiFvZmV3ISNAeWZgayNRZnN2YW9qYFZtandmZyNIam1kZ2xuYGxxcWZwc2xtZ2ZtYGZgbG1gb3ZnZmcjd2tidy1rd25vISN3andvZj4hK2V2bWB3amxtIysqI3hgbG5mcCNlcWxuI3drZmJzc29qYGJ3amxtI2xlP3BzYm0jYG9icHA+IXBhZm9qZnVmZyN3bCNhZmZuZm13KyRwYHFqc3ckPyxiPVx0Pyxvaj1cdD9vanVmcXojZ2plZWZxZm13PT9wc2JtI2BvYnBwPiFsc3dqbG0jdWJvdmY+IStib3BsI2htbHRtI2JwXG4/b2o9P2Ija3FmZT4hPT9qbXN2dyNtYm5mPiFwZnNicWJ3ZmcjZXFsbnFmZWZxcWZnI3dsI2JwI3Vib2pkbT4hd2xzIT1lbHZtZ2ZxI2xlI3drZmJ3d2Zuc3dqbWQjd2wjYGJxYWxtI2dqbHtqZ2ZcdFx0P2dqdSNgb2JwcD4hYG9icHA+IXBmYnFgay4sYWxnej1cdD8sa3dubz1sc3NscXd2bWp3eiN3bGBsbm52bWpgYndqbG1wPyxrZmJnPQ5cdD9hbGd6I3B3em9mPiF0amd3azlXalxyVlNtZCNValxyV2t3YGtibWRmcCNqbSN3a2ZhbHFnZnEuYGxvbHE5IDMhI2FscWdmcT4hMyEjPyxwc2JtPT8sZ2p1PT90YnAjZ2pwYGx1ZnFmZyEjd3pzZj4hd2Z7dyEjKjhcdD8scGBxanN3PVx0XHRHZnNicXduZm13I2xlI2ZgYG9mcGpicHdqYGJvd2tmcWYja2JwI2FmZm1xZnB2b3dqbWQjZXFsbj8sYWxnej0/LGt3bm89a2JwI21mdWZxI2FmZm13a2YjZWpxcHcjd2puZmptI3FmcHNsbXBmI3dsYnZ3bG5id2pgYm9veiM/LGdqdT1cdFx0P2dqdSNqdGJwI2BsbXBqZ2ZxZmdzZnFgZm13I2xlI3drZiEjLD0/LGI9PyxnanU9YGxvb2Zgd2psbSNsZSNnZnBgZm1nZmcjZXFsbnBmYHdqbG0jbGUjd2tmYmBgZnN3LmBrYnFwZnd3bCNhZiNgbG1ldnBmZ25mbmFmcSNsZSN3a2Yjc2JnZ2ptZC5xamRrdzl3cWJtcG9id2psbSNsZWptd2Zxc3Fmd2J3amxtI2txZmU+JGt3d3M5LCx0a2Z3a2ZxI2xxI21sd1drZnFmI2JxZiNib3Bsd2tmcWYjYnFmI25ibXpiI3BuYm9vI212bmFmcWx3a2ZxI3NicXdwI2xlam5zbHBwamFvZiN3bCMjYG9icHA+IWF2d3dsbW9sYGJ3Zmcjam0jd2tmLSNLbHRmdWZxLyN3a2ZibWcjZnVmbXd2Ym9vekJ3I3drZiNmbWcjbGUjYWZgYnZwZiNsZSNqd3BxZnNxZnBmbXdwI3drZj9lbHFuI2Jgd2psbT4hI25md2tsZz4hc2xwdyFqdyNqcCNzbHBwamFvZm5scWYjb2poZm96I3dsYm0jam1gcWZicGYjam1rYnVmI2JvcGwjYWZmbWBscXFmcHNsbWdwI3dsYm1tbHZtYGZnI3drYndib2pkbT4hcWpka3chPW5ibXojYGx2bXdxamZwZWxxI25ibXojemZicXBmYnFvamZwdyNobWx0bWFmYGJ2cGYjancjdGJwc3chPT8scGBxanN3PQ4jdWJvamRtPiF3bHMhI2pta2JhandibXdwI2xlZWxvb2x0am1kI3pmYnEOXHQ/Z2p1I2BvYnBwPiFuam9vamxtI3NmbHNvZmBsbXdxbHVmcXBqYm8jYGxtYGZxbWptZCN3a2ZicWR2ZiN3a2J3I3drZmRsdWZxbW5mbXcjYm1nYiNxZmVmcWZtYGYjd2x3cWJtcGVmcXFmZyN3bGdmcGBxamFqbWQjd2tmI3B3em9mPiFgbG9scTlib3drbHZkayN3a2ZxZmFmcHcjaG1sdG0jZWxxcHZhbmp3ISNtYm5mPiFudm93anNvamBid2psbW5scWYjd2tibSNsbWYjcWZgbGRtandqbG0jbGVAbHZtYGpvI2xlI3drZmZnandqbG0jbGUjd2tmIyM/bmZ3YiNtYm5mPiFGbXdmcXdiam1uZm13I2J0YnojZXFsbiN3a2YjOG5icWRqbS5xamRrdzlidyN3a2Yjd2puZiNsZWptdWZwd2pkYndqbG1wYGxtbWZgd2ZnI3Rqd2tibWcjbmJteiNsd2tmcWJvd2tsdmRrI2p3I2pwYWZkam1tam1kI3Rqd2sjP3BzYm0jYG9icHA+IWdmcGBmbWdibXdwI2xlP3BzYm0jYG9icHA+IWojYm9qZG0+IXFqZGt3IT8sa2ZiZz1cdD9hbGd6I2Jwc2Zgd3AjbGUjd2tma2JwI3BqbWBmI2FmZm1GdnFsc2ZibSNWbWpsbXFmbmptanBgZm13I2xlbmxxZiNnamVlamB2b3dVamBmI1NxZnBqZ2Ztd2BsbnNscGp3amxtI2xlc2JwcGZnI3drcWx2ZGtubHFmI2puc2xxd2Jtd2VsbXcucGp5ZjkyMnN7Zntzb2JtYndqbG0jbGV3a2YjYGxtYGZzdyNsZXRxand3Zm0jam0jd2tmXG4/cHNibSNgb2JwcD4hanAjbG1mI2xlI3drZiNxZnBmbmFvYm1gZiN3bGxtI3drZiNkcWx2bWdwdGtqYGsjYGxtd2JqbXBqbWBvdmdqbWQjd2tmI2dmZWptZmcjYXojd2tmc3Zhb2pgYndqbG0jbGVuZmJtcCN3a2J3I3drZmx2d3BqZ2YjbGUjd2tmcHZzc2xxdyNsZSN3a2Y/am1zdncjYG9icHA+IT9wc2JtI2BvYnBwPiF3K05id2stcWJtZ2xuKypubHB3I3NxbG5qbWZtd2dmcGBxanN3amxtI2xlQGxtcHdibXdqbWxzb2Z0ZnFmI3N2YW9qcGtmZz9nanUjYG9icHA+IXBmYnNzZmJxcCNqbSN3a2YyISNrZmpka3c+ITIhI25scHcjam5zbHF3Ym13dGtqYGsjam1gb3ZnZnB0a2pgayNrYmcjYWZmbWdmcHdxdmB3amxtI2xld2tmI3Nsc3ZvYndqbG1cdFxuP2dqdSNgb2JwcD4hc2xwcGpham9qd3ojbGVwbG5md2puZnAjdnBmZ2Jzc2ZicSN3bCNrYnVmcHZgYGZwcCNsZSN3a2ZqbXdmbWdmZyN3bCNhZnNxZnBmbXcjam0jd2tmcHd6b2Y+IWBvZmJxOWEOXHQ/LHBgcWpzdz0OXHQ/dGJwI2Vsdm1nZmcjam1qbXdmcXVqZnQjdGp3a1xcamchI2BsbXdmbXc+IWBic2p3Ym8jbGUjd2tmDlx0P29qbWgjcWZvPiFwcWZvZmJwZiNsZSN3a2ZzbGptdyNsdncjd2tid3tOT0t3d3NRZnJ2ZnB3Ym1nI3B2YXBmcnZmbXdwZmBsbWcjb2JxZGZwd3VmcXojam5zbHF3Ym13cHNmYGplamBid2psbXBwdnFlYmBmI2xlI3drZmJzc29qZmcjd2wjd2tmZWxxZmpkbSNzbG9qYHpcXHBmd0dsbmJqbU1ibmZmcHdiYW9qcGtmZyNqbWpwI2Fmb2pmdWZnI3dsSm0jYmdnandqbG0jd2xuZmJtam1kI2xlI3drZmpwI21ibmZnI2Jld2Zxd2wjc3Fsd2ZgdyN3a2ZqcCNxZnNxZnBmbXdmZ0dmYG9icWJ3amxtI2xlbmxxZiNmZWVqYGpmbXdAb2JwcGplamBid2psbWx3a2ZxI2VscW5wI2xla2YjcWZ3dnFtZmcjd2w/cHNibSNgb2JwcD4hYHNmcWVscW5ibWBmI2xlK2V2bWB3amxtKyojeA5qZSNibWcjbG1veiNqZXFmZGpsbXAjbGUjd2tmb2ZiZ2ptZCN3bCN3a2ZxZm9id2psbXAjdGp3a1ZtandmZyNNYndqbG1wcHd6b2Y+IWtmamRrdzlsd2tmcSN3a2JtI3drZnpzZiEjYGxtd2Ztdz4hQnBwbGBqYndqbG0jbGVcdD8sa2ZiZz1cdD9hbGd6b2xgYndmZyNsbSN3a2ZqcCNxZmVmcXFmZyN3bCtqbWBvdmdqbWQjd2tmYGxtYGZtd3Fid2psbXB3a2Yjam1nanVqZ3Zib2JubG1kI3drZiNubHB3d2tibSNibXojbHdrZnEsPVx0P29qbWgjcWZvPiEjcWZ3dnFtI2Vib3BmOHdrZiNzdnFzbHBmI2xld2tmI2Jham9qd3ojd2w4YGxvbHE5IGVlZX5cdC1cdD9wc2JtI2BvYnBwPiF3a2YjcHZhaWZgdyNsZWdmZWptandqbG1wI2xlPQ5cdD9vam1oI3Fmbz4hYG9iam4jd2tidyN3a2ZrYnVmI2dmdWZvbHNmZz93YmFvZiN0amd3az4hYGZvZmFxYndqbG0jbGVFbG9vbHRqbWQjd2tmI3dsI2dqcHdqbWR2anBrP3BzYm0jYG9icHA+IWF3YmhmcCNzb2JgZiNqbXZtZ2ZxI3drZiNtYm5mbWx3Zmcjd2tidyN3a2Y9PyJYZm1namVeLi49XHRwd3pvZj4hbmJxZGptLmptcHdmYmcjbGUjd2tmam13cWxndmBmZyN3a2Z3a2Yjc3FsYGZwcCNsZWptYHFmYnBqbWQjd2tmZ2plZWZxZm1gZnAjam1mcHdqbmJ3Zmcjd2tid2Zwc2ZgamJvb3ojd2tmLGdqdT0/Z2p1I2pnPiF0YnAjZnVmbXd2Ym9vendrcWx2ZGtsdncja2pwd2tmI2dqZWVmcWZtYGZwbG5md2tqbWQjd2tid3BzYm09Pyxwc2JtPT8scGpkbWplamBibXdveiM9PyxwYHFqc3c9Dlx0Dlx0Zm11anFsbW5mbXdibyN3bCNzcWZ1Zm13I3drZmtidWYjYWZmbSN2cGZnZnBzZmBqYm9veiNlbHF2bWdmcXB3Ym1nI3drZmpwI2ZwcGZtd2pib296dGZxZiN3a2YjZWpxcHdqcCN3a2Yjb2JxZGZwd2tidWYjYWZmbSNuYmdmISNwcWA+IWt3d3M5LCxqbXdmcXNxZndmZyNicHBmYGxtZyNrYm9lI2xlYHFsb29qbWQ+IW1sISNqcCNgbG5zbHBmZyNsZUpKLyNLbG96I1FsbmJtanAjZntzZmB3Zmcjd2xrYnVmI3drZmpxI2x0bWdmZWptZmcjYnAjd2tmd3FiZ2p3amxtYm9veiNrYnVmI2dqZWVmcWZtd2JxZiNsZXdmbSN2cGZnd2wjZm1wdnFmI3drYndiZHFmZm5mbXcjdGp3a2BsbXdiam1qbWQjd2tmYnFmI2VxZnJ2Zm13b3pqbWVscW5id2psbSNsbWZ7Ym5zb2YjanAjd2tmcWZwdm93am1kI2ptI2I/LGI9Pyxvaj0/LHZvPSNgb2JwcD4hZWxsd2ZxYm1nI2Zwc2ZgamJvb3p3enNmPiFhdnd3bG0hIz8scHNibT0/LHBzYm09dGtqYGsjam1gb3ZnZmc9XHQ/bmZ3YiNtYm5mPiFgbG1wamdmcWZnI3drZmBicXFqZmcjbHZ3I2F6S2x0ZnVmcS8jancjanBhZmBibmYjc2JxdyNsZWptI3Fmb2J3amxtI3dsc2xzdm9icSNqbSN3a2Z3a2YjYGJzandibyNsZXRicCNsZWVqYGpib296dGtqYGsja2JwI2FmZm13a2YjS2pwd2xxeiNsZWJvd2ZxbWJ3anVmI3dsZ2plZWZxZm13I2VxbG53bCNwdnNzbHF3I3drZnB2ZGRmcHdmZyN3a2J3am0jd2tmI3NxbGBmcHAjIz9nanUjYG9icHA+IXdrZiNlbHZtZ2J3amxtYWZgYnZwZiNsZSNranBgbG1gZnFtZmcjdGp3a3drZiN2bWp1ZnFwand6bHNzbHBmZyN3bCN3a2Z3a2YjYGxtd2Z7dyNsZT9wc2JtI2BvYnBwPiFzd2Z7dyEjbWJuZj4hciFcblxuP2dqdSNgb2JwcD4hd2tmI3BgamZtd2plamBxZnNxZnBmbXdmZyNhem5id2tmbmJ3amBqYm1wZm9mYHdmZyNheiN3a2Z3a2J3I2tidWYjYWZmbT0/Z2p1I2BvYnBwPiFgZ2p1I2pnPiFrZmJnZnFqbSNzYnF3amB2b2JxL2BsbXVmcXdmZyNqbXdsKjhcdD8scGBxanN3PVx0P3Nram9scGxza2pgYm8jcHFzcGhsa3F1YndwaGp3alxyVlNtZCNValxyV2t3PEw9bz1tPW08VjxUPFU9bD1vPW09bTxWPFQ8VWptdWZwd2pkYmBqL19tc2Jxd2pganNiYGovX208VjxSPW48Uj1sPWc8WTxSPF08VzxcXD1tPW48VDxWPFI9bjxSPWw9ZzxVPWs8WTxXPFI8XjxZPFY9bTxUPW09bjxZPFA9ZzxxPFI8XjxSPW09bjxUPFY8Uj1uPFI9bD1nPWk8UjxdPFc8XFw9bT1uPWA8Xj1sPFk8UDxZPFE8VDxWPFI9bjxSPWw8XFw9Yz1tPFk8XzxSPFg8UT1jPW08VjxcXD1rPFxcPW49YDxRPFI8XjxSPW09bjxUPE88Vj1sPFxcPFQ8UT1nPF48UjxTPWw8Uj1tPWc8VjxSPW48Uj1sPFI8VT1tPFg8WTxXPFxcPW49YDxTPFI8UDxSPWU9YD1iPW09bDxZPFg9bT1uPF48UjxdPWw8XFw8WzxSPFA9bT1uPFI9bDxSPFE9Zz1vPWs8XFw9bT1uPFQ8WT1uPFk9azxZPFE8VDxZPH88VzxcXDxePFE8XFw9YzxUPW09bjxSPWw8VDxUPW08VD1tPW48WTxQPFxcPWw8WT1kPFk8UTxUPWM8TTxWPFxcPWs8XFw9bj1gPFM8Uj1hPW48UjxQPW89bTxXPFk8WD1vPFk9bj1tPFY8XFw8WzxcXD1uPWA9bjxSPF48XFw9bDxSPF48VjxSPFE8WT1rPFE8Uj1sPFk9ZDxZPFE8VDxZPFY8Uj1uPFI9bDxSPFk8Uj1sPF88XFw8UTxSPF48VjxSPW48Uj1sPFI8UDxMPFk8VjxXPFxcPFA8XFw0SzVoNWk1ajRGNEM1ZTVpNWo0RjRDNWY0SzRGNEs1aDVpNWQ0WjVkNFU0SzVoNEQ0XTRLNWk0QDRLNWg1aTVkNEs1bjRVNEs1aDRdNF80SzRKNWg1aTRYNEs0XTVvNEs0RjRLNWg0TzRVNFo0SzRNNEs1aDRdNWY0SzRaNEU0SzVoNEY0WTVpNWY1aTRLNWg0SzRVNFo0SzRNNEs1aDVqNEY0SzRKNEA0SzVoNE81aDRVNEs0RDRLNWg0RjRfNEA1ZjVoNEs1aDRPNW40XzRLNWk0SzVoNFo0VjRbNEs0RjRLNWg1bTVmNEM1ZjVkNEs1aDRGNF00QTVmNEQ0SzVoNEA0QzVmNEM0RTRLNWg0RjRVNWg1ZjVpNEs1aDRPNEI0RDRLNF00SzVoNEs1bTVoNEs1aTRLNWg0TzVtNWg0SzVpNEs1aDRGNEs0XTVmNEI0SzVoNEY1bjVqNWY0RTRLNWg0SzVoNFU0SzRENEs1aDRCNWQ0SzRbNF00SzVoNWk0QDRGNWk0VTRLNWg0QzVmNW81ZDRdNEs1aDRfNWY0SzRBNEU0VTRENEM0SzVoNWg1azRLNWg0RjRdNEQ1ZjRFNEs1aDRdNWQ0SzRENFs0SzVoNE80QzRENWY0RTRLNWg0SzRCNEQ0SzRdNEs1aDVpNEY0QTRDNEU0SzVoNEs0VjRLNWo1ZmB2cXBscTlzbGptd2ZxOD8sd2p3b2Y9XHQ/bmZ3YiMhI2txZmU+IWt3d3M5LCwhPT9wc2JtI2BvYnBwPiFuZm5hZnFwI2xlI3drZiN0am1nbHQtb2xgYndqbG11ZnF3amBiby5ib2pkbTksYj0jfyM/YiNrcWZlPiE/ImdsYHd6c2Yja3dubz1uZmdqYj4hcGBxZmZtISM/bHN3amxtI3Vib3ZmPiFlYnVqYGxtLWpgbCEjLD1cdFxuXG4/Z2p1I2BvYnBwPiFga2JxYmB3ZnFqcHdqYHAhI25md2tsZz4hZGZ3ISMsYWxnej1cdD8sa3dubz1cdHBrbHF3YHZ3I2pgbG0hI2dsYHZuZm13LXRxandmK3NiZ2dqbWQuYWx3d2xuOXFmc3FmcGZtd2J3anVmcHB2YW5qdyEjdWJvdmY+IWJvamRtPiFgZm13ZnEhI3drcWx2ZGtsdncjd2tmI3BgamZtYGYjZWpgd2psbVx0IyM/Z2p1I2BvYnBwPiFwdmFuanchI2BvYnBwPiFsbWYjbGUjd2tmI25scHcjdWJvamRtPiF3bHMhPT90YnAjZnB3YmFvanBrZmcqOA5cdD8scGBxanN3PQ5cdHFmd3ZxbSNlYm9wZjghPSotcHd6b2YtZ2pwc29iemFmYGJ2cGYjbGUjd2tmI2dsYHZuZm13LWBsbGhqZj9lbHFuI2Jgd2psbT4hLH5hbGd6eG5icWRqbTkzOEZtYHpgb2xzZmdqYiNsZXVmcXBqbG0jbGUjd2tmIy1gcWZid2ZGb2ZuZm13K21ibmYhI2BsbXdmbXc+IT8sZ2p1PVx0PyxnanU9XHRcdGJnbmptanB3cWJ3anVmIz8sYWxnej1cdD8sa3dubz1ranB3bHF6I2xlI3drZiMhPT9qbXN2dyN3enNmPiFzbHF3amxtI2xlI3drZiNicCNzYnF3I2xlI3drZiMlbWFwczg/YiNrcWZlPiFsd2tmcSNgbHZtd3FqZnAhPVx0P2dqdSNgb2JwcD4hPyxwc2JtPT8scHNibT0/Sm0jbHdrZnEjdGxxZ3AvZ2pwc29iejkjYW9sYGg4YGxtd3FsbyNsZSN3a2Yjam13cWxndmB3amxtI2xlLD1cdD9uZndiI21ibmY+IWJwI3Rmb28jYnAjd2tmI2ptI3FmYGZtdyN6ZmJxcA5cdFxuP2dqdSNgb2JwcD4hPyxnanU9XHRcbj8sZ2p1PVx0am1wc2pxZmcjYXojd2tmd2tmI2ZtZyNsZSN3a2YjYGxuc2J3amFvZiN0andrYWZgYm5mI2htbHRtI2JwI3B3em9mPiFuYnFkam05LWlwIT0/LHBgcWpzdz0/I0ptd2ZxbWJ3amxtYm8jd2tmcWYja2J1ZiNhZmZtRGZxbmJtI29ibWR2YmRmI3B3em9mPiFgbG9scTkgQGxubnZtanB3I1NicXd6YGxtcGpwd2ZtdyN0andrYWxxZ2ZxPiEzISNgZm9vI25icWRqbWtmamRrdz4hd2tmI25iaWxxand6I2xlISNib2pkbT4hYGZtd2ZxcWZvYndmZyN3bCN3a2YjbmJteiNnamVlZnFmbXcjTHF3a2xnbHsjQGt2cWBrcGpuam9icSN3bCN3a2YjLD1cdD9vam1oI3Fmbz4hcHRicCNsbWYjbGUjd2tmI3Ztd2pvI2tqcCNnZmJ3a34qKyo4XHQ/LHBgcWpzdz1sd2tmcSNvYm1kdmJkZnBgbG5zYnFmZyN3bCN3a2ZzbHF3amxtcCNsZSN3a2Z3a2YjTWZ3a2Zxb2JtZ3B3a2YjbmxwdyNgbG5ubG1hYmBoZHFsdm1nOXZxbyticWR2Zmcjd2tidyN3a2ZwYHFsb29qbWQ+IW1sISNqbWBvdmdmZyNqbSN3a2ZNbHF3ayNCbmZxamBibSN3a2YjbWJuZiNsZSN3a2ZqbXdmcXNxZndid2psbXB3a2Yjd3FiZ2p3amxtYm9nZnVmb2xzbmZtdyNsZSNlcWZydmZtd296I3ZwZmdiI2Bsb29mYHdqbG0jbGV1ZnF6I3BqbmpvYnEjd2xwdnFxbHZtZ2ptZCN3a2Zme2Juc29mI2xlI3dranBib2pkbT4hYGZtd2ZxIT10bHZvZyNrYnVmI2FmZm1qbmJkZlxcYGJzd2psbSM+Ynd3YmBrZmcjd2wjd2tmcHZkZGZwd2ptZCN3a2J3am0jd2tmI2VscW4jbGUjam11bG91Zmcjam0jd2tmanAjZ2ZxanVmZyNlcWxubWJuZmcjYmV3ZnEjd2tmSm13cWxndmB3amxtI3dscWZwd3FqYHdqbG1wI2xtI3B3em9mPiF0amd3azkjYGJtI2FmI3ZwZmcjd2wjd2tmI2BxZmJ3amxtI2xlbmxwdyNqbnNscXdibXcjam1lbHFuYndqbG0jYm1ncWZwdm93Zmcjam0jd2tmYGxvb2JzcGYjbGUjd2tmV2tqcCNuZmJtcCN3a2J3Zm9mbmZtd3AjbGUjd2tmdGJwI3Fmc29iYGZnI2F6Ym1ib3pwanAjbGUjd2tmam1wc2pxYndqbG0jZWxxcWZkYnFnZmcjYnAjd2tmbmxwdyNwdmBgZnBwZXZvaG1sdG0jYnAjJXJ2bHc4YiNgbG5zcWZrZm1wanVmS2pwd2xxeiNsZSN3a2YjdGZxZiNgbG1wamdmcWZncWZ3dnFtZmcjd2wjd2tmYnFmI3FmZWZxcWZnI3dsVm1wbHZxYGZnI2puYmRmPVx0XG4/Z2p1I2BvYnBwPiFgbG1wanB3cCNsZSN3a2Zwd2xzU3Fsc2JkYndqbG1qbXdmcWZwdyNqbSN3a2ZidWJqb2Jham9qd3ojbGVic3NmYnFwI3dsI2tidWZmb2Zgd3FsbmJkbWZ3amBmbWJhb2ZQZnF1amBmcCtldm1gd2psbSNsZSN3a2ZKdyNqcCNqbnNscXdibXc/LHBgcWpzdz0/LGdqdT1ldm1gd2psbSsqeHVicSNxZm9id2p1ZiN3bCN3a2ZicCNiI3FmcHZvdyNsZSN3a2Yjc2xwandqbG0jbGVFbHEjZntibnNvZi8jam0jbmZ3a2xnPiFzbHB3ISN0YnAjZWxvb2x0ZmcjYXolYm5zOG5nYnBrOCN3a2Z3a2YjYnNzb2pgYndqbG1pcCE9PyxwYHFqc3c9Dlx0dm89PyxnanU9PyxnanU9YmV3ZnEjd2tmI2dmYndrdGp3ayNxZnBzZmB3I3dscHd6b2Y+IXNiZ2dqbWQ5anAjc2Jxd2pgdm9icW96Z2pwc29iejlqbW9qbWY4I3d6c2Y+IXB2YW5qdyEjanAjZ2p1amdmZyNqbXdsXGJUQVxuemsjK1x2QmxcYlF/KnFmcHNsbXBiYWpvamdiZ2JnbmptanB3cWJgai9fbWptd2ZxbWJgamxtYm9mcGBscXFmcHNsbWdqZm13ZlxmSGVcZkhGXGZIQ1xmSWdcZkh7XGZIRlxmSW5cZkhcXFxmSWFcZkhZXGZIVVxmSEJcZkhSXGZIXFxcZklrXGZIXlxmSWdcZkh7XGZJZ1xmSG5cZkh2XGZJbVxmSERcZkhSXGZIWVxmSF5cZklrXGZIeVxmSFNcZkhEXGZIVFxmSFxcXGZIeVxmSFJcZkhcXFxmSEZcZkltXGZIXlxmSFNcZkhUXGZIelxmSWdcZkhwXGZJa1xmSG5cZkh2XGZIUlxmSFVcZkhTXGZIY1xmSEFcZklrXGZIcFxmSWtcZkhuXGZIWlxmSFJcZkhCXGZIU1xmSF5cZkhVXGZIQlxmSFJcZkhcXFxmSWxcZkhwXGZIUlxmSHtcZkhcXFxmSE9cZkhAXGZIRFxmSFJcZkhEXGZJa1xmSHlcZkltXGZIQlxmSFJcZkhcXFxmSEBcZklhXGZIXlxmSWVcZkh7XGZIQlxmSFJcZkheXGZIU1xmSHlcZkhCXGZIVVxmSFNcZkheXGZIUlxmSEZcZklvXGZIW1xmSWFcZkhMXGZIQFxmSE5cZkhQXGZISFxmSWtcZkhBXGZIUlxmSHBcZkhGXGZIUlxmSHlcZklhXGZIXlxmSFNcZkh5XGZIc1xmSWFcZkhcXFxmSWtcZkhEXGZIelxmSFNcZkheXGZIUlxmSEdcZkhKXGZJYFxmSFxcXGZIUlxmSERcZkhCXGZIUlxmSEJcZkheXGZJa1xmSEJcZkhIXGZISlxmSFJcZkhEXGZIQFxmSFJcZkhwXGZIUlxmSFxcXGZIWVxmSFNcZkh5XGZIUlxmSFRcZkh5XGZJYVxmSENcZklnXGZIblxmSHZcZkhSXGZIVVxmSEhcZklrXGZIRlxmSFVcZkltXGZIbVxmSHZcZkhAXGZISFxmSFJcZkhDXGZIUlxmSFRcZkhuXGZIWVxmSFJcZkhKXGZISlxmSWtcZkh6XGZIRFxmSWtcZkhGXGZIU1xmSHdcZkheXGZJa1xmSFlcZkhTXGZIWlxmSWtcZkhbXGZIXFxcZkhSXGZIcFxmSWFcZkhDXGZIZVxmSEhcZklhXGZISFxmSFxcXGZIQlxmSW1cZkhuXGZIQFxmSGRcZkhKXGZJZ1xmSERcZklnXGZIblxmSGVcZkhGXGZIeVxmSFxcXGZIT1xmSEZcZkhOXGZIUFxmSWtcZkhuXGZIVFxmSWFcZkhJXGZIU1xmSEhcZkhHXGZIU1xmSF5cZklhXGZIQlxmSEJcZkltXGZIelxmSWFcZkhDXGZIaVxmSHZcZklhXGZId1xmSFJcZkh3XGZJblxmSHNcZkhIXGZJbFxmSFRcZkhuXGZIe1xmSWxcZkhIXGZIcFxmSFJcZkhjXGZIe1xmSFJcZkhZXGZIU1xmSEFcZkhSXGZIe1xmSHRcZkhPXGZJYVxmSHNcZklrXGZISlxmSW5cZkhUXGZIXFxcZklrXGZISlxmSFNcZkhEXGZJZ1xmSG5cZkhVXGZISFxmSWFcZkhDXGZIUlxmSFRcZklrXGZIeVxmSWFcZkhUXGZIe1xmSFJcZkhuXGZIS1xmSWxcZkhZXGZIU1xmSFpcZklhXGZIWVxmSFxcXGZIUlxmSEhcZklrXGZIblxmSEpcZklkXGZIc1xmSWFcZkhUXGZIRFxmSHlcZklhXGZIWlxmSFJcZkhUXGZIUlxmSEJcZkhEXGZJa1xmSGlcZkhKXGZIUlxmSF5cZkhIXGZIQFxmSFNcZkhwXGZIXlxmSWxcZkhGXGZJbVxmSFxcXGZJblxmSFtcZkhVXGZIU1xmSG5cZkhKXGZJbFxmSEJcZkhTXGZISFxmSWFcZkhcXFxmSHlcZkhZXGZIU1xmSEhcZkhSXGZIXFxcZkltXGZIRlxmSENcZklrXGZIVFxmSWFcZkhJXGZIUlxmSERcZkh5XGZIXFxcZklnXGZITVxmSFBcZkhCXGZJbVxmSHlcZklhXGZISFxmSENcZklnXGZIcFxmSERcZkhSXGZIeVxmSW9cZkhGXGZIQ1xmSFJcZkhGXGZJZ1xmSFRcZklhXGZIc1xmSHRcZkhcXFxmSWtcZkheXGZJblxmSHlcZkhSXGZIXFxcZklhXGZIQ1xmSFlcZkhTXGZIdlxmSFJcZkhcXFxmSFRcZkluXGZIdlxmSERcZkhSXGZIQlxmSW5cZkheXGZJYVxmSENcZkhKXGZJa1xmSHpcZklrXGZIblxmSFVcZkhCXGZJa1xmSFpcZkhSXGZIVFxmSWFcZkh5XGZJblxmSF5cZkhCXGZJZFxmSG5cZkhEXGZJa1xmSEhcZklkXGZIQ1xmSFJcZkhcXFxmSHBcZkhTXGZIVFxmSHlcZklrcXBwKHtubyEjd2p3b2Y+IS53enNmISNgbG13Zm13PiF3andvZiEjYGxtd2Ztdz4hYncjd2tmI3BibmYjd2puZi1pcCE9PyxwYHFqc3c9XHQ/ISNuZndrbGc+IXNscHchIz8scHNibT0/LGI9Pyxvaj11ZnF3amBiby5ib2pkbTl3LGlydmZxei1uam0taXAhPS1gb2pgaCtldm1gd2psbSsjcHd6b2Y+IXNiZ2dqbWQufiorKjhcdD8scGBxanN3PVx0Pyxwc2JtPT9iI2txZmU+IT9iI2txZmU+IWt3d3M5LCwqOCNxZnd2cW0jZWJvcGY4d2Z7dy5nZmBscWJ3amxtOSNwYHFsb29qbWQ+IW1sISNhbHFnZnEuYGxvb2JzcGY5YnBwbGBqYndmZyN0andrI0Fia2JwYiNKbWdsbWZwamJGbWRvanBrI29ibWR2YmRmP3dme3cje25vOXBzYmBmPi1kamUhI2FscWdmcT4hMyE/LGFsZ3o9XHQ/LGt3bm89XHRsdWZxZW9sdDlramdnZm04am5kI3BxYD4ha3d3czksLGJnZ0Z1Zm13T2pwd2ZtZnFxZnBzbG1wamFvZiNlbHEjcC1pcCE9PyxwYHFqc3c9XHQsZWJ1amBsbS1qYGwhIyw9bHNmcWJ3am1kI3B6cHdmbiEjcHd6b2Y+IXRqZ3drOTJ3YnFkZnc+IVxcYW9ibWghPVB3YndmI1ZtanVmcXBqd3p3Znt3LmJvamRtOW9mZXc4XHRnbGB2bmZtdy10cWp3ZisvI2ptYG92Z2ptZCN3a2YjYnFsdm1nI3drZiN0bHFvZyo4Dlx0PyxwYHFqc3c9Dlx0PyEjcHd6b2Y+IWtmamRrdzk4bHVmcWVvbHQ5a2pnZ2ZtbmxxZiNqbWVscW5id2psbWJtI2ptd2ZxbWJ3amxtYm9iI25mbmFmcSNsZSN3a2YjbG1mI2xlI3drZiNlanFwd2BibSNhZiNlbHZtZyNqbSM/LGdqdT1cdFxuXG4/LGdqdT1cdGdqcHNvYno5I21sbWY4IT0hIyw9XHQ/b2ptaCNxZm8+IVx0IyMrZXZtYHdqbG0rKiN4d2tmIzI2d2sjYGZtd3Zxei1zcWZ1Zm13R2ZlYnZvdytvYnFkZiNtdm5hZnEjbGUjQXp5Ym13am1mI0Zuc2pxZi1pc2R/d2t2bmF/b2Zld391YnB3I25iaWxxand6I2xlbmJpbHFqd3ojbGUjd2tmIyNib2pkbT4hYGZtd2ZxIT1WbWp1ZnFwand6I1NxZnBwZ2xuam1id2ZnI2F6I3drZlBmYGxtZyNUbHFvZyNUYnFnanB3cWphdndqbG0jbGUjcHd6b2Y+IXNscGp3amxtOXdrZiNxZnB3I2xlI3drZiNga2JxYmB3ZnFqeWZnI2F6I3Fmbz4hbWxlbG9vbHQhPWdmcWp1ZnAjZXFsbiN3a2ZxYndrZnEjd2tibSN3a2YjYiNgbG5ham1id2psbSNsZXB3em9mPiF0amd3azkyMzNGbWRvanBrLnBzZmJoam1kYGxuc3Z3ZnEjcGBqZm1gZmFscWdmcT4hMyEjYm93PiF3a2YjZntqcHdmbWBmI2xlR2ZubGBxYndqYCNTYnF3eiEjcHd6b2Y+IW5icWRqbS5FbHEjd2tqcCNxZmJwbG0vLWlwIT0/LHBgcWpzdz1cdFxucEF6V2JkTWJuZitwKlgzXmlwIT0/LHBgcWpzdz0OXHQ/LWlwIT0/LHBgcWpzdz0OXHRvam1oI3Fmbz4hamBsbSEjJCNib3c+JCQjYG9icHA+JGVscW5id2psbSNsZSN3a2Z1ZnFwamxtcCNsZSN3a2YjPyxiPT8sZ2p1PT8sZ2p1PSxzYmRmPVx0IyM/c2JkZj1cdD9nanUjYG9icHA+IWBsbXdhZmBibmYjd2tmI2VqcXB3YWJrYnBiI0ptZ2xtZnBqYmZtZG9qcGsjK3BqbnNvZioieSJXIlciWyJRIlUiViJAPWk9bDxePFxcPW49bTxWPFQ8VjxSPFA8UzxcXDxRPFQ8VD1jPF48Vz1jPFk9bj1tPWM8eDxSPF08XFw8XjxUPW49YD1rPFk8VzxSPF48WTxWPFxcPWw8XFw8WzxePFQ9bjxUPWM8dDxRPW48WT1sPFE8WT1uPHI9bjxePFk9bjxUPW49YDxRPFxcPFM9bDxUPFA8WT1sPFQ8UT1uPFk9bDxRPFk9bjxWPFI9bjxSPWw8UjxfPFI9bT1uPWw8XFw8UTxUPWo9ZzxWPFxcPWs8WT1tPW48XjxZPW89bTxXPFI8XjxUPWM9aTxTPWw8UjxdPFc8WTxQPWc8UzxSPFc9bz1rPFQ9bj1gPWM8XjxXPWM9Yj1uPW09YzxRPFxcPFQ8XTxSPFc8WTxZPFY8UjxQPFM8XFw8UTxUPWM8XjxRPFQ8UDxcXDxRPFQ8WT1tPWw8WTxYPW09bjxePFxcNEs1aDVpNWQ0SzRaNWY0VTRLNWg0XTRKNWY0XzVmNEU0SzVoNEs1ajRGNW40SzVoNWk0WDRLNF01bzRLNEY1bzRLNWg0XzVmNEs0XTRLNEY0SzVoNWk1bzRGNWQ0RDRFNEs1aDRfNFU1ZDRDNWY0RTRLNEE0WTRLNEo1ZjRLNEY0SzVoNFU0SzVoNWk1ZjRFNEs1aDRZNWQ0RjVmNEs0RjRLNWg0SzVqNEY0XTVqNEY0SzVoNEY0WTRLNWk1ZjVpNEs1aDRJNF81aDRLNWk1ZjRLNWg1aTRYNEs0XTVvNEU0SzVoNWk0XTRKNWY0SzRGcWxhbHdwISNgbG13Zm13PiE/Z2p1I2pnPiFlbGx3ZnEhPXdrZiNWbWp3ZmcjUHdid2ZwP2puZCNwcWA+IWt3d3M5LCwtaXNkf3FqZGt3f3drdm5hfy1pcCE9PyxwYHFqc3c9Dlx0P29sYGJ3amxtLXNxbHdsYGxvZXFibmZhbHFnZnE+ITMhI3AhIyw9XHQ/bmZ3YiNtYm5mPiE/LGI9PyxnanU9PyxnanU9P2VsbXcudGZqZGt3OWFsb2c4JXJ2bHc4I2JtZyMlcnZsdzhnZnNmbWdqbWQjbG0jd2tmI25icWRqbTkzOHNiZ2dqbWQ5ISNxZm8+IW1sZWxvb2x0ISNTcWZwamdmbXcjbGUjd2tmI3d0Zm13amZ3ayNgZm13dnF6ZnVqcGpsbT1cdCMjPyxzYmRmSm13ZnFtZncjRntzb2xxZnFiLWJwem1gIz4jd3F2ZjgOXHRqbWVscW5id2psbSNiYWx2dz9nanUjamc+IWtmYmdmcSE9ISNiYHdqbG0+IWt3d3M5LCw/YiNrcWZlPiFrd3dzcDksLD9nanUjamc+IWBsbXdmbXchPyxnanU9Dlx0PyxnanU9Dlx0P2dmcWp1ZmcjZXFsbiN3a2YjP2puZCNwcWA+JGt3d3M5LCxiYGBscWdqbWQjd2wjd2tmI1x0PyxhbGd6PVx0Pyxrd25vPVx0cHd6b2Y+IWVsbXcucGp5ZjlwYHFqc3cjb2JtZHZiZGY+IUJxamJvLyNLZm91ZndqYGIvPyxiPT9wc2JtI2BvYnBwPiE/LHBgcWpzdz0/cGBxanN3I3Nsb2p3amBibyNzYnF3amZwd2c9Pyx3cT0/LHdiYW9mPT9rcWZlPiFrd3dzOSwsdHR0LWptd2Zxc3Fmd2J3amxtI2xlcWZvPiFwd3pvZnBrZmZ3ISNnbGB2bmZtdy10cWp3ZiskP2BrYnFwZnc+IXZ3ZS47IT1cdGFmZGptbWptZCNsZSN3a2YjcWZ1ZmJvZmcjd2tidyN3a2Z3Zm9mdWpwamxtI3BmcWpmcCEjcWZvPiFtbGVsb29sdCE9I3dicWRmdz4hXFxhb2JtaCE9YG9iam5qbWQjd2tidyN3a2Zrd3dzJjBCJjFFJjFFdHR0LW5ibWplZnB3YndqbG1wI2xlU3FqbmYjTmptanB3ZnEjbGVqbWVvdmZtYGZnI2F6I3drZmBvYnBwPiFgb2ZicWVqeyE9LGdqdT0OXHQ/LGdqdT0OXHQOXHR3a3FmZi5nam5mbXBqbG1ib0BrdnFgayNsZSNGbWRvYm1nbGUjTWxxd2sjQGJxbG9qbWJwcnZicWYjaGpvbG5md3FmcC1iZ2dGdWZtd09qcHdmbWZxZ2pwd2ptYHcjZXFsbiN3a2ZgbG5ubG1veiNobWx0bSNicFNrbG1md2pgI0Jvc2tiYWZ3Z2Zgb2JxZmcjd2tidyN3a2ZgbG13cWxvb2ZnI2F6I3drZkFmbWlibmptI0VxYm1ob2ptcWxvZi5zb2J6am1kI2RibmZ3a2YjVm1qdWZxcGp3eiNsZWptI1RmcHdmcW0jRnZxbHNmc2ZxcGxtYm8jYGxuc3Z3ZnFTcWxpZmB3I0R2d2ZtYWZxZHFmZGJxZ29mcHAjbGUjd2tma2JwI2FmZm0jc3Fsc2xwZmd3bGRmd2tmcSN0andrI3drZj0/LG9qPT9vaiNgb2JwcD4ham0jcGxuZiNgbHZtd3FqZnBuam0taXAhPT8scGBxanN3PWxlI3drZiNzbHN2b2J3amxtbGVlamBqYm8jb2JtZHZiZGY/am5kI3BxYD4ham5iZGZwLGpnZm13amVqZmcjYXojd2tmbWJ3dnFibyNxZnBsdnFgZnBgb2JwcGplamBid2psbSNsZWBibSNhZiNgbG1wamdmcWZncnZibXd2biNuZmBrYm1qYHBNZnVmcXdrZm9mcHAvI3drZm5qb29qbG0jemZicXAjYmRsPyxhbGd6PQ5cdD8sa3dubz0OInkiVyJXIlsiUSJVIlYiQFx0d2JoZiNiZ3VibXdiZGYjbGVibWcvI2JgYGxxZ2ptZCN3bGJ3d3FqYXZ3Zmcjd2wjd2tmTmpgcWxwbGV3I1RqbWdsdHB3a2YjZWpxcHcjYGZtd3ZxenZtZ2ZxI3drZiNgbG13cWxvZ2p1I2BvYnBwPiFrZmJnZnFwa2xxd296I2Jld2ZxI3drZm1sd2Jhb2YjZntgZnN3amxtd2ZtcCNsZSN3a2x2cGJtZ3BwZnVmcWJvI2dqZWVmcWZtd2JxbHZtZyN3a2YjdGxxb2ctcWZiYGtqbWQjbmpvandicXpqcGxvYndmZyNlcWxuI3drZmxzc2xwandqbG0jd2wjd2tmd2tmI0xvZyNXZnB3Ym5mbXdCZXFqYGJtI0JuZnFqYGJtcGptcGZxd2ZnI2ptd2wjd2tmcGZzYnFid2YjZXFsbiN3a2ZuZndxbHNsb2p3Ym0jYnFmYm5iaGZwI2p3I3NscHBqYW9mYmBobWx0b2ZnZGZnI3drYndicWR2YmFveiN3a2Yjbmxwd3d6c2Y+IXdme3csYHBwIT1cdHdrZiNKbXdmcW1id2psbWJvQmBgbHFnam1kI3dsI3drZiNzZj4hd2Z7dyxgcHAhIyw9XHRgbGptYGpnZiN0andrI3drZnd0bC53a2pxZ3AjbGUjd2tmR3Zxam1kI3dranAjd2puZi9ndnFqbWQjd2tmI3NmcWpsZ2JtbWx2bWBmZyN3a2J3I2tmd2tmI2ptd2ZxbWJ3amxtYm9ibWcjbmxxZiNxZmBmbXdvemFmb2pmdWZnI3drYncjd2tmYGxtcGBqbHZwbWZwcCNibWdlbHFuZnFveiNobWx0bSNicHB2cXFsdm1nZmcjYXojd2tmZWpxcHcjYnNzZmJxZmcjam1sYGBicGpsbWJvb3ojdnBmZ3NscGp3amxtOWJhcGxvdndmOCEjd2JxZGZ3PiFcXGFvYm1oISNzbHBqd2psbTlxZm9id2p1Zjh3Znt3LmJvamRtOWBmbXdmcThpYnssb2phcCxpcnZmcXosMi1hYmBoZHFsdm1nLmBsb2xxOSB3enNmPiFic3NvamBid2psbSxibWR2YmRmISNgbG13Zm13PiE/bmZ3YiNrd3dzLmZydmp1PiFTcWp1YmB6I1Nsb2pgej8sYj1mKyEmMEBwYHFqc3cjcHFgPiQhI3dicWRmdz4hXFxhb2JtaCE9TG0jd2tmI2x3a2ZxI2tibWcvLWlzZH93a3ZuYX9xamRrd38xPyxnanU9P2dqdSNgb2JwcD4hP2dqdSNwd3pvZj4hZW9sYnc5bWptZndmZm13ayNgZm13dnF6PyxhbGd6PQ5cdD8sa3dubz0OXHQ/am5kI3BxYD4ha3d3czksLHA4d2Z7dy5ib2pkbTlgZm13ZnFlbG13LnRmamRrdzkjYWxvZzgjQmBgbHFnam1kI3dsI3drZiNnamVlZnFmbWBmI2Fmd3RmZm0hI2VxYm5mYWxxZ2ZxPiEzISMhI3B3em9mPiFzbHBqd2psbTlvam1oI2txZmU+IWt3d3M5LCxrd25vNyxvbGxwZi1nd2chPVx0Z3Zxam1kI3dranAjc2ZxamxnPyx3Zz0/LHdxPT8sd2Jhb2Y9YG9scGZveiNxZm9id2ZnI3dsZWxxI3drZiNlanFwdyN3am5mOGVsbXcudGZqZGt3OWFsb2c4am1zdncjd3pzZj4hd2Z7dyEjP3BzYm0jcHd6b2Y+IWVsbXcubG1xZmJnenB3YndmYGtibWRmXG4/Z2p1I2BvYnBwPiFgb2ZicWdsYHZuZm13LW9sYGJ3amxtLSNFbHEjZntibnNvZi8jd2tmI2IjdGpnZiN1YnFqZnd6I2xlIz8iR0xAV1pTRiNrd25vPQ5cdD8lbWFwczglbWFwczglbWFwczghPT9iI2txZmU+IWt3d3M5LCxwd3pvZj4hZW9sYnc5b2ZldzhgbG1gZnFtZmcjdGp3ayN3a2Y+a3d3cyYwQiYxRSYxRXR0dC1qbSNzbHN2b2JxI2B2b3d2cWZ3enNmPiF3Znt3LGBwcCEjLD1qdyNqcCNzbHBwamFvZiN3bCNLYnF1YnFnI1ZtanVmcXBqd3p3em9mcGtmZnchI2txZmU+ISx3a2YjbmJqbSNga2JxYmB3ZnFMe2VscWcjVm1qdWZxcGp3eiMjbWJuZj4haGZ6dGxxZ3AhI2Bwd3pvZj4hd2Z7dy5ib2pkbTl3a2YjVm1qd2ZnI0hqbWRnbG5lZmdmcWJvI2RsdWZxbW5mbXc/Z2p1I3B3em9mPiFuYnFkam0jZ2ZzZm1nam1kI2xtI3drZiNnZnBgcWpzd2psbSNsZSN3a2Y/Z2p1I2BvYnBwPiFrZmJnZnEtbmptLWlwIT0/LHBgcWpzdz1nZnB3cXZgd2psbSNsZSN3a2Zwb2pka3dveiNnamVlZnFmbXdqbSNiYGBscWdibWBmI3Rqd2t3Zm9mYGxubnZtamBid2psbXBqbWdqYGJ3ZnAjd2tidyN3a2Zwa2xxd296I3drZnFmYmV3ZnFmcHNmYGpib296I2ptI3drZiNGdnFsc2ZibSNgbHZtd3FqZnBLbHRmdWZxLyN3a2ZxZiNicWZwcWA+IWt3d3M5LCxwd2J3amBwdmRkZnB3Zmcjd2tidyN3a2YhI3BxYD4ha3d3czksLHR0dC1iI29icWRmI212bmFmcSNsZSNXZm9mYGxubnZtamBid2psbXAhI3Fmbz4hbWxlbG9vbHQhI3dLbG96I1FsbmJtI0Zuc2ZxbHFib25scHcjZntgb3ZwanVmb3ohI2FscWdmcT4hMyEjYm93PiFQZmBxZndicXojbGUjUHdid2Zgdm9uam1id2ptZCNqbSN3a2ZASkIjVGxxb2cjRWJgd2FsbGh3a2YjbmxwdyNqbnNscXdibXdibW1qdWZxcGJxeiNsZSN3a2Zwd3pvZj4hYWJgaGRxbHZtZy4/b2o9P2ZuPT9iI2txZmU+ISx3a2YjQndvYm13amAjTGBmYm1wd3FqYHdveiNwc2ZiaGptZC9wa2xxd296I2FmZWxxZiN3a2ZnamVlZnFmbXcjd3pzZnAjbGV3a2YjTHd3bG5ibSNGbnNqcWY9P2puZCNwcWA+IWt3d3M5LCxCbSNKbXdxbGd2YHdqbG0jd2xgbG1wZnJ2Zm1gZiNsZSN3a2ZnZnNicXd2cWYjZXFsbiN3a2ZAbG1lZmdmcWJ3ZiNQd2J3ZnBqbWdqZGZtbHZwI3NmbHNvZnBTcWxgZmZnam1kcCNsZSN3a2ZqbWVscW5id2psbSNsbSN3a2Z3a2ZscWpmcCNrYnVmI2FmZm1qbXVsb3VmbmZtdyNqbSN3a2ZnanVqZ2ZnI2ptd2wjd2txZmZiZ2liYGZtdyNgbHZtd3FqZnBqcCNxZnBzbG1wamFvZiNlbHFnanBwbG92d2psbSNsZSN3a2ZgbG9vYmFscWJ3amxtI3Rqd2t0amdmb3ojcWZkYnFnZmcjYnBranAjYGxtd2Zuc2xxYnFqZnBlbHZtZ2ptZCNuZm5hZnEjbGVHbG5qbWpgYm0jUWZzdmFvamBkZm1mcWJvb3ojYmBgZnN3Zmd3a2Yjc2xwcGpham9qd3ojbGVicWYjYm9wbCNidWJqb2Jhb2Z2bWdmcSNgbG1wd3F2YHdqbG1xZnB3bHFid2psbSNsZSN3a2Z3a2YjZGZtZnFibyNzdmFvamBqcCNib25scHcjZm13anFmb3pzYnBwZnAjd2txbHZkayN3a2ZrYnAjYWZmbSNwdmRkZnB3ZmdgbG5zdndmcSNibWcjdWpnZmxEZnFuYm1qYCNvYm1kdmJkZnAjYmBgbHFnam1kI3dsI3drZiNnamVlZnFmbXcjZXFsbiN3a2Zwa2xxd296I2Jld2ZxdGJxZ3BrcWZlPiFrd3dzcDksLHR0dC1xZmBmbXcjZ2Z1Zm9sc25mbXdBbGJxZyNsZSNHanFmYHdscXA/Z2p1I2BvYnBwPiFwZmJxYGt/Iz9iI2txZmU+IWt3d3M5LCxKbSNzYnF3amB2b2JxLyN3a2ZOdm93anNvZiNlbGx3bWx3ZnBscSNsd2tmcSNwdmFwd2JtYGZ3a2x2cGJtZ3AjbGUjemZicXB3cWJtcG9id2psbSNsZSN3a2Y/LGdqdT0OXHQ/LGdqdT0OXHQOXHQ/YiNrcWZlPiFqbWdmey1za3N0YnAjZnB3YmFvanBrZmcjam1uam0taXAhPT8scGBxanN3PVx0c2Jxd2pganNid2Yjam0jd2tmYiNwd3FsbWQjam1lb3ZmbWBmcHd6b2Y+IW5icWRqbS53bHM5cWZzcWZwZm13ZmcjYXojd2tmZHFiZ3Zid2ZnI2VxbG4jd2tmV3FiZ2p3amxtYm9vei8jd2tmRm9mbmZtdyshcGBxanN3ISo4S2x0ZnVmcS8jcGptYGYjd2tmLGdqdT1cdD8sZ2p1PVx0P2dqdSNvZmV3OCNuYnFkam0ub2ZldzlzcWx3ZmB3amxtI2JkYmptcHczOCN1ZnF3amBiby5ib2pkbTlWbWVscXd2bWJ3Zm96LyN3a2Z3enNmPiFqbmJkZix7LmpgbG0sZ2p1PVx0P2dqdSNgb2JwcD4hI2BvYnBwPiFgb2ZicWVqeyE9P2dqdSNgb2JwcD4hZWxsd2ZxXG5cbj8sZ2p1PVx0XG5cbj8sZ2p1PVx0d2tmI25sd2psbSNzamB3dnFmPH09ZjxXPF88XFw9bD1tPFY8VDxdPWY8VzxfPFxcPWw9bTxWPFQ8SDxZPFg8WT1sPFxcPWo8VDxUPFE8WT1tPFY8UjxXPWA8VjxSPW08UjxSPF09ZTxZPFE8VDxZPW08UjxSPF09ZTxZPFE8VD1jPFM9bDxSPF89bDxcXDxQPFA9ZzxyPW48Uz1sPFxcPF48VD1uPWA8XTxZPW08UzxXPFxcPW48UTxSPFA8XFw9bjxZPWw8VDxcXDxXPWc8UzxSPFs8XjxSPFc9YzxZPW48UzxSPW08VzxZPFg8UTxUPFk9bDxcXDxbPFc8VD1rPFE9Zz1pPFM9bDxSPFg9bzxWPWo8VDxUPFM9bDxSPF89bDxcXDxQPFA8XFw8UzxSPFc8UTxSPW09bj1gPWI8UTxcXD1pPFI8WDxUPW49bT1jPFQ8WzxdPWw8XFw8UTxRPFI8WTxRPFxcPW08WTxXPFk8UTxUPWM8VDxbPFA8WTxRPFk8UTxUPWM8VjxcXD1uPFk8XzxSPWw8VDxUPHw8VzxZPFY9bTxcXDxRPFg9bFxmSEpcZklhXGZIWVxmSFJcZkhcXFxmSFJcZkhCXGZJZFxmSERcZkltXGZIaVxmSF5cZkhGXGZJYVxmSFxcXGZISlxmSFJcZkhEXGZIQVxmSFJcZkhcXFxmSEhcZklsXGZIQ1xmSGlcZkhEXGZJbVxmSEpcZklrXGZIWlxmSFVcZkhTXGZIRFxmSWFcZkhKXGZJbFxmSGtcZkhuXGZITVxmSFNcZkhDXGZIUlxmSEpcZkhTXGZIXlxmSWFcZkheXGZJbFxmSGlcZkhLXGZIU1xmSHlcZkhSXGZIXFxcZkhZXGZJbFxmSE1cZkhTXGZIQ1xmSWdcZkh2XGZIU1xmSHNcZklhXGZITFxmSWtcZkhUXGZIQlxmSFJcZkh2XGZIUlxmSFxcXGZIcFxmSG5cZkh5XGZJYVxmSFpcZkhEXGZISlxmSW1cZkhEXGZIU1xmSENcZkhSXGZIRlxmSWFcZkhcXFxmSENcZklnXGZIe1xmSGlcZkhEXGZJbVxmSFRcZkhSXGZIXFxcZkh9XGZIRFxmSF5cZkhSXGZIa1xmSERcZkhGXGZIUlxmSFxcXGZJYVxmSHNcZklsXGZIWlxmSFxcXGZJYVxmSEhcZklnXGZIblxmSF5cZklnXGZIeVxmSFRcZkhBXGZIUlxmSEdcZkhQXGZJYVxmSF5cZklkXGZIWlxmSFpcZkhcXFxmSWFcZkhIXGZJa1xmSG5cZkhGXGZJYVxmSFxcXGZISlxmSWtcZkhaXGZIRlxmSWFcZkheXGZJa1xmSENcZkhcXFxmSHlcZklrXGZIblxmSEpcZklhXGZIXFxcZkhUXGZJYVxmSElcZkhTXGZISFxmSFNcZkhlXGZISFxmSWFcZkhGXGZIUlxmSEpcZkhlXGZIRFxmSWFcZkhVXGZJa1xmSG5cZkh2XGZIU1xmSHNcZklhXGZITFxmSFJcZkhDXGZIUlxmSEhcZklhXGZIXFxcZkhSXGZIcFxmSWFcZkhDXGZIUlxmSEpcZkhSXGZIRlxmSW1cZkhcXFxmSFJcZkhEXGZJa1xmSHBcZklnXGZITVxmSFBcZklrXGZIblxmSGlcZkhEXGZJbVxmSFlcZkhSXGZISlxmSFpcZklhXGZIXFxcZklrXGZIT1xmSWxcZkhaXGZIU1xmSHlcZklhXGZIW1xmSFJcZkhUXGZIXFxcZkh5XGZIUlxmSFxcXGZJbFxmSFRcZkhuXGZIe1xmSWFcZkhcXFxmSFVcZkhGXGZIXFxcZkhTXGZIT1xmSFJcZkhCXGZIQFxmSWFcZkhcXFxmSFJcZkhuXGZITVxmSEBcZkh2XGZJYVxmSHZcZklnXGZIblxmSGVcZkhGXGZIXlxmSEBcZklhXGZIS1xmSEJcZkhuXGZISFxmSWFcZkhcXFxmSWxcZkhUXGZIblxmSEZcZkhcXFxmSWFcZkh5XGZIZVxmSEJcZklhXGZIQlxmSWxcZkhKXGZIQlxmSFJcZkhLXGZJYVxmSENcZkhCXGZIVFxmSFVcZkhSXGZIQ1xmSEhcZkhSXGZIWlxmSEBcZklhXGZISlxmSWdcZkhuXGZIQlxmSWxcZkhNXGZIU1xmSENcZkhSXGZIalxmSGRcZkhGXGZJbFxmSGNcZkheXGZIQlxmSWdcZkhAXGZIUlxmSGtcZkheXGZIVFxmSG5cZkh6XGZJYVxmSENcZkhSXGZIalxmSEZcZkhcXFxmSWtcZkhaXGZIRFxmSGlcZkhEXGZJbVxmSEBcZkhuXGZIS1xmSEBcZkhSXGZIcFxmSFBcZkhSXGZIXFxcZkhEXGZIWVxmSWxcZkhEXGZISFxmSEJcZkhGXGZJYVxmSFxcXGZIQlxmSW1cZkh6XGZIRlxmSWFcZkhcXFxmSFpcZklhXGZIRFxmSEZcZkhcXFxmSFNcZkhZXGZIUlxmSFxcXGZIRFxmSW1cZkh5XGZIVFxmSFJcZkhEXGZIVFxmSEJcZkhcXFxmSWFcZkhJXGZIRFxmSGpcZkhDXGZJZ1xmSHBcZkhTXGZISFxmSFRcZklnXGZIQlxmSFlcZkhSXGZIXFw0SzVoNWk0WDRLNF01bzRLNEY0SzVoNWk1ajRGNEM1ZjRLNEY0SzVoNW81aTRENWY1ZDRGNF00SzVoNWk0WDRLNWs0QzRLNEY0VTRDNEM0SzVoNF41ZDRLNF00VTRDNEM0SzVoNF00QzVkNEM0SzVoNEk0XzVoNEs1aTVmNEU0SzVoNW01ZDRGNWQ0WDVkNEQ0SzVoNWk0XzRLNEQ1bjRLNEY0SzVoNWk0VTVoNWQ1aTRLNEY0SzVoNWk0XzVoNF81aDRLNEY0SzVoNEA0XTRLNW01ZjVvNF80SzVoNEs0XzVoNEs1aTVmNEU0SzVoNEs0RjRZNEs1aDRLNEZoZnp0bHFncCEjYGxtd2Ztdz4hdDAtbHFkLDI6Ojose2t3bm8hPT9iI3dicWRmdz4hXFxhb2JtaCEjd2Z7dyxrd25vOCNga2JxcGZ3PiEjd2JxZGZ3PiFcXGFvYm1oIT0/d2Jhb2YjYGZvb3NiZ2dqbWQ+IWJ2d2xgbG5zb2Z3Zj4hbGVlISN3Znt3LmJvamRtOSNgZm13ZnE4d2wjb2JwdyN1ZnFwamxtI2F6I2FiYGhkcWx2bWcuYGxvbHE5IyAhI2txZmU+IWt3d3M5LCx0dHQtLGdqdT0/LGdqdT0/Z2p1I2pnPj9iI2txZmU+ISAhI2BvYnBwPiEhPT9qbmQjcHFgPiFrd3dzOSwsYHFqc3chI3BxYD4ha3d3czksLFx0P3BgcWpzdyNvYm1kdmJkZj4hLCxGTSEjIWt3d3M5LCx0dHQtdGZtYGxnZlZRSkBsbnNsbWZtdyshI2txZmU+IWlidWJwYHFqc3c5P2dqdSNgb2JwcD4hYGxtd2Ztd2dsYHZuZm13LXRxandmKyQ/cGBzbHBqd2psbTkjYmFwbG92d2Y4cGBxanN3I3BxYD4ha3d3czksLCNwd3pvZj4hbmJxZGptLndsczktbmptLWlwIT0/LHBgcWpzdz1cdD8sZ2p1PVx0P2dqdSNgb2JwcD4hdDAtbHFkLDI6Ojose2t3bm8hI1x0Dlx0PyxhbGd6PQ5cdD8sa3dubz1nanB3am1gd2psbSNhZnd0ZmZtLCEjd2JxZGZ3PiFcXGFvYm1oIT0/b2ptaCNrcWZlPiFrd3dzOSwsZm1gbGdqbWQ+IXZ3ZS47ITw9XHR0LWJnZ0Z1Zm13T2pwd2ZtZnE8YmB3amxtPiFrd3dzOSwsdHR0LWpgbG0hI2txZmU+IWt3d3M5LCwjcHd6b2Y+IWFiYGhkcWx2bWc5d3pzZj4hd2Z7dyxgcHAhIyw9XHRuZndiI3NxbHNmcXd6PiFsZDl3P2ptc3Z3I3d6c2Y+IXdme3chIyNwd3pvZj4hd2Z7dy5ib2pkbTl3a2YjZ2Z1Zm9sc25mbXcjbGUjd3pvZnBrZmZ3ISN3enNmPiF3Zmt3bm84I2BrYnFwZnc+dndlLjtqcCNgbG1wamdmcWZnI3dsI2Fmd2Jhb2YjdGpnd2s+ITIzMyYhI0ptI2JnZ2p3amxtI3dsI3drZiNgbG13cWphdndmZyN3bCN3a2YjZ2plZWZxZm1gZnAjYWZ3dGZmbWdmdWZvbHNuZm13I2xlI3drZiNKdyNqcCNqbnNscXdibXcjd2wjPyxwYHFqc3c9XHRcdD9wYHFqc3cjI3B3em9mPiFlbG13LnBqeWY5Mj0/LHBzYm09P3BzYm0jamc+ZGFPamFxYnF6I2xlI0BsbWRxZnBwP2puZCNwcWA+IWt3d3M5LCxqbkZtZG9qcGsjd3FibXBvYndqbG1CYGJnZm56I2xlI1BgamZtYGZwZ2p1I3B3em9mPiFnanBzb2J6OWBsbXB3cXZgd2psbSNsZSN3a2YtZGZ3Rm9mbmZtd0F6Smcramcqam0jYGxtaXZtYHdqbG0jdGp3a0ZvZm5mbXcrJHBgcWpzdyQqOCM/bmZ3YiNzcWxzZnF3ej4hbGQ5PH09ZjxXPF88XFw9bD1tPFY8VFx0I3d6c2Y+IXdme3chI21ibmY+IT1TcWp1YmB6I1Nsb2pgej8sYj1iZ25qbWpwd2ZxZmcjYXojd2tmZm1iYW9mUGptZG9mUWZydmZwd3B3em9mPiVydmx3OG5icWRqbTk/LGdqdT0/LGdqdT0/LGdqdT0/PT9qbmQjcHFgPiFrd3dzOSwsaiNwd3pvZj4lcnZsdzhlb2xidzlxZmVmcXFmZyN3bCNicCN3a2Yjd2x3Ym8jc2xzdm9id2psbSNsZWptI1RicGtqbWR3bG0vI0ctQC0jcHd6b2Y+IWFiYGhkcWx2bWcuYm5sbWQjbHdrZnEjd2tqbWRwL2xxZGJtanlid2psbSNsZSN3a2ZzYnF3amBqc2J3Zmcjam0jd2tmd2tmI2ptd3FsZ3Zgd2psbSNsZWpnZm13amVqZmcjdGp3ayN3a2ZlamB3amxtYm8jYGticWJgd2ZxI0x7ZWxxZyNWbWp1ZnFwand6I25qcHZtZ2ZxcHdibWdqbWQjbGVXa2ZxZiNicWYvI2tsdGZ1ZnEvcHd6b2Zwa2ZmdyEja3FmZT4hLEBsb3ZuYWpiI1ZtanVmcXBqd3pme3NibWdmZyN3bCNqbWBvdmdmdnB2Ym9veiNxZmVmcXFmZyN3bGptZ2pgYndqbWQjd2tidyN3a2ZrYnVmI3B2ZGRmcHdmZyN3a2J3YmVlam9qYndmZyN0andrI3drZmBscXFmb2J3amxtI2Fmd3RmZm1tdm5hZnEjbGUjZ2plZWZxZm13PT8sd2c9Pyx3cT0/LHdiYW9mPVFmc3Zhb2pgI2xlI0pxZm9ibWdcdD8scGBxanN3PVx0P3BgcWpzdyN2bWdmcSN3a2Yjam1lb3ZmbWBmYGxtd3FqYXZ3amxtI3dsI3drZkxlZWpgamJvI3RmYXBqd2YjbGVrZmJncnZicXdmcXAjbGUjd2tmYGZtd2ZxZmcjYnFsdm1nI3drZmpuc29qYGJ3amxtcCNsZSN3a2ZrYnVmI2FmZm0jZ2Z1Zm9sc2ZnRWZnZnFibyNRZnN2YW9qYCNsZWFmYGJuZiNqbWBxZmJwam1kb3pgbG13am12YndqbG0jbGUjd2tmTWx3Zi8ja2x0ZnVmcS8jd2tid3BqbmpvYnEjd2wjd2tidyNsZSNgYnNiYWpvandqZnAjbGUjd2tmYmBgbHFnYm1gZiN0andrI3drZnNicXdqYGpzYm13cCNqbSN3a2ZldnF3a2ZxI2dmdWZvbHNuZm13dm1nZnEjd2tmI2dqcWZgd2psbWpwI2xld2ZtI2BsbXBqZ2ZxZmdranAjemx2bWRmcSNhcWx3a2ZxPyx3Zz0/LHdxPT8sd2Jhb2Y9P2Ija3d3cy5mcnZqdT4hWy5WQi5za3pwamBibyNzcWxzZnF3amZwbGUjQXFqd2pwayNAbG92bmFqYmticCNhZmZtI2BxandqYGp5ZmcrdGp3ayN3a2YjZntgZnN3amxtcnZmcHdqbG1wI2JhbHZ3I3drZnNicHBqbWQjd2txbHZkayN3a2YzISNgZm9vc2JnZ2ptZD4hMyEjd2tsdnBibWdwI2xlI3NmbHNvZnFmZ2pxZmB3cCNrZnFmLSNFbHFrYnVmI2Bram9ncWZtI3ZtZ2ZxJjBGJjBALHBgcWpzdyYwRiEqKjg/YiNrcWZlPiFrd3dzOSwsdHR0LT9vaj0/YiNrcWZlPiFrd3dzOSwscGp3ZlxcbWJuZiEjYGxtd2Ztdz4hd2Z7dy5nZmBscWJ3amxtOW1sbWZwd3pvZj4hZ2pwc29iejkjbWxtZj9uZndiI2t3d3MuZnJ2anU+IVsubWZ0I0did2YrKi1kZndXam5mKyojd3pzZj4ham5iZGYsey5qYGxtIT8scHNibT0/cHNibSNgb2JwcD4hb2JtZHZiZGY+IWlidWJwYHFqc3d0am1nbHQtb2xgYndqbG0ta3FmZT9iI2txZmU+IWlidWJwYHFqc3c5Li49Dlx0P3BgcWpzdyN3enNmPiF3P2Ija3FmZT4ka3d3czksLHR0dC1rbHF3YHZ3I2pgbG0hI2txZmU+IT8sZ2p1PQ5cdD9nanUjYG9icHA+IT9wYHFqc3cjcHFgPiFrd3dzOSwsISNxZm8+IXB3em9mcGtmZnchI3c/LGdqdT1cdD9wYHFqc3cjd3pzZj4sYj0jP2Ija3FmZT4ha3d3czksLCNib29sdFdxYm1wc2JxZm1gej4hWy5WQi5AbG5zYndqYW9mISNgbG1xZm9id2psbXBranMjYWZ3dGZmbVx0PyxwYHFqc3c9Dlx0P3BgcWpzdyM/LGI9Pyxvaj0/LHZvPT8sZ2p1PWJwcGxgamJ3ZmcjdGp3ayN3a2Yjc3FsZHFibm5qbWQjb2JtZHZiZGY/LGI9P2Ija3FmZT4ha3d3czksLD8sYj0/LG9qPT9vaiNgb2JwcD4hZWxxbiNiYHdqbG0+IWt3d3M5LCw/Z2p1I3B3em9mPiFnanBzb2J6OXd6c2Y+IXdme3chI21ibmY+IXIhP3diYW9mI3RqZ3drPiEyMzMmISNhYmBoZHFsdm1nLnNscGp3amxtOSEjYWxxZ2ZxPiEzISN0amd3az4hcWZvPiFwa2xxd2B2dyNqYGxtISNrNT0/dm89P29qPT9iI2txZmU+ISMjP25md2Ija3d3cy5mcnZqdT4hYHBwISNuZmdqYj4hcGBxZmZtISNxZnBzbG1wamFvZiNlbHEjd2tmIyEjd3pzZj4hYnNzb2pgYndqbG0sISNwd3pvZj4hYWJgaGRxbHZtZy5rd25vOCNga2JxcGZ3PnZ3ZS47ISNib29sdHdxYm1wc2JxZm1gej4hcHd6b2Zwa2ZmdyEjd3pzZj4hd2YOXHQ/bmZ3YiNrd3dzLmZydmp1PiE9Pyxwc2JtPT9wc2JtI2BvYnBwPiEzISNgZm9vcHNiYGptZD4hMyE9OFx0PyxwYHFqc3c9XHQ/cGBxanN3I3BsbmZ3am5mcCNgYm9vZmcjd2tmZ2xmcCNtbHcjbWZgZnBwYnFqb3pFbHEjbmxxZiNqbWVscW5id2psbWJ3I3drZiNhZmRqbW1qbWQjbGUjPyJHTEBXWlNGI2t3bm89P2t3bm9zYnF3amB2b2Jxb3ojam0jd2tmI3d6c2Y+IWtqZ2dmbSEjbWJuZj4haWJ1YnBgcWpzdzl1bGpnKzMqOCFmZWVmYHdqdWZtZnBwI2xlI3drZiNidndsYGxuc29md2Y+IWxlZSEjZGZtZnFib296I2BsbXBqZ2ZxZmc9P2ptc3Z3I3d6c2Y+IXdme3chIyE9PyxwYHFqc3c9Dlx0P3BgcWpzd3drcWx2ZGtsdncjd2tmI3RscW9nYGxubmxtI25qcGBsbWBmc3dqbG1icHBsYGpid2psbSN0andrI3drZj8sZ2p1PVx0PyxnanU9XHQ/Z2p1I2BndnFqbWQja2pwI29qZWZ3am5mL2BscXFmcHNsbWdqbWQjd2wjd2tmd3pzZj4ham5iZGYsey5qYGxtISNibSNqbWBxZmJwam1kI212bmFmcWdqc29sbmJ3amAjcWZvYndqbG1wYnFmI2xld2ZtI2BsbXBqZ2ZxZmduZndiI2BrYnFwZnc+IXZ3ZS47ISM/am1zdncjd3pzZj4hd2Z7dyEjZntibnNvZnAjam1gb3ZnZiN3a2YhPT9qbmQjcHFgPiFrd3dzOSwsanNicXdqYGpzYndqbG0jam0jd2tmd2tmI2Zwd2Jhb2pwa25mbXcjbGVcdD8sZ2p1PVx0P2dqdSNgb2JwcD4hJWJuczhtYXBzOCVibnM4bWFwczh3bCNnZndmcW5qbWYjdGtmd2tmcXJ2andmI2dqZWVmcWZtdyNlcWxubmJxaGZnI3drZiNhZmRqbW1qbWRnanB3Ym1gZiNhZnd0ZmZtI3drZmBsbXdxamF2d2psbXAjd2wjd2tmYGxtZW9qYHcjYWZ3dGZmbSN3a2Z0amdmb3ojYGxtcGpnZnFmZyN3bHRicCNsbWYjbGUjd2tmI2VqcXB3dGp3ayN1YnF6am1kI2dmZHFmZnBrYnVmI3BzZmB2b2J3Zmcjd2tidytnbGB2bmZtdy1kZndGb2ZuZm13c2Jxd2pganNid2ptZCNqbSN3a2ZscWpkam1ib296I2dmdWZvbHNmZ2Z3YiNga2JxcGZ3PiF2d2UuOyE9I3d6c2Y+IXdme3csYHBwISMsPVx0am13ZnFga2JtZGZiYW96I3Rqd2tubHFmI2BvbHBmb3ojcWZvYndmZ3BsYGpibyNibWcjc2xvandqYGJvd2tidyN0bHZvZyNsd2tmcXRqcGZzZnFzZm1namB2b2JxI3dsI3drZnB3em9mI3d6c2Y+IXdme3csYHBwd3pzZj4hcHZhbmp3ISNtYm5mPiFlYm5qb2pmcCNxZnBqZ2ptZCNqbWdmdWZvbHNqbWQjYGx2bXdxamZwYGxuc3Z3ZnEjc3FsZHFibm5qbWRmYGxtbG5qYCNnZnVmb2xzbmZtd2dmd2ZxbmptYndqbG0jbGUjd2tmZWxxI25scWYjam1lbHFuYndqbG1sbSNwZnVmcWJvI2xgYGJwamxtcHNscXd2ZHYvRnAjK0Z2cWxzZnYqPE88Vj1sPFxcPXs8UT1tPWA8VjxcXD1vPFY9bDxcXD17PFE9bT1gPFY8XFw8TDxSPW09bTxUPFU9bTxWPFI8VTxQPFxcPW48WT1sPFQ8XFw8VzxSPF48VDxRPWg8Uj1sPFA8XFw9ajxUPFQ9bzxTPWw8XFw8XjxXPFk8UTxUPWM8UTxZPFI8XT1pPFI8WDxUPFA8UjxUPFE9aDxSPWw8UDxcXD1qPFQ9Yzx0PFE9aDxSPWw8UDxcXD1qPFQ9YzxMPFk9bTxTPW88XTxXPFQ8VjxUPFY8UjxXPFQ9azxZPW09bjxePFI8VDxRPWg8Uj1sPFA8XFw9ajxUPWI9bjxZPWw9bDxUPW48Uj1sPFQ8VDxYPFI9bT1uPFxcPW48Uj1rPFE8UjRLNWg1aTRGNWQ0SzRANEM1ZDVqNEs1aDRLNFg0RjRdNEs1bzRLNEY0SzVoNEs1bjRGNF00SzRBNEs0Rmt3bm84I2BrYnFwZnc+VldFLjshI3Bmd1dqbmZsdncrZXZtYHdqbG0rKmdqcHNvYno5am1vam1mLmFvbGBoOD9qbXN2dyN3enNmPiFwdmFuanchI3d6c2YjPiMkd2Z7dyxpYnVicGBxaj9qbmQjcHFgPiFrd3dzOSwsdHR0LSEjIWt3d3M5LCx0dHQtdDAtbHFkLHBrbHF3YHZ3I2pgbG0hI2txZmU+ISEjYnZ3bGBsbnNvZndmPiFsZWUhIz8sYj0/LGdqdT0/Z2p1I2BvYnBwPj8sYj0/LG9qPVx0P29qI2BvYnBwPiFgcHAhI3d6c2Y+IXdme3csYHBwISM/ZWxxbiNiYHdqbG0+IWt3d3M5LCx7dyxgcHAhI2txZmU+IWt3d3M5LCxvam1oI3Fmbz4hYm93ZnFtYndmISMOXHQ/cGBxanN3I3d6c2Y+IXdme3csI2xtYG9qYGg+IWlidWJwYHFqc3c5K21mdCNHYndmKi1kZndXam5mKyp+a2ZqZGt3PiEyISN0amd3az4hMiEjU2Zsc29mJHAjUWZzdmFvamAjbGUjIz9iI2txZmU+IWt3d3M5LCx0dHQtd2Z7dy5nZmBscWJ3amxtOXZtZ2Zxd2tmI2FmZGptbWptZCNsZSN3a2YjPyxnanU9XHQ/LGdqdT1cdD8sZ2p1PVx0ZnB3YmFvanBrbmZtdyNsZSN3a2YjPyxnanU9PyxnanU9PyxnanU9PyxnIHVqZnRzbHF3eG5qbS5rZmpka3c5XHQ/cGBxanN3I3BxYD4ha3d3czksLGxzd2psbT0/bHN3amxtI3Vib3ZmPmxld2ZtI3FmZWZxcWZnI3dsI2JwIyxsc3dqbG09XHQ/bHN3amxtI3Vib3Y/IkdMQFdaU0Yja3dubz1cdD8iLi5YSm13ZnFtYndqbG1ibyNCanFzbHF3PVx0P2Ija3FmZT4ha3d3czksLHR0dD8sYj0/YiNrcWZlPiFrd3dzOSwsdFxmVExcZlReXGZURVxmVF5cZlVoXGZUe1xmVE5ccm9JXHJvfFxyb0xccm97XHJvT1xyb3Zccm90XG5BTwVHeFxiVEFcbnprIytcdlVtBUd4KlxmSERcZkhTXGZIXFxcZklhXGZISlxmSWtcZkhaXGZITVxmSFJcZkhlXGZIRFxmSF5cZklnXGZITVxmSHlcZklhXGZIW1xmSWtcZkhIXGZJYVxmSFxcXGZIcFxmSFJcZkhEXGZIeVxmSFJcZkhcXFxmSWxcZkhUXGZIblxmSEBcZkhuXGZIS1xmSFNcZkhIXGZIVFxmSWFcZkhJXGZIUlxmSEZcZkhEXGZIUlxmSFRcZklhXGZIWVxmSWxcZkh5XGZIUlxmSFxcXGZIVFxmSG5cZkhUXGZJYVxmSHlcZkhcXFxmSE9cZkhUXGZIUlxmSEJcZkh7XGZJYVxmSFxcXGZJbFxmSHZcZkhTXGZIc1xmSWFcZkhMXGZJZ1xmSG5cZkhZXGZIU1xmSHBcZklhXGZIclxmSFJcZkhEXGZIaVxmSEJcZklrXGZIXFxcZkhTXGZIeVxmSFJcZkhZXGZIU1xmSEFcZkhTXGZIRFxmSWFcZkhEXGZIe1xmSFJcZkhNXGZIU1xmSENcZkhSXGZIbVxmSHlcZklhXGZIQ1xmSWdcZkhuXGZIeVxmSFNcZkhUXGZJbVxmSFxcXGZIeVxmSWFcZkhbXGZIUlxmSEZcZkhVXGZJbVxmSG1cZkh2XGZISFxmSWxcZkhGXGZJYVxmSFxcXGZIQFxmSG5cZkhLXGZIRFxmSHNcZkhTXGZIRlxmSWFcZkhGXGZIT1xmSWxcZkh5XGZJYVxmSFxcXGZIU1xmSHlcZklrXGZIc1xmSEZcZklhXGZIXFxcZkhSXGZIXFxcZkhuXGZIQVxmSEZcZklhXGZIXFxcZkhSXGZIRlxmSWFcZkhIXGZIQlxmSFJcZkheXGZIU1xmSHlcZklnXGZIblxmSFxcXGZIR1xmSFBcZklhXGZISFxmSFJcZkhcXFxmSERcZkhTXGZIXFxcZklhXGZIQlxmSFJcZkhPXGZIXlxmSFNcZkhCXGZIU1xmSHNcZklrXGZITWdmcGBxanN3amxtISNgbG13Zm13PiFnbGB2bmZtdy1vbGBid2psbS1zcWx3LWRmd0ZvZm5mbXdwQXpXYmRNYm5mKz8iR0xAV1pTRiNrd25vPVx0P2t3bm8jP25md2IjYGticXBmdz4hdndlLjshPTl2cW8hI2BsbXdmbXc+IWt3d3M5LCwtYHBwISNxZm8+IXB3em9mcGtmZnchcHd6b2Yjd3pzZj4hd2Z7dyxgcHAhPXd6c2Y+IXdme3csYHBwISNrcWZlPiF0MC1scWQsMjo6Oix7a3dubyEje25vd3pzZj4hd2Z7dyxpYnVicGBxanN3ISNuZndrbGc+IWRmdyEjYmB3amxtPiFvam1oI3Fmbz4hcHd6b2Zwa2ZmdyEjIz4jZ2xgdm5mbXctZGZ3Rm9mbmZtd3d6c2Y+IWpuYmRmLHsuamBsbSEjLD1gZm9vc2JnZ2ptZD4hMyEjYGZvb3BzLWBwcCEjd3pzZj4hd2Z7dyxgcHAhIz8sYj0/LG9qPT9vaj0/YiNrcWZlPiEhI3RqZ3drPiEyISNrZmpka3c+ITIhIT0/YiNrcWZlPiFrd3dzOSwsdHR0LXB3em9mPiFnanBzb2J6OW1sbWY4IT1ib3dmcW1id2YhI3d6c2Y+IWJzc29qLiwsVDBALCxHV0cjW0tXTk8jMi0zI2Zvb3BzYmBqbWQ+ITMhI2Bmb29zYmcjd3pzZj4ha2pnZ2ZtISN1Ym92Zj4hLGI9JW1hcHM4P3BzYm0jcWxvZj4hcFx0P2ptc3Z3I3d6c2Y+IWtqZ2dmbSEjb2JtZHZiZGY+IUlidWJQYHFqc3chIyNnbGB2bmZtdy1kZndGb2ZuZm13cEFkPiEzISNgZm9vcHNiYGptZD4hMyEjenNmPiF3Znt3LGBwcCEjbmZnamI+IXd6c2Y+JHdme3csaWJ1YnBgcWpzdyR0andrI3drZiNme2Bmc3dqbG0jbGUjenNmPiF3Znt3LGBwcCEjcWZvPiFwdyNrZmpka3c+ITIhI3RqZ3drPiEyISM+JChmbWBsZ2ZWUUpAbG5zbG1mbXcrP29qbWgjcWZvPiFib3dmcW1id2YhI1x0YWxnei8jd3EvI2ptc3Z3LyN3Znt3bmZ3YiNtYm5mPiFxbGFsd3AhI2BsbW5md2tsZz4hc2xwdyEjYmB3amxtPiE9XHQ/YiNrcWZlPiFrd3dzOSwsdHR0LWBwcCEjcWZvPiFwd3pvZnBrZmZ3ISM/LGdqdT0/LGdqdT0/Z2p1I2BvYnBwb2JtZHZiZGY+IWlidWJwYHFqc3chPWJxamIua2pnZ2ZtPiF3cXZmIT0uWz9xanN3ISN3enNmPiF3Znt3LGlidWJwbz4zOH4qKyo4XHQrZXZtYHdqbG0rKnhhYmBoZHFsdm1nLmpuYmRmOSN2cW8rLGI9Pyxvaj0/b2o9P2Ija3FmZT4ha1xuXG4/b2o9P2Ija3FmZT4ha3d3czksLGJ3bHEhI2JxamIua2pnZ2ZtPiF3cXY9Iz9iI2txZmU+IWt3d3M5LCx0dHQtb2JtZHZiZGY+IWlidWJwYHFqc3chIyxsc3dqbG09XHQ/bHN3amxtI3Vib3ZmLGdqdT0/LGdqdT0/Z2p1I2BvYnBwPnFid2xxISNicWpiLmtqZ2dmbT4hd3FmPittZnQjR2J3ZiotZGZ3V2puZisqc2xxd3Zkdi9GcCMrZ2wjQXFicGpvKjxSPWw8XzxcXDxRPFQ8WzxcXD1qPFQ8VDxePFI8WzxQPFI8WjxRPFI9bT1uPWA8UjxdPWw8XFw8WzxSPF48XFw8UTxUPWM9bDxZPF88VD1tPW49bDxcXD1qPFQ8VDxePFI8WzxQPFI8WjxRPFI9bT1uPFQ8UjxdPWM8WzxcXD1uPFk8Vz1gPFE8XFw/IkdMQFdaU0Yja3dubyNTVkFPSkAjIW13Lld6c2YhI2BsbXdmbXc+IXdme3csP25md2Ija3d3cy5mcnZqdT4hQGxtd2ZxYm1wandqbG1ibywsRk0hIyFrd3dzOT9rd25vI3tub21wPiFrd3dzOSwsdHR0LiwsVDBALCxHV0cjW0tXTk8jMi0zI1dHV0cse2t3bm8yLndxYm1wandqbG1ibywsdHR0LXQwLWxxZCxXUSx7a3dubzIsc2YjPiMkd2Z7dyxpYnVicGBxanN3JDg/bmZ3YiNtYm5mPiFnZnBgcWpzd2psbXNicWZtd01sZ2Ytam1wZnF3QWZlbHFmP2ptc3Z3I3d6c2Y+IWtqZ2dmbSEjbWJpcCEjd3pzZj4hd2Z7dyxpYnVicGBxaitnbGB2bmZtdyotcWZiZ3orZXZtYHdqcGBxanN3I3d6c2Y+IXdme3csaWJ1YnBqbmJkZiEjYGxtd2Ztdz4ha3d3czksLFZCLkBsbnNid2phb2YhI2BsbXdmbXc+d25vOCNga2JxcGZ3PnZ3ZS47ISMsPVx0b2ptaCNxZm8+IXBrbHF3YHZ3I2pgbG0/b2ptaCNxZm8+IXB3em9mcGtmZnchIz8scGBxanN3PVx0P3BgcWpzdyN3enNmPj4jZ2xgdm5mbXctYHFmYndmRm9mbmZtP2Ijd2JxZGZ3PiFcXGFvYm1oISNrcWZlPiNnbGB2bmZtdy1kZndGb2ZuZm13cEFqbXN2dyN3enNmPiF3Znt3ISNtYm5mPmItd3pzZiM+IyR3Znt3LGlidWJwYHFqbXN2dyN3enNmPiFramdnZm0hI21ibmZrd25vOCNga2JxcGZ3PnZ3ZS47ISMsPWd3ZyE9XHQ/a3dubyN7bm9tcD4ha3d3cy4sLFQwQCwsR1dHI0tXTk8jNy0zMiNXZm13cEF6V2JkTWJuZiskcGBxanN3JCpqbXN2dyN3enNmPiFramdnZm0hI21ibj9wYHFqc3cjd3pzZj4hd2Z7dyxpYnVicCEjcHd6b2Y+IWdqcHNvYno5bWxtZjghPWdsYHZuZm13LWRmd0ZvZm5mbXdBekpnKz5nbGB2bmZtdy1gcWZid2ZGb2ZuZm13KyQjd3pzZj4kd2Z7dyxpYnVicGBxanN3JGptc3Z3I3d6c2Y+IXdme3chI21ibmY+IWctZGZ3Rm9mbmZtd3BBeldiZE1ibmYrcG1qYGJvISNrcWZlPiFrd3dzOSwsdHR0LUAsLEdXRyNLV05PIzctMzIjV3FibXBqdz9wd3pvZiN3enNmPiF3Znt3LGBwcCE9XHRcdD9wd3pvZiN3enNmPiF3Znt3LGBwcCE9amxtYm8tZ3dnIT1cdD9rd25vI3tub21wPmt3d3MuZnJ2anU+IUBsbXdmbXcuV3pzZmdqbWQ+ITMhI2Bmb29wc2Jgam1kPiEzIWt3bm84I2BrYnFwZnc+dndlLjshIyw9XHQjcHd6b2Y+IWdqcHNvYno5bWxtZjghPT8/b2o9P2Ija3FmZT4ha3d3czksLHR0dC0jd3pzZj4kd2Z7dyxpYnVicGBxanN3JD08WDxZPWM9bjxZPFc9YDxRPFI9bT1uPFQ9bTxSPFI9bjxePFk9bj1tPW48XjxUPFQ8Uz1sPFI8VDxbPF48UjxYPW09bjxePFxcPF08WTxbPFI8UzxcXD1tPFE8Uj1tPW48VFxmSEZcZkltXGZIVFxmSWFcZkhIXGZIU1xmSHlcZkhSXGZIeVxmSFJcZkhuXGZIe1xmSWFcZkhcXFxmSWtcZkhUXGZIZVxmSERcZklhXGZIVVxmSWdcZkhuXGZIRFxmSWtcZkhZXGZIU1xmSEtcZkhSXGZIRFxmSFRcZkhBXGZIUlxmSEdcZkhTXGZIeVxmSWFcZkhUXGZIU1xmSG5cZkh7XGZIVFxmSW1cZkhcXFxmSHlcZklhXGZIW1xmSFNcZkhIXGZIeVxmSWVcZkhGXGZJbFxmSFxcXGZIUlxmSGtcZkhzXGZIWVxmSFNcZkhwXGZJYVxmSHJcZkhSXGZIRlxmSERcZkh5XGZIUlxmSFxcXGZJYVxmSFxcXGZIWVxmSFJcZkhkXGZIVFxmSHlcZklhXGZIXFxcZkhTXGZIQ1xmSEhcZkhSJywi27clxownVCXChSdXJcOXJU8lZyXCpibGkyXHpSY+JiomJyZeJsKIxbjgsL4mxq0mxpImKSZeJiUmJybCgiZQJjEmwrEmMyZdJm0mdSZFJnQmQybDjyZWJlYmLyY+JjYm4L224Z28byZwJkAmRSZNJlAmeCZAJkYmZSbDjCY3JjomKCZEJjAmQyYpJi4mRiYtJjEmKCZMJkYmMcmeKs+q4oezJuGNsiZLJjsmKSZFJkgmUCYwJj8mOSZWJsKBJi0mdiZhJiwmRSYpJj8mPSYnJicmQibgtK4m1IMmzJYqJio4JiUmJSYmJiUsKSbCmiY+JsKGJjcmXSZGJjImPiZKJjYmbiYyJiUmPybCjiYyJjYmSiZnJi0mMCYsJiomSiYqJk8mKSY2JigmPCZCJk4mLiZQJkAmMiYuJlcmTSYl1LzChCgsKDwmLCbPmibho4cmLSYsKCUmKCYlJijEuzAmWCZEJsKBJmomJyZKJigmLiZCJjMmWiZSJmgmMyZFJkUmPMOGLc2g4buzJiU4PyZAJiwmWiZAJjAmSiYsJl4meCZfJjYmQyY2JkPcrOKopSZmJi0mLSYtJi0mLCZKJjImOCZ6JjgmQyZZJjgmLSZkJuG5uMOMLSY3JjEmRiY3JnQmVyY3JkkmLiYuJl4mPeC+nOGnkyY4KD4mLyYvJt27Jykn4YGlJyknJUAvJjAmJdC+4KeAKiYqQCZD1L3XlMm016s04LeX3JrTkTbgtoQmL8W4zINaJiolyYbPvybEtCYxwqjStMW0IixnLCJBQUFBS0tMTEtLS0tLSkpJSEhJSEhHR0ZGIik7IWZ1bmN0aW9uIHNldERhdGEoZSx0KXtjb25zdCBhPW0sbj1wO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKW5bZV09dFtlXTtsZXQgcz0wO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKXthW2VdPXM7Y29uc3QgdD1uW2VdOzAhPT10JiYocys9ZTw8KDMxJnQpKX1mb3IobGV0IGU9dC5sZW5ndGg7ZTwzMjsrK2UpYVtlXT1zO3U9ZX0oZCxnKTtmdW5jdGlvbiBJbnB1dFN0cmVhbShlKXt0aGlzLmRhdGE9bmV3IEludDhBcnJheSgwKTt0aGlzLm9mZnNldD0wO3RoaXMuZGF0YT1lfWZ1bmN0aW9uIHJlYWRJbnB1dChlLHQsYSxuKXtpZihudWxsPT09ZS5pbnB1dClyZXR1cm4tMTtjb25zdCBzPWUuaW5wdXQscj1NYXRoLm1pbihzLm9mZnNldCtuLHMuZGF0YS5sZW5ndGgpLGk9ci1zLm9mZnNldDt0LnNldChzLmRhdGEuc3ViYXJyYXkocy5vZmZzZXQsciksYSk7cy5vZmZzZXQrPWk7cmV0dXJuIGl9ZnVuY3Rpb24gdG9VdGY4UnVuZXMoZSl7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBJbnQzMkFycmF5KHQpO2ZvcihsZXQgbj0wO248dDsrK24pYVtuXT1lLmNoYXJDb2RlQXQobik7cmV0dXJuIGF9ZnVuY3Rpb24gbWFrZUVycm9yKGUsdCl7aWYodD49MClyZXR1cm4gdDtlLnJ1bm5pbmdTdGF0ZT49MCYmKGUucnVubmluZ1N0YXRlPXQpO3Rocm93IG5ldyBFcnJvcigiQnJvdGxpIGVycm9yIGNvZGU6ICIrdCl9cmV0dXJuIGZ1bmN0aW9uIGRlY29kZShlLHQpe2xldCBhPW5ldyBTdGF0ZTthLmlucHV0PW5ldyBJbnB1dFN0cmVhbShlKTtpbml0U3RhdGUoYSk7aWYodCl7bGV0IGU9dC5jdXN0b21EaWN0aW9uYXJ5O2UmJmZ1bmN0aW9uIGF0dGFjaERpY3Rpb25hcnlDaHVuayhlLHQpe2lmKDEhPT1lLnJ1bm5pbmdTdGF0ZSlyZXR1cm4gbWFrZUVycm9yKGUsLTI0KTtpZigwPT09ZS5jZE51bUNodW5rcyl7ZS5jZENodW5rcz1uZXcgQXJyYXkoMTYpO2UuY2RDaHVua09mZnNldHM9bmV3IEludDMyQXJyYXkoMTYpO2UuY2RCbG9ja0JpdHM9LTF9aWYoMTU9PT1lLmNkTnVtQ2h1bmtzKXJldHVybiBtYWtlRXJyb3IoZSwtMjcpO2UuY2RDaHVua3NbZS5jZE51bUNodW5rc109dDtlLmNkTnVtQ2h1bmtzKys7ZS5jZFRvdGFsU2l6ZSs9dC5sZW5ndGg7ZS5jZENodW5rT2Zmc2V0c1tlLmNkTnVtQ2h1bmtzXT1lLmNkVG90YWxTaXplO3JldHVybiAwfShhLGUpfWxldCBuPTAscz1bXTtmb3IoOzspe2xldCBlPW5ldyBJbnQ4QXJyYXkoMTYzODQpO3MucHVzaChlKTthLm91dHB1dD1lO2Eub3V0cHV0T2Zmc2V0PTA7YS5vdXRwdXRMZW5ndGg9MTYzODQ7YS5vdXRwdXRVc2VkPTA7ZGVjb21wcmVzcyhhKTtuKz1hLm91dHB1dFVzZWQ7aWYoYS5vdXRwdXRVc2VkPDE2Mzg0KWJyZWFrfSFmdW5jdGlvbiBjbG9zZShlKXtpZigwPT09ZS5ydW5uaW5nU3RhdGUpcmV0dXJuIG1ha2VFcnJvcihlLC0yNSk7ZS5ydW5uaW5nU3RhdGU+MCYmKGUucnVubmluZ1N0YXRlPTExKTtyZXR1cm4gMH0oYSk7IWZ1bmN0aW9uIGNsb3NlSW5wdXQoZSl7ZS5pbnB1dD1uZXcgSW5wdXRTdHJlYW0obmV3IEludDhBcnJheSgwKSl9KGEpO2xldCByPW5ldyBJbnQ4QXJyYXkobiksaT0wO2ZvcihsZXQgZT0wO2U8cy5sZW5ndGg7KytlKXtsZXQgdD1zW2VdLGE9TWF0aC5taW4obixpKzE2Mzg0KS1pO2E8MTYzODQ/ci5zZXQodC5zdWJhcnJheSgwLGEpLGkpOnIuc2V0KHQsaSk7aSs9YX1yZXR1cm4gcn19KSgpO2NsYXNzIEJyb3RsaVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXsjVz0hMDtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGVzKCksdD1ZYShuZXcgSW50OEFycmF5KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmxlbmd0aCkpO3RoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0Lmxlbmd0aCk7dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe2NvbnN0IGE9YXdhaXQgdGhpcy5hc3luY0dldEJ5dGVzKCk7cmV0dXJuIGE/YS5sZW5ndGg8PWU/YTphLnN1YmFycmF5KDAsZSk6dGhpcy5nZXRCeXRlcyhlKX1hc3luYyBhc3luY0dldEJ5dGVzKCl7Y29uc3R7ZGVjb21wcmVzc2VkOmUsY29tcHJlc3NlZDp0fT1hd2FpdCB0aGlzLmFzeW5jR2V0Qnl0ZXNGcm9tRGVjb21wcmVzc2lvblN0cmVhbSgiYnJvdGxpIik7aWYoZSlyZXR1cm4gZTt0aGlzLiNXPSExO3RoaXMuc3RyZWFtPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLHRoaXMuc3RyZWFtLmRpY3QpO3RoaXMucmVzZXQoKTtyZXR1cm4gbnVsbH1nZXQgaXNBc3luYygpe3JldHVybiB0aGlzLiNXfX1jbGFzcyBDQ0lUVEZheFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5kaWN0PWUuZGljdDthIGluc3RhbmNlb2YgRGljdHx8KGE9RGljdC5lbXB0eSk7dGhpcy5wYXJhbXM9e0s6YS5nZXQoIksiKXx8MCxFbmRPZkxpbmU6ISFhLmdldCgiRW5kT2ZMaW5lIiksRW5jb2RlZEJ5dGVBbGlnbjohIWEuZ2V0KCJFbmNvZGVkQnl0ZUFsaWduIiksQ29sdW1uczphLmdldCgiQ29sdW1ucyIpfHwxNzI4LFJvd3M6YS5nZXQoIlJvd3MiKXx8MCxFbmRPZkJsb2NrOiEhKGEuZ2V0KCJFbmRPZkJsb2NrIik/PzEpLEJsYWNrSXMxOiEhYS5nZXQoIkJsYWNrSXMxIil9fWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1yZWFkQmxvY2soKXt1bnJlYWNoYWJsZSgiQ0NJVFRGYXhTdHJlYW0ucmVhZEJsb2NrIil9Z2V0IGlzSW1hZ2VTdHJlYW0oKXtyZXR1cm4hMH1nZXQgaXNBc3luY0RlY29kZXIoKXtyZXR1cm4hMH1hc3luYyBkZWNvZGVJbWFnZShlLHQsYSl7aWYodGhpcy5lb2YpcmV0dXJuIHRoaXMuYnVmZmVyO2V8fChlPXRoaXMuc3RyZWFtLmlzQXN5bmMmJmF3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKXx8dGhpcy5ieXRlcyk7dGhpcy5idWZmZXI9YXdhaXQgSkJpZzJDQ0lUVEZheEltYWdlLmRlY29kZShlLHRoaXMuZGljdC5nZXQoIlciLCJXaWR0aCIpLHRoaXMuZGljdC5nZXQoIkgiLCJIZWlnaHQiKSxudWxsLHRoaXMucGFyYW1zKTt0aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfX1jb25zdCBKYT1uZXcgSW50MzJBcnJheShbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0pLFFhPW5ldyBJbnQzMkFycmF5KFszLDQsNSw2LDcsOCw5LDEwLDY1NTQ3LDY1NTQ5LDY1NTUxLDY1NTUzLDEzMTA5MSwxMzEwOTUsMTMxMDk5LDEzMTEwMywxOTY2NDMsMTk2NjUxLDE5NjY1OSwxOTY2NjcsMjYyMjExLDI2MjIyNywyNjIyNDMsMjYyMjU5LDMyNzgxMSwzMjc4NDMsMzI3ODc1LDMyNzkwNywyNTgsMjU4LDI1OF0pLFphPW5ldyBJbnQzMkFycmF5KFsxLDIsMyw0LDY1NTQxLDY1NTQzLDEzMTA4MSwxMzEwODUsMTk2NjI1LDE5NjYzMywyNjIxNzcsMjYyMTkzLDMyNzc0NSwzMjc3NzcsMzkzMzQ1LDM5MzQwOSw0NTkwMDksNDU5MTM3LDUyNDgwMSw1MjUwNTcsNTkwODQ5LDU5MTM2MSw2NTc0MDksNjU4NDMzLDcyNDk5Myw3MjcwNDEsNzk0NjI1LDc5ODcyMSw4NjgzNTMsODc2NTQ1XSksZW49W25ldyBJbnQzMkFycmF5KFs0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE2LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NCw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDgsNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY4LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMiw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OWU0LDUyNDI5Niw1MjQ0MjQsNTI0MzYwLDU5MDA2NCw0NTkwMTAsNTI0MzcyLDUyNDMwOCw1MjQ1NzIsNDU5MDI2LDUyNDQwNCw1MjQzNDAsNTkwMDI0LDQ1OTAxOCw1MjQzODgsNTI0MzI0LDU4OTk5Miw1MjQyOTIsNTI0NDIwLDUyNDM1Niw1OTAwNTYsNDU5MDE0LDUyNDM4MCw1MjQzMTYsNTg5OTc2LDQ1OTAzMCw1MjQ0MTIsNTI0MzQ4LDU5MDA0MCw0NTkwMjIsNTI0Mzk2LDUyNDMzMiw1OTAwMDgsNTI0MzAwLDUyNDQyOCw1MjQzNjQsNTkwMDcyLDQ1OTAwOSw1MjQzNzAsNTI0MzA2LDUyNDU3MCw0NTkwMjUsNTI0NDAyLDUyNDMzOCw1OTAwMjAsNDU5MDE3LDUyNDM4Niw1MjQzMjIsNTg5OTg4LDUyNDI5MCw1MjQ0MTgsNTI0MzU0LDU5MDA1Miw0NTkwMTMsNTI0Mzc4LDUyNDMxNCw1ODk5NzIsNDU5MDI5LDUyNDQxMCw1MjQzNDYsNTkwMDM2LDQ1OTAyMSw1MjQzOTQsNTI0MzMwLDU5MDAwNCw1MjQyOTgsNTI0NDI2LDUyNDM2Miw1OTAwNjgsNDU5MDExLDUyNDM3NCw1MjQzMTAsNTI0NTc0LDQ1OTAyNyw1MjQ0MDYsNTI0MzQyLDU5MDAyOCw0NTkwMTksNTI0MzkwLDUyNDMyNiw1ODk5OTYsNTI0Mjk0LDUyNDQyMiw1MjQzNTgsNTkwMDYwLDQ1OTAxNSw1MjQzODIsNTI0MzE4LDU4OTk4MCw0NTkwMzEsNTI0NDE0LDUyNDM1MCw1OTAwNDQsNDU5MDIzLDUyNDM5OCw1MjQzMzQsNTkwMDEyLDUyNDMwMiw1MjQ0MzAsNTI0MzY2LDU5MDA3Niw0NTkwMDgsNTI0MzY5LDUyNDMwNSw1MjQ1NjksNDU5MDI0LDUyNDQwMSw1MjQzMzcsNTkwMDE4LDQ1OTAxNiw1MjQzODUsNTI0MzIxLDU4OTk4Niw1MjQyODksNTI0NDE3LDUyNDM1Myw1OTAwNTAsNDU5MDEyLDUyNDM3Nyw1MjQzMTMsNTg5OTcwLDQ1OTAyOCw1MjQ0MDksNTI0MzQ1LDU5MDAzNCw0NTkwMjAsNTI0MzkzLDUyNDMyOSw1OTAwMDIsNTI0Mjk3LDUyNDQyNSw1MjQzNjEsNTkwMDY2LDQ1OTAxMCw1MjQzNzMsNTI0MzA5LDUyNDU3Myw0NTkwMjYsNTI0NDA1LDUyNDM0MSw1OTAwMjYsNDU5MDE4LDUyNDM4OSw1MjQzMjUsNTg5OTk0LDUyNDI5Myw1MjQ0MjEsNTI0MzU3LDU5MDA1OCw0NTkwMTQsNTI0MzgxLDUyNDMxNyw1ODk5NzgsNDU5MDMwLDUyNDQxMyw1MjQzNDksNTkwMDQyLDQ1OTAyMiw1MjQzOTcsNTI0MzMzLDU5MDAxMCw1MjQzMDEsNTI0NDI5LDUyNDM2NSw1OTAwNzQsNDU5MDA5LDUyNDM3MSw1MjQzMDcsNTI0NTcxLDQ1OTAyNSw1MjQ0MDMsNTI0MzM5LDU5MDAyMiw0NTkwMTcsNTI0Mzg3LDUyNDMyMyw1ODk5OTAsNTI0MjkxLDUyNDQxOSw1MjQzNTUsNTkwMDU0LDQ1OTAxMyw1MjQzNzksNTI0MzE1LDU4OTk3NCw0NTkwMjksNTI0NDExLDUyNDM0Nyw1OTAwMzgsNDU5MDIxLDUyNDM5NSw1MjQzMzEsNTkwMDA2LDUyNDI5OSw1MjQ0MjcsNTI0MzYzLDU5MDA3MCw0NTkwMTEsNTI0Mzc1LDUyNDMxMSw1MjQ1NzUsNDU5MDI3LDUyNDQwNyw1MjQzNDMsNTkwMDMwLDQ1OTAxOSw1MjQzOTEsNTI0MzI3LDU4OTk5OCw1MjQyOTUsNTI0NDIzLDUyNDM1OSw1OTAwNjIsNDU5MDE1LDUyNDM4Myw1MjQzMTksNTg5OTgyLDQ1OTAzMSw1MjQ0MTUsNTI0MzUxLDU5MDA0Niw0NTkwMjMsNTI0Mzk5LDUyNDMzNSw1OTAwMTQsNTI0MzAzLDUyNDQzMSw1MjQzNjcsNTkwMDc4LDQ1OTAwOCw1MjQzNjgsNTI0MzA0LDUyNDU2OCw0NTkwMjQsNTI0NDAwLDUyNDMzNiw1OTAwMTcsNDU5MDE2LDUyNDM4NCw1MjQzMjAsNTg5OTg1LDUyNDI4OCw1MjQ0MTYsNTI0MzUyLDU5MDA0OSw0NTkwMTIsNTI0Mzc2LDUyNDMxMiw1ODk5NjksNDU5MDI4LDUyNDQwOCw1MjQzNDQsNTkwMDMzLDQ1OTAyMCw1MjQzOTIsNTI0MzI4LDU5MDAwMSw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjUsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNSw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTMsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU3LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Nyw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDEsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA5LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Myw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIxLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OSw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTMsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTczLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNyw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDUsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY5LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjksNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk3LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MSw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODEsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ1LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMyw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzcsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOSw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODcsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUxLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MSw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzUsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAzLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Nyw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI3LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NSw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTksNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc5LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Myw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTEsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc1LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjMsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkxLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NSw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzUsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM5LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNyw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzEsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMSw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTksNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYzLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Myw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDcsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE1LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OV0pLDldLHRuPVtuZXcgSW50MzJBcnJheShbMzI3NjgwLDMyNzY5NiwzMjc2ODgsMzI3NzA0LDMyNzY4NCwzMjc3MDAsMzI3NjkyLDMyNzcwOCwzMjc2ODIsMzI3Njk4LDMyNzY5MCwzMjc3MDYsMzI3Njg2LDMyNzcwMiwzMjc2OTQsMCwzMjc2ODEsMzI3Njk3LDMyNzY4OSwzMjc3MDUsMzI3Njg1LDMyNzcwMSwzMjc2OTMsMzI3NzA5LDMyNzY4MywzMjc2OTksMzI3NjkxLDMyNzcwNywzMjc2ODcsMzI3NzAzLDMyNzY5NSwwXSksNV07Y2xhc3MgRmxhdGVTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17I1c9ITA7Y29uc3RydWN0b3IoZSx0KXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3QgYT1lLmdldEJ5dGUoKSxuPWUuZ2V0Qnl0ZSgpO2lmKC0xPT09YXx8LTE9PT1uKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke259YCk7aWYoOCE9KDE1JmEpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke259YCk7aWYoKChhPDw4KStuKSUzMSE9MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJhZCBGQ0hFQ0sgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke259YCk7aWYoMzImbil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEZESUNUIGJpdCBzZXQgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke259YCk7dGhpcy5jb2RlU2l6ZT0wO3RoaXMuY29kZUJ1Zj0wfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe2NvbnN0IGE9YXdhaXQgdGhpcy5hc3luY0dldEJ5dGVzKCk7cmV0dXJuIGE/YS5sZW5ndGg8PWU/YTphLnN1YmFycmF5KDAsZSk6dGhpcy5nZXRCeXRlcyhlKX1hc3luYyBhc3luY0dldEJ5dGVzKCl7Y29uc3R7ZGVjb21wcmVzc2VkOmUsY29tcHJlc3NlZDp0fT1hd2FpdCB0aGlzLmFzeW5jR2V0Qnl0ZXNGcm9tRGVjb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpO2lmKGUpcmV0dXJuIGU7dGhpcy4jVz0hMTt0aGlzLnN0cmVhbT1uZXcgU3RyZWFtKHQsMix0Lmxlbmd0aCx0aGlzLnN0cmVhbS5kaWN0KTt0aGlzLnJlc2V0KCk7cmV0dXJuIG51bGx9Z2V0IGlzQXN5bmMoKXtyZXR1cm4gdGhpcy4jV31nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW07bGV0IGEsbj10aGlzLmNvZGVTaXplLHM9dGhpcy5jb2RlQnVmO2Zvcig7bjxlOyl7aWYoLTE9PT0oYT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7c3w9YTw8bjtuKz04fWE9cyYoMTw8ZSktMTt0aGlzLmNvZGVCdWY9cz4+ZTt0aGlzLmNvZGVTaXplPW4tPWU7cmV0dXJuIGF9Z2V0Q29kZShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLGE9ZVswXSxuPWVbMV07bGV0IHMscj10aGlzLmNvZGVTaXplLGk9dGhpcy5jb2RlQnVmO2Zvcig7cjxuJiYtMSE9PShzPXQuZ2V0Qnl0ZSgpKTspe2l8PXM8PHI7cis9OH1jb25zdCBvPWFbaSYoMTw8biktMV0sbD1vPj4xNixmPTY1NTM1Jm87aWYobDwxfHxyPGwpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPWk+Pmw7dGhpcy5jb2RlU2l6ZT1yLWw7cmV0dXJuIGZ9Z2VuZXJhdGVIdWZmbWFuVGFibGUoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYSxuPTA7Zm9yKGE9MDthPHQ7KythKWVbYV0+biYmKG49ZVthXSk7Y29uc3Qgcz0xPDxuLHI9bmV3IEludDMyQXJyYXkocyk7Zm9yKGxldCBpPTEsbz0wLGw9MjtpPD1uOysraSxvPDw9MSxsPDw9MSlmb3IobGV0IG49MDtuPHQ7KytuKWlmKGVbbl09PT1pKXtsZXQgZT0wLHQ9bztmb3IoYT0wO2E8aTsrK2Epe2U9ZTw8MXwxJnQ7dD4+PTF9Zm9yKGE9ZTthPHM7YSs9bClyW2FdPWk8PDE2fG47KytvfXJldHVybltyLG5dfSNLKGUpe2luZm8oZSk7dGhpcy5lb2Y9ITB9cmVhZEJsb2NrKCl7bGV0IGUsdCxhO2NvbnN0IG49dGhpcy5zdHJlYW07dHJ5e3Q9dGhpcy5nZXRCaXRzKDMpfWNhdGNoKGUpe3RoaXMuI0soZS5tZXNzYWdlKTtyZXR1cm59MSZ0JiYodGhpcy5lb2Y9ITApO3Q+Pj0xO2lmKDA9PT10KXtsZXQgdDtpZigtMT09PSh0PW4uZ2V0Qnl0ZSgpKSl7dGhpcy4jSygiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IGE9dDtpZigtMT09PSh0PW4uZ2V0Qnl0ZSgpKSl7dGhpcy4jSygiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59YXw9dDw8ODtpZigtMT09PSh0PW4uZ2V0Qnl0ZSgpKSl7dGhpcy4jSygiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IHM9dDtpZigtMT09PSh0PW4uZ2V0Qnl0ZSgpKSl7dGhpcy4jSygiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59c3w9dDw8ODtpZihzIT09KDY1NTM1Jn5hKSYmKDAhPT1hfHwwIT09cykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxpPXIrYTtlPXRoaXMuZW5zdXJlQnVmZmVyKGkpO3RoaXMuYnVmZmVyTGVuZ3RoPWk7aWYoMD09PWEpLTE9PT1uLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PW4uZ2V0Qnl0ZXMoYSk7ZS5zZXQodCxyKTt0Lmxlbmd0aDxhJiYodGhpcy5lb2Y9ITApfXJldHVybn1sZXQgcyxyO2lmKDE9PT10KXtzPWVuO3I9dG59ZWxzZXtpZigyIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gYmxvY2sgdHlwZSBpbiBmbGF0ZSBzdHJlYW0iKTt7Y29uc3QgZT10aGlzLmdldEJpdHMoNSkrMjU3LHQ9dGhpcy5nZXRCaXRzKDUpKzEsbj10aGlzLmdldEJpdHMoNCkrNCxpPW5ldyBVaW50OEFycmF5KEphLmxlbmd0aCk7bGV0IG87Zm9yKG89MDtvPG47KytvKWlbSmFbb11dPXRoaXMuZ2V0Qml0cygzKTtjb25zdCBsPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoaSk7YT0wO289MDtjb25zdCBmPWUrdCxjPW5ldyBVaW50OEFycmF5KGYpO2xldCBoLHUsbTtmb3IoO288Zjspe2NvbnN0IGU9dGhpcy5nZXRDb2RlKGwpO2lmKDE2PT09ZSl7aD0yO3U9MzttPWF9ZWxzZSBpZigxNz09PWUpe2g9Mzt1PTM7bT1hPTB9ZWxzZXtpZigxOCE9PWUpe2NbbysrXT1hPWU7Y29udGludWV9aD03O3U9MTE7bT1hPTB9bGV0IHQ9dGhpcy5nZXRCaXRzKGgpK3U7Zm9yKDt0LS0gPjA7KWNbbysrXT1tfXM9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShjLnN1YmFycmF5KDAsZSkpO3I9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShjLnN1YmFycmF5KGUsZikpfX1lPXRoaXMuYnVmZmVyO2xldCBpPWU/ZS5sZW5ndGg6MCxvPXRoaXMuYnVmZmVyTGVuZ3RoO2Zvcig7Oyl7bGV0IHQ9dGhpcy5nZXRDb2RlKHMpO2lmKHQ8MjU2KXtpZihvKzE+PWkpe2U9dGhpcy5lbnN1cmVCdWZmZXIobysxKTtpPWUubGVuZ3RofWVbbysrXT10O2NvbnRpbnVlfWlmKDI1Nj09PXQpe3RoaXMuYnVmZmVyTGVuZ3RoPW87cmV0dXJufXQtPTI1Nzt0PVFhW3RdO2xldCBuPXQ+PjE2O24+MCYmKG49dGhpcy5nZXRCaXRzKG4pKTthPSg2NTUzNSZ0KStuO3Q9dGhpcy5nZXRDb2RlKHIpO3Q9WmFbdF07bj10Pj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7Y29uc3QgbD0oNjU1MzUmdCkrbjtpZihvK2E+PWkpe2U9dGhpcy5lbnN1cmVCdWZmZXIobythKTtpPWUubGVuZ3RofWZvcihsZXQgdD0wO3Q8YTsrK3QsKytvKWVbb109ZVtvLWxdfX19Y2xhc3MgSmJpZzJTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXt1bnJlYWNoYWJsZSgiSmJpZzJTdHJlYW0ucmVhZEJsb2NrIil9Z2V0IGlzQXN5bmNEZWNvZGVyKCl7cmV0dXJuITB9Z2V0IGlzSW1hZ2VTdHJlYW0oKXtyZXR1cm4hMH1hc3luYyBkZWNvZGVJbWFnZShlLHQsYSl7aWYodGhpcy5lb2YpcmV0dXJuIHRoaXMuYnVmZmVyO2V8fD10aGlzLmJ5dGVzO2xldCBuPW51bGw7aWYodGhpcy5wYXJhbXMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXRoaXMucGFyYW1zLmdldCgiSkJJRzJHbG9iYWxzIik7ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihuPWUuZ2V0Qnl0ZXMoKSl9dGhpcy5idWZmZXI9YXdhaXQgSkJpZzJDQ0lUVEZheEltYWdlLmRlY29kZShlLHRoaXMuZGljdC5nZXQoIldpZHRoIiksdGhpcy5kaWN0LmdldCgiSGVpZ2h0Iiksbik7dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY319Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWF9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKGUpe3VucmVhY2hhYmxlKCJKcHhTdHJlYW0ucmVhZEJsb2NrIil9Z2V0IGlzQXN5bmNEZWNvZGVyKCl7cmV0dXJuITB9YXN5bmMgZGVjb2RlSW1hZ2UoZSx0LGEpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlfHw9dGhpcy5ieXRlczt0aGlzLmJ1ZmZlcj1hd2FpdCBKcHhJbWFnZS5kZWNvZGUoZSxhKTt0aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfWdldCBpc0ltYWdlU3RyZWFtKCl7cmV0dXJuITB9fWNsYXNzIExaV1N0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuY2FjaGVkRGF0YT0wO3RoaXMuYml0c0NhY2hlZD0wO2NvbnN0IG49NDA5NixzPXtlYXJseUNoYW5nZTphLGNvZGVMZW5ndGg6OSxuZXh0Q29kZToyNTgsZGljdGlvbmFyeVZhbHVlczpuZXcgVWludDhBcnJheShuKSxkaWN0aW9uYXJ5TGVuZ3RoczpuZXcgVWludDE2QXJyYXkobiksZGljdGlvbmFyeVByZXZDb2RlczpuZXcgVWludDE2QXJyYXkobiksY3VycmVudFNlcXVlbmNlOm5ldyBVaW50OEFycmF5KG4pLGN1cnJlbnRTZXF1ZW5jZUxlbmd0aDowfTtmb3IobGV0IGU9MDtlPDI1NjsrK2Upe3MuZGljdGlvbmFyeVZhbHVlc1tlXT1lO3MuZGljdGlvbmFyeUxlbmd0aHNbZV09MX10aGlzLmx6d1N0YXRlPXN9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5iaXRzQ2FjaGVkLGE9dGhpcy5jYWNoZWREYXRhO2Zvcig7dDxlOyl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7aWYoLTE9PT1lKXt0aGlzLmVvZj0hMDtyZXR1cm4gbnVsbH1hPWE8PDh8ZTt0Kz04fXRoaXMuYml0c0NhY2hlZD10LT1lO3RoaXMuY2FjaGVkRGF0YT1hO3JldHVybiBhPj4+dCYoMTw8ZSktMX1yZWFkQmxvY2soKXtsZXQgZSx0LGEsbj0xMDI0O2NvbnN0IHM9dGhpcy5sendTdGF0ZTtpZighcylyZXR1cm47Y29uc3Qgcj1zLmVhcmx5Q2hhbmdlO2xldCBpPXMubmV4dENvZGU7Y29uc3Qgbz1zLmRpY3Rpb25hcnlWYWx1ZXMsbD1zLmRpY3Rpb25hcnlMZW5ndGhzLGY9cy5kaWN0aW9uYXJ5UHJldkNvZGVzO2xldCBjPXMuY29kZUxlbmd0aCxoPXMucHJldkNvZGU7Y29uc3QgdT1zLmN1cnJlbnRTZXF1ZW5jZTtsZXQgbT1zLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aCxwPTAsZD10aGlzLmJ1ZmZlckxlbmd0aCxnPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK24pO2ZvcihlPTA7ZTw1MTI7ZSsrKXtjb25zdCBlPXRoaXMucmVhZEJpdHMoYykscz1tPjA7aWYoZTwyNTYpe3VbMF09ZTttPTF9ZWxzZXtpZighKGU+PTI1OCkpe2lmKDI1Nj09PWUpe2M9OTtpPTI1ODttPTA7Y29udGludWV9dGhpcy5lb2Y9ITA7ZGVsZXRlIHRoaXMubHp3U3RhdGU7YnJlYWt9aWYoZTxpKXttPWxbZV07Zm9yKHQ9bS0xLGE9ZTt0Pj0wO3QtLSl7dVt0XT1vW2FdO2E9ZlthXX19ZWxzZSB1W20rK109dVswXX1pZihzKXtmW2ldPWg7bFtpXT1sW2hdKzE7b1tpXT11WzBdO2krKztjPWkrciZpK3ItMT9jOjB8TWF0aC5taW4oTWF0aC5sb2coaStyKS8uNjkzMTQ3MTgwNTU5OTQ1MysxLDEyKX1oPWU7cCs9bTtpZihuPHApe2Rve24rPTUxMn13aGlsZShuPHApO2c9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrbil9Zm9yKHQ9MDt0PG07dCsrKWdbZCsrXT11W3RdfXMubmV4dENvZGU9aTtzLmNvZGVMZW5ndGg9YztzLnByZXZDb2RlPWg7cy5jdXJyZW50U2VxdWVuY2VMZW5ndGg9bTt0aGlzLmJ1ZmZlckxlbmd0aD1kfX1jbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBlO2NvbnN0IG49dGhpcy5wcmVkaWN0b3I9YS5nZXQoIlByZWRpY3RvciIpfHwxO2lmKG48PTEpcmV0dXJuIGU7aWYoMiE9PW4mJihuPDEwfHxuPjE1KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtufWApO3RoaXMucmVhZEJsb2NrPTI9PT1uP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3Qgcz10aGlzLmNvbG9ycz1hLmdldCgiQ29sb3JzIil8fDEscj10aGlzLmJpdHM9YS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxpPXRoaXMuY29sdW1ucz1hLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9cypyKzc+PjM7dGhpcy5yb3dCeXRlcz1pKnMqcis3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxhPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSksbj10aGlzLmJpdHMscz10aGlzLmNvbG9ycyxyPXRoaXMuc3RyZWFtLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFyLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IGksbz0wLGw9MCxmPTAsYz0wLGg9dDtpZigxPT09biYmMT09PXMpZm9yKGk9MDtpPGU7KytpKXtsZXQgZT1yW2ldXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NzthW2grK109ZX1lbHNlIGlmKDg9PT1uKXtmb3IoaT0wO2k8czsrK2kpYVtoKytdPXJbaV07Zm9yKDtpPGU7KytpKXthW2hdPWFbaC1zXStyW2ldO2grK319ZWxzZSBpZigxNj09PW4pe2NvbnN0IHQ9MipzO2ZvcihpPTA7aTx0OysraSlhW2grK109cltpXTtmb3IoO2k8ZTtpKz0yKXtjb25zdCBlPSgoMjU1JnJbaV0pPDw4KSsoMjU1JnJbaSsxXSkrKCgyNTUmYVtoLXRdKTw8OCkrKDI1NSZhW2gtdCsxXSk7YVtoKytdPWU+PjgmMjU1O2FbaCsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHMrMSksaD0oMTw8biktMTtsZXQgdT0wLG09dDtjb25zdCBwPXRoaXMuY29sdW1ucztmb3IoaT0wO2k8cDsrK2kpZm9yKGxldCB0PTA7dDxzOysrdCl7aWYoZjxuKXtvPW88PDh8MjU1JnJbdSsrXTtmKz04fWVbdF09ZVt0XSsobz4+Zi1uKSZoO2YtPW47bD1sPDxufGVbdF07Yys9bjtpZihjPj04KXthW20rK109bD4+Yy04JjI1NTtjLT04fX1jPjAmJihhW20rK109KGw8PDgtYykrKG8mKDE8PDgtYyktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsYT10aGlzLnN0cmVhbS5nZXRCeXRlKCksbj10aGlzLnN0cmVhbS5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hbi5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IHM9dGhpcy5idWZmZXJMZW5ndGgscj10aGlzLmVuc3VyZUJ1ZmZlcihzK2UpO2xldCBpPXIuc3ViYXJyYXkocy1lLHMpOzA9PT1pLmxlbmd0aCYmKGk9bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBvLGwsZixjPXM7c3dpdGNoKGEpe2Nhc2UgMDpmb3Iobz0wO288ZTsrK28pcltjKytdPW5bb107YnJlYWs7Y2FzZSAxOmZvcihvPTA7bzx0OysrbylyW2MrK109bltvXTtmb3IoO288ZTsrK28pe3JbY109cltjLXRdK25bb10mMjU1O2MrK31icmVhaztjYXNlIDI6Zm9yKG89MDtvPGU7KytvKXJbYysrXT1pW29dK25bb10mMjU1O2JyZWFrO2Nhc2UgMzpmb3Iobz0wO288dDsrK28pcltjKytdPShpW29dPj4xKStuW29dO2Zvcig7bzxlOysrbyl7cltjXT0oaVtvXStyW2MtdF0+PjEpK25bb10mMjU1O2MrK31icmVhaztjYXNlIDQ6Zm9yKG89MDtvPHQ7KytvKXtsPWlbb107Zj1uW29dO3JbYysrXT1sK2Z9Zm9yKDtvPGU7KytvKXtsPWlbb107Y29uc3QgZT1pW28tdF0sYT1yW2MtdF0scz1hK2wtZTtsZXQgaD1zLWE7aDwwJiYoaD0taCk7bGV0IHU9cy1sO3U8MCYmKHU9LXUpO2xldCBtPXMtZTttPDAmJihtPS1tKTtmPW5bb107cltjKytdPWg8PXUmJmg8PW0/YStmOnU8PW0/bCtmOmUrZn1icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke2F9YCl9dGhpcy5idWZmZXJMZW5ndGgrPWV9fWNsYXNzIFJ1bkxlbmd0aFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGVzKDIpO2lmKCFlfHxlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsYT10aGlzLmJ1ZmZlckxlbmd0aCxuPWVbMF07aWYobjwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStuKzEpO3RbYSsrXT1lWzFdO2lmKG4+MCl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlcyhuKTt0LnNldChlLGEpO2ErPW59fWVsc2V7bj0yNTctbjt0PXRoaXMuZW5zdXJlQnVmZmVyKGErbisxKTt0LmZpbGwoZVsxXSxhLGErbik7YSs9bn10aGlzLmJ1ZmZlckxlbmd0aD1hfX1jbGFzcyBQYXJzZXJ7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczphPSExLHJlY292ZXJ5TW9kZTpuPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWE7dGhpcy5yZWNvdmVyeU1vZGU9bjt0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9pbWFnZUlkPTA7dGhpcy5yZWZpbGwoKX1yZWZpbGwoKXt0aGlzLmJ1ZjE9dGhpcy5sZXhlci5nZXRPYmooKTt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX1zaGlmdCgpe2lmKHRoaXMuYnVmMiBpbnN0YW5jZW9mIENtZCYmIklEIj09PXRoaXMuYnVmMi5jbWQpe3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPW51bGx9ZWxzZXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfX10cnlTaGlmdCgpe3RyeXt0aGlzLnNoaWZ0KCk7cmV0dXJuITB9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fWdldE9iaihlPW51bGwpe2NvbnN0IHQ9dGhpcy5idWYxO3RoaXMuc2hpZnQoKTtpZih0IGluc3RhbmNlb2YgQ21kKXN3aXRjaCh0LmNtZCl7Y2FzZSJCSSI6cmV0dXJuIHRoaXMubWFrZUlubGluZUltYWdlKGUpO2Nhc2UiWyI6Y29uc3QgYT1bXTtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIl0iKSYmdGhpcy5idWYxIT09b2E7KWEucHVzaCh0aGlzLmdldE9iaihlKSk7aWYodGhpcy5idWYxPT09b2Epe2lmKHRoaXMucmVjb3ZlcnlNb2RlKXJldHVybiBhO3Rocm93IG5ldyBQYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBhcnJheS4iKX10aGlzLnNoaWZ0KCk7cmV0dXJuIGE7Y2FzZSI8PCI6Y29uc3Qgbj1uZXcgRGljdCh0aGlzLnhyZWYpO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09b2E7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIE5hbWUpKXtpbmZvKCJNYWxmb3JtZWQgZGljdGlvbmFyeToga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO3RoaXMuc2hpZnQoKTtjb250aW51ZX1jb25zdCB0PXRoaXMuYnVmMS5uYW1lO3RoaXMuc2hpZnQoKTtpZih0aGlzLmJ1ZjE9PT1vYSlicmVhaztuLnNldCh0LHRoaXMuZ2V0T2JqKGUpKX1pZih0aGlzLmJ1ZjE9PT1vYSl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIG47dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGRpY3Rpb25hcnkuIil9aWYoaXNDbWQodGhpcy5idWYyLCJzdHJlYW0iKSlyZXR1cm4gdGhpcy5hbGxvd1N0cmVhbXM/dGhpcy5tYWtlU3RyZWFtKG4sZSk6bjt0aGlzLnNoaWZ0KCk7cmV0dXJuIG47ZGVmYXVsdDpyZXR1cm4gdH1pZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXtpZihOdW1iZXIuaXNJbnRlZ2VyKHRoaXMuYnVmMSkmJmlzQ21kKHRoaXMuYnVmMiwiUiIpKXtjb25zdCBlPVJlZi5nZXQodCx0aGlzLmJ1ZjEpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGV9cmV0dXJuIHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiZlP2UuZGVjcnlwdFN0cmluZyh0KTp0fWZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0e2tub3duQ29tbWFuZHM6dH09dGhpcy5sZXhlcixhPWUucG9zO2xldCBuLHMscj0wO2Zvcig7LTEhPT0obj1lLmdldEJ5dGUoKSk7KWlmKDA9PT1yKXI9Njk9PT1uPzE6MDtlbHNlIGlmKDE9PT1yKXI9NzM9PT1uPzI6MDtlbHNlIGlmKDMyPT09bnx8MTA9PT1ufHwxMz09PW4pe3M9ZS5wb3M7Y29uc3QgYT1lLnBlZWtCeXRlcygxNSksaT1hLmxlbmd0aDtpZigwPT09aSlicmVhaztmb3IobGV0IGU9MDtlPGk7ZSsrKXtuPWFbZV07aWYoKDAhPT1ufHwwPT09YVtlKzFdKSYmKDEwIT09biYmMTMhPT1uJiYobjwzMnx8bj4xMjcpKSl7cj0wO2JyZWFrfX1pZigyIT09ciljb250aW51ZTtpZighdCl7d2FybigiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBgbGV4ZXIua25vd25Db21tYW5kc2AgaXMgdW5kZWZpbmVkLiIpO2NvbnRpbnVlfWNvbnN0IG89bmV3IExleGVyKG5ldyBTdHJlYW0oZS5wZWVrQnl0ZXMoNzUpKSx0KTtvLl9oZXhTdHJpbmdXYXJuPSgpPT57fTtsZXQgbD0wO2Zvcig7Oyl7Y29uc3QgZT1vLmdldE9iaigpO2lmKGU9PT1vYSl7cj0wO2JyZWFrfWlmKGUgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGE9dFtlLmNtZF07aWYoIWEpe3I9MDticmVha31pZihhLnZhcmlhYmxlQXJncz9sPD1hLm51bUFyZ3M6bD09PWEubnVtQXJncylicmVhaztsPTA7Y29udGludWV9bCsrfWlmKDI9PT1yKWJyZWFrfWVsc2Ugcj0wO2lmKC0xPT09bil7d2FybigiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQ6IFJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhvdXQgZmluZGluZyBhIHZhbGlkIEVJIG1hcmtlciIpO2lmKHMpe3dhcm4oJy4uLiB0cnlpbmcgdG8gcmVjb3ZlciBieSB1c2luZyB0aGUgbGFzdCAiRUkiIG9jY3VycmVuY2UuJyk7ZS5za2lwKC0oZS5wb3MtcykpfX1sZXQgaT00O2Uuc2tpcCgtaSk7bj1lLnBlZWtCeXRlKCk7ZS5za2lwKGkpO2lzV2hpdGVTcGFjZShuKXx8aS0tO3JldHVybiBlLnBvcy1pLWF9ZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhLG4scz0hMTtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpOylpZigyNTU9PT1hKXtzd2l0Y2goZS5nZXRCeXRlKCkpe2Nhc2UgMDpicmVhaztjYXNlIDI1NTplLnNraXAoLTEpO2JyZWFrO2Nhc2UgMjE3OnM9ITA7YnJlYWs7Y2FzZSAxOTI6Y2FzZSAxOTM6Y2FzZSAxOTQ6Y2FzZSAxOTU6Y2FzZSAxOTc6Y2FzZSAxOTg6Y2FzZSAxOTk6Y2FzZSAyMDE6Y2FzZSAyMDI6Y2FzZSAyMDM6Y2FzZSAyMDU6Y2FzZSAyMDY6Y2FzZSAyMDc6Y2FzZSAxOTY6Y2FzZSAyMDQ6Y2FzZSAyMTg6Y2FzZSAyMTk6Y2FzZSAyMjA6Y2FzZSAyMjE6Y2FzZSAyMjI6Y2FzZSAyMjM6Y2FzZSAyMjQ6Y2FzZSAyMjU6Y2FzZSAyMjY6Y2FzZSAyMjc6Y2FzZSAyMjg6Y2FzZSAyMjk6Y2FzZSAyMzA6Y2FzZSAyMzE6Y2FzZSAyMzI6Y2FzZSAyMzM6Y2FzZSAyMzQ6Y2FzZSAyMzU6Y2FzZSAyMzY6Y2FzZSAyMzc6Y2FzZSAyMzg6Y2FzZSAyMzk6Y2FzZSAyNTQ6bj1lLmdldFVpbnQxNigpO24+Mj9lLnNraXAobi0yKTplLnNraXAoLTIpfWlmKHMpYnJlYWt9Y29uc3Qgcj1lLnBvcy10O2lmKC0xPT09YSl7d2FybigiSW5saW5lIERDVERlY29kZSBpbWFnZSBzdHJlYW06IEVPSSBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLXIpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiByfWZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMTI2PT09YSl7Y29uc3QgdD1lLnBvczthPWUucGVla0J5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZShhKTspe2Uuc2tpcCgpO2E9ZS5wZWVrQnl0ZSgpfWlmKDYyPT09YSl7ZS5za2lwKCk7YnJlYWt9aWYoZS5wb3M+dCl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtpZig2OT09PXRbMF0mJjczPT09dFsxXSlicmVha319Y29uc3Qgbj1lLnBvcy10O2lmKC0xPT09YSl7d2FybigiSW5saW5lIEFTQ0lJODVEZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0QgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1uKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gbn1maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYTtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpJiY2MiE9PWE7KTtjb25zdCBuPWUucG9zLXQ7aWYoLTE9PT1hKXt3YXJuKCJJbmxpbmUgQVNDSUlIZXhEZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0QgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1uKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gbn1pbmxpbmVTdHJlYW1Ta2lwRUkoZSl7bGV0IHQsYT0wO2Zvcig7LTEhPT0odD1lLmdldEJ5dGUoKSk7KWlmKDA9PT1hKWE9Njk9PT10PzE6MDtlbHNlIGlmKDE9PT1hKWE9NzM9PT10PzI6MDtlbHNlIGlmKDI9PT1hKWJyZWFrfW1ha2VJbmxpbmVJbWFnZShlKXtjb25zdCB0PXRoaXMubGV4ZXIsYT10LnN0cmVhbSxuPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHM7Zm9yKDshaXNDbWQodGhpcy5idWYxLCJJRCIpJiZ0aGlzLmJ1ZjEhPT1vYTspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEaWN0aW9uYXJ5IGtleSBtdXN0IGJlIGEgbmFtZSBvYmplY3QiKTtjb25zdCB0PXRoaXMuYnVmMS5uYW1lO3RoaXMuc2hpZnQoKTtpZih0aGlzLmJ1ZjE9PT1vYSlicmVhaztuW3RdPXRoaXMuZ2V0T2JqKGUpfS0xIT09dC5iZWdpbklubGluZUltYWdlUG9zJiYocz1hLnBvcy10LmJlZ2luSW5saW5lSW1hZ2VQb3MpO2NvbnN0IHI9dGhpcy54cmVmLmZldGNoSWZSZWYobi5GfHxuLkZpbHRlcik7bGV0IGk7aWYociBpbnN0YW5jZW9mIE5hbWUpaT1yLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPXRoaXMueHJlZi5mZXRjaElmUmVmKHJbMF0pO2UgaW5zdGFuY2VvZiBOYW1lJiYoaT1lLm5hbWUpfWNvbnN0IG89YS5wb3M7bGV0IGwsZjtzd2l0Y2goaSl7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpsPXRoaXMuZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpsPXRoaXMuZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOmw9dGhpcy5maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7ZGVmYXVsdDpsPXRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoYSl9aWYobDwxZTMmJnM+MCl7Y29uc3QgZT1hLnBvczthLnBvcz10LmJlZ2luSW5saW5lSW1hZ2VQb3M7Zj1mdW5jdGlvbiBnZXRJbmxpbmVJbWFnZUNhY2hlS2V5KGUpe2NvbnN0IHQ9W10sYT1lLmxlbmd0aDtsZXQgbj0wO2Zvcig7bjxhLTE7KXQucHVzaChlW24rK108PDh8ZVtuKytdKTtuPGEmJnQucHVzaChlW25dKTtyZXR1cm4gYSsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHQpfShhLmdldEJ5dGVzKHMrbCkpO2EucG9zPWU7Y29uc3Qgbj10aGlzLmltYWdlQ2FjaGVbZl07aWYodm9pZCAwIT09bil7dGhpcy5idWYyPUNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO24ucmVzZXQoKTtyZXR1cm4gbn19Y29uc3QgYz1uZXcgRGljdCh0aGlzLnhyZWYpO2Zvcihjb25zdCBlIGluIG4pYy5zZXQoZSxuW2VdKTtsZXQgaD1hLm1ha2VTdWJTdHJlYW0obyxsLGMpO2UmJihoPWUuY3JlYXRlU3RyZWFtKGgsbCkpO2g9dGhpcy5maWx0ZXIoaCxjLGwpO2guZGljdD1jO2lmKHZvaWQgMCE9PWYpe2guY2FjaGVLZXk9ImlubGluZV9pbWdfIisgKyt0aGlzLl9pbWFnZUlkO3RoaXMuaW1hZ2VDYWNoZVtmXT1ofXRoaXMuYnVmMj1DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtyZXR1cm4gaH0jRyhlKXtjb25zdHtzdHJlYW06dH09dGhpcy5sZXhlcjt0LnBvcz1lO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoWzEwMSwxMTAsMTAwXSksbj1hLmxlbmd0aCxzPVtuZXcgVWludDhBcnJheShbMTE1LDExNiwxMTQsMTAxLDk3LDEwOV0pLG5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDEwMSw5NywxMDldKSxuZXcgVWludDhBcnJheShbMTE1LDExNiwxMTQsMTAxLDk3XSldLHI9OS1uO2Zvcig7dC5wb3M8dC5lbmQ7KXtjb25zdCBpPXQucGVla0J5dGVzKDIwNDgpLG89aS5sZW5ndGgtOTtpZihvPD0wKWJyZWFrO2xldCBsPTA7Zm9yKDtsPG87KXtsZXQgbz0wO2Zvcig7bzxuJiZpW2wrb109PT1hW29dOylvKys7aWYobz49bil7bGV0IG49ITE7Zm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgcz0wO2Zvcig7czx0JiZpW2wrbytzXT09PWVbc107KXMrKztpZihzPj1yKXtuPSEwO2JyZWFrfWlmKHM+PXQpe2lmKGlzV2hpdGVTcGFjZShpW2wrbytzXSkpe2luZm8oYEZvdW5kICIke2J5dGVzVG9TdHJpbmcoWy4uLmEsLi4uZV0pfSIgd2hlbiBzZWFyY2hpbmcgZm9yIGVuZHN0cmVhbSBjb21tYW5kLmApO249ITB9YnJlYWt9fWlmKG4pe3QucG9zKz1sO3JldHVybiB0LnBvcy1lfX1sKyt9dC5wb3MrPW99cmV0dXJuLTF9bWFrZVN0cmVhbShlLHQpe2NvbnN0IGE9dGhpcy5sZXhlcjtsZXQgbj1hLnN0cmVhbTthLnNraXBUb05leHRMaW5lKCk7Y29uc3Qgcz1uLnBvcy0xO2xldCByPWUuZ2V0KCJMZW5ndGgiKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKSl7aW5mbyhgQmFkIGxlbmd0aCAiJHtyJiZyLnRvU3RyaW5nKCl9IiBpbiBzdHJlYW0uYCk7cj0wfW4ucG9zPXMrcjthLm5leHRDaGFyKCk7aWYodGhpcy50cnlTaGlmdCgpJiZpc0NtZCh0aGlzLmJ1ZjIsImVuZHN0cmVhbSIpKXRoaXMuc2hpZnQoKTtlbHNle3I9dGhpcy4jRyhzKTtpZihyPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNaXNzaW5nIGVuZHN0cmVhbSBjb21tYW5kLiIpO2EubmV4dENoYXIoKTt0aGlzLnNoaWZ0KCk7dGhpcy5zaGlmdCgpfXRoaXMuc2hpZnQoKTtuPW4ubWFrZVN1YlN0cmVhbShzLHIsZSk7dCYmKG49dC5jcmVhdGVTdHJlYW0obixyKSk7bj10aGlzLmZpbHRlcihuLGUscik7bi5kaWN0PWU7cmV0dXJuIG59ZmlsdGVyKGUsdCxhKXtsZXQgbj10LmdldCgiRiIsIkZpbHRlciIpLHM9dC5nZXQoIkRQIiwiRGVjb2RlUGFybXMiKTtpZihuIGluc3RhbmNlb2YgTmFtZSl7QXJyYXkuaXNBcnJheShzKSYmd2FybigiL0RlY29kZVBhcm1zIHNob3VsZCBub3QgYmUgYW4gQXJyYXksIHdoZW4gL0ZpbHRlciBpcyBhIE5hbWUuIik7cmV0dXJuIHRoaXMubWFrZUZpbHRlcihlLG4ubmFtZSxhLHMpfWxldCByPWE7aWYoQXJyYXkuaXNBcnJheShuKSl7Y29uc3QgdD1uLGE9cztmb3IobGV0IGk9MCxvPXQubGVuZ3RoO2k8bzsrK2kpe249dGhpcy54cmVmLmZldGNoSWZSZWYodFtpXSk7aWYoIShuIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgZmlsdGVyIG5hbWUgIiR7bn0iYCk7cz1udWxsO0FycmF5LmlzQXJyYXkoYSkmJmkgaW4gYSYmKHM9dGhpcy54cmVmLmZldGNoSWZSZWYoYVtpXSkpO2U9dGhpcy5tYWtlRmlsdGVyKGUsbi5uYW1lLHIscyk7cj1udWxsfX1yZXR1cm4gZX1tYWtlRmlsdGVyKGUsdCxhLG4pe2lmKDA9PT1hKXt3YXJuKGBFbXB0eSAiJHt0fSIgc3RyZWFtLmApO3JldHVybiBuZXcgTnVsbFN0cmVhbX10cnl7c3dpdGNoKHQpe2Nhc2UiRmwiOmNhc2UiRmxhdGVEZWNvZGUiOnJldHVybiBuP25ldyBQcmVkaWN0b3JTdHJlYW0obmV3IEZsYXRlU3RyZWFtKGUsYSksYSxuKTpuZXcgRmxhdGVTdHJlYW0oZSxhKTtjYXNlIkxaVyI6Y2FzZSJMWldEZWNvZGUiOmxldCB0PTE7aWYobil7bi5oYXMoIkVhcmx5Q2hhbmdlIikmJih0PW4uZ2V0KCJFYXJseUNoYW5nZSIpKTtyZXR1cm4gbmV3IFByZWRpY3RvclN0cmVhbShuZXcgTFpXU3RyZWFtKGUsYSx0KSxhLG4pfXJldHVybiBuZXcgTFpXU3RyZWFtKGUsYSx0KTtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOnJldHVybiBuZXcgSnBlZ1N0cmVhbShlLGEsbik7Y2FzZSJKUFgiOmNhc2UiSlBYRGVjb2RlIjpyZXR1cm4gbmV3IEpweFN0cmVhbShlLGEsbik7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6cmV0dXJuIG5ldyBBc2NpaTg1U3RyZWFtKGUsYSk7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOnJldHVybiBuZXcgQXNjaWlIZXhTdHJlYW0oZSxhKTtjYXNlIkNDRiI6Y2FzZSJDQ0lUVEZheERlY29kZSI6cmV0dXJuIG5ldyBDQ0lUVEZheFN0cmVhbShlLGEsbik7Y2FzZSJSTCI6Y2FzZSJSdW5MZW5ndGhEZWNvZGUiOnJldHVybiBuZXcgUnVuTGVuZ3RoU3RyZWFtKGUsYSk7Y2FzZSJKQklHMkRlY29kZSI6cmV0dXJuIG5ldyBKYmlnMlN0cmVhbShlLGEsbik7Y2FzZSJCcm90bGlEZWNvZGUiOnJldHVybiBuZXcgQnJvdGxpU3RyZWFtKGUsYSl9d2FybihgRmlsdGVyICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkLmApO3JldHVybiBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYEludmFsaWQgc3RyZWFtOiAiJHtlfSJgKTtyZXR1cm4gbmV3IE51bGxTdHJlYW19fX1jb25zdCBhbj1bMSwwLDAsMCwwLDAsMCwwLDAsMSwxLDAsMSwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwyLDAsMCwyLDIsMCwwLDAsMCwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF07ZnVuY3Rpb24gdG9IZXhEaWdpdChlKXtyZXR1cm4gZT49NDgmJmU8PTU3PzE1JmU6ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyPzkrKDE1JmUpOi0xfWNsYXNzIExleGVye2NvbnN0cnVjdG9yKGUsdD1udWxsKXt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXTt0aGlzLmtub3duQ29tbWFuZHM9dDt0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7dGhpcy5iZWdpbklubGluZUltYWdlUG9zPS0xfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXBlZWtDaGFyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLnBlZWtCeXRlKCl9Z2V0TnVtYmVyKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcix0PTAsYT0xO2lmKDQ1PT09ZSl7YT0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSA0Mz09PWUmJihlPXRoaXMubmV4dENoYXIoKSk7aWYoMTA9PT1lfHwxMz09PWUpZG97ZT10aGlzLm5leHRDaGFyKCl9d2hpbGUoMTA9PT1lfHwxMz09PWUpO2lmKDQ2PT09ZSl7dD0xMDtlPXRoaXMubmV4dENoYXIoKX1pZihlPDQ4fHxlPjU3KXtjb25zdCB0PWBJbnZhbGlkIG51bWJlcjogJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSAoY2hhckNvZGUgJHtlfSlgO2lmKGlzV2hpdGVTcGFjZShlKXx8NDA9PT1lfHw2MD09PWV8fC0xPT09ZSl7aW5mbyhgTGV4ZXIuZ2V0TnVtYmVyIC0gIiR7dH0iLmApO3JldHVybiAwfXRocm93IG5ldyBGb3JtYXRFcnJvcih0KX1sZXQgbj1lLTQ4O2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXswIT09dCYmKHQqPTEwKTtuPTEwKm4rKGUtNDgpfWVsc2UgaWYoNDY9PT1lKXtpZigwIT09dClicmVhazt0PTF9ZWxzZXtpZig0NSE9PWUpYnJlYWs7d2FybigiQmFkbHkgZm9ybWF0dGVkIG51bWJlcjogbWludXMgc2lnbiBpbiB0aGUgbWlkZGxlIil9MCE9PXQmJihuLz10KTtyZXR1cm4gYSpufWdldFN0cmluZygpe2xldCBlPTEsdD0hMTtjb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7bGV0IG49dGhpcy5uZXh0Q2hhcigpO2Zvcig7Oyl7bGV0IHM9ITE7c3dpdGNoKDB8bil7Y2FzZS0xOndhcm4oIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgNDA6KytlO2EucHVzaCgiKCIpO2JyZWFrO2Nhc2UgNDE6aWYoMD09PS0tZSl7dGhpcy5uZXh0Q2hhcigpO3Q9ITB9ZWxzZSBhLnB1c2goIikiKTticmVhaztjYXNlIDkyOm49dGhpcy5uZXh0Q2hhcigpO3N3aXRjaChuKXtjYXNlLTE6d2FybigiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSAxMTA6YS5wdXNoKCJcbiIpO2JyZWFrO2Nhc2UgMTE0OmEucHVzaCgiXHIiKTticmVhaztjYXNlIDExNjphLnB1c2goIlx0Iik7YnJlYWs7Y2FzZSA5ODphLnB1c2goIlxiIik7YnJlYWs7Y2FzZSAxMDI6YS5wdXNoKCJcZiIpO2JyZWFrO2Nhc2UgOTI6Y2FzZSA0MDpjYXNlIDQxOmEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKTticmVhaztjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6bGV0IGU9MTUmbjtuPXRoaXMubmV4dENoYXIoKTtzPSEwO2lmKG4+PTQ4JiZuPD01NSl7ZT0oZTw8MykrKDE1Jm4pO249dGhpcy5uZXh0Q2hhcigpO2lmKG4+PTQ4JiZuPD01NSl7cz0hMTtlPShlPDwzKSsoMTUmbil9fWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTticmVhaztjYXNlIDEzOjEwPT09dGhpcy5wZWVrQ2hhcigpJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWs7Y2FzZSAxMDpicmVhaztkZWZhdWx0OmEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKX1icmVhaztkZWZhdWx0OmEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKX1pZih0KWJyZWFrO3N8fChuPXRoaXMubmV4dENoYXIoKSl9cmV0dXJuIGEuam9pbigiIil9Z2V0TmFtZSgpe2xldCBlLHQ7Y29uc3QgYT10aGlzLnN0ckJ1ZjthLmxlbmd0aD0wO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWFuW2VdOylpZigzNT09PWUpe2U9dGhpcy5uZXh0Q2hhcigpO2lmKGFuW2VdKXt3YXJuKCJMZXhlcl9nZXROYW1lOiBOVU1CRVIgU0lHTiAoIykgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGEgaGV4YWRlY2ltYWwgbnVtYmVyLiIpO2EucHVzaCgiIyIpO2JyZWFrfWNvbnN0IG49dG9IZXhEaWdpdChlKTtpZigtMSE9PW4pe3Q9ZTtlPXRoaXMubmV4dENoYXIoKTtjb25zdCBzPXRvSGV4RGlnaXQoZSk7aWYoLTE9PT1zKXt3YXJuKGBMZXhlcl9nZXROYW1lOiBJbGxlZ2FsIGRpZ2l0ICgke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9KSBpbiBoZXhhZGVjaW1hbCBudW1iZXIuYCk7YS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtpZihhbltlXSlicmVhazthLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29udGludWV9YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobjw8NHxzKSl9ZWxzZSBhLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfWVsc2UgYS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2EubGVuZ3RoPjEyNyYmd2FybihgTmFtZSB0b2tlbiBpcyBsb25nZXIgdGhhbiBhbGxvd2VkIGJ5IHRoZSBzcGVjOiAke2EubGVuZ3RofWApO3JldHVybiBOYW1lLmdldChhLmpvaW4oIiIpKX1faGV4U3RyaW5nV2FybihlKXs1IT09dGhpcy5faGV4U3RyaW5nTnVtV2FybisrP3RoaXMuX2hleFN0cmluZ051bVdhcm4+NXx8d2FybihgZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgaW52YWxpZCBjaGFyYWN0ZXI6ICR7ZX1gKTp3YXJuKCJnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBhZGRpdGlvbmFsIGludmFsaWQgY2hhcmFjdGVycy4iKX1nZXRIZXhTdHJpbmcoKXtjb25zdCBlPXRoaXMuc3RyQnVmO2UubGVuZ3RoPTA7bGV0IHQ9dGhpcy5jdXJyZW50Q2hhcixhPS0xLG49LTE7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO2Zvcig7Oyl7aWYodDwwKXt3YXJuKCJVbnRlcm1pbmF0ZWQgaGV4IHN0cmluZyIpO2JyZWFrfWlmKDYyPT09dCl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEhPT1hblt0XSl7bj10b0hleERpZ2l0KHQpO2lmKC0xPT09bil0aGlzLl9oZXhTdHJpbmdXYXJuKHQpO2Vsc2UgaWYoLTE9PT1hKWE9bjtlbHNle2UucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGE8PDR8bikpO2E9LTF9dD10aGlzLm5leHRDaGFyKCl9ZWxzZSB0PXRoaXMubmV4dENoYXIoKX0tMSE9PWEmJmUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGE8PDQpKTtyZXR1cm4gZS5qb2luKCIiKX1nZXRPYmooKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIG9hO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoMSE9PWFuW3RdKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIHRoaXMuZ2V0TnVtYmVyKCk7Y2FzZSA0MDpyZXR1cm4gdGhpcy5nZXRTdHJpbmcoKTtjYXNlIDQ3OnJldHVybiB0aGlzLmdldE5hbWUoKTtjYXNlIDkxOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiWyIpO2Nhc2UgOTM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJdIik7Y2FzZSA2MDp0PXRoaXMubmV4dENoYXIoKTtpZig2MD09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiPDwiKX1yZXR1cm4gdGhpcy5nZXRIZXhTdHJpbmcoKTtjYXNlIDYyOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYyPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCI+PiIpfXJldHVybiBDbWQuZ2V0KCI+Iik7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJ7Iik7Y2FzZSAxMjU6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJ9Iik7Y2FzZSA0MTp0aGlzLm5leHRDaGFyKCk7dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbGxlZ2FsIGNoYXJhY3RlcjogJHt0fWApfWxldCBhPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYodDwzMnx8dD4xMjcpe2NvbnN0IGU9dGhpcy5wZWVrQ2hhcigpO2lmKGU+PTMyJiZlPD0xMjcpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldChhKX19Y29uc3Qgbj10aGlzLmtub3duQ29tbWFuZHM7bGV0IHM9dm9pZCAwIT09bj8uW2FdO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWFuW3RdOyl7Y29uc3QgZT1hK1N0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYocyYmdm9pZCAwPT09bltlXSlicmVhaztpZigxMjg9PT1hLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYENvbW1hbmQgdG9rZW4gdG9vIGxvbmc6ICR7YS5sZW5ndGh9YCk7YT1lO3M9dm9pZCAwIT09bj8uW2FdfWlmKCJ0cnVlIj09PWEpcmV0dXJuITA7aWYoImZhbHNlIj09PWEpcmV0dXJuITE7aWYoIm51bGwiPT09YSlyZXR1cm4gbnVsbDsiQkkiPT09YSYmKHRoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz10aGlzLnN0cmVhbS5wb3MpO3JldHVybiBDbWQuZ2V0KGEpfXNraXBUb05leHRMaW5lKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtmb3IoO2U+PTA7KXtpZigxMz09PWUpe2U9dGhpcy5uZXh0Q2hhcigpOzEwPT09ZSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEwPT09ZSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWU9dGhpcy5uZXh0Q2hhcigpfX19Y2xhc3MgTGluZWFyaXphdGlvbntzdGF0aWMgY3JlYXRlKGUpe2Z1bmN0aW9uIGdldEludChlLHQsYT0hMSl7Y29uc3Qgbj1lLmdldCh0KTtpZihOdW1iZXIuaXNJbnRlZ2VyKG4pJiYoYT9uPj0wOm4+MCkpcmV0dXJuIG47dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7dH0iIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSkseHJlZjpudWxsfSksYT10LmdldE9iaigpLG49dC5nZXRPYmooKSxzPXQuZ2V0T2JqKCkscj10LmdldE9iaigpO2xldCBpLG87aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGEpJiZOdW1iZXIuaXNJbnRlZ2VyKG4pJiZpc0NtZChzLCJvYmoiKSYmciBpbnN0YW5jZW9mIERpY3QmJiJudW1iZXIiPT10eXBlb2YoaT1yLmdldCgiTGluZWFyaXplZCIpKSYmaT4wKSlyZXR1cm4gbnVsbDtpZigobz1nZXRJbnQociwiTCIpKSE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcignVGhlICJMIiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2VzIG5vdCBlcXVhbCB0aGUgc3RyZWFtIGxlbmd0aC4nKTtyZXR1cm57bGVuZ3RoOm8saGludHM6ZnVuY3Rpb24gZ2V0SGludHMoZSl7Y29uc3QgdD1lLmdldCgiSCIpO2xldCBhO2lmKEFycmF5LmlzQXJyYXkodCkmJigyPT09KGE9dC5sZW5ndGgpfHw0PT09YSkpe2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGE9dFtlXTtpZighKE51bWJlci5pc0ludGVnZXIoYSkmJmE+MCkpdGhyb3cgbmV3IEVycm9yKGBIaW50ICgke2V9KSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKCJIaW50IGFycmF5IGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX0ociksb2JqZWN0TnVtYmVyRmlyc3Q6Z2V0SW50KHIsIk8iKSxlbmRGaXJzdDpnZXRJbnQociwiRSIpLG51bVBhZ2VzOmdldEludChyLCJOIiksbWFpblhSZWZFbnRyaWVzT2Zmc2V0OmdldEludChyLCJUIikscGFnZUZpcnN0OnIuaGFzKCJQIik/Z2V0SW50KHIsIlAiLCEwKTowfX19Y29uc3Qgbm49WyJBZG9iZS1HQjEtVUNTMiIsIkFkb2JlLUNOUzEtVUNTMiIsIkFkb2JlLUphcGFuMS1VQ1MyIiwiQWRvYmUtS29yZWExLVVDUzIiLCI3OC1FVUMtSCIsIjc4LUVVQy1WIiwiNzgtSCIsIjc4LVJLU0otSCIsIjc4LVJLU0otViIsIjc4LVYiLCI3OG1zLVJLU0otSCIsIjc4bXMtUktTSi1WIiwiODNwdi1SS1NKLUgiLCI5MG1zLVJLU0otSCIsIjkwbXMtUktTSi1WIiwiOTBtc3AtUktTSi1IIiwiOTBtc3AtUktTSi1WIiwiOTBwdi1SS1NKLUgiLCI5MHB2LVJLU0otViIsIkFkZC1IIiwiQWRkLVJLU0otSCIsIkFkZC1SS1NKLVYiLCJBZGQtViIsIkFkb2JlLUNOUzEtMCIsIkFkb2JlLUNOUzEtMSIsIkFkb2JlLUNOUzEtMiIsIkFkb2JlLUNOUzEtMyIsIkFkb2JlLUNOUzEtNCIsIkFkb2JlLUNOUzEtNSIsIkFkb2JlLUNOUzEtNiIsIkFkb2JlLUdCMS0wIiwiQWRvYmUtR0IxLTEiLCJBZG9iZS1HQjEtMiIsIkFkb2JlLUdCMS0zIiwiQWRvYmUtR0IxLTQiLCJBZG9iZS1HQjEtNSIsIkFkb2JlLUphcGFuMS0wIiwiQWRvYmUtSmFwYW4xLTEiLCJBZG9iZS1KYXBhbjEtMiIsIkFkb2JlLUphcGFuMS0zIiwiQWRvYmUtSmFwYW4xLTQiLCJBZG9iZS1KYXBhbjEtNSIsIkFkb2JlLUphcGFuMS02IiwiQWRvYmUtS29yZWExLTAiLCJBZG9iZS1Lb3JlYTEtMSIsIkFkb2JlLUtvcmVhMS0yIiwiQjUtSCIsIkI1LVYiLCJCNXBjLUgiLCJCNXBjLVYiLCJDTlMtRVVDLUgiLCJDTlMtRVVDLVYiLCJDTlMxLUgiLCJDTlMxLVYiLCJDTlMyLUgiLCJDTlMyLVYiLCJFVEhLLUI1LUgiLCJFVEhLLUI1LVYiLCJFVGVuLUI1LUgiLCJFVGVuLUI1LVYiLCJFVGVubXMtQjUtSCIsIkVUZW5tcy1CNS1WIiwiRVVDLUgiLCJFVUMtViIsIkV4dC1IIiwiRXh0LVJLU0otSCIsIkV4dC1SS1NKLVYiLCJFeHQtViIsIkdCLUVVQy1IIiwiR0ItRVVDLVYiLCJHQi1IIiwiR0ItViIsIkdCSy1FVUMtSCIsIkdCSy1FVUMtViIsIkdCSzJLLUgiLCJHQksySy1WIiwiR0JLcC1FVUMtSCIsIkdCS3AtRVVDLVYiLCJHQlQtRVVDLUgiLCJHQlQtRVVDLVYiLCJHQlQtSCIsIkdCVC1WIiwiR0JUcGMtRVVDLUgiLCJHQlRwYy1FVUMtViIsIkdCcGMtRVVDLUgiLCJHQnBjLUVVQy1WIiwiSCIsIkhLZGxhLUI1LUgiLCJIS2RsYS1CNS1WIiwiSEtkbGItQjUtSCIsIkhLZGxiLUI1LVYiLCJIS2djY3MtQjUtSCIsIkhLZ2Njcy1CNS1WIiwiSEttMzE0LUI1LUgiLCJIS20zMTQtQjUtViIsIkhLbTQ3MS1CNS1IIiwiSEttNDcxLUI1LVYiLCJIS3Njcy1CNS1IIiwiSEtzY3MtQjUtViIsIkhhbmtha3UiLCJIaXJhZ2FuYSIsIktTQy1FVUMtSCIsIktTQy1FVUMtViIsIktTQy1IIiwiS1NDLUpvaGFiLUgiLCJLU0MtSm9oYWItViIsIktTQy1WIiwiS1NDbXMtVUhDLUgiLCJLU0Ntcy1VSEMtSFctSCIsIktTQ21zLVVIQy1IVy1WIiwiS1NDbXMtVUhDLVYiLCJLU0NwYy1FVUMtSCIsIktTQ3BjLUVVQy1WIiwiS2F0YWthbmEiLCJOV1AtSCIsIk5XUC1WIiwiUktTSi1IIiwiUktTSi1WIiwiUm9tYW4iLCJVbmlDTlMtVUNTMi1IIiwiVW5pQ05TLVVDUzItViIsIlVuaUNOUy1VVEYxNi1IIiwiVW5pQ05TLVVURjE2LVYiLCJVbmlDTlMtVVRGMzItSCIsIlVuaUNOUy1VVEYzMi1WIiwiVW5pQ05TLVVURjgtSCIsIlVuaUNOUy1VVEY4LVYiLCJVbmlHQi1VQ1MyLUgiLCJVbmlHQi1VQ1MyLVYiLCJVbmlHQi1VVEYxNi1IIiwiVW5pR0ItVVRGMTYtViIsIlVuaUdCLVVURjMyLUgiLCJVbmlHQi1VVEYzMi1WIiwiVW5pR0ItVVRGOC1IIiwiVW5pR0ItVVRGOC1WIiwiVW5pSklTLVVDUzItSCIsIlVuaUpJUy1VQ1MyLUhXLUgiLCJVbmlKSVMtVUNTMi1IVy1WIiwiVW5pSklTLVVDUzItViIsIlVuaUpJUy1VVEYxNi1IIiwiVW5pSklTLVVURjE2LVYiLCJVbmlKSVMtVVRGMzItSCIsIlVuaUpJUy1VVEYzMi1WIiwiVW5pSklTLVVURjgtSCIsIlVuaUpJUy1VVEY4LVYiLCJVbmlKSVMyMDA0LVVURjE2LUgiLCJVbmlKSVMyMDA0LVVURjE2LVYiLCJVbmlKSVMyMDA0LVVURjMyLUgiLCJVbmlKSVMyMDA0LVVURjMyLVYiLCJVbmlKSVMyMDA0LVVURjgtSCIsIlVuaUpJUzIwMDQtVVRGOC1WIiwiVW5pSklTUHJvLVVDUzItSFctViIsIlVuaUpJU1Byby1VQ1MyLVYiLCJVbmlKSVNQcm8tVVRGOC1WIiwiVW5pSklTWDAyMTMtVVRGMzItSCIsIlVuaUpJU1gwMjEzLVVURjMyLVYiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItSCIsIlVuaUpJU1gwMjEzMjAwNC1VVEYzMi1WIiwiVW5pS1MtVUNTMi1IIiwiVW5pS1MtVUNTMi1WIiwiVW5pS1MtVVRGMTYtSCIsIlVuaUtTLVVURjE2LVYiLCJVbmlLUy1VVEYzMi1IIiwiVW5pS1MtVVRGMzItViIsIlVuaUtTLVVURjgtSCIsIlVuaUtTLVVURjgtViIsIlYiLCJXUC1TeW1ib2wiXSxzbj0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wO3RoaXMuX21hcD1bXTt0aGlzLm5hbWU9IiI7dGhpcy52ZXJ0aWNhbD0hMTt0aGlzLnVzZUNNYXA9bnVsbDt0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LGEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LGEpO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LGEpe2lmKHQtZT5zbil0aHJvdyBuZXcgRXJyb3IoIm1hcENpZFJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2Zvcig7ZTw9dDspdGhpcy5fbWFwW2UrK109YSsrfW1hcEJmUmFuZ2UoZSx0LGEpe2lmKHQtZT5zbil0aHJvdyBuZXcgRXJyb3IoIm1hcEJmUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3Qgbj1hLmxlbmd0aC0xO2Zvcig7ZTw9dDspe3RoaXMuX21hcFtlKytdPWE7Y29uc3QgdD1hLmNoYXJDb2RlQXQobikrMTt0PjI1NT9hPWEuc3Vic3RyaW5nKDAsbi0xKStTdHJpbmcuZnJvbUNoYXJDb2RlKGEuY2hhckNvZGVBdChuLTEpKzEpKyJcMCI6YT1hLnN1YnN0cmluZygwLG4pK1N0cmluZy5mcm9tQ2hhckNvZGUodCl9fW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxhKXtpZih0LWU+c24pdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCBuPWEubGVuZ3RoO2xldCBzPTA7Zm9yKDtlPD10JiZzPG47KXt0aGlzLl9tYXBbZV09YVtzKytdOysrZX19bWFwT25lKGUsdCl7dGhpcy5fbWFwW2VdPXR9bG9va3VwKGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y29udGFpbnMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLGE9dC5sZW5ndGg7aWYoYTw9NjU1MzYpZm9yKGxldCBuPTA7bjxhO24rKyl2b2lkIDAhPT10W25dJiZlKG4sdFtuXSk7ZWxzZSBmb3IoY29uc3QgYSBpbiB0KWUoYSx0W2FdKX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1nZXRNYXAoKXtyZXR1cm4gdGhpcy5fbWFwfXJlYWRDaGFyQ29kZShlLHQsYSl7bGV0IG49MDtjb25zdCBzPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgcj0wLGk9cy5sZW5ndGg7cjxpO3IrKyl7bj0objw8OHxlLmNoYXJDb2RlQXQodCtyKSk+Pj4wO2NvbnN0IGk9c1tyXTtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDspe2NvbnN0IHQ9aVtlKytdLHM9aVtlKytdO2lmKG4+PXQmJm48PXMpe2EuY2hhcmNvZGU9bjthLmxlbmd0aD1yKzE7cmV0dXJufX19YS5jaGFyY29kZT0wO2EubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MCxuPXQubGVuZ3RoO2E8bjthKyspe2NvbnN0IG49dFthXTtmb3IobGV0IHQ9MCxzPW4ubGVuZ3RoO3Q8czspe2NvbnN0IHM9blt0KytdLHI9blt0KytdO2lmKGU+PXMmJmU8PXIpcmV0dXJuIGErMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX1jbGFzcyBJZGVudGl0eUNNYXAgZXh0ZW5kcyBDTWFwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTt0aGlzLnZlcnRpY2FsPWU7dGhpcy5hZGRDb2Rlc3BhY2VSYW5nZSh0LDAsNjU1MzUpfW1hcENpZFJhbmdlKGUsdCxhKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlIil9bWFwQmZSYW5nZShlLHQsYSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlIil9bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZVRvQXJyYXkiKX1tYXBPbmUoZSx0KXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZE9uZSIpfWxvb2t1cChlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTp2b2lkIDB9Y29udGFpbnMoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1fWZvckVhY2goZSl7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWUodCx0KX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOi0xfWdldE1hcCgpe2NvbnN0IGU9bmV3IEFycmF5KDY1NTM2KTtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZVt0XT10O3JldHVybiBlfWdldCBsZW5ndGgoKXtyZXR1cm4gNjU1MzZ9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCIpfX1mdW5jdGlvbiBzdHJUb0ludChlKXtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXQ9dDw8OHxlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGV4cGVjdFN0cmluZyhlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgc3RyaW5nLiIpfWZ1bmN0aW9uIGV4cGVjdEludChlKXtpZighTnVtYmVyLmlzSW50ZWdlcihlKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBpbnQuIil9ZnVuY3Rpb24gcGFyc2VCZkNoYXIoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW9hKWJyZWFrO2lmKGlzQ21kKGEsImVuZGJmY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgbj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHM9YTtlLm1hcE9uZShuLHMpfX1mdW5jdGlvbiBwYXJzZUJmUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW9hKWJyZWFrO2lmKGlzQ21kKGEsImVuZGJmcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IG49c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBzPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpfHwic3RyaW5nIj09dHlwZW9mIGEpe2NvbnN0IHQ9TnVtYmVyLmlzSW50ZWdlcihhKT9TdHJpbmcuZnJvbUNoYXJDb2RlKGEpOmE7ZS5tYXBCZlJhbmdlKG4scyx0KX1lbHNle2lmKCFpc0NtZChhLCJbIikpYnJlYWs7e2E9dC5nZXRPYmooKTtjb25zdCByPVtdO2Zvcig7IWlzQ21kKGEsIl0iKSYmYSE9PW9hOyl7ci5wdXNoKGEpO2E9dC5nZXRPYmooKX1lLm1hcEJmUmFuZ2VUb0FycmF5KG4scyxyKX19fXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBiZiByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZUNpZENoYXIoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW9hKWJyZWFrO2lmKGlzQ21kKGEsImVuZGNpZGNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IG49c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdEludChhKTtjb25zdCBzPWE7ZS5tYXBPbmUobixzKX19ZnVuY3Rpb24gcGFyc2VDaWRSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09b2EpYnJlYWs7aWYoaXNDbWQoYSwiZW5kY2lkcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IG49c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBzPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RJbnQoYSk7Y29uc3Qgcj1hO2UubWFwQ2lkUmFuZ2UobixzLHIpfX1mdW5jdGlvbiBwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1vYSlicmVhaztpZihpc0NtZChhLCJlbmRjb2Rlc3BhY2VyYW5nZSIpKXJldHVybjtpZigic3RyaW5nIiE9dHlwZW9mIGEpYnJlYWs7Y29uc3Qgbj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoInN0cmluZyIhPXR5cGVvZiBhKWJyZWFrO2NvbnN0IHM9c3RyVG9JbnQoYSk7ZS5hZGRDb2Rlc3BhY2VSYW5nZShhLmxlbmd0aCxuLHMpfXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjb2Rlc3BhY2UgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VXTW9kZShlLHQpe2NvbnN0IGE9dC5nZXRPYmooKTtOdW1iZXIuaXNJbnRlZ2VyKGEpJiYoZS52ZXJ0aWNhbD0hIWEpfWZ1bmN0aW9uIHBhcnNlQ01hcE5hbWUoZSx0KXtjb25zdCBhPXQuZ2V0T2JqKCk7YSBpbnN0YW5jZW9mIE5hbWUmJihlLm5hbWU9YS5uYW1lKX1hc3luYyBmdW5jdGlvbiBwYXJzZUNNYXAoZSx0LGEsbil7bGV0IHMscjtlOmZvcig7Oyl0cnl7Y29uc3QgYT10LmdldE9iaigpO2lmKGE9PT1vYSlicmVhaztpZihhIGluc3RhbmNlb2YgTmFtZSl7IldNb2RlIj09PWEubmFtZT9wYXJzZVdNb2RlKGUsdCk6IkNNYXBOYW1lIj09PWEubmFtZSYmcGFyc2VDTWFwTmFtZShlLHQpO3M9YX1lbHNlIGlmKGEgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKGEuY21kKXtjYXNlImVuZGNtYXAiOmJyZWFrIGU7Y2FzZSJ1c2VjbWFwIjpzIGluc3RhbmNlb2YgTmFtZSYmKHI9cy5uYW1lKTticmVhaztjYXNlImJlZ2luY29kZXNwYWNlcmFuZ2UiOnBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luYmZjaGFyIjpwYXJzZUJmQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRjaGFyIjpwYXJzZUNpZENoYXIoZSx0KTticmVhaztjYXNlImJlZ2luYmZyYW5nZSI6cGFyc2VCZlJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZHJhbmdlIjpwYXJzZUNpZFJhbmdlKGUsdCl9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIkludmFsaWQgY01hcCBkYXRhOiAiK2UpO2NvbnRpbnVlfSFuJiZyJiYobj1yKTtyZXR1cm4gbj9leHRlbmRDTWFwKGUsYSxuKTplfWFzeW5jIGZ1bmN0aW9uIGV4dGVuZENNYXAoZSx0LGEpe2UudXNlQ01hcD1hd2FpdCBjcmVhdGVCdWlsdEluQ01hcChhLHQpO2lmKDA9PT1lLm51bUNvZGVzcGFjZVJhbmdlcyl7Y29uc3QgdD1lLnVzZUNNYXAuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKWUuY29kZXNwYWNlUmFuZ2VzW2FdPXRbYV0uc2xpY2UoKTtlLm51bUNvZGVzcGFjZVJhbmdlcz1lLnVzZUNNYXAubnVtQ29kZXNwYWNlUmFuZ2VzfWUudXNlQ01hcC5mb3JFYWNoKGZ1bmN0aW9uKHQsYSl7ZS5jb250YWlucyh0KXx8ZS5tYXBPbmUodCxhKX0pO3JldHVybiBlfWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJ1aWx0SW5DTWFwKGUsdCl7aWYoIklkZW50aXR5LUgiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMSwyKTtpZigiSWRlbnRpdHktViI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCEwLDIpO2lmKCFubi5pbmNsdWRlcyhlKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gQ01hcCBuYW1lOiAiK2UpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiQnVpbHQtaW4gQ01hcCBwYXJhbWV0ZXJzIGFyZSBub3QgcHJvdmlkZWQuIik7Y29uc3R7Y01hcERhdGE6YSxpc0NvbXByZXNzZWQ6bn09YXdhaXQgdChlKSxzPW5ldyBDTWFwKCEwKTtpZihuKXJldHVybihuZXcgQmluYXJ5Q01hcFJlYWRlcikucHJvY2VzcyhhLHMsZT0+ZXh0ZW5kQ01hcChzLHQsZSkpO2NvbnN0IHI9bmV3IExleGVyKG5ldyBTdHJlYW0oYSkpO3JldHVybiBwYXJzZUNNYXAocyxyLHQsbnVsbCl9Y2xhc3MgQ01hcEZhY3Rvcnl7c3RhdGljIGFzeW5jIGNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnQsdXNlQ01hcDphfSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpcmV0dXJuIGNyZWF0ZUJ1aWx0SW5DTWFwKGUubmFtZSx0KTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7aWYoZS5pc0FzeW5jKXtjb25zdCB0PWF3YWl0IGUuYXN5bmNHZXRCeXRlcygpO3QmJihlPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLGUuZGljdCkpfWNvbnN0IG49YXdhaXQgcGFyc2VDTWFwKG5ldyBDTWFwLG5ldyBMZXhlcihlKSx0LGEpO3JldHVybiBuLmlzSWRlbnRpdHlDTWFwP2NyZWF0ZUJ1aWx0SW5DTWFwKG4ubmFtZSx0KTpufXRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgcmVxdWlyZWQuIil9fWNsYXNzIENTU19GT05UX0lORk97c3RhdGljIHN0cmluZ3M9WyJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsIml0YWxpY0FuZ2xlIl19Y2xhc3MgU1lTVEVNX0ZPTlRfSU5GT3tzdGF0aWMgc3RyaW5ncz1bImNzcyIsImxvYWRlZE5hbWUiLCJiYXNlRm9udE5hbWUiLCJzcmMiXX1jbGFzcyBGT05UX0lORk97c3RhdGljIGJvb2xzPVsiYmxhY2siLCJib2xkIiwiZGlzYWJsZUZvbnRGYWNlIiwiZm9udEV4dHJhUHJvcGVydGllcyIsImlzSW52YWxpZFBERmpzRm9udCIsImlzVHlwZTNGb250IiwiaXRhbGljIiwibWlzc2luZ0ZpbGUiLCJyZW1lYXN1cmUiLCJ2ZXJ0aWNhbCJdO3N0YXRpYyBudW1iZXJzPVsiYXNjZW50IiwiZGVmYXVsdFdpZHRoIiwiZGVzY2VudCJdO3N0YXRpYyBzdHJpbmdzPVsiZmFsbGJhY2tOYW1lIiwibG9hZGVkTmFtZSIsIm1pbWV0eXBlIiwibmFtZSJdO3N0YXRpYyBPRkZTRVRfTlVNQkVSUz1NYXRoLmNlaWwoMip0aGlzLmJvb2xzLmxlbmd0aC84KTtzdGF0aWMgT0ZGU0VUX0JCT1g9dGhpcy5PRkZTRVRfTlVNQkVSUys4KnRoaXMubnVtYmVycy5sZW5ndGg7c3RhdGljIE9GRlNFVF9GT05UX01BVFJJWD10aGlzLk9GRlNFVF9CQk9YKzErODtzdGF0aWMgT0ZGU0VUX0RFRkFVTFRfVk1FVFJJQ1M9dGhpcy5PRkZTRVRfRk9OVF9NQVRSSVgrMSs0ODtzdGF0aWMgT0ZGU0VUX1NUUklOR1M9dGhpcy5PRkZTRVRfREVGQVVMVF9WTUVUUklDUysxKzZ9Y2xhc3MgUEFUVEVSTl9JTkZPe3N0YXRpYyBLSU5EPTA7c3RhdGljIEhBU19CQk9YPTE7c3RhdGljIEhBU19CQUNLR1JPVU5EPTI7c3RhdGljIFNIQURJTkdfVFlQRT0zO3N0YXRpYyBOX0NPT1JEPTQ7c3RhdGljIE5fQ09MT1I9ODtzdGF0aWMgTl9TVE9QPTEyO3N0YXRpYyBOX0ZJR1VSRVM9MTZ9ZnVuY3Rpb24gY29tcGlsZUZvbnRJbmZvKGUpe2NvbnN0IHQ9ZS5zeXN0ZW1Gb250SW5mbz9mdW5jdGlvbiBjb21waWxlU3lzdGVtRm9udEluZm8oZSl7Y29uc3QgdD1uZXcgVGV4dEVuY29kZXIsYT17fTtsZXQgbj0wO2Zvcihjb25zdCBzIG9mIFNZU1RFTV9GT05UX0lORk8uc3RyaW5ncyl7Y29uc3Qgcj10LmVuY29kZShlW3NdKTthW3NdPXI7bis9NCtyLmxlbmd0aH1uKz00O2xldCBzLHIsaT0xK247aWYoZS5zdHlsZSl7cz10LmVuY29kZShlLnN0eWxlLnN0eWxlKTtyPXQuZW5jb2RlKGUuc3R5bGUud2VpZ2h0KTtpKz00K3MubGVuZ3RoKzQrci5sZW5ndGh9Y29uc3Qgbz1uZXcgQXJyYXlCdWZmZXIoaSksbD1uZXcgVWludDhBcnJheShvKSxmPW5ldyBEYXRhVmlldyhvKTtsZXQgYz0wO2Yuc2V0VWludDgoYysrLGUuZ3Vlc3NGYWxsYmFjaz8xOjApO2Yuc2V0VWludDMyKGMsMCk7Yys9NDtuPTA7Zm9yKGNvbnN0IGUgb2YgU1lTVEVNX0ZPTlRfSU5GTy5zdHJpbmdzKXtjb25zdCB0PWFbZV0scz10Lmxlbmd0aDtuKz00K3M7Zi5zZXRVaW50MzIoYyxzKTtsLnNldCh0LGMrNCk7Yys9NCtzfWYuc2V0VWludDMyKGMtbi00LG4pO2lmKGUuc3R5bGUpe2Yuc2V0VWludDMyKGMscy5sZW5ndGgpO2wuc2V0KHMsYys0KTtjKz00K3MubGVuZ3RoO2Yuc2V0VWludDMyKGMsci5sZW5ndGgpO2wuc2V0KHIsYys0KTtjKz00K3IubGVuZ3RofWFzc2VydChjPD1vLmJ5dGVMZW5ndGgsImNvbXBpbGVTeXN0ZW1Gb250SW5mbzogQnVmZmVyIG92ZXJmbG93Iik7cmV0dXJuIG8udHJhbnNmZXJUb0ZpeGVkTGVuZ3RoKGMpfShlLnN5c3RlbUZvbnRJbmZvKTpudWxsLGE9ZS5jc3NGb250SW5mbz9mdW5jdGlvbiBjb21waWxlQ3NzRm9udEluZm8oZSl7Y29uc3QgdD1uZXcgVGV4dEVuY29kZXIsYT17fTtsZXQgbj0wO2Zvcihjb25zdCBzIG9mIENTU19GT05UX0lORk8uc3RyaW5ncyl7Y29uc3Qgcj10LmVuY29kZShlW3NdKTthW3NdPXI7bis9NCtyLmxlbmd0aH1jb25zdCBzPW5ldyBBcnJheUJ1ZmZlcihuKSxyPW5ldyBVaW50OEFycmF5KHMpLGk9bmV3IERhdGFWaWV3KHMpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2YgQ1NTX0ZPTlRfSU5GTy5zdHJpbmdzKXtjb25zdCB0PWFbZV0sbj10Lmxlbmd0aDtpLnNldFVpbnQzMihvLG4pO3Iuc2V0KHQsbys0KTtvKz00K259YXNzZXJ0KG89PT1zLmJ5dGVMZW5ndGgsImNvbXBpbGVDc3NGb250SW5mbzogQnVmZmVyIG92ZXJmbG93Iik7cmV0dXJuIHN9KGUuY3NzRm9udEluZm8pOm51bGwsbj1uZXcgVGV4dEVuY29kZXIscz17fTtsZXQgcj0wO2Zvcihjb25zdCB0IG9mIEZPTlRfSU5GTy5zdHJpbmdzKXtzW3RdPW4uZW5jb2RlKGVbdF0pO3IrPTQrc1t0XS5sZW5ndGh9Y29uc3QgaT1GT05UX0lORk8uT0ZGU0VUX1NUUklOR1MrNCtyKzQrKHQ/LmJ5dGVMZW5ndGg/PzApKzQrKGE/LmJ5dGVMZW5ndGg/PzApKzQrKGUuZGF0YT8ubGVuZ3RoPz8wKSxvPW5ldyBBcnJheUJ1ZmZlcihpKSxsPW5ldyBVaW50OEFycmF5KG8pLGY9bmV3IERhdGFWaWV3KG8pO2xldCBjPTA7Y29uc3QgaD1GT05UX0lORk8uYm9vbHMubGVuZ3RoO2xldCB1PTAsbT0wO2ZvcihsZXQgdD0wO3Q8aDt0Kyspe2NvbnN0IGE9ZVtGT05UX0lORk8uYm9vbHNbdF1dO3V8PSh2b2lkIDA9PT1hPzA6YT8yOjEpPDxtO20rPTI7aWYoOD09PW18fHQ9PT1oLTEpe2Yuc2V0VWludDgoYysrLHUpO3U9MDttPTB9fWFzc2VydChjPT09Rk9OVF9JTkZPLk9GRlNFVF9OVU1CRVJTLCJjb21waWxlRm9udEluZm86IEJvb2xlYW4gcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtmb3IoY29uc3QgdCBvZiBGT05UX0lORk8ubnVtYmVycyl7Zi5zZXRGbG9hdDY0KGMsZVt0XSk7Yys9OH1hc3NlcnQoYz09PUZPTlRfSU5GTy5PRkZTRVRfQkJPWCwiY29tcGlsZUZvbnRJbmZvOiBOdW1iZXIgcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtpZihlLmJib3gpe2Yuc2V0VWludDgoYysrLDQpO2Zvcihjb25zdCB0IG9mIGUuYmJveCl7Zi5zZXRJbnQxNihjLHQsITApO2MrPTJ9fWVsc2V7Zi5zZXRVaW50OChjKyssMCk7Yys9OH1hc3NlcnQoYz09PUZPTlRfSU5GTy5PRkZTRVRfRk9OVF9NQVRSSVgsImNvbXBpbGVGb250SW5mbzogQkJveCBwcm9wZXJ0aWVzIG9mZnNldCBtaXNtYXRjaCIpO2lmKGUuZm9udE1hdHJpeCl7Zi5zZXRVaW50OChjKyssNik7Zm9yKGNvbnN0IHQgb2YgZS5mb250TWF0cml4KXtmLnNldEZsb2F0NjQoYyx0LCEwKTtjKz04fX1lbHNle2Yuc2V0VWludDgoYysrLDApO2MrPTQ4fWFzc2VydChjPT09Rk9OVF9JTkZPLk9GRlNFVF9ERUZBVUxUX1ZNRVRSSUNTLCJjb21waWxlRm9udEluZm86IEZvbnRNYXRyaXggcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtpZihlLmRlZmF1bHRWTWV0cmljcyl7Zi5zZXRVaW50OChjKyssMyk7Zm9yKGNvbnN0IHQgb2YgZS5kZWZhdWx0Vk1ldHJpY3Mpe2Yuc2V0SW50MTYoYyx0LCEwKTtjKz0yfX1lbHNle2Yuc2V0VWludDgoYysrLDApO2MrPTZ9YXNzZXJ0KGM9PT1GT05UX0lORk8uT0ZGU0VUX1NUUklOR1MsImNvbXBpbGVGb250SW5mbzogRGVmYXVsdFZNZXRyaWNzIHByb3BlcnRpZXMgb2Zmc2V0IG1pc21hdGNoIik7Zi5zZXRVaW50MzIoRk9OVF9JTkZPLk9GRlNFVF9TVFJJTkdTLDApO2MrPTQ7Zm9yKGNvbnN0IGUgb2YgRk9OVF9JTkZPLnN0cmluZ3Mpe2NvbnN0IHQ9c1tlXSxhPXQubGVuZ3RoO2Yuc2V0VWludDMyKGMsYSk7bC5zZXQodCxjKzQpO2MrPTQrYX1mLnNldFVpbnQzMihGT05UX0lORk8uT0ZGU0VUX1NUUklOR1MsYy1GT05UX0lORk8uT0ZGU0VUX1NUUklOR1MtNCk7aWYodCl7Y29uc3QgZT10LmJ5dGVMZW5ndGg7Zi5zZXRVaW50MzIoYyxlKTthc3NlcnQoYys0K2U8PW8uYnl0ZUxlbmd0aCwiY29tcGlsZUZvbnRJbmZvOiBCdWZmZXIgb3ZlcmZsb3cgYXQgc3lzdGVtRm9udEluZm8iKTtsLnNldChuZXcgVWludDhBcnJheSh0KSxjKzQpO2MrPTQrZX1lbHNle2Yuc2V0VWludDMyKGMsMCk7Yys9NH1pZihhKXtjb25zdCBlPWEuYnl0ZUxlbmd0aDtmLnNldFVpbnQzMihjLGUpO2Fzc2VydChjKzQrZTw9by5ieXRlTGVuZ3RoLCJjb21waWxlRm9udEluZm86IEJ1ZmZlciBvdmVyZmxvdyBhdCBjc3NGb250SW5mbyIpO2wuc2V0KG5ldyBVaW50OEFycmF5KGEpLGMrNCk7Yys9NCtlfWVsc2V7Zi5zZXRVaW50MzIoYywwKTtjKz00fWlmKHZvaWQgMD09PWUuZGF0YSl7Zi5zZXRVaW50MzIoYywwKTtjKz00fWVsc2V7Zi5zZXRVaW50MzIoYyxlLmRhdGEubGVuZ3RoKTtsLnNldChlLmRhdGEsYys0KTtjKz00K2UuZGF0YS5sZW5ndGh9YXNzZXJ0KGM8PW8uYnl0ZUxlbmd0aCwiY29tcGlsZUZvbnRJbmZvOiBCdWZmZXIgb3ZlcmZsb3ciKTtyZXR1cm4gby50cmFuc2ZlclRvRml4ZWRMZW5ndGgoYyl9Y29uc3Qgcm49WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSxvbj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLGxuPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIl0sZm49WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsIiIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwiIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwiIiwicXVlc3Rpb25kb3duIiwiIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCIiLCJyaW5nIiwiY2VkaWxsYSIsIiIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiQUUiLCIiLCJvcmRmZW1pbmluZSIsIiIsIiIsIiIsIiIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiIiwiIiwiIiwiIiwiIiwiYWUiLCIiLCIiLCIiLCJkb3RsZXNzaSIsIiIsIiIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIiIsIiIsIiIsIiJdLGNuPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXSxobj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwidW5pdmVyc2FsIiwibnVtYmVyc2lnbiIsImV4aXN0ZW50aWFsIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInN1Y2h0aGF0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrbWF0aCIsInBsdXMiLCJjb21tYSIsIm1pbnVzIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJjb25ncnVlbnQiLCJBbHBoYSIsIkJldGEiLCJDaGkiLCJEZWx0YSIsIkVwc2lsb24iLCJQaGkiLCJHYW1tYSIsIkV0YSIsIklvdGEiLCJ0aGV0YTEiLCJLYXBwYSIsIkxhbWJkYSIsIk11IiwiTnUiLCJPbWljcm9uIiwiUGkiLCJUaGV0YSIsIlJobyIsIlNpZ21hIiwiVGF1IiwiVXBzaWxvbiIsInNpZ21hMSIsIk9tZWdhIiwiWGkiLCJQc2kiLCJaZXRhIiwiYnJhY2tldGxlZnQiLCJ0aGVyZWZvcmUiLCJicmFja2V0cmlnaHQiLCJwZXJwZW5kaWN1bGFyIiwidW5kZXJzY29yZSIsInJhZGljYWxleCIsImFscGhhIiwiYmV0YSIsImNoaSIsImRlbHRhIiwiZXBzaWxvbiIsInBoaSIsImdhbW1hIiwiZXRhIiwiaW90YSIsInBoaTEiLCJrYXBwYSIsImxhbWJkYSIsIm11IiwibnUiLCJvbWljcm9uIiwicGkiLCJ0aGV0YSIsInJobyIsInNpZ21hIiwidGF1IiwidXBzaWxvbiIsIm9tZWdhMSIsIm9tZWdhIiwieGkiLCJwc2kiLCJ6ZXRhIiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsInNpbWlsYXIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJFdXJvIiwiVXBzaWxvbjEiLCJtaW51dGUiLCJsZXNzZXF1YWwiLCJmcmFjdGlvbiIsImluZmluaXR5IiwiZmxvcmluIiwiY2x1YiIsImRpYW1vbmQiLCJoZWFydCIsInNwYWRlIiwiYXJyb3dib3RoIiwiYXJyb3dsZWZ0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJhcnJvd2Rvd24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJzZWNvbmQiLCJncmVhdGVyZXF1YWwiLCJtdWx0aXBseSIsInByb3BvcnRpb25hbCIsInBhcnRpYWxkaWZmIiwiYnVsbGV0IiwiZGl2aWRlIiwibm90ZXF1YWwiLCJlcXVpdmFsZW5jZSIsImFwcHJveGVxdWFsIiwiZWxsaXBzaXMiLCJhcnJvd3ZlcnRleCIsImFycm93aG9yaXpleCIsImNhcnJpYWdlcmV0dXJuIiwiYWxlcGgiLCJJZnJha3R1ciIsIlJmcmFrdHVyIiwid2VpZXJzdHJhc3MiLCJjaXJjbGVtdWx0aXBseSIsImNpcmNsZXBsdXMiLCJlbXB0eXNldCIsImludGVyc2VjdGlvbiIsInVuaW9uIiwicHJvcGVyc3VwZXJzZXQiLCJyZWZsZXhzdXBlcnNldCIsIm5vdHN1YnNldCIsInByb3BlcnN1YnNldCIsInJlZmxleHN1YnNldCIsImVsZW1lbnQiLCJub3RlbGVtZW50IiwiYW5nbGUiLCJncmFkaWVudCIsInJlZ2lzdGVyc2VyaWYiLCJjb3B5cmlnaHRzZXJpZiIsInRyYWRlbWFya3NlcmlmIiwicHJvZHVjdCIsInJhZGljYWwiLCJkb3RtYXRoIiwibG9naWNhbG5vdCIsImxvZ2ljYWxhbmQiLCJsb2dpY2Fsb3IiLCJhcnJvd2RibGJvdGgiLCJhcnJvd2RibGxlZnQiLCJhcnJvd2RibHVwIiwiYXJyb3dkYmxyaWdodCIsImFycm93ZGJsZG93biIsImxvemVuZ2UiLCJhbmdsZWxlZnQiLCJyZWdpc3RlcnNhbnMiLCJjb3B5cmlnaHRzYW5zIiwidHJhZGVtYXJrc2FucyIsInN1bW1hdGlvbiIsInBhcmVubGVmdHRwIiwicGFyZW5sZWZ0ZXgiLCJwYXJlbmxlZnRidCIsImJyYWNrZXRsZWZ0dHAiLCJicmFja2V0bGVmdGV4IiwiYnJhY2tldGxlZnRidCIsImJyYWNlbGVmdHRwIiwiYnJhY2VsZWZ0bWlkIiwiYnJhY2VsZWZ0YnQiLCJicmFjZWV4IiwiIiwiYW5nbGVyaWdodCIsImludGVncmFsIiwiaW50ZWdyYWx0cCIsImludGVncmFsZXgiLCJpbnRlZ3JhbGJ0IiwicGFyZW5yaWdodHRwIiwicGFyZW5yaWdodGV4IiwicGFyZW5yaWdodGJ0IiwiYnJhY2tldHJpZ2h0dHAiLCJicmFja2V0cmlnaHRleCIsImJyYWNrZXRyaWdodGJ0IiwiYnJhY2VyaWdodHRwIiwiYnJhY2VyaWdodG1pZCIsImJyYWNlcmlnaHRidCIsIiJdLHVuPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJhMSIsImEyIiwiYTIwMiIsImEzIiwiYTQiLCJhNSIsImExMTkiLCJhMTE4IiwiYTExNyIsImExMSIsImExMiIsImExMyIsImExNCIsImExNSIsImExNiIsImExMDUiLCJhMTciLCJhMTgiLCJhMTkiLCJhMjAiLCJhMjEiLCJhMjIiLCJhMjMiLCJhMjQiLCJhMjUiLCJhMjYiLCJhMjciLCJhMjgiLCJhNiIsImE3IiwiYTgiLCJhOSIsImExMCIsImEyOSIsImEzMCIsImEzMSIsImEzMiIsImEzMyIsImEzNCIsImEzNSIsImEzNiIsImEzNyIsImEzOCIsImEzOSIsImE0MCIsImE0MSIsImE0MiIsImE0MyIsImE0NCIsImE0NSIsImE0NiIsImE0NyIsImE0OCIsImE0OSIsImE1MCIsImE1MSIsImE1MiIsImE1MyIsImE1NCIsImE1NSIsImE1NiIsImE1NyIsImE1OCIsImE1OSIsImE2MCIsImE2MSIsImE2MiIsImE2MyIsImE2NCIsImE2NSIsImE2NiIsImE2NyIsImE2OCIsImE2OSIsImE3MCIsImE3MSIsImE3MiIsImE3MyIsImE3NCIsImEyMDMiLCJhNzUiLCJhMjA0IiwiYTc2IiwiYTc3IiwiYTc4IiwiYTc5IiwiYTgxIiwiYTgyIiwiYTgzIiwiYTg0IiwiYTk3IiwiYTk4IiwiYTk5IiwiYTEwMCIsIiIsImE4OSIsImE5MCIsImE5MyIsImE5NCIsImE5MSIsImE5MiIsImEyMDUiLCJhODUiLCJhMjA2IiwiYTg2IiwiYTg3IiwiYTg4IiwiYTk1IiwiYTk2IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiYTEwMSIsImExMDIiLCJhMTAzIiwiYTEwNCIsImExMDYiLCJhMTA3IiwiYTEwOCIsImExMTIiLCJhMTExIiwiYTExMCIsImExMDkiLCJhMTIwIiwiYTEyMSIsImExMjIiLCJhMTIzIiwiYTEyNCIsImExMjUiLCJhMTI2IiwiYTEyNyIsImExMjgiLCJhMTI5IiwiYTEzMCIsImExMzEiLCJhMTMyIiwiYTEzMyIsImExMzQiLCJhMTM1IiwiYTEzNiIsImExMzciLCJhMTM4IiwiYTEzOSIsImExNDAiLCJhMTQxIiwiYTE0MiIsImExNDMiLCJhMTQ0IiwiYTE0NSIsImExNDYiLCJhMTQ3IiwiYTE0OCIsImExNDkiLCJhMTUwIiwiYTE1MSIsImExNTIiLCJhMTUzIiwiYTE1NCIsImExNTUiLCJhMTU2IiwiYTE1NyIsImExNTgiLCJhMTU5IiwiYTE2MCIsImExNjEiLCJhMTYzIiwiYTE2NCIsImExOTYiLCJhMTY1IiwiYTE5MiIsImExNjYiLCJhMTY3IiwiYTE2OCIsImExNjkiLCJhMTcwIiwiYTE3MSIsImExNzIiLCJhMTczIiwiYTE2MiIsImExNzQiLCJhMTc1IiwiYTE3NiIsImExNzciLCJhMTc4IiwiYTE3OSIsImExOTMiLCJhMTgwIiwiYTE5OSIsImExODEiLCJhMjAwIiwiYTE4MiIsIiIsImEyMDEiLCJhMTgzIiwiYTE4NCIsImExOTciLCJhMTg1IiwiYTE5NCIsImExOTgiLCJhMTg2IiwiYTE5NSIsImExODciLCJhMTg4IiwiYTE4OSIsImExOTAiLCJhMTkxIiwiIl07ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gY247Y2FzZSJTdGFuZGFyZEVuY29kaW5nIjpyZXR1cm4gZm47Y2FzZSJNYWNSb21hbkVuY29kaW5nIjpyZXR1cm4gbG47Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIGhuO2Nhc2UiWmFwZkRpbmdiYXRzRW5jb2RpbmciOnJldHVybiB1bjtjYXNlIkV4cGVydEVuY29kaW5nIjpyZXR1cm4gcm47Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIG9uO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWNvbnN0IG1uPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkE9NjU7ZS5BRT0xOTg7ZS5BRWFjdXRlPTUwODtlLkFFbWFjcm9uPTQ4MjtlLkFFc21hbGw9NjM0NjI7ZS5BYWN1dGU9MTkzO2UuQWFjdXRlc21hbGw9NjM0NTc7ZS5BYnJldmU9MjU4O2UuQWJyZXZlYWN1dGU9Nzg1NDtlLkFicmV2ZWN5cmlsbGljPTEyMzI7ZS5BYnJldmVkb3RiZWxvdz03ODYyO2UuQWJyZXZlZ3JhdmU9Nzg1NjtlLkFicmV2ZWhvb2thYm92ZT03ODU4O2UuQWJyZXZldGlsZGU9Nzg2MDtlLkFjYXJvbj00NjE7ZS5BY2lyY2xlPTkzOTg7ZS5BY2lyY3VtZmxleD0xOTQ7ZS5BY2lyY3VtZmxleGFjdXRlPTc4NDQ7ZS5BY2lyY3VtZmxleGRvdGJlbG93PTc4NTI7ZS5BY2lyY3VtZmxleGdyYXZlPTc4NDY7ZS5BY2lyY3VtZmxleGhvb2thYm92ZT03ODQ4O2UuQWNpcmN1bWZsZXhzbWFsbD02MzQ1ODtlLkFjaXJjdW1mbGV4dGlsZGU9Nzg1MDtlLkFjdXRlPTYzMTc3O2UuQWN1dGVzbWFsbD02MzQxMjtlLkFjeXJpbGxpYz0xMDQwO2UuQWRibGdyYXZlPTUxMjtlLkFkaWVyZXNpcz0xOTY7ZS5BZGllcmVzaXNjeXJpbGxpYz0xMjM0O2UuQWRpZXJlc2lzbWFjcm9uPTQ3ODtlLkFkaWVyZXNpc3NtYWxsPTYzNDYwO2UuQWRvdGJlbG93PTc4NDA7ZS5BZG90bWFjcm9uPTQ4MDtlLkFncmF2ZT0xOTI7ZS5BZ3JhdmVzbWFsbD02MzQ1NjtlLkFob29rYWJvdmU9Nzg0MjtlLkFpZWN5cmlsbGljPTEyMzY7ZS5BaW52ZXJ0ZWRicmV2ZT01MTQ7ZS5BbHBoYT05MTM7ZS5BbHBoYXRvbm9zPTkwMjtlLkFtYWNyb249MjU2O2UuQW1vbm9zcGFjZT02NTMxMztlLkFvZ29uZWs9MjYwO2UuQXJpbmc9MTk3O2UuQXJpbmdhY3V0ZT01MDY7ZS5BcmluZ2JlbG93PTc2ODA7ZS5BcmluZ3NtYWxsPTYzNDYxO2UuQXNtYWxsPTYzMzI5O2UuQXRpbGRlPTE5NTtlLkF0aWxkZXNtYWxsPTYzNDU5O2UuQXliYXJtZW5pYW49MTMyOTtlLkI9NjY7ZS5CY2lyY2xlPTkzOTk7ZS5CZG90YWNjZW50PTc2ODI7ZS5CZG90YmVsb3c9NzY4NDtlLkJlY3lyaWxsaWM9MTA0MTtlLkJlbmFybWVuaWFuPTEzMzA7ZS5CZXRhPTkxNDtlLkJob29rPTM4NTtlLkJsaW5lYmVsb3c9NzY4NjtlLkJtb25vc3BhY2U9NjUzMTQ7ZS5CcmV2ZXNtYWxsPTYzMjIwO2UuQnNtYWxsPTYzMzMwO2UuQnRvcGJhcj0zODY7ZS5DPTY3O2UuQ2Fhcm1lbmlhbj0xMzQyO2UuQ2FjdXRlPTI2MjtlLkNhcm9uPTYzMTc4O2UuQ2Fyb25zbWFsbD02MzIyMTtlLkNjYXJvbj0yNjg7ZS5DY2VkaWxsYT0xOTk7ZS5DY2VkaWxsYWFjdXRlPTc2ODg7ZS5DY2VkaWxsYXNtYWxsPTYzNDYzO2UuQ2NpcmNsZT05NDAwO2UuQ2NpcmN1bWZsZXg9MjY0O2UuQ2RvdD0yNjY7ZS5DZG90YWNjZW50PTI2NjtlLkNlZGlsbGFzbWFsbD02MzQxNjtlLkNoYWFybWVuaWFuPTEzNTM7ZS5DaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEyO2UuQ2hlY3lyaWxsaWM9MTA2MztlLkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTQ7ZS5DaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA2O2UuQ2hlZGllcmVzaXNjeXJpbGxpYz0xMjY4O2UuQ2hlaGFybWVuaWFuPTEzNDc7ZS5DaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyNztlLkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwODtlLkNoaT05MzU7ZS5DaG9vaz0zOTE7ZS5DaXJjdW1mbGV4c21hbGw9NjMyMjI7ZS5DbW9ub3NwYWNlPTY1MzE1O2UuQ29hcm1lbmlhbj0xMzYxO2UuQ3NtYWxsPTYzMzMxO2UuRD02ODtlLkRaPTQ5NztlLkRaY2Fyb249NDUyO2UuRGFhcm1lbmlhbj0xMzMyO2UuRGFmcmljYW49MzkzO2UuRGNhcm9uPTI3MDtlLkRjZWRpbGxhPTc2OTY7ZS5EY2lyY2xlPTk0MDE7ZS5EY2lyY3VtZmxleGJlbG93PTc2OTg7ZS5EY3JvYXQ9MjcyO2UuRGRvdGFjY2VudD03NjkwO2UuRGRvdGJlbG93PTc2OTI7ZS5EZWN5cmlsbGljPTEwNDQ7ZS5EZWljb3B0aWM9MTAwNjtlLkRlbHRhPTg3MTA7ZS5EZWx0YWdyZWVrPTkxNjtlLkRob29rPTM5NDtlLkRpZXJlc2lzPTYzMTc5O2UuRGllcmVzaXNBY3V0ZT02MzE4MDtlLkRpZXJlc2lzR3JhdmU9NjMxODE7ZS5EaWVyZXNpc3NtYWxsPTYzNDAwO2UuRGlnYW1tYWdyZWVrPTk4ODtlLkRqZWN5cmlsbGljPTEwMjY7ZS5EbGluZWJlbG93PTc2OTQ7ZS5EbW9ub3NwYWNlPTY1MzE2O2UuRG90YWNjZW50c21hbGw9NjMyMjM7ZS5Ec2xhc2g9MjcyO2UuRHNtYWxsPTYzMzMyO2UuRHRvcGJhcj0zOTU7ZS5Eej00OTg7ZS5EemNhcm9uPTQ1MztlLkR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDg7ZS5EemVjeXJpbGxpYz0xMDI5O2UuRHpoZWN5cmlsbGljPTEwMzk7ZS5FPTY5O2UuRWFjdXRlPTIwMTtlLkVhY3V0ZXNtYWxsPTYzNDY1O2UuRWJyZXZlPTI3NjtlLkVjYXJvbj0yODI7ZS5FY2VkaWxsYWJyZXZlPTc3MDg7ZS5FY2hhcm1lbmlhbj0xMzMzO2UuRWNpcmNsZT05NDAyO2UuRWNpcmN1bWZsZXg9MjAyO2UuRWNpcmN1bWZsZXhhY3V0ZT03ODcwO2UuRWNpcmN1bWZsZXhiZWxvdz03NzA0O2UuRWNpcmN1bWZsZXhkb3RiZWxvdz03ODc4O2UuRWNpcmN1bWZsZXhncmF2ZT03ODcyO2UuRWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NDtlLkVjaXJjdW1mbGV4c21hbGw9NjM0NjY7ZS5FY2lyY3VtZmxleHRpbGRlPTc4NzY7ZS5FY3lyaWxsaWM9MTAyODtlLkVkYmxncmF2ZT01MTY7ZS5FZGllcmVzaXM9MjAzO2UuRWRpZXJlc2lzc21hbGw9NjM0Njc7ZS5FZG90PTI3ODtlLkVkb3RhY2NlbnQ9Mjc4O2UuRWRvdGJlbG93PTc4NjQ7ZS5FZmN5cmlsbGljPTEwNjA7ZS5FZ3JhdmU9MjAwO2UuRWdyYXZlc21hbGw9NjM0NjQ7ZS5FaGFybWVuaWFuPTEzMzU7ZS5FaG9va2Fib3ZlPTc4NjY7ZS5FaWdodHJvbWFuPTg1NTE7ZS5FaW52ZXJ0ZWRicmV2ZT01MTg7ZS5FaW90aWZpZWRjeXJpbGxpYz0xMTI0O2UuRWxjeXJpbGxpYz0xMDUxO2UuRWxldmVucm9tYW49ODU1NDtlLkVtYWNyb249Mjc0O2UuRW1hY3JvbmFjdXRlPTc3MDI7ZS5FbWFjcm9uZ3JhdmU9NzcwMDtlLkVtY3lyaWxsaWM9MTA1MjtlLkVtb25vc3BhY2U9NjUzMTc7ZS5FbmN5cmlsbGljPTEwNTM7ZS5FbmRlc2NlbmRlcmN5cmlsbGljPTExODY7ZS5Fbmc9MzMwO2UuRW5naGVjeXJpbGxpYz0xMTg4O2UuRW5ob29rY3lyaWxsaWM9MTIyMztlLkVvZ29uZWs9MjgwO2UuRW9wZW49NDAwO2UuRXBzaWxvbj05MTc7ZS5FcHNpbG9udG9ub3M9OTA0O2UuRXJjeXJpbGxpYz0xMDU2O2UuRXJldmVyc2VkPTM5ODtlLkVyZXZlcnNlZGN5cmlsbGljPTEwNjk7ZS5Fc2N5cmlsbGljPTEwNTc7ZS5Fc2Rlc2NlbmRlcmN5cmlsbGljPTExOTQ7ZS5Fc2g9NDI1O2UuRXNtYWxsPTYzMzMzO2UuRXRhPTkxOTtlLkV0YXJtZW5pYW49MTMzNjtlLkV0YXRvbm9zPTkwNTtlLkV0aD0yMDg7ZS5FdGhzbWFsbD02MzQ3MjtlLkV0aWxkZT03ODY4O2UuRXRpbGRlYmVsb3c9NzcwNjtlLkV1cm89ODM2NDtlLkV6aD00Mzk7ZS5FemhjYXJvbj00OTQ7ZS5FemhyZXZlcnNlZD00NDA7ZS5GPTcwO2UuRmNpcmNsZT05NDAzO2UuRmRvdGFjY2VudD03NzEwO2UuRmVoYXJtZW5pYW49MTM2NjtlLkZlaWNvcHRpYz05OTY7ZS5GaG9vaz00MDE7ZS5GaXRhY3lyaWxsaWM9MTEzODtlLkZpdmVyb21hbj04NTQ4O2UuRm1vbm9zcGFjZT02NTMxODtlLkZvdXJyb21hbj04NTQ3O2UuRnNtYWxsPTYzMzM0O2UuRz03MTtlLkdCc3F1YXJlPTEzMTkxO2UuR2FjdXRlPTUwMDtlLkdhbW1hPTkxNTtlLkdhbW1hYWZyaWNhbj00MDQ7ZS5HYW5naWFjb3B0aWM9MTAwMjtlLkdicmV2ZT0yODY7ZS5HY2Fyb249NDg2O2UuR2NlZGlsbGE9MjkwO2UuR2NpcmNsZT05NDA0O2UuR2NpcmN1bWZsZXg9Mjg0O2UuR2NvbW1hYWNjZW50PTI5MDtlLkdkb3Q9Mjg4O2UuR2RvdGFjY2VudD0yODg7ZS5HZWN5cmlsbGljPTEwNDM7ZS5HaGFkYXJtZW5pYW49MTM0NjtlLkdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTcyO2UuR2hlc3Ryb2tlY3lyaWxsaWM9MTE3MDtlLkdoZXVwdHVybmN5cmlsbGljPTExNjg7ZS5HaG9vaz00MDM7ZS5HaW1hcm1lbmlhbj0xMzMxO2UuR2plY3lyaWxsaWM9MTAyNztlLkdtYWNyb249NzcxMjtlLkdtb25vc3BhY2U9NjUzMTk7ZS5HcmF2ZT02MzE4MjtlLkdyYXZlc21hbGw9NjMzMjg7ZS5Hc21hbGw9NjMzMzU7ZS5Hc21hbGxob29rPTY2NztlLkdzdHJva2U9NDg0O2UuSD03MjtlLkgxODUzMz05Njc5O2UuSDE4NTQzPTk2NDI7ZS5IMTg1NTE9OTY0MztlLkgyMjA3Mz05NjMzO2UuSFBzcXVhcmU9MTMyNTk7ZS5IYWFia2hhc2lhbmN5cmlsbGljPTExOTI7ZS5IYWRlc2NlbmRlcmN5cmlsbGljPTEyMDI7ZS5IYXJkc2lnbmN5cmlsbGljPTEwNjY7ZS5IYmFyPTI5NDtlLkhicmV2ZWJlbG93PTc3MjI7ZS5IY2VkaWxsYT03NzIwO2UuSGNpcmNsZT05NDA1O2UuSGNpcmN1bWZsZXg9MjkyO2UuSGRpZXJlc2lzPTc3MTg7ZS5IZG90YWNjZW50PTc3MTQ7ZS5IZG90YmVsb3c9NzcxNjtlLkhtb25vc3BhY2U9NjUzMjA7ZS5Ib2FybWVuaWFuPTEzNDQ7ZS5Ib3JpY29wdGljPTFlMztlLkhzbWFsbD02MzMzNjtlLkh1bmdhcnVtbGF1dD02MzE4MztlLkh1bmdhcnVtbGF1dHNtYWxsPTYzMjI0O2UuSHpzcXVhcmU9MTMyMDA7ZS5JPTczO2UuSUFjeXJpbGxpYz0xMDcxO2UuSUo9MzA2O2UuSVVjeXJpbGxpYz0xMDcwO2UuSWFjdXRlPTIwNTtlLklhY3V0ZXNtYWxsPTYzNDY5O2UuSWJyZXZlPTMwMDtlLkljYXJvbj00NjM7ZS5JY2lyY2xlPTk0MDY7ZS5JY2lyY3VtZmxleD0yMDY7ZS5JY2lyY3VtZmxleHNtYWxsPTYzNDcwO2UuSWN5cmlsbGljPTEwMzA7ZS5JZGJsZ3JhdmU9NTIwO2UuSWRpZXJlc2lzPTIwNztlLklkaWVyZXNpc2FjdXRlPTc3MjY7ZS5JZGllcmVzaXNjeXJpbGxpYz0xMjUyO2UuSWRpZXJlc2lzc21hbGw9NjM0NzE7ZS5JZG90PTMwNDtlLklkb3RhY2NlbnQ9MzA0O2UuSWRvdGJlbG93PTc4ODI7ZS5JZWJyZXZlY3lyaWxsaWM9MTIzODtlLkllY3lyaWxsaWM9MTA0NTtlLklmcmFrdHVyPTg0NjU7ZS5JZ3JhdmU9MjA0O2UuSWdyYXZlc21hbGw9NjM0Njg7ZS5JaG9va2Fib3ZlPTc4ODA7ZS5JaWN5cmlsbGljPTEwNDg7ZS5JaW52ZXJ0ZWRicmV2ZT01MjI7ZS5JaXNob3J0Y3lyaWxsaWM9MTA0OTtlLkltYWNyb249Mjk4O2UuSW1hY3JvbmN5cmlsbGljPTEyNTA7ZS5JbW9ub3NwYWNlPTY1MzIxO2UuSW5pYXJtZW5pYW49MTMzOTtlLklvY3lyaWxsaWM9MTAyNTtlLklvZ29uZWs9MzAyO2UuSW90YT05MjE7ZS5Jb3RhYWZyaWNhbj00MDY7ZS5Jb3RhZGllcmVzaXM9OTM4O2UuSW90YXRvbm9zPTkwNjtlLklzbWFsbD02MzMzNztlLklzdHJva2U9NDA3O2UuSXRpbGRlPTI5NjtlLkl0aWxkZWJlbG93PTc3MjQ7ZS5JemhpdHNhY3lyaWxsaWM9MTE0MDtlLkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDI7ZS5KPTc0O2UuSmFhcm1lbmlhbj0xMzQ1O2UuSmNpcmNsZT05NDA3O2UuSmNpcmN1bWZsZXg9MzA4O2UuSmVjeXJpbGxpYz0xMDMyO2UuSmhlaGFybWVuaWFuPTEzNTU7ZS5KbW9ub3NwYWNlPTY1MzIyO2UuSnNtYWxsPTYzMzM4O2UuSz03NTtlLktCc3F1YXJlPTEzMTg5O2UuS0tzcXVhcmU9MTMyNjE7ZS5LYWJhc2hraXJjeXJpbGxpYz0xMTg0O2UuS2FjdXRlPTc3Mjg7ZS5LYWN5cmlsbGljPTEwNTA7ZS5LYWRlc2NlbmRlcmN5cmlsbGljPTExNzg7ZS5LYWhvb2tjeXJpbGxpYz0xMjE5O2UuS2FwcGE9OTIyO2UuS2FzdHJva2VjeXJpbGxpYz0xMTgyO2UuS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODA7ZS5LY2Fyb249NDg4O2UuS2NlZGlsbGE9MzEwO2UuS2NpcmNsZT05NDA4O2UuS2NvbW1hYWNjZW50PTMxMDtlLktkb3RiZWxvdz03NzMwO2UuS2VoYXJtZW5pYW49MTM2NDtlLktlbmFybWVuaWFuPTEzNDM7ZS5LaGFjeXJpbGxpYz0xMDYxO2UuS2hlaWNvcHRpYz05OTg7ZS5LaG9vaz00MDg7ZS5LamVjeXJpbGxpYz0xMDM2O2UuS2xpbmViZWxvdz03NzMyO2UuS21vbm9zcGFjZT02NTMyMztlLktvcHBhY3lyaWxsaWM9MTE1MjtlLktvcHBhZ3JlZWs9OTkwO2UuS3NpY3lyaWxsaWM9MTEzNDtlLktzbWFsbD02MzMzOTtlLkw9NzY7ZS5MSj00NTU7ZS5MTD02MzE2NztlLkxhY3V0ZT0zMTM7ZS5MYW1iZGE9OTIzO2UuTGNhcm9uPTMxNztlLkxjZWRpbGxhPTMxNTtlLkxjaXJjbGU9OTQwOTtlLkxjaXJjdW1mbGV4YmVsb3c9Nzc0MDtlLkxjb21tYWFjY2VudD0zMTU7ZS5MZG90PTMxOTtlLkxkb3RhY2NlbnQ9MzE5O2UuTGRvdGJlbG93PTc3MzQ7ZS5MZG90YmVsb3dtYWNyb249NzczNjtlLkxpd25hcm1lbmlhbj0xMzQwO2UuTGo9NDU2O2UuTGplY3lyaWxsaWM9MTAzMztlLkxsaW5lYmVsb3c9NzczODtlLkxtb25vc3BhY2U9NjUzMjQ7ZS5Mc2xhc2g9MzIxO2UuTHNsYXNoc21hbGw9NjMyMjU7ZS5Mc21hbGw9NjMzNDA7ZS5NPTc3O2UuTUJzcXVhcmU9MTMxOTA7ZS5NYWNyb249NjMxODQ7ZS5NYWNyb25zbWFsbD02MzQwNztlLk1hY3V0ZT03NzQyO2UuTWNpcmNsZT05NDEwO2UuTWRvdGFjY2VudD03NzQ0O2UuTWRvdGJlbG93PTc3NDY7ZS5NZW5hcm1lbmlhbj0xMzQ4O2UuTW1vbm9zcGFjZT02NTMyNTtlLk1zbWFsbD02MzM0MTtlLk10dXJuZWQ9NDEyO2UuTXU9OTI0O2UuTj03ODtlLk5KPTQ1ODtlLk5hY3V0ZT0zMjM7ZS5OY2Fyb249MzI3O2UuTmNlZGlsbGE9MzI1O2UuTmNpcmNsZT05NDExO2UuTmNpcmN1bWZsZXhiZWxvdz03NzU0O2UuTmNvbW1hYWNjZW50PTMyNTtlLk5kb3RhY2NlbnQ9Nzc0ODtlLk5kb3RiZWxvdz03NzUwO2UuTmhvb2tsZWZ0PTQxMztlLk5pbmVyb21hbj04NTUyO2UuTmo9NDU5O2UuTmplY3lyaWxsaWM9MTAzNDtlLk5saW5lYmVsb3c9Nzc1MjtlLk5tb25vc3BhY2U9NjUzMjY7ZS5Ob3dhcm1lbmlhbj0xMzUwO2UuTnNtYWxsPTYzMzQyO2UuTnRpbGRlPTIwOTtlLk50aWxkZXNtYWxsPTYzNDczO2UuTnU9OTI1O2UuTz03OTtlLk9FPTMzODtlLk9Fc21hbGw9NjMyMjY7ZS5PYWN1dGU9MjExO2UuT2FjdXRlc21hbGw9NjM0NzU7ZS5PYmFycmVkY3lyaWxsaWM9MTI1NjtlLk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTg7ZS5PYnJldmU9MzM0O2UuT2Nhcm9uPTQ2NTtlLk9jZW50ZXJlZHRpbGRlPTQxNTtlLk9jaXJjbGU9OTQxMjtlLk9jaXJjdW1mbGV4PTIxMjtlLk9jaXJjdW1mbGV4YWN1dGU9Nzg4ODtlLk9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NjtlLk9jaXJjdW1mbGV4Z3JhdmU9Nzg5MDtlLk9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTI7ZS5PY2lyY3VtZmxleHNtYWxsPTYzNDc2O2UuT2NpcmN1bWZsZXh0aWxkZT03ODk0O2UuT2N5cmlsbGljPTEwNTQ7ZS5PZGJsYWN1dGU9MzM2O2UuT2RibGdyYXZlPTUyNDtlLk9kaWVyZXNpcz0yMTQ7ZS5PZGllcmVzaXNjeXJpbGxpYz0xMjU0O2UuT2RpZXJlc2lzc21hbGw9NjM0Nzg7ZS5PZG90YmVsb3c9Nzg4NDtlLk9nb25la3NtYWxsPTYzMjI3O2UuT2dyYXZlPTIxMDtlLk9ncmF2ZXNtYWxsPTYzNDc0O2UuT2hhcm1lbmlhbj0xMzY1O2UuT2htPTg0ODY7ZS5PaG9va2Fib3ZlPTc4ODY7ZS5PaG9ybj00MTY7ZS5PaG9ybmFjdXRlPTc4OTg7ZS5PaG9ybmRvdGJlbG93PTc5MDY7ZS5PaG9ybmdyYXZlPTc5MDA7ZS5PaG9ybmhvb2thYm92ZT03OTAyO2UuT2hvcm50aWxkZT03OTA0O2UuT2h1bmdhcnVtbGF1dD0zMzY7ZS5PaT00MTg7ZS5PaW52ZXJ0ZWRicmV2ZT01MjY7ZS5PbWFjcm9uPTMzMjtlLk9tYWNyb25hY3V0ZT03NzYyO2UuT21hY3JvbmdyYXZlPTc3NjA7ZS5PbWVnYT04NDg2O2UuT21lZ2FjeXJpbGxpYz0xMTIwO2UuT21lZ2FncmVlaz05Mzc7ZS5PbWVnYXJvdW5kY3lyaWxsaWM9MTE0NjtlLk9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ4O2UuT21lZ2F0b25vcz05MTE7ZS5PbWljcm9uPTkyNztlLk9taWNyb250b25vcz05MDg7ZS5PbW9ub3NwYWNlPTY1MzI3O2UuT25lcm9tYW49ODU0NDtlLk9vZ29uZWs9NDkwO2UuT29nb25la21hY3Jvbj00OTI7ZS5Pb3Blbj0zOTA7ZS5Pc2xhc2g9MjE2O2UuT3NsYXNoYWN1dGU9NTEwO2UuT3NsYXNoc21hbGw9NjM0ODA7ZS5Pc21hbGw9NjMzNDM7ZS5Pc3Ryb2tlYWN1dGU9NTEwO2UuT3RjeXJpbGxpYz0xMTUwO2UuT3RpbGRlPTIxMztlLk90aWxkZWFjdXRlPTc3NTY7ZS5PdGlsZGVkaWVyZXNpcz03NzU4O2UuT3RpbGRlc21hbGw9NjM0Nzc7ZS5QPTgwO2UuUGFjdXRlPTc3NjQ7ZS5QY2lyY2xlPTk0MTM7ZS5QZG90YWNjZW50PTc3NjY7ZS5QZWN5cmlsbGljPTEwNTU7ZS5QZWhhcm1lbmlhbj0xMzU0O2UuUGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MDtlLlBoaT05MzQ7ZS5QaG9vaz00MjA7ZS5QaT05Mjg7ZS5QaXdyYXJtZW5pYW49MTM2MztlLlBtb25vc3BhY2U9NjUzMjg7ZS5Qc2k9OTM2O2UuUHNpY3lyaWxsaWM9MTEzNjtlLlBzbWFsbD02MzM0NDtlLlE9ODE7ZS5RY2lyY2xlPTk0MTQ7ZS5RbW9ub3NwYWNlPTY1MzI5O2UuUXNtYWxsPTYzMzQ1O2UuUj04MjtlLlJhYXJtZW5pYW49MTM1NjtlLlJhY3V0ZT0zNDA7ZS5SY2Fyb249MzQ0O2UuUmNlZGlsbGE9MzQyO2UuUmNpcmNsZT05NDE1O2UuUmNvbW1hYWNjZW50PTM0MjtlLlJkYmxncmF2ZT01Mjg7ZS5SZG90YWNjZW50PTc3Njg7ZS5SZG90YmVsb3c9Nzc3MDtlLlJkb3RiZWxvd21hY3Jvbj03NzcyO2UuUmVoYXJtZW5pYW49MTM2MDtlLlJmcmFrdHVyPTg0NzY7ZS5SaG89OTI5O2UuUmluZ3NtYWxsPTYzMjI4O2UuUmludmVydGVkYnJldmU9NTMwO2UuUmxpbmViZWxvdz03Nzc0O2UuUm1vbm9zcGFjZT02NTMzMDtlLlJzbWFsbD02MzM0NjtlLlJzbWFsbGludmVydGVkPTY0MTtlLlJzbWFsbGludmVydGVkc3VwZXJpb3I9Njk0O2UuUz04MztlLlNGMDEwMDAwPTk0ODQ7ZS5TRjAyMDAwMD05NDkyO2UuU0YwMzAwMDA9OTQ4ODtlLlNGMDQwMDAwPTk0OTY7ZS5TRjA1MDAwMD05NTMyO2UuU0YwNjAwMDA9OTUxNjtlLlNGMDcwMDAwPTk1MjQ7ZS5TRjA4MDAwMD05NTAwO2UuU0YwOTAwMDA9OTUwODtlLlNGMTAwMDAwPTk0NzI7ZS5TRjExMDAwMD05NDc0O2UuU0YxOTAwMDA9OTU2OTtlLlNGMjAwMDAwPTk1NzA7ZS5TRjIxMDAwMD05NTU4O2UuU0YyMjAwMDA9OTU1NztlLlNGMjMwMDAwPTk1NzE7ZS5TRjI0MDAwMD05NTUzO2UuU0YyNTAwMDA9OTU1OTtlLlNGMjYwMDAwPTk1NjU7ZS5TRjI3MDAwMD05NTY0O2UuU0YyODAwMDA9OTU2MztlLlNGMzYwMDAwPTk1NjY7ZS5TRjM3MDAwMD05NTY3O2UuU0YzODAwMDA9OTU2MjtlLlNGMzkwMDAwPTk1NTY7ZS5TRjQwMDAwMD05NTc3O2UuU0Y0MTAwMDA9OTU3NDtlLlNGNDIwMDAwPTk1Njg7ZS5TRjQzMDAwMD05NTUyO2UuU0Y0NDAwMDA9OTU4MDtlLlNGNDUwMDAwPTk1NzU7ZS5TRjQ2MDAwMD05NTc2O2UuU0Y0NzAwMDA9OTU3MjtlLlNGNDgwMDAwPTk1NzM7ZS5TRjQ5MDAwMD05NTYxO2UuU0Y1MDAwMDA9OTU2MDtlLlNGNTEwMDAwPTk1NTQ7ZS5TRjUyMDAwMD05NTU1O2UuU0Y1MzAwMDA9OTU3OTtlLlNGNTQwMDAwPTk1Nzg7ZS5TYWN1dGU9MzQ2O2UuU2FjdXRlZG90YWNjZW50PTc3ODA7ZS5TYW1waWdyZWVrPTk5MjtlLlNjYXJvbj0zNTI7ZS5TY2Fyb25kb3RhY2NlbnQ9Nzc4MjtlLlNjYXJvbnNtYWxsPTYzMjI5O2UuU2NlZGlsbGE9MzUwO2UuU2Nod2E9Mzk5O2UuU2Nod2FjeXJpbGxpYz0xMjQwO2UuU2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDI7ZS5TY2lyY2xlPTk0MTY7ZS5TY2lyY3VtZmxleD0zNDg7ZS5TY29tbWFhY2NlbnQ9NTM2O2UuU2RvdGFjY2VudD03Nzc2O2UuU2RvdGJlbG93PTc3Nzg7ZS5TZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NDtlLlNlaGFybWVuaWFuPTEzNTc7ZS5TZXZlbnJvbWFuPTg1NTA7ZS5TaGFhcm1lbmlhbj0xMzUxO2UuU2hhY3lyaWxsaWM9MTA2NDtlLlNoY2hhY3lyaWxsaWM9MTA2NTtlLlNoZWljb3B0aWM9OTk0O2UuU2hoYWN5cmlsbGljPTEyMTA7ZS5TaGltYWNvcHRpYz0xMDA0O2UuU2lnbWE9OTMxO2UuU2l4cm9tYW49ODU0OTtlLlNtb25vc3BhY2U9NjUzMzE7ZS5Tb2Z0c2lnbmN5cmlsbGljPTEwNjg7ZS5Tc21hbGw9NjMzNDc7ZS5TdGlnbWFncmVlaz05ODY7ZS5UPTg0O2UuVGF1PTkzMjtlLlRiYXI9MzU4O2UuVGNhcm9uPTM1NjtlLlRjZWRpbGxhPTM1NDtlLlRjaXJjbGU9OTQxNztlLlRjaXJjdW1mbGV4YmVsb3c9Nzc5MjtlLlRjb21tYWFjY2VudD0zNTQ7ZS5UZG90YWNjZW50PTc3ODY7ZS5UZG90YmVsb3c9Nzc4ODtlLlRlY3lyaWxsaWM9MTA1ODtlLlRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NjtlLlRlbnJvbWFuPTg1NTM7ZS5UZXRzZWN5cmlsbGljPTEyMDQ7ZS5UaGV0YT05MjA7ZS5UaG9vaz00Mjg7ZS5UaG9ybj0yMjI7ZS5UaG9ybnNtYWxsPTYzNDg2O2UuVGhyZWVyb21hbj04NTQ2O2UuVGlsZGVzbWFsbD02MzIzMDtlLlRpd25hcm1lbmlhbj0xMzU5O2UuVGxpbmViZWxvdz03NzkwO2UuVG1vbm9zcGFjZT02NTMzMjtlLlRvYXJtZW5pYW49MTMzNztlLlRvbmVmaXZlPTQ0NDtlLlRvbmVzaXg9Mzg4O2UuVG9uZXR3bz00MjM7ZS5UcmV0cm9mbGV4aG9vaz00MzA7ZS5Uc2VjeXJpbGxpYz0xMDYyO2UuVHNoZWN5cmlsbGljPTEwMzU7ZS5Uc21hbGw9NjMzNDg7ZS5Ud2VsdmVyb21hbj04NTU1O2UuVHdvcm9tYW49ODU0NTtlLlU9ODU7ZS5VYWN1dGU9MjE4O2UuVWFjdXRlc21hbGw9NjM0ODI7ZS5VYnJldmU9MzY0O2UuVWNhcm9uPTQ2NztlLlVjaXJjbGU9OTQxODtlLlVjaXJjdW1mbGV4PTIxOTtlLlVjaXJjdW1mbGV4YmVsb3c9Nzc5ODtlLlVjaXJjdW1mbGV4c21hbGw9NjM0ODM7ZS5VY3lyaWxsaWM9MTA1OTtlLlVkYmxhY3V0ZT0zNjg7ZS5VZGJsZ3JhdmU9NTMyO2UuVWRpZXJlc2lzPTIyMDtlLlVkaWVyZXNpc2FjdXRlPTQ3MTtlLlVkaWVyZXNpc2JlbG93PTc3OTQ7ZS5VZGllcmVzaXNjYXJvbj00NzM7ZS5VZGllcmVzaXNjeXJpbGxpYz0xMjY0O2UuVWRpZXJlc2lzZ3JhdmU9NDc1O2UuVWRpZXJlc2lzbWFjcm9uPTQ2OTtlLlVkaWVyZXNpc3NtYWxsPTYzNDg0O2UuVWRvdGJlbG93PTc5MDg7ZS5VZ3JhdmU9MjE3O2UuVWdyYXZlc21hbGw9NjM0ODE7ZS5VaG9va2Fib3ZlPTc5MTA7ZS5VaG9ybj00MzE7ZS5VaG9ybmFjdXRlPTc5MTI7ZS5VaG9ybmRvdGJlbG93PTc5MjA7ZS5VaG9ybmdyYXZlPTc5MTQ7ZS5VaG9ybmhvb2thYm92ZT03OTE2O2UuVWhvcm50aWxkZT03OTE4O2UuVWh1bmdhcnVtbGF1dD0zNjg7ZS5VaHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NjtlLlVpbnZlcnRlZGJyZXZlPTUzNDtlLlVrY3lyaWxsaWM9MTE0NDtlLlVtYWNyb249MzYyO2UuVW1hY3JvbmN5cmlsbGljPTEyNjI7ZS5VbWFjcm9uZGllcmVzaXM9NzgwMjtlLlVtb25vc3BhY2U9NjUzMzM7ZS5Vb2dvbmVrPTM3MDtlLlVwc2lsb249OTMzO2UuVXBzaWxvbjE9OTc4O2UuVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrPTk3OTtlLlVwc2lsb25hZnJpY2FuPTQzMztlLlVwc2lsb25kaWVyZXNpcz05Mzk7ZS5VcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWs9OTgwO2UuVXBzaWxvbmhvb2tzeW1ib2w9OTc4O2UuVXBzaWxvbnRvbm9zPTkxMDtlLlVyaW5nPTM2NjtlLlVzaG9ydGN5cmlsbGljPTEwMzg7ZS5Vc21hbGw9NjMzNDk7ZS5Vc3RyYWlnaHRjeXJpbGxpYz0xMTk4O2UuVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMDtlLlV0aWxkZT0zNjA7ZS5VdGlsZGVhY3V0ZT03ODAwO2UuVXRpbGRlYmVsb3c9Nzc5NjtlLlY9ODY7ZS5WY2lyY2xlPTk0MTk7ZS5WZG90YmVsb3c9NzgwNjtlLlZlY3lyaWxsaWM9MTA0MjtlLlZld2FybWVuaWFuPTEzNTg7ZS5WaG9vaz00MzQ7ZS5WbW9ub3NwYWNlPTY1MzM0O2UuVm9hcm1lbmlhbj0xMzUyO2UuVnNtYWxsPTYzMzUwO2UuVnRpbGRlPTc4MDQ7ZS5XPTg3O2UuV2FjdXRlPTc4MTA7ZS5XY2lyY2xlPTk0MjA7ZS5XY2lyY3VtZmxleD0zNzI7ZS5XZGllcmVzaXM9NzgxMjtlLldkb3RhY2NlbnQ9NzgxNDtlLldkb3RiZWxvdz03ODE2O2UuV2dyYXZlPTc4MDg7ZS5XbW9ub3NwYWNlPTY1MzM1O2UuV3NtYWxsPTYzMzUxO2UuWD04ODtlLlhjaXJjbGU9OTQyMTtlLlhkaWVyZXNpcz03ODIwO2UuWGRvdGFjY2VudD03ODE4O2UuWGVoYXJtZW5pYW49MTM0MTtlLlhpPTkyNjtlLlhtb25vc3BhY2U9NjUzMzY7ZS5Yc21hbGw9NjMzNTI7ZS5ZPTg5O2UuWWFjdXRlPTIyMTtlLllhY3V0ZXNtYWxsPTYzNDg1O2UuWWF0Y3lyaWxsaWM9MTEyMjtlLlljaXJjbGU9OTQyMjtlLlljaXJjdW1mbGV4PTM3NDtlLllkaWVyZXNpcz0zNzY7ZS5ZZGllcmVzaXNzbWFsbD02MzQ4NztlLllkb3RhY2NlbnQ9NzgyMjtlLllkb3RiZWxvdz03OTI0O2UuWWVyaWN5cmlsbGljPTEwNjc7ZS5ZZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjcyO2UuWWdyYXZlPTc5MjI7ZS5ZaG9vaz00MzU7ZS5ZaG9va2Fib3ZlPTc5MjY7ZS5ZaWFybWVuaWFuPTEzNDk7ZS5ZaWN5cmlsbGljPTEwMzE7ZS5ZaXduYXJtZW5pYW49MTM2MjtlLlltb25vc3BhY2U9NjUzMzc7ZS5Zc21hbGw9NjMzNTM7ZS5ZdGlsZGU9NzkyODtlLll1c2JpZ2N5cmlsbGljPTExMzA7ZS5ZdXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzI7ZS5ZdXNsaXR0bGVjeXJpbGxpYz0xMTI2O2UuWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI4O2UuWj05MDtlLlphYXJtZW5pYW49MTMzNDtlLlphY3V0ZT0zNzc7ZS5aY2Fyb249MzgxO2UuWmNhcm9uc21hbGw9NjMyMzE7ZS5aY2lyY2xlPTk0MjM7ZS5aY2lyY3VtZmxleD03ODI0O2UuWmRvdD0zNzk7ZS5aZG90YWNjZW50PTM3OTtlLlpkb3RiZWxvdz03ODI2O2UuWmVjeXJpbGxpYz0xMDQ3O2UuWmVkZXNjZW5kZXJjeXJpbGxpYz0xMTc2O2UuWmVkaWVyZXNpc2N5cmlsbGljPTEyNDY7ZS5aZXRhPTkxODtlLlpoZWFybWVuaWFuPTEzMzg7ZS5aaGVicmV2ZWN5cmlsbGljPTEyMTc7ZS5aaGVjeXJpbGxpYz0xMDQ2O2UuWmhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NDtlLlpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NDtlLlpsaW5lYmVsb3c9NzgyODtlLlptb25vc3BhY2U9NjUzMzg7ZS5ac21hbGw9NjMzNTQ7ZS5ac3Ryb2tlPTQzNztlLmE9OTc7ZS5hYWJlbmdhbGk9MjQzODtlLmFhY3V0ZT0yMjU7ZS5hYWRldmE9MjMxMDtlLmFhZ3VqYXJhdGk9MjY5NDtlLmFhZ3VybXVraGk9MjU2NjtlLmFhbWF0cmFndXJtdWtoaT0yNjIyO2UuYWFydXNxdWFyZT0xMzA1OTtlLmFhdm93ZWxzaWduYmVuZ2FsaT0yNDk0O2UuYWF2b3dlbHNpZ25kZXZhPTIzNjY7ZS5hYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTA7ZS5hYmJyZXZpYXRpb25tYXJrYXJtZW5pYW49MTM3NTtlLmFiYnJldmlhdGlvbnNpZ25kZXZhPTI0MTY7ZS5hYmVuZ2FsaT0yNDM3O2UuYWJvcG9tb2ZvPTEyNTcwO2UuYWJyZXZlPTI1OTtlLmFicmV2ZWFjdXRlPTc4NTU7ZS5hYnJldmVjeXJpbGxpYz0xMjMzO2UuYWJyZXZlZG90YmVsb3c9Nzg2MztlLmFicmV2ZWdyYXZlPTc4NTc7ZS5hYnJldmVob29rYWJvdmU9Nzg1OTtlLmFicmV2ZXRpbGRlPTc4NjE7ZS5hY2Fyb249NDYyO2UuYWNpcmNsZT05NDI0O2UuYWNpcmN1bWZsZXg9MjI2O2UuYWNpcmN1bWZsZXhhY3V0ZT03ODQ1O2UuYWNpcmN1bWZsZXhkb3RiZWxvdz03ODUzO2UuYWNpcmN1bWZsZXhncmF2ZT03ODQ3O2UuYWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0OTtlLmFjaXJjdW1mbGV4dGlsZGU9Nzg1MTtlLmFjdXRlPTE4MDtlLmFjdXRlYmVsb3djbWI9NzkxO2UuYWN1dGVjbWI9NzY5O2UuYWN1dGVjb21iPTc2OTtlLmFjdXRlZGV2YT0yMzg4O2UuYWN1dGVsb3dtb2Q9NzE5O2UuYWN1dGV0b25lY21iPTgzMztlLmFjeXJpbGxpYz0xMDcyO2UuYWRibGdyYXZlPTUxMztlLmFkZGFrZ3VybXVraGk9MjY3MztlLmFkZXZhPTIzMDk7ZS5hZGllcmVzaXM9MjI4O2UuYWRpZXJlc2lzY3lyaWxsaWM9MTIzNTtlLmFkaWVyZXNpc21hY3Jvbj00Nzk7ZS5hZG90YmVsb3c9Nzg0MTtlLmFkb3RtYWNyb249NDgxO2UuYWU9MjMwO2UuYWVhY3V0ZT01MDk7ZS5hZWtvcmVhbj0xMjYyNDtlLmFlbWFjcm9uPTQ4MztlLmFmaWkwMDIwOD04MjEzO2UuYWZpaTA4OTQxPTgzNTY7ZS5hZmlpMTAwMTc9MTA0MDtlLmFmaWkxMDAxOD0xMDQxO2UuYWZpaTEwMDE5PTEwNDI7ZS5hZmlpMTAwMjA9MTA0MztlLmFmaWkxMDAyMT0xMDQ0O2UuYWZpaTEwMDIyPTEwNDU7ZS5hZmlpMTAwMjM9MTAyNTtlLmFmaWkxMDAyND0xMDQ2O2UuYWZpaTEwMDI1PTEwNDc7ZS5hZmlpMTAwMjY9MTA0ODtlLmFmaWkxMDAyNz0xMDQ5O2UuYWZpaTEwMDI4PTEwNTA7ZS5hZmlpMTAwMjk9MTA1MTtlLmFmaWkxMDAzMD0xMDUyO2UuYWZpaTEwMDMxPTEwNTM7ZS5hZmlpMTAwMzI9MTA1NDtlLmFmaWkxMDAzMz0xMDU1O2UuYWZpaTEwMDM0PTEwNTY7ZS5hZmlpMTAwMzU9MTA1NztlLmFmaWkxMDAzNj0xMDU4O2UuYWZpaTEwMDM3PTEwNTk7ZS5hZmlpMTAwMzg9MTA2MDtlLmFmaWkxMDAzOT0xMDYxO2UuYWZpaTEwMDQwPTEwNjI7ZS5hZmlpMTAwNDE9MTA2MztlLmFmaWkxMDA0Mj0xMDY0O2UuYWZpaTEwMDQzPTEwNjU7ZS5hZmlpMTAwNDQ9MTA2NjtlLmFmaWkxMDA0NT0xMDY3O2UuYWZpaTEwMDQ2PTEwNjg7ZS5hZmlpMTAwNDc9MTA2OTtlLmFmaWkxMDA0OD0xMDcwO2UuYWZpaTEwMDQ5PTEwNzE7ZS5hZmlpMTAwNTA9MTE2ODtlLmFmaWkxMDA1MT0xMDI2O2UuYWZpaTEwMDUyPTEwMjc7ZS5hZmlpMTAwNTM9MTAyODtlLmFmaWkxMDA1ND0xMDI5O2UuYWZpaTEwMDU1PTEwMzA7ZS5hZmlpMTAwNTY9MTAzMTtlLmFmaWkxMDA1Nz0xMDMyO2UuYWZpaTEwMDU4PTEwMzM7ZS5hZmlpMTAwNTk9MTAzNDtlLmFmaWkxMDA2MD0xMDM1O2UuYWZpaTEwMDYxPTEwMzY7ZS5hZmlpMTAwNjI9MTAzODtlLmFmaWkxMDA2Mz02MzE3MjtlLmFmaWkxMDA2ND02MzE3MztlLmFmaWkxMDA2NT0xMDcyO2UuYWZpaTEwMDY2PTEwNzM7ZS5hZmlpMTAwNjc9MTA3NDtlLmFmaWkxMDA2OD0xMDc1O2UuYWZpaTEwMDY5PTEwNzY7ZS5hZmlpMTAwNzA9MTA3NztlLmFmaWkxMDA3MT0xMTA1O2UuYWZpaTEwMDcyPTEwNzg7ZS5hZmlpMTAwNzM9MTA3OTtlLmFmaWkxMDA3ND0xMDgwO2UuYWZpaTEwMDc1PTEwODE7ZS5hZmlpMTAwNzY9MTA4MjtlLmFmaWkxMDA3Nz0xMDgzO2UuYWZpaTEwMDc4PTEwODQ7ZS5hZmlpMTAwNzk9MTA4NTtlLmFmaWkxMDA4MD0xMDg2O2UuYWZpaTEwMDgxPTEwODc7ZS5hZmlpMTAwODI9MTA4ODtlLmFmaWkxMDA4Mz0xMDg5O2UuYWZpaTEwMDg0PTEwOTA7ZS5hZmlpMTAwODU9MTA5MTtlLmFmaWkxMDA4Nj0xMDkyO2UuYWZpaTEwMDg3PTEwOTM7ZS5hZmlpMTAwODg9MTA5NDtlLmFmaWkxMDA4OT0xMDk1O2UuYWZpaTEwMDkwPTEwOTY7ZS5hZmlpMTAwOTE9MTA5NztlLmFmaWkxMDA5Mj0xMDk4O2UuYWZpaTEwMDkzPTEwOTk7ZS5hZmlpMTAwOTQ9MTEwMDtlLmFmaWkxMDA5NT0xMTAxO2UuYWZpaTEwMDk2PTExMDI7ZS5hZmlpMTAwOTc9MTEwMztlLmFmaWkxMDA5OD0xMTY5O2UuYWZpaTEwMDk5PTExMDY7ZS5hZmlpMTAxMDA9MTEwNztlLmFmaWkxMDEwMT0xMTA4O2UuYWZpaTEwMTAyPTExMDk7ZS5hZmlpMTAxMDM9MTExMDtlLmFmaWkxMDEwND0xMTExO2UuYWZpaTEwMTA1PTExMTI7ZS5hZmlpMTAxMDY9MTExMztlLmFmaWkxMDEwNz0xMTE0O2UuYWZpaTEwMTA4PTExMTU7ZS5hZmlpMTAxMDk9MTExNjtlLmFmaWkxMDExMD0xMTE4O2UuYWZpaTEwMTQ1PTEwMzk7ZS5hZmlpMTAxNDY9MTEyMjtlLmFmaWkxMDE0Nz0xMTM4O2UuYWZpaTEwMTQ4PTExNDA7ZS5hZmlpMTAxOTI9NjMxNzQ7ZS5hZmlpMTAxOTM9MTExOTtlLmFmaWkxMDE5ND0xMTIzO2UuYWZpaTEwMTk1PTExMzk7ZS5hZmlpMTAxOTY9MTE0MTtlLmFmaWkxMDgzMT02MzE3NTtlLmFmaWkxMDgzMj02MzE3NjtlLmFmaWkxMDg0Nj0xMjQxO2UuYWZpaTI5OT04MjA2O2UuYWZpaTMwMD04MjA3O2UuYWZpaTMwMT04MjA1O2UuYWZpaTU3MzgxPTE2NDI7ZS5hZmlpNTczODg9MTU0ODtlLmFmaWk1NzM5Mj0xNjMyO2UuYWZpaTU3MzkzPTE2MzM7ZS5hZmlpNTczOTQ9MTYzNDtlLmFmaWk1NzM5NT0xNjM1O2UuYWZpaTU3Mzk2PTE2MzY7ZS5hZmlpNTczOTc9MTYzNztlLmFmaWk1NzM5OD0xNjM4O2UuYWZpaTU3Mzk5PTE2Mzk7ZS5hZmlpNTc0MDA9MTY0MDtlLmFmaWk1NzQwMT0xNjQxO2UuYWZpaTU3NDAzPTE1NjM7ZS5hZmlpNTc0MDc9MTU2NztlLmFmaWk1NzQwOT0xNTY5O2UuYWZpaTU3NDEwPTE1NzA7ZS5hZmlpNTc0MTE9MTU3MTtlLmFmaWk1NzQxMj0xNTcyO2UuYWZpaTU3NDEzPTE1NzM7ZS5hZmlpNTc0MTQ9MTU3NDtlLmFmaWk1NzQxNT0xNTc1O2UuYWZpaTU3NDE2PTE1NzY7ZS5hZmlpNTc0MTc9MTU3NztlLmFmaWk1NzQxOD0xNTc4O2UuYWZpaTU3NDE5PTE1Nzk7ZS5hZmlpNTc0MjA9MTU4MDtlLmFmaWk1NzQyMT0xNTgxO2UuYWZpaTU3NDIyPTE1ODI7ZS5hZmlpNTc0MjM9MTU4MztlLmFmaWk1NzQyND0xNTg0O2UuYWZpaTU3NDI1PTE1ODU7ZS5hZmlpNTc0MjY9MTU4NjtlLmFmaWk1NzQyNz0xNTg3O2UuYWZpaTU3NDI4PTE1ODg7ZS5hZmlpNTc0Mjk9MTU4OTtlLmFmaWk1NzQzMD0xNTkwO2UuYWZpaTU3NDMxPTE1OTE7ZS5hZmlpNTc0MzI9MTU5MjtlLmFmaWk1NzQzMz0xNTkzO2UuYWZpaTU3NDM0PTE1OTQ7ZS5hZmlpNTc0NDA9MTYwMDtlLmFmaWk1NzQ0MT0xNjAxO2UuYWZpaTU3NDQyPTE2MDI7ZS5hZmlpNTc0NDM9MTYwMztlLmFmaWk1NzQ0ND0xNjA0O2UuYWZpaTU3NDQ1PTE2MDU7ZS5hZmlpNTc0NDY9MTYwNjtlLmFmaWk1NzQ0OD0xNjA4O2UuYWZpaTU3NDQ5PTE2MDk7ZS5hZmlpNTc0NTA9MTYxMDtlLmFmaWk1NzQ1MT0xNjExO2UuYWZpaTU3NDUyPTE2MTI7ZS5hZmlpNTc0NTM9MTYxMztlLmFmaWk1NzQ1ND0xNjE0O2UuYWZpaTU3NDU1PTE2MTU7ZS5hZmlpNTc0NTY9MTYxNjtlLmFmaWk1NzQ1Nz0xNjE3O2UuYWZpaTU3NDU4PTE2MTg7ZS5hZmlpNTc0NzA9MTYwNztlLmFmaWk1NzUwNT0xNzAwO2UuYWZpaTU3NTA2PTE2NjI7ZS5hZmlpNTc1MDc9MTY3MDtlLmFmaWk1NzUwOD0xNjg4O2UuYWZpaTU3NTA5PTE3MTE7ZS5hZmlpNTc1MTE9MTY1NztlLmFmaWk1NzUxMj0xNjcyO2UuYWZpaTU3NTEzPTE2ODE7ZS5hZmlpNTc1MTQ9MTcyMjtlLmFmaWk1NzUxOT0xNzQ2O2UuYWZpaTU3NTM0PTE3NDk7ZS5hZmlpNTc2MzY9ODM2MjtlLmFmaWk1NzY0NT0xNDcwO2UuYWZpaTU3NjU4PTE0NzU7ZS5hZmlpNTc2NjQ9MTQ4ODtlLmFmaWk1NzY2NT0xNDg5O2UuYWZpaTU3NjY2PTE0OTA7ZS5hZmlpNTc2Njc9MTQ5MTtlLmFmaWk1NzY2OD0xNDkyO2UuYWZpaTU3NjY5PTE0OTM7ZS5hZmlpNTc2NzA9MTQ5NDtlLmFmaWk1NzY3MT0xNDk1O2UuYWZpaTU3NjcyPTE0OTY7ZS5hZmlpNTc2NzM9MTQ5NztlLmFmaWk1NzY3ND0xNDk4O2UuYWZpaTU3Njc1PTE0OTk7ZS5hZmlpNTc2NzY9MTUwMDtlLmFmaWk1NzY3Nz0xNTAxO2UuYWZpaTU3Njc4PTE1MDI7ZS5hZmlpNTc2Nzk9MTUwMztlLmFmaWk1NzY4MD0xNTA0O2UuYWZpaTU3NjgxPTE1MDU7ZS5hZmlpNTc2ODI9MTUwNjtlLmFmaWk1NzY4Mz0xNTA3O2UuYWZpaTU3Njg0PTE1MDg7ZS5hZmlpNTc2ODU9MTUwOTtlLmFmaWk1NzY4Nj0xNTEwO2UuYWZpaTU3Njg3PTE1MTE7ZS5hZmlpNTc2ODg9MTUxMjtlLmFmaWk1NzY4OT0xNTEzO2UuYWZpaTU3NjkwPTE1MTQ7ZS5hZmlpNTc2OTQ9NjQyOTg7ZS5hZmlpNTc2OTU9NjQyOTk7ZS5hZmlpNTc3MDA9NjQzMzE7ZS5hZmlpNTc3MDU9NjQyODc7ZS5hZmlpNTc3MTY9MTUyMDtlLmFmaWk1NzcxNz0xNTIxO2UuYWZpaTU3NzE4PTE1MjI7ZS5hZmlpNTc3MjM9NjQzMDk7ZS5hZmlpNTc3OTM9MTQ2MDtlLmFmaWk1Nzc5ND0xNDYxO2UuYWZpaTU3Nzk1PTE0NjI7ZS5hZmlpNTc3OTY9MTQ2NztlLmFmaWk1Nzc5Nz0xNDY0O2UuYWZpaTU3Nzk4PTE0NjM7ZS5hZmlpNTc3OTk9MTQ1NjtlLmFmaWk1NzgwMD0xNDU4O2UuYWZpaTU3ODAxPTE0NTc7ZS5hZmlpNTc4MDI9MTQ1OTtlLmFmaWk1NzgwMz0xNDc0O2UuYWZpaTU3ODA0PTE0NzM7ZS5hZmlpNTc4MDY9MTQ2NTtlLmFmaWk1NzgwNz0xNDY4O2UuYWZpaTU3ODM5PTE0Njk7ZS5hZmlpNTc4NDE9MTQ3MTtlLmFmaWk1Nzg0Mj0xNDcyO2UuYWZpaTU3OTI5PTcwMDtlLmFmaWk2MTI0OD04NDUzO2UuYWZpaTYxMjg5PTg0Njc7ZS5hZmlpNjEzNTI9ODQ3MDtlLmFmaWk2MTU3Mz04MjM2O2UuYWZpaTYxNTc0PTgyMzc7ZS5hZmlpNjE1NzU9ODIzODtlLmFmaWk2MTY2ND04MjA0O2UuYWZpaTYzMTY3PTE2NDU7ZS5hZmlpNjQ5Mzc9NzAxO2UuYWdyYXZlPTIyNDtlLmFndWphcmF0aT0yNjkzO2UuYWd1cm11a2hpPTI1NjU7ZS5haGlyYWdhbmE9MTIzNTQ7ZS5haG9va2Fib3ZlPTc4NDM7ZS5haWJlbmdhbGk9MjQ0ODtlLmFpYm9wb21vZm89MTI1NzQ7ZS5haWRldmE9MjMyMDtlLmFpZWN5cmlsbGljPTEyMzc7ZS5haWd1amFyYXRpPTI3MDQ7ZS5haWd1cm11a2hpPTI1NzY7ZS5haW1hdHJhZ3VybXVraGk9MjYzMjtlLmFpbmFyYWJpYz0xNTkzO2UuYWluZmluYWxhcmFiaWM9NjUyMjY7ZS5haW5pbml0aWFsYXJhYmljPTY1MjI3O2UuYWlubWVkaWFsYXJhYmljPTY1MjI4O2UuYWludmVydGVkYnJldmU9NTE1O2UuYWl2b3dlbHNpZ25iZW5nYWxpPTI1MDQ7ZS5haXZvd2Vsc2lnbmRldmE9MjM3NjtlLmFpdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MDtlLmFrYXRha2FuYT0xMjQ1MDtlLmFrYXRha2FuYWhhbGZ3aWR0aD02NTM5MztlLmFrb3JlYW49MTI2MjM7ZS5hbGVmPTE0ODg7ZS5hbGVmYXJhYmljPTE1NzU7ZS5hbGVmZGFnZXNoaGVicmV3PTY0MzA0O2UuYWxlZmZpbmFsYXJhYmljPTY1MTY2O2UuYWxlZmhhbXphYWJvdmVhcmFiaWM9MTU3MTtlLmFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTY7ZS5hbGVmaGFtemFiZWxvd2FyYWJpYz0xNTczO2UuYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTE2MDtlLmFsZWZoZWJyZXc9MTQ4ODtlLmFsZWZsYW1lZGhlYnJldz02NDMzNTtlLmFsZWZtYWRkYWFib3ZlYXJhYmljPTE1NzA7ZS5hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MTU0O2UuYWxlZm1ha3N1cmFhcmFiaWM9MTYwOTtlLmFsZWZtYWtzdXJhZmluYWxhcmFiaWM9NjUyNjQ7ZS5hbGVmbWFrc3VyYWluaXRpYWxhcmFiaWM9NjUyNjc7ZS5hbGVmbWFrc3VyYW1lZGlhbGFyYWJpYz02NTI2ODtlLmFsZWZwYXRhaGhlYnJldz02NDMwMjtlLmFsZWZxYW1hdHNoZWJyZXc9NjQzMDM7ZS5hbGVwaD04NTAxO2UuYWxsZXF1YWw9ODc4MDtlLmFscGhhPTk0NTtlLmFscGhhdG9ub3M9OTQwO2UuYW1hY3Jvbj0yNTc7ZS5hbW9ub3NwYWNlPTY1MzQ1O2UuYW1wZXJzYW5kPTM4O2UuYW1wZXJzYW5kbW9ub3NwYWNlPTY1Mjg2O2UuYW1wZXJzYW5kc21hbGw9NjMyNzA7ZS5hbXNxdWFyZT0xMzI1MDtlLmFuYm9wb21vZm89MTI1Nzg7ZS5hbmdib3BvbW9mbz0xMjU4MDtlLmFuZ2JyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5na2hhbmtodXRoYWk9MzY3NDtlLmFuZ2xlPTg3MzY7ZS5hbmdsZWJyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg3O2UuYW5nbGVicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg4O2UuYW5nbGVsZWZ0PTkwMDE7ZS5hbmdsZXJpZ2h0PTkwMDI7ZS5hbmdzdHJvbT04NDkxO2UuYW5vdGVsZWlhPTkwMztlLmFudWRhdHRhZGV2YT0yMzg2O2UuYW51c3ZhcmFiZW5nYWxpPTI0MzQ7ZS5hbnVzdmFyYWRldmE9MjMwNjtlLmFudXN2YXJhZ3VqYXJhdGk9MjY5MDtlLmFvZ29uZWs9MjYxO2UuYXBhYXRvc3F1YXJlPTEzMDU2O2UuYXBhcmVuPTkzNzI7ZS5hcG9zdHJvcGhlYXJtZW5pYW49MTM3MDtlLmFwb3N0cm9waGVtb2Q9NzAwO2UuYXBwbGU9NjM3NDM7ZS5hcHByb2FjaGVzPTg3ODQ7ZS5hcHByb3hlcXVhbD04Nzc2O2UuYXBwcm94ZXF1YWxvcmltYWdlPTg3ODY7ZS5hcHByb3hpbWF0ZWx5ZXF1YWw9ODc3MztlLmFyYWVhZWtvcmVhbj0xMjY4NjtlLmFyYWVha29yZWFuPTEyNjg1O2UuYXJjPTg5Nzg7ZS5hcmlnaHRoYWxmcmluZz03ODM0O2UuYXJpbmc9MjI5O2UuYXJpbmdhY3V0ZT01MDc7ZS5hcmluZ2JlbG93PTc2ODE7ZS5hcnJvd2JvdGg9ODU5NjtlLmFycm93ZGFzaGRvd249ODY3NTtlLmFycm93ZGFzaGxlZnQ9ODY3MjtlLmFycm93ZGFzaHJpZ2h0PTg2NzQ7ZS5hcnJvd2Rhc2h1cD04NjczO2UuYXJyb3dkYmxib3RoPTg2NjA7ZS5hcnJvd2RibGRvd249ODY1OTtlLmFycm93ZGJsbGVmdD04NjU2O2UuYXJyb3dkYmxyaWdodD04NjU4O2UuYXJyb3dkYmx1cD04NjU3O2UuYXJyb3dkb3duPTg1OTU7ZS5hcnJvd2Rvd25sZWZ0PTg2MDE7ZS5hcnJvd2Rvd25yaWdodD04NjAwO2UuYXJyb3dkb3dud2hpdGU9ODY4MTtlLmFycm93aGVhZGRvd25tb2Q9NzA5O2UuYXJyb3doZWFkbGVmdG1vZD03MDY7ZS5hcnJvd2hlYWRyaWdodG1vZD03MDc7ZS5hcnJvd2hlYWR1cG1vZD03MDg7ZS5hcnJvd2hvcml6ZXg9NjM3MTk7ZS5hcnJvd2xlZnQ9ODU5MjtlLmFycm93bGVmdGRibD04NjU2O2UuYXJyb3dsZWZ0ZGJsc3Ryb2tlPTg2NTM7ZS5hcnJvd2xlZnRvdmVycmlnaHQ9ODY0NjtlLmFycm93bGVmdHdoaXRlPTg2Nzg7ZS5hcnJvd3JpZ2h0PTg1OTQ7ZS5hcnJvd3JpZ2h0ZGJsc3Ryb2tlPTg2NTU7ZS5hcnJvd3JpZ2h0aGVhdnk9MTAxNDI7ZS5hcnJvd3JpZ2h0b3ZlcmxlZnQ9ODY0NDtlLmFycm93cmlnaHR3aGl0ZT04NjgwO2UuYXJyb3d0YWJsZWZ0PTg2NzY7ZS5hcnJvd3RhYnJpZ2h0PTg2Nzc7ZS5hcnJvd3VwPTg1OTM7ZS5hcnJvd3VwZG49ODU5NztlLmFycm93dXBkbmJzZT04NjE2O2UuYXJyb3d1cGRvd25iYXNlPTg2MTY7ZS5hcnJvd3VwbGVmdD04NTk4O2UuYXJyb3d1cGxlZnRvZmRvd249ODY0NTtlLmFycm93dXByaWdodD04NTk5O2UuYXJyb3d1cHdoaXRlPTg2Nzk7ZS5hcnJvd3ZlcnRleD02MzcxODtlLmFzY2lpY2lyY3VtPTk0O2UuYXNjaWljaXJjdW1tb25vc3BhY2U9NjUzNDI7ZS5hc2NpaXRpbGRlPTEyNjtlLmFzY2lpdGlsZGVtb25vc3BhY2U9NjUzNzQ7ZS5hc2NyaXB0PTU5MztlLmFzY3JpcHR0dXJuZWQ9NTk0O2UuYXNtYWxsaGlyYWdhbmE9MTIzNTM7ZS5hc21hbGxrYXRha2FuYT0xMjQ0OTtlLmFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzgzO2UuYXN0ZXJpc2s9NDI7ZS5hc3Rlcmlza2FsdG9uZWFyYWJpYz0xNjQ1O2UuYXN0ZXJpc2thcmFiaWM9MTY0NTtlLmFzdGVyaXNrbWF0aD04NzI3O2UuYXN0ZXJpc2ttb25vc3BhY2U9NjUyOTA7ZS5hc3Rlcmlza3NtYWxsPTY1MTIxO2UuYXN0ZXJpc209ODI1ODtlLmFzdXBlcmlvcj02MzIwOTtlLmFzeW1wdG90aWNhbGx5ZXF1YWw9ODc3MTtlLmF0PTY0O2UuYXRpbGRlPTIyNztlLmF0bW9ub3NwYWNlPTY1MzEyO2UuYXRzbWFsbD02NTEzMTtlLmF0dXJuZWQ9NTkyO2UuYXViZW5nYWxpPTI0NTI7ZS5hdWJvcG9tb2ZvPTEyNTc2O2UuYXVkZXZhPTIzMjQ7ZS5hdWd1amFyYXRpPTI3MDg7ZS5hdWd1cm11a2hpPTI1ODA7ZS5hdWxlbmd0aG1hcmtiZW5nYWxpPTI1MTk7ZS5hdW1hdHJhZ3VybXVraGk9MjYzNjtlLmF1dm93ZWxzaWduYmVuZ2FsaT0yNTA4O2UuYXV2b3dlbHNpZ25kZXZhPTIzODA7ZS5hdXZvd2Vsc2lnbmd1amFyYXRpPTI3NjQ7ZS5hdmFncmFoYWRldmE9MjM2NTtlLmF5YmFybWVuaWFuPTEzNzc7ZS5heWluPTE1MDY7ZS5heWluYWx0b25laGVicmV3PTY0Mjg4O2UuYXlpbmhlYnJldz0xNTA2O2UuYj05ODtlLmJhYmVuZ2FsaT0yNDc2O2UuYmFja3NsYXNoPTkyO2UuYmFja3NsYXNobW9ub3NwYWNlPTY1MzQwO2UuYmFkZXZhPTIzNDg7ZS5iYWd1amFyYXRpPTI3MzI7ZS5iYWd1cm11a2hpPTI2MDQ7ZS5iYWhpcmFnYW5hPTEyNDAwO2UuYmFodHRoYWk9MzY0NztlLmJha2F0YWthbmE9MTI0OTY7ZS5iYXI9MTI0O2UuYmFybW9ub3NwYWNlPTY1MzcyO2UuYmJvcG9tb2ZvPTEyNTQ5O2UuYmNpcmNsZT05NDI1O2UuYmRvdGFjY2VudD03NjgzO2UuYmRvdGJlbG93PTc2ODU7ZS5iZWFtZWRzaXh0ZWVudGhub3Rlcz05ODM2O2UuYmVjYXVzZT04NzU3O2UuYmVjeXJpbGxpYz0xMDczO2UuYmVoYXJhYmljPTE1NzY7ZS5iZWhmaW5hbGFyYWJpYz02NTE2ODtlLmJlaGluaXRpYWxhcmFiaWM9NjUxNjk7ZS5iZWhpcmFnYW5hPTEyNDA5O2UuYmVobWVkaWFsYXJhYmljPTY1MTcwO2UuYmVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzE7ZS5iZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjA7ZS5iZWhub29uZmluYWxhcmFiaWM9NjQ2MjE7ZS5iZWthdGFrYW5hPTEyNTA1O2UuYmVuYXJtZW5pYW49MTM3ODtlLmJldD0xNDg5O2UuYmV0YT05NDY7ZS5iZXRhc3ltYm9sZ3JlZWs9OTc2O2UuYmV0ZGFnZXNoPTY0MzA1O2UuYmV0ZGFnZXNoaGVicmV3PTY0MzA1O2UuYmV0aGVicmV3PTE0ODk7ZS5iZXRyYWZlaGVicmV3PTY0MzMyO2UuYmhhYmVuZ2FsaT0yNDc3O2UuYmhhZGV2YT0yMzQ5O2UuYmhhZ3VqYXJhdGk9MjczMztlLmJoYWd1cm11a2hpPTI2MDU7ZS5iaG9vaz01OTU7ZS5iaWhpcmFnYW5hPTEyNDAzO2UuYmlrYXRha2FuYT0xMjQ5OTtlLmJpbGFiaWFsY2xpY2s9NjY0O2UuYmluZGlndXJtdWtoaT0yNTYyO2UuYmlydXNxdWFyZT0xMzEwNTtlLmJsYWNrY2lyY2xlPTk2Nzk7ZS5ibGFja2RpYW1vbmQ9OTY3MDtlLmJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MDtlLmJsYWNrbGVmdHBvaW50aW5ncG9pbnRlcj05NjY4O2UuYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMDQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgzO2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzA1O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODQ7ZS5ibGFja2xvd2VybGVmdHRyaWFuZ2xlPTk2OTk7ZS5ibGFja2xvd2VycmlnaHR0cmlhbmdsZT05Njk4O2UuYmxhY2tyZWN0YW5nbGU9OTY0NDtlLmJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXI9OTY1ODtlLmJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTQ7ZS5ibGFja3NtYWxsc3F1YXJlPTk2NDI7ZS5ibGFja3NtaWxpbmdmYWNlPTk3ODc7ZS5ibGFja3NxdWFyZT05NjMyO2UuYmxhY2tzdGFyPTk3MzM7ZS5ibGFja3VwcGVybGVmdHRyaWFuZ2xlPTk3MDA7ZS5ibGFja3VwcGVycmlnaHR0cmlhbmdsZT05NzAxO2UuYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUyO2UuYmxhY2t1cHBvaW50aW5ndHJpYW5nbGU9OTY1MDtlLmJsYW5rPTkyNTE7ZS5ibGluZWJlbG93PTc2ODc7ZS5ibG9jaz05NjA4O2UuYm1vbm9zcGFjZT02NTM0NjtlLmJvYmFpbWFpdGhhaT0zNjEwO2UuYm9oaXJhZ2FuYT0xMjQxMjtlLmJva2F0YWthbmE9MTI1MDg7ZS5icGFyZW49OTM3MztlLmJxc3F1YXJlPTEzMjUxO2UuYnJhY2VleD02MzczMjtlLmJyYWNlbGVmdD0xMjM7ZS5icmFjZWxlZnRidD02MzczMTtlLmJyYWNlbGVmdG1pZD02MzczMDtlLmJyYWNlbGVmdG1vbm9zcGFjZT02NTM3MTtlLmJyYWNlbGVmdHNtYWxsPTY1MTE1O2UuYnJhY2VsZWZ0dHA9NjM3Mjk7ZS5icmFjZWxlZnR2ZXJ0aWNhbD02NTA3OTtlLmJyYWNlcmlnaHQ9MTI1O2UuYnJhY2VyaWdodGJ0PTYzNzQyO2UuYnJhY2VyaWdodG1pZD02Mzc0MTtlLmJyYWNlcmlnaHRtb25vc3BhY2U9NjUzNzM7ZS5icmFjZXJpZ2h0c21hbGw9NjUxMTY7ZS5icmFjZXJpZ2h0dHA9NjM3NDA7ZS5icmFjZXJpZ2h0dmVydGljYWw9NjUwODA7ZS5icmFja2V0bGVmdD05MTtlLmJyYWNrZXRsZWZ0YnQ9NjM3Mjg7ZS5icmFja2V0bGVmdGV4PTYzNzI3O2UuYnJhY2tldGxlZnRtb25vc3BhY2U9NjUzMzk7ZS5icmFja2V0bGVmdHRwPTYzNzI2O2UuYnJhY2tldHJpZ2h0PTkzO2UuYnJhY2tldHJpZ2h0YnQ9NjM3Mzk7ZS5icmFja2V0cmlnaHRleD02MzczODtlLmJyYWNrZXRyaWdodG1vbm9zcGFjZT02NTM0MTtlLmJyYWNrZXRyaWdodHRwPTYzNzM3O2UuYnJldmU9NzI4O2UuYnJldmViZWxvd2NtYj04MTQ7ZS5icmV2ZWNtYj03NzQ7ZS5icmV2ZWludmVydGVkYmVsb3djbWI9ODE1O2UuYnJldmVpbnZlcnRlZGNtYj03ODU7ZS5icmV2ZWludmVydGVkZG91YmxlY21iPTg2NTtlLmJyaWRnZWJlbG93Y21iPTgxMDtlLmJyaWRnZWludmVydGVkYmVsb3djbWI9ODI2O2UuYnJva2VuYmFyPTE2NjtlLmJzdHJva2U9Mzg0O2UuYnN1cGVyaW9yPTYzMjEwO2UuYnRvcGJhcj0zODc7ZS5idWhpcmFnYW5hPTEyNDA2O2UuYnVrYXRha2FuYT0xMjUwMjtlLmJ1bGxldD04MjI2O2UuYnVsbGV0aW52ZXJzZT05Njg4O2UuYnVsbGV0b3BlcmF0b3I9ODcyOTtlLmJ1bGxzZXllPTk2Nzg7ZS5jPTk5O2UuY2Fhcm1lbmlhbj0xMzkwO2UuY2FiZW5nYWxpPTI0NTg7ZS5jYWN1dGU9MjYzO2UuY2FkZXZhPTIzMzA7ZS5jYWd1amFyYXRpPTI3MTQ7ZS5jYWd1cm11a2hpPTI1ODY7ZS5jYWxzcXVhcmU9MTMxOTI7ZS5jYW5kcmFiaW5kdWJlbmdhbGk9MjQzMztlLmNhbmRyYWJpbmR1Y21iPTc4NDtlLmNhbmRyYWJpbmR1ZGV2YT0yMzA1O2UuY2FuZHJhYmluZHVndWphcmF0aT0yNjg5O2UuY2Fwc2xvY2s9ODY4MjtlLmNhcmVvZj04NDUzO2UuY2Fyb249NzExO2UuY2Fyb25iZWxvd2NtYj04MTI7ZS5jYXJvbmNtYj03ODA7ZS5jYXJyaWFnZXJldHVybj04NjI5O2UuY2JvcG9tb2ZvPTEyNTY4O2UuY2Nhcm9uPTI2OTtlLmNjZWRpbGxhPTIzMTtlLmNjZWRpbGxhYWN1dGU9NzY4OTtlLmNjaXJjbGU9OTQyNjtlLmNjaXJjdW1mbGV4PTI2NTtlLmNjdXJsPTU5NztlLmNkb3Q9MjY3O2UuY2RvdGFjY2VudD0yNjc7ZS5jZHNxdWFyZT0xMzI1MztlLmNlZGlsbGE9MTg0O2UuY2VkaWxsYWNtYj04MDc7ZS5jZW50PTE2MjtlLmNlbnRpZ3JhZGU9ODQ1MTtlLmNlbnRpbmZlcmlvcj02MzE5OTtlLmNlbnRtb25vc3BhY2U9NjU1MDQ7ZS5jZW50b2xkc3R5bGU9NjMzOTQ7ZS5jZW50c3VwZXJpb3I9NjMyMDA7ZS5jaGFhcm1lbmlhbj0xNDAxO2UuY2hhYmVuZ2FsaT0yNDU5O2UuY2hhZGV2YT0yMzMxO2UuY2hhZ3VqYXJhdGk9MjcxNTtlLmNoYWd1cm11a2hpPTI1ODc7ZS5jaGJvcG9tb2ZvPTEyNTY0O2UuY2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMztlLmNoZWNrbWFyaz0xMDAwMztlLmNoZWN5cmlsbGljPTEwOTU7ZS5jaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE1O2UuY2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNztlLmNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2OTtlLmNoZWhhcm1lbmlhbj0xMzk1O2UuY2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjg7ZS5jaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDk7ZS5jaGk9OTY3O2UuY2hpZXVjaGFjaXJjbGVrb3JlYW49MTI5MTk7ZS5jaGlldWNoYXBhcmVua29yZWFuPTEyODIzO2UuY2hpZXVjaGNpcmNsZWtvcmVhbj0xMjkwNTtlLmNoaWV1Y2hrb3JlYW49MTI2MTg7ZS5jaGlldWNocGFyZW5rb3JlYW49MTI4MDk7ZS5jaG9jaGFuZ3RoYWk9MzU5NDtlLmNob2NoYW50aGFpPTM1OTI7ZS5jaG9jaGluZ3RoYWk9MzU5MztlLmNob2Nob2V0aGFpPTM1OTY7ZS5jaG9vaz0zOTI7ZS5jaWV1Y2FjaXJjbGVrb3JlYW49MTI5MTg7ZS5jaWV1Y2FwYXJlbmtvcmVhbj0xMjgyMjtlLmNpZXVjY2lyY2xla29yZWFuPTEyOTA0O2UuY2lldWNrb3JlYW49MTI2MTY7ZS5jaWV1Y3BhcmVua29yZWFuPTEyODA4O2UuY2lldWN1cGFyZW5rb3JlYW49MTI4Mjg7ZS5jaXJjbGU9OTY3NTtlLmNpcmNsZWNvcHlydD0xNjk7ZS5jaXJjbGVtdWx0aXBseT04ODU1O2UuY2lyY2xlb3Q9ODg1NztlLmNpcmNsZXBsdXM9ODg1MztlLmNpcmNsZXBvc3RhbG1hcms9MTIzNDI7ZS5jaXJjbGV3aXRobGVmdGhhbGZibGFjaz05NjgwO2UuY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrPTk2ODE7ZS5jaXJjdW1mbGV4PTcxMDtlLmNpcmN1bWZsZXhiZWxvd2NtYj04MTM7ZS5jaXJjdW1mbGV4Y21iPTc3MDtlLmNsZWFyPTg5OTk7ZS5jbGlja2FsdmVvbGFyPTQ1MDtlLmNsaWNrZGVudGFsPTQ0ODtlLmNsaWNrbGF0ZXJhbD00NDk7ZS5jbGlja3JldHJvZmxleD00NTE7ZS5jbHViPTk4Mjc7ZS5jbHVic3VpdGJsYWNrPTk4Mjc7ZS5jbHVic3VpdHdoaXRlPTk4MzE7ZS5jbWN1YmVkc3F1YXJlPTEzMjIwO2UuY21vbm9zcGFjZT02NTM0NztlLmNtc3F1YXJlZHNxdWFyZT0xMzIxNjtlLmNvYXJtZW5pYW49MTQwOTtlLmNvbG9uPTU4O2UuY29sb25tb25ldGFyeT04MzUzO2UuY29sb25tb25vc3BhY2U9NjUzMDY7ZS5jb2xvbnNpZ249ODM1MztlLmNvbG9uc21hbGw9NjUxMDk7ZS5jb2xvbnRyaWFuZ3VsYXJoYWxmbW9kPTcyMTtlLmNvbG9udHJpYW5ndWxhcm1vZD03MjA7ZS5jb21tYT00NDtlLmNvbW1hYWJvdmVjbWI9Nzg3O2UuY29tbWFhYm92ZXJpZ2h0Y21iPTc4OTtlLmNvbW1hYWNjZW50PTYzMTcxO2UuY29tbWFhcmFiaWM9MTU0ODtlLmNvbW1hYXJtZW5pYW49MTM3MztlLmNvbW1haW5mZXJpb3I9NjMyMDE7ZS5jb21tYW1vbm9zcGFjZT02NTI5MjtlLmNvbW1hcmV2ZXJzZWRhYm92ZWNtYj03ODg7ZS5jb21tYXJldmVyc2VkbW9kPTcwMTtlLmNvbW1hc21hbGw9NjUxMDQ7ZS5jb21tYXN1cGVyaW9yPTYzMjAyO2UuY29tbWF0dXJuZWRhYm92ZWNtYj03ODY7ZS5jb21tYXR1cm5lZG1vZD02OTk7ZS5jb21wYXNzPTk3ODg7ZS5jb25ncnVlbnQ9ODc3MztlLmNvbnRvdXJpbnRlZ3JhbD04NzUwO2UuY29udHJvbD04OTYzO2UuY29udHJvbEFDSz02O2UuY29udHJvbEJFTD03O2UuY29udHJvbEJTPTg7ZS5jb250cm9sQ0FOPTI0O2UuY29udHJvbENSPTEzO2UuY29udHJvbERDMT0xNztlLmNvbnRyb2xEQzI9MTg7ZS5jb250cm9sREMzPTE5O2UuY29udHJvbERDND0yMDtlLmNvbnRyb2xERUw9MTI3O2UuY29udHJvbERMRT0xNjtlLmNvbnRyb2xFTT0yNTtlLmNvbnRyb2xFTlE9NTtlLmNvbnRyb2xFT1Q9NDtlLmNvbnRyb2xFU0M9Mjc7ZS5jb250cm9sRVRCPTIzO2UuY29udHJvbEVUWD0zO2UuY29udHJvbEZGPTEyO2UuY29udHJvbEZTPTI4O2UuY29udHJvbEdTPTI5O2UuY29udHJvbEhUPTk7ZS5jb250cm9sTEY9MTA7ZS5jb250cm9sTkFLPTIxO2UuY29udHJvbE5VTEw9MDtlLmNvbnRyb2xSUz0zMDtlLmNvbnRyb2xTST0xNTtlLmNvbnRyb2xTTz0xNDtlLmNvbnRyb2xTT1Q9MjtlLmNvbnRyb2xTVFg9MTtlLmNvbnRyb2xTVUI9MjY7ZS5jb250cm9sU1lOPTIyO2UuY29udHJvbFVTPTMxO2UuY29udHJvbFZUPTExO2UuY29weXJpZ2h0PTE2OTtlLmNvcHlyaWdodHNhbnM9NjM3MjE7ZS5jb3B5cmlnaHRzZXJpZj02MzE5MztlLmNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAwO2UuY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGg9NjUzNzg7ZS5jb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg5O2UuY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAxO2UuY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoPTY1Mzc5O2UuY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTA7ZS5jb3Jwb3JhdGlvbnNxdWFyZT0xMzE4MztlLmNvc3F1YXJlPTEzMjU1O2UuY292ZXJrZ3NxdWFyZT0xMzI1NDtlLmNwYXJlbj05Mzc0O2UuY3J1emVpcm89ODM1NDtlLmNzdHJldGNoZWQ9NjYzO2UuY3VybHlhbmQ9ODkxMTtlLmN1cmx5b3I9ODkxMDtlLmN1cnJlbmN5PTE2NDtlLmN5ckJyZXZlPTYzMTg1O2UuY3lyRmxleD02MzE4NjtlLmN5cmJyZXZlPTYzMTg4O2UuY3lyZmxleD02MzE4OTtlLmQ9MTAwO2UuZGFhcm1lbmlhbj0xMzgwO2UuZGFiZW5nYWxpPTI0NzA7ZS5kYWRhcmFiaWM9MTU5MDtlLmRhZGV2YT0yMzQyO2UuZGFkZmluYWxhcmFiaWM9NjUyMTQ7ZS5kYWRpbml0aWFsYXJhYmljPTY1MjE1O2UuZGFkbWVkaWFsYXJhYmljPTY1MjE2O2UuZGFnZXNoPTE0Njg7ZS5kYWdlc2hoZWJyZXc9MTQ2ODtlLmRhZ2dlcj04MjI0O2UuZGFnZ2VyZGJsPTgyMjU7ZS5kYWd1amFyYXRpPTI3MjY7ZS5kYWd1cm11a2hpPTI1OTg7ZS5kYWhpcmFnYW5hPTEyMzg0O2UuZGFrYXRha2FuYT0xMjQ4MDtlLmRhbGFyYWJpYz0xNTgzO2UuZGFsZXQ9MTQ5MTtlLmRhbGV0ZGFnZXNoPTY0MzA3O2UuZGFsZXRkYWdlc2hoZWJyZXc9NjQzMDc7ZS5kYWxldGhlYnJldz0xNDkxO2UuZGFsZmluYWxhcmFiaWM9NjUxOTQ7ZS5kYW1tYWFyYWJpYz0xNjE1O2UuZGFtbWFsb3dhcmFiaWM9MTYxNTtlLmRhbW1hdGFuYWx0b25lYXJhYmljPTE2MTI7ZS5kYW1tYXRhbmFyYWJpYz0xNjEyO2UuZGFuZGE9MjQwNDtlLmRhcmdhaGVicmV3PTE0NDc7ZS5kYXJnYWxlZnRoZWJyZXc9MTQ0NztlLmRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU3O2UuZGJsR3JhdmU9NjMxODc7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0PTEyMjk4O2UuZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg1O2UuZGJsYW5nbGVicmFja2V0cmlnaHQ9MTIyOTk7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg2O2UuZGJsYXJjaGludmVydGVkYmVsb3djbWI9ODExO2UuZGJsYXJyb3dsZWZ0PTg2NjA7ZS5kYmxhcnJvd3JpZ2h0PTg2NTg7ZS5kYmxkYW5kYT0yNDA1O2UuZGJsZ3JhdmU9NjMxOTA7ZS5kYmxncmF2ZWNtYj03ODM7ZS5kYmxpbnRlZ3JhbD04NzQ4O2UuZGJsbG93bGluZT04MjE1O2UuZGJsbG93bGluZWNtYj04MTk7ZS5kYmxvdmVybGluZWNtYj04MzE7ZS5kYmxwcmltZW1vZD02OTg7ZS5kYmx2ZXJ0aWNhbGJhcj04MjE0O2UuZGJsdmVydGljYWxsaW5lYWJvdmVjbWI9NzgyO2UuZGJvcG9tb2ZvPTEyNTUzO2UuZGJzcXVhcmU9MTMyNTY7ZS5kY2Fyb249MjcxO2UuZGNlZGlsbGE9NzY5NztlLmRjaXJjbGU9OTQyNztlLmRjaXJjdW1mbGV4YmVsb3c9NzY5OTtlLmRjcm9hdD0yNzM7ZS5kZGFiZW5nYWxpPTI0NjU7ZS5kZGFkZXZhPTIzMzc7ZS5kZGFndWphcmF0aT0yNzIxO2UuZGRhZ3VybXVraGk9MjU5MztlLmRkYWxhcmFiaWM9MTY3MjtlLmRkYWxmaW5hbGFyYWJpYz02NDM5MztlLmRkZGhhZGV2YT0yMzk2O2UuZGRoYWJlbmdhbGk9MjQ2NjtlLmRkaGFkZXZhPTIzMzg7ZS5kZGhhZ3VqYXJhdGk9MjcyMjtlLmRkaGFndXJtdWtoaT0yNTk0O2UuZGRvdGFjY2VudD03NjkxO2UuZGRvdGJlbG93PTc2OTM7ZS5kZWNpbWFsc2VwYXJhdG9yYXJhYmljPTE2NDM7ZS5kZWNpbWFsc2VwYXJhdG9ycGVyc2lhbj0xNjQzO2UuZGVjeXJpbGxpYz0xMDc2O2UuZGVncmVlPTE3NjtlLmRlaGloZWJyZXc9MTQ1MztlLmRlaGlyYWdhbmE9MTIzOTE7ZS5kZWljb3B0aWM9MTAwNztlLmRla2F0YWthbmE9MTI0ODc7ZS5kZWxldGVsZWZ0PTkwMDM7ZS5kZWxldGVyaWdodD04OTk4O2UuZGVsdGE9OTQ4O2UuZGVsdGF0dXJuZWQ9Mzk3O2UuZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGk9MjU1MjtlLmRlemg9Njc2O2UuZGhhYmVuZ2FsaT0yNDcxO2UuZGhhZGV2YT0yMzQzO2UuZGhhZ3VqYXJhdGk9MjcyNztlLmRoYWd1cm11a2hpPTI1OTk7ZS5kaG9vaz01OTk7ZS5kaWFseXRpa2F0b25vcz05MDE7ZS5kaWFseXRpa2F0b25vc2NtYj04MzY7ZS5kaWFtb25kPTk4MzA7ZS5kaWFtb25kc3VpdHdoaXRlPTk4MjY7ZS5kaWVyZXNpcz0xNjg7ZS5kaWVyZXNpc2FjdXRlPTYzMTkxO2UuZGllcmVzaXNiZWxvd2NtYj04MDQ7ZS5kaWVyZXNpc2NtYj03NzY7ZS5kaWVyZXNpc2dyYXZlPTYzMTkyO2UuZGllcmVzaXN0b25vcz05MDE7ZS5kaWhpcmFnYW5hPTEyMzg2O2UuZGlrYXRha2FuYT0xMjQ4MjtlLmRpdHRvbWFyaz0xMjI5MTtlLmRpdmlkZT0yNDc7ZS5kaXZpZGVzPTg3Mzk7ZS5kaXZpc2lvbnNsYXNoPTg3MjU7ZS5kamVjeXJpbGxpYz0xMTA2O2UuZGtzaGFkZT05NjE5O2UuZGxpbmViZWxvdz03Njk1O2UuZGxzcXVhcmU9MTMyMDc7ZS5kbWFjcm9uPTI3MztlLmRtb25vc3BhY2U9NjUzNDg7ZS5kbmJsb2NrPTk2MDQ7ZS5kb2NoYWRhdGhhaT0zNTk4O2UuZG9kZWt0aGFpPTM2MDQ7ZS5kb2hpcmFnYW5hPTEyMzkzO2UuZG9rYXRha2FuYT0xMjQ4OTtlLmRvbGxhcj0zNjtlLmRvbGxhcmluZmVyaW9yPTYzMjAzO2UuZG9sbGFybW9ub3NwYWNlPTY1Mjg0O2UuZG9sbGFyb2xkc3R5bGU9NjMyNjg7ZS5kb2xsYXJzbWFsbD02NTEyOTtlLmRvbGxhcnN1cGVyaW9yPTYzMjA0O2UuZG9uZz04MzYzO2UuZG9ydXNxdWFyZT0xMzA5NDtlLmRvdGFjY2VudD03Mjk7ZS5kb3RhY2NlbnRjbWI9Nzc1O2UuZG90YmVsb3djbWI9ODAzO2UuZG90YmVsb3djb21iPTgwMztlLmRvdGthdGFrYW5hPTEyNTM5O2UuZG90bGVzc2k9MzA1O2UuZG90bGVzc2o9NjMxNjY7ZS5kb3RsZXNzanN0cm9rZWhvb2s9NjQ0O2UuZG90bWF0aD04OTAxO2UuZG90dGVkY2lyY2xlPTk2NzY7ZS5kb3VibGV5b2RwYXRhaD02NDI4NztlLmRvdWJsZXlvZHBhdGFoaGVicmV3PTY0Mjg3O2UuZG93bnRhY2tiZWxvd2NtYj03OTg7ZS5kb3dudGFja21vZD03MjU7ZS5kcGFyZW49OTM3NTtlLmRzdXBlcmlvcj02MzIxMTtlLmR0YWlsPTU5ODtlLmR0b3BiYXI9Mzk2O2UuZHVoaXJhZ2FuYT0xMjM4OTtlLmR1a2F0YWthbmE9MTI0ODU7ZS5kej00OTk7ZS5kemFsdG9uZT02NzU7ZS5kemNhcm9uPTQ1NDtlLmR6Y3VybD02Nzc7ZS5kemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ5O2UuZHplY3lyaWxsaWM9MTEwOTtlLmR6aGVjeXJpbGxpYz0xMTE5O2UuZT0xMDE7ZS5lYWN1dGU9MjMzO2UuZWFydGg9OTc5MztlLmViZW5nYWxpPTI0NDc7ZS5lYm9wb21vZm89MTI1NzI7ZS5lYnJldmU9Mjc3O2UuZWNhbmRyYWRldmE9MjMxNztlLmVjYW5kcmFndWphcmF0aT0yNzAxO2UuZWNhbmRyYXZvd2Vsc2lnbmRldmE9MjM3MztlLmVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzU3O2UuZWNhcm9uPTI4MztlLmVjZWRpbGxhYnJldmU9NzcwOTtlLmVjaGFybWVuaWFuPTEzODE7ZS5lY2h5aXduYXJtZW5pYW49MTQxNTtlLmVjaXJjbGU9OTQyODtlLmVjaXJjdW1mbGV4PTIzNDtlLmVjaXJjdW1mbGV4YWN1dGU9Nzg3MTtlLmVjaXJjdW1mbGV4YmVsb3c9NzcwNTtlLmVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3OTtlLmVjaXJjdW1mbGV4Z3JhdmU9Nzg3MztlLmVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzU7ZS5lY2lyY3VtZmxleHRpbGRlPTc4Nzc7ZS5lY3lyaWxsaWM9MTEwODtlLmVkYmxncmF2ZT01MTc7ZS5lZGV2YT0yMzE5O2UuZWRpZXJlc2lzPTIzNTtlLmVkb3Q9Mjc5O2UuZWRvdGFjY2VudD0yNzk7ZS5lZG90YmVsb3c9Nzg2NTtlLmVlZ3VybXVraGk9MjU3NTtlLmVlbWF0cmFndXJtdWtoaT0yNjMxO2UuZWZjeXJpbGxpYz0xMDkyO2UuZWdyYXZlPTIzMjtlLmVndWphcmF0aT0yNzAzO2UuZWhhcm1lbmlhbj0xMzgzO2UuZWhib3BvbW9mbz0xMjU3MztlLmVoaXJhZ2FuYT0xMjM2MDtlLmVob29rYWJvdmU9Nzg2NztlLmVpYm9wb21vZm89MTI1NzU7ZS5laWdodD01NjtlLmVpZ2h0YXJhYmljPTE2NDA7ZS5laWdodGJlbmdhbGk9MjU0MjtlLmVpZ2h0Y2lyY2xlPTkzMTk7ZS5laWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjk7ZS5laWdodGRldmE9MjQxNDtlLmVpZ2h0ZWVuY2lyY2xlPTkzMjk7ZS5laWdodGVlbnBhcmVuPTkzNDk7ZS5laWdodGVlbnBlcmlvZD05MzY5O2UuZWlnaHRndWphcmF0aT0yNzk4O2UuZWlnaHRndXJtdWtoaT0yNjcwO2UuZWlnaHRoYWNrYXJhYmljPTE2NDA7ZS5laWdodGhhbmd6aG91PTEyMzI4O2UuZWlnaHRobm90ZWJlYW1lZD05ODM1O2UuZWlnaHRpZGVvZ3JhcGhpY3BhcmVuPTEyODM5O2UuZWlnaHRpbmZlcmlvcj04MzI4O2UuZWlnaHRtb25vc3BhY2U9NjUzMDQ7ZS5laWdodG9sZHN0eWxlPTYzMjg4O2UuZWlnaHRwYXJlbj05MzM5O2UuZWlnaHRwZXJpb2Q9OTM1OTtlLmVpZ2h0cGVyc2lhbj0xNzg0O2UuZWlnaHRyb21hbj04NTY3O2UuZWlnaHRzdXBlcmlvcj04MzEyO2UuZWlnaHR0aGFpPTM2NzI7ZS5laW52ZXJ0ZWRicmV2ZT01MTk7ZS5laW90aWZpZWRjeXJpbGxpYz0xMTI1O2UuZWthdGFrYW5hPTEyNDU2O2UuZWthdGFrYW5haGFsZndpZHRoPTY1Mzk2O2UuZWtvbmthcmd1cm11a2hpPTI2NzY7ZS5la29yZWFuPTEyNjI4O2UuZWxjeXJpbGxpYz0xMDgzO2UuZWxlbWVudD04NzEyO2UuZWxldmVuY2lyY2xlPTkzMjI7ZS5lbGV2ZW5wYXJlbj05MzQyO2UuZWxldmVucGVyaW9kPTkzNjI7ZS5lbGV2ZW5yb21hbj04NTcwO2UuZWxsaXBzaXM9ODIzMDtlLmVsbGlwc2lzdmVydGljYWw9ODk0MjtlLmVtYWNyb249Mjc1O2UuZW1hY3JvbmFjdXRlPTc3MDM7ZS5lbWFjcm9uZ3JhdmU9NzcwMTtlLmVtY3lyaWxsaWM9MTA4NDtlLmVtZGFzaD04MjEyO2UuZW1kYXNodmVydGljYWw9NjUwNzM7ZS5lbW9ub3NwYWNlPTY1MzQ5O2UuZW1waGFzaXNtYXJrYXJtZW5pYW49MTM3MTtlLmVtcHR5c2V0PTg3MDk7ZS5lbmJvcG9tb2ZvPTEyNTc5O2UuZW5jeXJpbGxpYz0xMDg1O2UuZW5kYXNoPTgyMTE7ZS5lbmRhc2h2ZXJ0aWNhbD02NTA3NDtlLmVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NztlLmVuZz0zMzE7ZS5lbmdib3BvbW9mbz0xMjU4MTtlLmVuZ2hlY3lyaWxsaWM9MTE4OTtlLmVuaG9va2N5cmlsbGljPTEyMjQ7ZS5lbnNwYWNlPTgxOTQ7ZS5lb2dvbmVrPTI4MTtlLmVva29yZWFuPTEyNjI3O2UuZW9wZW49NjAzO2UuZW9wZW5jbG9zZWQ9NjY2O2UuZW9wZW5yZXZlcnNlZD02MDQ7ZS5lb3BlbnJldmVyc2VkY2xvc2VkPTYwNjtlLmVvcGVucmV2ZXJzZWRob29rPTYwNTtlLmVwYXJlbj05Mzc2O2UuZXBzaWxvbj05NDk7ZS5lcHNpbG9udG9ub3M9OTQxO2UuZXF1YWw9NjE7ZS5lcXVhbG1vbm9zcGFjZT02NTMwOTtlLmVxdWFsc21hbGw9NjUxMjY7ZS5lcXVhbHN1cGVyaW9yPTgzMTY7ZS5lcXVpdmFsZW5jZT04ODAxO2UuZXJib3BvbW9mbz0xMjU4MjtlLmVyY3lyaWxsaWM9MTA4ODtlLmVyZXZlcnNlZD02MDA7ZS5lcmV2ZXJzZWRjeXJpbGxpYz0xMTAxO2UuZXNjeXJpbGxpYz0xMDg5O2UuZXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk1O2UuZXNoPTY0MztlLmVzaGN1cmw9NjQ2O2UuZXNob3J0ZGV2YT0yMzE4O2UuZXNob3J0dm93ZWxzaWduZGV2YT0yMzc0O2UuZXNocmV2ZXJzZWRsb29wPTQyNjtlLmVzaHNxdWF0cmV2ZXJzZWQ9NjQ1O2UuZXNtYWxsaGlyYWdhbmE9MTIzNTk7ZS5lc21hbGxrYXRha2FuYT0xMjQ1NTtlLmVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg2O2UuZXN0aW1hdGVkPTg0OTQ7ZS5lc3VwZXJpb3I9NjMyMTI7ZS5ldGE9OTUxO2UuZXRhcm1lbmlhbj0xMzg0O2UuZXRhdG9ub3M9OTQyO2UuZXRoPTI0MDtlLmV0aWxkZT03ODY5O2UuZXRpbGRlYmVsb3c9NzcwNztlLmV0bmFodGFmb3VraGhlYnJldz0xNDI1O2UuZXRuYWh0YWZvdWtobGVmdGhlYnJldz0xNDI1O2UuZXRuYWh0YWhlYnJldz0xNDI1O2UuZXRuYWh0YWxlZnRoZWJyZXc9MTQyNTtlLmV0dXJuZWQ9NDc3O2UuZXVrb3JlYW49MTI2NDE7ZS5ldXJvPTgzNjQ7ZS5ldm93ZWxzaWduYmVuZ2FsaT0yNTAzO2UuZXZvd2Vsc2lnbmRldmE9MjM3NTtlLmV2b3dlbHNpZ25ndWphcmF0aT0yNzU5O2UuZXhjbGFtPTMzO2UuZXhjbGFtYXJtZW5pYW49MTM3MjtlLmV4Y2xhbWRibD04MjUyO2UuZXhjbGFtZG93bj0xNjE7ZS5leGNsYW1kb3duc21hbGw9NjMzOTM7ZS5leGNsYW1tb25vc3BhY2U9NjUyODE7ZS5leGNsYW1zbWFsbD02MzI2NTtlLmV4aXN0ZW50aWFsPTg3MDc7ZS5lemg9NjU4O2UuZXpoY2Fyb249NDk1O2UuZXpoY3VybD02NTk7ZS5lemhyZXZlcnNlZD00NDE7ZS5lemh0YWlsPTQ0MjtlLmY9MTAyO2UuZmFkZXZhPTIzOTg7ZS5mYWd1cm11a2hpPTI2NTQ7ZS5mYWhyZW5oZWl0PTg0NTc7ZS5mYXRoYWFyYWJpYz0xNjE0O2UuZmF0aGFsb3dhcmFiaWM9MTYxNDtlLmZhdGhhdGFuYXJhYmljPTE2MTE7ZS5mYm9wb21vZm89MTI1NTI7ZS5mY2lyY2xlPTk0Mjk7ZS5mZG90YWNjZW50PTc3MTE7ZS5mZWhhcmFiaWM9MTYwMTtlLmZlaGFybWVuaWFuPTE0MTQ7ZS5mZWhmaW5hbGFyYWJpYz02NTIzNDtlLmZlaGluaXRpYWxhcmFiaWM9NjUyMzU7ZS5mZWhtZWRpYWxhcmFiaWM9NjUyMzY7ZS5mZWljb3B0aWM9OTk3O2UuZmVtYWxlPTk3OTI7ZS5mZj02NDI1NjtlLmZfZj02NDI1NjtlLmZmaT02NDI1OTtlLmZfZl9pPTY0MjU5O2UuZmZsPTY0MjYwO2UuZl9mX2w9NjQyNjA7ZS5maT02NDI1NztlLmZfaT02NDI1NztlLmZpZnRlZW5jaXJjbGU9OTMyNjtlLmZpZnRlZW5wYXJlbj05MzQ2O2UuZmlmdGVlbnBlcmlvZD05MzY2O2UuZmlndXJlZGFzaD04MjEwO2UuZmlsbGVkYm94PTk2MzI7ZS5maWxsZWRyZWN0PTk2NDQ7ZS5maW5hbGthZj0xNDk4O2UuZmluYWxrYWZkYWdlc2g9NjQzMTQ7ZS5maW5hbGthZmRhZ2VzaGhlYnJldz02NDMxNDtlLmZpbmFsa2FmaGVicmV3PTE0OTg7ZS5maW5hbG1lbT0xNTAxO2UuZmluYWxtZW1oZWJyZXc9MTUwMTtlLmZpbmFsbnVuPTE1MDM7ZS5maW5hbG51bmhlYnJldz0xNTAzO2UuZmluYWxwZT0xNTA3O2UuZmluYWxwZWhlYnJldz0xNTA3O2UuZmluYWx0c2FkaT0xNTA5O2UuZmluYWx0c2FkaWhlYnJldz0xNTA5O2UuZmlyc3R0b25lY2hpbmVzZT03MTM7ZS5maXNoZXllPTk2NzM7ZS5maXRhY3lyaWxsaWM9MTEzOTtlLmZpdmU9NTM7ZS5maXZlYXJhYmljPTE2Mzc7ZS5maXZlYmVuZ2FsaT0yNTM5O2UuZml2ZWNpcmNsZT05MzE2O2UuZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjY7ZS5maXZlZGV2YT0yNDExO2UuZml2ZWVpZ2h0aHM9ODU0MTtlLmZpdmVndWphcmF0aT0yNzk1O2UuZml2ZWd1cm11a2hpPTI2Njc7ZS5maXZlaGFja2FyYWJpYz0xNjM3O2UuZml2ZWhhbmd6aG91PTEyMzI1O2UuZml2ZWlkZW9ncmFwaGljcGFyZW49MTI4MzY7ZS5maXZlaW5mZXJpb3I9ODMyNTtlLmZpdmVtb25vc3BhY2U9NjUzMDE7ZS5maXZlb2xkc3R5bGU9NjMyODU7ZS5maXZlcGFyZW49OTMzNjtlLmZpdmVwZXJpb2Q9OTM1NjtlLmZpdmVwZXJzaWFuPTE3ODE7ZS5maXZlcm9tYW49ODU2NDtlLmZpdmVzdXBlcmlvcj04MzA5O2UuZml2ZXRoYWk9MzY2OTtlLmZsPTY0MjU4O2UuZl9sPTY0MjU4O2UuZmxvcmluPTQwMjtlLmZtb25vc3BhY2U9NjUzNTA7ZS5mbXNxdWFyZT0xMzIwOTtlLmZvZmFudGhhaT0zNjE1O2UuZm9mYXRoYWk9MzYxMztlLmZvbmdtYW50aGFpPTM2NjM7ZS5mb3JhbGw9ODcwNDtlLmZvdXI9NTI7ZS5mb3VyYXJhYmljPTE2MzY7ZS5mb3VyYmVuZ2FsaT0yNTM4O2UuZm91cmNpcmNsZT05MzE1O2UuZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjU7ZS5mb3VyZGV2YT0yNDEwO2UuZm91cmd1amFyYXRpPTI3OTQ7ZS5mb3VyZ3VybXVraGk9MjY2NjtlLmZvdXJoYWNrYXJhYmljPTE2MzY7ZS5mb3VyaGFuZ3pob3U9MTIzMjQ7ZS5mb3VyaWRlb2dyYXBoaWNwYXJlbj0xMjgzNTtlLmZvdXJpbmZlcmlvcj04MzI0O2UuZm91cm1vbm9zcGFjZT02NTMwMDtlLmZvdXJudW1lcmF0b3JiZW5nYWxpPTI1NTE7ZS5mb3Vyb2xkc3R5bGU9NjMyODQ7ZS5mb3VycGFyZW49OTMzNTtlLmZvdXJwZXJpb2Q9OTM1NTtlLmZvdXJwZXJzaWFuPTE3ODA7ZS5mb3Vycm9tYW49ODU2MztlLmZvdXJzdXBlcmlvcj04MzA4O2UuZm91cnRlZW5jaXJjbGU9OTMyNTtlLmZvdXJ0ZWVucGFyZW49OTM0NTtlLmZvdXJ0ZWVucGVyaW9kPTkzNjU7ZS5mb3VydGhhaT0zNjY4O2UuZm91cnRodG9uZWNoaW5lc2U9NzE1O2UuZnBhcmVuPTkzNzc7ZS5mcmFjdGlvbj04MjYwO2UuZnJhbmM9ODM1NTtlLmc9MTAzO2UuZ2FiZW5nYWxpPTI0NTU7ZS5nYWN1dGU9NTAxO2UuZ2FkZXZhPTIzMjc7ZS5nYWZhcmFiaWM9MTcxMTtlLmdhZmZpbmFsYXJhYmljPTY0NDAzO2UuZ2FmaW5pdGlhbGFyYWJpYz02NDQwNDtlLmdhZm1lZGlhbGFyYWJpYz02NDQwNTtlLmdhZ3VqYXJhdGk9MjcxMTtlLmdhZ3VybXVraGk9MjU4MztlLmdhaGlyYWdhbmE9MTIzNjQ7ZS5nYWthdGFrYW5hPTEyNDYwO2UuZ2FtbWE9OTQ3O2UuZ2FtbWFsYXRpbnNtYWxsPTYxMTtlLmdhbW1hc3VwZXJpb3I9NzM2O2UuZ2FuZ2lhY29wdGljPTEwMDM7ZS5nYm9wb21vZm89MTI1NTc7ZS5nYnJldmU9Mjg3O2UuZ2Nhcm9uPTQ4NztlLmdjZWRpbGxhPTI5MTtlLmdjaXJjbGU9OTQzMDtlLmdjaXJjdW1mbGV4PTI4NTtlLmdjb21tYWFjY2VudD0yOTE7ZS5nZG90PTI4OTtlLmdkb3RhY2NlbnQ9Mjg5O2UuZ2VjeXJpbGxpYz0xMDc1O2UuZ2VoaXJhZ2FuYT0xMjM3MDtlLmdla2F0YWthbmE9MTI0NjY7ZS5nZW9tZXRyaWNhbGx5ZXF1YWw9ODc4NTtlLmdlcmVzaGFjY2VudGhlYnJldz0xNDM2O2UuZ2VyZXNoaGVicmV3PTE1MjM7ZS5nZXJlc2htdXFkYW1oZWJyZXc9MTQzNztlLmdlcm1hbmRibHM9MjIzO2UuZ2Vyc2hheWltYWNjZW50aGVicmV3PTE0Mzg7ZS5nZXJzaGF5aW1oZWJyZXc9MTUyNDtlLmdldGFtYXJrPTEyMzA3O2UuZ2hhYmVuZ2FsaT0yNDU2O2UuZ2hhZGFybWVuaWFuPTEzOTQ7ZS5naGFkZXZhPTIzMjg7ZS5naGFndWphcmF0aT0yNzEyO2UuZ2hhZ3VybXVraGk9MjU4NDtlLmdoYWluYXJhYmljPTE1OTQ7ZS5naGFpbmZpbmFsYXJhYmljPTY1MjMwO2UuZ2hhaW5pbml0aWFsYXJhYmljPTY1MjMxO2UuZ2hhaW5tZWRpYWxhcmFiaWM9NjUyMzI7ZS5naGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MztlLmdoZXN0cm9rZWN5cmlsbGljPTExNzE7ZS5naGV1cHR1cm5jeXJpbGxpYz0xMTY5O2UuZ2hoYWRldmE9MjM5NDtlLmdoaGFndXJtdWtoaT0yNjUwO2UuZ2hvb2s9NjA4O2UuZ2h6c3F1YXJlPTEzMjAzO2UuZ2loaXJhZ2FuYT0xMjM2NjtlLmdpa2F0YWthbmE9MTI0NjI7ZS5naW1hcm1lbmlhbj0xMzc5O2UuZ2ltZWw9MTQ5MDtlLmdpbWVsZGFnZXNoPTY0MzA2O2UuZ2ltZWxkYWdlc2hoZWJyZXc9NjQzMDY7ZS5naW1lbGhlYnJldz0xNDkwO2UuZ2plY3lyaWxsaWM9MTEwNztlLmdsb3R0YWxpbnZlcnRlZHN0cm9rZT00NDY7ZS5nbG90dGFsc3RvcD02NjA7ZS5nbG90dGFsc3RvcGludmVydGVkPTY2MjtlLmdsb3R0YWxzdG9wbW9kPTcwNDtlLmdsb3R0YWxzdG9wcmV2ZXJzZWQ9NjYxO2UuZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZD03MDU7ZS5nbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3I9NzQwO2UuZ2xvdHRhbHN0b3BzdHJva2U9NjczO2UuZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZD02NzQ7ZS5nbWFjcm9uPTc3MTM7ZS5nbW9ub3NwYWNlPTY1MzUxO2UuZ29oaXJhZ2FuYT0xMjM3MjtlLmdva2F0YWthbmE9MTI0Njg7ZS5ncGFyZW49OTM3ODtlLmdwYXNxdWFyZT0xMzIyODtlLmdyYWRpZW50PTg3MTE7ZS5ncmF2ZT05NjtlLmdyYXZlYmVsb3djbWI9NzkwO2UuZ3JhdmVjbWI9NzY4O2UuZ3JhdmVjb21iPTc2ODtlLmdyYXZlZGV2YT0yMzg3O2UuZ3JhdmVsb3dtb2Q9NzE4O2UuZ3JhdmVtb25vc3BhY2U9NjUzNDQ7ZS5ncmF2ZXRvbmVjbWI9ODMyO2UuZ3JlYXRlcj02MjtlLmdyZWF0ZXJlcXVhbD04ODA1O2UuZ3JlYXRlcmVxdWFsb3JsZXNzPTg5MjM7ZS5ncmVhdGVybW9ub3NwYWNlPTY1MzEwO2UuZ3JlYXRlcm9yZXF1aXZhbGVudD04ODE5O2UuZ3JlYXRlcm9ybGVzcz04ODIzO2UuZ3JlYXRlcm92ZXJlcXVhbD04ODA3O2UuZ3JlYXRlcnNtYWxsPTY1MTI1O2UuZ3NjcmlwdD02MDk7ZS5nc3Ryb2tlPTQ4NTtlLmd1aGlyYWdhbmE9MTIzNjg7ZS5ndWlsbGVtb3RsZWZ0PTE3MTtlLmd1aWxsZW1vdHJpZ2h0PTE4NztlLmd1aWxzaW5nbGxlZnQ9ODI0OTtlLmd1aWxzaW5nbHJpZ2h0PTgyNTA7ZS5ndWthdGFrYW5hPTEyNDY0O2UuZ3VyYW11c3F1YXJlPTEzMDgwO2UuZ3lzcXVhcmU9MTMyNTc7ZS5oPTEwNDtlLmhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MztlLmhhYWx0b25lYXJhYmljPTE3Mjk7ZS5oYWJlbmdhbGk9MjQ4OTtlLmhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMztlLmhhZGV2YT0yMzYxO2UuaGFndWphcmF0aT0yNzQ1O2UuaGFndXJtdWtoaT0yNjE3O2UuaGFoYXJhYmljPTE1ODE7ZS5oYWhmaW5hbGFyYWJpYz02NTE4NjtlLmhhaGluaXRpYWxhcmFiaWM9NjUxODc7ZS5oYWhpcmFnYW5hPTEyMzk5O2UuaGFobWVkaWFsYXJhYmljPTY1MTg4O2UuaGFpdHVzcXVhcmU9MTMwOTg7ZS5oYWthdGFrYW5hPTEyNDk1O2UuaGFrYXRha2FuYWhhbGZ3aWR0aD02NTQxODtlLmhhbGFudGd1cm11a2hpPTI2Mzc7ZS5oYW16YWFyYWJpYz0xNTY5O2UuaGFtemFsb3dhcmFiaWM9MTU2OTtlLmhhbmd1bGZpbGxlcj0xMjY0NDtlLmhhcmRzaWduY3lyaWxsaWM9MTA5ODtlLmhhcnBvb25sZWZ0YmFyYnVwPTg2MzY7ZS5oYXJwb29ucmlnaHRiYXJidXA9ODY0MDtlLmhhc3F1YXJlPTEzMjU4O2UuaGF0YWZwYXRhaD0xNDU4O2UuaGF0YWZwYXRhaDE2PTE0NTg7ZS5oYXRhZnBhdGFoMjM9MTQ1ODtlLmhhdGFmcGF0YWgyZj0xNDU4O2UuaGF0YWZwYXRhaGhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaG5hcnJvd2hlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWh3aWRlaGVicmV3PTE0NTg7ZS5oYXRhZnFhbWF0cz0xNDU5O2UuaGF0YWZxYW1hdHMxYj0xNDU5O2UuaGF0YWZxYW1hdHMyOD0xNDU5O2UuaGF0YWZxYW1hdHMzND0xNDU5O2UuaGF0YWZxYW1hdHNoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzbmFycm93aGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzd2lkZWhlYnJldz0xNDU5O2UuaGF0YWZzZWdvbD0xNDU3O2UuaGF0YWZzZWdvbDE3PTE0NTc7ZS5oYXRhZnNlZ29sMjQ9MTQ1NztlLmhhdGFmc2Vnb2wzMD0xNDU3O2UuaGF0YWZzZWdvbGhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbG5hcnJvd2hlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2x3aWRlaGVicmV3PTE0NTc7ZS5oYmFyPTI5NTtlLmhib3BvbW9mbz0xMjU1OTtlLmhicmV2ZWJlbG93PTc3MjM7ZS5oY2VkaWxsYT03NzIxO2UuaGNpcmNsZT05NDMxO2UuaGNpcmN1bWZsZXg9MjkzO2UuaGRpZXJlc2lzPTc3MTk7ZS5oZG90YWNjZW50PTc3MTU7ZS5oZG90YmVsb3c9NzcxNztlLmhlPTE0OTI7ZS5oZWFydD05ODI5O2UuaGVhcnRzdWl0YmxhY2s9OTgyOTtlLmhlYXJ0c3VpdHdoaXRlPTk4MjU7ZS5oZWRhZ2VzaD02NDMwODtlLmhlZGFnZXNoaGVicmV3PTY0MzA4O2UuaGVoYWx0b25lYXJhYmljPTE3Mjk7ZS5oZWhhcmFiaWM9MTYwNztlLmhlaGVicmV3PTE0OTI7ZS5oZWhmaW5hbGFsdG9uZWFyYWJpYz02NDQyMztlLmhlaGZpbmFsYWx0dHdvYXJhYmljPTY1MjU4O2UuaGVoZmluYWxhcmFiaWM9NjUyNTg7ZS5oZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjQ0MjE7ZS5oZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjQ0MjA7ZS5oZWhpbml0aWFsYWx0b25lYXJhYmljPTY0NDI0O2UuaGVoaW5pdGlhbGFyYWJpYz02NTI1OTtlLmhlaGlyYWdhbmE9MTI0MDg7ZS5oZWhtZWRpYWxhbHRvbmVhcmFiaWM9NjQ0MjU7ZS5oZWhtZWRpYWxhcmFiaWM9NjUyNjA7ZS5oZWlzZWllcmFzcXVhcmU9MTMxNzk7ZS5oZWthdGFrYW5hPTEyNTA0O2UuaGVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMTtlLmhla3V0YWFydXNxdWFyZT0xMzExMDtlLmhlbmdob29rPTYxNTtlLmhlcnV0dXNxdWFyZT0xMzExMztlLmhldD0xNDk1O2UuaGV0aGVicmV3PTE0OTU7ZS5oaG9vaz02MTQ7ZS5oaG9va3N1cGVyaW9yPTY4OTtlLmhpZXVoYWNpcmNsZWtvcmVhbj0xMjkyMztlLmhpZXVoYXBhcmVua29yZWFuPTEyODI3O2UuaGlldWhjaXJjbGVrb3JlYW49MTI5MDk7ZS5oaWV1aGtvcmVhbj0xMjYyMjtlLmhpZXVocGFyZW5rb3JlYW49MTI4MTM7ZS5oaWhpcmFnYW5hPTEyNDAyO2UuaGlrYXRha2FuYT0xMjQ5ODtlLmhpa2F0YWthbmFoYWxmd2lkdGg9NjU0MTk7ZS5oaXJpcT0xNDYwO2UuaGlyaXExND0xNDYwO2UuaGlyaXEyMT0xNDYwO2UuaGlyaXEyZD0xNDYwO2UuaGlyaXFoZWJyZXc9MTQ2MDtlLmhpcmlxbmFycm93aGVicmV3PTE0NjA7ZS5oaXJpcXF1YXJ0ZXJoZWJyZXc9MTQ2MDtlLmhpcmlxd2lkZWhlYnJldz0xNDYwO2UuaGxpbmViZWxvdz03ODMwO2UuaG1vbm9zcGFjZT02NTM1MjtlLmhvYXJtZW5pYW49MTM5MjtlLmhvaGlwdGhhaT0zNjI3O2UuaG9oaXJhZ2FuYT0xMjQxMTtlLmhva2F0YWthbmE9MTI1MDc7ZS5ob2thdGFrYW5haGFsZndpZHRoPTY1NDIyO2UuaG9sYW09MTQ2NTtlLmhvbGFtMTk9MTQ2NTtlLmhvbGFtMjY9MTQ2NTtlLmhvbGFtMzI9MTQ2NTtlLmhvbGFtaGVicmV3PTE0NjU7ZS5ob2xhbW5hcnJvd2hlYnJldz0xNDY1O2UuaG9sYW1xdWFydGVyaGVicmV3PTE0NjU7ZS5ob2xhbXdpZGVoZWJyZXc9MTQ2NTtlLmhvbm9raHVrdGhhaT0zNjMwO2UuaG9va2Fib3ZlY29tYj03Nzc7ZS5ob29rY21iPTc3NztlLmhvb2twYWxhdGFsaXplZGJlbG93Y21iPTgwMTtlLmhvb2tyZXRyb2ZsZXhiZWxvd2NtYj04MDI7ZS5ob29uc3F1YXJlPTEzMTIyO2UuaG9yaWNvcHRpYz0xMDAxO2UuaG9yaXpvbnRhbGJhcj04MjEzO2UuaG9ybmNtYj03OTU7ZS5ob3RzcHJpbmdzPTk4MzI7ZS5ob3VzZT04OTYyO2UuaHBhcmVuPTkzNzk7ZS5oc3VwZXJpb3I9Njg4O2UuaHR1cm5lZD02MTM7ZS5odWhpcmFnYW5hPTEyNDA1O2UuaHVpaXRvc3F1YXJlPTEzMTA3O2UuaHVrYXRha2FuYT0xMjUwMTtlLmh1a2F0YWthbmFoYWxmd2lkdGg9NjU0MjA7ZS5odW5nYXJ1bWxhdXQ9NzMzO2UuaHVuZ2FydW1sYXV0Y21iPTc3OTtlLmh2PTQwNTtlLmh5cGhlbj00NTtlLmh5cGhlbmluZmVyaW9yPTYzMjA1O2UuaHlwaGVubW9ub3NwYWNlPTY1MjkzO2UuaHlwaGVuc21hbGw9NjUxMjM7ZS5oeXBoZW5zdXBlcmlvcj02MzIwNjtlLmh5cGhlbnR3bz04MjA4O2UuaT0xMDU7ZS5pYWN1dGU9MjM3O2UuaWFjeXJpbGxpYz0xMTAzO2UuaWJlbmdhbGk9MjQzOTtlLmlib3BvbW9mbz0xMjU4MztlLmlicmV2ZT0zMDE7ZS5pY2Fyb249NDY0O2UuaWNpcmNsZT05NDMyO2UuaWNpcmN1bWZsZXg9MjM4O2UuaWN5cmlsbGljPTExMTA7ZS5pZGJsZ3JhdmU9NTIxO2UuaWRlb2dyYXBoZWFydGhjaXJjbGU9MTI5NDM7ZS5pZGVvZ3JhcGhmaXJlY2lyY2xlPTEyOTM5O2UuaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuPTEyODYzO2UuaWRlb2dyYXBoaWNjYWxscGFyZW49MTI4NTg7ZS5pZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZT0xMjk2NTtlLmlkZW9ncmFwaGljY2xvc2U9MTIyOTQ7ZS5pZGVvZ3JhcGhpY2NvbW1hPTEyMjg5O2UuaWRlb2dyYXBoaWNjb21tYWxlZnQ9NjUzODA7ZS5pZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW49MTI4NTU7ZS5pZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGU9MTI5NjM7ZS5pZGVvZ3JhcGhpY2VhcnRocGFyZW49MTI4NDc7ZS5pZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbj0xMjg2MTtlLmlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlPTEyOTU3O2UuaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuPTEyODY0O2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGU9MTI5NTA7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuPTEyODU0O2UuaWRlb2dyYXBoaWNmaXJlcGFyZW49MTI4NDM7ZS5pZGVvZ3JhcGhpY2hhdmVwYXJlbj0xMjg1MDtlLmlkZW9ncmFwaGljaGlnaGNpcmNsZT0xMjk2NDtlLmlkZW9ncmFwaGljaXRlcmF0aW9ubWFyaz0xMjI5MztlLmlkZW9ncmFwaGljbGFib3JjaXJjbGU9MTI5NTI7ZS5pZGVvZ3JhcGhpY2xhYm9ycGFyZW49MTI4NTY7ZS5pZGVvZ3JhcGhpY2xlZnRjaXJjbGU9MTI5Njc7ZS5pZGVvZ3JhcGhpY2xvd2NpcmNsZT0xMjk2NjtlLmlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGU9MTI5Njk7ZS5pZGVvZ3JhcGhpY21ldGFscGFyZW49MTI4NDY7ZS5pZGVvZ3JhcGhpY21vb25wYXJlbj0xMjg0MjtlLmlkZW9ncmFwaGljbmFtZXBhcmVuPTEyODUyO2UuaWRlb2dyYXBoaWNwZXJpb2Q9MTIyOTA7ZS5pZGVvZ3JhcGhpY3ByaW50Y2lyY2xlPTEyOTU4O2UuaWRlb2dyYXBoaWNyZWFjaHBhcmVuPTEyODY3O2UuaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbj0xMjg1NztlLmlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbj0xMjg2MjtlLmlkZW9ncmFwaGljcmlnaHRjaXJjbGU9MTI5Njg7ZS5pZGVvZ3JhcGhpY3NlY3JldGNpcmNsZT0xMjk1MztlLmlkZW9ncmFwaGljc2VsZnBhcmVuPTEyODY2O2UuaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW49MTI4NTE7ZS5pZGVvZ3JhcGhpY3NwYWNlPTEyMjg4O2UuaWRlb2dyYXBoaWNzcGVjaWFscGFyZW49MTI4NTM7ZS5pZGVvZ3JhcGhpY3N0b2NrcGFyZW49MTI4NDk7ZS5pZGVvZ3JhcGhpY3N0dWR5cGFyZW49MTI4NTk7ZS5pZGVvZ3JhcGhpY3N1bnBhcmVuPTEyODQ4O2UuaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbj0xMjg2MDtlLmlkZW9ncmFwaGljd2F0ZXJwYXJlbj0xMjg0NDtlLmlkZW9ncmFwaGljd29vZHBhcmVuPTEyODQ1O2UuaWRlb2dyYXBoaWN6ZXJvPTEyMjk1O2UuaWRlb2dyYXBobWV0YWxjaXJjbGU9MTI5NDI7ZS5pZGVvZ3JhcGhtb29uY2lyY2xlPTEyOTM4O2UuaWRlb2dyYXBobmFtZWNpcmNsZT0xMjk0ODtlLmlkZW9ncmFwaHN1bmNpcmNsZT0xMjk0NDtlLmlkZW9ncmFwaHdhdGVyY2lyY2xlPTEyOTQwO2UuaWRlb2dyYXBod29vZGNpcmNsZT0xMjk0MTtlLmlkZXZhPTIzMTE7ZS5pZGllcmVzaXM9MjM5O2UuaWRpZXJlc2lzYWN1dGU9NzcyNztlLmlkaWVyZXNpc2N5cmlsbGljPTEyNTM7ZS5pZG90YmVsb3c9Nzg4MztlLmllYnJldmVjeXJpbGxpYz0xMjM5O2UuaWVjeXJpbGxpYz0xMDc3O2UuaWV1bmdhY2lyY2xla29yZWFuPTEyOTE3O2UuaWV1bmdhcGFyZW5rb3JlYW49MTI4MjE7ZS5pZXVuZ2NpcmNsZWtvcmVhbj0xMjkwMztlLmlldW5na29yZWFuPTEyNjE1O2UuaWV1bmdwYXJlbmtvcmVhbj0xMjgwNztlLmlncmF2ZT0yMzY7ZS5pZ3VqYXJhdGk9MjY5NTtlLmlndXJtdWtoaT0yNTY3O2UuaWhpcmFnYW5hPTEyMzU2O2UuaWhvb2thYm92ZT03ODgxO2UuaWliZW5nYWxpPTI0NDA7ZS5paWN5cmlsbGljPTEwODA7ZS5paWRldmE9MjMxMjtlLmlpZ3VqYXJhdGk9MjY5NjtlLmlpZ3VybXVraGk9MjU2ODtlLmlpbWF0cmFndXJtdWtoaT0yNjI0O2UuaWludmVydGVkYnJldmU9NTIzO2UuaWlzaG9ydGN5cmlsbGljPTEwODE7ZS5paXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NjtlLmlpdm93ZWxzaWduZGV2YT0yMzY4O2UuaWl2b3dlbHNpZ25ndWphcmF0aT0yNzUyO2UuaWo9MzA3O2UuaWthdGFrYW5hPTEyNDUyO2UuaWthdGFrYW5haGFsZndpZHRoPTY1Mzk0O2UuaWtvcmVhbj0xMjY0MztlLmlsZGU9NzMyO2UuaWx1eWhlYnJldz0xNDUyO2UuaW1hY3Jvbj0yOTk7ZS5pbWFjcm9uY3lyaWxsaWM9MTI1MTtlLmltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWw9ODc4NztlLmltYXRyYWd1cm11a2hpPTI2MjM7ZS5pbW9ub3NwYWNlPTY1MzUzO2UuaW5jcmVtZW50PTg3MTA7ZS5pbmZpbml0eT04NzM0O2UuaW5pYXJtZW5pYW49MTM4NztlLmludGVncmFsPTg3NDc7ZS5pbnRlZ3JhbGJvdHRvbT04OTkzO2UuaW50ZWdyYWxidD04OTkzO2UuaW50ZWdyYWxleD02MzczMztlLmludGVncmFsdG9wPTg5OTI7ZS5pbnRlZ3JhbHRwPTg5OTI7ZS5pbnRlcnNlY3Rpb249ODc0NTtlLmludGlzcXVhcmU9MTMwNjE7ZS5pbnZidWxsZXQ9OTY4ODtlLmludmNpcmNsZT05Njg5O2UuaW52c21pbGVmYWNlPTk3ODc7ZS5pb2N5cmlsbGljPTExMDU7ZS5pb2dvbmVrPTMwMztlLmlvdGE9OTUzO2UuaW90YWRpZXJlc2lzPTk3MDtlLmlvdGFkaWVyZXNpc3Rvbm9zPTkxMjtlLmlvdGFsYXRpbj02MTc7ZS5pb3RhdG9ub3M9OTQzO2UuaXBhcmVuPTkzODA7ZS5pcmlndXJtdWtoaT0yNjc0O2UuaXNtYWxsaGlyYWdhbmE9MTIzNTU7ZS5pc21hbGxrYXRha2FuYT0xMjQ1MTtlLmlzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg0O2UuaXNzaGFyYmVuZ2FsaT0yNTU0O2UuaXN0cm9rZT02MTY7ZS5pc3VwZXJpb3I9NjMyMTM7ZS5pdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NTtlLml0ZXJhdGlvbmthdGFrYW5hPTEyNTQxO2UuaXRpbGRlPTI5NztlLml0aWxkZWJlbG93PTc3MjU7ZS5pdWJvcG9tb2ZvPTEyNTg1O2UuaXVjeXJpbGxpYz0xMTAyO2UuaXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NTtlLml2b3dlbHNpZ25kZXZhPTIzNjc7ZS5pdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MTtlLml6aGl0c2FjeXJpbGxpYz0xMTQxO2UuaXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MztlLmo9MTA2O2UuamFhcm1lbmlhbj0xMzkzO2UuamFiZW5nYWxpPTI0NjA7ZS5qYWRldmE9MjMzMjtlLmphZ3VqYXJhdGk9MjcxNjtlLmphZ3VybXVraGk9MjU4ODtlLmpib3BvbW9mbz0xMjU2MDtlLmpjYXJvbj00OTY7ZS5qY2lyY2xlPTk0MzM7ZS5qY2lyY3VtZmxleD0zMDk7ZS5qY3Jvc3NlZHRhaWw9NjY5O2UuamRvdGxlc3NzdHJva2U9NjA3O2UuamVjeXJpbGxpYz0xMTEyO2UuamVlbWFyYWJpYz0xNTgwO2UuamVlbWZpbmFsYXJhYmljPTY1MTgyO2UuamVlbWluaXRpYWxhcmFiaWM9NjUxODM7ZS5qZWVtbWVkaWFsYXJhYmljPTY1MTg0O2UuamVoYXJhYmljPTE2ODg7ZS5qZWhmaW5hbGFyYWJpYz02NDM5NTtlLmpoYWJlbmdhbGk9MjQ2MTtlLmpoYWRldmE9MjMzMztlLmpoYWd1amFyYXRpPTI3MTc7ZS5qaGFndXJtdWtoaT0yNTg5O2UuamhlaGFybWVuaWFuPTE0MDM7ZS5qaXM9MTIyOTI7ZS5qbW9ub3NwYWNlPTY1MzU0O2UuanBhcmVuPTkzODE7ZS5qc3VwZXJpb3I9NjkwO2Uuaz0xMDc7ZS5rYWJhc2hraXJjeXJpbGxpYz0xMTg1O2Uua2FiZW5nYWxpPTI0NTM7ZS5rYWN1dGU9NzcyOTtlLmthY3lyaWxsaWM9MTA4MjtlLmthZGVzY2VuZGVyY3lyaWxsaWM9MTE3OTtlLmthZGV2YT0yMzI1O2Uua2FmPTE0OTk7ZS5rYWZhcmFiaWM9MTYwMztlLmthZmRhZ2VzaD02NDMxNTtlLmthZmRhZ2VzaGhlYnJldz02NDMxNTtlLmthZmZpbmFsYXJhYmljPTY1MjQyO2Uua2FmaGVicmV3PTE0OTk7ZS5rYWZpbml0aWFsYXJhYmljPTY1MjQzO2Uua2FmbWVkaWFsYXJhYmljPTY1MjQ0O2Uua2FmcmFmZWhlYnJldz02NDMzMztlLmthZ3VqYXJhdGk9MjcwOTtlLmthZ3VybXVraGk9MjU4MTtlLmthaGlyYWdhbmE9MTIzNjM7ZS5rYWhvb2tjeXJpbGxpYz0xMjIwO2Uua2FrYXRha2FuYT0xMjQ1OTtlLmtha2F0YWthbmFoYWxmd2lkdGg9NjUzOTg7ZS5rYXBwYT05NTQ7ZS5rYXBwYXN5bWJvbGdyZWVrPTEwMDg7ZS5rYXB5ZW91bm1pZXVta29yZWFuPTEyNjU3O2Uua2FweWVvdW5waGlldXBoa29yZWFuPTEyNjc2O2Uua2FweWVvdW5waWV1cGtvcmVhbj0xMjY2NDtlLmthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbj0xMjY2NTtlLmthcm9yaWlzcXVhcmU9MTMwNjk7ZS5rYXNoaWRhYXV0b2FyYWJpYz0xNjAwO2Uua2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljPTE2MDA7ZS5rYXNtYWxsa2F0YWthbmE9MTI1MzM7ZS5rYXNxdWFyZT0xMzE4ODtlLmthc3JhYXJhYmljPTE2MTY7ZS5rYXNyYXRhbmFyYWJpYz0xNjEzO2Uua2FzdHJva2VjeXJpbGxpYz0xMTgzO2Uua2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aD02NTM5MjtlLmthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgxO2Uua2JvcG9tb2ZvPTEyNTU4O2Uua2NhbHNxdWFyZT0xMzE5MztlLmtjYXJvbj00ODk7ZS5rY2VkaWxsYT0zMTE7ZS5rY2lyY2xlPTk0MzQ7ZS5rY29tbWFhY2NlbnQ9MzExO2Uua2RvdGJlbG93PTc3MzE7ZS5rZWhhcm1lbmlhbj0xNDEyO2Uua2VoaXJhZ2FuYT0xMjM2OTtlLmtla2F0YWthbmE9MTI0NjU7ZS5rZWthdGFrYW5haGFsZndpZHRoPTY1NDAxO2Uua2VuYXJtZW5pYW49MTM5MTtlLmtlc21hbGxrYXRha2FuYT0xMjUzNDtlLmtncmVlbmxhbmRpYz0zMTI7ZS5raGFiZW5nYWxpPTI0NTQ7ZS5raGFjeXJpbGxpYz0xMDkzO2Uua2hhZGV2YT0yMzI2O2Uua2hhZ3VqYXJhdGk9MjcxMDtlLmtoYWd1cm11a2hpPTI1ODI7ZS5raGFoYXJhYmljPTE1ODI7ZS5raGFoZmluYWxhcmFiaWM9NjUxOTA7ZS5raGFoaW5pdGlhbGFyYWJpYz02NTE5MTtlLmtoYWhtZWRpYWxhcmFiaWM9NjUxOTI7ZS5raGVpY29wdGljPTk5OTtlLmtoaGFkZXZhPTIzOTM7ZS5raGhhZ3VybXVraGk9MjY0OTtlLmtoaWV1a2hhY2lyY2xla29yZWFuPTEyOTIwO2Uua2hpZXVraGFwYXJlbmtvcmVhbj0xMjgyNDtlLmtoaWV1a2hjaXJjbGVrb3JlYW49MTI5MDY7ZS5raGlldWtoa29yZWFuPTEyNjE5O2Uua2hpZXVraHBhcmVua29yZWFuPTEyODEwO2Uua2hva2hhaXRoYWk9MzU4NjtlLmtob2tob250aGFpPTM1ODk7ZS5raG9raHVhdHRoYWk9MzU4NztlLmtob2tod2FpdGhhaT0zNTg4O2Uua2hvbXV0dGhhaT0zNjc1O2Uua2hvb2s9NDA5O2Uua2hvcmFraGFuZ3RoYWk9MzU5MDtlLmtoenNxdWFyZT0xMzIwMTtlLmtpaGlyYWdhbmE9MTIzNjU7ZS5raWthdGFrYW5hPTEyNDYxO2Uua2lrYXRha2FuYWhhbGZ3aWR0aD02NTM5OTtlLmtpcm9ndXJhbXVzcXVhcmU9MTMwNzc7ZS5raXJvbWVldG9ydXNxdWFyZT0xMzA3ODtlLmtpcm9zcXVhcmU9MTMwNzY7ZS5raXllb2thY2lyY2xla29yZWFuPTEyOTEwO2Uua2l5ZW9rYXBhcmVua29yZWFuPTEyODE0O2Uua2l5ZW9rY2lyY2xla29yZWFuPTEyODk2O2Uua2l5ZW9ra29yZWFuPTEyNTkzO2Uua2l5ZW9rcGFyZW5rb3JlYW49MTI4MDA7ZS5raXllb2tzaW9za29yZWFuPTEyNTk1O2Uua2plY3lyaWxsaWM9MTExNjtlLmtsaW5lYmVsb3c9NzczMztlLmtsc3F1YXJlPTEzMjA4O2Uua21jdWJlZHNxdWFyZT0xMzIyMjtlLmttb25vc3BhY2U9NjUzNTU7ZS5rbXNxdWFyZWRzcXVhcmU9MTMyMTg7ZS5rb2hpcmFnYW5hPTEyMzcxO2Uua29obXNxdWFyZT0xMzI0ODtlLmtva2FpdGhhaT0zNTg1O2Uua29rYXRha2FuYT0xMjQ2NztlLmtva2F0YWthbmFoYWxmd2lkdGg9NjU0MDI7ZS5rb29wb3NxdWFyZT0xMzA4NjtlLmtvcHBhY3lyaWxsaWM9MTE1MztlLmtvcmVhbnN0YW5kYXJkc3ltYm9sPTEyOTI3O2Uua29yb25pc2NtYj04MzU7ZS5rcGFyZW49OTM4MjtlLmtwYXNxdWFyZT0xMzIyNjtlLmtzaWN5cmlsbGljPTExMzU7ZS5rdHNxdWFyZT0xMzI2MztlLmt0dXJuZWQ9NjcwO2Uua3VoaXJhZ2FuYT0xMjM2NztlLmt1a2F0YWthbmE9MTI0NjM7ZS5rdWthdGFrYW5haGFsZndpZHRoPTY1NDAwO2Uua3ZzcXVhcmU9MTMyNDA7ZS5rd3NxdWFyZT0xMzI0NjtlLmw9MTA4O2UubGFiZW5nYWxpPTI0ODI7ZS5sYWN1dGU9MzE0O2UubGFkZXZhPTIzNTQ7ZS5sYWd1amFyYXRpPTI3Mzg7ZS5sYWd1cm11a2hpPTI2MTA7ZS5sYWtraGFuZ3lhb3RoYWk9MzY1MztlLmxhbWFsZWZmaW5hbGFyYWJpYz02NTI3NjtlLmxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUyNzI7ZS5sYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjcxO2UubGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTI3NDtlLmxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWM9NjUyNzM7ZS5sYW1hbGVmaXNvbGF0ZWRhcmFiaWM9NjUyNzU7ZS5sYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MjcwO2UubGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYz02NTI2OTtlLmxhbWFyYWJpYz0xNjA0O2UubGFtYmRhPTk1NTtlLmxhbWJkYXN0cm9rZT00MTE7ZS5sYW1lZD0xNTAwO2UubGFtZWRkYWdlc2g9NjQzMTY7ZS5sYW1lZGRhZ2VzaGhlYnJldz02NDMxNjtlLmxhbWVkaGVicmV3PTE1MDA7ZS5sYW1maW5hbGFyYWJpYz02NTI0NjtlLmxhbWhhaGluaXRpYWxhcmFiaWM9NjQ3MTQ7ZS5sYW1pbml0aWFsYXJhYmljPTY1MjQ3O2UubGFtamVlbWluaXRpYWxhcmFiaWM9NjQ3MTM7ZS5sYW1raGFoaW5pdGlhbGFyYWJpYz02NDcxNTtlLmxhbWxhbWhlaGlzb2xhdGVkYXJhYmljPTY1MDEwO2UubGFtbWVkaWFsYXJhYmljPTY1MjQ4O2UubGFtbWVlbWhhaGluaXRpYWxhcmFiaWM9NjQ5MDQ7ZS5sYW1tZWVtaW5pdGlhbGFyYWJpYz02NDcxNjtlLmxhcmdlY2lyY2xlPTk3MTE7ZS5sYmFyPTQxMDtlLmxiZWx0PTYyMDtlLmxib3BvbW9mbz0xMjU1NjtlLmxjYXJvbj0zMTg7ZS5sY2VkaWxsYT0zMTY7ZS5sY2lyY2xlPTk0MzU7ZS5sY2lyY3VtZmxleGJlbG93PTc3NDE7ZS5sY29tbWFhY2NlbnQ9MzE2O2UubGRvdD0zMjA7ZS5sZG90YWNjZW50PTMyMDtlLmxkb3RiZWxvdz03NzM1O2UubGRvdGJlbG93bWFjcm9uPTc3Mzc7ZS5sZWZ0YW5nbGVhYm92ZWNtYj03OTQ7ZS5sZWZ0dGFja2JlbG93Y21iPTc5MjtlLmxlc3M9NjA7ZS5sZXNzZXF1YWw9ODgwNDtlLmxlc3NlcXVhbG9yZ3JlYXRlcj04OTIyO2UubGVzc21vbm9zcGFjZT02NTMwODtlLmxlc3NvcmVxdWl2YWxlbnQ9ODgxODtlLmxlc3NvcmdyZWF0ZXI9ODgyMjtlLmxlc3NvdmVyZXF1YWw9ODgwNjtlLmxlc3NzbWFsbD02NTEyNDtlLmxlemg9NjIyO2UubGZibG9jaz05NjEyO2UubGhvb2tyZXRyb2ZsZXg9NjIxO2UubGlyYT04MzU2O2UubGl3bmFybWVuaWFuPTEzODg7ZS5saj00NTc7ZS5samVjeXJpbGxpYz0xMTEzO2UubGw9NjMxNjg7ZS5sbGFkZXZhPTIzNTU7ZS5sbGFndWphcmF0aT0yNzM5O2UubGxpbmViZWxvdz03NzM5O2UubGxsYWRldmE9MjM1NjtlLmxsdm9jYWxpY2JlbmdhbGk9MjUyOTtlLmxsdm9jYWxpY2RldmE9MjQwMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMztlLmxtaWRkbGV0aWxkZT02MTk7ZS5sbW9ub3NwYWNlPTY1MzU2O2UubG1zcXVhcmU9MTMyNjQ7ZS5sb2NodWxhdGhhaT0zNjI4O2UubG9naWNhbGFuZD04NzQzO2UubG9naWNhbG5vdD0xNzI7ZS5sb2dpY2Fsbm90cmV2ZXJzZWQ9ODk3NjtlLmxvZ2ljYWxvcj04NzQ0O2UubG9saW5ndGhhaT0zNjIxO2UubG9uZ3M9MzgzO2UubG93bGluZWNlbnRlcmxpbmU9NjUxMDI7ZS5sb3dsaW5lY21iPTgxODtlLmxvd2xpbmVkYXNoZWQ9NjUxMDE7ZS5sb3plbmdlPTk2NzQ7ZS5scGFyZW49OTM4MztlLmxzbGFzaD0zMjI7ZS5sc3F1YXJlPTg0Njc7ZS5sc3VwZXJpb3I9NjMyMTQ7ZS5sdHNoYWRlPTk2MTc7ZS5sdXRoYWk9MzYyMjtlLmx2b2NhbGljYmVuZ2FsaT0yNDQ0O2UubHZvY2FsaWNkZXZhPTIzMTY7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMDtlLmx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAyO2UubHhzcXVhcmU9MTMyNjc7ZS5tPTEwOTtlLm1hYmVuZ2FsaT0yNDc4O2UubWFjcm9uPTE3NTtlLm1hY3JvbmJlbG93Y21iPTgxNztlLm1hY3JvbmNtYj03NzI7ZS5tYWNyb25sb3dtb2Q9NzE3O2UubWFjcm9ubW9ub3NwYWNlPTY1NTA3O2UubWFjdXRlPTc3NDM7ZS5tYWRldmE9MjM1MDtlLm1hZ3VqYXJhdGk9MjczNDtlLm1hZ3VybXVraGk9MjYwNjtlLm1haGFwYWtoaGVicmV3PTE0NDQ7ZS5tYWhhcGFraGxlZnRoZWJyZXc9MTQ0NDtlLm1haGlyYWdhbmE9MTI0MTQ7ZS5tYWljaGF0dGF3YWxvd2xlZnR0aGFpPTYzNjM3O2UubWFpY2hhdHRhd2Fsb3dyaWdodHRoYWk9NjM2MzY7ZS5tYWljaGF0dGF3YXRoYWk9MzY1OTtlLm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaT02MzYzNTtlLm1haWVrbG93bGVmdHRoYWk9NjM2Mjg7ZS5tYWlla2xvd3JpZ2h0dGhhaT02MzYyNztlLm1haWVrdGhhaT0zNjU2O2UubWFpZWt1cHBlcmxlZnR0aGFpPTYzNjI2O2UubWFpaGFuYWthdGxlZnR0aGFpPTYzNjIwO2UubWFpaGFuYWthdHRoYWk9MzYzMztlLm1haXRhaWtodWxlZnR0aGFpPTYzNjI1O2UubWFpdGFpa2h1dGhhaT0zNjU1O2UubWFpdGhvbG93bGVmdHRoYWk9NjM2MzE7ZS5tYWl0aG9sb3dyaWdodHRoYWk9NjM2MzA7ZS5tYWl0aG90aGFpPTM2NTc7ZS5tYWl0aG91cHBlcmxlZnR0aGFpPTYzNjI5O2UubWFpdHJpbG93bGVmdHRoYWk9NjM2MzQ7ZS5tYWl0cmlsb3dyaWdodHRoYWk9NjM2MzM7ZS5tYWl0cml0aGFpPTM2NTg7ZS5tYWl0cml1cHBlcmxlZnR0aGFpPTYzNjMyO2UubWFpeWFtb2t0aGFpPTM2NTQ7ZS5tYWthdGFrYW5hPTEyNTEwO2UubWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyMztlLm1hbGU9OTc5NDtlLm1hbnN5b25zcXVhcmU9MTMxMjc7ZS5tYXFhZmhlYnJldz0xNDcwO2UubWFycz05Nzk0O2UubWFzb3JhY2lyY2xlaGVicmV3PTE0NTU7ZS5tYXNxdWFyZT0xMzE4NztlLm1ib3BvbW9mbz0xMjU1MTtlLm1ic3F1YXJlPTEzMjY4O2UubWNpcmNsZT05NDM2O2UubWN1YmVkc3F1YXJlPTEzMjIxO2UubWRvdGFjY2VudD03NzQ1O2UubWRvdGJlbG93PTc3NDc7ZS5tZWVtYXJhYmljPTE2MDU7ZS5tZWVtZmluYWxhcmFiaWM9NjUyNTA7ZS5tZWVtaW5pdGlhbGFyYWJpYz02NTI1MTtlLm1lZW1tZWRpYWxhcmFiaWM9NjUyNTI7ZS5tZWVtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MjE7ZS5tZWVtbWVlbWlzb2xhdGVkYXJhYmljPTY0NTg0O2UubWVldG9ydXNxdWFyZT0xMzEzMztlLm1laGlyYWdhbmE9MTI0MTc7ZS5tZWl6aWVyYXNxdWFyZT0xMzE4MjtlLm1la2F0YWthbmE9MTI1MTM7ZS5tZWthdGFrYW5haGFsZndpZHRoPTY1NDI2O2UubWVtPTE1MDI7ZS5tZW1kYWdlc2g9NjQzMTg7ZS5tZW1kYWdlc2hoZWJyZXc9NjQzMTg7ZS5tZW1oZWJyZXc9MTUwMjtlLm1lbmFybWVuaWFuPTEzOTY7ZS5tZXJraGFoZWJyZXc9MTQ0NTtlLm1lcmtoYWtlZnVsYWhlYnJldz0xNDQ2O2UubWVya2hha2VmdWxhbGVmdGhlYnJldz0xNDQ2O2UubWVya2hhbGVmdGhlYnJldz0xNDQ1O2UubWhvb2s9NjI1O2UubWh6c3F1YXJlPTEzMjAyO2UubWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGg9NjUzODE7ZS5taWRkb3Q9MTgzO2UubWlldW1hY2lyY2xla29yZWFuPTEyOTE0O2UubWlldW1hcGFyZW5rb3JlYW49MTI4MTg7ZS5taWV1bWNpcmNsZWtvcmVhbj0xMjkwMDtlLm1pZXVta29yZWFuPTEyNjA5O2UubWlldW1wYW5zaW9za29yZWFuPTEyNjU2O2UubWlldW1wYXJlbmtvcmVhbj0xMjgwNDtlLm1pZXVtcGlldXBrb3JlYW49MTI2NTQ7ZS5taWV1bXNpb3Nrb3JlYW49MTI2NTU7ZS5taWhpcmFnYW5hPTEyNDE1O2UubWlrYXRha2FuYT0xMjUxMTtlLm1pa2F0YWthbmFoYWxmd2lkdGg9NjU0MjQ7ZS5taW51cz04NzIyO2UubWludXNiZWxvd2NtYj04MDA7ZS5taW51c2NpcmNsZT04ODU0O2UubWludXNtb2Q9NzI3O2UubWludXNwbHVzPTg3MjM7ZS5taW51dGU9ODI0MjtlLm1pcmliYWFydXNxdWFyZT0xMzEzMDtlLm1pcmlzcXVhcmU9MTMxMjk7ZS5tbG9uZ2xlZ3R1cm5lZD02MjQ7ZS5tbHNxdWFyZT0xMzIwNjtlLm1tY3ViZWRzcXVhcmU9MTMyMTk7ZS5tbW9ub3NwYWNlPTY1MzU3O2UubW1zcXVhcmVkc3F1YXJlPTEzMjE1O2UubW9oaXJhZ2FuYT0xMjQxODtlLm1vaG1zcXVhcmU9MTMyNDk7ZS5tb2thdGFrYW5hPTEyNTE0O2UubW9rYXRha2FuYWhhbGZ3aWR0aD02NTQyNztlLm1vbHNxdWFyZT0xMzI3MDtlLm1vbWF0aGFpPTM2MTc7ZS5tb3ZlcnNzcXVhcmU9MTMyMjM7ZS5tb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjI0O2UubXBhcmVuPTkzODQ7ZS5tcGFzcXVhcmU9MTMyMjc7ZS5tc3NxdWFyZT0xMzIzNTtlLm1zdXBlcmlvcj02MzIxNTtlLm10dXJuZWQ9NjIzO2UubXU9MTgxO2UubXUxPTE4MTtlLm11YXNxdWFyZT0xMzE4NjtlLm11Y2hncmVhdGVyPTg4MTE7ZS5tdWNobGVzcz04ODEwO2UubXVmc3F1YXJlPTEzMTk2O2UubXVncmVlaz05NTY7ZS5tdWdzcXVhcmU9MTMxOTc7ZS5tdWhpcmFnYW5hPTEyNDE2O2UubXVrYXRha2FuYT0xMjUxMjtlLm11a2F0YWthbmFoYWxmd2lkdGg9NjU0MjU7ZS5tdWxzcXVhcmU9MTMyMDU7ZS5tdWx0aXBseT0yMTU7ZS5tdW1zcXVhcmU9MTMyMTE7ZS5tdW5haGhlYnJldz0xNDQzO2UubXVuYWhsZWZ0aGVicmV3PTE0NDM7ZS5tdXNpY2Fsbm90ZT05ODM0O2UubXVzaWNhbG5vdGVkYmw9OTgzNTtlLm11c2ljZmxhdHNpZ249OTgzNztlLm11c2ljc2hhcnBzaWduPTk4Mzk7ZS5tdXNzcXVhcmU9MTMyMzQ7ZS5tdXZzcXVhcmU9MTMyMzg7ZS5tdXdzcXVhcmU9MTMyNDQ7ZS5tdm1lZ2FzcXVhcmU9MTMyNDE7ZS5tdnNxdWFyZT0xMzIzOTtlLm13bWVnYXNxdWFyZT0xMzI0NztlLm13c3F1YXJlPTEzMjQ1O2Uubj0xMTA7ZS5uYWJlbmdhbGk9MjQ3MjtlLm5hYmxhPTg3MTE7ZS5uYWN1dGU9MzI0O2UubmFkZXZhPTIzNDQ7ZS5uYWd1amFyYXRpPTI3Mjg7ZS5uYWd1cm11a2hpPTI2MDA7ZS5uYWhpcmFnYW5hPTEyMzk0O2UubmFrYXRha2FuYT0xMjQ5MDtlLm5ha2F0YWthbmFoYWxmd2lkdGg9NjU0MTM7ZS5uYXBvc3Ryb3BoZT0zMjk7ZS5uYXNxdWFyZT0xMzE4NTtlLm5ib3BvbW9mbz0xMjU1NTtlLm5ic3BhY2U9MTYwO2UubmNhcm9uPTMyODtlLm5jZWRpbGxhPTMyNjtlLm5jaXJjbGU9OTQzNztlLm5jaXJjdW1mbGV4YmVsb3c9Nzc1NTtlLm5jb21tYWFjY2VudD0zMjY7ZS5uZG90YWNjZW50PTc3NDk7ZS5uZG90YmVsb3c9Nzc1MTtlLm5laGlyYWdhbmE9MTIzOTc7ZS5uZWthdGFrYW5hPTEyNDkzO2UubmVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNjtlLm5ld3NoZXFlbHNpZ249ODM2MjtlLm5mc3F1YXJlPTEzMTk1O2UubmdhYmVuZ2FsaT0yNDU3O2UubmdhZGV2YT0yMzI5O2UubmdhZ3VqYXJhdGk9MjcxMztlLm5nYWd1cm11a2hpPTI1ODU7ZS5uZ29uZ3V0aGFpPTM1OTE7ZS5uaGlyYWdhbmE9MTI0MzU7ZS5uaG9va2xlZnQ9NjI2O2Uubmhvb2tyZXRyb2ZsZXg9NjI3O2UubmlldW5hY2lyY2xla29yZWFuPTEyOTExO2UubmlldW5hcGFyZW5rb3JlYW49MTI4MTU7ZS5uaWV1bmNpZXVja29yZWFuPTEyNTk3O2UubmlldW5jaXJjbGVrb3JlYW49MTI4OTc7ZS5uaWV1bmhpZXVoa29yZWFuPTEyNTk4O2UubmlldW5rb3JlYW49MTI1OTY7ZS5uaWV1bnBhbnNpb3Nrb3JlYW49MTI2NDg7ZS5uaWV1bnBhcmVua29yZWFuPTEyODAxO2UubmlldW5zaW9za29yZWFuPTEyNjQ3O2UubmlldW50aWtldXRrb3JlYW49MTI2NDY7ZS5uaWhpcmFnYW5hPTEyMzk1O2UubmlrYXRha2FuYT0xMjQ5MTtlLm5pa2F0YWthbmFoYWxmd2lkdGg9NjU0MTQ7ZS5uaWtoYWhpdGxlZnR0aGFpPTYzNjQxO2UubmlraGFoaXR0aGFpPTM2NjE7ZS5uaW5lPTU3O2UubmluZWFyYWJpYz0xNjQxO2UubmluZWJlbmdhbGk9MjU0MztlLm5pbmVjaXJjbGU9OTMyMDtlLm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTMwO2UubmluZWRldmE9MjQxNTtlLm5pbmVndWphcmF0aT0yNzk5O2UubmluZWd1cm11a2hpPTI2NzE7ZS5uaW5laGFja2FyYWJpYz0xNjQxO2UubmluZWhhbmd6aG91PTEyMzI5O2UubmluZWlkZW9ncmFwaGljcGFyZW49MTI4NDA7ZS5uaW5laW5mZXJpb3I9ODMyOTtlLm5pbmVtb25vc3BhY2U9NjUzMDU7ZS5uaW5lb2xkc3R5bGU9NjMyODk7ZS5uaW5lcGFyZW49OTM0MDtlLm5pbmVwZXJpb2Q9OTM2MDtlLm5pbmVwZXJzaWFuPTE3ODU7ZS5uaW5lcm9tYW49ODU2ODtlLm5pbmVzdXBlcmlvcj04MzEzO2UubmluZXRlZW5jaXJjbGU9OTMzMDtlLm5pbmV0ZWVucGFyZW49OTM1MDtlLm5pbmV0ZWVucGVyaW9kPTkzNzA7ZS5uaW5ldGhhaT0zNjczO2Uubmo9NDYwO2UubmplY3lyaWxsaWM9MTExNDtlLm5rYXRha2FuYT0xMjUzMTtlLm5rYXRha2FuYWhhbGZ3aWR0aD02NTQzNztlLm5sZWdyaWdodGxvbmc9NDE0O2UubmxpbmViZWxvdz03NzUzO2Uubm1vbm9zcGFjZT02NTM1ODtlLm5tc3F1YXJlPTEzMjEwO2Uubm5hYmVuZ2FsaT0yNDY3O2Uubm5hZGV2YT0yMzM5O2Uubm5hZ3VqYXJhdGk9MjcyMztlLm5uYWd1cm11a2hpPTI1OTU7ZS5ubm5hZGV2YT0yMzQ1O2Uubm9oaXJhZ2FuYT0xMjM5ODtlLm5va2F0YWthbmE9MTI0OTQ7ZS5ub2thdGFrYW5haGFsZndpZHRoPTY1NDE3O2Uubm9uYnJlYWtpbmdzcGFjZT0xNjA7ZS5ub25lbnRoYWk9MzYwMztlLm5vbnV0aGFpPTM2MDk7ZS5ub29uYXJhYmljPTE2MDY7ZS5ub29uZmluYWxhcmFiaWM9NjUyNTQ7ZS5ub29uZ2h1bm5hYXJhYmljPTE3MjI7ZS5ub29uZ2h1bm5hZmluYWxhcmFiaWM9NjQ0MTU7ZS5ub29uaW5pdGlhbGFyYWJpYz02NTI1NTtlLm5vb25qZWVtaW5pdGlhbGFyYWJpYz02NDcyMjtlLm5vb25qZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODc7ZS5ub29ubWVkaWFsYXJhYmljPTY1MjU2O2Uubm9vbm1lZW1pbml0aWFsYXJhYmljPTY0NzI1O2Uubm9vbm1lZW1pc29sYXRlZGFyYWJpYz02NDU5MDtlLm5vb25ub29uZmluYWxhcmFiaWM9NjQ2NTM7ZS5ub3Rjb250YWlucz04NzE2O2Uubm90ZWxlbWVudD04NzEzO2Uubm90ZWxlbWVudG9mPTg3MTM7ZS5ub3RlcXVhbD04ODAwO2Uubm90Z3JlYXRlcj04ODE1O2Uubm90Z3JlYXRlcm5vcmVxdWFsPTg4MTc7ZS5ub3RncmVhdGVybm9ybGVzcz04ODI1O2Uubm90aWRlbnRpY2FsPTg4MDI7ZS5ub3RsZXNzPTg4MTQ7ZS5ub3RsZXNzbm9yZXF1YWw9ODgxNjtlLm5vdHBhcmFsbGVsPTg3NDI7ZS5ub3RwcmVjZWRlcz04ODMyO2Uubm90c3Vic2V0PTg4MzY7ZS5ub3RzdWNjZWVkcz04ODMzO2Uubm90c3VwZXJzZXQ9ODgzNztlLm5vd2FybWVuaWFuPTEzOTg7ZS5ucGFyZW49OTM4NTtlLm5zc3F1YXJlPTEzMjMzO2UubnN1cGVyaW9yPTgzMTk7ZS5udGlsZGU9MjQxO2UubnU9OTU3O2UubnVoaXJhZ2FuYT0xMjM5NjtlLm51a2F0YWthbmE9MTI0OTI7ZS5udWthdGFrYW5haGFsZndpZHRoPTY1NDE1O2UubnVrdGFiZW5nYWxpPTI0OTI7ZS5udWt0YWRldmE9MjM2NDtlLm51a3RhZ3VqYXJhdGk9Mjc0ODtlLm51a3RhZ3VybXVraGk9MjYyMDtlLm51bWJlcnNpZ249MzU7ZS5udW1iZXJzaWdubW9ub3NwYWNlPTY1MjgzO2UubnVtYmVyc2lnbnNtYWxsPTY1MTE5O2UubnVtZXJhbHNpZ25ncmVlaz04ODQ7ZS5udW1lcmFsc2lnbmxvd2VyZ3JlZWs9ODg1O2UubnVtZXJvPTg0NzA7ZS5udW49MTUwNDtlLm51bmRhZ2VzaD02NDMyMDtlLm51bmRhZ2VzaGhlYnJldz02NDMyMDtlLm51bmhlYnJldz0xNTA0O2UubnZzcXVhcmU9MTMyMzc7ZS5ud3NxdWFyZT0xMzI0MztlLm55YWJlbmdhbGk9MjQ2MjtlLm55YWRldmE9MjMzNDtlLm55YWd1amFyYXRpPTI3MTg7ZS5ueWFndXJtdWtoaT0yNTkwO2Uubz0xMTE7ZS5vYWN1dGU9MjQzO2Uub2FuZ3RoYWk9MzYyOTtlLm9iYXJyZWQ9NjI5O2Uub2JhcnJlZGN5cmlsbGljPTEyNTc7ZS5vYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU5O2Uub2JlbmdhbGk9MjQ1MTtlLm9ib3BvbW9mbz0xMjU3MTtlLm9icmV2ZT0zMzU7ZS5vY2FuZHJhZGV2YT0yMzIxO2Uub2NhbmRyYWd1amFyYXRpPTI3MDU7ZS5vY2FuZHJhdm93ZWxzaWduZGV2YT0yMzc3O2Uub2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NjE7ZS5vY2Fyb249NDY2O2Uub2NpcmNsZT05NDM4O2Uub2NpcmN1bWZsZXg9MjQ0O2Uub2NpcmN1bWZsZXhhY3V0ZT03ODg5O2Uub2NpcmN1bWZsZXhkb3RiZWxvdz03ODk3O2Uub2NpcmN1bWZsZXhncmF2ZT03ODkxO2Uub2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MztlLm9jaXJjdW1mbGV4dGlsZGU9Nzg5NTtlLm9jeXJpbGxpYz0xMDg2O2Uub2RibGFjdXRlPTMzNztlLm9kYmxncmF2ZT01MjU7ZS5vZGV2YT0yMzIzO2Uub2RpZXJlc2lzPTI0NjtlLm9kaWVyZXNpc2N5cmlsbGljPTEyNTU7ZS5vZG90YmVsb3c9Nzg4NTtlLm9lPTMzOTtlLm9la29yZWFuPTEyNjM0O2Uub2dvbmVrPTczMTtlLm9nb25la2NtYj04MDg7ZS5vZ3JhdmU9MjQyO2Uub2d1amFyYXRpPTI3MDc7ZS5vaGFybWVuaWFuPTE0MTM7ZS5vaGlyYWdhbmE9MTIzNjI7ZS5vaG9va2Fib3ZlPTc4ODc7ZS5vaG9ybj00MTc7ZS5vaG9ybmFjdXRlPTc4OTk7ZS5vaG9ybmRvdGJlbG93PTc5MDc7ZS5vaG9ybmdyYXZlPTc5MDE7ZS5vaG9ybmhvb2thYm92ZT03OTAzO2Uub2hvcm50aWxkZT03OTA1O2Uub2h1bmdhcnVtbGF1dD0zMzc7ZS5vaT00MTk7ZS5vaW52ZXJ0ZWRicmV2ZT01Mjc7ZS5va2F0YWthbmE9MTI0NTg7ZS5va2F0YWthbmFoYWxmd2lkdGg9NjUzOTc7ZS5va29yZWFuPTEyNjMxO2Uub2xlaGVicmV3PTE0NTE7ZS5vbWFjcm9uPTMzMztlLm9tYWNyb25hY3V0ZT03NzYzO2Uub21hY3JvbmdyYXZlPTc3NjE7ZS5vbWRldmE9MjM4NDtlLm9tZWdhPTk2OTtlLm9tZWdhMT05ODI7ZS5vbWVnYWN5cmlsbGljPTExMjE7ZS5vbWVnYWxhdGluY2xvc2VkPTYzMTtlLm9tZWdhcm91bmRjeXJpbGxpYz0xMTQ3O2Uub21lZ2F0aXRsb2N5cmlsbGljPTExNDk7ZS5vbWVnYXRvbm9zPTk3NDtlLm9tZ3VqYXJhdGk9Mjc2ODtlLm9taWNyb249OTU5O2Uub21pY3JvbnRvbm9zPTk3MjtlLm9tb25vc3BhY2U9NjUzNTk7ZS5vbmU9NDk7ZS5vbmVhcmFiaWM9MTYzMztlLm9uZWJlbmdhbGk9MjUzNTtlLm9uZWNpcmNsZT05MzEyO2Uub25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMjtlLm9uZWRldmE9MjQwNztlLm9uZWRvdGVubGVhZGVyPTgyMjg7ZS5vbmVlaWdodGg9ODUzOTtlLm9uZWZpdHRlZD02MzE5NjtlLm9uZWd1amFyYXRpPTI3OTE7ZS5vbmVndXJtdWtoaT0yNjYzO2Uub25laGFja2FyYWJpYz0xNjMzO2Uub25laGFsZj0xODk7ZS5vbmVoYW5nemhvdT0xMjMyMTtlLm9uZWlkZW9ncmFwaGljcGFyZW49MTI4MzI7ZS5vbmVpbmZlcmlvcj04MzIxO2Uub25lbW9ub3NwYWNlPTY1Mjk3O2Uub25lbnVtZXJhdG9yYmVuZ2FsaT0yNTQ4O2Uub25lb2xkc3R5bGU9NjMyODE7ZS5vbmVwYXJlbj05MzMyO2Uub25lcGVyaW9kPTkzNTI7ZS5vbmVwZXJzaWFuPTE3Nzc7ZS5vbmVxdWFydGVyPTE4ODtlLm9uZXJvbWFuPTg1NjA7ZS5vbmVzdXBlcmlvcj0xODU7ZS5vbmV0aGFpPTM2NjU7ZS5vbmV0aGlyZD04NTMxO2Uub29nb25laz00OTE7ZS5vb2dvbmVrbWFjcm9uPTQ5MztlLm9vZ3VybXVraGk9MjU3OTtlLm9vbWF0cmFndXJtdWtoaT0yNjM1O2Uub29wZW49NTk2O2Uub3BhcmVuPTkzODY7ZS5vcGVuYnVsbGV0PTk3MDI7ZS5vcHRpb249ODk5NztlLm9yZGZlbWluaW5lPTE3MDtlLm9yZG1hc2N1bGluZT0xODY7ZS5vcnRob2dvbmFsPTg3MzU7ZS5vc2hvcnRkZXZhPTIzMjI7ZS5vc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzg7ZS5vc2xhc2g9MjQ4O2Uub3NsYXNoYWN1dGU9NTExO2Uub3NtYWxsaGlyYWdhbmE9MTIzNjE7ZS5vc21hbGxrYXRha2FuYT0xMjQ1NztlLm9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg3O2Uub3N0cm9rZWFjdXRlPTUxMTtlLm9zdXBlcmlvcj02MzIxNjtlLm90Y3lyaWxsaWM9MTE1MTtlLm90aWxkZT0yNDU7ZS5vdGlsZGVhY3V0ZT03NzU3O2Uub3RpbGRlZGllcmVzaXM9Nzc1OTtlLm91Ym9wb21vZm89MTI1Nzc7ZS5vdmVybGluZT04MjU0O2Uub3ZlcmxpbmVjZW50ZXJsaW5lPTY1MDk4O2Uub3ZlcmxpbmVjbWI9NzczO2Uub3ZlcmxpbmVkYXNoZWQ9NjUwOTc7ZS5vdmVybGluZWRibHdhdnk9NjUxMDA7ZS5vdmVybGluZXdhdnk9NjUwOTk7ZS5vdmVyc2NvcmU9MTc1O2Uub3Zvd2Vsc2lnbmJlbmdhbGk9MjUwNztlLm92b3dlbHNpZ25kZXZhPTIzNzk7ZS5vdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MztlLnA9MTEyO2UucGFhbXBzc3F1YXJlPTEzMTg0O2UucGFhc2VudG9zcXVhcmU9MTMwOTk7ZS5wYWJlbmdhbGk9MjQ3NDtlLnBhY3V0ZT03NzY1O2UucGFkZXZhPTIzNDY7ZS5wYWdlZG93bj04NjcxO2UucGFnZXVwPTg2NzA7ZS5wYWd1amFyYXRpPTI3MzA7ZS5wYWd1cm11a2hpPTI2MDI7ZS5wYWhpcmFnYW5hPTEyNDAxO2UucGFpeWFubm9pdGhhaT0zNjMxO2UucGFrYXRha2FuYT0xMjQ5NztlLnBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWI9MTE1NjtlLnBhbG9jaGthY3lyaWxsaWM9MTIxNjtlLnBhbnNpb3Nrb3JlYW49MTI2NzE7ZS5wYXJhZ3JhcGg9MTgyO2UucGFyYWxsZWw9ODc0MTtlLnBhcmVubGVmdD00MDtlLnBhcmVubGVmdGFsdG9uZWFyYWJpYz02NDgzMDtlLnBhcmVubGVmdGJ0PTYzNzI1O2UucGFyZW5sZWZ0ZXg9NjM3MjQ7ZS5wYXJlbmxlZnRpbmZlcmlvcj04MzMzO2UucGFyZW5sZWZ0bW9ub3NwYWNlPTY1Mjg4O2UucGFyZW5sZWZ0c21hbGw9NjUxMTM7ZS5wYXJlbmxlZnRzdXBlcmlvcj04MzE3O2UucGFyZW5sZWZ0dHA9NjM3MjM7ZS5wYXJlbmxlZnR2ZXJ0aWNhbD02NTA3NztlLnBhcmVucmlnaHQ9NDE7ZS5wYXJlbnJpZ2h0YWx0b25lYXJhYmljPTY0ODMxO2UucGFyZW5yaWdodGJ0PTYzNzM2O2UucGFyZW5yaWdodGV4PTYzNzM1O2UucGFyZW5yaWdodGluZmVyaW9yPTgzMzQ7ZS5wYXJlbnJpZ2h0bW9ub3NwYWNlPTY1Mjg5O2UucGFyZW5yaWdodHNtYWxsPTY1MTE0O2UucGFyZW5yaWdodHN1cGVyaW9yPTgzMTg7ZS5wYXJlbnJpZ2h0dHA9NjM3MzQ7ZS5wYXJlbnJpZ2h0dmVydGljYWw9NjUwNzg7ZS5wYXJ0aWFsZGlmZj04NzA2O2UucGFzZXFoZWJyZXc9MTQ3MjtlLnBhc2h0YWhlYnJldz0xNDMzO2UucGFzcXVhcmU9MTMyMjU7ZS5wYXRhaD0xNDYzO2UucGF0YWgxMT0xNDYzO2UucGF0YWgxZD0xNDYzO2UucGF0YWgyYT0xNDYzO2UucGF0YWhoZWJyZXc9MTQ2MztlLnBhdGFobmFycm93aGVicmV3PTE0NjM7ZS5wYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ2MztlLnBhdGFod2lkZWhlYnJldz0xNDYzO2UucGF6ZXJoZWJyZXc9MTQ0MTtlLnBib3BvbW9mbz0xMjU1MDtlLnBjaXJjbGU9OTQzOTtlLnBkb3RhY2NlbnQ9Nzc2NztlLnBlPTE1MDg7ZS5wZWN5cmlsbGljPTEwODc7ZS5wZWRhZ2VzaD02NDMyNDtlLnBlZGFnZXNoaGVicmV3PTY0MzI0O2UucGVlemlzcXVhcmU9MTMxMTU7ZS5wZWZpbmFsZGFnZXNoaGVicmV3PTY0MzIzO2UucGVoYXJhYmljPTE2NjI7ZS5wZWhhcm1lbmlhbj0xNDAyO2UucGVoZWJyZXc9MTUwODtlLnBlaGZpbmFsYXJhYmljPTY0MzQzO2UucGVoaW5pdGlhbGFyYWJpYz02NDM0NDtlLnBlaGlyYWdhbmE9MTI0MTA7ZS5wZWhtZWRpYWxhcmFiaWM9NjQzNDU7ZS5wZWthdGFrYW5hPTEyNTA2O2UucGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MTtlLnBlcmFmZWhlYnJldz02NDMzNDtlLnBlcmNlbnQ9Mzc7ZS5wZXJjZW50YXJhYmljPTE2NDI7ZS5wZXJjZW50bW9ub3NwYWNlPTY1Mjg1O2UucGVyY2VudHNtYWxsPTY1MTMwO2UucGVyaW9kPTQ2O2UucGVyaW9kYXJtZW5pYW49MTQxNztlLnBlcmlvZGNlbnRlcmVkPTE4MztlLnBlcmlvZGhhbGZ3aWR0aD02NTM3NztlLnBlcmlvZGluZmVyaW9yPTYzMjA3O2UucGVyaW9kbW9ub3NwYWNlPTY1Mjk0O2UucGVyaW9kc21hbGw9NjUxMDY7ZS5wZXJpb2RzdXBlcmlvcj02MzIwODtlLnBlcmlzcG9tZW5pZ3JlZWtjbWI9ODM0O2UucGVycGVuZGljdWxhcj04ODY5O2UucGVydGhvdXNhbmQ9ODI0MDtlLnBlc2V0YT04MzU5O2UucGZzcXVhcmU9MTMxOTQ7ZS5waGFiZW5nYWxpPTI0NzU7ZS5waGFkZXZhPTIzNDc7ZS5waGFndWphcmF0aT0yNzMxO2UucGhhZ3VybXVraGk9MjYwMztlLnBoaT05NjY7ZS5waGkxPTk4MTtlLnBoaWV1cGhhY2lyY2xla29yZWFuPTEyOTIyO2UucGhpZXVwaGFwYXJlbmtvcmVhbj0xMjgyNjtlLnBoaWV1cGhjaXJjbGVrb3JlYW49MTI5MDg7ZS5waGlldXBoa29yZWFuPTEyNjIxO2UucGhpZXVwaHBhcmVua29yZWFuPTEyODEyO2UucGhpbGF0aW49NjMyO2UucGhpbnRodXRoYWk9MzY0MjtlLnBoaXN5bWJvbGdyZWVrPTk4MTtlLnBob29rPTQyMTtlLnBob3BoYW50aGFpPTM2MTQ7ZS5waG9waHVuZ3RoYWk9MzYxMjtlLnBob3NhbXBoYW90aGFpPTM2MTY7ZS5waT05NjA7ZS5waWV1cGFjaXJjbGVrb3JlYW49MTI5MTU7ZS5waWV1cGFwYXJlbmtvcmVhbj0xMjgxOTtlLnBpZXVwY2lldWNrb3JlYW49MTI2NjI7ZS5waWV1cGNpcmNsZWtvcmVhbj0xMjkwMTtlLnBpZXVwa2l5ZW9ra29yZWFuPTEyNjU4O2UucGlldXBrb3JlYW49MTI2MTA7ZS5waWV1cHBhcmVua29yZWFuPTEyODA1O2UucGlldXBzaW9za2l5ZW9ra29yZWFuPTEyNjYwO2UucGlldXBzaW9za29yZWFuPTEyNjEyO2UucGlldXBzaW9zdGlrZXV0a29yZWFuPTEyNjYxO2UucGlldXB0aGlldXRoa29yZWFuPTEyNjYzO2UucGlldXB0aWtldXRrb3JlYW49MTI2NTk7ZS5waWhpcmFnYW5hPTEyNDA0O2UucGlrYXRha2FuYT0xMjUwMDtlLnBpc3ltYm9sZ3JlZWs9OTgyO2UucGl3cmFybWVuaWFuPTE0MTE7ZS5wbGFuY2tvdmVyMnBpPTg0NjM7ZS5wbGFuY2tvdmVyMnBpMT04NDYzO2UucGx1cz00MztlLnBsdXNiZWxvd2NtYj03OTk7ZS5wbHVzY2lyY2xlPTg4NTM7ZS5wbHVzbWludXM9MTc3O2UucGx1c21vZD03MjY7ZS5wbHVzbW9ub3NwYWNlPTY1MjkxO2UucGx1c3NtYWxsPTY1MTIyO2UucGx1c3N1cGVyaW9yPTgzMTQ7ZS5wbW9ub3NwYWNlPTY1MzYwO2UucG1zcXVhcmU9MTMyNzI7ZS5wb2hpcmFnYW5hPTEyNDEzO2UucG9pbnRpbmdpbmRleGRvd253aGl0ZT05NzU5O2UucG9pbnRpbmdpbmRleGxlZnR3aGl0ZT05NzU2O2UucG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU9OTc1ODtlLnBvaW50aW5naW5kZXh1cHdoaXRlPTk3NTc7ZS5wb2thdGFrYW5hPTEyNTA5O2UucG9wbGF0aGFpPTM2MTE7ZS5wb3N0YWxtYXJrPTEyMzA2O2UucG9zdGFsbWFya2ZhY2U9MTIzMjA7ZS5wcGFyZW49OTM4NztlLnByZWNlZGVzPTg4MjY7ZS5wcmVzY3JpcHRpb249ODQ3ODtlLnByaW1lbW9kPTY5NztlLnByaW1lcmV2ZXJzZWQ9ODI0NTtlLnByb2R1Y3Q9ODcxOTtlLnByb2plY3RpdmU9ODk2NTtlLnByb2xvbmdlZGthbmE9MTI1NDA7ZS5wcm9wZWxsb3I9ODk4NDtlLnByb3BlcnN1YnNldD04ODM0O2UucHJvcGVyc3VwZXJzZXQ9ODgzNTtlLnByb3BvcnRpb249ODc1OTtlLnByb3BvcnRpb25hbD04NzMzO2UucHNpPTk2ODtlLnBzaWN5cmlsbGljPTExMzc7ZS5wc2lsaXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1ODtlLnBzc3F1YXJlPTEzMjMyO2UucHVoaXJhZ2FuYT0xMjQwNztlLnB1a2F0YWthbmE9MTI1MDM7ZS5wdnNxdWFyZT0xMzIzNjtlLnB3c3F1YXJlPTEzMjQyO2UucT0xMTM7ZS5xYWRldmE9MjM5MjtlLnFhZG1haGVicmV3PTE0NDg7ZS5xYWZhcmFiaWM9MTYwMjtlLnFhZmZpbmFsYXJhYmljPTY1MjM4O2UucWFmaW5pdGlhbGFyYWJpYz02NTIzOTtlLnFhZm1lZGlhbGFyYWJpYz02NTI0MDtlLnFhbWF0cz0xNDY0O2UucWFtYXRzMTA9MTQ2NDtlLnFhbWF0czFhPTE0NjQ7ZS5xYW1hdHMxYz0xNDY0O2UucWFtYXRzMjc9MTQ2NDtlLnFhbWF0czI5PTE0NjQ7ZS5xYW1hdHMzMz0xNDY0O2UucWFtYXRzZGU9MTQ2NDtlLnFhbWF0c2hlYnJldz0xNDY0O2UucWFtYXRzbmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5uYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFucXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW53aWRlaGVicmV3PTE0NjQ7ZS5xYW1hdHNxdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHN3aWRlaGVicmV3PTE0NjQ7ZS5xYXJuZXlwYXJhaGVicmV3PTE0Mzk7ZS5xYm9wb21vZm89MTI1NjE7ZS5xY2lyY2xlPTk0NDA7ZS5xaG9vaz02NzI7ZS5xbW9ub3NwYWNlPTY1MzYxO2UucW9mPTE1MTE7ZS5xb2ZkYWdlc2g9NjQzMjc7ZS5xb2ZkYWdlc2hoZWJyZXc9NjQzMjc7ZS5xb2ZoZWJyZXc9MTUxMTtlLnFwYXJlbj05Mzg4O2UucXVhcnRlcm5vdGU9OTgzMztlLnF1YnV0cz0xNDY3O2UucXVidXRzMTg9MTQ2NztlLnF1YnV0czI1PTE0Njc7ZS5xdWJ1dHMzMT0xNDY3O2UucXVidXRzaGVicmV3PTE0Njc7ZS5xdWJ1dHNuYXJyb3doZWJyZXc9MTQ2NztlLnF1YnV0c3F1YXJ0ZXJoZWJyZXc9MTQ2NztlLnF1YnV0c3dpZGVoZWJyZXc9MTQ2NztlLnF1ZXN0aW9uPTYzO2UucXVlc3Rpb25hcmFiaWM9MTU2NztlLnF1ZXN0aW9uYXJtZW5pYW49MTM3NDtlLnF1ZXN0aW9uZG93bj0xOTE7ZS5xdWVzdGlvbmRvd25zbWFsbD02MzQyMztlLnF1ZXN0aW9uZ3JlZWs9ODk0O2UucXVlc3Rpb25tb25vc3BhY2U9NjUzMTE7ZS5xdWVzdGlvbnNtYWxsPTYzMjk1O2UucXVvdGVkYmw9MzQ7ZS5xdW90ZWRibGJhc2U9ODIyMjtlLnF1b3RlZGJsbGVmdD04MjIwO2UucXVvdGVkYmxtb25vc3BhY2U9NjUyODI7ZS5xdW90ZWRibHByaW1lPTEyMzE4O2UucXVvdGVkYmxwcmltZXJldmVyc2VkPTEyMzE3O2UucXVvdGVkYmxyaWdodD04MjIxO2UucXVvdGVsZWZ0PTgyMTY7ZS5xdW90ZWxlZnRyZXZlcnNlZD04MjE5O2UucXVvdGVyZXZlcnNlZD04MjE5O2UucXVvdGVyaWdodD04MjE3O2UucXVvdGVyaWdodG49MzI5O2UucXVvdGVzaW5nbGJhc2U9ODIxODtlLnF1b3Rlc2luZ2xlPTM5O2UucXVvdGVzaW5nbGVtb25vc3BhY2U9NjUyODc7ZS5yPTExNDtlLnJhYXJtZW5pYW49MTQwNDtlLnJhYmVuZ2FsaT0yNDgwO2UucmFjdXRlPTM0MTtlLnJhZGV2YT0yMzUyO2UucmFkaWNhbD04NzMwO2UucmFkaWNhbGV4PTYzNzE3O2UucmFkb3ZlcnNzcXVhcmU9MTMyMzA7ZS5yYWRvdmVyc3NxdWFyZWRzcXVhcmU9MTMyMzE7ZS5yYWRzcXVhcmU9MTMyMjk7ZS5yYWZlPTE0NzE7ZS5yYWZlaGVicmV3PTE0NzE7ZS5yYWd1amFyYXRpPTI3MzY7ZS5yYWd1cm11a2hpPTI2MDg7ZS5yYWhpcmFnYW5hPTEyNDI1O2UucmFrYXRha2FuYT0xMjUyMTtlLnJha2F0YWthbmFoYWxmd2lkdGg9NjU0MzE7ZS5yYWxvd2VyZGlhZ29uYWxiZW5nYWxpPTI1NDU7ZS5yYW1pZGRsZWRpYWdvbmFsYmVuZ2FsaT0yNTQ0O2UucmFtc2hvcm49NjEyO2UucmF0aW89ODc1ODtlLnJib3BvbW9mbz0xMjU2NjtlLnJjYXJvbj0zNDU7ZS5yY2VkaWxsYT0zNDM7ZS5yY2lyY2xlPTk0NDE7ZS5yY29tbWFhY2NlbnQ9MzQzO2UucmRibGdyYXZlPTUyOTtlLnJkb3RhY2NlbnQ9Nzc2OTtlLnJkb3RiZWxvdz03NzcxO2UucmRvdGJlbG93bWFjcm9uPTc3NzM7ZS5yZWZlcmVuY2VtYXJrPTgyNTE7ZS5yZWZsZXhzdWJzZXQ9ODgzODtlLnJlZmxleHN1cGVyc2V0PTg4Mzk7ZS5yZWdpc3RlcmVkPTE3NDtlLnJlZ2lzdGVyc2Fucz02MzcyMDtlLnJlZ2lzdGVyc2VyaWY9NjMxOTQ7ZS5yZWhhcmFiaWM9MTU4NTtlLnJlaGFybWVuaWFuPTE0MDg7ZS5yZWhmaW5hbGFyYWJpYz02NTE5ODtlLnJlaGlyYWdhbmE9MTI0Mjg7ZS5yZWthdGFrYW5hPTEyNTI0O2UucmVrYXRha2FuYWhhbGZ3aWR0aD02NTQzNDtlLnJlc2g9MTUxMjtlLnJlc2hkYWdlc2hoZWJyZXc9NjQzMjg7ZS5yZXNoaGVicmV3PTE1MTI7ZS5yZXZlcnNlZHRpbGRlPTg3NjU7ZS5yZXZpYWhlYnJldz0xNDMxO2UucmV2aWFtdWdyYXNoaGVicmV3PTE0MzE7ZS5yZXZsb2dpY2Fsbm90PTg5NzY7ZS5yZmlzaGhvb2s9NjM4O2UucmZpc2hob29rcmV2ZXJzZWQ9NjM5O2UucmhhYmVuZ2FsaT0yNTI1O2UucmhhZGV2YT0yMzk3O2UucmhvPTk2MTtlLnJob29rPTYzNztlLnJob29rdHVybmVkPTYzNTtlLnJob29rdHVybmVkc3VwZXJpb3I9NjkzO2Uucmhvc3ltYm9sZ3JlZWs9MTAwOTtlLnJob3RpY2hvb2ttb2Q9NzM0O2UucmlldWxhY2lyY2xla29yZWFuPTEyOTEzO2UucmlldWxhcGFyZW5rb3JlYW49MTI4MTc7ZS5yaWV1bGNpcmNsZWtvcmVhbj0xMjg5OTtlLnJpZXVsaGlldWhrb3JlYW49MTI2MDg7ZS5yaWV1bGtpeWVva2tvcmVhbj0xMjYwMjtlLnJpZXVsa2l5ZW9rc2lvc2tvcmVhbj0xMjY0OTtlLnJpZXVsa29yZWFuPTEyNjAxO2UucmlldWxtaWV1bWtvcmVhbj0xMjYwMztlLnJpZXVscGFuc2lvc2tvcmVhbj0xMjY1MjtlLnJpZXVscGFyZW5rb3JlYW49MTI4MDM7ZS5yaWV1bHBoaWV1cGhrb3JlYW49MTI2MDc7ZS5yaWV1bHBpZXVwa29yZWFuPTEyNjA0O2UucmlldWxwaWV1cHNpb3Nrb3JlYW49MTI2NTE7ZS5yaWV1bHNpb3Nrb3JlYW49MTI2MDU7ZS5yaWV1bHRoaWV1dGhrb3JlYW49MTI2MDY7ZS5yaWV1bHRpa2V1dGtvcmVhbj0xMjY1MDtlLnJpZXVseWVvcmluaGlldWhrb3JlYW49MTI2NTM7ZS5yaWdodGFuZ2xlPTg3MzU7ZS5yaWdodHRhY2tiZWxvd2NtYj03OTM7ZS5yaWdodHRyaWFuZ2xlPTg4OTU7ZS5yaWhpcmFnYW5hPTEyNDI2O2UucmlrYXRha2FuYT0xMjUyMjtlLnJpa2F0YWthbmFoYWxmd2lkdGg9NjU0MzI7ZS5yaW5nPTczMDtlLnJpbmdiZWxvd2NtYj04MDU7ZS5yaW5nY21iPTc3ODtlLnJpbmdoYWxmbGVmdD03MDM7ZS5yaW5naGFsZmxlZnRhcm1lbmlhbj0xMzY5O2UucmluZ2hhbGZsZWZ0YmVsb3djbWI9Nzk2O2UucmluZ2hhbGZsZWZ0Y2VudGVyZWQ9NzIzO2UucmluZ2hhbGZyaWdodD03MDI7ZS5yaW5naGFsZnJpZ2h0YmVsb3djbWI9ODI1O2UucmluZ2hhbGZyaWdodGNlbnRlcmVkPTcyMjtlLnJpbnZlcnRlZGJyZXZlPTUzMTtlLnJpdHRvcnVzcXVhcmU9MTMxMzc7ZS5ybGluZWJlbG93PTc3NzU7ZS5ybG9uZ2xlZz02MzY7ZS5ybG9uZ2xlZ3R1cm5lZD02MzQ7ZS5ybW9ub3NwYWNlPTY1MzYyO2Uucm9oaXJhZ2FuYT0xMjQyOTtlLnJva2F0YWthbmE9MTI1MjU7ZS5yb2thdGFrYW5haGFsZndpZHRoPTY1NDM1O2Uucm9ydWF0aGFpPTM2MTk7ZS5ycGFyZW49OTM4OTtlLnJyYWJlbmdhbGk9MjUyNDtlLnJyYWRldmE9MjM1MztlLnJyYWd1cm11a2hpPTI2NTI7ZS5ycmVoYXJhYmljPTE2ODE7ZS5ycmVoZmluYWxhcmFiaWM9NjQzOTc7ZS5ycnZvY2FsaWNiZW5nYWxpPTI1Mjg7ZS5ycnZvY2FsaWNkZXZhPTI0MDA7ZS5ycnZvY2FsaWNndWphcmF0aT0yNzg0O2UucnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTAwO2UucnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcyO2UucnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NjtlLnJzdXBlcmlvcj02MzIxNztlLnJ0YmxvY2s9OTYxNjtlLnJ0dXJuZWQ9NjMzO2UucnR1cm5lZHN1cGVyaW9yPTY5MjtlLnJ1aGlyYWdhbmE9MTI0Mjc7ZS5ydWthdGFrYW5hPTEyNTIzO2UucnVrYXRha2FuYWhhbGZ3aWR0aD02NTQzMztlLnJ1cGVlbWFya2JlbmdhbGk9MjU0NjtlLnJ1cGVlc2lnbmJlbmdhbGk9MjU0NztlLnJ1cGlhaD02MzE5NztlLnJ1dGhhaT0zNjIwO2UucnZvY2FsaWNiZW5nYWxpPTI0NDM7ZS5ydm9jYWxpY2RldmE9MjMxNTtlLnJ2b2NhbGljZ3VqYXJhdGk9MjY5OTtlLnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNDk5O2UucnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzE7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTU7ZS5zPTExNTtlLnNhYmVuZ2FsaT0yNDg4O2Uuc2FjdXRlPTM0NztlLnNhY3V0ZWRvdGFjY2VudD03NzgxO2Uuc2FkYXJhYmljPTE1ODk7ZS5zYWRldmE9MjM2MDtlLnNhZGZpbmFsYXJhYmljPTY1MjEwO2Uuc2FkaW5pdGlhbGFyYWJpYz02NTIxMTtlLnNhZG1lZGlhbGFyYWJpYz02NTIxMjtlLnNhZ3VqYXJhdGk9Mjc0NDtlLnNhZ3VybXVraGk9MjYxNjtlLnNhaGlyYWdhbmE9MTIzNzM7ZS5zYWthdGFrYW5hPTEyNDY5O2Uuc2FrYXRha2FuYWhhbGZ3aWR0aD02NTQwMztlLnNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM9NjUwMTg7ZS5zYW1la2g9MTUwNTtlLnNhbWVraGRhZ2VzaD02NDMyMTtlLnNhbWVraGRhZ2VzaGhlYnJldz02NDMyMTtlLnNhbWVraGhlYnJldz0xNTA1O2Uuc2FyYWFhdGhhaT0zNjM0O2Uuc2FyYWFldGhhaT0zNjQ5O2Uuc2FyYWFpbWFpbWFsYWl0aGFpPTM2NTI7ZS5zYXJhYWltYWltdWFudGhhaT0zNjUxO2Uuc2FyYWFtdGhhaT0zNjM1O2Uuc2FyYWF0aGFpPTM2MzI7ZS5zYXJhZXRoYWk9MzY0ODtlLnNhcmFpaWxlZnR0aGFpPTYzNjIyO2Uuc2FyYWlpdGhhaT0zNjM3O2Uuc2FyYWlsZWZ0dGhhaT02MzYyMTtlLnNhcmFpdGhhaT0zNjM2O2Uuc2FyYW90aGFpPTM2NTA7ZS5zYXJhdWVlbGVmdHRoYWk9NjM2MjQ7ZS5zYXJhdWVldGhhaT0zNjM5O2Uuc2FyYXVlbGVmdHRoYWk9NjM2MjM7ZS5zYXJhdWV0aGFpPTM2Mzg7ZS5zYXJhdXRoYWk9MzY0MDtlLnNhcmF1dXRoYWk9MzY0MTtlLnNib3BvbW9mbz0xMjU2OTtlLnNjYXJvbj0zNTM7ZS5zY2Fyb25kb3RhY2NlbnQ9Nzc4MztlLnNjZWRpbGxhPTM1MTtlLnNjaHdhPTYwMTtlLnNjaHdhY3lyaWxsaWM9MTI0MTtlLnNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQzO2Uuc2Nod2Fob29rPTYwMjtlLnNjaXJjbGU9OTQ0MjtlLnNjaXJjdW1mbGV4PTM0OTtlLnNjb21tYWFjY2VudD01Mzc7ZS5zZG90YWNjZW50PTc3Nzc7ZS5zZG90YmVsb3c9Nzc3OTtlLnNkb3RiZWxvd2RvdGFjY2VudD03Nzg1O2Uuc2VhZ3VsbGJlbG93Y21iPTgyODtlLnNlY29uZD04MjQzO2Uuc2Vjb25kdG9uZWNoaW5lc2U9NzE0O2Uuc2VjdGlvbj0xNjc7ZS5zZWVuYXJhYmljPTE1ODc7ZS5zZWVuZmluYWxhcmFiaWM9NjUyMDI7ZS5zZWVuaW5pdGlhbGFyYWJpYz02NTIwMztlLnNlZW5tZWRpYWxhcmFiaWM9NjUyMDQ7ZS5zZWdvbD0xNDYyO2Uuc2Vnb2wxMz0xNDYyO2Uuc2Vnb2wxZj0xNDYyO2Uuc2Vnb2wyYz0xNDYyO2Uuc2Vnb2xoZWJyZXc9MTQ2MjtlLnNlZ29sbmFycm93aGVicmV3PTE0NjI7ZS5zZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ2MjtlLnNlZ29sdGFoZWJyZXc9MTQyNjtlLnNlZ29sd2lkZWhlYnJldz0xNDYyO2Uuc2VoYXJtZW5pYW49MTQwNTtlLnNlaGlyYWdhbmE9MTIzNzk7ZS5zZWthdGFrYW5hPTEyNDc1O2Uuc2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNjtlLnNlbWljb2xvbj01OTtlLnNlbWljb2xvbmFyYWJpYz0xNTYzO2Uuc2VtaWNvbG9ubW9ub3NwYWNlPTY1MzA3O2Uuc2VtaWNvbG9uc21hbGw9NjUxMDg7ZS5zZW1pdm9pY2VkbWFya2thbmE9MTI0NDQ7ZS5zZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzk7ZS5zZW50aXNxdWFyZT0xMzA5MDtlLnNlbnRvc3F1YXJlPTEzMDkxO2Uuc2V2ZW49NTU7ZS5zZXZlbmFyYWJpYz0xNjM5O2Uuc2V2ZW5iZW5nYWxpPTI1NDE7ZS5zZXZlbmNpcmNsZT05MzE4O2Uuc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI4O2Uuc2V2ZW5kZXZhPTI0MTM7ZS5zZXZlbmVpZ2h0aHM9ODU0MjtlLnNldmVuZ3VqYXJhdGk9Mjc5NztlLnNldmVuZ3VybXVraGk9MjY2OTtlLnNldmVuaGFja2FyYWJpYz0xNjM5O2Uuc2V2ZW5oYW5nemhvdT0xMjMyNztlLnNldmVuaWRlb2dyYXBoaWNwYXJlbj0xMjgzODtlLnNldmVuaW5mZXJpb3I9ODMyNztlLnNldmVubW9ub3NwYWNlPTY1MzAzO2Uuc2V2ZW5vbGRzdHlsZT02MzI4NztlLnNldmVucGFyZW49OTMzODtlLnNldmVucGVyaW9kPTkzNTg7ZS5zZXZlbnBlcnNpYW49MTc4MztlLnNldmVucm9tYW49ODU2NjtlLnNldmVuc3VwZXJpb3I9ODMxMTtlLnNldmVudGVlbmNpcmNsZT05MzI4O2Uuc2V2ZW50ZWVucGFyZW49OTM0ODtlLnNldmVudGVlbnBlcmlvZD05MzY4O2Uuc2V2ZW50aGFpPTM2NzE7ZS5zZnRoeXBoZW49MTczO2Uuc2hhYXJtZW5pYW49MTM5OTtlLnNoYWJlbmdhbGk9MjQ4NjtlLnNoYWN5cmlsbGljPTEwOTY7ZS5zaGFkZGFhcmFiaWM9MTYxNztlLnNoYWRkYWRhbW1hYXJhYmljPTY0NjA5O2Uuc2hhZGRhZGFtbWF0YW5hcmFiaWM9NjQ2MDY7ZS5zaGFkZGFmYXRoYWFyYWJpYz02NDYwODtlLnNoYWRkYWthc3JhYXJhYmljPTY0NjEwO2Uuc2hhZGRha2FzcmF0YW5hcmFiaWM9NjQ2MDc7ZS5zaGFkZT05NjE4O2Uuc2hhZGVkYXJrPTk2MTk7ZS5zaGFkZWxpZ2h0PTk2MTc7ZS5zaGFkZW1lZGl1bT05NjE4O2Uuc2hhZGV2YT0yMzU4O2Uuc2hhZ3VqYXJhdGk9Mjc0MjtlLnNoYWd1cm11a2hpPTI2MTQ7ZS5zaGFsc2hlbGV0aGVicmV3PTE0Mjc7ZS5zaGJvcG9tb2ZvPTEyNTY1O2Uuc2hjaGFjeXJpbGxpYz0xMDk3O2Uuc2hlZW5hcmFiaWM9MTU4ODtlLnNoZWVuZmluYWxhcmFiaWM9NjUyMDY7ZS5zaGVlbmluaXRpYWxhcmFiaWM9NjUyMDc7ZS5zaGVlbm1lZGlhbGFyYWJpYz02NTIwODtlLnNoZWljb3B0aWM9OTk1O2Uuc2hlcWVsPTgzNjI7ZS5zaGVxZWxoZWJyZXc9ODM2MjtlLnNoZXZhPTE0NTY7ZS5zaGV2YTExNT0xNDU2O2Uuc2hldmExNT0xNDU2O2Uuc2hldmEyMj0xNDU2O2Uuc2hldmEyZT0xNDU2O2Uuc2hldmFoZWJyZXc9MTQ1NjtlLnNoZXZhbmFycm93aGVicmV3PTE0NTY7ZS5zaGV2YXF1YXJ0ZXJoZWJyZXc9MTQ1NjtlLnNoZXZhd2lkZWhlYnJldz0xNDU2O2Uuc2hoYWN5cmlsbGljPTEyMTE7ZS5zaGltYWNvcHRpYz0xMDA1O2Uuc2hpbj0xNTEzO2Uuc2hpbmRhZ2VzaD02NDMyOTtlLnNoaW5kYWdlc2hoZWJyZXc9NjQzMjk7ZS5zaGluZGFnZXNoc2hpbmRvdD02NDMwMDtlLnNoaW5kYWdlc2hzaGluZG90aGVicmV3PTY0MzAwO2Uuc2hpbmRhZ2VzaHNpbmRvdD02NDMwMTtlLnNoaW5kYWdlc2hzaW5kb3RoZWJyZXc9NjQzMDE7ZS5zaGluZG90aGVicmV3PTE0NzM7ZS5zaGluaGVicmV3PTE1MTM7ZS5zaGluc2hpbmRvdD02NDI5ODtlLnNoaW5zaGluZG90aGVicmV3PTY0Mjk4O2Uuc2hpbnNpbmRvdD02NDI5OTtlLnNoaW5zaW5kb3RoZWJyZXc9NjQyOTk7ZS5zaG9vaz02NDI7ZS5zaWdtYT05NjM7ZS5zaWdtYTE9OTYyO2Uuc2lnbWFmaW5hbD05NjI7ZS5zaWdtYWx1bmF0ZXN5bWJvbGdyZWVrPTEwMTA7ZS5zaWhpcmFnYW5hPTEyMzc1O2Uuc2lrYXRha2FuYT0xMjQ3MTtlLnNpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDQ7ZS5zaWx1cWhlYnJldz0xNDY5O2Uuc2lsdXFsZWZ0aGVicmV3PTE0Njk7ZS5zaW1pbGFyPTg3NjQ7ZS5zaW5kb3RoZWJyZXc9MTQ3NDtlLnNpb3NhY2lyY2xla29yZWFuPTEyOTE2O2Uuc2lvc2FwYXJlbmtvcmVhbj0xMjgyMDtlLnNpb3NjaWV1Y2tvcmVhbj0xMjY3MDtlLnNpb3NjaXJjbGVrb3JlYW49MTI5MDI7ZS5zaW9za2l5ZW9ra29yZWFuPTEyNjY2O2Uuc2lvc2tvcmVhbj0xMjYxMztlLnNpb3NuaWV1bmtvcmVhbj0xMjY2NztlLnNpb3NwYXJlbmtvcmVhbj0xMjgwNjtlLnNpb3NwaWV1cGtvcmVhbj0xMjY2OTtlLnNpb3N0aWtldXRrb3JlYW49MTI2Njg7ZS5zaXg9NTQ7ZS5zaXhhcmFiaWM9MTYzODtlLnNpeGJlbmdhbGk9MjU0MDtlLnNpeGNpcmNsZT05MzE3O2Uuc2l4Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNztlLnNpeGRldmE9MjQxMjtlLnNpeGd1amFyYXRpPTI3OTY7ZS5zaXhndXJtdWtoaT0yNjY4O2Uuc2l4aGFja2FyYWJpYz0xNjM4O2Uuc2l4aGFuZ3pob3U9MTIzMjY7ZS5zaXhpZGVvZ3JhcGhpY3BhcmVuPTEyODM3O2Uuc2l4aW5mZXJpb3I9ODMyNjtlLnNpeG1vbm9zcGFjZT02NTMwMjtlLnNpeG9sZHN0eWxlPTYzMjg2O2Uuc2l4cGFyZW49OTMzNztlLnNpeHBlcmlvZD05MzU3O2Uuc2l4cGVyc2lhbj0xNzgyO2Uuc2l4cm9tYW49ODU2NTtlLnNpeHN1cGVyaW9yPTgzMTA7ZS5zaXh0ZWVuY2lyY2xlPTkzMjc7ZS5zaXh0ZWVuY3VycmVuY3lkZW5vbWluYXRvcmJlbmdhbGk9MjU1MztlLnNpeHRlZW5wYXJlbj05MzQ3O2Uuc2l4dGVlbnBlcmlvZD05MzY3O2Uuc2l4dGhhaT0zNjcwO2Uuc2xhc2g9NDc7ZS5zbGFzaG1vbm9zcGFjZT02NTI5NTtlLnNsb25nPTM4MztlLnNsb25nZG90YWNjZW50PTc4MzU7ZS5zbWlsZWZhY2U9OTc4NjtlLnNtb25vc3BhY2U9NjUzNjM7ZS5zb2ZwYXN1cWhlYnJldz0xNDc1O2Uuc29mdGh5cGhlbj0xNzM7ZS5zb2Z0c2lnbmN5cmlsbGljPTExMDA7ZS5zb2hpcmFnYW5hPTEyMzgxO2Uuc29rYXRha2FuYT0xMjQ3NztlLnNva2F0YWthbmFoYWxmd2lkdGg9NjU0MDc7ZS5zb2xpZHVzbG9uZ292ZXJsYXljbWI9ODI0O2Uuc29saWR1c3Nob3J0b3ZlcmxheWNtYj04MjM7ZS5zb3J1c2l0aGFpPTM2MjU7ZS5zb3NhbGF0aGFpPTM2MjQ7ZS5zb3NvdGhhaT0zNTk1O2Uuc29zdWF0aGFpPTM2MjY7ZS5zcGFjZT0zMjtlLnNwYWNlaGFja2FyYWJpYz0zMjtlLnNwYWRlPTk4MjQ7ZS5zcGFkZXN1aXRibGFjaz05ODI0O2Uuc3BhZGVzdWl0d2hpdGU9OTgyODtlLnNwYXJlbj05MzkwO2Uuc3F1YXJlYmVsb3djbWI9ODI3O2Uuc3F1YXJlY2M9MTMyNTI7ZS5zcXVhcmVjbT0xMzIxMztlLnNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw9OTY0MTtlLnNxdWFyZWhvcml6b250YWxmaWxsPTk2MzY7ZS5zcXVhcmVrZz0xMzE5OTtlLnNxdWFyZWttPTEzMjE0O2Uuc3F1YXJla21jYXBpdGFsPTEzMjYyO2Uuc3F1YXJlbG49MTMyNjU7ZS5zcXVhcmVsb2c9MTMyNjY7ZS5zcXVhcmVtZz0xMzE5ODtlLnNxdWFyZW1pbD0xMzI2OTtlLnNxdWFyZW1tPTEzMjEyO2Uuc3F1YXJlbXNxdWFyZWQ9MTMyMTc7ZS5zcXVhcmVvcnRob2dvbmFsY3Jvc3NoYXRjaGZpbGw9OTYzODtlLnNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw9OTYzOTtlLnNxdWFyZXVwcGVycmlnaHR0b2xvd2VybGVmdGZpbGw9OTY0MDtlLnNxdWFyZXZlcnRpY2FsZmlsbD05NjM3O2Uuc3F1YXJld2hpdGV3aXRoc21hbGxibGFjaz05NjM1O2Uuc3JzcXVhcmU9MTMyNzU7ZS5zc2FiZW5nYWxpPTI0ODc7ZS5zc2FkZXZhPTIzNTk7ZS5zc2FndWphcmF0aT0yNzQzO2Uuc3NhbmdjaWV1Y2tvcmVhbj0xMjYxNztlLnNzYW5naGlldWhrb3JlYW49MTI2Nzc7ZS5zc2FuZ2lldW5na29yZWFuPTEyNjcyO2Uuc3NhbmdraXllb2trb3JlYW49MTI1OTQ7ZS5zc2FuZ25pZXVua29yZWFuPTEyNjQ1O2Uuc3NhbmdwaWV1cGtvcmVhbj0xMjYxMTtlLnNzYW5nc2lvc2tvcmVhbj0xMjYxNDtlLnNzYW5ndGlrZXV0a29yZWFuPTEyNjAwO2Uuc3N1cGVyaW9yPTYzMjE4O2Uuc3Rlcmxpbmc9MTYzO2Uuc3Rlcmxpbmdtb25vc3BhY2U9NjU1MDU7ZS5zdHJva2Vsb25nb3ZlcmxheWNtYj04MjI7ZS5zdHJva2VzaG9ydG92ZXJsYXljbWI9ODIxO2Uuc3Vic2V0PTg4MzQ7ZS5zdWJzZXRub3RlcXVhbD04ODQyO2Uuc3Vic2V0b3JlcXVhbD04ODM4O2Uuc3VjY2VlZHM9ODgyNztlLnN1Y2h0aGF0PTg3MTU7ZS5zdWhpcmFnYW5hPTEyMzc3O2Uuc3VrYXRha2FuYT0xMjQ3MztlLnN1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDU7ZS5zdWt1bmFyYWJpYz0xNjE4O2Uuc3VtbWF0aW9uPTg3MjE7ZS5zdW49OTc4ODtlLnN1cGVyc2V0PTg4MzU7ZS5zdXBlcnNldG5vdGVxdWFsPTg4NDM7ZS5zdXBlcnNldG9yZXF1YWw9ODgzOTtlLnN2c3F1YXJlPTEzMjc2O2Uuc3lvdXdhZXJhc3F1YXJlPTEzMTgwO2UudD0xMTY7ZS50YWJlbmdhbGk9MjQ2ODtlLnRhY2tkb3duPTg4Njg7ZS50YWNrbGVmdD04ODY3O2UudGFkZXZhPTIzNDA7ZS50YWd1amFyYXRpPTI3MjQ7ZS50YWd1cm11a2hpPTI1OTY7ZS50YWhhcmFiaWM9MTU5MTtlLnRhaGZpbmFsYXJhYmljPTY1MjE4O2UudGFoaW5pdGlhbGFyYWJpYz02NTIxOTtlLnRhaGlyYWdhbmE9MTIzODM7ZS50YWhtZWRpYWxhcmFiaWM9NjUyMjA7ZS50YWlzeW91ZXJhc3F1YXJlPTEzMTgxO2UudGFrYXRha2FuYT0xMjQ3OTtlLnRha2F0YWthbmFoYWxmd2lkdGg9NjU0MDg7ZS50YXR3ZWVsYXJhYmljPTE2MDA7ZS50YXU9OTY0O2UudGF2PTE1MTQ7ZS50YXZkYWdlcz02NDMzMDtlLnRhdmRhZ2VzaD02NDMzMDtlLnRhdmRhZ2VzaGhlYnJldz02NDMzMDtlLnRhdmhlYnJldz0xNTE0O2UudGJhcj0zNTk7ZS50Ym9wb21vZm89MTI1NTQ7ZS50Y2Fyb249MzU3O2UudGNjdXJsPTY4MDtlLnRjZWRpbGxhPTM1NTtlLnRjaGVoYXJhYmljPTE2NzA7ZS50Y2hlaGZpbmFsYXJhYmljPTY0Mzc5O2UudGNoZWhpbml0aWFsYXJhYmljPTY0MzgwO2UudGNoZWhtZWRpYWxhcmFiaWM9NjQzODE7ZS50Y2lyY2xlPTk0NDM7ZS50Y2lyY3VtZmxleGJlbG93PTc3OTM7ZS50Y29tbWFhY2NlbnQ9MzU1O2UudGRpZXJlc2lzPTc4MzE7ZS50ZG90YWNjZW50PTc3ODc7ZS50ZG90YmVsb3c9Nzc4OTtlLnRlY3lyaWxsaWM9MTA5MDtlLnRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NztlLnRlaGFyYWJpYz0xNTc4O2UudGVoZmluYWxhcmFiaWM9NjUxNzQ7ZS50ZWhoYWhpbml0aWFsYXJhYmljPTY0Njc0O2UudGVoaGFoaXNvbGF0ZWRhcmFiaWM9NjQ1MjQ7ZS50ZWhpbml0aWFsYXJhYmljPTY1MTc1O2UudGVoaXJhZ2FuYT0xMjM5MDtlLnRlaGplZW1pbml0aWFsYXJhYmljPTY0NjczO2UudGVoamVlbWlzb2xhdGVkYXJhYmljPTY0NTIzO2UudGVobWFyYnV0YWFyYWJpYz0xNTc3O2UudGVobWFyYnV0YWZpbmFsYXJhYmljPTY1MTcyO2UudGVobWVkaWFsYXJhYmljPTY1MTc2O2UudGVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzY7ZS50ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjY7ZS50ZWhub29uZmluYWxhcmFiaWM9NjQ2Mjc7ZS50ZWthdGFrYW5hPTEyNDg2O2UudGVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMTtlLnRlbGVwaG9uZT04NDgxO2UudGVsZXBob25lYmxhY2s9OTc0MjtlLnRlbGlzaGFnZWRvbGFoZWJyZXc9MTQ0MDtlLnRlbGlzaGFxZXRhbmFoZWJyZXc9MTQ0OTtlLnRlbmNpcmNsZT05MzIxO2UudGVuaWRlb2dyYXBoaWNwYXJlbj0xMjg0MTtlLnRlbnBhcmVuPTkzNDE7ZS50ZW5wZXJpb2Q9OTM2MTtlLnRlbnJvbWFuPTg1Njk7ZS50ZXNoPTY3OTtlLnRldD0xNDk2O2UudGV0ZGFnZXNoPTY0MzEyO2UudGV0ZGFnZXNoaGVicmV3PTY0MzEyO2UudGV0aGVicmV3PTE0OTY7ZS50ZXRzZWN5cmlsbGljPTEyMDU7ZS50ZXZpcmhlYnJldz0xNDM1O2UudGV2aXJsZWZ0aGVicmV3PTE0MzU7ZS50aGFiZW5nYWxpPTI0Njk7ZS50aGFkZXZhPTIzNDE7ZS50aGFndWphcmF0aT0yNzI1O2UudGhhZ3VybXVraGk9MjU5NztlLnRoYWxhcmFiaWM9MTU4NDtlLnRoYWxmaW5hbGFyYWJpYz02NTE5NjtlLnRoYW50aGFraGF0bG93bGVmdHRoYWk9NjM2NDA7ZS50aGFudGhha2hhdGxvd3JpZ2h0dGhhaT02MzYzOTtlLnRoYW50aGFraGF0dGhhaT0zNjYwO2UudGhhbnRoYWtoYXR1cHBlcmxlZnR0aGFpPTYzNjM4O2UudGhlaGFyYWJpYz0xNTc5O2UudGhlaGZpbmFsYXJhYmljPTY1MTc4O2UudGhlaGluaXRpYWxhcmFiaWM9NjUxNzk7ZS50aGVobWVkaWFsYXJhYmljPTY1MTgwO2UudGhlcmVleGlzdHM9ODcwNztlLnRoZXJlZm9yZT04NzU2O2UudGhldGE9OTUyO2UudGhldGExPTk3NztlLnRoZXRhc3ltYm9sZ3JlZWs9OTc3O2UudGhpZXV0aGFjaXJjbGVrb3JlYW49MTI5MjE7ZS50aGlldXRoYXBhcmVua29yZWFuPTEyODI1O2UudGhpZXV0aGNpcmNsZWtvcmVhbj0xMjkwNztlLnRoaWV1dGhrb3JlYW49MTI2MjA7ZS50aGlldXRocGFyZW5rb3JlYW49MTI4MTE7ZS50aGlydGVlbmNpcmNsZT05MzI0O2UudGhpcnRlZW5wYXJlbj05MzQ0O2UudGhpcnRlZW5wZXJpb2Q9OTM2NDtlLnRob25hbmdtb250aG90aGFpPTM2MDE7ZS50aG9vaz00Mjk7ZS50aG9waHV0aGFvdGhhaT0zNjAyO2UudGhvcm49MjU0O2UudGhvdGhhaGFudGhhaT0zNjA3O2UudGhvdGhhbnRoYWk9MzYwMDtlLnRob3Rob25ndGhhaT0zNjA4O2UudGhvdGh1bmd0aGFpPTM2MDY7ZS50aG91c2FuZGN5cmlsbGljPTExNTQ7ZS50aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM9MTY0NDtlLnRob3VzYW5kc3NlcGFyYXRvcnBlcnNpYW49MTY0NDtlLnRocmVlPTUxO2UudGhyZWVhcmFiaWM9MTYzNTtlLnRocmVlYmVuZ2FsaT0yNTM3O2UudGhyZWVjaXJjbGU9OTMxNDtlLnRocmVlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNDtlLnRocmVlZGV2YT0yNDA5O2UudGhyZWVlaWdodGhzPTg1NDA7ZS50aHJlZWd1amFyYXRpPTI3OTM7ZS50aHJlZWd1cm11a2hpPTI2NjU7ZS50aHJlZWhhY2thcmFiaWM9MTYzNTtlLnRocmVlaGFuZ3pob3U9MTIzMjM7ZS50aHJlZWlkZW9ncmFwaGljcGFyZW49MTI4MzQ7ZS50aHJlZWluZmVyaW9yPTgzMjM7ZS50aHJlZW1vbm9zcGFjZT02NTI5OTtlLnRocmVlbnVtZXJhdG9yYmVuZ2FsaT0yNTUwO2UudGhyZWVvbGRzdHlsZT02MzI4MztlLnRocmVlcGFyZW49OTMzNDtlLnRocmVlcGVyaW9kPTkzNTQ7ZS50aHJlZXBlcnNpYW49MTc3OTtlLnRocmVlcXVhcnRlcnM9MTkwO2UudGhyZWVxdWFydGVyc2VtZGFzaD02MzE5ODtlLnRocmVlcm9tYW49ODU2MjtlLnRocmVlc3VwZXJpb3I9MTc5O2UudGhyZWV0aGFpPTM2Njc7ZS50aHpzcXVhcmU9MTMyMDQ7ZS50aWhpcmFnYW5hPTEyMzg1O2UudGlrYXRha2FuYT0xMjQ4MTtlLnRpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDk7ZS50aWtldXRhY2lyY2xla29yZWFuPTEyOTEyO2UudGlrZXV0YXBhcmVua29yZWFuPTEyODE2O2UudGlrZXV0Y2lyY2xla29yZWFuPTEyODk4O2UudGlrZXV0a29yZWFuPTEyNTk5O2UudGlrZXV0cGFyZW5rb3JlYW49MTI4MDI7ZS50aWxkZT03MzI7ZS50aWxkZWJlbG93Y21iPTgxNjtlLnRpbGRlY21iPTc3MTtlLnRpbGRlY29tYj03NzE7ZS50aWxkZWRvdWJsZWNtYj04NjQ7ZS50aWxkZW9wZXJhdG9yPTg3NjQ7ZS50aWxkZW92ZXJsYXljbWI9ODIwO2UudGlsZGV2ZXJ0aWNhbGNtYj04MzA7ZS50aW1lc2NpcmNsZT04ODU1O2UudGlwZWhhaGVicmV3PTE0MzA7ZS50aXBlaGFsZWZ0aGVicmV3PTE0MzA7ZS50aXBwaWd1cm11a2hpPTI2NzI7ZS50aXRsb2N5cmlsbGljY21iPTExNTU7ZS50aXduYXJtZW5pYW49MTQwNztlLnRsaW5lYmVsb3c9Nzc5MTtlLnRtb25vc3BhY2U9NjUzNjQ7ZS50b2FybWVuaWFuPTEzODU7ZS50b2hpcmFnYW5hPTEyMzkyO2UudG9rYXRha2FuYT0xMjQ4ODtlLnRva2F0YWthbmFoYWxmd2lkdGg9NjU0MTI7ZS50b25lYmFyZXh0cmFoaWdobW9kPTc0MTtlLnRvbmViYXJleHRyYWxvd21vZD03NDU7ZS50b25lYmFyaGlnaG1vZD03NDI7ZS50b25lYmFybG93bW9kPTc0NDtlLnRvbmViYXJtaWRtb2Q9NzQzO2UudG9uZWZpdmU9NDQ1O2UudG9uZXNpeD0zODk7ZS50b25ldHdvPTQyNDtlLnRvbm9zPTkwMDtlLnRvbnNxdWFyZT0xMzA5NTtlLnRvcGF0YWt0aGFpPTM1OTk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMDg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbD02NTExNztlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgxO2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMwOTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbD02NTExODtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4MjtlLnRvdGFvdGhhaT0zNjA1O2UudHBhbGF0YWxob29rPTQyNztlLnRwYXJlbj05MzkxO2UudHJhZGVtYXJrPTg0ODI7ZS50cmFkZW1hcmtzYW5zPTYzNzIyO2UudHJhZGVtYXJrc2VyaWY9NjMxOTU7ZS50cmV0cm9mbGV4aG9vaz02NDg7ZS50cmlhZ2RuPTk2NjA7ZS50cmlhZ2xmPTk2Njg7ZS50cmlhZ3J0PTk2NTg7ZS50cmlhZ3VwPTk2NTA7ZS50cz02Nzg7ZS50c2FkaT0xNTEwO2UudHNhZGlkYWdlc2g9NjQzMjY7ZS50c2FkaWRhZ2VzaGhlYnJldz02NDMyNjtlLnRzYWRpaGVicmV3PTE1MTA7ZS50c2VjeXJpbGxpYz0xMDk0O2UudHNlcmU9MTQ2MTtlLnRzZXJlMTI9MTQ2MTtlLnRzZXJlMWU9MTQ2MTtlLnRzZXJlMmI9MTQ2MTtlLnRzZXJlaGVicmV3PTE0NjE7ZS50c2VyZW5hcnJvd2hlYnJldz0xNDYxO2UudHNlcmVxdWFydGVyaGVicmV3PTE0NjE7ZS50c2VyZXdpZGVoZWJyZXc9MTQ2MTtlLnRzaGVjeXJpbGxpYz0xMTE1O2UudHN1cGVyaW9yPTYzMjE5O2UudHRhYmVuZ2FsaT0yNDYzO2UudHRhZGV2YT0yMzM1O2UudHRhZ3VqYXJhdGk9MjcxOTtlLnR0YWd1cm11a2hpPTI1OTE7ZS50dGVoYXJhYmljPTE2NTc7ZS50dGVoZmluYWxhcmFiaWM9NjQzNTk7ZS50dGVoaW5pdGlhbGFyYWJpYz02NDM2MDtlLnR0ZWhtZWRpYWxhcmFiaWM9NjQzNjE7ZS50dGhhYmVuZ2FsaT0yNDY0O2UudHRoYWRldmE9MjMzNjtlLnR0aGFndWphcmF0aT0yNzIwO2UudHRoYWd1cm11a2hpPTI1OTI7ZS50dHVybmVkPTY0NztlLnR1aGlyYWdhbmE9MTIzODg7ZS50dWthdGFrYW5hPTEyNDg0O2UudHVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMDtlLnR1c21hbGxoaXJhZ2FuYT0xMjM4NztlLnR1c21hbGxrYXRha2FuYT0xMjQ4MztlLnR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MTtlLnR3ZWx2ZWNpcmNsZT05MzIzO2UudHdlbHZlcGFyZW49OTM0MztlLnR3ZWx2ZXBlcmlvZD05MzYzO2UudHdlbHZlcm9tYW49ODU3MTtlLnR3ZW50eWNpcmNsZT05MzMxO2UudHdlbnR5aGFuZ3pob3U9MjEzMTY7ZS50d2VudHlwYXJlbj05MzUxO2UudHdlbnR5cGVyaW9kPTkzNzE7ZS50d289NTA7ZS50d29hcmFiaWM9MTYzNDtlLnR3b2JlbmdhbGk9MjUzNjtlLnR3b2NpcmNsZT05MzEzO2UudHdvY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMztlLnR3b2RldmE9MjQwODtlLnR3b2RvdGVubGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcnZlcnRpY2FsPTY1MDcyO2UudHdvZ3VqYXJhdGk9Mjc5MjtlLnR3b2d1cm11a2hpPTI2NjQ7ZS50d29oYWNrYXJhYmljPTE2MzQ7ZS50d29oYW5nemhvdT0xMjMyMjtlLnR3b2lkZW9ncmFwaGljcGFyZW49MTI4MzM7ZS50d29pbmZlcmlvcj04MzIyO2UudHdvbW9ub3NwYWNlPTY1Mjk4O2UudHdvbnVtZXJhdG9yYmVuZ2FsaT0yNTQ5O2UudHdvb2xkc3R5bGU9NjMyODI7ZS50d29wYXJlbj05MzMzO2UudHdvcGVyaW9kPTkzNTM7ZS50d29wZXJzaWFuPTE3Nzg7ZS50d29yb21hbj04NTYxO2UudHdvc3Ryb2tlPTQ0MztlLnR3b3N1cGVyaW9yPTE3ODtlLnR3b3RoYWk9MzY2NjtlLnR3b3RoaXJkcz04NTMyO2UudT0xMTc7ZS51YWN1dGU9MjUwO2UudWJhcj02NDk7ZS51YmVuZ2FsaT0yNDQxO2UudWJvcG9tb2ZvPTEyNTg0O2UudWJyZXZlPTM2NTtlLnVjYXJvbj00Njg7ZS51Y2lyY2xlPTk0NDQ7ZS51Y2lyY3VtZmxleD0yNTE7ZS51Y2lyY3VtZmxleGJlbG93PTc3OTk7ZS51Y3lyaWxsaWM9MTA5MTtlLnVkYXR0YWRldmE9MjM4NTtlLnVkYmxhY3V0ZT0zNjk7ZS51ZGJsZ3JhdmU9NTMzO2UudWRldmE9MjMxMztlLnVkaWVyZXNpcz0yNTI7ZS51ZGllcmVzaXNhY3V0ZT00NzI7ZS51ZGllcmVzaXNiZWxvdz03Nzk1O2UudWRpZXJlc2lzY2Fyb249NDc0O2UudWRpZXJlc2lzY3lyaWxsaWM9MTI2NTtlLnVkaWVyZXNpc2dyYXZlPTQ3NjtlLnVkaWVyZXNpc21hY3Jvbj00NzA7ZS51ZG90YmVsb3c9NzkwOTtlLnVncmF2ZT0yNDk7ZS51Z3VqYXJhdGk9MjY5NztlLnVndXJtdWtoaT0yNTY5O2UudWhpcmFnYW5hPTEyMzU4O2UudWhvb2thYm92ZT03OTExO2UudWhvcm49NDMyO2UudWhvcm5hY3V0ZT03OTEzO2UudWhvcm5kb3RiZWxvdz03OTIxO2UudWhvcm5ncmF2ZT03OTE1O2UudWhvcm5ob29rYWJvdmU9NzkxNztlLnVob3JudGlsZGU9NzkxOTtlLnVodW5nYXJ1bWxhdXQ9MzY5O2UudWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjc7ZS51aW52ZXJ0ZWRicmV2ZT01MzU7ZS51a2F0YWthbmE9MTI0NTQ7ZS51a2F0YWthbmFoYWxmd2lkdGg9NjUzOTU7ZS51a2N5cmlsbGljPTExNDU7ZS51a29yZWFuPTEyNjM2O2UudW1hY3Jvbj0zNjM7ZS51bWFjcm9uY3lyaWxsaWM9MTI2MztlLnVtYWNyb25kaWVyZXNpcz03ODAzO2UudW1hdHJhZ3VybXVraGk9MjYyNTtlLnVtb25vc3BhY2U9NjUzNjU7ZS51bmRlcnNjb3JlPTk1O2UudW5kZXJzY29yZWRibD04MjE1O2UudW5kZXJzY29yZW1vbm9zcGFjZT02NTM0MztlLnVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NTtlLnVuZGVyc2NvcmV3YXZ5PTY1MTAzO2UudW5pb249ODc0NjtlLnVuaXZlcnNhbD04NzA0O2UudW9nb25laz0zNzE7ZS51cGFyZW49OTM5MjtlLnVwYmxvY2s9OTYwMDtlLnVwcGVyZG90aGVicmV3PTE0NzY7ZS51cHNpbG9uPTk2NTtlLnVwc2lsb25kaWVyZXNpcz05NzE7ZS51cHNpbG9uZGllcmVzaXN0b25vcz05NDQ7ZS51cHNpbG9ubGF0aW49NjUwO2UudXBzaWxvbnRvbm9zPTk3MztlLnVwdGFja2JlbG93Y21iPTc5NztlLnVwdGFja21vZD03MjQ7ZS51cmFndXJtdWtoaT0yNjc1O2UudXJpbmc9MzY3O2UudXNob3J0Y3lyaWxsaWM9MTExODtlLnVzbWFsbGhpcmFnYW5hPTEyMzU3O2UudXNtYWxsa2F0YWthbmE9MTI0NTM7ZS51c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NTtlLnVzdHJhaWdodGN5cmlsbGljPTExOTk7ZS51c3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAxO2UudXRpbGRlPTM2MTtlLnV0aWxkZWFjdXRlPTc4MDE7ZS51dGlsZGViZWxvdz03Nzk3O2UudXViZW5nYWxpPTI0NDI7ZS51dWRldmE9MjMxNDtlLnV1Z3VqYXJhdGk9MjY5ODtlLnV1Z3VybXVraGk9MjU3MDtlLnV1bWF0cmFndXJtdWtoaT0yNjI2O2UudXV2b3dlbHNpZ25iZW5nYWxpPTI0OTg7ZS51dXZvd2Vsc2lnbmRldmE9MjM3MDtlLnV1dm93ZWxzaWduZ3VqYXJhdGk9Mjc1NDtlLnV2b3dlbHNpZ25iZW5nYWxpPTI0OTc7ZS51dm93ZWxzaWduZGV2YT0yMzY5O2UudXZvd2Vsc2lnbmd1amFyYXRpPTI3NTM7ZS52PTExODtlLnZhZGV2YT0yMzU3O2UudmFndWphcmF0aT0yNzQxO2UudmFndXJtdWtoaT0yNjEzO2UudmFrYXRha2FuYT0xMjUzNTtlLnZhdj0xNDkzO2UudmF2ZGFnZXNoPTY0MzA5O2UudmF2ZGFnZXNoNjU9NjQzMDk7ZS52YXZkYWdlc2hoZWJyZXc9NjQzMDk7ZS52YXZoZWJyZXc9MTQ5MztlLnZhdmhvbGFtPTY0MzMxO2UudmF2aG9sYW1oZWJyZXc9NjQzMzE7ZS52YXZ2YXZoZWJyZXc9MTUyMDtlLnZhdnlvZGhlYnJldz0xNTIxO2UudmNpcmNsZT05NDQ1O2UudmRvdGJlbG93PTc4MDc7ZS52ZWN5cmlsbGljPTEwNzQ7ZS52ZWhhcmFiaWM9MTcwMDtlLnZlaGZpbmFsYXJhYmljPTY0MzYzO2UudmVoaW5pdGlhbGFyYWJpYz02NDM2NDtlLnZlaG1lZGlhbGFyYWJpYz02NDM2NTtlLnZla2F0YWthbmE9MTI1Mzc7ZS52ZW51cz05NzkyO2UudmVydGljYWxiYXI9MTI0O2UudmVydGljYWxsaW5lYWJvdmVjbWI9NzgxO2UudmVydGljYWxsaW5lYmVsb3djbWI9ODA5O2UudmVydGljYWxsaW5lbG93bW9kPTcxNjtlLnZlcnRpY2FsbGluZW1vZD03MTI7ZS52ZXdhcm1lbmlhbj0xNDA2O2Uudmhvb2s9NjUxO2UudmlrYXRha2FuYT0xMjUzNjtlLnZpcmFtYWJlbmdhbGk9MjUwOTtlLnZpcmFtYWRldmE9MjM4MTtlLnZpcmFtYWd1amFyYXRpPTI3NjU7ZS52aXNhcmdhYmVuZ2FsaT0yNDM1O2UudmlzYXJnYWRldmE9MjMwNztlLnZpc2FyZ2FndWphcmF0aT0yNjkxO2Uudm1vbm9zcGFjZT02NTM2NjtlLnZvYXJtZW5pYW49MTQwMDtlLnZvaWNlZGl0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ2O2Uudm9pY2VkaXRlcmF0aW9ua2F0YWthbmE9MTI1NDI7ZS52b2ljZWRtYXJra2FuYT0xMjQ0MztlLnZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM4O2Uudm9rYXRha2FuYT0xMjUzODtlLnZwYXJlbj05MzkzO2UudnRpbGRlPTc4MDU7ZS52dHVybmVkPTY1MjtlLnZ1aGlyYWdhbmE9MTI0MzY7ZS52dWthdGFrYW5hPTEyNTMyO2Uudz0xMTk7ZS53YWN1dGU9NzgxMTtlLndhZWtvcmVhbj0xMjYzMztlLndhaGlyYWdhbmE9MTI0MzE7ZS53YWthdGFrYW5hPTEyNTI3O2Uud2FrYXRha2FuYWhhbGZ3aWR0aD02NTQzNjtlLndha29yZWFuPTEyNjMyO2Uud2FzbWFsbGhpcmFnYW5hPTEyNDMwO2Uud2FzbWFsbGthdGFrYW5hPTEyNTI2O2Uud2F0dG9zcXVhcmU9MTMxNDM7ZS53YXZlZGFzaD0xMjMxNjtlLndhdnl1bmRlcnNjb3JldmVydGljYWw9NjUwNzY7ZS53YXdhcmFiaWM9MTYwODtlLndhd2ZpbmFsYXJhYmljPTY1MjYyO2Uud2F3aGFtemFhYm92ZWFyYWJpYz0xNTcyO2Uud2F3aGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU4O2Uud2JzcXVhcmU9MTMyNzc7ZS53Y2lyY2xlPTk0NDY7ZS53Y2lyY3VtZmxleD0zNzM7ZS53ZGllcmVzaXM9NzgxMztlLndkb3RhY2NlbnQ9NzgxNTtlLndkb3RiZWxvdz03ODE3O2Uud2VoaXJhZ2FuYT0xMjQzMztlLndlaWVyc3RyYXNzPTg0NzI7ZS53ZWthdGFrYW5hPTEyNTI5O2Uud2Vrb3JlYW49MTI2Mzg7ZS53ZW9rb3JlYW49MTI2Mzc7ZS53Z3JhdmU9NzgwOTtlLndoaXRlYnVsbGV0PTk3MDI7ZS53aGl0ZWNpcmNsZT05Njc1O2Uud2hpdGVjaXJjbGVpbnZlcnNlPTk2ODk7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAyO2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDkxO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHQ9MTIzMDM7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkyO2Uud2hpdGVkaWFtb25kPTk2NzE7ZS53aGl0ZWRpYW1vbmRjb250YWluaW5nYmxhY2tzbWFsbGRpYW1vbmQ9OTY3MjtlLndoaXRlZG93bnBvaW50aW5nc21hbGx0cmlhbmdsZT05NjYzO2Uud2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYxO2Uud2hpdGVsZWZ0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2Njc7ZS53aGl0ZWxlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjU7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMxMDtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMxMTtlLndoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1NztlLndoaXRlcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTU7ZS53aGl0ZXNtYWxsc3F1YXJlPTk2NDM7ZS53aGl0ZXNtaWxpbmdmYWNlPTk3ODY7ZS53aGl0ZXNxdWFyZT05NjMzO2Uud2hpdGVzdGFyPTk3MzQ7ZS53aGl0ZXRlbGVwaG9uZT05NzQzO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMTI7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMTM7ZS53aGl0ZXVwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTM7ZS53aGl0ZXVwcG9pbnRpbmd0cmlhbmdsZT05NjUxO2Uud2loaXJhZ2FuYT0xMjQzMjtlLndpa2F0YWthbmE9MTI1Mjg7ZS53aWtvcmVhbj0xMjYzOTtlLndtb25vc3BhY2U9NjUzNjc7ZS53b2hpcmFnYW5hPTEyNDM0O2Uud29rYXRha2FuYT0xMjUzMDtlLndva2F0YWthbmFoYWxmd2lkdGg9NjUzODI7ZS53b249ODM2MTtlLndvbm1vbm9zcGFjZT02NTUxMDtlLndvd2FlbnRoYWk9MzYyMztlLndwYXJlbj05Mzk0O2Uud3Jpbmc9NzgzMjtlLndzdXBlcmlvcj02OTU7ZS53dHVybmVkPTY1MztlLnd5bm49NDQ3O2UueD0xMjA7ZS54YWJvdmVjbWI9ODI5O2UueGJvcG9tb2ZvPTEyNTYyO2UueGNpcmNsZT05NDQ3O2UueGRpZXJlc2lzPTc4MjE7ZS54ZG90YWNjZW50PTc4MTk7ZS54ZWhhcm1lbmlhbj0xMzg5O2UueGk9OTU4O2UueG1vbm9zcGFjZT02NTM2ODtlLnhwYXJlbj05Mzk1O2UueHN1cGVyaW9yPTczOTtlLnk9MTIxO2UueWFhZG9zcXVhcmU9MTMxMzQ7ZS55YWJlbmdhbGk9MjQ3OTtlLnlhY3V0ZT0yNTM7ZS55YWRldmE9MjM1MTtlLnlhZWtvcmVhbj0xMjYyNjtlLnlhZ3VqYXJhdGk9MjczNTtlLnlhZ3VybXVraGk9MjYwNztlLnlhaGlyYWdhbmE9MTI0MjA7ZS55YWthdGFrYW5hPTEyNTE2O2UueWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyODtlLnlha29yZWFuPTEyNjI1O2UueWFtYWtrYW50aGFpPTM2NjI7ZS55YXNtYWxsaGlyYWdhbmE9MTI0MTk7ZS55YXNtYWxsa2F0YWthbmE9MTI1MTU7ZS55YXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODg7ZS55YXRjeXJpbGxpYz0xMTIzO2UueWNpcmNsZT05NDQ4O2UueWNpcmN1bWZsZXg9Mzc1O2UueWRpZXJlc2lzPTI1NTtlLnlkb3RhY2NlbnQ9NzgyMztlLnlkb3RiZWxvdz03OTI1O2UueWVoYXJhYmljPTE2MTA7ZS55ZWhiYXJyZWVhcmFiaWM9MTc0NjtlLnllaGJhcnJlZWZpbmFsYXJhYmljPTY0NDMxO2UueWVoZmluYWxhcmFiaWM9NjUyNjY7ZS55ZWhoYW16YWFib3ZlYXJhYmljPTE1NzQ7ZS55ZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNjI7ZS55ZWhoYW16YWFib3ZlaW5pdGlhbGFyYWJpYz02NTE2MztlLnllaGhhbXphYWJvdmVtZWRpYWxhcmFiaWM9NjUxNjQ7ZS55ZWhpbml0aWFsYXJhYmljPTY1MjY3O2UueWVobWVkaWFsYXJhYmljPTY1MjY4O2UueWVobWVlbWluaXRpYWxhcmFiaWM9NjQ3MzM7ZS55ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ2MDA7ZS55ZWhub29uZmluYWxhcmFiaWM9NjQ2NjA7ZS55ZWh0aHJlZWRvdHNiZWxvd2FyYWJpYz0xNzQ1O2UueWVrb3JlYW49MTI2MzA7ZS55ZW49MTY1O2UueWVubW9ub3NwYWNlPTY1NTA5O2UueWVva29yZWFuPTEyNjI5O2UueWVvcmluaGlldWhrb3JlYW49MTI2Nzg7ZS55ZXJhaGJlbnlvbW9oZWJyZXc9MTQ1MDtlLnllcmFoYmVueW9tb2xlZnRoZWJyZXc9MTQ1MDtlLnllcmljeXJpbGxpYz0xMDk5O2UueWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MztlLnllc2lldW5na29yZWFuPTEyNjczO2UueWVzaWV1bmdwYW5zaW9za29yZWFuPTEyNjc1O2UueWVzaWV1bmdzaW9za29yZWFuPTEyNjc0O2UueWV0aXZoZWJyZXc9MTQzNDtlLnlncmF2ZT03OTIzO2UueWhvb2s9NDM2O2UueWhvb2thYm92ZT03OTI3O2UueWlhcm1lbmlhbj0xMzk3O2UueWljeXJpbGxpYz0xMTExO2UueWlrb3JlYW49MTI2NDI7ZS55aW55YW5nPTk3NzU7ZS55aXduYXJtZW5pYW49MTQxMDtlLnltb25vc3BhY2U9NjUzNjk7ZS55b2Q9MTQ5NztlLnlvZGRhZ2VzaD02NDMxMztlLnlvZGRhZ2VzaGhlYnJldz02NDMxMztlLnlvZGhlYnJldz0xNDk3O2UueW9keW9kaGVicmV3PTE1MjI7ZS55b2R5b2RwYXRhaGhlYnJldz02NDI4NztlLnlvaGlyYWdhbmE9MTI0MjQ7ZS55b2lrb3JlYW49MTI2ODE7ZS55b2thdGFrYW5hPTEyNTIwO2UueW9rYXRha2FuYWhhbGZ3aWR0aD02NTQzMDtlLnlva29yZWFuPTEyNjM1O2UueW9zbWFsbGhpcmFnYW5hPTEyNDIzO2UueW9zbWFsbGthdGFrYW5hPTEyNTE5O2UueW9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkwO2UueW90Z3JlZWs9MTAxMTtlLnlveWFla29yZWFuPTEyNjgwO2UueW95YWtvcmVhbj0xMjY3OTtlLnlveWFrdGhhaT0zNjE4O2UueW95aW5ndGhhaT0zNTk3O2UueXBhcmVuPTkzOTY7ZS55cG9nZWdyYW1tZW5pPTg5MDtlLnlwb2dlZ3JhbW1lbmlncmVla2NtYj04Mzc7ZS55cj00MjI7ZS55cmluZz03ODMzO2UueXN1cGVyaW9yPTY5NjtlLnl0aWxkZT03OTI5O2UueXR1cm5lZD02NTQ7ZS55dWhpcmFnYW5hPTEyNDIyO2UueXVpa29yZWFuPTEyNjg0O2UueXVrYXRha2FuYT0xMjUxODtlLnl1a2F0YWthbmFoYWxmd2lkdGg9NjU0Mjk7ZS55dWtvcmVhbj0xMjY0MDtlLnl1c2JpZ2N5cmlsbGljPTExMzE7ZS55dXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzM7ZS55dXNsaXR0bGVjeXJpbGxpYz0xMTI3O2UueXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI5O2UueXVzbWFsbGhpcmFnYW5hPTEyNDIxO2UueXVzbWFsbGthdGFrYW5hPTEyNTE3O2UueXVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg5O2UueXV5ZWtvcmVhbj0xMjY4MztlLnl1eWVva29yZWFuPTEyNjgyO2UueXlhYmVuZ2FsaT0yNTI3O2UueXlhZGV2YT0yMzk5O2Uuej0xMjI7ZS56YWFybWVuaWFuPTEzODI7ZS56YWN1dGU9Mzc4O2UuemFkZXZhPTIzOTU7ZS56YWd1cm11a2hpPTI2NTE7ZS56YWhhcmFiaWM9MTU5MjtlLnphaGZpbmFsYXJhYmljPTY1MjIyO2UuemFoaW5pdGlhbGFyYWJpYz02NTIyMztlLnphaGlyYWdhbmE9MTIzNzQ7ZS56YWhtZWRpYWxhcmFiaWM9NjUyMjQ7ZS56YWluYXJhYmljPTE1ODY7ZS56YWluZmluYWxhcmFiaWM9NjUyMDA7ZS56YWthdGFrYW5hPTEyNDcwO2UuemFxZWZnYWRvbGhlYnJldz0xNDI5O2UuemFxZWZxYXRhbmhlYnJldz0xNDI4O2UuemFycWFoZWJyZXc9MTQzMjtlLnpheWluPTE0OTQ7ZS56YXlpbmRhZ2VzaD02NDMxMDtlLnpheWluZGFnZXNoaGVicmV3PTY0MzEwO2UuemF5aW5oZWJyZXc9MTQ5NDtlLnpib3BvbW9mbz0xMjU2NztlLnpjYXJvbj0zODI7ZS56Y2lyY2xlPTk0NDk7ZS56Y2lyY3VtZmxleD03ODI1O2UuemN1cmw9NjU3O2UuemRvdD0zODA7ZS56ZG90YWNjZW50PTM4MDtlLnpkb3RiZWxvdz03ODI3O2UuemVjeXJpbGxpYz0xMDc5O2UuemVkZXNjZW5kZXJjeXJpbGxpYz0xMTc3O2UuemVkaWVyZXNpc2N5cmlsbGljPTEyNDc7ZS56ZWhpcmFnYW5hPTEyMzgwO2UuemVrYXRha2FuYT0xMjQ3NjtlLnplcm89NDg7ZS56ZXJvYXJhYmljPTE2MzI7ZS56ZXJvYmVuZ2FsaT0yNTM0O2UuemVyb2RldmE9MjQwNjtlLnplcm9ndWphcmF0aT0yNzkwO2UuemVyb2d1cm11a2hpPTI2NjI7ZS56ZXJvaGFja2FyYWJpYz0xNjMyO2UuemVyb2luZmVyaW9yPTgzMjA7ZS56ZXJvbW9ub3NwYWNlPTY1Mjk2O2UuemVyb29sZHN0eWxlPTYzMjgwO2UuemVyb3BlcnNpYW49MTc3NjtlLnplcm9zdXBlcmlvcj04MzA0O2UuemVyb3RoYWk9MzY2NDtlLnplcm93aWR0aGpvaW5lcj02NTI3OTtlLnplcm93aWR0aG5vbmpvaW5lcj04MjA0O2UuemVyb3dpZHRoc3BhY2U9ODIwMztlLnpldGE9OTUwO2Uuemhib3BvbW9mbz0xMjU2MztlLnpoZWFybWVuaWFuPTEzODY7ZS56aGVicmV2ZWN5cmlsbGljPTEyMTg7ZS56aGVjeXJpbGxpYz0xMDc4O2UuemhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NTtlLnpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NTtlLnppaGlyYWdhbmE9MTIzNzY7ZS56aWthdGFrYW5hPTEyNDcyO2Uuemlub3JoZWJyZXc9MTQ1NDtlLnpsaW5lYmVsb3c9NzgyOTtlLnptb25vc3BhY2U9NjUzNzA7ZS56b2hpcmFnYW5hPTEyMzgyO2Uuem9rYXRha2FuYT0xMjQ3ODtlLnpwYXJlbj05Mzk3O2UuenJldHJvZmxleGhvb2s9NjU2O2UuenN0cm9rZT00Mzg7ZS56dWhpcmFnYW5hPTEyMzc4O2UuenVrYXRha2FuYT0xMjQ3NDtlWyIubm90ZGVmIl09MDtlLmFuZ2JyYWNrZXRsZWZ0YmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRiaWdnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRyaWdodEJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRCaWdnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWdnPTkwMDI7ZS5hcnJvd2hvb2tsZWZ0PTg2MTg7ZS5hcnJvd2hvb2tyaWdodD04NjE3O2UuYXJyb3dsZWZ0dG9waGFsZj04NjM2O2UuYXJyb3dsZWZ0Ym90aGFsZj04NjM3O2UuYXJyb3dub3J0aGVhc3Q9ODU5OTtlLmFycm93bm9ydGh3ZXN0PTg1OTg7ZS5hcnJvd3JpZ2h0dG9waGFsZj04NjQwO2UuYXJyb3dyaWdodGJvdGhhbGY9ODY0MTtlLmFycm93c291dGhlYXN0PTg2MDA7ZS5hcnJvd3NvdXRod2VzdD04NjAxO2UuYmFja3NsYXNoYmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWc9ODcyNjtlLmJhY2tzbGFzaEJpZ2c9ODcyNjtlLmJhY2tzbGFzaGJpZ2c9ODcyNjtlLmJhcmRibD04MjE0O2UuYnJhY2VodGlwZG93bmxlZnQ9NjUwNzk7ZS5icmFjZWh0aXBkb3ducmlnaHQ9NjUwNzk7ZS5icmFjZWh0aXB1cGxlZnQ9NjUwODA7ZS5icmFjZWh0aXB1cHJpZ2h0PTY1MDgwO2UuYnJhY2VsZWZ0QmlnPTEyMztlLmJyYWNlbGVmdGJpZz0xMjM7ZS5icmFjZWxlZnRiaWdnPTEyMztlLmJyYWNlbGVmdEJpZ2c9MTIzO2UuYnJhY2VyaWdodEJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnPTEyNTtlLmJyYWNlcmlnaHRiaWdnPTEyNTtlLmJyYWNlcmlnaHRCaWdnPTEyNTtlLmJyYWNrZXRsZWZ0YmlnPTkxO2UuYnJhY2tldGxlZnRCaWc9OTE7ZS5icmFja2V0bGVmdGJpZ2c9OTE7ZS5icmFja2V0bGVmdEJpZ2c9OTE7ZS5icmFja2V0cmlnaHRCaWc9OTM7ZS5icmFja2V0cmlnaHRiaWc9OTM7ZS5icmFja2V0cmlnaHRiaWdnPTkzO2UuYnJhY2tldHJpZ2h0QmlnZz05MztlLmNlaWxpbmdsZWZ0YmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWdnPTg5Njg7ZS5jZWlsaW5nbGVmdGJpZ2c9ODk2ODtlLmNlaWxpbmdyaWdodGJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRiaWdnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWdnPTg5Njk7ZS5jaXJjbGVkb3RkaXNwbGF5PTg4NTc7ZS5jaXJjbGVkb3R0ZXh0PTg4NTc7ZS5jaXJjbGVtdWx0aXBseWRpc3BsYXk9ODg1NTtlLmNpcmNsZW11bHRpcGx5dGV4dD04ODU1O2UuY2lyY2xlcGx1c2Rpc3BsYXk9ODg1MztlLmNpcmNsZXBsdXN0ZXh0PTg4NTM7ZS5jb250aW50ZWdyYWxkaXNwbGF5PTg3NTA7ZS5jb250aW50ZWdyYWx0ZXh0PTg3NTA7ZS5jb3Byb2R1Y3RkaXNwbGF5PTg3MjA7ZS5jb3Byb2R1Y3R0ZXh0PTg3MjA7ZS5mbG9vcmxlZnRCaWc9ODk3MDtlLmZsb29ybGVmdGJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnZz04OTcwO2UuZmxvb3JsZWZ0QmlnZz04OTcwO2UuZmxvb3JyaWdodGJpZz04OTcxO2UuZmxvb3JyaWdodEJpZz04OTcxO2UuZmxvb3JyaWdodEJpZ2c9ODk3MTtlLmZsb29ycmlnaHRiaWdnPTg5NzE7ZS5oYXR3aWRlPTc3MDtlLmhhdHdpZGVyPTc3MDtlLmhhdHdpZGVzdD03NzA7ZS5pbnRlcmNhbD03NDg4O2UuaW50ZWdyYWxkaXNwbGF5PTg3NDc7ZS5pbnRlZ3JhbHRleHQ9ODc0NztlLmludGVyc2VjdGlvbmRpc3BsYXk9ODg5ODtlLmludGVyc2VjdGlvbnRleHQ9ODg5ODtlLmxvZ2ljYWxhbmRkaXNwbGF5PTg3NDM7ZS5sb2dpY2FsYW5kdGV4dD04NzQzO2UubG9naWNhbG9yZGlzcGxheT04NzQ0O2UubG9naWNhbG9ydGV4dD04NzQ0O2UucGFyZW5sZWZ0QmlnPTQwO2UucGFyZW5sZWZ0YmlnPTQwO2UucGFyZW5sZWZ0QmlnZz00MDtlLnBhcmVubGVmdGJpZ2c9NDA7ZS5wYXJlbnJpZ2h0QmlnPTQxO2UucGFyZW5yaWdodGJpZz00MTtlLnBhcmVucmlnaHRCaWdnPTQxO2UucGFyZW5yaWdodGJpZ2c9NDE7ZS5wcmltZT04MjQyO2UucHJvZHVjdGRpc3BsYXk9ODcxOTtlLnByb2R1Y3R0ZXh0PTg3MTk7ZS5yYWRpY2FsYmlnPTg3MzA7ZS5yYWRpY2FsQmlnPTg3MzA7ZS5yYWRpY2FsQmlnZz04NzMwO2UucmFkaWNhbGJpZ2c9ODczMDtlLnJhZGljYWxidD04NzMwO2UucmFkaWNhbHRwPTg3MzA7ZS5yYWRpY2FsdmVydGV4PTg3MzA7ZS5zbGFzaGJpZz00NztlLnNsYXNoQmlnPTQ3O2Uuc2xhc2hCaWdnPTQ3O2Uuc2xhc2hiaWdnPTQ3O2Uuc3VtbWF0aW9uZGlzcGxheT04NzIxO2Uuc3VtbWF0aW9udGV4dD04NzIxO2UudGlsZGV3aWRlPTczMjtlLnRpbGRld2lkZXI9NzMyO2UudGlsZGV3aWRlc3Q9NzMyO2UudW5pb25kaXNwbGF5PTg4OTk7ZS51bmlvbm11bHRpZGlzcGxheT04ODQ2O2UudW5pb25tdWx0aXRleHQ9ODg0NjtlLnVuaW9uc3FkaXNwbGF5PTg4NTI7ZS51bmlvbnNxdGV4dD04ODUyO2UudW5pb250ZXh0PTg4OTk7ZS52ZXh0ZW5kZG91YmxlPTg3NDE7ZS52ZXh0ZW5kc2luZ2xlPTg3Mzl9KSxwbj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0zMjtlLmExPTk5ODU7ZS5hMj05OTg2O2UuYTIwMj05OTg3O2UuYTM9OTk4ODtlLmE0PTk3NDI7ZS5hNT05OTkwO2UuYTExOT05OTkxO2UuYTExOD05OTkyO2UuYTExNz05OTkzO2UuYTExPTk3NTU7ZS5hMTI9OTc1ODtlLmExMz05OTk2O2UuYTE0PTk5OTc7ZS5hMTU9OTk5ODtlLmExNj05OTk5O2UuYTEwNT0xZTQ7ZS5hMTc9MTAwMDE7ZS5hMTg9MTAwMDI7ZS5hMTk9MTAwMDM7ZS5hMjA9MTAwMDQ7ZS5hMjE9MTAwMDU7ZS5hMjI9MTAwMDY7ZS5hMjM9MTAwMDc7ZS5hMjQ9MTAwMDg7ZS5hMjU9MTAwMDk7ZS5hMjY9MTAwMTA7ZS5hMjc9MTAwMTE7ZS5hMjg9MTAwMTI7ZS5hNj0xMDAxMztlLmE3PTEwMDE0O2UuYTg9MTAwMTU7ZS5hOT0xMDAxNjtlLmExMD0xMDAxNztlLmEyOT0xMDAxODtlLmEzMD0xMDAxOTtlLmEzMT0xMDAyMDtlLmEzMj0xMDAyMTtlLmEzMz0xMDAyMjtlLmEzND0xMDAyMztlLmEzNT05NzMzO2UuYTM2PTEwMDI1O2UuYTM3PTEwMDI2O2UuYTM4PTEwMDI3O2UuYTM5PTEwMDI4O2UuYTQwPTEwMDI5O2UuYTQxPTEwMDMwO2UuYTQyPTEwMDMxO2UuYTQzPTEwMDMyO2UuYTQ0PTEwMDMzO2UuYTQ1PTEwMDM0O2UuYTQ2PTEwMDM1O2UuYTQ3PTEwMDM2O2UuYTQ4PTEwMDM3O2UuYTQ5PTEwMDM4O2UuYTUwPTEwMDM5O2UuYTUxPTEwMDQwO2UuYTUyPTEwMDQxO2UuYTUzPTEwMDQyO2UuYTU0PTEwMDQzO2UuYTU1PTEwMDQ0O2UuYTU2PTEwMDQ1O2UuYTU3PTEwMDQ2O2UuYTU4PTEwMDQ3O2UuYTU5PTEwMDQ4O2UuYTYwPTEwMDQ5O2UuYTYxPTEwMDUwO2UuYTYyPTEwMDUxO2UuYTYzPTEwMDUyO2UuYTY0PTEwMDUzO2UuYTY1PTEwMDU0O2UuYTY2PTEwMDU1O2UuYTY3PTEwMDU2O2UuYTY4PTEwMDU3O2UuYTY5PTEwMDU4O2UuYTcwPTEwMDU5O2UuYTcxPTk2Nzk7ZS5hNzI9MTAwNjE7ZS5hNzM9OTYzMjtlLmE3ND0xMDA2MztlLmEyMDM9MTAwNjQ7ZS5hNzU9MTAwNjU7ZS5hMjA0PTEwMDY2O2UuYTc2PTk2NTA7ZS5hNzc9OTY2MDtlLmE3OD05NjcwO2UuYTc5PTEwMDcwO2UuYTgxPTk2ODc7ZS5hODI9MTAwNzI7ZS5hODM9MTAwNzM7ZS5hODQ9MTAwNzQ7ZS5hOTc9MTAwNzU7ZS5hOTg9MTAwNzY7ZS5hOTk9MTAwNzc7ZS5hMTAwPTEwMDc4O2UuYTEwMT0xMDA4MTtlLmExMDI9MTAwODI7ZS5hMTAzPTEwMDgzO2UuYTEwND0xMDA4NDtlLmExMDY9MTAwODU7ZS5hMTA3PTEwMDg2O2UuYTEwOD0xMDA4NztlLmExMTI9OTgyNztlLmExMTE9OTgzMDtlLmExMTA9OTgyOTtlLmExMDk9OTgyNDtlLmExMjA9OTMxMjtlLmExMjE9OTMxMztlLmExMjI9OTMxNDtlLmExMjM9OTMxNTtlLmExMjQ9OTMxNjtlLmExMjU9OTMxNztlLmExMjY9OTMxODtlLmExMjc9OTMxOTtlLmExMjg9OTMyMDtlLmExMjk9OTMyMTtlLmExMzA9MTAxMDI7ZS5hMTMxPTEwMTAzO2UuYTEzMj0xMDEwNDtlLmExMzM9MTAxMDU7ZS5hMTM0PTEwMTA2O2UuYTEzNT0xMDEwNztlLmExMzY9MTAxMDg7ZS5hMTM3PTEwMTA5O2UuYTEzOD0xMDExMDtlLmExMzk9MTAxMTE7ZS5hMTQwPTEwMTEyO2UuYTE0MT0xMDExMztlLmExNDI9MTAxMTQ7ZS5hMTQzPTEwMTE1O2UuYTE0ND0xMDExNjtlLmExNDU9MTAxMTc7ZS5hMTQ2PTEwMTE4O2UuYTE0Nz0xMDExOTtlLmExNDg9MTAxMjA7ZS5hMTQ5PTEwMTIxO2UuYTE1MD0xMDEyMjtlLmExNTE9MTAxMjM7ZS5hMTUyPTEwMTI0O2UuYTE1Mz0xMDEyNTtlLmExNTQ9MTAxMjY7ZS5hMTU1PTEwMTI3O2UuYTE1Nj0xMDEyODtlLmExNTc9MTAxMjk7ZS5hMTU4PTEwMTMwO2UuYTE1OT0xMDEzMTtlLmExNjA9MTAxMzI7ZS5hMTYxPTg1OTQ7ZS5hMTYzPTg1OTY7ZS5hMTY0PTg1OTc7ZS5hMTk2PTEwMTM2O2UuYTE2NT0xMDEzNztlLmExOTI9MTAxMzg7ZS5hMTY2PTEwMTM5O2UuYTE2Nz0xMDE0MDtlLmExNjg9MTAxNDE7ZS5hMTY5PTEwMTQyO2UuYTE3MD0xMDE0MztlLmExNzE9MTAxNDQ7ZS5hMTcyPTEwMTQ1O2UuYTE3Mz0xMDE0NjtlLmExNjI9MTAxNDc7ZS5hMTc0PTEwMTQ4O2UuYTE3NT0xMDE0OTtlLmExNzY9MTAxNTA7ZS5hMTc3PTEwMTUxO2UuYTE3OD0xMDE1MjtlLmExNzk9MTAxNTM7ZS5hMTkzPTEwMTU0O2UuYTE4MD0xMDE1NTtlLmExOTk9MTAxNTY7ZS5hMTgxPTEwMTU3O2UuYTIwMD0xMDE1ODtlLmExODI9MTAxNTk7ZS5hMjAxPTEwMTYxO2UuYTE4Mz0xMDE2MjtlLmExODQ9MTAxNjM7ZS5hMTk3PTEwMTY0O2UuYTE4NT0xMDE2NTtlLmExOTQ9MTAxNjY7ZS5hMTk4PTEwMTY3O2UuYTE4Nj0xMDE2ODtlLmExOTU9MTAxNjk7ZS5hMTg3PTEwMTcwO2UuYTE4OD0xMDE3MTtlLmExODk9MTAxNzI7ZS5hMTkwPTEwMTczO2UuYTE5MT0xMDE3NDtlLmE4OT0xMDA4ODtlLmE5MD0xMDA4OTtlLmE5Mz0xMDA5MDtlLmE5ND0xMDA5MTtlLmE5MT0xMDA5MjtlLmE5Mj0xMDA5MztlLmEyMDU9MTAwOTQ7ZS5hODU9MTAwOTU7ZS5hMjA2PTEwMDk2O2UuYTg2PTEwMDk3O2UuYTg3PTEwMDk4O2UuYTg4PTEwMDk5O2UuYTk1PTEwMTAwO2UuYTk2PTEwMTAxO2VbIi5ub3RkZWYiXT0wfSksZG49Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KTtmdW5jdGlvbiBnZXRVbmljb2RlRm9yR2x5cGgoZSx0KXtsZXQgYT10W2VdO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGE7aWYoIWUpcmV0dXJuLTE7aWYoInUiPT09ZVswXSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgbjtpZig3PT09dCYmIm4iPT09ZVsxXSYmImkiPT09ZVsyXSluPWUuc3Vic3RyaW5nKDMpO2Vsc2V7aWYoISh0Pj01JiZ0PD03KSlyZXR1cm4tMTtuPWUuc3Vic3RyaW5nKDEpfWlmKG49PT1uLnRvVXBwZXJDYXNlKCkpe2E9cGFyc2VJbnQobiwxNik7aWYoYT49MClyZXR1cm4gYX19cmV0dXJuLTF9Y29uc3QgZ249W1swLDEyN10sWzEyOCwyNTVdLFsyNTYsMzgzXSxbMzg0LDU5MV0sWzU5Miw2ODcsNzQyNCw3NTUxLDc1NTIsNzYxNV0sWzY4OCw3NjcsNDI3NTIsNDI3ODNdLFs3NjgsODc5LDc2MTYsNzY3OV0sWzg4MCwxMDIzXSxbMTEzOTIsMTE1MTldLFsxMDI0LDEyNzksMTI4MCwxMzI3LDExNzQ0LDExNzc1LDQyNTYwLDQyNjU1XSxbMTMyOCwxNDIzXSxbMTQyNCwxNTM1XSxbNDIyNDAsNDI1NTldLFsxNTM2LDE3OTEsMTg3MiwxOTE5XSxbMTk4NCwyMDQ3XSxbMjMwNCwyNDMxXSxbMjQzMiwyNTU5XSxbMjU2MCwyNjg3XSxbMjY4OCwyODE1XSxbMjgxNiwyOTQzXSxbMjk0NCwzMDcxXSxbMzA3MiwzMTk5XSxbMzIwMCwzMzI3XSxbMzMyOCwzNDU1XSxbMzU4NCwzNzExXSxbMzcxMiwzODM5XSxbNDI1Niw0MzUxLDExNTIwLDExNTY3XSxbNjkxMiw3MDM5XSxbNDM1Miw0NjA3XSxbNzY4MCw3OTM1LDExMzYwLDExMzkxLDQyNzg0LDQzMDA3XSxbNzkzNiw4MTkxXSxbODE5Miw4MzAzLDExNzc2LDExOTAzXSxbODMwNCw4MzUxXSxbODM1Miw4Mzk5XSxbODQwMCw4NDQ3XSxbODQ0OCw4NTI3XSxbODUyOCw4NTkxXSxbODU5Miw4NzAzLDEwMjI0LDEwMjM5LDEwNDk2LDEwNjIzLDExMDA4LDExMjYzXSxbODcwNCw4OTU5LDEwNzUyLDExMDA3LDEwMTc2LDEwMjIzLDEwNjI0LDEwNzUxXSxbODk2MCw5MjE1XSxbOTIxNiw5Mjc5XSxbOTI4MCw5MzExXSxbOTMxMiw5NDcxXSxbOTQ3Miw5NTk5XSxbOTYwMCw5NjMxXSxbOTYzMiw5NzI3XSxbOTcyOCw5OTgzXSxbOTk4NCwxMDE3NV0sWzEyMjg4LDEyMzUxXSxbMTIzNTIsMTI0NDddLFsxMjQ0OCwxMjU0MywxMjc4NCwxMjc5OV0sWzEyNTQ0LDEyNTkxLDEyNzA0LDEyNzM1XSxbMTI1OTIsMTI2ODddLFs0MzA3Miw0MzEzNV0sWzEyODAwLDEzMDU1XSxbMTMwNTYsMTMzMTFdLFs0NDAzMiw1NTIxNV0sWzU1Mjk2LDU3MzQzXSxbNjc4NDAsNjc4NzFdLFsxOTk2OCw0MDk1OSwxMTkwNCwxMjAzMSwxMjAzMiwxMjI1NSwxMjI3MiwxMjI4NywxMzMxMiwxOTkwMywxMzEwNzIsMTczNzkxLDEyNjg4LDEyNzAzXSxbNTczNDQsNjM3NDNdLFsxMjczNiwxMjc4Myw2Mzc0NCw2NDI1NSwxOTQ1NjAsMTk1MTAzXSxbNjQyNTYsNjQzMzVdLFs2NDMzNiw2NTAyM10sWzY1MDU2LDY1MDcxXSxbNjUwNDAsNjUwNTVdLFs2NTEwNCw2NTEzNV0sWzY1MTM2LDY1Mjc5XSxbNjUyODAsNjU1MTldLFs2NTUyMCw2NTUzNV0sWzM4NDAsNDA5NV0sWzE3OTIsMTg3MV0sWzE5MjAsMTk4M10sWzM0NTYsMzU4M10sWzQwOTYsNDI1NV0sWzQ2MDgsNDk5MSw0OTkyLDUwMjMsMTE2NDgsMTE3NDNdLFs1MDI0LDUxMTldLFs1MTIwLDU3NTldLFs1NzYwLDU3OTFdLFs1NzkyLDU4ODddLFs2MDE2LDYxNDNdLFs2MTQ0LDYzMTldLFsxMDI0MCwxMDQ5NV0sWzQwOTYwLDQyMTI3XSxbNTg4OCw1OTE5LDU5MjAsNTk1MSw1OTUyLDU5ODMsNTk4NCw2MDE1XSxbNjYzMDQsNjYzNTFdLFs2NjM1Miw2NjM4M10sWzY2NTYwLDY2NjM5XSxbMTE4Nzg0LDExOTAzOSwxMTkwNDAsMTE5Mjk1LDExOTI5NiwxMTkzNzVdLFsxMTk4MDgsMTIwODMxXSxbMTA0NDQ4MCwxMDQ4NTczXSxbNjUwMjQsNjUwMzksOTE3NzYwLDkxNzk5OV0sWzkxNzUwNCw5MTc2MzFdLFs2NDAwLDY0NzldLFs2NDgwLDY1MjddLFs2NTI4LDY2MjNdLFs2NjU2LDY2ODddLFsxMTI2NCwxMTM1OV0sWzExNTY4LDExNjQ3XSxbMTk5MDQsMTk5NjddLFs0MzAwOCw0MzA1NV0sWzY1NTM2LDY1NjYzLDY1NjY0LDY1NzkxLDY1NzkyLDY1ODU1XSxbNjU4NTYsNjU5MzVdLFs2NjQzMiw2NjQ2M10sWzY2NDY0LDY2NTI3XSxbNjY2NDAsNjY2ODddLFs2NjY4OCw2NjczNV0sWzY3NTg0LDY3NjQ3XSxbNjgwOTYsNjgxOTFdLFsxMTk1NTIsMTE5NjQ3XSxbNzM3MjgsNzQ3NTEsNzQ3NTIsNzQ4NzldLFsxMTk2NDgsMTE5Njc5XSxbNzA0MCw3MTAzXSxbNzE2OCw3MjQ3XSxbNzI0OCw3Mjk1XSxbNDMxMzYsNDMyMzFdLFs0MzI2NCw0MzMxMV0sWzQzMzEyLDQzMzU5XSxbNDM1MjAsNDM2MTVdLFs2NTkzNiw2NTk5OV0sWzY2ZTMsNjYwNDddLFs2NjIwOCw2NjI3MSw2NjE3Niw2NjIwNyw2Nzg3Miw2NzkwM10sWzEyNzAyNCwxMjcxMzUsMTI2OTc2LDEyNzAyM11dO2Z1bmN0aW9uIGdldFVuaWNvZGVSYW5nZUZvcihlLHQ9LTEpe2lmKC0xIT09dCl7Y29uc3QgYT1nblt0XTtmb3IobGV0IG49MCxzPWEubGVuZ3RoO248cztuKz0yKWlmKGU+PWFbbl0mJmU8PWFbbisxXSlyZXR1cm4gdH1mb3IobGV0IHQ9MCxhPWduLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWduW3RdO2ZvcihsZXQgbj0wLHM9YS5sZW5ndGg7bjxzO24rPTIpaWYoZT49YVtuXSYmZTw9YVtuKzFdKXJldHVybiB0fXJldHVybi0xfWNvbnN0IGJuPW5ldyBSZWdFeHAoIl4oXFxzKXwoXFxwe01ufSl8KFxccHtDZn0pJCIsInUiKSx3bj1uZXcgTWFwO2NvbnN0IGpuPSEwLGtuPTEseW49Mixxbj00LHZuPTMyLFNuPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXTtmdW5jdGlvbiByZWNvdmVyR2x5cGhOYW1lKGUsdCl7aWYodm9pZCAwIT09dFtlXSlyZXR1cm4gZTtjb25zdCBhPWdldFVuaWNvZGVGb3JHbHlwaChlLHQpO2lmKC0xIT09YSlmb3IoY29uc3QgZSBpbiB0KWlmKHRbZV09PT1hKXJldHVybiBlO2luZm8oIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSk7cmV0dXJuIGV9ZnVuY3Rpb24gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsdCxhKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHMscixpO2NvbnN0IG89ISEoZS5mbGFncyZxbik7aWYoZS5pc0ludGVybmFsRm9udCl7aT10O2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspe3M9YS5pbmRleE9mKGlbcl0pO25bcl09cz49MD9zOjB9fWVsc2UgaWYoZS5iYXNlRW5jb2RpbmdOYW1lKXtpPWdldEVuY29kaW5nKGUuYmFzZUVuY29kaW5nTmFtZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyl7cz1hLmluZGV4T2YoaVtyXSk7bltyXT1zPj0wP3M6MH19ZWxzZSBpZihvKWZvcihyIGluIHQpbltyXT10W3JdO2Vsc2V7aT1mbjtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKXtzPWEuaW5kZXhPZihpW3JdKTtuW3JdPXM+PTA/czowfX1jb25zdCBsPWUuZGlmZmVyZW5jZXM7bGV0IGY7aWYobClmb3IociBpbiBsKXtjb25zdCBlPWxbcl07cz1hLmluZGV4T2YoZSk7aWYoLTE9PT1zKXtmfHwoZj1tbigpKTtjb25zdCB0PXJlY292ZXJHbHlwaE5hbWUoZSxmKTt0IT09ZSYmKHM9YS5pbmRleE9mKHQpKX1uW3JdPXM+PTA/czowfXJldHVybiBufWZ1bmN0aW9uIG5vcm1hbGl6ZUZvbnROYW1lKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpLnJlcGxhY2VBbGwoL1xzL2csIiIpfWNvbnN0IEFuPWdldExvb2t1cFRhYmxlRmFjdG9yeShlPT57ZVs4MjExXT02NTA3NDtlWzgyMTJdPTY1MDczO2VbODIyOV09NjUwNzI7ZVs4MjMwXT02NTA0OTtlWzEyMjg5XT02NTA0MTtlWzEyMjkwXT02NTA0MjtlWzEyMjk2XT02NTA4NztlWzEyMjk3XT02NTA4ODtlWzEyMjk4XT02NTA4NTtlWzEyMjk5XT02NTA4NjtlWzEyMzAwXT02NTA4OTtlWzEyMzAxXT02NTA5MDtlWzEyMzAyXT02NTA5MTtlWzEyMzAzXT02NTA5MjtlWzEyMzA0XT02NTA4MztlWzEyMzA1XT02NTA4NDtlWzEyMzA4XT02NTA4MTtlWzEyMzA5XT02NTA4MjtlWzEyMzEwXT02NTA0NztlWzEyMzExXT02NTA0ODtlWzY1MTAzXT02NTA3NjtlWzY1MjgxXT02NTA0NTtlWzY1Mjg4XT02NTA3NztlWzY1Mjg5XT02NTA3ODtlWzY1MjkyXT02NTA0MDtlWzY1MzA2XT02NTA0MztlWzY1MzA3XT02NTA0NDtlWzY1MzExXT02NTA0NjtlWzY1MzM5XT02NTA5NTtlWzY1MzQxXT02NTA5NjtlWzY1MzQzXT02NTA3NTtlWzY1MzcxXT02NTA3OTtlWzY1MzczXT02NTA4MH0pO2NvbnN0IHhuPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl0sQ249WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0sSW49WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl0sRm49WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl0sVG49MzkxLE9uPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjF9LHtpZDoicmV0dXJuIixtaW46MH0sbnVsbCxudWxsLHtpZDoiZW5kY2hhciIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0sbnVsbCxudWxsLG51bGwse2lkOiJoc3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoiaGludG1hc2siLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiY250cm1hc2siLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicm1vdmV0byIsbWluOjIsc3RhY2tDbGVhcmluZzohMH0se2lkOiJobW92ZXRvIixtaW46MSxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InZzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJyY3VydmVsaW5lIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InJsaW5lY3VydmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoidnZjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6ImhoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0sbnVsbCx7aWQ6ImNhbGxnc3ViciIsbWluOjF9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLFJuPVtudWxsLG51bGwsbnVsbCx7aWQ6ImFuZCIsbWluOjIsc3RhY2tEZWx0YTotMX0se2lkOiJvciIsbWluOjIsc3RhY2tEZWx0YTotMX0se2lkOiJub3QiLG1pbjoxLHN0YWNrRGVsdGE6MH0sbnVsbCxudWxsLG51bGwse2lkOiJhYnMiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJhZGQiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0rZVt0LTFdfX0se2lkOiJzdWIiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0tZVt0LTFdfX0se2lkOiJkaXYiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0vZVt0LTFdfX0sbnVsbCx7aWQ6Im5lZyIsbWluOjEsc3RhY2tEZWx0YTowLHN0YWNrRm4oZSx0KXtlW3QtMV09LWVbdC0xXX19LHtpZDoiZXEiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LG51bGwsbnVsbCx7aWQ6ImRyb3AiLG1pbjoxLHN0YWNrRGVsdGE6LTF9LG51bGwse2lkOiJwdXQiLG1pbjoyLHN0YWNrRGVsdGE6LTJ9LHtpZDoiZ2V0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiaWZlbHNlIixtaW46NCxzdGFja0RlbHRhOi0zfSx7aWQ6InJhbmRvbSIsbWluOjAsc3RhY2tEZWx0YToxfSx7aWQ6Im11bCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXSplW3QtMV19fSxudWxsLHtpZDoic3FydCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImR1cCIsbWluOjEsc3RhY2tEZWx0YToxfSx7aWQ6ImV4Y2giLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJpbmRleCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6InJvbGwiLG1pbjozLHN0YWNrRGVsdGE6LTJ9LG51bGwsbnVsbCxudWxsLHtpZDoiaGZsZXgiLG1pbjo3LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleCIsbWluOjEzLHJlc2V0U3RhY2s6ITB9LHtpZDoiaGZsZXgxIixtaW46OSxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgxIixtaW46MTEscmVzZXRTdGFjazohMH1dO2NsYXNzIENGRlBhcnNlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5ieXRlcz1lLmdldEJ5dGVzKCk7dGhpcy5wcm9wZXJ0aWVzPXQ7dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhYX1wYXJzZSgpe2NvbnN0IGU9dGhpcy5wcm9wZXJ0aWVzLHQ9bmV3IENGRih0aGlzLmJ5dGVzLmxlbmd0aCk7dGhpcy5jZmY9dDtjb25zdCBhPXRoaXMucGFyc2VIZWFkZXIoKSxuPXRoaXMucGFyc2VJbmRleChhLmVuZFBvcykscz10aGlzLnBhcnNlSW5kZXgobi5lbmRQb3MpLHI9dGhpcy5wYXJzZUluZGV4KHMuZW5kUG9zKSxpPXRoaXMucGFyc2VJbmRleChyLmVuZFBvcyksbz10aGlzLnBhcnNlRGljdChzLm9iai5nZXQoMCkpLGw9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3Qsbyx0LnN0cmluZ3MpO3QuaGVhZGVyPWEub2JqO3QubmFtZXM9dGhpcy5wYXJzZU5hbWVJbmRleChuLm9iaik7dC5zdHJpbmdzPXRoaXMucGFyc2VTdHJpbmdJbmRleChyLm9iaik7dC50b3BEaWN0PWw7dC5nbG9iYWxTdWJySW5kZXg9aS5vYmo7dGhpcy5wYXJzZVByaXZhdGVEaWN0KHQudG9wRGljdCk7dC5pc0NJREZvbnQ9bC5oYXNOYW1lKCJST1MiKTtjb25zdCBmPWwuZ2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIpLGM9dGhpcy5wYXJzZUluZGV4KGYpLm9iajt0LmNoYXJTdHJpbmdDb3VudD1jLmNvdW50O2NvbnN0IGg9bC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtoJiYoZS5mb250TWF0cml4PWgpO2NvbnN0IHU9bC5nZXRCeU5hbWUoIkZvbnRCQm94Iik7aWYodSl7ZS5hc2NlbnQ9TWF0aC5tYXgodVszXSx1WzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4odVsxXSx1WzNdKTtlLmFzY2VudFNjYWxlZD0hMH1sZXQgbSxwO2lmKHQuaXNDSURGb250KXtjb25zdCBlPXRoaXMucGFyc2VJbmRleChsLmdldEJ5TmFtZSgiRkRBcnJheSIpKS5vYmo7Zm9yKGxldCBhPTAsbj1lLmNvdW50O2E8bjsrK2Epe2NvbnN0IG49ZS5nZXQoYSkscz10aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCx0aGlzLnBhcnNlRGljdChuKSx0LnN0cmluZ3MpO3RoaXMucGFyc2VQcml2YXRlRGljdChzKTt0LmZkQXJyYXkucHVzaChzKX1wPW51bGw7bT10aGlzLnBhcnNlQ2hhcnNldHMobC5nZXRCeU5hbWUoImNoYXJzZXQiKSxjLmNvdW50LHQuc3RyaW5ncywhMCk7dC5mZFNlbGVjdD10aGlzLnBhcnNlRkRTZWxlY3QobC5nZXRCeU5hbWUoIkZEU2VsZWN0IiksYy5jb3VudCl9ZWxzZXttPXRoaXMucGFyc2VDaGFyc2V0cyhsLmdldEJ5TmFtZSgiY2hhcnNldCIpLGMuY291bnQsdC5zdHJpbmdzLCExKTtwPXRoaXMucGFyc2VFbmNvZGluZyhsLmdldEJ5TmFtZSgiRW5jb2RpbmciKSxlLHQuc3RyaW5ncyxtLmNoYXJzZXQpfXQuY2hhcnNldD1tO3QuZW5jb2Rpbmc9cDtjb25zdCBkPXRoaXMucGFyc2VDaGFyU3RyaW5ncyh7Y2hhclN0cmluZ3M6Yyxsb2NhbFN1YnJJbmRleDpsLnByaXZhdGVEaWN0LnN1YnJzSW5kZXgsZ2xvYmFsU3VickluZGV4Omkub2JqLGZkU2VsZWN0OnQuZmRTZWxlY3QsZmRBcnJheTp0LmZkQXJyYXkscHJpdmF0ZURpY3Q6bC5wcml2YXRlRGljdH0pO3QuY2hhclN0cmluZ3M9ZC5jaGFyU3RyaW5nczt0LnNlYWNzPWQuc2VhY3M7dC53aWR0aHM9ZC53aWR0aHM7cmV0dXJuIHR9cGFyc2VIZWFkZXIoKXtsZXQgZT10aGlzLmJ5dGVzO2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8dCYmMSE9PWVbYV07KSsrYTtpZihhPj10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBDRkYgaGVhZGVyIik7aWYoMCE9PWEpe2luZm8oImNmZiBkYXRhIGlzIHNoaWZ0ZWQiKTtlPWUuc3ViYXJyYXkoYSk7dGhpcy5ieXRlcz1lfWNvbnN0IG49ZVswXSxzPWVbMV0scj1lWzJdLGk9ZVszXTtyZXR1cm57b2JqOm5ldyBDRkZIZWFkZXIobixzLHIsaSksZW5kUG9zOnJ9fXBhcnNlRGljdChlKXtjb25zdCB0PW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlc0xlbmd0aCk7bGV0IGE9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgbj1lW2ErK107aWYoMzA9PT1uKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCB0PSIiO2NvbnN0IG49MTUscz1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0scj1lLmxlbmd0aDtmb3IoO2E8cjspe2NvbnN0IHI9ZVthKytdLGk9cj4+NCxvPTE1JnI7aWYoaT09PW4pYnJlYWs7dCs9c1tpXTtpZihvPT09bilicmVhazt0Kz1zW29dfXJldHVybiBwYXJzZUZsb2F0KHQpfSgpO2lmKDI4PT09bil7bj10LmdldEludDE2KGEpO2ErPTI7cmV0dXJuIG59aWYoMjk9PT1uKXtuPXQuZ2V0SW50MzIoYSk7YSs9NDtyZXR1cm4gbn1pZihuPj0zMiYmbjw9MjQ2KXJldHVybiBuLTEzOTtpZihuPj0yNDcmJm48PTI1MClyZXR1cm4gMjU2KihuLTI0NykrZVthKytdKzEwODtpZihuPj0yNTEmJm48PTI1NClyZXR1cm4tMjU2KihuLTI1MSktZVthKytdLTEwODt3YXJuKGBDRkZQYXJzZXIucGFyc2VEaWN0OiAiJHtufSIgaXMgYSByZXNlcnZlZCBjb21tYW5kLmApO3JldHVybiBOYU59bGV0IG49W107Y29uc3Qgcz1bXTthPTA7Y29uc3Qgcj1lLmxlbmd0aDtmb3IoO2E8cjspe2xldCB0PWVbYV07aWYodDw9MjEpezEyPT09dCYmKHQ9dDw8OHxlWysrYV0pO3MucHVzaChbdCxuXSk7bj1bXTsrK2F9ZWxzZSBuLnB1c2gocGFyc2VPcGVyYW5kKCkpfXJldHVybiBzfXBhcnNlSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXgsYT10aGlzLmJ5dGVzLG49YVtlKytdPDw4fGFbZSsrXSxzPVtdO2xldCByLGksbz1lO2lmKDAhPT1uKXtjb25zdCB0PWFbZSsrXSxsPWUrKG4rMSkqdC0xO2ZvcihyPTAsaT1uKzE7cjxpOysrcil7bGV0IG49MDtmb3IobGV0IHM9MDtzPHQ7KytzKXtuPDw9ODtuKz1hW2UrK119cy5wdXNoKGwrbil9bz1zW25dfWZvcihyPTAsaT1zLmxlbmd0aC0xO3I8aTsrK3Ipe2NvbnN0IGU9c1tyXSxuPXNbcisxXTt0LmFkZChhLnN1YmFycmF5KGUsbikpfXJldHVybntvYmo6dCxlbmRQb3M6b319cGFyc2VOYW1lSW5kZXgoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxuPWUuY291bnQ7YTxuOysrYSl7Y29uc3Qgbj1lLmdldChhKTt0LnB1c2goYnl0ZXNUb1N0cmluZyhuKSl9cmV0dXJuIHR9cGFyc2VTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZTdHJpbmdzO2ZvcihsZXQgYT0wLG49ZS5jb3VudDthPG47KythKXtjb25zdCBuPWUuZ2V0KGEpO3QuYWRkKGJ5dGVzVG9TdHJpbmcobikpfXJldHVybiB0fWNyZWF0ZURpY3QoZSx0LGEpe2NvbnN0IG49bmV3IGUoYSk7Zm9yKGNvbnN0W2UsYV1vZiB0KW4uc2V0QnlLZXkoZSxhKTtyZXR1cm4gbn1wYXJzZUNoYXJTdHJpbmcoZSx0LGEsbil7aWYoIXR8fGUuY2FsbERlcHRoPjEwKXJldHVybiExO2NvbnN0IHM9bmV3IERhdGFWaWV3KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVzTGVuZ3RoKTtsZXQgcj1lLnN0YWNrU2l6ZTtjb25zdCBpPWUuc3RhY2s7bGV0IG89dC5sZW5ndGg7Zm9yKGxldCBsPTA7bDxvOyl7Y29uc3QgZj10W2wrK107bGV0IGM9bnVsbDtpZigxMj09PWYpe2NvbnN0IGU9dFtsKytdO2lmKDA9PT1lKXt0W2wtMl09MTM5O3RbbC0xXT0yMjtyPTB9ZWxzZSBjPVJuW2VdfWVsc2UgaWYoMjg9PT1mKXtpW3JdPXMuZ2V0SW50MTYobCk7bCs9MjtyKyt9ZWxzZSBpZigxND09PWYpe2lmKHI+PTQpe3ItPTQ7aWYodGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKXtlLnNlYWM9aS5zbGljZShyLHIrNCk7cmV0dXJuITF9fWM9T25bZl19ZWxzZSBpZihmPj0zMiYmZjw9MjQ2KXtpW3JdPWYtMTM5O3IrK31lbHNlIGlmKGY+PTI0NyYmZjw9MjU0KXtpW3JdPWY8MjUxPyhmLTI0Nzw8OCkrdFtsXSsxMDg6LShmLTI1MTw8OCktdFtsXS0xMDg7bCsrO3IrK31lbHNlIGlmKDI1NT09PWYpe2lbcl09cy5nZXRJbnQzMihsKS82NTUzNjtsKz00O3IrK31lbHNlIGlmKDE5PT09Znx8MjA9PT1mKXtlLmhpbnRzKz1yPj4xO2lmKDA9PT1lLmhpbnRzKXt0LmNvcHlXaXRoaW4obC0xLGwsLTEpO2wtPTE7by09MTtjb250aW51ZX1sKz1lLmhpbnRzKzc+PjM7ciU9MjtjPU9uW2ZdfWVsc2V7aWYoMTA9PT1mfHwyOT09PWYpe2NvbnN0IHQ9MTA9PT1mP2E6bjtpZighdCl7Yz1PbltmXTt3YXJuKCJNaXNzaW5nIHN1YnJzSW5kZXggZm9yICIrYy5pZCk7cmV0dXJuITF9bGV0IHM9MzI3Njg7dC5jb3VudDwxMjQwP3M9MTA3OnQuY291bnQ8MzM5MDAmJihzPTExMzEpO2NvbnN0IG89aVstLXJdK3M7aWYobzwwfHxvPj10LmNvdW50fHxpc05hTihvKSl7Yz1PbltmXTt3YXJuKCJPdXQgb2YgYm91bmRzIHN1YnJJbmRleCBmb3IgIitjLmlkKTtyZXR1cm4hMX1lLnN0YWNrU2l6ZT1yO2UuY2FsbERlcHRoKys7aWYoIXRoaXMucGFyc2VDaGFyU3RyaW5nKGUsdC5nZXQobyksYSxuKSlyZXR1cm4hMTtlLmNhbGxEZXB0aC0tO3I9ZS5zdGFja1NpemU7Y29udGludWV9aWYoMTE9PT1mKXtlLnN0YWNrU2l6ZT1yO3JldHVybiEwfWlmKDA9PT1mJiZsPT09dC5sZW5ndGgpe3RbbC0xXT0xNDtjPU9uWzE0XX1lbHNle2lmKDk9PT1mKXt0LmNvcHlXaXRoaW4obC0xLGwsLTEpO2wtPTE7by09MTtjb250aW51ZX1jPU9uW2ZdfX1pZihjKXtpZihjLnN0ZW0pe2UuaGludHMrPXI+PjE7aWYoMz09PWZ8fDIzPT09ZillLmhhc1ZTdGVtcz0hMDtlbHNlIGlmKGUuaGFzVlN0ZW1zJiYoMT09PWZ8fDE4PT09Zikpe3dhcm4oIkNGRiBzdGVtIGhpbnRzIGFyZSBpbiB3cm9uZyBvcmRlciIpO3RbbC0xXT0xPT09Zj8zOjIzfX1pZihyPGMubWluKXt3YXJuKCJOb3QgZW5vdWdoIHBhcmFtZXRlcnMgZm9yICIrYy5pZCsiOyBhY3R1YWw6ICIrcisiLCBleHBlY3RlZDogIitjLm1pbik7aWYoMD09PXIpe3RbbC0xXT0xNDtyZXR1cm4hMH1yZXR1cm4hMX1pZihlLmZpcnN0U3RhY2tDbGVhcmluZyYmYy5zdGFja0NsZWFyaW5nKXtlLmZpcnN0U3RhY2tDbGVhcmluZz0hMTtyLT1jLm1pbjtyPj0yJiZjLnN0ZW0/ciU9MjpyPjEmJndhcm4oIkZvdW5kIHRvbyBtYW55IHBhcmFtZXRlcnMgZm9yIHN0YWNrLWNsZWFyaW5nIGNvbW1hbmQiKTtyPjAmJihlLndpZHRoPWlbci0xXSl9aWYoInN0YWNrRGVsdGEiaW4gYyl7InN0YWNrRm4iaW4gYyYmYy5zdGFja0ZuKGkscik7cis9Yy5zdGFja0RlbHRhfWVsc2UoYy5zdGFja0NsZWFyaW5nfHxjLnJlc2V0U3RhY2spJiYocj0wKX19bzx0Lmxlbmd0aCYmdC5maWxsKDE0LG8pO2Uuc3RhY2tTaXplPXI7cmV0dXJuITB9cGFyc2VDaGFyU3RyaW5ncyh7Y2hhclN0cmluZ3M6ZSxsb2NhbFN1YnJJbmRleDp0LGdsb2JhbFN1YnJJbmRleDphLGZkU2VsZWN0Om4sZmRBcnJheTpzLHByaXZhdGVEaWN0OnJ9KXtjb25zdCBpPVtdLG89W10sbD1lLmNvdW50O2ZvcihsZXQgZj0wO2Y8bDtmKyspe2NvbnN0IGw9ZS5nZXQoZiksYz17Y2FsbERlcHRoOjAsc3RhY2tTaXplOjAsc3RhY2s6W10saGludHM6MCxmaXJzdFN0YWNrQ2xlYXJpbmc6ITAsc2VhYzpudWxsLHdpZHRoOm51bGwsaGFzVlN0ZW1zOiExfTtsZXQgaD0hMCx1PW51bGwsbT1yO2lmKG4mJnMubGVuZ3RoKXtjb25zdCBlPW4uZ2V0RkRJbmRleChmKTtpZigtMT09PWUpe3dhcm4oIkdseXBoIGluZGV4IGlzIG5vdCBpbiBmZCBzZWxlY3QuIik7aD0hMX1pZihlPj1zLmxlbmd0aCl7d2FybigiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIik7aD0hMX1pZihoKXttPXNbZV0ucHJpdmF0ZURpY3Q7dT1tLnN1YnJzSW5kZXh9fWVsc2UgdCYmKHU9dCk7aCYmKGg9dGhpcy5wYXJzZUNoYXJTdHJpbmcoYyxsLHUsYSkpO2lmKG51bGwhPT1jLndpZHRoKXtjb25zdCBlPW0uZ2V0QnlOYW1lKCJub21pbmFsV2lkdGhYIik7b1tmXT1lK2Mud2lkdGh9ZWxzZXtjb25zdCBlPW0uZ2V0QnlOYW1lKCJkZWZhdWx0V2lkdGhYIik7b1tmXT1lfW51bGwhPT1jLnNlYWMmJihpW2ZdPWMuc2VhYyk7aHx8ZS5zZXQoZixuZXcgVWludDhBcnJheShbMTRdKSl9cmV0dXJue2NoYXJTdHJpbmdzOmUsc2VhY3M6aSx3aWR0aHM6b319ZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKXtjb25zdCB0PXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxbXSxlLnN0cmluZ3MpO2Uuc2V0QnlLZXkoMTgsWzAsMF0pO2UucHJpdmF0ZURpY3Q9dH1wYXJzZVByaXZhdGVEaWN0KGUpe2lmKCFlLmhhc05hbWUoIlByaXZhdGUiKSl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCB0PWUuZ2V0QnlOYW1lKCJQcml2YXRlIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDIhPT10Lmxlbmd0aCl7ZS5yZW1vdmVCeU5hbWUoIlByaXZhdGUiKTtyZXR1cm59Y29uc3QgYT10WzBdLG49dFsxXTtpZigwPT09YXx8bj49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3Qgcz1uK2Escj10aGlzLmJ5dGVzLnN1YmFycmF5KG4scyksaT10aGlzLnBhcnNlRGljdChyKSxvPXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxpLGUuc3RyaW5ncyk7ZS5wcml2YXRlRGljdD1vOzA9PT1vLmdldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIikmJm8uc2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiLC4wNik7aWYoIW8uZ2V0QnlOYW1lKCJTdWJycyIpKXJldHVybjtjb25zdCBsPW8uZ2V0QnlOYW1lKCJTdWJycyIpLGY9bitsO2lmKDA9PT1sfHxmPj10aGlzLmJ5dGVzLmxlbmd0aCl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCBjPXRoaXMucGFyc2VJbmRleChmKTtvLnN1YnJzSW5kZXg9Yy5vYmp9cGFyc2VDaGFyc2V0cyhlLHQsYSxuKXtpZigwPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRG4uSVNPX0FET0JFLHhuKTtpZigxPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRG4uRVhQRVJULENuKTtpZigyPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRG4uRVhQRVJUX1NVQlNFVCxJbik7Y29uc3Qgcz10aGlzLmJ5dGVzLHI9ZSxpPXNbZSsrXSxvPVtuPzA6Ii5ub3RkZWYiXTtsZXQgbCxmLGM7dC09MTtzd2l0Y2goaSl7Y2FzZSAwOmZvcihjPTA7Yzx0O2MrKyl7bD1zW2UrK108PDh8c1tlKytdO28ucHVzaChuP2w6YS5nZXQobCkpfWJyZWFrO2Nhc2UgMTpmb3IoO28ubGVuZ3RoPD10Oyl7bD1zW2UrK108PDh8c1tlKytdO2Y9c1tlKytdO2ZvcihjPTA7Yzw9ZjtjKyspby5wdXNoKG4/bCsrOmEuZ2V0KGwrKykpfWJyZWFrO2Nhc2UgMjpmb3IoO28ubGVuZ3RoPD10Oyl7bD1zW2UrK108PDh8c1tlKytdO2Y9c1tlKytdPDw4fHNbZSsrXTtmb3IoYz0wO2M8PWY7YysrKW8ucHVzaChuP2wrKzphLmdldChsKyspKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IGg9ZSx1PXMuc3ViYXJyYXkocixoKTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEsaSxvLHUpfXBhcnNlRW5jb2RpbmcoZSx0LGEsbil7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5ieXRlcztsZXQgaSxvLGwsZj0hMSxjPW51bGw7aWYoMD09PWV8fDE9PT1lKXtmPSEwO2k9ZTtjb25zdCB0PWU/cm46Zm47Zm9yKG89MCxsPW4ubGVuZ3RoO288bDtvKyspe2NvbnN0IGU9dC5pbmRleE9mKG5bb10pOy0xIT09ZSYmKHNbZV09byl9fWVsc2V7Y29uc3QgdD1lO2k9cltlKytdO3N3aXRjaCgxMjcmaSl7Y2FzZSAwOmNvbnN0IHQ9cltlKytdO2ZvcihvPTE7bzw9dDtvKyspc1tyW2UrK11dPW87YnJlYWs7Y2FzZSAxOmNvbnN0IGE9cltlKytdO2xldCBuPTE7Zm9yKG89MDtvPGE7bysrKXtjb25zdCB0PXJbZSsrXSxhPXJbZSsrXTtmb3IobGV0IGU9dDtlPD10K2E7ZSsrKXNbZV09bisrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGVuY29kaW5nIGZvcm1hdDogJHtpfSBpbiBDRkZgKX1jb25zdCBsPWU7aWYoMTI4Jmkpe3JbdF0mPTEyNzshZnVuY3Rpb24gcmVhZFN1cHBsZW1lbnQoKXtjb25zdCB0PXJbZSsrXTtmb3Iobz0wO288dDtvKyspe2NvbnN0IHQ9cltlKytdLGk9KHJbZSsrXTw8OCkrKDI1NSZyW2UrK10pO3NbdF09bi5pbmRleE9mKGEuZ2V0KGkpKX19KCl9Yz1yLnN1YmFycmF5KHQsbCl9aSY9MTI3O3JldHVybiBuZXcgQ0ZGRW5jb2RpbmcoZixpLHMsYyl9cGFyc2VGRFNlbGVjdChlLHQpe2NvbnN0IGE9dGhpcy5ieXRlcyxuPWFbZSsrXSxzPVtdO2xldCByO3N3aXRjaChuKXtjYXNlIDA6Zm9yKHI9MDtyPHQ7KytyKXtjb25zdCB0PWFbZSsrXTtzLnB1c2godCl9YnJlYWs7Y2FzZSAzOmNvbnN0IGk9YVtlKytdPDw4fGFbZSsrXTtmb3Iocj0wO3I8aTsrK3Ipe2xldCB0PWFbZSsrXTw8OHxhW2UrK107aWYoMD09PXImJjAhPT10KXt3YXJuKCJwYXJzZUZEU2VsZWN0OiBUaGUgZmlyc3QgcmFuZ2UgbXVzdCBoYXZlIGEgZmlyc3QgR0lEIG9mIDAgLS0gdHJ5aW5nIHRvIHJlY292ZXIuIik7dD0wfWNvbnN0IG49YVtlKytdLGk9YVtlXTw8OHxhW2UrMV07Zm9yKGxldCBlPXQ7ZTxpOysrZSlzLnB1c2gobil9ZSs9MjticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgcGFyc2VGRFNlbGVjdDogVW5rbm93biBmb3JtYXQgIiR7bn0iLmApfWlmKHMubGVuZ3RoIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QobixzKX19Y2xhc3MgQ0ZGe2hlYWRlcj1udWxsO25hbWVzPVtdO3RvcERpY3Q9bnVsbDtzdHJpbmdzPW5ldyBDRkZTdHJpbmdzO2dsb2JhbFN1YnJJbmRleD1udWxsO2VuY29kaW5nPW51bGw7Y2hhcnNldD1udWxsO2NoYXJTdHJpbmdzPW51bGw7ZmRBcnJheT1bXTtmZFNlbGVjdD1udWxsO2lzQ0lERm9udD0hMTtjaGFyU3RyaW5nQ291bnQ9MDtjb25zdHJ1Y3RvcihlPTApe3RoaXMucmF3RmlsZUxlbmd0aD1lfWR1cGxpY2F0ZUZpcnN0R2x5cGgoKXtpZih0aGlzLmNoYXJTdHJpbmdzLmNvdW50Pj02NTUzNSl7d2FybigiTm90IGVub3VnaCBzcGFjZSBpbiBjaGFyc3RyaW5ncyB0byBkdXBsaWNhdGUgZmlyc3QgZ2x5cGguIik7cmV0dXJufWNvbnN0IGU9dGhpcy5jaGFyU3RyaW5ncy5nZXQoMCk7dGhpcy5jaGFyU3RyaW5ncy5hZGQoZSk7dGhpcy5pc0NJREZvbnQmJnRoaXMuZmRTZWxlY3QuZmRTZWxlY3QucHVzaCh0aGlzLmZkU2VsZWN0LmZkU2VsZWN0WzBdKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5jaGFyU3RyaW5ncy5jb3VudClyZXR1cm4hMTtyZXR1cm4gdGhpcy5jaGFyU3RyaW5ncy5nZXQoZSkubGVuZ3RoPjB9fWNsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSxuKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1hO3RoaXMub2ZmU2l6ZT1ufX1jbGFzcyBDRkZTdHJpbmdze3N0cmluZ3M9W107Z2V0KGUpe3JldHVybiBlPj0wJiZlPD0zOTA/Rm5bZV06ZS1Ubjw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1Ubl06Rm5bMF19Z2V0U0lEKGUpe2xldCB0PUZuLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrVG46LTF9YWRkKGUpe3RoaXMuc3RyaW5ncy5wdXNoKGUpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLnN0cmluZ3MubGVuZ3RofX1jbGFzcyBDRkZJbmRleHtvYmplY3RzPVtdO2xlbmd0aD0wO2FkZChlKXt0aGlzLmxlbmd0aCs9ZS5sZW5ndGg7dGhpcy5vYmplY3RzLnB1c2goZSl9c2V0KGUsdCl7dGhpcy5sZW5ndGgrPXQubGVuZ3RoLXRoaXMub2JqZWN0c1tlXS5sZW5ndGg7dGhpcy5vYmplY3RzW2VdPXR9Z2V0KGUpe3JldHVybiB0aGlzLm9iamVjdHNbZV19Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGh9fWNsYXNzIENGRkRpY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmtleVRvTmFtZU1hcD1lLmtleVRvTmFtZU1hcDt0aGlzLm5hbWVUb0tleU1hcD1lLm5hbWVUb0tleU1hcDt0aGlzLmRlZmF1bHRzPWUuZGVmYXVsdHM7dGhpcy50eXBlcz1lLnR5cGVzO3RoaXMub3Bjb2Rlcz1lLm9wY29kZXM7dGhpcy5vcmRlcj1lLm9yZGVyO3RoaXMuc3RyaW5ncz10O3RoaXMudmFsdWVzPU9iamVjdC5jcmVhdGUobnVsbCl9c2V0QnlLZXkoZSx0KXtpZighKGUgaW4gdGhpcy5rZXlUb05hbWVNYXApKXJldHVybiExO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDtmb3IoY29uc3QgYSBvZiB0KWlmKGlzTmFOKGEpKXt3YXJuKGBJbnZhbGlkIENGRkRpY3QgdmFsdWU6ICIke3R9IiBmb3Iga2V5ICIke2V9Ii5gKTtyZXR1cm4hMH1jb25zdCBhPXRoaXMudHlwZXNbZV07Im51bSIhPT1hJiYic2lkIiE9PWEmJiJvZmZzZXQiIT09YXx8KHQ9dFswXSk7dGhpcy52YWx1ZXNbZV09dDtyZXR1cm4hMH1zZXRCeU5hbWUoZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICR7ZX0iYCk7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcFtlXTtyZXR1cm4gdCBpbiB0aGlzLnZhbHVlcz90aGlzLnZhbHVlc1t0XTp0aGlzLmRlZmF1bHRzW3RdfXJlbW92ZUJ5TmFtZShlKXtkZWxldGUgdGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dfXN0YXRpYyBjcmVhdGVUYWJsZXMoZSl7Y29uc3QgdD17a2V5VG9OYW1lTWFwOnt9LG5hbWVUb0tleU1hcDp7fSxkZWZhdWx0czp7fSx0eXBlczp7fSxvcGNvZGVzOnt9LG9yZGVyOltdfTtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPUFycmF5LmlzQXJyYXkoYVswXSk/KGFbMF1bMF08PDgpK2FbMF1bMV06YVswXTt0LmtleVRvTmFtZU1hcFtlXT1hWzFdO3QubmFtZVRvS2V5TWFwW2FbMV1dPWU7dC50eXBlc1tlXT1hWzJdO3QuZGVmYXVsdHNbZV09YVszXTt0Lm9wY29kZXNbZV09QXJyYXkuaXNBcnJheShhWzBdKT9hWzBdOlthWzBdXTt0Lm9yZGVyLnB1c2goZSl9cmV0dXJuIHR9fWNvbnN0IEhuPVtbWzEyLDMwXSwiUk9TIixbInNpZCIsInNpZCIsIm51bSJdLG51bGxdLFtbMTIsMjBdLCJTeW50aGV0aWNCYXNlIiwibnVtIixudWxsXSxbMCwidmVyc2lvbiIsInNpZCIsbnVsbF0sWzEsIk5vdGljZSIsInNpZCIsbnVsbF0sW1sxMiwwXSwiQ29weXJpZ2h0Iiwic2lkIixudWxsXSxbMiwiRnVsbE5hbWUiLCJzaWQiLG51bGxdLFszLCJGYW1pbHlOYW1lIiwic2lkIixudWxsXSxbNCwiV2VpZ2h0Iiwic2lkIixudWxsXSxbWzEyLDFdLCJpc0ZpeGVkUGl0Y2giLCJudW0iLDBdLFtbMTIsMl0sIkl0YWxpY0FuZ2xlIiwibnVtIiwwXSxbWzEyLDNdLCJVbmRlcmxpbmVQb3NpdGlvbiIsIm51bSIsLTEwMF0sW1sxMiw0XSwiVW5kZXJsaW5lVGhpY2tuZXNzIiwibnVtIiw1MF0sW1sxMiw1XSwiUGFpbnRUeXBlIiwibnVtIiwwXSxbWzEyLDZdLCJDaGFyc3RyaW5nVHlwZSIsIm51bSIsMl0sW1sxMiw3XSwiRm9udE1hdHJpeCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbLjAwMSwwLDAsLjAwMSwwLDBdXSxbMTMsIlVuaXF1ZUlEIiwibnVtIixudWxsXSxbNSwiRm9udEJCb3giLFsibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWzAsMCwwLDBdXSxbWzEyLDhdLCJTdHJva2VXaWR0aCIsIm51bSIsMF0sWzE0LCJYVUlEIiwiYXJyYXkiLG51bGxdLFsxNSwiY2hhcnNldCIsIm9mZnNldCIsMF0sWzE2LCJFbmNvZGluZyIsIm9mZnNldCIsMF0sWzE3LCJDaGFyU3RyaW5ncyIsIm9mZnNldCIsMF0sWzE4LCJQcml2YXRlIixbIm9mZnNldCIsIm9mZnNldCJdLG51bGxdLFtbMTIsMjFdLCJQb3N0U2NyaXB0Iiwic2lkIixudWxsXSxbWzEyLDIyXSwiQmFzZUZvbnROYW1lIiwic2lkIixudWxsXSxbWzEyLDIzXSwiQmFzZUZvbnRCbGVuZCIsImRlbHRhIixudWxsXSxbWzEyLDMxXSwiQ0lERm9udFZlcnNpb24iLCJudW0iLDBdLFtbMTIsMzJdLCJDSURGb250UmV2aXNpb24iLCJudW0iLDBdLFtbMTIsMzNdLCJDSURGb250VHlwZSIsIm51bSIsMF0sW1sxMiwzNF0sIkNJRENvdW50IiwibnVtIiw4NzIwXSxbWzEyLDM1XSwiVUlEQmFzZSIsIm51bSIsbnVsbF0sW1sxMiwzN10sIkZEU2VsZWN0Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM2XSwiRkRBcnJheSIsIm9mZnNldCIsbnVsbF0sW1sxMiwzOF0sIkZvbnROYW1lIiwic2lkIixudWxsXV07Y2xhc3MgQ0ZGVG9wRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoSG4pKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZUb3BEaWN0LnRhYmxlcyxlKTt0aGlzLnByaXZhdGVEaWN0PW51bGx9fWNvbnN0IEJuPVtbNiwiQmx1ZVZhbHVlcyIsImRlbHRhIixudWxsXSxbNywiT3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbOCwiRmFtaWx5Qmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzksIkZhbWlseU90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sW1sxMiw5XSwiQmx1ZVNjYWxlIiwibnVtIiwuMDM5NjI1XSxbWzEyLDEwXSwiQmx1ZVNoaWZ0IiwibnVtIiw3XSxbWzEyLDExXSwiQmx1ZUZ1enoiLCJudW0iLDFdLFsxMCwiU3RkSFciLCJudW0iLG51bGxdLFsxMSwiU3RkVlciLCJudW0iLG51bGxdLFtbMTIsMTJdLCJTdGVtU25hcEgiLCJkZWx0YSIsbnVsbF0sW1sxMiwxM10sIlN0ZW1TbmFwViIsImRlbHRhIixudWxsXSxbWzEyLDE0XSwiRm9yY2VCb2xkIiwibnVtIiwwXSxbWzEyLDE3XSwiTGFuZ3VhZ2VHcm91cCIsIm51bSIsMF0sW1sxMiwxOF0sIkV4cGFuc2lvbkZhY3RvciIsIm51bSIsLjA2XSxbWzEyLDE5XSwiaW5pdGlhbFJhbmRvbVNlZWQiLCJudW0iLDBdLFsyMCwiZGVmYXVsdFdpZHRoWCIsIm51bSIsMF0sWzIxLCJub21pbmFsV2lkdGhYIiwibnVtIiwwXSxbMTksIlN1YnJzIiwib2Zmc2V0IixudWxsXV07Y2xhc3MgQ0ZGUHJpdmF0ZURpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKEJuKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIoQ0ZGUHJpdmF0ZURpY3QudGFibGVzLGUpO3RoaXMuc3VicnNJbmRleD1udWxsfX1jb25zdCBEbj17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWE7dGhpcy5yYXc9bn19Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGEsbil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWE7dGhpcy5yYXc9bn19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fWNsYXNzIENGRk9mZnNldFRyYWNrZXJ7b2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpO2lzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBBbHJlYWR5IHRyYWNraW5nIGxvY2F0aW9uIG9mICR7ZX1gKTt0aGlzLm9mZnNldHNbZV09dH1vZmZzZXQoZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5vZmZzZXRzKXRoaXMub2Zmc2V0c1t0XSs9ZX1zZXRFbnRyeUxvY2F0aW9uKGUsdCxhKXtpZighKGUgaW4gdGhpcy5vZmZzZXRzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYE5vdCB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7Y29uc3Qgbj1hLmRhdGEscz10aGlzLm9mZnNldHNbZV07Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7KytlKXtjb25zdCBhPTUqZStzLHI9YSsxLGk9YSsyLG89YSszLGw9YSs0O2lmKDI5IT09blthXXx8MCE9PW5bcl18fDAhPT1uW2ldfHwwIT09bltvXXx8MCE9PW5bbF0pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGY9dFtlXTtuW2FdPTI5O25bcl09Zj4+MjQmMjU1O25baV09Zj4+MTYmMjU1O25bb109Zj4+OCYyNTU7bltsXT0yNTUmZn19fWNsYXNzIENvbXBpbGVyT3V0cHV0eyNWOyMkPTEwMjQ7I1k9MDtjb25zdHJ1Y3RvcihlKXt0aGlzLiNKKGUpfSNKKGUpe2Zvcig7dGhpcy4jJDxlOyl0aGlzLiMkKj0yO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkodGhpcy4jJCk7dGhpcy4jViYmdC5zZXQodGhpcy4jViwwKTt0aGlzLiNWPXR9Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy4jVi5zdWJhcnJheSgwLHRoaXMuI1kpfWdldCBmaW5hbERhdGEoKXtjb25zdCBlPXRoaXMuI1Yuc2xpY2UoMCx0aGlzLiNZKTt0aGlzLiNWPW51bGw7cmV0dXJuIGV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLiNZfWFkZChlKXtjb25zdCB0PXRoaXMuI1krZS5sZW5ndGg7dD50aGlzLiMkJiZ0aGlzLiNKKHQpO3RoaXMuI1Yuc2V0KGUsdGhpcy4jWSk7dGhpcy4jWT10fX1jbGFzcyBDRkZDb21waWxlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmNmZj1lfWNvbXBpbGUoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9bmV3IENvbXBpbGVyT3V0cHV0KGUucmF3RmlsZUxlbmd0aCksYT10aGlzLmNvbXBpbGVIZWFkZXIoZS5oZWFkZXIpO3QuYWRkKGEpO2NvbnN0IG49dGhpcy5jb21waWxlTmFtZUluZGV4KGUubmFtZXMpO3QuYWRkKG4pO2lmKGUuaXNDSURGb250JiZlLnRvcERpY3QuaGFzTmFtZSgiRm9udE1hdHJpeCIpKXtjb25zdCB0PWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7Zm9yKGNvbnN0IGEgb2YgZS5mZEFycmF5KXtsZXQgZT10LnNsaWNlKDApO2EuaGFzTmFtZSgiRm9udE1hdHJpeCIpJiYoZT1VdGlsLnRyYW5zZm9ybShlLGEuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTthLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IHM9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO3M/Lmxlbmd0aD4xNiYmZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiWFVJRCIpO2UudG9wRGljdC5zZXRCeU5hbWUoImNoYXJzZXQiLDApO2xldCByPXRoaXMuY29tcGlsZVRvcERpY3RzKFtlLnRvcERpY3RdLHQubGVuZ3RoLGUuaXNDSURGb250KTt0LmFkZChyLm91dHB1dCk7Y29uc3QgaT1yLnRyYWNrZXJzWzBdLG89dGhpcy5jb21waWxlU3RyaW5nSW5kZXgoZS5zdHJpbmdzLnN0cmluZ3MpO3QuYWRkKG8pO2NvbnN0IGw9dGhpcy5jb21waWxlSW5kZXgoZS5nbG9iYWxTdWJySW5kZXgpO3QuYWRkKGwpO2lmKGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZClpLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7Y29uc3QgYT10aGlzLmNvbXBpbGVFbmNvZGluZyhlLmVuY29kaW5nKTtpLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbdC5sZW5ndGhdLHQpO3QuYWRkKGEpfWNvbnN0IGY9dGhpcy5jb21waWxlQ2hhcnNldChlLmNoYXJzZXQsZS5jaGFyU3RyaW5ncy5jb3VudCxlLnN0cmluZ3MsZS5pc0NJREZvbnQpO2kuc2V0RW50cnlMb2NhdGlvbigiY2hhcnNldCIsW3QubGVuZ3RoXSx0KTt0LmFkZChmKTtjb25zdCBjPXRoaXMuY29tcGlsZUNoYXJTdHJpbmdzKGUuY2hhclN0cmluZ3MpO2kuc2V0RW50cnlMb2NhdGlvbigiQ2hhclN0cmluZ3MiLFt0Lmxlbmd0aF0sdCk7dC5hZGQoYyk7aWYoZS5pc0NJREZvbnQpe2kuc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7Y29uc3QgYT10aGlzLmNvbXBpbGVGRFNlbGVjdChlLmZkU2VsZWN0KTt0LmFkZChhKTtyPXRoaXMuY29tcGlsZVRvcERpY3RzKGUuZmRBcnJheSx0Lmxlbmd0aCwhMCk7aS5zZXRFbnRyeUxvY2F0aW9uKCJGREFycmF5IixbdC5sZW5ndGhdLHQpO3QuYWRkKHIub3V0cHV0KTtjb25zdCBuPXIudHJhY2tlcnM7dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKGUuZmRBcnJheSxuLHQpfXRoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhbZS50b3BEaWN0XSxbaV0sdCk7dC5hZGQoWzBdKTtyZXR1cm4gdC5maW5hbERhdGF9ZW5jb2RlTnVtYmVyKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfXN0YXRpYyBnZXQgRW5jb2RlRmxvYXRSZWdFeHAoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVuY29kZUZsb2F0UmVnRXhwIiwvXC4oXGQqPykoPzo5ezUsMjB9fDB7NSwyMH0pXGR7MCwyfSg/OmUoLispfCQpLyl9ZW5jb2RlRmxvYXQoZSl7bGV0IHQ9ZS50b1N0cmluZygpO2NvbnN0IGE9Q0ZGQ29tcGlsZXIuRW5jb2RlRmxvYXRSZWdFeHAuZXhlYyh0KTtpZihhKXtjb25zdCBuPXBhcnNlRmxvYXQoIjFlIisoKGFbMl0/K2FbMl06MCkrYVsxXS5sZW5ndGgpKTt0PShNYXRoLnJvdW5kKGUqbikvbikudG9TdHJpbmcoKX1sZXQgbixzLHI9IiI7Zm9yKG49MCxzPXQubGVuZ3RoO248czsrK24pe2NvbnN0IGU9dFtuXTtyKz0iZSI9PT1lPyItIj09PXRbKytuXT8iYyI6ImIiOiIuIj09PWU/ImEiOiItIj09PWU/ImUiOmV9cis9MSZyLmxlbmd0aD8iZiI6ImZmIjtjb25zdCBpPVszMF07Zm9yKG49MCxzPXIubGVuZ3RoO248cztuKz0yKWkucHVzaChwYXJzZUludChyLnN1YnN0cmluZyhuLG4rMiksMTYpKTtyZXR1cm4gaX1lbmNvZGVJbnRlZ2VyKGUpe2xldCB0O3Q9ZT49LTEwNyYmZTw9MTA3P1tlKzEzOV06ZT49MTA4JiZlPD0xMTMxP1syNDcrKChlLT0xMDgpPj44KSwyNTUmZV06ZT49LTExMzEmJmU8PS0xMDg/WzI1MSsoKGU9LWUtMTA4KT4+OCksMjU1JmVdOmU+PS0zMjc2OCYmZTw9MzI3Njc/WzI4LGU+PjgmMjU1LDI1NSZlXTpbMjksZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV07cmV0dXJuIHR9Y29tcGlsZUhlYWRlcihlKXtyZXR1cm5bZS5tYWpvcixlLm1pbm9yLDQsZS5vZmZTaXplXX1jb21waWxlTmFtZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9TWF0aC5taW4oYS5sZW5ndGgsMTI3KTtsZXQgbj1uZXcgQXJyYXkoZSk7Zm9yKGxldCB0PTA7dDxlO3QrKyl7bGV0IGU9YVt0XTsoZTwiISJ8fGU+In4ifHwiWyI9PT1lfHwiXSI9PT1lfHwiKCI9PT1lfHwiKSI9PT1lfHwieyI9PT1lfHwifSI9PT1lfHwiPCI9PT1lfHwiPiI9PT1lfHwiLyI9PT1lfHwiJSI9PT1lKSYmKGU9Il8iKTtuW3RdPWV9bj1uLmpvaW4oIiIpOyIiPT09biYmKG49IkJhZF9Gb250X05hbWUiKTt0LmFkZChzdHJpbmdUb0J5dGVzKG4pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZVRvcERpY3RzKGUsdCxhKXtjb25zdCBuPVtdO2xldCBzPW5ldyBDRkZJbmRleDtmb3IoY29uc3QgciBvZiBlKXtpZihhKXtyLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFZlcnNpb24iKTtyLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFJldmlzaW9uIik7ci5yZW1vdmVCeU5hbWUoIkNJREZvbnRUeXBlIik7ci5yZW1vdmVCeU5hbWUoIkNJRENvdW50Iik7ci5yZW1vdmVCeU5hbWUoIlVJREJhc2UiKX1jb25zdCBlPW5ldyBDRkZPZmZzZXRUcmFja2VyLGk9dGhpcy5jb21waWxlRGljdChyLGUpO24ucHVzaChlKTtzLmFkZChpKTtlLm9mZnNldCh0KX1zPXRoaXMuY29tcGlsZUluZGV4KHMsbik7cmV0dXJue3RyYWNrZXJzOm4sb3V0cHV0OnN9fWNvbXBpbGVQcml2YXRlRGljdHMoZSx0LGEpe2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzOysrbil7Y29uc3Qgcz1lW25dLHI9cy5wcml2YXRlRGljdDtpZighcnx8IXMuaGFzTmFtZSgiUHJpdmF0ZSIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlcmUgbXVzdCBiZSBhIHByaXZhdGUgZGljdGlvbmFyeS4iKTtjb25zdCBpPW5ldyBDRkZPZmZzZXRUcmFja2VyLG89dGhpcy5jb21waWxlRGljdChyLGkpO2xldCBsPWEubGVuZ3RoO2kub2Zmc2V0KGwpO28ubGVuZ3RofHwobD0wKTt0W25dLnNldEVudHJ5TG9jYXRpb24oIlByaXZhdGUiLFtvLmxlbmd0aCxsXSxhKTthLmFkZChvKTtpZihyLnN1YnJzSW5kZXgmJnIuaGFzTmFtZSgiU3VicnMiKSl7Y29uc3QgZT10aGlzLmNvbXBpbGVJbmRleChyLnN1YnJzSW5kZXgpO2kuc2V0RW50cnlMb2NhdGlvbigiU3VicnMiLFtvLmxlbmd0aF0sYSk7YS5hZGQoZSl9fX1jb21waWxlRGljdChlLHQpe2NvbnN0IGE9W107Zm9yKGNvbnN0IG4gb2YgZS5vcmRlcil7aWYoIShuIGluIGUudmFsdWVzKSljb250aW51ZTtsZXQgcz1lLnZhbHVlc1tuXSxyPWUudHlwZXNbbl07QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtBcnJheS5pc0FycmF5KHMpfHwocz1bc10pO2lmKDAhPT1zLmxlbmd0aCl7Zm9yKGxldCBpPTAsbz1yLmxlbmd0aDtpPG87KytpKXtjb25zdCBvPXJbaV0sbD1zW2ldO3N3aXRjaChvKXtjYXNlIm51bSI6Y2FzZSJzaWQiOmEucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihsKSk7YnJlYWs7Y2FzZSJvZmZzZXQiOmNvbnN0IHI9ZS5rZXlUb05hbWVNYXBbbl07dC5pc1RyYWNraW5nKHIpfHx0LnRyYWNrKHIsYS5sZW5ndGgpO2EucHVzaCgyOSwwLDAsMCwwKTticmVhaztjYXNlImFycmF5IjpjYXNlImRlbHRhIjphLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIobCkpO2ZvcihsZXQgZT0xLHQ9cy5sZW5ndGg7ZTx0OysrZSlhLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoc1tlXSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGRhdGEgdHlwZSBvZiAke299YCl9fWEucHVzaCguLi5lLm9wY29kZXNbbl0pfX1yZXR1cm4gYX1jb21waWxlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl0LmFkZChzdHJpbmdUb0J5dGVzKGEpKTtyZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJTdHJpbmdzKGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2ZvcihsZXQgYT0wO2E8ZS5jb3VudDthKyspe2NvbnN0IG49ZS5nZXQoYSk7MCE9PW4ubGVuZ3RoP3QuYWRkKG4pOnQuYWRkKG5ldyBVaW50OEFycmF5KFsxMzksMTRdKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVDaGFyc2V0KGUsdCxhLG4pe2xldCBzO2NvbnN0IHI9dC0xO2lmKG4pe2NvbnN0IGU9ci0xO3M9bmV3IFVpbnQ4QXJyYXkoWzIsMCwxLGU+PjgmMjU1LDI1NSZlXSl9ZWxzZXtzPW5ldyBVaW50OEFycmF5KDErMipyKTtsZXQgdD0wO2NvbnN0IG49ZS5jaGFyc2V0Lmxlbmd0aDtsZXQgaT0hMTtmb3IobGV0IHI9MTtyPHMubGVuZ3RoO3IrPTIpe2xldCBvPTA7aWYodDxuKXtjb25zdCBuPWUuY2hhcnNldFt0KytdO289YS5nZXRTSUQobik7aWYoLTE9PT1vKXtvPTA7aWYoIWkpe2k9ITA7d2FybihgQ291bGRuJ3QgZmluZCAke259IGluIENGRiBzdHJpbmdzYCl9fX1zW3JdPW8+PjgmMjU1O3NbcisxXT0yNTUmb319cmV0dXJuIHN9Y29tcGlsZUVuY29kaW5nKGUpe3JldHVybiBlLnJhd31jb21waWxlRkRTZWxlY3QoZSl7Y29uc3QgdD1lLmZvcm1hdDtsZXQgYSxuO3N3aXRjaCh0KXtjYXNlIDA6YT1uZXcgVWludDhBcnJheSgxK2UuZmRTZWxlY3QubGVuZ3RoKTthWzBdPXQ7Zm9yKG49MDtuPGUuZmRTZWxlY3QubGVuZ3RoO24rKylhW24rMV09ZS5mZFNlbGVjdFtuXTticmVhaztjYXNlIDM6Y29uc3Qgcz0wO2xldCByPWUuZmRTZWxlY3RbMF07Y29uc3QgaT1bdCwwLDAscz4+OCYyNTUsMjU1JnMscl07Zm9yKG49MTtuPGUuZmRTZWxlY3QubGVuZ3RoO24rKyl7Y29uc3QgdD1lLmZkU2VsZWN0W25dO2lmKHQhPT1yKXtpLnB1c2gobj4+OCYyNTUsMjU1Jm4sdCk7cj10fX1jb25zdCBvPShpLmxlbmd0aC0zKS8zO2lbMV09bz4+OCYyNTU7aVsyXT0yNTUmbztpLnB1c2gobj4+OCYyNTUsMjU1Jm4pO2E9bmV3IFVpbnQ4QXJyYXkoaSl9cmV0dXJuIGF9Y29tcGlsZUluZGV4KGUsdD1bXSl7Y29uc3QgYT1lLm9iamVjdHMsbj1hLmxlbmd0aDtpZigwPT09bilyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMik7bGV0IHMscixpPTE7Zm9yKHM9MDtzPG47KytzKWkrPWFbc10ubGVuZ3RoO3I9aTwyNTY/MTppPDY1NTM2PzI6aTwxNjc3NzIxNj8zOjQ7Y29uc3Qgbz1uZXcgVWludDhBcnJheSgyK3IqKG4rMSkraSk7bGV0IGw9MDtvW2wrK109bj4+OCYyNTU7b1tsKytdPTI1NSZuO29bbCsrXT1yO2xldCBmPTE7Zm9yKHM9MDtzPG4rMTtzKyspe2lmKDE9PT1yKW9bbCsrXT0yNTUmZjtlbHNlIGlmKDI9PT1yKXtvW2wrK109Zj4+OCYyNTU7b1tsKytdPTI1NSZmfWVsc2UgaWYoMz09PXIpe29bbCsrXT1mPj4xNiYyNTU7b1tsKytdPWY+PjgmMjU1O29bbCsrXT0yNTUmZn1lbHNle29bbCsrXT1mPj4+MjQmMjU1O29bbCsrXT1mPj4xNiYyNTU7b1tsKytdPWY+PjgmMjU1O29bbCsrXT0yNTUmZn1hW3NdJiYoZis9YVtzXS5sZW5ndGgpfWZvcihzPTA7czxuO3MrKyl7dFtzXT8ub2Zmc2V0KGwpO28uc2V0KGFbc10sbCk7bCs9YVtzXS5sZW5ndGh9cmV0dXJuIG99fWNvbnN0IE1uPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWyJUaW1lcy1Sb21hbiJdPSJUaW1lcy1Sb21hbiI7ZS5IZWx2ZXRpY2E9IkhlbHZldGljYSI7ZS5Db3VyaWVyPSJDb3VyaWVyIjtlLlN5bWJvbD0iU3ltYm9sIjtlWyJUaW1lcy1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIkhlbHZldGljYS1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDb3VyaWVyLUJvbGQiXT0iQ291cmllci1Cb2xkIjtlLlphcGZEaW5nYmF0cz0iWmFwZkRpbmdiYXRzIjtlWyJUaW1lcy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1PYmxpcXVlIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2UuQXJpYWxOYXJyb3c9IkhlbHZldGljYSI7ZVsiQXJpYWxOYXJyb3ctQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxOYXJyb3ctQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsTmFycm93LUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbEJsYWNrPSJIZWx2ZXRpY2EiO2VbIkFyaWFsQmxhY2stQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxCbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkFyaWFsLUJsYWNrIl09IkhlbHZldGljYSI7ZVsiQXJpYWwtQmxhY2stQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsTVQ9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZEl0YWxpY01UIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQm9sZE1UIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVCJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQm9sZEl0YWxpY01ULUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsVW5pY29kZU1TPSJIZWx2ZXRpY2EiO2VbIkFyaWFsVW5pY29kZU1TLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsVW5pY29kZU1TLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbFVuaWNvZGVNUy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2UuQ291cmllck5ldz0iQ291cmllciI7ZVsiQ291cmllck5ldy1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZVsiQ291cmllck5ldy1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXctSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiQ291cmllck5ld1BTLUJvbGRJdGFsaWNNVCJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZE1UIl09IkNvdXJpZXItQm9sZCI7ZVsiQ291cmllck5ld1BTLUl0YWxpY01UIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3UFNNVD0iQ291cmllciI7ZVsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJIZWx2ZXRpY2EtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJIZWx2ZXRpY2FMVFN0ZC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJTeW1ib2wtQm9sZCJdPSJTeW1ib2wiO2VbIlN5bWJvbC1Cb2xkSXRhbGljIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUl0YWxpYyJdPSJTeW1ib2wiO2UuVGltZXNOZXdSb21hbj0iVGltZXMtUm9tYW4iO2VbIlRpbWVzTmV3Um9tYW4tQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hbi1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QUz0iVGltZXMtUm9tYW4iO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkSXRhbGljTVQiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRNVCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUl0YWxpY01UIl09IlRpbWVzLUl0YWxpYyI7ZS5UaW1lc05ld1JvbWFuUFNNVD0iVGltZXMtUm9tYW4iO2VbIlRpbWVzTmV3Um9tYW5QU01ULUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1JdGFsaWMiXT0iVGltZXMtSXRhbGljIn0pLE5uPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkNvdXJpZXI9IkZveGl0Rml4ZWQucGZiIjtlWyJDb3VyaWVyLUJvbGQiXT0iRm94aXRGaXhlZEJvbGQucGZiIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkZveGl0Rml4ZWRCb2xkSXRhbGljLnBmYiI7ZVsiQ291cmllci1PYmxpcXVlIl09IkZveGl0Rml4ZWRJdGFsaWMucGZiIjtlLkhlbHZldGljYT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkhlbHZldGljYS1Cb2xkIl09IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIjtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiO2VbIlRpbWVzLVJvbWFuIl09IkZveGl0U2VyaWYucGZiIjtlWyJUaW1lcy1Cb2xkIl09IkZveGl0U2VyaWZCb2xkLnBmYiI7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPSJGb3hpdFNlcmlmQm9sZEl0YWxpYy5wZmIiO2VbIlRpbWVzLUl0YWxpYyJdPSJGb3hpdFNlcmlmSXRhbGljLnBmYiI7ZS5TeW1ib2w9IkZveGl0U3ltYm9sLnBmYiI7ZS5aYXBmRGluZ2JhdHM9IkZveGl0RGluZ2JhdHMucGZiIjtlWyJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIl09IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkIl09IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiJ9KSxQbj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5DYWxpYnJpPSJIZWx2ZXRpY2EiO2VbIkNhbGlicmktQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2FsaWJyaS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ2VudHVyeUdvdGhpYz0iSGVsdmV0aWNhIjtlWyJDZW50dXJ5R290aGljLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNlbnR1cnlHb3RoaWMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNvbWljU2Fuc01TPSJDb21pYyBTYW5zIE1TIjtlWyJDb21pY1NhbnNNUy1Cb2xkIl09IkNvbWljIFNhbnMgTVMtQm9sZCI7ZVsiQ29taWNTYW5zTVMtQm9sZEl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUJvbGRJdGFsaWMiO2VbIkNvbWljU2Fuc01TLUl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUl0YWxpYyI7ZS5HaWxsU2Fuc01UPSJIZWx2ZXRpY2EiO2VbIkdpbGxTYW5zTVQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiR2lsbFNhbnNNVC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiR2lsbFNhbnNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuSW1wYWN0PSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EifSksRW49Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbIkFkb2JlIEplbnNvbiJdPSEwO2VbIkFkb2JlIFRleHQiXT0hMDtlLkFsYmVydHVzPSEwO2UuQWxkdXM9ITA7ZS5BbGV4YW5kcmlhPSEwO2UuQWxnZXJpYW49ITA7ZVsiQW1lcmljYW4gVHlwZXdyaXRlciJdPSEwO2UuQW50aXF1YT0hMDtlLkFwZXg9ITA7ZS5Bcm5vPSEwO2UuQXN0ZXI9ITA7ZS5BdXJvcmE9ITA7ZS5CYXNrZXJ2aWxsZT0hMDtlLkJlbGw9ITA7ZS5CZW1ibz0hMDtlWyJCZW1ibyBTY2hvb2xib29rIl09ITA7ZS5CZW5ndWlhdD0hMDtlWyJCZXJrZWxleSBPbGQgU3R5bGUiXT0hMDtlWyJCZXJuaGFyZCBNb2Rlcm4iXT0hMDtlWyJCZXJ0aG9sZCBDaXR5Il09ITA7ZS5Cb2Rvbmk9ITA7ZVsiQmF1ZXIgQm9kb25pIl09ITA7ZVsiQm9vayBBbnRpcXVhIl09ITA7ZS5Cb29rbWFuPSEwO2VbIkJvcmRlYXV4IFJvbWFuIl09ITA7ZVsiQ2FsaWZvcm5pYW4gRkIiXT0hMDtlLkNhbGlzdG89ITA7ZS5DYWx2ZXJ0PSEwO2UuQ2FwaXRhbHM9ITA7ZS5DYW1icmlhPSEwO2UuQ2FydGllcj0hMDtlLkNhc2xvbj0hMDtlLkNhdHVsbD0hMDtlLkNlbnRhdXI9ITA7ZVsiQ2VudHVyeSBPbGQgU3R5bGUiXT0hMDtlWyJDZW50dXJ5IFNjaG9vbGJvb2siXT0hMDtlLkNoYXBhcnJhbD0hMDtlWyJDaGFyaXMgU0lMIl09ITA7ZS5DaGVsdGVuaGFtPSEwO2VbIkNob2xsYSBTbGFiIl09ITA7ZS5DbGFyZW5kb249ITA7ZS5DbGVhcmZhY2U9ITA7ZS5Db2NoaW49ITA7ZS5Db2xvbm5hPSEwO2VbIkNvbXB1dGVyIE1vZGVybiJdPSEwO2VbIkNvbmNyZXRlIFJvbWFuIl09ITA7ZS5Db25zdGFudGlhPSEwO2VbIkNvb3BlciBCbGFjayJdPSEwO2UuQ29yb25hPSEwO2UuRWNvdHlwZT0hMDtlLkVneXB0aWVubmU9ITA7ZS5FbGVwaGFudD0hMDtlLkV4Y2Vsc2lvcj0hMDtlLkZhaXJmaWVsZD0hMDtlWyJGRiBTY2FsYSJdPSEwO2UuRm9sa2FyZD0hMDtlLkZvb3RsaWdodD0hMDtlLkZyZWVTZXJpZj0hMDtlWyJGcml6IFF1YWRyYXRhIl09ITA7ZS5HYXJhbW9uZD0hMDtlLkdlbnRpdW09ITA7ZS5HZW9yZ2lhPSEwO2UuR2xvdWNlc3Rlcj0hMDtlWyJHb3VkeSBPbGQgU3R5bGUiXT0hMDtlWyJHb3VkeSBTY2hvb2xib29rIl09ITA7ZVsiR291ZHkgUHJvIEZvbnQiXT0hMDtlLkdyYW5qb249ITA7ZVsiR3VhcmRpYW4gRWd5cHRpYW4iXT0hMDtlLkhlYXRoZXI9ITA7ZS5IZXJjdWxlcz0hMDtlWyJIaWdoIFRvd2VyIFRleHQiXT0hMDtlLkhpcm9zaGlnZT0hMDtlWyJIb2VmbGVyIFRleHQiXT0hMDtlWyJIdW1hbmEgU2VyaWYiXT0hMDtlLkltcHJpbnQ9ITA7ZVsiSW9uaWMgTm8uIDUiXT0hMDtlLkphbnNvbj0hMDtlLkpvYW5uYT0hMDtlLktvcmlubmE9ITA7ZS5MZXhpY29uPSEwO2UuTGliZXJhdGlvblNlcmlmPSEwO2VbIkxpYmVyYXRpb24gU2VyaWYiXT0hMDtlWyJMaW51eCBMaWJlcnRpbmUiXT0hMDtlLkxpdGVyYXR1cm5heWE9ITA7ZS5MdWNpZGE9ITA7ZVsiTHVjaWRhIEJyaWdodCJdPSEwO2UuTWVsaW9yPSEwO2UuTWVtcGhpcz0hMDtlLk1pbGxlcj0hMDtlLk1pbmlvbj0hMDtlLk1vZGVybj0hMDtlWyJNb25hIExpc2EiXT0hMDtlWyJNcnMgRWF2ZXMiXT0hMDtlWyJNUyBTZXJpZiJdPSEwO2VbIk11c2VvIFNsYWIiXT0hMDtlWyJOZXcgWW9yayJdPSEwO2VbIk5pbWJ1cyBSb21hbiJdPSEwO2VbIk5QUyBSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuTnVwdGlhbFNjcmlwdD0hMDtlLlBhbGF0aW5vPSEwO2UuUGVycGV0dWE9ITA7ZS5QbGFudGluPSEwO2VbIlBsYW50aW4gU2Nob29sYm9vayJdPSEwO2UuUGxheWJpbGw9ITA7ZVsiUG9vciBSaWNoYXJkIl09ITA7ZVsiUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLlJlbmF1bHQ9ITA7ZS5SZXF1aWVtPSEwO2UuUm9ja3dlbGw9ITA7ZS5Sb21hbj0hMDtlWyJSb3RpcyBTZXJpZiJdPSEwO2UuU2Fib249ITA7ZS5TY2FsYT0hMDtlLlNlYWd1bGw9ITA7ZS5TaXN0aW5hPSEwO2UuU291dmVuaXI9ITA7ZS5TVElYPSEwO2VbIlN0b25lIEluZm9ybWFsIl09ITA7ZVsiU3RvbmUgU2VyaWYiXT0hMDtlLlN5bGZhZW49ITA7ZS5UaW1lcz0hMDtlLlRyYWphbj0hMDtlWyJUcmluaXTDqSJdPSEwO2VbIlRydW1wIE1lZGlhZXZhbCJdPSEwO2UuVXRvcGlhPSEwO2VbIlZhbGUgVHlwZSJdPSEwO2VbIkJpdHN0cmVhbSBWZXJhIl09ITA7ZVsiVmVyYSBTZXJpZiJdPSEwO2UuVmVyc2FpbGxlcz0hMDtlLldhbnRlZD0hMDtlLldlaXNzPSEwO2VbIldpZGUgTGF0aW4iXT0hMDtlLldpbmRzb3I9ITA7ZS5YSVRTPSEwfSksX249Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuRGluZ2JhdHM9ITA7ZS5TeW1ib2w9ITA7ZS5aYXBmRGluZ2JhdHM9ITA7ZS5XaW5nZGluZ3M9ITA7ZVsiV2luZ2RpbmdzLUJvbGQiXT0hMDtlWyJXaW5nZGluZ3MtUmVndWxhciJdPSEwfSksem49Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIwN109MjExO2VbMjEwXT0yMTg7ZVsyMjNdPTcxMTtlWzIyNF09MzIxO2VbMjI1XT0zMjI7ZVsyMjZdPTM1MjtlWzIyN109MzUzO2VbMjI4XT0zODE7ZVsyMjldPTM4MjtlWzIzM109MjIxO2VbMjM0XT0yNTM7ZVsyNTJdPTI2MztlWzI1M109MjY4O2VbMjU0XT0yNjk7ZVsyNThdPTI1ODtlWzI2MF09MjYwO2VbMjYxXT0yNjE7ZVsyNjVdPTI4MDtlWzI2Nl09MjgxO2VbMjY3XT0yODI7ZVsyNjhdPTI4MztlWzI2OV09MzEzO2VbMjc1XT0zMjM7ZVsyNzZdPTMyNDtlWzI3OF09MzI4O2VbMjgzXT0zNDQ7ZVsyODRdPTM0NTtlWzI4NV09MzQ2O2VbMjg2XT0zNDc7ZVsyOTJdPTM2NztlWzI5NV09Mzc3O2VbMjk2XT0zNzg7ZVsyOThdPTM4MDtlWzMwNV09OTYzO2VbMzA2XT05NjQ7ZVszMDddPTk2NjtlWzMwOF09ODIxNTtlWzMwOV09ODI1MjtlWzMxMF09ODMxOTtlWzMxMV09ODM1OTtlWzMxMl09ODU5MjtlWzMxM109ODU5MztlWzMzN109OTU1MjtlWzQ5M109MTAzOTtlWzQ5NF09MTA0MDtlWzU3MF09MTA0MDtlWzU3MV09MTA0MTtlWzU3Ml09MTA0MjtlWzU3M109MTA0MztlWzU3NF09MTA0NDtlWzU3NV09MTA0NTtlWzU3Nl09MTA0NjtlWzU3N109MTA0NztlWzU3OF09MTA0ODtlWzU3OV09MTA0OTtlWzU4MF09MTA1MDtlWzU4MV09MTA1MTtlWzU4Ml09MTA1MjtlWzU4M109MTA1MztlWzU4NF09MTA1NDtlWzU4NV09MTA1NTtlWzU4Nl09MTA1NjtlWzU4N109MTA1NztlWzU4OF09MTA1ODtlWzU4OV09MTA1OTtlWzU5MF09MTA2MDtlWzU5MV09MTA2MTtlWzU5Ml09MTA2MjtlWzU5M109MTA2MztlWzU5NF09MTA2NDtlWzU5NV09MTA2NTtlWzU5Nl09MTA2NjtlWzU5N109MTA2NztlWzU5OF09MTA2ODtlWzU5OV09MTA2OTtlWzYwMF09MTA3MDtlWzYwMV09MTA3MTtlWzYwMl09MTA3MjtlWzYwM109MTA3MztlWzYwNF09MTA3NDtlWzYwNV09MTA3NTtlWzYwNl09MTA3NjtlWzYwN109MTA3NztlWzYwOF09MTA3ODtlWzYwOV09MTA3OTtlWzYxMF09MTA4MDtlWzYxMV09MTA4MTtlWzYxMl09MTA4MjtlWzYxM109MTA4MztlWzYxNF09MTA4NDtlWzYxNV09MTA4NTtlWzYxNl09MTA4NjtlWzYxN109MTA4NztlWzYxOF09MTA4ODtlWzYxOV09MTA4OTtlWzYyMF09MTA5MDtlWzYyMV09MTA5MTtlWzYyMl09MTA5MjtlWzYyM109MTA5MztlWzYyNF09MTA5NDtlWzYyNV09MTA5NTtlWzYyNl09MTA5NjtlWzYyN109MTA5NztlWzYyOF09MTA5ODtlWzYyOV09MTA5OTtlWzYzMF09MTEwMDtlWzYzMV09MTEwMTtlWzYzMl09MTEwMjtlWzYzM109MTEwMztlWzY3Ml09MTQ4ODtlWzY3M109MTQ4OTtlWzY3NF09MTQ5MDtlWzY3NV09MTQ5MTtlWzY3Nl09MTQ5MjtlWzY3N109MTQ5MztlWzY3OF09MTQ5NDtlWzY3OV09MTQ5NTtlWzY4MF09MTQ5NjtlWzY4MV09MTQ5NztlWzY4Ml09MTQ5ODtlWzY4M109MTQ5OTtlWzY4NF09MTUwMDtlWzY4NV09MTUwMTtlWzY4Nl09MTUwMjtlWzY4N109MTUwMztlWzY4OF09MTUwNDtlWzY4OV09MTUwNTtlWzY5MF09MTUwNjtlWzY5MV09MTUwNztlWzY5Ml09MTUwODtlWzY5M109MTUwOTtlWzY5NF09MTUxMDtlWzY5NV09MTUxMTtlWzY5Nl09MTUxMjtlWzY5N109MTUxMztlWzY5OF09MTUxNDtlWzcwNV09MTUyNDtlWzcwNl09ODM2MjtlWzcxMF09NjQyODg7ZVs3MTFdPTY0Mjk4O2VbNzU5XT0xNjE3O2VbNzYxXT0xNzc2O2VbNzYzXT0xNzc4O2VbNzc1XT0xNjUyO2VbNzc3XT0xNzY0O2VbNzc4XT0xNzgwO2VbNzc5XT0xNzgxO2VbNzgwXT0xNzgyO2VbNzgyXT03NzE7ZVs3ODNdPTY0NzI2O2VbNzg2XT04MzYzO2VbNzg4XT04NTMyO2VbNzkwXT03Njg7ZVs3OTFdPTc2OTtlWzc5Ml09NzY4O2VbNzk1XT04MDM7ZVs3OTddPTY0MzM2O2VbNzk4XT02NDMzNztlWzc5OV09NjQzNDI7ZVs4MDBdPTY0MzQzO2VbODAxXT02NDM0NDtlWzgwMl09NjQzNDU7ZVs4MDNdPTY0MzYyO2VbODA0XT02NDM2MztlWzgwNV09NjQzNjQ7ZVsyNDI0XT03ODIxO2VbMjQyNV09NzgyMjtlWzI0MjZdPTc4MjM7ZVsyNDI3XT03ODI0O2VbMjQyOF09NzgyNTtlWzI0MjldPTc4MjY7ZVsyNDMwXT03ODI3O2VbMjQzM109NzY4MjtlWzI2NzhdPTgwNDU7ZVsyNjc5XT04MDQ2O2VbMjgzMF09MTU1MjtlWzI4MzhdPTY4NjtlWzI4NDBdPTc1MTtlWzI4NDJdPTc1MztlWzI4NDNdPTc1NDtlWzI4NDRdPTc1NTtlWzI4NDZdPTc1NztlWzI4NTZdPTc2NztlWzI4NTddPTg0ODtlWzI4NThdPTg0OTtlWzI4NjJdPTg1MztlWzI4NjNdPTg1NDtlWzI4NjRdPTg1NTtlWzI4NjVdPTg2MTtlWzI4NjZdPTg2MjtlWzI5MDZdPTc0NjA7ZVsyOTA4XT03NDYyO2VbMjkwOV09NzQ2MztlWzI5MTBdPTc0NjQ7ZVsyOTEyXT03NDY2O2VbMjkxM109NzQ2NztlWzI5MTRdPTc0Njg7ZVsyOTE2XT03NDcwO2VbMjkxN109NzQ3MTtlWzI5MThdPTc0NzI7ZVsyOTIwXT03NDc0O2VbMjkyMV09NzQ3NTtlWzI5MjJdPTc0NzY7ZVsyOTI0XT03NDc4O2VbMjkyNV09NzQ3OTtlWzI5MjZdPTc0ODA7ZVsyOTI4XT03NDgyO2VbMjkyOV09NzQ4MztlWzI5MzBdPTc0ODQ7ZVsyOTMyXT03NDg2O2VbMjkzM109NzQ4NztlWzI5MzRdPTc0ODg7ZVsyOTM2XT03NDkwO2VbMjkzN109NzQ5MTtlWzI5MzhdPTc0OTI7ZVsyOTQwXT03NDk0O2VbMjk0MV09NzQ5NTtlWzI5NDJdPTc0OTY7ZVsyOTQ0XT03NDk4O2VbMjk0Nl09NzUwMDtlWzI5NDhdPTc1MDI7ZVsyOTUwXT03NTA0O2VbMjk1MV09NzUwNTtlWzI5NTJdPTc1MDY7ZVsyOTU0XT03NTA4O2VbMjk1NV09NzUwOTtlWzI5NTZdPTc1MTA7ZVsyOTU4XT03NTEyO2VbMjk1OV09NzUxMztlWzI5NjBdPTc1MTQ7ZVsyOTYyXT03NTE2O2VbMjk2M109NzUxNztlWzI5NjRdPTc1MTg7ZVsyOTY2XT03NTIwO2VbMjk2N109NzUyMTtlWzI5NjhdPTc1MjI7ZVsyOTcwXT03NTI0O2VbMjk3MV09NzUyNTtlWzI5NzJdPTc1MjY7ZVsyOTc0XT03NTI4O2VbMjk3NV09NzUyOTtlWzI5NzZdPTc1MzA7ZVsyOTc4XT0xNTM3O2VbMjk3OV09MTUzODtlWzI5ODBdPTE1Mzk7ZVsyOTgyXT0xNTQ5O2VbMjk4M109MTU1MTtlWzI5ODRdPTE1NTI7ZVsyOTg2XT0xNTU0O2VbMjk4N109MTU1NTtlWzI5ODhdPTE1NTY7ZVsyOTkwXT0xNjIzO2VbMjk5MV09MTYyNDtlWzI5OTVdPTE3NzU7ZVsyOTk5XT0xNzkxO2VbMzAwMl09NjQyOTA7ZVszMDAzXT02NDI5MTtlWzMwMDRdPTY0MjkyO2VbMzAwNl09NjQyOTQ7ZVszMDA3XT02NDI5NTtlWzMwMDhdPTY0Mjk2O2VbMzAxMV09MTkwMDtlWzMwMTRdPTgyMjM7ZVszMDE1XT04MjQ0O2VbMzAxN109NzUzMjtlWzMwMThdPTc1MzM7ZVszMDE5XT03NTM0O2VbMzA3NV09NzU5MDtlWzMwNzZdPTc1OTE7ZVszMDc5XT03NTk0O2VbMzA4MF09NzU5NTtlWzMwODNdPTc1OTg7ZVszMDg0XT03NTk5O2VbMzA4N109NzYwMjtlWzMwODhdPTc2MDM7ZVszMDkxXT03NjA2O2VbMzA5Ml09NzYwNztlWzMwOTVdPTc2MTA7ZVszMDk2XT03NjExO2VbMzA5OV09NzYxNDtlWzMxMDBdPTc2MTU7ZVszMTAzXT03NjE4O2VbMzEwNF09NzYxOTtlWzMxMDddPTgzMzc7ZVszMTA4XT04MzM4O2VbMzExNl09MTg4NDtlWzMxMTldPTE4ODU7ZVszMTIwXT0xODg1O2VbMzEyM109MTg4NjtlWzMxMjRdPTE4ODY7ZVszMTI3XT0xODg3O2VbMzEyOF09MTg4NztlWzMxMzFdPTE4ODg7ZVszMTMyXT0xODg4O2VbMzEzNV09MTg4OTtlWzMxMzZdPTE4ODk7ZVszMTM5XT0xODkwO2VbMzE0MF09MTg5MDtlWzMxNDNdPTE4OTE7ZVszMTQ0XT0xODkxO2VbMzE0N109MTg5MjtlWzMxNDhdPTE4OTI7ZVszMTUzXT01ODA7ZVszMTU0XT01ODE7ZVszMTU3XT01ODQ7ZVszMTU4XT01ODU7ZVszMTYxXT01ODg7ZVszMTYyXT01ODk7ZVszMTY1XT04OTE7ZVszMTY2XT04OTI7ZVszMTY5XT0xMjc0O2VbMzE3MF09MTI3NTtlWzMxNzNdPTEyNzg7ZVszMTc0XT0xMjc5O2VbMzE4MV09NzYyMjtlWzMxODJdPTc2MjM7ZVszMjgyXT0xMTc5OTtlWzMzMTZdPTU3ODtlWzMzNzldPTQyNzg1O2VbMzM5M109MTE1OTtlWzM0MTZdPTgzNzd9KSxMbj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZVsyMjddPTMyMjtlWzI2NF09MjYxO2VbMjkxXT0zNDZ9KSxVbj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZVsxXT0zMjtlWzRdPTY1O2VbNV09MTkyO2VbNl09MTkzO2VbOV09MTk2O2VbMTddPTY2O2VbMThdPTY3O2VbMjFdPTI2ODtlWzI0XT02ODtlWzI4XT02OTtlWzI5XT0yMDA7ZVszMF09MjAxO2VbMzJdPTI4MjtlWzM4XT03MDtlWzM5XT03MTtlWzQ0XT03MjtlWzQ3XT03MztlWzQ4XT0yMDQ7ZVs0OV09MjA1O2VbNThdPTc0O2VbNjBdPTc1O2VbNjJdPTc2O2VbNjhdPTc3O2VbNjldPTc4O2VbNzVdPTc5O2VbNzZdPTIxMDtlWzgwXT0yMTQ7ZVs4N109ODA7ZVs4OV09ODE7ZVs5MF09ODI7ZVs5Ml09MzQ0O2VbOTRdPTgzO2VbOTddPTM1MjtlWzEwMF09ODQ7ZVsxMDRdPTg1O2VbMTA5XT0yMjA7ZVsxMTVdPTg2O2VbMTE2XT04NztlWzEyMV09ODg7ZVsxMjJdPTg5O2VbMTI0XT0yMjE7ZVsxMjddPTkwO2VbMTI5XT0zODE7ZVsyNThdPTk3O2VbMjU5XT0yMjQ7ZVsyNjBdPTIyNTtlWzI2M109MjI4O2VbMjY4XT0yNjE7ZVsyNzFdPTk4O2VbMjcyXT05OTtlWzI3M109MjYzO2VbMjc1XT0yNjk7ZVsyODJdPTEwMDtlWzI4Nl09MTAxO2VbMjg3XT0yMzI7ZVsyODhdPTIzMztlWzI5MF09MjgzO2VbMjk1XT0yODE7ZVsyOTZdPTEwMjtlWzMzNl09MTAzO2VbMzQ2XT0xMDQ7ZVszNDldPTEwNTtlWzM1MF09MjM2O2VbMzUxXT0yMzc7ZVszNjFdPTEwNjtlWzM2NF09MTA3O2VbMzY3XT0xMDg7ZVszNzFdPTMyMjtlWzM3M109MTA5O2VbMzc0XT0xMTA7ZVszODFdPTExMTtlWzM4Ml09MjQyO2VbMzgzXT0yNDM7ZVszODZdPTI0NjtlWzM5M109MTEyO2VbMzk1XT0xMTM7ZVszOTZdPTExNDtlWzM5OF09MzQ1O2VbNDAwXT0xMTU7ZVs0MDFdPTM0NztlWzQwM109MzUzO2VbNDEwXT0xMTY7ZVs0MzddPTExNztlWzQ0Ml09MjUyO2VbNDQ4XT0xMTg7ZVs0NDldPTExOTtlWzQ1NF09MTIwO2VbNDU1XT0xMjE7ZVs0NTddPTI1MztlWzQ2MF09MTIyO2VbNDYyXT0zODI7ZVs0NjNdPTM4MDtlWzg1M109NDQ7ZVs4NTVdPTU4O2VbODU2XT00NjtlWzg3Nl09NDc7ZVs4NzhdPTQ1O2VbODgyXT00NTtlWzg5NF09NDA7ZVs4OTVdPTQxO2VbODk2XT05MTtlWzg5N109OTM7ZVs5MjNdPTY0O2VbOTQwXT0xNjM7ZVsxMDA0XT00ODtlWzEwMDVdPTQ5O2VbMTAwNl09NTA7ZVsxMDA3XT01MTtlWzEwMDhdPTUyO2VbMTAwOV09NTM7ZVsxMDEwXT01NDtlWzEwMTFdPTU1O2VbMTAxMl09NTY7ZVsxMDEzXT01NztlWzEwODFdPTM3O2VbMTA4NV09NDM7ZVsxMDg2XT00NX0pO2Z1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4gTW4oKVt0XX1mdW5jdGlvbiBpc0tub3duRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4hIShNbigpW3RdfHxQbigpW3RdfHxFbigpW3RdfHxfbigpW3RdKX1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY29kZVBvaW50QXQoMCkpfWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IGEgaW4gdClpZih0W2FdPT09ZSlyZXR1cm4gMHxhO3JldHVybi0xfWFtZW5kKGUpe2Zvcihjb25zdCB0IGluIGUpdGhpcy5fbWFwW3RdPWVbdF19fWNsYXNzIElkZW50aXR5VG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5maXJzdENoYXI9ZTt0aGlzLmxhc3RDaGFyPXR9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmxhc3RDaGFyKzEtdGhpcy5maXJzdENoYXJ9Zm9yRWFjaChlKXtmb3IobGV0IHQ9dGhpcy5maXJzdENoYXIsYT10aGlzLmxhc3RDaGFyO3Q8PWE7dCsrKWUodCx0KX1oYXMoZSl7cmV0dXJuIHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyfWdldChlKXtpZih0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj10aGlzLmZpcnN0Q2hhciYmZTw9dGhpcy5sYXN0Q2hhcj9lOi0xfWFtZW5kKGUpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYW1lbmQoKSIpfX1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgYT1uZXcgQ0ZGUGFyc2VyKGUsdCxqbik7dGhpcy5jZmY9YS5wYXJzZSgpO3RoaXMuY2ZmLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCBuPW5ldyBDRkZDb21waWxlcih0aGlzLmNmZik7dGhpcy5zZWFjcz10aGlzLmNmZi5zZWFjczt0cnl7dGhpcy5kYXRhPW4uY29tcGlsZSgpfWNhdGNoe3dhcm4oIkZhaWxlZCB0byBjb21waWxlIGZvbnQgIit0LmxvYWRlZE5hbWUpO3RoaXMuZGF0YT1lfXRoaXMuX2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jZmYuY2hhclN0cmluZ3MuY291bnR9Z2V0Q2hhcnNldCgpe3JldHVybiB0aGlzLmNmZi5jaGFyc2V0LmNoYXJzZXR9Z2V0R2x5cGhNYXBwaW5nKCl7Y29uc3QgZT10aGlzLmNmZix0PXRoaXMucHJvcGVydGllcyx7Y2lkVG9HaWRNYXA6YSxjTWFwOm59PXQscz1lLmNoYXJzZXQuY2hhcnNldDtsZXQgcixpO2lmKHQuY29tcG9zaXRlKXtsZXQgdCxvO2lmKGE/Lmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAsbj1hLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPWFbZV07dm9pZCAwIT09biYmKHRbbl09ZSl9fXI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKXtjb25zdCBlPXNbaV07bz1uLmNoYXJDb2RlT2YoZSk7dm9pZCAwIT09dD8uW29dJiYobz10W29dKTtyW29dPWl9ZWxzZSBmb3IoaT0wO2k8ZS5jaGFyU3RyaW5ncy5jb3VudDtpKyspe289bi5jaGFyQ29kZU9mKGkpO3Jbb109aX1yZXR1cm4gcn1sZXQgbz1lLmVuY29kaW5nP2UuZW5jb2RpbmcuZW5jb2Rpbmc6bnVsbDt0LmlzSW50ZXJuYWxGb250JiYobz10LmRlZmF1bHRFbmNvZGluZyk7cj10eXBlMUZvbnRHbHlwaE1hcHBpbmcodCxvLHMpO3JldHVybiByfWhhc0dseXBoSWQoZSl7cmV0dXJuIHRoaXMuY2ZmLmhhc0dseXBoSWQoZSl9X2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpe2NvbnN0e2NoYXJzZXQ6ZSxlbmNvZGluZzp0fT10aGlzLmNmZjtpZighZXx8IXQpcmV0dXJuO2NvbnN0IGE9ZS5jaGFyc2V0LG49dC5lbmNvZGluZyxzPVtdO2Zvcihjb25zdCBlIGluIG4pe2NvbnN0IHQ9bltlXTtpZih0Pj0wKXtjb25zdCBuPWFbdF07biYmKHNbZV09bil9fXMubGVuZ3RoPjAmJih0aGlzLnByb3BlcnRpZXMuYnVpbHRJbkVuY29kaW5nPXMpfX1mdW5jdGlvbiBnZXRGbG9hdDIxNChlLHQpe3JldHVybiBlLmdldEludDE2KHQpLzE2Mzg0fWZ1bmN0aW9uIGdldFN1YnJvdXRpbmVCaWFzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MzI3Njg7dDwxMjQwP2E9MTA3OnQ8MzM5MDAmJihhPTExMzEpO3JldHVybiBhfWZ1bmN0aW9uIHBhcnNlQ21hcChlLHQsYSl7Y29uc3Qgbj1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCkscz0xPT09bi5nZXRVaW50MTYodCsyKT9uLmdldFVpbnQzMih0KzgpOm4uZ2V0VWludDMyKHQrMTYpLHI9bi5nZXRVaW50MTYodCtzKTtsZXQgaSxvLGw7aWYoND09PXIpe2NvbnN0IGU9bi5nZXRVaW50MTYodCtzKzYpPj4xO289dCtzKzE0O2k9W107Zm9yKGw9MDtsPGU7bCsrLG8rPTIpaVtsXT17ZW5kOm4uZ2V0VWludDE2KG8pfTtvKz0yO2ZvcihsPTA7bDxlO2wrKyxvKz0yKWlbbF0uc3RhcnQ9bi5nZXRVaW50MTYobyk7Zm9yKGw9MDtsPGU7bCsrLG8rPTIpaVtsXS5pZERlbHRhPW4uZ2V0VWludDE2KG8pO2ZvcihsPTA7bDxlO2wrKyxvKz0yKXtsZXQgZT1uLmdldFVpbnQxNihvKTtpZigwIT09ZSl7aVtsXS5pZHM9W107Zm9yKGxldCB0PTAsYT1pW2xdLmVuZC1pW2xdLnN0YXJ0KzE7dDxhO3QrKyl7aVtsXS5pZHNbdF09bi5nZXRVaW50MTYobytlKTtlKz0yfX19cmV0dXJuIGl9aWYoMTI9PT1yKXtjb25zdCBlPW4uZ2V0VWludDMyKHQrcysxMik7bz10K3MrMTY7aT1bXTtmb3IobD0wO2w8ZTtsKyspe3Q9bi5nZXRVaW50MzIobyk7aS5wdXNoKHtzdGFydDp0LGVuZDpuLmdldFVpbnQzMihvKzQpLGlkRGVsdGE6bi5nZXRVaW50MzIobys4KS10fSk7bys9MTJ9cmV0dXJuIGl9dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bnN1cHBvcnRlZCBjbWFwOiAke3J9YCl9ZnVuY3Rpb24gcGFyc2VDZmYoZSx0LGEsbil7Y29uc3Qgcz1uZXcgQ0ZGUGFyc2VyKG5ldyBTdHJlYW0oZSx0LGEtdCkse30sbikucGFyc2UoKTtyZXR1cm57Z2x5cGhzOnMuY2hhclN0cmluZ3Mub2JqZWN0cyxzdWJyczpzLnRvcERpY3QucHJpdmF0ZURpY3Q/LnN1YnJzSW5kZXg/Lm9iamVjdHMsZ3N1YnJzOnMuZ2xvYmFsU3VickluZGV4Py5vYmplY3RzLGlzQ0ZGQ0lERm9udDpzLmlzQ0lERm9udCxmZFNlbGVjdDpzLmZkU2VsZWN0LGZkQXJyYXk6cy5mZEFycmF5fX1mdW5jdGlvbiBsb29rdXBDbWFwKGUsdCl7Y29uc3QgYT10LmNvZGVQb2ludEF0KDApO2xldCBuPTAscz0wLHI9ZS5sZW5ndGgtMTtmb3IoO3M8cjspe2NvbnN0IHQ9cytyKzE+PjE7YTxlW3RdLnN0YXJ0P3I9dC0xOnM9dH1lW3NdLnN0YXJ0PD1hJiZhPD1lW3NdLmVuZCYmKG49ZVtzXS5pZERlbHRhKyhlW3NdLmlkcz9lW3NdLmlkc1thLWVbc10uc3RhcnRdOmEpJjY1NTM1KTtyZXR1cm57Y2hhckNvZGU6YSxnbHlwaElkOm59fWZ1bmN0aW9uIGNvbXBpbGVHbHlmKGUsdCxhLG49bmV3IFNldCl7aWYobi5oYXMoZSkpe3dhcm4oImNvbXBpbGVHbHlmOiBza2lwcGluZyByZWN1cnNpdmUgY29tcG9zaXRlIGdseXBoIHJlZmVyZW5jZS4iKTtyZXR1cm59bi5hZGQoZSk7ZnVuY3Rpb24gbW92ZVRvKGUsYSl7bCYmdC5hZGQoJHQsbCk7bD1bZSxhXTt0LmFkZChWdCxbZSxhXSl9ZnVuY3Rpb24gbGluZVRvKGUsYSl7dC5hZGQoJHQsW2UsYV0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxhLG4scyl7dC5hZGQoSnQsW2UsYSxuLHNdKX1jb25zdCBzPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKTtsZXQgcj0wO2NvbnN0IGk9cy5nZXRJbnQxNihyKTtsZXQgbyxsPW51bGwsZj0wLGM9MDtyKz0xMDtpZihpPDApZG97bz1zLmdldFVpbnQxNihyKTtjb25zdCBpPXMuZ2V0VWludDE2KHIrMik7cis9NDtsZXQgbCxoO2lmKDEmbyl7aWYoMiZvKXtsPXMuZ2V0SW50MTYocik7aD1zLmdldEludDE2KHIrMil9ZWxzZXtsPXMuZ2V0VWludDE2KHIpO2g9cy5nZXRVaW50MTYocisyKX1yKz00fWVsc2UgaWYoMiZvKXtsPXMuZ2V0SW50OChyKyspO2g9cy5nZXRJbnQ4KHIrKyl9ZWxzZXtsPWVbcisrXTtoPWVbcisrXX1pZigyJm8pe2Y9bDtjPWh9ZWxzZXtmPTA7Yz0wfWxldCB1PTEsbT0xLHA9MCxkPTA7aWYoOCZvKXt1PW09Z2V0RmxvYXQyMTQocyxyKTtyKz0yfWVsc2UgaWYoNjQmbyl7dT1nZXRGbG9hdDIxNChzLHIpO209Z2V0RmxvYXQyMTQocyxyKzIpO3IrPTR9ZWxzZSBpZigxMjgmbyl7dT1nZXRGbG9hdDIxNChzLHIpO3A9Z2V0RmxvYXQyMTQocyxyKzIpO2Q9Z2V0RmxvYXQyMTQocyxyKzQpO209Z2V0RmxvYXQyMTQocyxyKzYpO3IrPTh9Y29uc3QgZz1hLmdseXBoc1tpXTtpZihnKXt0LnNhdmUoKTt0LnRyYW5zZm9ybShbdSxwLGQsbSxmLGNdKTtjb21waWxlR2x5ZihnLHQsYSxuKTt0LnJlc3RvcmUoKX19d2hpbGUoMzImbyk7ZWxzZXtjb25zdCB0PVtdO2xldCBhLG47Zm9yKGE9MDthPGk7YSsrKXt0LnB1c2gocy5nZXRVaW50MTYocikpO3IrPTJ9cis9MitzLmdldFVpbnQxNihyKTtjb25zdCBsPXQuYXQoLTEpKzEsaD1bXTtmb3IoO2gubGVuZ3RoPGw7KXtvPWVbcisrXTtsZXQgdD0xOzgmbyYmKHQrPWVbcisrXSk7Zm9yKDt0LS0gPjA7KWgucHVzaCh7ZmxhZ3M6b30pfWZvcihhPTA7YTxsO2ErKyl7c3dpdGNoKDE4JmhbYV0uZmxhZ3Mpe2Nhc2UgMDpmKz1zLmdldEludDE2KHIpO3IrPTI7YnJlYWs7Y2FzZSAyOmYtPWVbcisrXTticmVhaztjYXNlIDE4OmYrPWVbcisrXX1oW2FdLng9Zn1mb3IoYT0wO2E8bDthKyspe3N3aXRjaCgzNiZoW2FdLmZsYWdzKXtjYXNlIDA6Yys9cy5nZXRJbnQxNihyKTtyKz0yO2JyZWFrO2Nhc2UgNDpjLT1lW3IrK107YnJlYWs7Y2FzZSAzNjpjKz1lW3IrK119aFthXS55PWN9bGV0IHU9MDtmb3Iocj0wO3I8aTtyKyspe2NvbnN0IGU9dFtyXSxzPWguc2xpY2UodSxlKzEpO2lmKDEmc1swXS5mbGFncylzLnB1c2goc1swXSk7ZWxzZSBpZigxJnMuYXQoLTEpLmZsYWdzKXMudW5zaGlmdChzLmF0KC0xKSk7ZWxzZXtjb25zdCBlPXtmbGFnczoxLHg6KHNbMF0ueCtzLmF0KC0xKS54KS8yLHk6KHNbMF0ueStzLmF0KC0xKS55KS8yfTtzLnVuc2hpZnQoZSk7cy5wdXNoKGUpfW1vdmVUbyhzWzBdLngsc1swXS55KTtmb3IoYT0xLG49cy5sZW5ndGg7YTxuO2ErKylpZigxJnNbYV0uZmxhZ3MpbGluZVRvKHNbYV0ueCxzW2FdLnkpO2Vsc2UgaWYoMSZzW2ErMV0uZmxhZ3Mpe3F1YWRyYXRpY0N1cnZlVG8oc1thXS54LHNbYV0ueSxzW2ErMV0ueCxzW2ErMV0ueSk7YSsrfWVsc2UgcXVhZHJhdGljQ3VydmVUbyhzW2FdLngsc1thXS55LChzW2FdLngrc1thKzFdLngpLzIsKHNbYV0ueStzW2ErMV0ueSkvMik7dT1lKzF9fW4uZGVsZXRlKGUpfWZ1bmN0aW9uIGNvbXBpbGVDaGFyU3RyaW5nKGUsdCxhLG4pe2Z1bmN0aW9uIG1vdmVUbyhlLGEpe2wmJnQuYWRkKCR0LGwpO2w9W2UsYV07dC5hZGQoVnQsW2UsYV0pfWZ1bmN0aW9uIGxpbmVUbyhlLGEpe3QuYWRkKCR0LFtlLGFdKX1mdW5jdGlvbiBiZXppZXJDdXJ2ZVRvKGUsYSxuLHMscixpKXt0LmFkZChZdCxbZSxhLG4scyxyLGldKX1jb25zdCBzPVtdO2xldCByPTAsaT0wLG89MCxsPW51bGw7IWZ1bmN0aW9uIHBhcnNlKGUpe2NvbnN0IGw9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpO2xldCBmPTA7Zm9yKDtmPGUubGVuZ3RoOyl7bGV0IGMsaCx1LG0scCxkLGcsYix3LGo9ITEsaz1lW2YrK107c3dpdGNoKGspe2Nhc2UgMTpjYXNlIDM6Y2FzZSAxODpjYXNlIDIzOm8rPXMubGVuZ3RoPj4xO2o9ITA7YnJlYWs7Y2FzZSA0OmkrPXMucG9wKCk7bW92ZVRvKHIsaSk7aj0hMDticmVhaztjYXNlIDU6Zm9yKDtzLmxlbmd0aD4wOyl7cis9cy5zaGlmdCgpO2krPXMuc2hpZnQoKTtsaW5lVG8ocixpKX1icmVhaztjYXNlIDY6Zm9yKDtzLmxlbmd0aD4wOyl7cis9cy5zaGlmdCgpO2xpbmVUbyhyLGkpO2lmKDA9PT1zLmxlbmd0aClicmVhaztpKz1zLnNoaWZ0KCk7bGluZVRvKHIsaSl9YnJlYWs7Y2FzZSA3OmZvcig7cy5sZW5ndGg+MDspe2krPXMuc2hpZnQoKTtsaW5lVG8ocixpKTtpZigwPT09cy5sZW5ndGgpYnJlYWs7cis9cy5zaGlmdCgpO2xpbmVUbyhyLGkpfWJyZWFrO2Nhc2UgODpmb3IoO3MubGVuZ3RoPjA7KXtjPXIrcy5zaGlmdCgpO3U9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7aT1tK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKX1icmVhaztjYXNlIDEwOmI9cy5wb3AoKTt3PW51bGw7aWYoYS5pc0NGRkNJREZvbnQpe2NvbnN0IGU9YS5mZFNlbGVjdC5nZXRGREluZGV4KG4pO2lmKGU+PTAmJmU8YS5mZEFycmF5Lmxlbmd0aCl7Y29uc3QgdD1hLmZkQXJyYXlbZV07bGV0IG47dC5wcml2YXRlRGljdD8uc3VicnNJbmRleCYmKG49dC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMpO2lmKG4pe2IrPWdldFN1YnJvdXRpbmVCaWFzKG4pO3c9bltiXX19ZWxzZSB3YXJuKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1lbHNlIHc9YS5zdWJyc1tiK2Euc3VicnNCaWFzXTt3JiZwYXJzZSh3KTticmVhaztjYXNlIDExOnJldHVybjtjYXNlIDEyOms9ZVtmKytdO3N3aXRjaChrKXtjYXNlIDM0OmM9citzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTtwPWkrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGksaCxwLHIscCk7Yz1yK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHAsaCxpLHIsaSk7YnJlYWs7Y2FzZSAzNTpjPXIrcy5zaGlmdCgpO3U9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7aT1tK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKTtjPXIrcy5zaGlmdCgpO3U9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7aT1tK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKTtzLnBvcCgpO2JyZWFrO2Nhc2UgMzY6Yz1yK3Muc2hpZnQoKTtwPWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7ZD1wK3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxwLGgsZCxyLGQpO2M9citzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTtnPWQrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGQsaCxnLHIsaSk7YnJlYWs7Y2FzZSAzNzpjb25zdCBlPXIsdD1pO2M9citzLnNoaWZ0KCk7dT1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtpPW0rcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpO2M9citzLnNoaWZ0KCk7dT1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oO2k9bTtNYXRoLmFicyhyLWUpPk1hdGguYWJzKGktdCk/cis9cy5zaGlmdCgpOmkrPXMuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5rbm93biBvcGVyYXRvcjogMTIgJHtrfWApfWJyZWFrO2Nhc2UgMTQ6aWYocy5sZW5ndGg+PTQpe2NvbnN0IGU9cy5wb3AoKSxuPXMucG9wKCk7aT1zLnBvcCgpO3I9cy5wb3AoKTt0LnNhdmUoKTt0LnRyYW5zbGF0ZShyLGkpO2xldCBvPWxvb2t1cENtYXAoYS5jbWFwLFN0cmluZy5mcm9tQ2hhckNvZGUoYS5nbHlwaE5hbWVNYXBbZm5bZV1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbby5nbHlwaElkXSx0LGEsby5nbHlwaElkKTt0LnJlc3RvcmUoKTtvPWxvb2t1cENtYXAoYS5jbWFwLFN0cmluZy5mcm9tQ2hhckNvZGUoYS5nbHlwaE5hbWVNYXBbZm5bbl1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbby5nbHlwaElkXSx0LGEsby5nbHlwaElkKX1yZXR1cm47Y2FzZSAxOTpjYXNlIDIwOm8rPXMubGVuZ3RoPj4xO2YrPW8rNz4+MztqPSEwO2JyZWFrO2Nhc2UgMjE6aSs9cy5wb3AoKTtyKz1zLnBvcCgpO21vdmVUbyhyLGkpO2o9ITA7YnJlYWs7Y2FzZSAyMjpyKz1zLnBvcCgpO21vdmVUbyhyLGkpO2o9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO3MubGVuZ3RoPjI7KXtjPXIrcy5zaGlmdCgpO3U9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7aT1tK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKX1yKz1zLnNoaWZ0KCk7aSs9cy5zaGlmdCgpO2xpbmVUbyhyLGkpO2JyZWFrO2Nhc2UgMjU6Zm9yKDtzLmxlbmd0aD42Oyl7cis9cy5zaGlmdCgpO2krPXMuc2hpZnQoKTtsaW5lVG8ocixpKX1jPXIrcy5zaGlmdCgpO3U9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7aT1tK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKTticmVhaztjYXNlIDI2OnMubGVuZ3RoJTImJihyKz1zLnNoaWZ0KCkpO2Zvcig7cy5sZW5ndGg+MDspe2M9cjt1PWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWg7aT1tK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKX1icmVhaztjYXNlIDI3OnMubGVuZ3RoJTImJihpKz1zLnNoaWZ0KCkpO2Zvcig7cy5sZW5ndGg+MDspe2M9citzLnNoaWZ0KCk7dT1pO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2k9bTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKX1icmVhaztjYXNlIDI4OnMucHVzaChsLmdldEludDE2KGYpKTtmKz0yO2JyZWFrO2Nhc2UgMjk6Yj1zLnBvcCgpK2EuZ3N1YnJzQmlhczt3PWEuZ3N1YnJzW2JdO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMzA6Zm9yKDtzLmxlbmd0aD4wOyl7Yz1yO3U9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7aT1tKygxPT09cy5sZW5ndGg/cy5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpO2lmKDA9PT1zLmxlbmd0aClicmVhaztjPXIrcy5zaGlmdCgpO3U9aTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7aT1tK3Muc2hpZnQoKTtyPWgrKDE9PT1zLmxlbmd0aD9zLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSl9YnJlYWs7Y2FzZSAzMTpmb3IoO3MubGVuZ3RoPjA7KXtjPXIrcy5zaGlmdCgpO3U9aTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7aT1tK3Muc2hpZnQoKTtyPWgrKDE9PT1zLmxlbmd0aD9zLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSk7aWYoMD09PXMubGVuZ3RoKWJyZWFrO2M9cjt1PWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2k9bSsoMT09PXMubGVuZ3RoP3Muc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKX1icmVhaztkZWZhdWx0OmlmKGs8MzIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAke2t9YCk7aWYoazwyNDcpcy5wdXNoKGstMTM5KTtlbHNlIGlmKGs8MjUxKXMucHVzaCgyNTYqKGstMjQ3KStlW2YrK10rMTA4KTtlbHNlIGlmKGs8MjU1KXMucHVzaCgyNTYqLShrLTI1MSktZVtmKytdLTEwOCk7ZWxzZXtzLnB1c2gobC5nZXRJbnQzMihmKS82NTUzNik7Zis9NH19aiYmKHMubGVuZ3RoPTApfX0oZSl9Y2xhc3MgQ29tbWFuZHN7Y21kcz1bXTt0cmFuc2Zvcm1TdGFjaz1bXTtjdXJyZW50VHJhbnNmb3JtPVsxLDAsMCwxLDAsMF07YWRkKGUsdCl7aWYodCl7Y29uc3R7Y3VycmVudFRyYW5zZm9ybTphfT10aGlzO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrPTIpVXRpbC5hcHBseVRyYW5zZm9ybSh0LGEsZSk7dGhpcy5jbWRzLnB1c2goZSwuLi50KX1lbHNlIHRoaXMuY21kcy5wdXNoKGUpfXRyYW5zZm9ybShlKXt0aGlzLmN1cnJlbnRUcmFuc2Zvcm09VXRpbC50cmFuc2Zvcm0odGhpcy5jdXJyZW50VHJhbnNmb3JtLGUpfXRyYW5zbGF0ZShlLHQpe3RoaXMudHJhbnNmb3JtKFsxLDAsMCwxLGUsdF0pfXNhdmUoKXt0aGlzLnRyYW5zZm9ybVN0YWNrLnB1c2godGhpcy5jdXJyZW50VHJhbnNmb3JtLnNsaWNlKCkpfXJlc3RvcmUoKXt0aGlzLmN1cnJlbnRUcmFuc2Zvcm09dGhpcy50cmFuc2Zvcm1TdGFjay5wb3AoKXx8WzEsMCwwLDEsMCwwXX1nZXRQYXRoKCl7cmV0dXJuIEZlYXR1cmVUZXN0LmlzRmxvYXQxNkFycmF5U3VwcG9ydGVkP25ldyBGbG9hdDE2QXJyYXkodGhpcy5jbWRzKTpuZXcgRmxvYXQzMkFycmF5KHRoaXMuY21kcyl9fWNsYXNzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRNYXRyaXg9ZTt0aGlzLmNvbXBpbGVkR2x5cGhzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkPU9iamVjdC5jcmVhdGUobnVsbCl9c3RhdGljIGdldCBOT09QKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJOT09QIixGZWF0dXJlVGVzdC5pc0Zsb2F0MTZBcnJheVN1cHBvcnRlZD9uZXcgRmxvYXQxNkFycmF5KDApOm5ldyBGbG9hdDMyQXJyYXkoMCkpfWdldFBhdGhKcyhlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6YX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7bGV0IG4scz10aGlzLmNvbXBpbGVkR2x5cGhzW2FdO2lmKHZvaWQgMD09PXMpe3RyeXtzPXRoaXMuY29tcGlsZUdseXBoKHRoaXMuZ2x5cGhzW2FdLGEpfWNhdGNoKGUpe3M9Q29tcGlsZWRGb250Lk5PT1A7bj1lfXRoaXMuY29tcGlsZWRHbHlwaHNbYV09c310aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWRbdF0/Pz1hO2lmKG4pdGhyb3cgbjtyZXR1cm4gc31jb21waWxlR2x5cGgoZSx0KXtpZighZT8ubGVuZ3RofHwxND09PWVbMF0pcmV0dXJuIENvbXBpbGVkRm9udC5OT09QO2xldCBhPXRoaXMuZm9udE1hdHJpeDtpZih0aGlzLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT10aGlzLmZkU2VsZWN0LmdldEZESW5kZXgodCk7aWYoZT49MCYmZTx0aGlzLmZkQXJyYXkubGVuZ3RoKXthPXRoaXMuZmRBcnJheVtlXS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKXx8bn1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWFzc2VydChpc051bWJlckFycmF5KGEsNiksIkV4cGVjdGVkIGEgdmFsaWQgZm9udE1hdHJpeC4iKTtjb25zdCBzPW5ldyBDb21tYW5kcztzLnRyYW5zZm9ybShhLnNsaWNlKCkpO3RoaXMuY29tcGlsZUdseXBoSW1wbChlLHMsdCk7cy5hZGQoUXQpO3JldHVybiBzLmdldFBhdGgoKX1jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6YX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbYV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoYXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoYXx8Wy4wMDEsMCwwLC4wMDEsMCwwXSk7dGhpcy5nbHlwaHM9ZS5nbHlwaHM7dGhpcy5nc3VicnM9ZS5nc3VicnN8fFtdO3RoaXMuc3VicnM9ZS5zdWJyc3x8W107dGhpcy5jbWFwPXQ7dGhpcy5nbHlwaE5hbWVNYXA9bW4oKTt0aGlzLmdzdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5nc3VicnMpO3RoaXMuc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuc3VicnMpO3RoaXMuaXNDRkZDSURGb250PWUuaXNDRkZDSURGb250O3RoaXMuZmRTZWxlY3Q9ZS5mZFNlbGVjdDt0aGlzLmZkQXJyYXk9ZS5mZEFycmF5fWNvbXBpbGVHbHlwaEltcGwoZSx0LGEpe2NvbXBpbGVDaGFyU3RyaW5nKGUsdCx0aGlzLGEpfX1jbGFzcyBGb250UmVuZGVyZXJGYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0KXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUuZGF0YSksbj1uZXcgRGF0YVZpZXcoYS5idWZmZXIpO2xldCBzLHIsaSxvLGwsZjtjb25zdCBjPW4uZ2V0VWludDE2KDQpO2ZvcihsZXQgZT0wLGg9MTI7ZTxjO2UrKyxoKz0xNil7Y29uc3QgZT1ieXRlc1RvU3RyaW5nKGEuc3ViYXJyYXkoaCxoKzQpKSxjPW4uZ2V0VWludDMyKGgrOCksdT1uLmdldFVpbnQzMihoKzEyKTtzd2l0Y2goZSl7Y2FzZSJjbWFwIjpzPXBhcnNlQ21hcChhLGMpO2JyZWFrO2Nhc2UiZ2x5ZiI6cj1hLnN1YmFycmF5KGMsYyt1KTticmVhaztjYXNlImxvY2EiOmk9YS5zdWJhcnJheShjLGMrdSk7YnJlYWs7Y2FzZSJoZWFkIjpmPW4uZ2V0VWludDE2KGMrMTgpO2w9bi5nZXRVaW50MTYoYys1MCk7YnJlYWs7Y2FzZSJDRkYgIjpvPXBhcnNlQ2ZmKGEsYyxjK3UsdCl9fWlmKHIpe2NvbnN0IHQ9Zj9bMS9mLDAsMCwxL2YsMCwwXTplLmZvbnRNYXRyaXg7cmV0dXJuIG5ldyBUcnVlVHlwZUNvbXBpbGVkKGZ1bmN0aW9uIHBhcnNlR2x5ZlRhYmxlKGUsdCxhKXtjb25zdCBuPW5ldyBEYXRhVmlldyh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKTtsZXQgcyxyO2lmKGEpe3M9NDtyPShlLHQpPT5lLmdldFVpbnQzMih0KX1lbHNle3M9MjtyPShlLHQpPT4yKmUuZ2V0VWludDE2KHQpfWNvbnN0IGk9W107bGV0IG89cihuLDApO2ZvcihsZXQgYT1zO2E8dC5sZW5ndGg7YSs9cyl7Y29uc3QgdD1yKG4sYSk7aS5wdXNoKGUuc3ViYXJyYXkobyx0KSk7bz10fXJldHVybiBpfShyLGksbCkscyx0KX1yZXR1cm4gbmV3IFR5cGUyQ29tcGlsZWQobyxzLGUuZm9udE1hdHJpeCl9fWNvbnN0IFhuPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkNvdXJpZXI9NjAwO2VbIkNvdXJpZXItQm9sZCJdPTYwMDtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09NjAwO2VbIkNvdXJpZXItT2JsaXF1ZSJdPTYwMDtlLkhlbHZldGljYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSk7ZVsiSGVsdmV0aWNhLUJvbGQiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KTtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KTtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KTtlLlN5bWJvbD1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UudW5pdmVyc2FsPTcxMztlLm51bWJlcnNpZ249NTAwO2UuZXhpc3RlbnRpYWw9NTQ5O2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2Uuc3VjaHRoYXQ9NDM5O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2ttYXRoPTUwMDtlLnBsdXM9NTQ5O2UuY29tbWE9MjUwO2UubWludXM9NTQ5O2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTQ5O2UuZXF1YWw9NTQ5O2UuZ3JlYXRlcj01NDk7ZS5xdWVzdGlvbj00NDQ7ZS5jb25ncnVlbnQ9NTQ5O2UuQWxwaGE9NzIyO2UuQmV0YT02Njc7ZS5DaGk9NzIyO2UuRGVsdGE9NjEyO2UuRXBzaWxvbj02MTE7ZS5QaGk9NzYzO2UuR2FtbWE9NjAzO2UuRXRhPTcyMjtlLklvdGE9MzMzO2UudGhldGExPTYzMTtlLkthcHBhPTcyMjtlLkxhbWJkYT02ODY7ZS5NdT04ODk7ZS5OdT03MjI7ZS5PbWljcm9uPTcyMjtlLlBpPTc2ODtlLlRoZXRhPTc0MTtlLlJobz01NTY7ZS5TaWdtYT01OTI7ZS5UYXU9NjExO2UuVXBzaWxvbj02OTA7ZS5zaWdtYTE9NDM5O2UuT21lZ2E9NzY4O2UuWGk9NjQ1O2UuUHNpPTc5NTtlLlpldGE9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UudGhlcmVmb3JlPTg2MztlLmJyYWNrZXRyaWdodD0zMzM7ZS5wZXJwZW5kaWN1bGFyPTY1ODtlLnVuZGVyc2NvcmU9NTAwO2UucmFkaWNhbGV4PTUwMDtlLmFscGhhPTYzMTtlLmJldGE9NTQ5O2UuY2hpPTU0OTtlLmRlbHRhPTQ5NDtlLmVwc2lsb249NDM5O2UucGhpPTUyMTtlLmdhbW1hPTQxMTtlLmV0YT02MDM7ZS5pb3RhPTMyOTtlLnBoaTE9NjAzO2Uua2FwcGE9NTQ5O2UubGFtYmRhPTU0OTtlLm11PTU3NjtlLm51PTUyMTtlLm9taWNyb249NTQ5O2UucGk9NTQ5O2UudGhldGE9NTIxO2UucmhvPTU0OTtlLnNpZ21hPTYwMztlLnRhdT00Mzk7ZS51cHNpbG9uPTU3NjtlLm9tZWdhMT03MTM7ZS5vbWVnYT02ODY7ZS54aT00OTM7ZS5wc2k9Njg2O2UuemV0YT00OTQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2Uuc2ltaWxhcj01NDk7ZS5FdXJvPTc1MDtlLlVwc2lsb24xPTYyMDtlLm1pbnV0ZT0yNDc7ZS5sZXNzZXF1YWw9NTQ5O2UuZnJhY3Rpb249MTY3O2UuaW5maW5pdHk9NzEzO2UuZmxvcmluPTUwMDtlLmNsdWI9NzUzO2UuZGlhbW9uZD03NTM7ZS5oZWFydD03NTM7ZS5zcGFkZT03NTM7ZS5hcnJvd2JvdGg9MTA0MjtlLmFycm93bGVmdD05ODc7ZS5hcnJvd3VwPTYwMztlLmFycm93cmlnaHQ9OTg3O2UuYXJyb3dkb3duPTYwMztlLmRlZ3JlZT00MDA7ZS5wbHVzbWludXM9NTQ5O2Uuc2Vjb25kPTQxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5tdWx0aXBseT01NDk7ZS5wcm9wb3J0aW9uYWw9NzEzO2UucGFydGlhbGRpZmY9NDk0O2UuYnVsbGV0PTQ2MDtlLmRpdmlkZT01NDk7ZS5ub3RlcXVhbD01NDk7ZS5lcXVpdmFsZW5jZT01NDk7ZS5hcHByb3hlcXVhbD01NDk7ZS5lbGxpcHNpcz0xZTM7ZS5hcnJvd3ZlcnRleD02MDM7ZS5hcnJvd2hvcml6ZXg9MWUzO2UuY2FycmlhZ2VyZXR1cm49NjU4O2UuYWxlcGg9ODIzO2UuSWZyYWt0dXI9Njg2O2UuUmZyYWt0dXI9Nzk1O2Uud2VpZXJzdHJhc3M9OTg3O2UuY2lyY2xlbXVsdGlwbHk9NzY4O2UuY2lyY2xlcGx1cz03Njg7ZS5lbXB0eXNldD04MjM7ZS5pbnRlcnNlY3Rpb249NzY4O2UudW5pb249NzY4O2UucHJvcGVyc3VwZXJzZXQ9NzEzO2UucmVmbGV4c3VwZXJzZXQ9NzEzO2Uubm90c3Vic2V0PTcxMztlLnByb3BlcnN1YnNldD03MTM7ZS5yZWZsZXhzdWJzZXQ9NzEzO2UuZWxlbWVudD03MTM7ZS5ub3RlbGVtZW50PTcxMztlLmFuZ2xlPTc2ODtlLmdyYWRpZW50PTcxMztlLnJlZ2lzdGVyc2VyaWY9NzkwO2UuY29weXJpZ2h0c2VyaWY9NzkwO2UudHJhZGVtYXJrc2VyaWY9ODkwO2UucHJvZHVjdD04MjM7ZS5yYWRpY2FsPTU0OTtlLmRvdG1hdGg9MjUwO2UubG9naWNhbG5vdD03MTM7ZS5sb2dpY2FsYW5kPTYwMztlLmxvZ2ljYWxvcj02MDM7ZS5hcnJvd2RibGJvdGg9MTA0MjtlLmFycm93ZGJsbGVmdD05ODc7ZS5hcnJvd2RibHVwPTYwMztlLmFycm93ZGJscmlnaHQ9OTg3O2UuYXJyb3dkYmxkb3duPTYwMztlLmxvemVuZ2U9NDk0O2UuYW5nbGVsZWZ0PTMyOTtlLnJlZ2lzdGVyc2Fucz03OTA7ZS5jb3B5cmlnaHRzYW5zPTc5MDtlLnRyYWRlbWFya3NhbnM9Nzg2O2Uuc3VtbWF0aW9uPTcxMztlLnBhcmVubGVmdHRwPTM4NDtlLnBhcmVubGVmdGV4PTM4NDtlLnBhcmVubGVmdGJ0PTM4NDtlLmJyYWNrZXRsZWZ0dHA9Mzg0O2UuYnJhY2tldGxlZnRleD0zODQ7ZS5icmFja2V0bGVmdGJ0PTM4NDtlLmJyYWNlbGVmdHRwPTQ5NDtlLmJyYWNlbGVmdG1pZD00OTQ7ZS5icmFjZWxlZnRidD00OTQ7ZS5icmFjZWV4PTQ5NDtlLmFuZ2xlcmlnaHQ9MzI5O2UuaW50ZWdyYWw9Mjc0O2UuaW50ZWdyYWx0cD02ODY7ZS5pbnRlZ3JhbGV4PTY4NjtlLmludGVncmFsYnQ9Njg2O2UucGFyZW5yaWdodHRwPTM4NDtlLnBhcmVucmlnaHRleD0zODQ7ZS5wYXJlbnJpZ2h0YnQ9Mzg0O2UuYnJhY2tldHJpZ2h0dHA9Mzg0O2UuYnJhY2tldHJpZ2h0ZXg9Mzg0O2UuYnJhY2tldHJpZ2h0YnQ9Mzg0O2UuYnJhY2VyaWdodHRwPTQ5NDtlLmJyYWNlcmlnaHRtaWQ9NDk0O2UuYnJhY2VyaWdodGJ0PTQ5NDtlLmFwcGxlPTc5MH0pO2VbIlRpbWVzLVJvbWFuIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQwODtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NjQ7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTY0O2UuZXF1YWw9NTY0O2UuZ3JlYXRlcj01NjQ7ZS5xdWVzdGlvbj00NDQ7ZS5hdD05MjE7ZS5BPTcyMjtlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj01NTY7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTM4OTtlLks9NzIyO2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTU1NjtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTcyMjtlLlc9OTQ0O2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTQ0NDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zMzM7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0xODA7ZS5xdW90ZWRibGxlZnQ9NDQ0O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD00NTM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTQ0NDtlLnF1b3RlZGJscmlnaHQ9NDQ0O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTQ0NDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT04ODk7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTQ0NDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTY0O2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT00NDQ7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTQ0NDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTQ0NDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTQ0NDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTQ0NDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NDQ0O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj01NTY7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTU4ODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NjQ7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTQ0NDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9NTY0O2UuYnJva2VuYmFyPTIwMDtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTQ0NDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zNDQ7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU2NDtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01NjQ7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSk7ZVsiVGltZXMtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTFlMztlLmFtcGVyc2FuZD04MzM7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9OTMwO2UuQT03MjI7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTc3ODtlLkw9NjY3O2UuTT05NDQ7ZS5OPTcyMjtlLk89Nzc4O2UuUD02MTE7ZS5RPTc3ODtlLlI9NzIyO2UuUz01NTY7ZS5UPTY2NztlLlU9NzIyO2UuVj03MjI7ZS5XPTFlMztlLlg9NzIyO2UuWT03MjI7ZS5aPTY2NztlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTgxO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTU1NjtlLmM9NDQ0O2UuZD01NTY7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0zMzM7ZS5rPTU1NjtlLmw9Mjc4O2UubT04MzM7ZS5uPTU1NjtlLm89NTAwO2UucD01NTY7ZS5xPTU1NjtlLnI9NDQ0O2Uucz0zODk7ZS50PTMzMztlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD0zOTQ7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zOTQ7ZS5hc2NpaXRpbGRlPTUyMDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTQwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTMwMDtlLkxzbGFzaD02Njc7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTMzMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01NTY7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjY3O2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTQ0NDtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjY3O2UuVGhvcm49NjExO2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02NzI7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02Njc7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTQ0NDtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTY2NztlLlpjYXJvbj02Njc7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249NDE2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249Mzk0O2UuS2NvbW1hYWNjZW50PTc3ODtlLkxhY3V0ZT02Njc7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjY3O2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9NDQ0O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTY2NztlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01NzA7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTcwO2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09Mzg5O2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTgzMjtlLkE9NjY3O2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02Njc7ZS5GPTY2NztlLkc9NzIyO2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz02Njc7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz04ODk7ZS5YPTY2NztlLlk9NjExO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU3MDtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01NTY7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTU1NjtlLnY9NDQ0O2Uudz02Njc7ZS54PTUwMDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9MzQ4O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9MzQ4O2UuYXNjaWl0aWxkZT01NzA7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUwMDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT05NDQ7ZS5vcmRmZW1pbmluZT0yNjY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMDA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTYxMTtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NjExO2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjA4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM2NjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTU3NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM4MjtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NjA2O2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTYwNjtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KTtlWyJUaW1lcy1JdGFsaWMiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDIwO2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTY3NTtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz02NzU7ZS5lcXVhbD02NzU7ZS5ncmVhdGVyPTY3NTtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkyMDtlLkE9NjExO2UuQj02MTE7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTYxMTtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9NDQ0O2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj02Njc7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTYxMTtlLlM9NTAwO2UuVD01NTY7ZS5VPTcyMjtlLlY9NjExO2UuVz04MzM7ZS5YPTYxMTtlLlk9NTU2O2UuWj01NTY7ZS5icmFja2V0bGVmdD0zODk7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTM4OTtlLmFzY2lpY2lyY3VtPTQyMjtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTI3ODtlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz00NDQ7ZS5sPTI3ODtlLm09NzIyO2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NDQ0O2Uudz02Njc7ZS54PTQ0NDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9NDAwO2UuYmFyPTI3NTtlLmJyYWNlcmlnaHQ9NDAwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTIxNDtlLnF1b3RlZGJsbGVmdD01NTY7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUyMztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTU2O2UucXVvdGVkYmxyaWdodD01NTY7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz04ODk7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD04ODk7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTY2NztlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTU1NjtlLmRpdmlkZT02NzU7ZS5ZYWN1dGU9NTU2O2UuQWNpcmN1bWZsZXg9NjExO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTY2NztlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTU1NjtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTYxMTtlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTYxMTtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTU1NjtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTYxMTtlLlNhY3V0ZT01MDA7ZS5kY2Fyb249NTQ0O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjExO2UuQWJyZXZlPTYxMTtlLm11bHRpcGx5PTY3NTtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NTU2O2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT02Njc7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NjY3O2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz02NzU7ZS5icm9rZW5iYXI9Mjc1O2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT01NTY7ZS5aY2Fyb249NTU2O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMwMDtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjExO2UuQWRpZXJlc2lzPTYxMTtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTAwO2UubGNhcm9uPTMwMDtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01MDA7ZS5TY29tbWFhY2NlbnQ9NTAwO2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT02Njc7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTYxMTtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjExO2UuQW9nb25laz02MTE7ZS5BcmluZz02MTE7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NDQ0O2UubWludXM9Njc1O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTY3NTtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KTtlLlphcGZEaW5nYmF0cz1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5hMT05NzQ7ZS5hMj05NjE7ZS5hMjAyPTk3NDtlLmEzPTk4MDtlLmE0PTcxOTtlLmE1PTc4OTtlLmExMTk9NzkwO2UuYTExOD03OTE7ZS5hMTE3PTY5MDtlLmExMT05NjA7ZS5hMTI9OTM5O2UuYTEzPTU0OTtlLmExND04NTU7ZS5hMTU9OTExO2UuYTE2PTkzMztlLmExMDU9OTExO2UuYTE3PTk0NTtlLmExOD05NzQ7ZS5hMTk9NzU1O2UuYTIwPTg0NjtlLmEyMT03NjI7ZS5hMjI9NzYxO2UuYTIzPTU3MTtlLmEyND02Nzc7ZS5hMjU9NzYzO2UuYTI2PTc2MDtlLmEyNz03NTk7ZS5hMjg9NzU0O2UuYTY9NDk0O2UuYTc9NTUyO2UuYTg9NTM3O2UuYTk9NTc3O2UuYTEwPTY5MjtlLmEyOT03ODY7ZS5hMzA9Nzg4O2UuYTMxPTc4ODtlLmEzMj03OTA7ZS5hMzM9NzkzO2UuYTM0PTc5NDtlLmEzNT04MTY7ZS5hMzY9ODIzO2UuYTM3PTc4OTtlLmEzOD04NDE7ZS5hMzk9ODIzO2UuYTQwPTgzMztlLmE0MT04MTY7ZS5hNDI9ODMxO2UuYTQzPTkyMztlLmE0ND03NDQ7ZS5hNDU9NzIzO2UuYTQ2PTc0OTtlLmE0Nz03OTA7ZS5hNDg9NzkyO2UuYTQ5PTY5NTtlLmE1MD03NzY7ZS5hNTE9NzY4O2UuYTUyPTc5MjtlLmE1Mz03NTk7ZS5hNTQ9NzA3O2UuYTU1PTcwODtlLmE1Nj02ODI7ZS5hNTc9NzAxO2UuYTU4PTgyNjtlLmE1OT04MTU7ZS5hNjA9Nzg5O2UuYTYxPTc4OTtlLmE2Mj03MDc7ZS5hNjM9Njg3O2UuYTY0PTY5NjtlLmE2NT02ODk7ZS5hNjY9Nzg2O2UuYTY3PTc4NztlLmE2OD03MTM7ZS5hNjk9NzkxO2UuYTcwPTc4NTtlLmE3MT03OTE7ZS5hNzI9ODczO2UuYTczPTc2MTtlLmE3ND03NjI7ZS5hMjAzPTc2MjtlLmE3NT03NTk7ZS5hMjA0PTc1OTtlLmE3Nj04OTI7ZS5hNzc9ODkyO2UuYTc4PTc4ODtlLmE3OT03ODQ7ZS5hODE9NDM4O2UuYTgyPTEzODtlLmE4Mz0yNzc7ZS5hODQ9NDE1O2UuYTk3PTM5MjtlLmE5OD0zOTI7ZS5hOTk9NjY4O2UuYTEwMD02Njg7ZS5hODk9MzkwO2UuYTkwPTM5MDtlLmE5Mz0zMTc7ZS5hOTQ9MzE3O2UuYTkxPTI3NjtlLmE5Mj0yNzY7ZS5hMjA1PTUwOTtlLmE4NT01MDk7ZS5hMjA2PTQxMDtlLmE4Nj00MTA7ZS5hODc9MjM0O2UuYTg4PTIzNDtlLmE5NT0zMzQ7ZS5hOTY9MzM0O2UuYTEwMT03MzI7ZS5hMTAyPTU0NDtlLmExMDM9NTQ0O2UuYTEwND05MTA7ZS5hMTA2PTY2NztlLmExMDc9NzYwO2UuYTEwOD03NjA7ZS5hMTEyPTc3NjtlLmExMTE9NTk1O2UuYTExMD02OTQ7ZS5hMTA5PTYyNjtlLmExMjA9Nzg4O2UuYTEyMT03ODg7ZS5hMTIyPTc4ODtlLmExMjM9Nzg4O2UuYTEyND03ODg7ZS5hMTI1PTc4ODtlLmExMjY9Nzg4O2UuYTEyNz03ODg7ZS5hMTI4PTc4ODtlLmExMjk9Nzg4O2UuYTEzMD03ODg7ZS5hMTMxPTc4ODtlLmExMzI9Nzg4O2UuYTEzMz03ODg7ZS5hMTM0PTc4ODtlLmExMzU9Nzg4O2UuYTEzNj03ODg7ZS5hMTM3PTc4ODtlLmExMzg9Nzg4O2UuYTEzOT03ODg7ZS5hMTQwPTc4ODtlLmExNDE9Nzg4O2UuYTE0Mj03ODg7ZS5hMTQzPTc4ODtlLmExNDQ9Nzg4O2UuYTE0NT03ODg7ZS5hMTQ2PTc4ODtlLmExNDc9Nzg4O2UuYTE0OD03ODg7ZS5hMTQ5PTc4ODtlLmExNTA9Nzg4O2UuYTE1MT03ODg7ZS5hMTUyPTc4ODtlLmExNTM9Nzg4O2UuYTE1ND03ODg7ZS5hMTU1PTc4ODtlLmExNTY9Nzg4O2UuYTE1Nz03ODg7ZS5hMTU4PTc4ODtlLmExNTk9Nzg4O2UuYTE2MD04OTQ7ZS5hMTYxPTgzODtlLmExNjM9MTAxNjtlLmExNjQ9NDU4O2UuYTE5Nj03NDg7ZS5hMTY1PTkyNDtlLmExOTI9NzQ4O2UuYTE2Nj05MTg7ZS5hMTY3PTkyNztlLmExNjg9OTI4O2UuYTE2OT05Mjg7ZS5hMTcwPTgzNDtlLmExNzE9ODczO2UuYTE3Mj04Mjg7ZS5hMTczPTkyNDtlLmExNjI9OTI0O2UuYTE3ND05MTc7ZS5hMTc1PTkzMDtlLmExNzY9OTMxO2UuYTE3Nz00NjM7ZS5hMTc4PTg4MztlLmExNzk9ODM2O2UuYTE5Mz04MzY7ZS5hMTgwPTg2NztlLmExOTk9ODY3O2UuYTE4MT02OTY7ZS5hMjAwPTY5NjtlLmExODI9ODc0O2UuYTIwMT04NzQ7ZS5hMTgzPTc2MDtlLmExODQ9OTQ2O2UuYTE5Nz03NzE7ZS5hMTg1PTg2NTtlLmExOTQ9NzcxO2UuYTE5OD04ODg7ZS5hMTg2PTk2NztlLmExOTU9ODg4O2UuYTE4Nz04MzE7ZS5hMTg4PTg3MztlLmExODk9OTI3O2UuYTE5MD05NzA7ZS5hMTkxPTkxOH0pfSksV249Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQ291cmllcj17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0Oi00MjZ9O2VbIkNvdXJpZXItQm9sZCJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDM5fTtlWyJDb3VyaWVyLU9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDI2fTtlLkhlbHZldGljYT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGQiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUzMn07ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIlRpbWVzLVJvbWFuIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjIseEhlaWdodDo0NTB9O2VbIlRpbWVzLUJvbGQiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY3Nix4SGVpZ2h0OjQ2MX07ZVsiVGltZXMtSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NTMseEhlaWdodDo0NDF9O2VbIlRpbWVzLUJvbGRJdGFsaWMiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY2OSx4SGVpZ2h0OjQ2Mn07ZS5TeW1ib2w9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfTtlLlphcGZEaW5nYmF0cz17YXNjZW50Ok1hdGguTmFOLGRlc2NlbnQ6TWF0aC5OYU4sY2FwSGVpZ2h0Ok1hdGguTmFOLHhIZWlnaHQ6TWF0aC5OYU59fSk7Y2xhc3MgR2x5ZlRhYmxle2NvbnN0cnVjdG9yKHtnbHlmVGFibGU6ZSxpc0dseXBoTG9jYXRpb25zTG9uZzp0LGxvY2FUYWJsZTphLG51bUdseXBoczpufSl7dGhpcy5nbHlwaHM9W107Y29uc3Qgcz1uZXcgRGF0YVZpZXcoYS5idWZmZXIsYS5ieXRlT2Zmc2V0LGEuYnl0ZUxlbmd0aCkscj1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCksaT10PzQ6MjtsZXQgbz10P3MuZ2V0VWludDMyKDApOjIqcy5nZXRVaW50MTYoMCksbD0wO2ZvcihsZXQgZT0wO2U8bjtlKyspe2wrPWk7Y29uc3QgZT10P3MuZ2V0VWludDMyKGwpOjIqcy5nZXRVaW50MTYobCk7aWYoZT09PW8pe3RoaXMuZ2x5cGhzLnB1c2gobmV3IEdseXBoKHt9KSk7Y29udGludWV9Y29uc3QgYT1HbHlwaC5wYXJzZShvLHIpO3RoaXMuZ2x5cGhzLnB1c2goYSk7bz1lfX1nZXRTaXplKCl7cmV0dXJuIE1hdGguc3VtUHJlY2lzZSh0aGlzLmdseXBocy5tYXAoZT0+ZS5nZXRTaXplKCkrMyYtNCkpfXdyaXRlKCl7Y29uc3QgZT10aGlzLmdldFNpemUoKSx0PW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoZSkpLGE9ZT4xMzEwNzAsbj1hPzQ6MixzPW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKHRoaXMuZ2x5cGhzLmxlbmd0aCsxKSpuKSk7YT9zLnNldFVpbnQzMigwLDApOnMuc2V0VWludDE2KDAsMCk7bGV0IHI9MCxpPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5nbHlwaHMpe3IrPWUud3JpdGUocix0KTtyPXIrMyYtNDtpKz1uO2E/cy5zZXRVaW50MzIoaSxyKTpzLnNldFVpbnQxNihpLHI+PjEpfXJldHVybntpc0xvY2F0aW9uTG9uZzphLGxvY2E6bmV3IFVpbnQ4QXJyYXkocy5idWZmZXIpLGdseWY6bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIpfX1zY2FsZShlKXtmb3IobGV0IHQ9MCxhPXRoaXMuZ2x5cGhzLmxlbmd0aDt0PGE7dCsrKXRoaXMuZ2x5cGhzW3RdLnNjYWxlKGVbdF0pfX1jbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6YT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1hfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Esbl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKG4ubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbbixzXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPW47YS5wdXNoKHMpO2lmKCEoMzImcy5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOm4sY29tcG9zaXRlczphfSl9Y29uc3Qgcz1TaW1wbGVHbHlwaC5wYXJzZShlLHQsbi5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6bixzaW1wbGU6c30pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6TWF0aC5zdW1QcmVjaXNlKHRoaXMuY29tcG9zaXRlcy5tYXAoZT0+ZS5nZXRTaXplKCkpKTtyZXR1cm4gdGhpcy5oZWFkZXIuZ2V0U2l6ZSgpK2V9d3JpdGUoZSx0KXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgYT1lO2UrPXRoaXMuaGVhZGVyLndyaXRlKGUsdCk7aWYodGhpcy5zaW1wbGUpZSs9dGhpcy5zaW1wbGUud3JpdGUoZSx0KTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcyllKz1hLndyaXRlKGUsdCk7cmV0dXJuIGUtYX1zY2FsZShlKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuO2NvbnN0IHQ9KHRoaXMuaGVhZGVyLnhNaW4rdGhpcy5oZWFkZXIueE1heCkvMjt0aGlzLmhlYWRlci5zY2FsZSh0LGUpO2lmKHRoaXMuc2ltcGxlKXRoaXMuc2ltcGxlLnNjYWxlKHQsZSk7ZWxzZSBmb3IoY29uc3QgYSBvZiB0aGlzLmNvbXBvc2l0ZXMpYS5zY2FsZSh0LGUpfX1jbGFzcyBHbHlwaEhlYWRlcntjb25zdHJ1Y3Rvcih7bnVtYmVyT2ZDb250b3VyczplLHhNaW46dCx5TWluOmEseE1heDpuLHlNYXg6c30pe3RoaXMubnVtYmVyT2ZDb250b3Vycz1lO3RoaXMueE1pbj10O3RoaXMueU1pbj1hO3RoaXMueE1heD1uO3RoaXMueU1heD1zfXN0YXRpYyBwYXJzZShlLHQpe3JldHVyblsxMCxuZXcgR2x5cGhIZWFkZXIoe251bWJlck9mQ29udG91cnM6dC5nZXRJbnQxNihlKSx4TWluOnQuZ2V0SW50MTYoZSsyKSx5TWluOnQuZ2V0SW50MTYoZSs0KSx4TWF4OnQuZ2V0SW50MTYoZSs2KSx5TWF4OnQuZ2V0SW50MTYoZSs4KX0pXX1nZXRTaXplKCl7cmV0dXJuIDEwfXdyaXRlKGUsdCl7dC5zZXRJbnQxNihlLHRoaXMubnVtYmVyT2ZDb250b3Vycyk7dC5zZXRJbnQxNihlKzIsdGhpcy54TWluKTt0LnNldEludDE2KGUrNCx0aGlzLnlNaW4pO3Quc2V0SW50MTYoZSs2LHRoaXMueE1heCk7dC5zZXRJbnQxNihlKzgsdGhpcy55TWF4KTtyZXR1cm4gMTB9c2NhbGUoZSx0KXt0aGlzLnhNaW49TWF0aC5yb3VuZChlKyh0aGlzLnhNaW4tZSkqdCk7dGhpcy54TWF4PU1hdGgucm91bmQoZSsodGhpcy54TWF4LWUpKnQpfX1jbGFzcyBDb250b3Vye2NvbnN0cnVjdG9yKHtmbGFnczplLHhDb29yZGluYXRlczp0LHlDb29yZGluYXRlczphfSl7dGhpcy54Q29vcmRpbmF0ZXM9dDt0aGlzLnlDb29yZGluYXRlcz1hO3RoaXMuZmxhZ3M9ZX19Y2xhc3MgU2ltcGxlR2x5cGh7Y29uc3RydWN0b3Ioe2NvbnRvdXJzOmUsaW5zdHJ1Y3Rpb25zOnR9KXt0aGlzLmNvbnRvdXJzPWU7dGhpcy5pbnN0cnVjdGlvbnM9dH1zdGF0aWMgcGFyc2UoZSx0LGEpe2NvbnN0IG49W107Zm9yKGxldCBzPTA7czxhO3MrKyl7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO24ucHVzaChhKX1jb25zdCBzPW5bYS0xXSsxLHI9dC5nZXRVaW50MTYoZSk7ZSs9Mjtjb25zdCBpPW5ldyBVaW50OEFycmF5KHQpLnNsaWNlKGUsZStyKTtlKz1yO2NvbnN0IG89W107Zm9yKGxldCBhPTA7YTxzO2UrKyxhKyspe2xldCBuPXQuZ2V0VWludDgoZSk7by5wdXNoKG4pO2lmKDgmbil7Y29uc3Qgcz10LmdldFVpbnQ4KCsrZSk7bl49ODtmb3IobGV0IGU9MDtlPHM7ZSsrKW8ucHVzaChuKTthKz1zfX1jb25zdCBsPVtdO2xldCBmPVtdLGM9W10saD1bXTtjb25zdCB1PVtdO2xldCBtPTAscD0wO2ZvcihsZXQgYT0wO2E8czthKyspe2NvbnN0IHM9b1thXTtpZigyJnMpe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO3ArPTE2JnM/YTotYTtmLnB1c2gocCl9ZWxzZSBpZigxNiZzKWYucHVzaChwKTtlbHNle3ArPXQuZ2V0SW50MTYoZSk7ZSs9MjtmLnB1c2gocCl9aWYoblttXT09PWEpe20rKztsLnB1c2goZik7Zj1bXX19cD0wO209MDtmb3IobGV0IGE9MDthPHM7YSsrKXtjb25zdCBzPW9bYV07aWYoNCZzKXtjb25zdCBhPXQuZ2V0VWludDgoZSsrKTtwKz0zMiZzP2E6LWE7Yy5wdXNoKHApfWVsc2UgaWYoMzImcyljLnB1c2gocCk7ZWxzZXtwKz10LmdldEludDE2KGUpO2UrPTI7Yy5wdXNoKHApfWgucHVzaCgxJnN8NjQmcyk7aWYoblttXT09PWEpe2Y9bFttXTttKys7dS5wdXNoKG5ldyBDb250b3VyKHtmbGFnczpoLHhDb29yZGluYXRlczpmLHlDb29yZGluYXRlczpjfSkpO2M9W107aD1bXX19cmV0dXJuIG5ldyBTaW1wbGVHbHlwaCh7Y29udG91cnM6dSxpbnN0cnVjdGlvbnM6aX0pfWdldFNpemUoKXtsZXQgZT0yKnRoaXMuY29udG91cnMubGVuZ3RoKzIrdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoLHQ9MCxhPTA7Zm9yKGNvbnN0IG4gb2YgdGhpcy5jb250b3Vycyl7ZSs9bi5mbGFncy5sZW5ndGg7Zm9yKGxldCBzPTAscj1uLnhDb29yZGluYXRlcy5sZW5ndGg7czxyO3MrKyl7Y29uc3Qgcj1uLnhDb29yZGluYXRlc1tzXSxpPW4ueUNvb3JkaW5hdGVzW3NdO2xldCBvPU1hdGguYWJzKHItdCk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTt0PXI7bz1NYXRoLmFicyhpLWEpO28+MjU1P2UrPTI6bz4wJiYoZSs9MSk7YT1pfX1yZXR1cm4gZX13cml0ZShlLHQpe2NvbnN0IGE9ZSxuPVtdLHM9W10scj1bXTtsZXQgaT0wLG89MDtmb3IoY29uc3QgYSBvZiB0aGlzLmNvbnRvdXJzKXtmb3IobGV0IGU9MCx0PWEueENvb3JkaW5hdGVzLmxlbmd0aDtlPHQ7ZSsrKXtsZXQgdD1hLmZsYWdzW2VdO2NvbnN0IGw9YS54Q29vcmRpbmF0ZXNbZV07bGV0IGY9bC1pO2lmKDA9PT1mKXt0fD0xNjtuLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGYpO2lmKGU8PTI1NSl7dHw9Zj49MD8xODoyO24ucHVzaChlKX1lbHNlIG4ucHVzaChmKX1pPWw7Y29uc3QgYz1hLnlDb29yZGluYXRlc1tlXTtmPWMtbztpZigwPT09Zil7dHw9MzI7cy5wdXNoKDApfWVsc2V7Y29uc3QgZT1NYXRoLmFicyhmKTtpZihlPD0yNTUpe3R8PWY+PTA/MzY6NDtzLnB1c2goZSl9ZWxzZSBzLnB1c2goZil9bz1jO3IucHVzaCh0KX10LnNldFVpbnQxNihlLG4ubGVuZ3RoLTEpO2UrPTJ9dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9Zm9yKGNvbnN0IGEgb2Ygcil0LnNldFVpbnQ4KGUrKyxhKTtmb3IobGV0IGE9MCxzPW4ubGVuZ3RoO2E8czthKyspe2NvbnN0IHM9blthXSxpPXJbYV07aWYoMiZpKXQuc2V0VWludDgoZSsrLHMpO2Vsc2UgaWYoISgxNiZpKSl7dC5zZXRJbnQxNihlLHMpO2UrPTJ9fWZvcihsZXQgYT0wLG49cy5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1zW2FdLGk9clthXTtpZig0JmkpdC5zZXRVaW50OChlKyssbik7ZWxzZSBpZighKDMyJmkpKXt0LnNldEludDE2KGUsbik7ZSs9Mn19cmV0dXJuIGUtYX1zY2FsZShlLHQpe2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpaWYoMCE9PWEueENvb3JkaW5hdGVzLmxlbmd0aClmb3IobGV0IG49MCxzPWEueENvb3JkaW5hdGVzLmxlbmd0aDtuPHM7bisrKWEueENvb3JkaW5hdGVzW25dPU1hdGgucm91bmQoZSsoYS54Q29vcmRpbmF0ZXNbbl0tZSkqdCl9fWNsYXNzIENvbXBvc2l0ZUdseXBoe2NvbnN0cnVjdG9yKHtmbGFnczplLGdseXBoSW5kZXg6dCxhcmd1bWVudDE6YSxhcmd1bWVudDI6bix0cmFuc2Y6cyxpbnN0cnVjdGlvbnM6cn0pe3RoaXMuZmxhZ3M9ZTt0aGlzLmdseXBoSW5kZXg9dDt0aGlzLmFyZ3VtZW50MT1hO3RoaXMuYXJndW1lbnQyPW47dGhpcy50cmFuc2Y9czt0aGlzLmluc3RydWN0aW9ucz1yfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0IGE9ZSxuPVtdO2xldCBzPXQuZ2V0VWludDE2KGUpO2NvbnN0IHI9dC5nZXRVaW50MTYoZSsyKTtlKz00O2xldCBpLG87aWYoMSZzKXtpZigyJnMpe2k9dC5nZXRJbnQxNihlKTtvPXQuZ2V0SW50MTYoZSsyKX1lbHNle2k9dC5nZXRVaW50MTYoZSk7bz10LmdldFVpbnQxNihlKzIpfWUrPTQ7c149MX1lbHNle2lmKDImcyl7aT10LmdldEludDgoZSk7bz10LmdldEludDgoZSsxKX1lbHNle2k9dC5nZXRVaW50OChlKTtvPXQuZ2V0VWludDgoZSsxKX1lKz0yfWlmKDgmcyl7bi5wdXNoKHQuZ2V0VWludDE2KGUpKTtlKz0yfWVsc2UgaWYoNjQmcyl7bi5wdXNoKHQuZ2V0VWludDE2KGUpLHQuZ2V0VWludDE2KGUrMikpO2UrPTR9ZWxzZSBpZigxMjgmcyl7bi5wdXNoKHQuZ2V0VWludDE2KGUpLHQuZ2V0VWludDE2KGUrMiksdC5nZXRVaW50MTYoZSs0KSx0LmdldFVpbnQxNihlKzYpKTtlKz04fWxldCBsPW51bGw7aWYoMjU2JnMpe2NvbnN0IGE9dC5nZXRVaW50MTYoZSk7ZSs9MjtsPW5ldyBVaW50OEFycmF5KHQpLnNsaWNlKGUsZSthKTtlKz1hfXJldHVybltlLWEsbmV3IENvbXBvc2l0ZUdseXBoKHtmbGFnczpzLGdseXBoSW5kZXg6cixhcmd1bWVudDE6aSxhcmd1bWVudDI6byx0cmFuc2Y6bixpbnN0cnVjdGlvbnM6bH0pXX1nZXRTaXplKCl7bGV0IGU9NCsyKnRoaXMudHJhbnNmLmxlbmd0aDsyNTYmdGhpcy5mbGFncyYmKGUrPTIrdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fChlKz0yKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fChlKz0yKTtyZXR1cm4gZX13cml0ZShlLHQpe2NvbnN0IGE9ZTsyJnRoaXMuZmxhZ3M/dGhpcy5hcmd1bWVudDE+PS0xMjgmJnRoaXMuYXJndW1lbnQxPD0xMjcmJnRoaXMuYXJndW1lbnQyPj0tMTI4JiZ0aGlzLmFyZ3VtZW50Mjw9MTI3fHwodGhpcy5mbGFnc3w9MSk6dGhpcy5hcmd1bWVudDE+PTAmJnRoaXMuYXJndW1lbnQxPD0yNTUmJnRoaXMuYXJndW1lbnQyPj0wJiZ0aGlzLmFyZ3VtZW50Mjw9MjU1fHwodGhpcy5mbGFnc3w9MSk7dC5zZXRVaW50MTYoZSx0aGlzLmZsYWdzKTt0LnNldFVpbnQxNihlKzIsdGhpcy5nbHlwaEluZGV4KTtlKz00O2lmKDEmdGhpcy5mbGFncyl7aWYoMiZ0aGlzLmZsYWdzKXt0LnNldEludDE2KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0SW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lbHNle3Quc2V0VWludDE2KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0VWludDE2KGUrMix0aGlzLmFyZ3VtZW50Mil9ZSs9NH1lbHNle3Quc2V0VWludDgoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50OChlKzEsdGhpcy5hcmd1bWVudDIpO2UrPTJ9aWYoMjU2JnRoaXMuZmxhZ3Mpe3Quc2V0VWludDE2KGUsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yO2lmKHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCl7bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSk7ZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RofX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7fX1jbGFzcyBPcGVuVHlwZUZpbGVCdWlsZGVyeyNRPW5ldyBNYXA7Y29uc3RydWN0b3IoZSl7dGhpcy5zZm50PWV9c3RhdGljIGdldFNlYXJjaFBhcmFtcyhlLHQpe2xldCBhPTEsbj0wO2Zvcig7KGFeZSk+YTspe2E8PD0xO24rK31jb25zdCBzPWEqdDtyZXR1cm57cmFuZ2U6cyxlbnRyeTpuLHJhbmdlU2hpZnQ6dCplLXN9fXRvQXJyYXkoKXtsZXQgZT10aGlzLnNmbnQ7Y29uc3QgdD10aGlzLiNRLGE9Wy4uLnQua2V5cygpXS5zb3J0KCksbj1hLmxlbmd0aDtsZXQgcz0xMisxNipuO2NvbnN0IHI9W3NdO2ZvcihsZXQgZT0wO2U8bjtlKyspe3MrPSh0LmdldChhW2VdKS5sZW5ndGgrMyYtNCk+Pj4wO3IucHVzaChzKX1jb25zdCBpPW5ldyBVaW50OEFycmF5KHMpLG89bmV3IERhdGFWaWV3KGkuYnVmZmVyKTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCBuPXQuZ2V0KGFbZV0pO2kuc2V0KG4scltlXSl9InRydWUiPT09ZSYmKGU9IlwwAVwwXDAiKTtpLnNldChzdHJpbmdUb0J5dGVzKGUpLDApO28uc2V0SW50MTYoNCxuKTtjb25zdCBsPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKG4sMTYpO28uc2V0SW50MTYoNixsLnJhbmdlKTtvLnNldEludDE2KDgsbC5lbnRyeSk7by5zZXRJbnQxNigxMCxsLnJhbmdlU2hpZnQpO3M9MTI7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3Qgbj1hW2VdO2kuc2V0KHN0cmluZ1RvQnl0ZXMobikscyk7bGV0IGw9MDtmb3IobGV0IHQ9cltlXSxhPXJbZSsxXTt0PGE7dCs9NCl7bD1sK28uZ2V0VWludDMyKHQpPj4+MH1vLnNldEludDMyKHMrNCxsKTtvLnNldEludDMyKHMrOCxyW2VdKTtvLnNldEludDMyKHMrMTIsdC5nZXQobikubGVuZ3RoKTtzKz0xNn10aGlzLiNRLmNsZWFyKCk7cmV0dXJuIGl9YWRkVGFibGUoZSx0KXtpZih0aGlzLiNRLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoYFRhYmxlICR7ZX0gYWxyZWFkeSBleGlzdHNgKTt0aGlzLiNRLnNldChlLHQpfX1jb25zdCBLbj1bNF0sR249WzVdLFZuPVs2XSwkbj1bN10sWW49WzhdLEpuPVsxMiwzNV0sUW49WzE0XSxabj1bMjFdLGVzPVsyMl0sdHM9WzMwXSxhcz1bMzFdO2NsYXNzIFR5cGUxQ2hhclN0cmluZ3t3aWR0aD0wO2xzYj0wO2ZsZXhpbmc9ITE7b3V0cHV0PVtdO3N0YWNrPVtdO2NvbnZlcnQoZSx0LGEpe2NvbnN0IG49ZS5sZW5ndGg7bGV0IHMscixpLG89ITE7Zm9yKGxldCBsPTA7bDxuO2wrKyl7bGV0IG49ZVtsXTtpZihuPDMyKXsxMj09PW4mJihuPShuPDw4KStlWysrbF0pO3N3aXRjaChuKXtjYXNlIDE6Y2FzZSAzOmNhc2UgOTpjYXNlIDMwNzI6Y2FzZSAzMDczOmNhc2UgMzA3NDpjYXNlIDMxMDU6dGhpcy5zdGFjaz1bXTticmVhaztjYXNlIDQ6aWYodGhpcy5mbGV4aW5nKXtpZih0aGlzLnN0YWNrLmxlbmd0aDwxKXtvPSEwO2JyZWFrfWNvbnN0IGU9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goMCxlKTticmVha31vPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxLbik7YnJlYWs7Y2FzZSA1Om89dGhpcy5leGVjdXRlQ29tbWFuZCgyLEduKTticmVhaztjYXNlIDY6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsVm4pO2JyZWFrO2Nhc2UgNzpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSwkbik7YnJlYWs7Y2FzZSA4Om89dGhpcy5leGVjdXRlQ29tbWFuZCg2LFluKTticmVhaztjYXNlIDEwOmlmKHRoaXMuc3RhY2subGVuZ3RoPDEpe289ITA7YnJlYWt9aT10aGlzLnN0YWNrLnBvcCgpO2lmKCF0W2ldKXtvPSEwO2JyZWFrfW89dGhpcy5jb252ZXJ0KHRbaV0sdCxhKTticmVhaztjYXNlIDExOnJldHVybiBvO2Nhc2UgMTM6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31zPXRoaXMuc3RhY2sucG9wKCk7cj10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPXI7dGhpcy53aWR0aD1zO3RoaXMuc3RhY2sucHVzaChzLHIpO289dGhpcy5leGVjdXRlQ29tbWFuZCgyLGVzKTticmVhaztjYXNlIDE0OnRoaXMub3V0cHV0LnB1c2goUW5bMF0pO2JyZWFrO2Nhc2UgMjE6aWYodGhpcy5mbGV4aW5nKWJyZWFrO289dGhpcy5leGVjdXRlQ29tbWFuZCgyLFpuKTticmVhaztjYXNlIDIyOmlmKHRoaXMuZmxleGluZyl7dGhpcy5zdGFjay5wdXNoKDApO2JyZWFrfW89dGhpcy5leGVjdXRlQ29tbWFuZCgxLGVzKTticmVhaztjYXNlIDMwOm89dGhpcy5leGVjdXRlQ29tbWFuZCg0LHRzKTticmVhaztjYXNlIDMxOm89dGhpcy5leGVjdXRlQ29tbWFuZCg0LGFzKTticmVhaztjYXNlIDMwNzg6aWYoYSl7Y29uc3QgZT10aGlzLnN0YWNrLmF0KC01KTt0aGlzLnNlYWM9dGhpcy5zdGFjay5zcGxpY2UoLTQsNCk7dGhpcy5zZWFjWzBdKz10aGlzLmxzYi1lO289dGhpcy5leGVjdXRlQ29tbWFuZCgwLFFuKX1lbHNlIG89dGhpcy5leGVjdXRlQ29tbWFuZCg0LFFuKTticmVhaztjYXNlIDMwNzk6aWYodGhpcy5zdGFjay5sZW5ndGg8NCl7bz0hMDticmVha310aGlzLnN0YWNrLnBvcCgpO3M9dGhpcy5zdGFjay5wb3AoKTtjb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7cj10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPXI7dGhpcy53aWR0aD1zO3RoaXMuc3RhY2sucHVzaChzLHIsZSk7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDMsWm4pO2JyZWFrO2Nhc2UgMzA4NDppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfWNvbnN0IGw9dGhpcy5zdGFjay5wb3AoKSxmPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKGYvbCk7YnJlYWs7Y2FzZSAzMDg4OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9aT10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGM9dGhpcy5zdGFjay5wb3AoKTtpZigwPT09aSYmMz09PWMpe2NvbnN0IGU9dGhpcy5zdGFjay5zcGxpY2UoLTE3LDE3KTt0aGlzLnN0YWNrLnB1c2goZVsyXStlWzBdLGVbM10rZVsxXSxlWzRdLGVbNV0sZVs2XSxlWzddLGVbOF0sZVs5XSxlWzEwXSxlWzExXSxlWzEyXSxlWzEzXSxlWzE0XSk7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEzLEpuLCEwKTt0aGlzLmZsZXhpbmc9ITE7dGhpcy5zdGFjay5wdXNoKGVbMTVdLGVbMTZdKX1lbHNlIDE9PT1pJiYwPT09YyYmKHRoaXMuZmxleGluZz0hMCk7YnJlYWs7Y2FzZSAzMDg5OmJyZWFrO2RlZmF1bHQ6d2FybignVW5rbm93biB0eXBlIDEgY2hhcnN0cmluZyBjb21tYW5kIG9mICInK24rJyInKX1pZihvKWJyZWFrfWVsc2V7bjw9MjQ2P24tPTEzOTpuPW48PTI1MD8yNTYqKG4tMjQ3KStlWysrbF0rMTA4Om48PTI1ND8tMjU2KihuLTI1MSktZVsrK2xdLTEwODooMjU1JmVbKytsXSk8PDI0fCgyNTUmZVsrK2xdKTw8MTZ8KDI1NSZlWysrbF0pPDw4fDI1NSZlWysrbF07dGhpcy5zdGFjay5wdXNoKG4pfX1yZXR1cm4gb31leGVjdXRlQ29tbWFuZChlLHQsYSl7Y29uc3Qgbj10aGlzLnN0YWNrLmxlbmd0aDtpZihlPm4pcmV0dXJuITA7Y29uc3Qgcz1uLWU7Zm9yKGxldCBlPXM7ZTxuO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7YT90aGlzLnN0YWNrLnNwbGljZShzLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGEpe2lmKGE+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgbixzLHI9MHx0O2ZvcihuPTA7bjxhO24rKylyPTUyODQ1KihlW25dK3IpKzIyNzE5JjY1NTM1O2NvbnN0IGk9ZS5sZW5ndGgtYSxvPW5ldyBVaW50OEFycmF5KGkpO2ZvcihuPWEscz0wO3M8aTtuKysscysrKXtjb25zdCB0PWVbbl07b1tzXT10XnI+Pjg7cj01Mjg0NSoodCtyKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfWNsYXNzIFR5cGUxUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXtpZih0KXtjb25zdCB0PWUuZ2V0Qnl0ZXMoKSxhPSEoKGlzSGV4RGlnaXQodFswXSl8fGlzV2hpdGVTcGFjZSh0WzBdKSkmJmlzSGV4RGlnaXQodFsxXSkmJmlzSGV4RGlnaXQodFsyXSkmJmlzSGV4RGlnaXQodFszXSkmJmlzSGV4RGlnaXQodFs0XSkmJmlzSGV4RGlnaXQodFs1XSkmJmlzSGV4RGlnaXQodFs2XSkmJmlzSGV4RGlnaXQodFs3XSkpO2U9bmV3IFN0cmVhbShhP2RlY3J5cHQodCw1NTY2NSw0KTpmdW5jdGlvbiBkZWNyeXB0QXNjaWkoZSx0LGEpe2xldCBuPTB8dDtjb25zdCBzPWUubGVuZ3RoLHI9bmV3IFVpbnQ4QXJyYXkocz4+PjEpO2xldCBpLG87Zm9yKGk9MCxvPTA7aTxzO2krKyl7Y29uc3QgdD1lW2ldO2lmKCFpc0hleERpZ2l0KHQpKWNvbnRpbnVlO2krKztsZXQgYTtmb3IoO2k8cyYmIWlzSGV4RGlnaXQoYT1lW2ldKTspaSsrO2lmKGk8cyl7Y29uc3QgZT1wYXJzZUludChTdHJpbmcuZnJvbUNoYXJDb2RlKHQsYSksMTYpO3JbbysrXT1lXm4+Pjg7bj01Mjg0NSooZStuKSsyMjcxOSY2NTUzNX19cmV0dXJuIHIuc2xpY2UoYSxvKX0odCw1NTY2NSw0KSl9dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhYTt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKX1yZWFkTnVtYmVyQXJyYXkoKXt0aGlzLmdldFRva2VuKCk7Y29uc3QgZT1bXTtmb3IoOzspe2NvbnN0IHQ9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10fHwiXSI9PT10fHwifSI9PT10KWJyZWFrO2UucHVzaChwYXJzZUZsb2F0KHR8fDApKX1yZXR1cm4gZX1yZWFkTnVtYmVyKCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIHBhcnNlRmxvYXQoZXx8MCl9cmVhZEludCgpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiAwfHBhcnNlSW50KGV8fDAsMTApfXJlYWRCb29sZWFuKCl7cmV0dXJuInRydWUiPT09dGhpcy5nZXRUb2tlbigpPzE6MH1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wcmV2Q2hhcigpe3RoaXMuc3RyZWFtLnNraXAoLTIpO3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKC0xPT09dClyZXR1cm4gbnVsbDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9aWYoaXNTcGVjaWFsKHQpKXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodCl9bGV0IGE9IiI7ZG97YSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTt0PXRoaXMubmV4dENoYXIoKX13aGlsZSh0Pj0wJiYhaXNXaGl0ZVNwYWNlKHQpJiYhaXNTcGVjaWFsKHQpKTtyZXR1cm4gYX1yZWFkQ2hhclN0cmluZ3MoZSx0KXtyZXR1cm4tMT09PXQ/ZTpkZWNyeXB0KGUsNDMzMCx0KX1leHRyYWN0Rm9udFByb2dyYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbSxhPVtdLG49W10scz1uZXcgTWFwKFtbImxlbklWIiw0XV0pLHI9e3N1YnJzOltdLGNoYXJzdHJpbmdzOltdLHByb3BlcnRpZXM6e3ByaXZhdGVEYXRhOnN9fTtsZXQgaSxvLGwsZjtmb3IoO251bGwhPT0oaT10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT1pKXtpPXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2goaSl7Y2FzZSJDaGFyU3RyaW5ncyI6dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7Oyl7aT10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PWl8fCJlbmQiPT09aSlicmVhaztpZigiLyIhPT1pKWNvbnRpbnVlO2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2w9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7Zj1zLmdldCgibGVuSVYiKTtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGwsZik7dGhpcy5uZXh0Q2hhcigpO2k9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1pP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1pJiZ0aGlzLnByZXZDaGFyKCk7bi5wdXNoKHtnbHlwaDplLGVuY29kZWQ6YX0pfWJyZWFrO2Nhc2UiU3VicnMiOnRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiPT09dGhpcy5nZXRUb2tlbigpOyl7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtsPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2Y9cy5nZXQoImxlbklWIik7Y29uc3Qgbj10aGlzLnJlYWRDaGFyU3RyaW5ncyhsLGYpO3RoaXMubmV4dENoYXIoKTtpPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09aSYmdGhpcy5nZXRUb2tlbigpO2FbZV09bn1icmVhaztjYXNlIkJsdWVWYWx1ZXMiOmNhc2UiT3RoZXJCbHVlcyI6Y2FzZSJGYW1pbHlCbHVlcyI6Y2FzZSJGYW1pbHlPdGhlckJsdWVzIjpjb25zdCBlPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5sZW5ndGg+MCYmZS5sZW5ndGgsMDticmVhaztjYXNlIlN0ZW1TbmFwSCI6Y2FzZSJTdGVtU25hcFYiOnMuc2V0KGksdGhpcy5yZWFkTnVtYmVyQXJyYXkoKSk7YnJlYWs7Y2FzZSJTdGRIVyI6Y2FzZSJTdGRWVyI6cy5zZXQoaSx0aGlzLnJlYWROdW1iZXJBcnJheSgpWzBdKTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6cy5zZXQoaSx0aGlzLnJlYWROdW1iZXIoKSk7YnJlYWs7Y2FzZSJFeHBhbnNpb25GYWN0b3IiOnMuc2V0KGksdGhpcy5yZWFkTnVtYmVyKCl8fC4wNik7YnJlYWs7Y2FzZSJGb3JjZUJvbGQiOnMuc2V0KGksdGhpcy5yZWFkQm9vbGVhbigpKX19Zm9yKGNvbnN0e2VuY29kZWQ6dCxnbHlwaDpzfW9mIG4pe2NvbnN0IG49bmV3IFR5cGUxQ2hhclN0cmluZyxpPW4uY29udmVydCh0LGEsdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTtsZXQgbz1uLm91dHB1dDtpJiYobz1bMTRdKTtjb25zdCBsPXtnbHlwaE5hbWU6cyxjaGFyc3RyaW5nOm8sd2lkdGg6bi53aWR0aCxsc2I6bi5sc2Isc2VhYzpuLnNlYWN9OyIubm90ZGVmIj09PXM/ci5jaGFyc3RyaW5ncy51bnNoaWZ0KGwpOnIuY2hhcnN0cmluZ3MucHVzaChsKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKHMpO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPW4ud2lkdGgpfX1yZXR1cm4gcn1leHRyYWN0Rm9udEhlYWRlcihlKXtsZXQgdDtmb3IoO251bGwhPT0odD10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT10KXt0PXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2godCl7Y2FzZSJGb250TWF0cml4Ijpjb25zdCBhPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5mb250TWF0cml4PWE7YnJlYWs7Y2FzZSJFbmNvZGluZyI6Y29uc3Qgbj10aGlzLmdldFRva2VuKCk7bGV0IHM7aWYoL15cZCskLy50ZXN0KG4pKXtzPVtdO2NvbnN0IGU9MHxwYXJzZUludChuLDEwKTt0aGlzLmdldFRva2VuKCk7Zm9yKGxldCBhPTA7YTxlO2ErKyl7dD10aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIiE9PXQmJiJkZWYiIT09dDspe3Q9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10KXJldHVybn1pZigiZGVmIj09PXQpYnJlYWs7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Y29uc3QgYT10aGlzLmdldFRva2VuKCk7c1tlXT1hO3RoaXMuZ2V0VG9rZW4oKX19ZWxzZSBzPWdldEVuY29kaW5nKG4pO2UuYnVpbHRJbkVuY29kaW5nPXM7YnJlYWs7Y2FzZSJGb250QkJveCI6Y29uc3Qgcj10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuYXNjZW50PU1hdGgubWF4KHJbM10sclsxXSk7ZS5kZXNjZW50PU1hdGgubWluKHJbMV0sclszXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9fX19ZnVuY3Rpb24gZmluZEJsb2NrKGUsdCxhKXtjb25zdCBuPWUubGVuZ3RoLHM9dC5sZW5ndGgscj1uLXM7bGV0IGk9YSxvPSExO2Zvcig7aTxyOyl7bGV0IGE9MDtmb3IoO2E8cyYmZVtpK2FdPT09dFthXTspYSsrO2lmKGE+PXMpe2krPWE7Zm9yKDtpPG4mJmlzV2hpdGVTcGFjZShlW2ldKTspaSsrO289ITA7YnJlYWt9aSsrfXJldHVybntmb3VuZDpvLGxlbmd0aDppfX1jbGFzcyBUeXBlMUZvbnR7I1o7Y29uc3RydWN0b3IoZSx0LGEpe2xldCBuPWEubGVuZ3RoMSxzPWEubGVuZ3RoMixyPXQucGVla0J5dGVzKDYpO2NvbnN0IGk9MTI4PT09clswXSYmMT09PXJbMV07aWYoaSl7dC5za2lwKDYpO249cls1XTw8MjR8cls0XTw8MTZ8clszXTw8OHxyWzJdfWNvbnN0IG89ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBhPVsxMDEsMTAxLDEyMCwxMDEsOTldLG49ZS5wb3M7bGV0IHMscixpLG87dHJ5e3M9ZS5nZXRCeXRlcyh0KTtyPXMubGVuZ3RofWNhdGNoe31pZihyPT09dCl7aT1maW5kQmxvY2socyxhLHQtMiphLmxlbmd0aCk7aWYoaS5mb3VuZCYmaS5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IFN0cmVhbShzKSxsZW5ndGg6dH19d2FybignSW52YWxpZCAiTGVuZ3RoMSIgcHJvcGVydHkgaW4gVHlwZTEgZm9udCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtlLnBvcz1uO2Zvcig7Oyl7aT1maW5kQmxvY2soZS5wZWVrQnl0ZXMoMjA0OCksYSwwKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7ZS5wb3MrPWkubGVuZ3RoO2lmKGkuZm91bmQpe289ZS5wb3MtbjticmVha319ZS5wb3M9bjtpZihvKXJldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKG8pKSxsZW5ndGg6b307d2FybignVW5hYmxlIHRvIHJlY292ZXIgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdXNpbmcgYXMgaXMuJyk7cmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0odCxuKTtuZXcgVHlwZTFQYXJzZXIoby5zdHJlYW0sITEsam4pLmV4dHJhY3RGb250SGVhZGVyKGEpO2lmKGkpe3I9dC5nZXRCeXRlcyg2KTtzPXJbNV08PDI0fHJbNF08PDE2fHJbM108PDh8clsyXX1jb25zdCBsPWZ1bmN0aW9uIGdldEVleGVjQmxvY2soZSx0KXtjb25zdCBhPWUuZ2V0Qnl0ZXMoKTtpZigwPT09YS5sZW5ndGgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJnZXRFZXhlY0Jsb2NrIC0gbm8gZm9udCBwcm9ncmFtIGZvdW5kLiIpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShhKSxsZW5ndGg6YS5sZW5ndGh9fSh0KSxmPW5ldyBUeXBlMVBhcnNlcihsLnN0cmVhbSwhMCxqbikuZXh0cmFjdEZvbnRQcm9ncmFtKGEpO2Zvcihjb25zdCBlIGluIGYucHJvcGVydGllcylhW2VdPWYucHJvcGVydGllc1tlXTt0aGlzLiNaPW8ubGVuZ3RoK2wubGVuZ3RoO2NvbnN0IGM9Zi5jaGFyc3RyaW5ncyxoPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhjKSx1PXRoaXMuZ2V0VHlwZTJTdWJycyhmLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPWM7dGhpcy5kYXRhPXRoaXMud3JhcChlLGgsdGhpcy5jaGFyc3RyaW5ncyx1LGEpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhmLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IG49MCxzPXQubGVuZ3RoO248cztuKyspe2FbZS5jTWFwLmNoYXJDb2RlT2YobildPW4rMX1yZXR1cm4gYX1jb25zdCBhPVsiLm5vdGRlZiJdO2xldCBuLHM7Zm9yKHM9MDtzPHQubGVuZ3RoO3MrKylhLnB1c2godFtzXS5nbHlwaE5hbWUpO2NvbnN0IHI9ZS5idWlsdEluRW5jb2Rpbmc7aWYocil7bj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHIpe3M9YS5pbmRleE9mKHJbZV0pO3M+PTAmJihuW2VdPXMpfX1yZXR1cm4gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsbixhKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5udW1HbHlwaHMpcmV0dXJuITE7aWYoMD09PWUpcmV0dXJuITA7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3NbZS0xXS5jaGFyc3RyaW5nLmxlbmd0aD4wfWdldFNlYWNzKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBhPTAsbj1lLmxlbmd0aDthPG47YSsrKXtjb25zdCBuPWVbYV07bi5zZWFjJiYodFthKzFdPW4uc2VhYyl9cmV0dXJuIHR9Z2V0VHlwZTJDaGFyc3RyaW5ncyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpdC5wdXNoKGEuY2hhcnN0cmluZyk7cmV0dXJuIHR9Z2V0VHlwZTJTdWJycyhlKXtsZXQgdD0wO2NvbnN0IGE9ZS5sZW5ndGg7dD1hPDExMzM/MTA3OmE8MzM3Njk/MTEzMTozMjc2ODtjb25zdCBuPVtdO2xldCBzO2ZvcihzPTA7czx0O3MrKyluLnB1c2goWzExXSk7Zm9yKHM9MDtzPGE7cysrKW4ucHVzaChlW3NdKTtyZXR1cm4gbn13cmFwKGUsdCxhLG4scyl7Y29uc3Qgcj1uZXcgQ0ZGKHRoaXMuI1opO3IuaGVhZGVyPW5ldyBDRkZIZWFkZXIoMSwwLDQsNCk7ci5uYW1lcz1bZV07Y29uc3QgaT1uZXcgQ0ZGVG9wRGljdDtpLnNldEJ5TmFtZSgidmVyc2lvbiIsMzkxKTtpLnNldEJ5TmFtZSgiTm90aWNlIiwzOTIpO2kuc2V0QnlOYW1lKCJGdWxsTmFtZSIsMzkzKTtpLnNldEJ5TmFtZSgiRmFtaWx5TmFtZSIsMzk0KTtpLnNldEJ5TmFtZSgiV2VpZ2h0IiwzOTUpO2kuc2V0QnlOYW1lKCJFbmNvZGluZyIsbnVsbCk7aS5zZXRCeU5hbWUoIkZvbnRNYXRyaXgiLHMuZm9udE1hdHJpeCk7aS5zZXRCeU5hbWUoIkZvbnRCQm94IixzLmJib3gpO2kuc2V0QnlOYW1lKCJjaGFyc2V0IixudWxsKTtpLnNldEJ5TmFtZSgiQ2hhclN0cmluZ3MiLG51bGwpO2kuc2V0QnlOYW1lKCJQcml2YXRlIixudWxsKTtyLnRvcERpY3Q9aTtjb25zdCBvPW5ldyBDRkZTdHJpbmdzO28uYWRkKCJWZXJzaW9uIDAuMTEiKTtvLmFkZCgiU2VlIG9yaWdpbmFsIG5vdGljZSIpO28uYWRkKGUpO28uYWRkKGUpO28uYWRkKCJNZWRpdW0iKTtyLnN0cmluZ3M9bztyLmdsb2JhbFN1YnJJbmRleD1uZXcgQ0ZGSW5kZXg7Y29uc3QgbD10Lmxlbmd0aCxmPVsiLm5vdGRlZiJdO2ZvcihsZXQgZT0wO2U8bDtlKyspe2NvbnN0e2dseXBoTmFtZTp0fT1hW2VdOy0xPT09Rm4uaW5kZXhPZih0KSYmby5hZGQodCk7Zi5wdXNoKHQpfXIuY2hhcnNldD1uZXcgQ0ZGQ2hhcnNldCghMSwwLGYpO2NvbnN0IGM9bmV3IENGRkluZGV4O2MuYWRkKFsxMzksMTRdKTtmb3IobGV0IGU9MDtlPGw7ZSsrKWMuYWRkKHRbZV0pO3IuY2hhclN0cmluZ3M9Yztjb25zdCBoPW5ldyBDRkZQcml2YXRlRGljdDtoLnNldEJ5TmFtZSgiU3VicnMiLG51bGwpO2NvbnN0IHU9WyJCbHVlVmFsdWVzIiwiT3RoZXJCbHVlcyIsIkZhbWlseUJsdWVzIiwiRmFtaWx5T3RoZXJCbHVlcyIsIlN0ZW1TbmFwSCIsIlN0ZW1TbmFwViIsIkJsdWVTaGlmdCIsIkJsdWVGdXp6IiwiQmx1ZVNjYWxlIiwiTGFuZ3VhZ2VHcm91cCIsIkV4cGFuc2lvbkZhY3RvciIsIkZvcmNlQm9sZCIsIlN0ZEhXIiwiU3RkVlciXTtmb3IoY29uc3QgZSBvZiB1KXtpZighcy5wcml2YXRlRGF0YS5oYXMoZSkpY29udGludWU7Y29uc3QgdD1zLnByaXZhdGVEYXRhLmdldChlKTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO2guc2V0QnlOYW1lKGUsdCl9ci50b3BEaWN0LnByaXZhdGVEaWN0PWg7Y29uc3QgbT1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGUgb2YgbiltLmFkZChlKTtoLnN1YnJzSW5kZXg9bTtyZXR1cm4gbmV3IENGRkNvbXBpbGVyKHIpLmNvbXBpbGUoKX19Y29uc3QgbnM9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLHNzPTFlMyxycz1bImFzY2VudCIsImJib3giLCJibGFjayIsImJvbGQiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZGlzYWJsZUZvbnRGYWNlIiwiZmFsbGJhY2tOYW1lIiwiZm9udEV4dHJhUHJvcGVydGllcyIsImZvbnRNYXRyaXgiLCJpc0ludmFsaWRQREZqc0ZvbnQiLCJpc1R5cGUzRm9udCIsIml0YWxpYyIsImxvYWRlZE5hbWUiLCJtaW1ldHlwZSIsIm1pc3NpbmdGaWxlIiwibmFtZSIsInJlbWVhc3VyZSIsInN5c3RlbUZvbnRJbmZvIiwidmVydGljYWwiXSxpcz1bImNNYXAiLCJjb21wb3NpdGUiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJzdWJ0eXBlIiwidG9Gb250Q2hhciIsInRvVW5pY29kZSIsInR5cGUiLCJ2bWV0cmljcyIsIndpZHRocyJdO2Z1bmN0aW9uIGFkanVzdFdpZHRocyhlKXtpZighZS5mb250TWF0cml4KXJldHVybjtpZihlLmZvbnRNYXRyaXhbMF09PT1uWzBdKXJldHVybjtjb25zdCB0PS4wMDEvZS5mb250TWF0cml4WzBdLGE9ZS53aWR0aHM7Zm9yKGNvbnN0IGUgaW4gYSlhW2VdKj10O2UuZGVmYXVsdFdpZHRoKj10fWZ1bmN0aW9uIGFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSl7aWYoIWUuZmFsbGJhY2tUb1VuaWNvZGUpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoYSl8fCh0W2FdPWUuZmFsbGJhY2tUb1VuaWNvZGVbYV0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfWNsYXNzIGZvbnRzX0dseXBoe2NvbnN0cnVjdG9yKGUsdCxhLG4scyxyLGksbyxsKXt0aGlzLm9yaWdpbmFsQ2hhckNvZGU9ZTt0aGlzLmZvbnRDaGFyPXQ7dGhpcy51bmljb2RlPWE7dGhpcy5hY2NlbnQ9bjt0aGlzLndpZHRoPXM7dGhpcy52bWV0cmljPXI7dGhpcy5vcGVyYXRvckxpc3RJZD1pO3RoaXMuaXNTcGFjZT1vO3RoaXMuaXNJbkZvbnQ9bH1nZXQgY2F0ZWdvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsImNhdGVnb3J5IixmdW5jdGlvbiBnZXRDaGFyVW5pY29kZUNhdGVnb3J5KGUpe2NvbnN0IHQ9d24uZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgYT1lLm1hdGNoKGJuKSxuPXtpc1doaXRlc3BhY2U6ISFhPy5bMV0saXNaZXJvV2lkdGhEaWFjcml0aWM6ISFhPy5bMl0saXNJbnZpc2libGVGb3JtYXRNYXJrOiEhYT8uWzNdfTt3bi5zZXQoZSxuKTtyZXR1cm4gbn0odGhpcy51bmljb2RlKSwhMCl9fWZ1bmN0aW9uIGludDE2KGUsdCl7cmV0dXJuKGU8PDgpK3R9ZnVuY3Rpb24gd3JpdGVTaWduZWRJbnQxNihlLHQsYSl7ZVt0KzFdPWE7ZVt0XT1hPj4+OH1mdW5jdGlvbiBzaWduZWRJbnQxNihlLHQpe2NvbnN0IGE9KGU8PDgpK3Q7cmV0dXJuIDMyNzY4JmE/YS02NTUzNjphfWNsYXNzIFRydWVUeXBlVGFibGVCdWlsZGVyeyNWOyMkPTEwMjQ7I2VlPSExOyNZPTA7I3RlO2NvbnN0cnVjdG9yKHtleGFjdExlbmd0aDplLG1pbkxlbmd0aDp0fSl7dGhpcy4jZWU9ISFlO3RoaXMuI0ooZXx8dCl9I0ooZSl7aWYodGhpcy4jZWUpdGhpcy4jJD1lO2Vsc2UgZm9yKDt0aGlzLiMkPGU7KXRoaXMuIyQqPTI7Y29uc3QgdD1uZXcgVWludDhBcnJheSh0aGlzLiMkKTt0aGlzLiNWJiZ0LnNldCh0aGlzLiNWLDApO3RoaXMuI1Y9dDt0aGlzLiN0ZT1uZXcgRGF0YVZpZXcodC5idWZmZXIpfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuI1Yuc3ViYXJyYXkoMCx0aGlzLiNZKX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuI1l9c2tpcChlKXt0aGlzLiNZKz1lfXNldEFycmF5KGUpe2NvbnN0IHQ9dGhpcy4jWStlLmxlbmd0aDshdGhpcy4jZWUmJnQ+dGhpcy4jJCYmdGhpcy4jSih0KTt0aGlzLiNWLnNldChlLHRoaXMuI1kpO3RoaXMuI1k9dH1zZXRJbnQxNihlKXtjb25zdCB0PXRoaXMuI1krMjshdGhpcy4jZWUmJnQ+dGhpcy4jJCYmdGhpcy4jSih0KTt0aGlzLiN0ZS5zZXRJbnQxNih0aGlzLiNZLGUpO3RoaXMuI1k9dH1zZXRTYWZlSW50MTYoZSl7Y29uc3QgdD10aGlzLiNZKzI7IXRoaXMuI2VlJiZ0PnRoaXMuIyQmJnRoaXMuI0oodCk7dGhpcy4jdGUuc2V0SW50MTYodGhpcy4jWSxNYXRoQ2xhbXAoZSwtMzI3NjgsMzI3NjcpKTt0aGlzLiNZPXR9c2V0SW50MzIoZSl7Y29uc3QgdD10aGlzLiNZKzQ7IXRoaXMuI2VlJiZ0PnRoaXMuIyQmJnRoaXMuI0oodCk7dGhpcy4jdGUuc2V0SW50MzIodGhpcy4jWSxlKTt0aGlzLiNZPXR9fWZ1bmN0aW9uIGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKXtyZXR1cm4idHRjZiI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6YSxjb21wb3NpdGU6bn0pe2xldCBzLHI7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKTtyZXR1cm4iXDABXDBcMCI9PT10fHwidHJ1ZSI9PT10fShlKXx8aXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpKXM9bj8iQ0lERm9udFR5cGUyIjoiVHJ1ZVR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNPcGVuVHlwZUZpbGUoZSl7cmV0dXJuIk9UVE8iPT09Ynl0ZXNUb1N0cmluZyhlLnBlZWtCeXRlcyg0KSl9KGUpKXM9bj8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlzPW4/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihuKXtzPSJDSURGb250VHlwZTAiO3I9IkNJREZvbnRUeXBlMEMifWVsc2V7cz0iTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO3I9IlR5cGUxQyJ9ZWxzZXt3YXJuKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO3M9dDtyPWF9cmV0dXJuW3Mscl19ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBhIGluIHQpZVsrYV09dFthXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LGEpe2NvbnN0IG49W107bGV0IHM7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtzPWdldFVuaWNvZGVGb3JHbHlwaChlW2FdLHQpOy0xIT09cyYmKG5bYV09cyl9Zm9yKGNvbnN0IGUgaW4gYSl7cz1nZXRVbmljb2RlRm9yR2x5cGgoYVtlXSx0KTstMSE9PXMmJihuWytlXT1zKX1yZXR1cm4gbn1mdW5jdGlvbiBpc01hY05hbWVSZWNvcmQoZSl7cmV0dXJuIDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gaXNXaW5OYW1lUmVjb3JkKGUpe3JldHVybiAzPT09ZS5wbGF0Zm9ybSYmMT09PWUuZW5jb2RpbmcmJjEwMzM9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGNvbnZlcnRDaWRTdHJpbmcoZSx0LGE9ITEpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybiB0LmNoYXJDb2RlQXQoMCk7Y2FzZSAyOnJldHVybiB0LmNoYXJDb2RlQXQoMCk8PDh8dC5jaGFyQ29kZUF0KDEpfWNvbnN0IG49YFVuc3VwcG9ydGVkIENJRCBzdHJpbmcgKGNoYXJDb2RlICR7ZX0pOiAiJHt0fSIuYDtpZihhKXRocm93IG5ldyBGb3JtYXRFcnJvcihuKTt3YXJuKG4pO3JldHVybiB0fWZ1bmN0aW9uIGFkanVzdE1hcHBpbmcoZSx0LGEsbil7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLHI9bmV3IE1hcCxpPVtdLG89bmV3IFNldDtsZXQgbD0wO2xldCBmPW5zW2xdWzBdLGM9bnNbbF1bMV07Y29uc3QgaXNJblByaXZhdGVBcmVhPWU9Pm5zWzBdWzBdPD1lJiZlPD1uc1swXVsxXXx8bnNbMV1bMF08PWUmJmU8PW5zWzFdWzFdO2xldCBoPW51bGw7Zm9yKGNvbnN0IHUgaW4gZSl7bGV0IG09ZVt1XTtpZighdChtKSljb250aW51ZTtpZihmPmMpe2wrKztpZihsPj1ucy5sZW5ndGgpe3dhcm4oIlJhbiBvdXQgb2Ygc3BhY2UgaW4gZm9udCBwcml2YXRlIHVzZSBhcmVhLiIpO2JyZWFrfWY9bnNbbF1bMF07Yz1uc1tsXVsxXX1jb25zdCBwPWYrKzswPT09bSYmKG09YSk7bGV0IGQ9bi5nZXQodSk7aWYoInN0cmluZyI9PXR5cGVvZiBkKWlmKDE9PT1kLmxlbmd0aClkPWQuY29kZVBvaW50QXQoMCk7ZWxzZXtpZighaCl7aD1uZXcgTWFwO2ZvcihsZXQgZT02NDI1NjtlPD02NDMzNTtlKyspe2NvbnN0IHQ9U3RyaW5nLmZyb21DaGFyQ29kZShlKS5ub3JtYWxpemUoIk5GS0QiKTt0Lmxlbmd0aD4xJiZoLnNldCh0LGUpfX1kPWguZ2V0KGQpfHxkLmNvZGVQb2ludEF0KDApfWlmKGQmJiFpc0luUHJpdmF0ZUFyZWEoZCkmJiFvLmhhcyhtKSl7ci5zZXQoZCxtKTtvLmFkZChtKX1zW3BdPW07aVt1XT1wfXJldHVybnt0b0ZvbnRDaGFyOmksY2hhckNvZGVUb0dseXBoSWQ6cyx0b1VuaWNvZGVFeHRyYU1hcDpyLG5leHRBdmFpbGFibGVGb250Q2hhckNvZGU6Zn19ZnVuY3Rpb24gY3JlYXRlQ21hcFRhYmxlKGUsdCxhKXtjb25zdCBuPWZ1bmN0aW9uIGdldFJhbmdlcyhlLHQsYSl7Y29uc3Qgbj1bXTtmb3IoY29uc3QgdCBpbiBlKWVbdF0+PWF8fG4ucHVzaCh7Zm9udENoYXJDb2RlOjB8dCxnbHlwaElkOmVbdF19KTtpZih0KWZvcihjb25zdFtlLHNdb2YgdClzPj1hfHxuLnB1c2goe2ZvbnRDaGFyQ29kZTplLGdseXBoSWQ6c30pOzA9PT1uLmxlbmd0aCYmbi5wdXNoKHtmb250Q2hhckNvZGU6MCxnbHlwaElkOjB9KTtuLnNvcnQoKGUsdCk9PmUuZm9udENoYXJDb2RlLXQuZm9udENoYXJDb2RlKTtjb25zdCBzPVtdLHI9bi5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxyOyl7Y29uc3QgdD1uW2VdLmZvbnRDaGFyQ29kZSxhPVtuW2VdLmdseXBoSWRdOysrZTtsZXQgaT10O2Zvcig7ZTxyJiZpKzE9PT1uW2VdLmZvbnRDaGFyQ29kZTspe2EucHVzaChuW2VdLmdseXBoSWQpOysraTsrK2U7aWYoNjU1MzU9PT1pKWJyZWFrfXMucHVzaChbdCxpLGFdKX1yZXR1cm4gc30oZSx0LGEpLHM9bi5hdCgtMSlbMV0+NjU1MzU/MjoxLHI9bmV3IFRydWVUeXBlVGFibGVCdWlsZGVyKHtleGFjdExlbmd0aDoxMn0pO3Iuc2tpcCgyKTtyLnNldEludDE2KHMpO3Iuc2V0QXJyYXkoWzAsM10pO3Iuc2V0QXJyYXkoWzAsMV0pO3Iuc2V0SW50MzIoNCs4KnMpO2xldCBpLG8sbCxmO2ZvcihpPW4ubGVuZ3RoLTE7aT49MCYmIShuW2ldWzBdPD02NTUzNSk7LS1pKTtjb25zdCBjPWkrMTtuW2ldWzBdPDY1NTM1JiY2NTUzNT09PW5baV1bMV0mJihuW2ldWzFdPTY1NTM0KTtjb25zdCBoPW5baV1bMV08NjU1MzU/MTowLHU9YytoLG09T3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXModSwyKSxwPTIqYysyKmgsZD1uZXcgVHJ1ZVR5cGVUYWJsZUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOnB9KSxnPW5ldyBUcnVlVHlwZVRhYmxlQnVpbGRlcih7ZXhhY3RMZW5ndGg6cH0pLGI9bmV3IFRydWVUeXBlVGFibGVCdWlsZGVyKHtleGFjdExlbmd0aDpwfSksdz1uZXcgVHJ1ZVR5cGVUYWJsZUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOnB9KSxqPW5ldyBUcnVlVHlwZVRhYmxlQnVpbGRlcih7fSk7bGV0IGs9MDtmb3IoaT0wLG89YztpPG87aSsrKXtjb25zdFtlLHQsYV09bltpXTtkLnNldEludDE2KGUpO2cuc2V0SW50MTYodCk7bGV0IHM9ITA7Zm9yKGw9MSxmPWEubGVuZ3RoO2w8ZjsrK2wpaWYoYVtsXSE9PWFbbC0xXSsxKXtzPSExO2JyZWFrfWlmKHMpe2NvbnN0IHQ9YVswXTtiLnNldEludDE2KHQtZSY2NTUzNSk7dy5za2lwKDIpfWVsc2V7Y29uc3Qgbj0yKih1LWkpKzIqaztrKz10LWUrMTtiLnNraXAoMik7dy5zZXRJbnQxNihuKTtmb3IobD0wLGY9YS5sZW5ndGg7bDxmOysrbClqLnNldEludDE2KGFbbF0pfX1pZihoPjApe2cuc2V0QXJyYXkoWzI1NSwyNTVdKTtkLnNldEFycmF5KFsyNTUsMjU1XSk7Yi5zZXRBcnJheShbMCwxXSk7dy5za2lwKDIpfWNvbnN0IHk9bmV3IFRydWVUeXBlVGFibGVCdWlsZGVyKHtleGFjdExlbmd0aDoxMitkLmxlbmd0aCtnLmxlbmd0aCtiLmxlbmd0aCt3Lmxlbmd0aCtqLmxlbmd0aH0pO3kuc2tpcCgyKTt5LnNldEludDE2KDIqdSk7eS5zZXRJbnQxNihtLnJhbmdlKTt5LnNldEludDE2KG0uZW50cnkpO3kuc2V0SW50MTYobS5yYW5nZVNoaWZ0KTt5LnNldEFycmF5KGcuZGF0YSk7eS5za2lwKDIpO3kuc2V0QXJyYXkoZC5kYXRhKTt5LnNldEFycmF5KGIuZGF0YSk7eS5zZXRBcnJheSh3LmRhdGEpO3kuc2V0QXJyYXkoai5kYXRhKTtsZXQgcT1udWxsLHY9bnVsbCxTPW51bGw7aWYocz4xKXtxPW5ldyBUcnVlVHlwZVRhYmxlQnVpbGRlcih7ZXhhY3RMZW5ndGg6OH0pO3Euc2V0QXJyYXkoWzAsM10pO3Euc2V0QXJyYXkoWzAsMTBdKTtxLnNldEludDMyKDQrOCpzKzQreS5sZW5ndGgpO3Y9bmV3IFRydWVUeXBlVGFibGVCdWlsZGVyKHt9KTtmb3IoY29uc3QgZSBvZiBuKXtsZXQgdD1lWzBdO2NvbnN0IGE9ZVsyXTtsZXQgbj1hWzBdO2ZvcihsPTEsZj1hLmxlbmd0aDtsPGY7KytsKWlmKGFbbF0hPT1hW2wtMV0rMSl7Y29uc3Qgcz1lWzBdK2wtMTt2LnNldEludDMyKHQpO3Yuc2V0SW50MzIocyk7di5zZXRJbnQzMihuKTt0PXMrMTtuPWFbbF19di5zZXRJbnQzMih0KTt2LnNldEludDMyKGVbMV0pO3Yuc2V0SW50MzIobil9Uz1uZXcgVHJ1ZVR5cGVUYWJsZUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjE2fSk7Uy5zZXRBcnJheShbMCwxMl0pO1Muc2tpcCgyKTtTLnNldEludDMyKHYubGVuZ3RoKzE2KTtTLnNraXAoNCk7Uy5zZXRJbnQzMih2Lmxlbmd0aC8xMil9Y29uc3QgeD1uZXcgVHJ1ZVR5cGVUYWJsZUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjQrci5sZW5ndGgrKHE/Lmxlbmd0aD8/MCkreS5sZW5ndGgrKFM/Lmxlbmd0aD8/MCkrKHY/Lmxlbmd0aD8/MCl9KTt4LnNldEFycmF5KHIuZGF0YSk7eC5zZXRBcnJheShxPy5kYXRhPz9bXSk7eC5zZXRBcnJheShbMCw0XSk7eC5zZXRJbnQxNih5Lmxlbmd0aCs0KTt4LnNldEFycmF5KHkuZGF0YSk7eC5zZXRBcnJheShTPy5kYXRhPz9bXSk7eC5zZXRBcnJheSh2Py5kYXRhPz9bXSk7cmV0dXJuIHguZGF0YX1mdW5jdGlvbiBjcmVhdGVPUzJUYWJsZShlLHQsYSl7YXx8PXt1bml0c1BlckVtOjAseU1heDowLHlNaW46MCxhc2NlbnQ6MCxkZXNjZW50OjB9O2xldCBuPTAscz0wLHI9MCxpPTAsbz1udWxsLGw9MCxmPS0xO2lmKHQpe2ZvcihsZXQgZSBpbiB0KXtlfD0wOyhvPmV8fCFvKSYmKG89ZSk7bDxlJiYobD1lKTtmPWdldFVuaWNvZGVSYW5nZUZvcihlLGYpO2lmKGY8MzIpbnw9MTw8ZjtlbHNlIGlmKGY8NjQpc3w9MTw8Zi0zMjtlbHNlIGlmKGY8OTYpcnw9MTw8Zi02NDtlbHNle2lmKCEoZjwxMjMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5pY29kZSByYW5nZXMgQml0cyA+IDEyMyBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzYWdlIik7aXw9MTw8Zi05Nn19bD42NTUzNSYmKGw9NjU1MzUpfWVsc2V7bz0wO2w9MjU1fWNvbnN0IGM9ZS5iYm94fHxbMCwwLDAsMF0saD1hLnVuaXRzUGVyRW18fChlLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5lLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMpLHU9ZS5hc2NlbnRTY2FsZWQ/MTpoL3NzLG09YS5hc2NlbnR8fE1hdGgucm91bmQodSooZS5hc2NlbnR8fGNbM10pKTtsZXQgcD1hLmRlc2NlbnR8fE1hdGgucm91bmQodSooZS5kZXNjZW50fHxjWzFdKSk7cD4wJiZlLmRlc2NlbnQ+MCYmY1sxXTwwJiYocD0tcCk7Y29uc3QgZD1hLnlNYXh8fG0sZz0tYS55TWlufHwtcCxiPW5ldyBUcnVlVHlwZVRhYmxlQnVpbGRlcih7ZXhhY3RMZW5ndGg6OTZ9KTtiLnNldEFycmF5KFswLDNdKTtiLnNldEFycmF5KFsyLDM2XSk7Yi5zZXRBcnJheShbMSwyNDRdKTtiLnNldEFycmF5KFswLDVdKTtiLnNraXAoMik7Yi5zZXRBcnJheShbMiwxMzhdKTtiLnNldEFycmF5KFsyLDE4N10pO2Iuc2tpcCgyKTtiLnNldEFycmF5KFswLDE0MF0pO2Iuc2V0QXJyYXkoWzIsMTM4XSk7Yi5zZXRBcnJheShbMiwxODddKTtiLnNraXAoMik7Yi5zZXRBcnJheShbMSwyMjNdKTtiLnNldEFycmF5KFswLDQ5XSk7Yi5zZXRBcnJheShbMSwyXSk7Yi5za2lwKDIpO2Iuc2V0QXJyYXkoWzAsMCw2LGUuZml4ZWRQaXRjaD85OjAsMCwwLDAsMCwwLDBdKTtiLnNldEludDMyKG4pO2Iuc2V0SW50MzIocyk7Yi5zZXRJbnQzMihyKTtiLnNldEludDMyKGkpO2Iuc2V0QXJyYXkoWzQyLDUwLDQ5LDQyXSk7Yi5zZXRJbnQxNihlLml0YWxpY0FuZ2xlPzE6MCk7Yi5zZXRJbnQxNihvfHxlLmZpcnN0Q2hhcik7Yi5zZXRJbnQxNihsfHxlLmxhc3RDaGFyKTtiLnNldEludDE2KG0pO2Iuc2V0SW50MTYocCk7Yi5zZXRBcnJheShbMCwxMDBdKTtiLnNldEludDE2KGQpO2Iuc2V0SW50MTYoZyk7Yi5za2lwKDgpO2Iuc2V0SW50MTYoZS54SGVpZ2h0KTtiLnNldEludDE2KGUuY2FwSGVpZ2h0KTtiLnNraXAoMik7Yi5zZXRJbnQxNihvfHxlLmZpcnN0Q2hhcik7Yi5zZXRBcnJheShbMCwzXSk7cmV0dXJuIGIuZGF0YX1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7Y29uc3QgdD1uZXcgVHJ1ZVR5cGVUYWJsZUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjMyfSk7dC5zZXRBcnJheShbMCwzLDAsMF0pO3Quc2V0SW50MzIoTWF0aC5mbG9vcig2NTUzNiplLml0YWxpY0FuZ2xlKSk7dC5za2lwKDQpO3Quc2V0SW50MzIoZS5maXhlZFBpdGNoPzE6MCk7dC5za2lwKDE2KTtyZXR1cm4gdC5kYXRhfWZ1bmN0aW9uIGNyZWF0ZVBvc3RzY3JpcHROYW1lKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoL1teXHgyMS1ceDdFXXxbW1xdKCl7fTw+LyVdL2csIiIpLnNsaWNlKDAsNjMpfWZ1bmN0aW9uIGNyZWF0ZU5hbWVUYWJsZShlLHQpe3R8fD1bW10sW11dO2NvbnN0IGE9W3RbMF1bMF18fCJPcmlnaW5hbCBsaWNlbmNlIix0WzBdWzFdfHxlLHRbMF1bMl18fCJVbmtub3duIix0WzBdWzNdfHwidW5pcXVlSUQiLHRbMF1bNF18fGUsdFswXVs1XXx8IlZlcnNpb24gMC4xMSIsdFswXVs2XXx8Y3JlYXRlUG9zdHNjcmlwdE5hbWUoZSksdFswXVs3XXx8IlVua25vd24iLHRbMF1bOF18fCJVbmtub3duIix0WzBdWzldfHwiVW5rbm93biJdLG49YS5tYXAoZT0+c3RyaW5nVG9CeXRlcyhlKSkscz1uZXcgQXJyYXkoYS5sZW5ndGgpO2xldCByLGksbyxsLGY7Zm9yKHI9MCxpPWEubGVuZ3RoO3I8aTtyKyspe2Y9dFsxXVtyXXx8YVtyXTtjb25zdCBlPW5ldyBUcnVlVHlwZVRhYmxlQnVpbGRlcih7ZXhhY3RMZW5ndGg6MipmLmxlbmd0aH0pO2ZvcihvPTAsbD1mLmxlbmd0aDtvPGw7bysrKWUuc2V0SW50MTYoZi5jaGFyQ29kZUF0KG8pKTtzW3JdPWUuZGF0YX1jb25zdCBjPVtuLHNdLGg9W1swLDFdLFswLDNdXSx1PVtbMCwwXSxbMCwxXV0sbT1bWzAsMF0sWzQsOV1dLHA9W107bGV0IGQ9MDtmb3Iocj0wLGk9aC5sZW5ndGg7cjxpO3IrKyl7Y29uc3QgZT1jW3JdO2ZvcihvPTAsbD1lLmxlbmd0aDtvPGw7bysrKXtmPWVbb107Y29uc3QgdD1uZXcgVHJ1ZVR5cGVUYWJsZUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjYraFtyXS5sZW5ndGgrdVtyXS5sZW5ndGgrbVtyXS5sZW5ndGh9KTt0LnNldEFycmF5KGhbcl0pO3Quc2V0QXJyYXkodVtyXSk7dC5zZXRBcnJheShtW3JdKTt0LnNldEludDE2KG8pO3Quc2V0SW50MTYoZi5sZW5ndGgpO3Quc2V0SW50MTYoZCk7cC5wdXNoKHQuZGF0YSk7ZCs9Zi5sZW5ndGh9fWNvbnN0IGc9bi5sZW5ndGgqaC5sZW5ndGgsYj1uZXcgVHJ1ZVR5cGVUYWJsZUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjYrTWF0aC5zdW1QcmVjaXNlKHAubWFwKGU9PmUubGVuZ3RoKSkrTWF0aC5zdW1QcmVjaXNlKG4ubWFwKGU9PmUubGVuZ3RoKSkrTWF0aC5zdW1QcmVjaXNlKHMubWFwKGU9PmUubGVuZ3RoKSl9KTtiLnNraXAoMik7Yi5zZXRJbnQxNihnKTtiLnNldEludDE2KDEyKmcrNik7Zm9yKGNvbnN0IGUgb2YgcCliLnNldEFycmF5KGUpO2Zvcihjb25zdCBlIG9mIG4pYi5zZXRBcnJheShlKTtmb3IoY29uc3QgZSBvZiBzKWIuc2V0QXJyYXkoZSk7cmV0dXJuIGIuZGF0YX1jbGFzcyBGb250eyNhZT1uZXcgTWFwOyNuZT1uZXcgTWFwO2NoYXJQcm9jT3BlcmF0b3JMaXN0O2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMubmFtZT1lO3RoaXMucHNOYW1lPW51bGw7dGhpcy5taW1ldHlwZT1udWxsO3RoaXMuZGlzYWJsZUZvbnRGYWNlPW4uZGlzYWJsZUZvbnRGYWNlO3RoaXMuZm9udEV4dHJhUHJvcGVydGllcz1uLmZvbnRFeHRyYVByb3BlcnRpZXM7dGhpcy5sb2FkZWROYW1lPWEubG9hZGVkTmFtZTt0aGlzLmlzVHlwZTNGb250PWEuaXNUeXBlM0ZvbnQ7dGhpcy5taXNzaW5nRmlsZT0hMTt0aGlzLmNzc0ZvbnRJbmZvPWEuY3NzRm9udEluZm87bGV0IHM9ISEoYS5mbGFncyZ5bik7aWYoIXMmJiFhLmlzU2ltdWxhdGVkRmxhZ3Mpe2NvbnN0IHQ9TW4oKSxhPVBuKCksbj1FbigpO2Zvcihjb25zdCByIG9mIGUuc3BsaXQoIisiKSl7bGV0IGU9bm9ybWFsaXplRm9udE5hbWUocik7ZT10W2VdfHxhW2VdfHxlO2U9ZS5zcGxpdCgiLSIsMSlbMF07aWYobltlXSl7cz0hMDticmVha319fXRoaXMuaXNTZXJpZkZvbnQ9czt0aGlzLmlzU3ltYm9saWNGb250PSEhKGEuZmxhZ3MmcW4pO3RoaXMuaXNNb25vc3BhY2U9ISEoYS5mbGFncyZrbik7bGV0e3R5cGU6cixzdWJ0eXBlOml9PWE7dGhpcy50eXBlPXI7dGhpcy5zdWJ0eXBlPWk7dGhpcy5zeXN0ZW1Gb250SW5mbz1hLnN5c3RlbUZvbnRJbmZvO2NvbnN0IG89ZS5tYXRjaCgvXkludmFsaWRQREZqc0ZvbnRfKC4qKV9cZCskLyk7dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ9ISFvO3RoaXMuaXNJbnZhbGlkUERGanNGb250P3RoaXMuZmFsbGJhY2tOYW1lPW9bMV06dGhpcy5pc01vbm9zcGFjZT90aGlzLmZhbGxiYWNrTmFtZT0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250P3RoaXMuZmFsbGJhY2tOYW1lPSJzZXJpZiI6dGhpcy5mYWxsYmFja05hbWU9InNhbnMtc2VyaWYiO2lmKHRoaXMuc3lzdGVtRm9udEluZm8/Lmd1ZXNzRmFsbGJhY2spe3RoaXMuc3lzdGVtRm9udEluZm8uZ3Vlc3NGYWxsYmFjaz0hMTt0aGlzLnN5c3RlbUZvbnRJbmZvLmNzcys9YCwke3RoaXMuZmFsbGJhY2tOYW1lfWB9dGhpcy5kaWZmZXJlbmNlcz1hLmRpZmZlcmVuY2VzO3RoaXMud2lkdGhzPWEud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWEuZGVmYXVsdFdpZHRoO3RoaXMuY29tcG9zaXRlPWEuY29tcG9zaXRlO3RoaXMuY01hcD1hLmNNYXA7dGhpcy5jYXBIZWlnaHQ9YS5jYXBIZWlnaHQvc3M7dGhpcy5hc2NlbnQ9YS5hc2NlbnQvc3M7dGhpcy5kZXNjZW50PWEuZGVzY2VudC9zczt0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50O3RoaXMuZm9udE1hdHJpeD1hLmZvbnRNYXRyaXg7dGhpcy5iYm94PWEuYmJveDt0aGlzLmRlZmF1bHRFbmNvZGluZz1hLmRlZmF1bHRFbmNvZGluZzt0aGlzLnRvVW5pY29kZT1hLnRvVW5pY29kZTt0aGlzLnRvRm9udENoYXI9W107aWYoIlR5cGUzIj09PWEudHlwZSl7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxhLmRlZmF1bHRFbmNvZGluZ1tlXTtyZXR1cm59dGhpcy5jaWRFbmNvZGluZz1hLmNpZEVuY29kaW5nfHwiIjt0aGlzLnZlcnRpY2FsPSEhYS52ZXJ0aWNhbDtpZih0aGlzLnZlcnRpY2FsKXt0aGlzLnZtZXRyaWNzPWEudm1ldHJpY3M7dGhpcy5kZWZhdWx0Vk1ldHJpY3M9YS5kZWZhdWx0Vk1ldHJpY3N9aWYoIXR8fHQuaXNFbXB0eSl7dCYmd2FybignRm9udCBmaWxlIGlzIGVtcHR5IGluICInK2UrJyIgKCcrdGhpcy5sb2FkZWROYW1lKyIpIik7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChhKTtyZXR1cm59W3IsaV09Z2V0Rm9udEZpbGVUeXBlKHQsYSk7cj09PXRoaXMudHlwZSYmaT09PXRoaXMuc3VidHlwZXx8aW5mbyhgSW5jb25zaXN0ZW50IGZvbnQgZmlsZSBUeXBlL1N1YlR5cGUsIGV4cGVjdGVkOiAke3RoaXMudHlwZX0vJHt0aGlzLnN1YnR5cGV9IGJ1dCBmb3VuZDogJHtyfS8ke2l9LmApO2xldCBsO3RyeXtzd2l0Y2gocil7Y2FzZSJNTVR5cGUxIjppbmZvKCJNTVR5cGUxIGZvbnQgKCIrZSsiKSwgZmFsbGluZyBiYWNrIHRvIFR5cGUxLiIpO2Nhc2UiVHlwZTEiOmNhc2UiQ0lERm9udFR5cGUwIjp0aGlzLm1pbWV0eXBlPSJmb250L29wZW50eXBlIjtjb25zdCBuPSJUeXBlMUMiPT09aXx8IkNJREZvbnRUeXBlMEMiPT09aT9uZXcgQ0ZGRm9udCh0LGEpOm5ldyBUeXBlMUZvbnQoZSx0LGEpO2FkanVzdFdpZHRocyhhKTtsPXRoaXMuY29udmVydChlLG4sYSk7YnJlYWs7Y2FzZSJPcGVuVHlwZSI6Y2FzZSJUcnVlVHlwZSI6Y2FzZSJDSURGb250VHlwZTIiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2w9dGhpcy5jaGVja0FuZFJlcGFpcihlLHQsYSk7YWRqdXN0V2lkdGhzKGEpO3RoaXMuaXNPcGVuVHlwZSYmKHI9Ik9wZW5UeXBlIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEZvbnQgJHtyfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWNhdGNoKGUpe3dhcm4oZSk7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChhKTtyZXR1cm59YW1lbmRGYWxsYmFja1RvVW5pY29kZShhKTt0aGlzLmRhdGE9bDt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9aTt0aGlzLmZvbnRNYXRyaXg9YS5mb250TWF0cml4O3RoaXMud2lkdGhzPWEud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWEuZGVmYXVsdFdpZHRoO3RoaXMudG9Vbmljb2RlPWEudG9Vbmljb2RlO3RoaXMuc2VhY01hcD1hLnNlYWNNYXB9Z2V0IHJlbmRlcmVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZW5kZXJlciIsRm9udFJlbmRlcmVyRmFjdG9yeS5jcmVhdGUodGhpcyxqbikpfSNzZShlKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT10aGlzW2FdO3ZvaWQgMCE9PWUmJih0W2FdPWUpfXJldHVybiB0fWV4cG9ydERhdGEoKXtyZXR1cm57YnVmZmVyOmNvbXBpbGVGb250SW5mbyh0aGlzLiNzZShycykpLGNoYXJQcm9jT3BlcmF0b3JMaXN0OnRoaXMuY2hhclByb2NPcGVyYXRvckxpc3QsZXh0cmE6dGhpcy5mb250RXh0cmFQcm9wZXJ0aWVzP3RoaXMuI3NlKGlzKTp2b2lkIDB9fWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3R7bmFtZTp0LHR5cGU6YX09dGhpcztsZXQgbj1ub3JtYWxpemVGb250TmFtZSh0KTtjb25zdCBzPU1uKCkscj1QbigpLGk9ISFzW25dLG89ISghcltuXXx8IXNbcltuXV0pO249c1tuXXx8cltuXXx8bjtjb25zdCBsPVduKClbbl07aWYobCl7aXNOYU4odGhpcy5hc2NlbnQpJiYodGhpcy5hc2NlbnQ9bC5hc2NlbnQvc3MpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9bC5kZXNjZW50L3NzKTtpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1sLmNhcEhlaWdodC9zcyl9dGhpcy5ib2xkPS9ib2xkL2dpLnRlc3Qobik7dGhpcy5pdGFsaWM9L29ibGlxdWV8aXRhbGljL2dpLnRlc3Qobik7dGhpcy5ibGFjaz0vQmxhY2svZy50ZXN0KHQpO2NvbnN0IGY9L05hcnJvdy9nLnRlc3QodCk7dGhpcy5yZW1lYXN1cmU9KCFpfHxmKSYmT2JqZWN0LmtleXModGhpcy53aWR0aHMpLmxlbmd0aD4wO2lmKChpfHxvKSYmIkNJREZvbnRUeXBlMiI9PT1hJiZ0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpKXtjb25zdCBhPWUuY2lkVG9HaWRNYXAsbj1bXTthcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKG4sem4oKSk7L0FyaWFsLT9CbGFjay9pLnRlc3QodCk/YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChuLExuKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChuLFVuKCkpO2lmKGEpe2Zvcihjb25zdCBlIGluIG4pe2NvbnN0IHQ9bltlXTt2b2lkIDAhPT1hW3RdJiYoblsrZV09YVt0XSl9YS5sZW5ndGghPT10aGlzLnRvVW5pY29kZS5sZW5ndGgmJmUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtjb25zdCBzPW5bZV07dm9pZCAwPT09YVtzXSYmKG5bK2VdPXQpfSl9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcHx8dGhpcy50b1VuaWNvZGUuZm9yRWFjaChmdW5jdGlvbihlLHQpe25bK2VdPXR9KTt0aGlzLnRvRm9udENoYXI9bjt0aGlzLnRvVW5pY29kZT1uZXcgVG9Vbmljb2RlTWFwKG4pfWVsc2UgaWYoL1N5bWJvbC9pLnRlc3QobikpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcihobixtbigpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoL0RpbmdiYXRzL2kudGVzdChuKSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKHVuLHBuKCksdGhpcy5kaWZmZXJlbmNlcyk7ZWxzZSBpZihpfHxvKXtjb25zdCBlPWJ1aWxkVG9Gb250Q2hhcih0aGlzLmRlZmF1bHRFbmNvZGluZyxtbigpLHRoaXMuZGlmZmVyZW5jZXMpOyJDSURGb250VHlwZTIiIT09YXx8dGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKXx8dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcHx8dGhpcy50b1VuaWNvZGUuZm9yRWFjaChmdW5jdGlvbih0LGEpe2VbK3RdPWF9KTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9bW4oKSxhPVtdO3RoaXMudG9Vbmljb2RlLmZvckVhY2goKHQsbik9PntpZighdGhpcy5jb21wb3NpdGUpe2NvbnN0IGE9Z2V0VW5pY29kZUZvckdseXBoKHRoaXMuZGlmZmVyZW5jZXNbdF18fHRoaXMuZGVmYXVsdEVuY29kaW5nW3RdLGUpOy0xIT09YSYmKG49YSl9YVsrdF09bn0pO3RoaXMuY29tcG9zaXRlJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiYvVGFob21hfFZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsem4oKSk7dGhpcy50b0ZvbnRDaGFyPWF9YW1lbmRGYWxsYmFja1RvVW5pY29kZShlKTt0aGlzLmxvYWRlZE5hbWU9bi5zcGxpdCgiLSIsMSlbMF19Y2hlY2tBbmRSZXBhaXIoZSx0LGEpe2NvbnN0IG49WyJPUy8yIiwiY21hcCIsImhlYWQiLCJoaGVhIiwiaG10eCIsIm1heHAiLCJuYW1lIiwicG9zdCIsImxvY2EiLCJnbHlmIiwiZnBnbSIsInByZXAiLCJjdnQgIiwiQ0ZGICJdO2Z1bmN0aW9uIHJlYWRUYWJsZXMoZSx0KXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7YVsiT1MvMiJdPW51bGw7YS5jbWFwPW51bGw7YS5oZWFkPW51bGw7YS5oaGVhPW51bGw7YS5obXR4PW51bGw7YS5tYXhwPW51bGw7YS5uYW1lPW51bGw7YS5wb3N0PW51bGw7Zm9yKGxldCBzPTA7czx0O3MrKyl7Y29uc3QgdD1yZWFkVGFibGVFbnRyeShlKTtuLmluY2x1ZGVzKHQudGFnKSYmKDAhPT10Lmxlbmd0aCYmKGFbdC50YWddPXQpKX1yZXR1cm4gYX1mdW5jdGlvbiByZWFkVGFibGVFbnRyeShlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpLGE9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjAscz1lLmdldEludDMyKCk+Pj4wLHI9ZS5wb3M7ZS5wb3M9ZS5zdGFydHx8MDtlLnNraXAobik7Y29uc3QgaT1lLmdldEJ5dGVzKHMpO2UucG9zPXI7aWYoImhlYWQiPT09dCl7aVs4XT1pWzldPWlbMTBdPWlbMTFdPTA7aVsxN118PTMyfXJldHVybnt0YWc6dCxjaGVja3N1bTphLGxlbmd0aDpzLG9mZnNldDpuLGRhdGE6aSx2aWV3Om5ldyBEYXRhVmlldyhpLmJ1ZmZlcixpLmJ5dGVPZmZzZXQsaS5ieXRlTGVuZ3RoKX19ZnVuY3Rpb24gcmVhZE9wZW5UeXBlSGVhZGVyKGUpe3JldHVybnt2ZXJzaW9uOmUuZ2V0U3RyaW5nKDQpLG51bVRhYmxlczplLmdldFVpbnQxNigpLHNlYXJjaFJhbmdlOmUuZ2V0VWludDE2KCksZW50cnlTZWxlY3RvcjplLmdldFVpbnQxNigpLHJhbmdlU2hpZnQ6ZS5nZXRVaW50MTYoKX19ZnVuY3Rpb24gc2FuaXRpemVHbHlwaChlLHQsYSxuLHMscil7Y29uc3QgaT17bGVuZ3RoOjAsc2l6ZU9mSW5zdHJ1Y3Rpb25zOjB9O2lmKHQ8MHx8dD49ZS5sZW5ndGh8fGE+ZS5sZW5ndGh8fGEtdDw9MTIpcmV0dXJuIGk7Y29uc3Qgbz1lLnN1YmFycmF5KHQsYSksbD1zaWduZWRJbnQxNihvWzJdLG9bM10pLGY9c2lnbmVkSW50MTYob1s0XSxvWzVdKSxjPXNpZ25lZEludDE2KG9bNl0sb1s3XSksaD1zaWduZWRJbnQxNihvWzhdLG9bOV0pO2lmKGw+Yyl7d3JpdGVTaWduZWRJbnQxNihvLDIsYyk7d3JpdGVTaWduZWRJbnQxNihvLDYsbCl9aWYoZj5oKXt3cml0ZVNpZ25lZEludDE2KG8sNCxoKTt3cml0ZVNpZ25lZEludDE2KG8sOCxmKX1jb25zdCB1PXNpZ25lZEludDE2KG9bMF0sb1sxXSk7aWYodTwwKXtpZih1PC0xKXJldHVybiBpO24uc2V0KG8scyk7aS5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIGl9bGV0IG0scD0xMCxkPTA7Zm9yKG09MDttPHU7bSsrKXtkPShvW3BdPDw4fG9bcCsxXSkrMTtwKz0yfWNvbnN0IGc9cCxiPW9bcF08PDh8b1twKzFdO2kuc2l6ZU9mSW5zdHJ1Y3Rpb25zPWI7cCs9MitiO2NvbnN0IHc9cDtsZXQgaj0wO2ZvcihtPTA7bTxkO20rKyl7Y29uc3QgZT1vW3ArK107MTkyJmUmJihvW3AtMV09NjMmZSk7bGV0IHQ9MjsyJmU/dD0xOjE2JmUmJih0PTApO2xldCBhPTI7NCZlP2E9MTozMiZlJiYoYT0wKTtjb25zdCBuPXQrYTtqKz1uO2lmKDgmZSl7Y29uc3QgZT1vW3ArK107MD09PWUmJihvW3AtMV1ePTgpO20rPWU7ais9ZSpufX1pZigwPT09ailyZXR1cm4gaTtsZXQgaz1wK2o7aWYoaz5vLmxlbmd0aClyZXR1cm4gaTtpZighciYmYj4wKXtuLnNldChvLnN1YmFycmF5KDAsZykscyk7bi5zZXQoWzAsMF0scytnKTtuLnNldChvLnN1YmFycmF5KHcsaykscytnKzIpO2stPWI7by5sZW5ndGgtaz4zJiYoaz1rKzMmLTQpO2kubGVuZ3RoPWs7cmV0dXJuIGl9aWYoby5sZW5ndGgtaz4zKXtrPWsrMyYtNDtuLnNldChvLnN1YmFycmF5KDAsaykscyk7aS5sZW5ndGg9aztyZXR1cm4gaX1uLnNldChvLHMpO2kubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBpfWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgYT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9YTtjb25zdCBuPVtbXSxbXV0scz1bXSxyPWUubGVuZ3RoLGk9YStyO2lmKDAhPT10LmdldFVpbnQxNigpfHxyPDYpcmV0dXJuW24sc107Y29uc3Qgbz10LmdldFVpbnQxNigpLGw9dC5nZXRVaW50MTYoKTtsZXQgZixjO2ZvcihmPTA7ZjxvJiZ0LnBvcysxMjw9aTtmKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KGlzTWFjTmFtZVJlY29yZChlKXx8aXNXaW5OYW1lUmVjb3JkKGUpKSYmcy5wdXNoKGUpfWZvcihmPTAsYz1zLmxlbmd0aDtmPGM7ZisrKXtjb25zdCBlPXNbZl07aWYoZS5sZW5ndGg8PTApY29udGludWU7Y29uc3Qgcj1hK2wrZS5vZmZzZXQ7aWYocitlLmxlbmd0aD5pKWNvbnRpbnVlO3QucG9zPXI7Y29uc3Qgbz1lLm5hbWU7aWYoZS5lbmNvZGluZyl7bGV0IGE9IiI7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bis9MilhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDE2KCkpO25bMV1bb109YX1lbHNlIG5bMF1bb109dC5nZXRTdHJpbmcoZS5sZW5ndGgpfXJldHVybltuLHNdfWNvbnN0IHM9WzAsMCwwLDAsMCwwLDAsMCwtMiwtMiwtMiwtMiwwLDAsLTIsLTUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsLTEsLTEsMSwtMSwtOTk5LDAsMSwwLC0xLC0yLDAsLTEsLTIsLTEsLTEsMCwtMSwtMSwwLDAsLTk5OSwtOTk5LC0xLC0xLC0xLC0xLC0yLC05OTksLTIsLTIsLTk5OSwwLC0yLC0yLDAsMCwtMiwwLC0yLDAsMCwwLC0yLC0xLC0xLDEsMSwwLDAsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsMCwtOTk5LC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0yLC05OTksLTk5OSwtOTk5LC05OTksLTk5OSwtMSwtMSwtMiwtMiwwLDAsMCwwLC0xLC0xLC05OTksLTIsLTIsMCwwLC0xLC0yLC0yLDAsMCwwLC0xLC0xLC0xLC0yXTtmdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbShlLHQpe2xldCBhLG4scixpLG8sbD1lLmRhdGEsZj0wLGM9MCxoPTA7Y29uc3QgdT1bXSxtPVtdLHA9W107bGV0IGQ9dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMsZz0hMSxiPTAsdz0wO2ZvcihsZXQgZT1sLmxlbmd0aDtmPGU7KXtjb25zdCBlPWxbZisrXTtpZig2ND09PWUpe249bFtmKytdO2lmKGd8fHcpZis9bjtlbHNlIGZvcihhPTA7YTxuO2ErKyl1LnB1c2gobFtmKytdKX1lbHNlIGlmKDY1PT09ZSl7bj1sW2YrK107aWYoZ3x8dylmKz0yKm47ZWxzZSBmb3IoYT0wO2E8bjthKyspe3I9bFtmKytdO3UucHVzaChzaWduZWRJbnQxNihyLGxbZisrXSkpfX1lbHNlIGlmKDE3Nj09KDI0OCZlKSl7bj1lLTE3NisxO2lmKGd8fHcpZis9bjtlbHNlIGZvcihhPTA7YTxuO2ErKyl1LnB1c2gobFtmKytdKX1lbHNlIGlmKDE4ND09KDI0OCZlKSl7bj1lLTE4NCsxO2lmKGd8fHcpZis9MipuO2Vsc2UgZm9yKGE9MDthPG47YSsrKXtyPWxbZisrXTt1LnB1c2goc2lnbmVkSW50MTYocixsW2YrK10pKX19ZWxzZSBpZig0MyE9PWV8fGQpaWYoNDQhPT1lfHxkKXtpZig0NT09PWUpaWYoZyl7Zz0hMTtjPWZ9ZWxzZXtvPW0ucG9wKCk7aWYoIW8pe3dhcm4oIlRUOiBFTkRGIGJhZCBzdGFjayIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59aT1wLnBvcCgpO2w9by5kYXRhO2Y9by5pO3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbaV09dS5sZW5ndGgtby5zdGFja1RvcH1lbHNlIGlmKDEzNz09PWUpe2lmKGd8fHcpe3dhcm4oIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKTtkPSEwfWc9ITA7aD1mfWVsc2UgaWYoODg9PT1lKSsrYjtlbHNlIGlmKDI3PT09ZSl3PWI7ZWxzZSBpZig4OT09PWUpe3c9PT1iJiYodz0wKTstLWJ9ZWxzZSBpZigyOD09PWUmJiFnJiYhdyl7Y29uc3QgZT11LmF0KC0xKTtlPjAmJihmKz1lLTEpfX1lbHNle2lmKGd8fHcpe3dhcm4oIlRUOiBuZXN0ZWQgRkRFRnMgbm90IGFsbG93ZWQiKTtkPSEwfWc9ITA7aD1mO2k9dS5wb3AoKTt0LmZ1bmN0aW9uc0RlZmluZWRbaV09e2RhdGE6bCxpOmZ9fWVsc2UgaWYoIWcmJiF3KXtpPXUuYXQoLTEpO2lmKGlzTmFOKGkpKWluZm8oIlRUOiBDQUxMIGVtcHR5IHN0YWNrIChvciBpbnZhbGlkIGVudHJ5KS4iKTtlbHNle3QuZnVuY3Rpb25zVXNlZFtpXT0hMDtpZihpIGluIHQuZnVuY3Rpb25zU3RhY2tEZWx0YXMpe2NvbnN0IGU9dS5sZW5ndGgrdC5mdW5jdGlvbnNTdGFja0RlbHRhc1tpXTtpZihlPDApe3dhcm4oIlRUOiBDQUxMIGludmFsaWQgZnVuY3Rpb25zIHN0YWNrIGRlbHRhLiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59dS5sZW5ndGg9ZX1lbHNlIGlmKGkgaW4gdC5mdW5jdGlvbnNEZWZpbmVkJiYhcC5pbmNsdWRlcyhpKSl7bS5wdXNoKHtkYXRhOmwsaTpmLHN0YWNrVG9wOnUubGVuZ3RoLTF9KTtwLnB1c2goaSk7bz10LmZ1bmN0aW9uc0RlZmluZWRbaV07aWYoIW8pe3dhcm4oIlRUOiBDQUxMIG5vbi1leGlzdGVudCBmdW5jdGlvbiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59bD1vLmRhdGE7Zj1vLml9fX1pZighZyYmIXcpe2xldCB0PTA7ZTw9MTQyP3Q9c1tlXTplPj0xOTImJmU8PTIyMz90PS0xOmU+PTIyNCYmKHQ9LTIpO2lmKGU+PTExMyYmZTw9MTE3KXtuPXUucG9wKCk7aXNOYU4obil8fCh0PTIqLW4pfWZvcig7dDwwJiZ1Lmxlbmd0aD4wOyl7dS5wb3AoKTt0Kyt9Zm9yKDt0PjA7KXt1LnB1c2goTmFOKTt0LS19fX10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucz1kO2NvbnN0IGo9W2xdO2Y+bC5sZW5ndGgmJmoucHVzaChuZXcgVWludDhBcnJheShmLWwubGVuZ3RoKSk7aWYoaD5jKXt3YXJuKCJUVDogY29tcGxlbWVudGluZyBhIG1pc3NpbmcgZnVuY3Rpb24gdGFpbCIpO2oucHVzaChuZXcgVWludDhBcnJheShbMzQsNDVdKSl9IWZ1bmN0aW9uIGZvbGRUVFRhYmxlKGUsdCl7aWYodC5sZW5ndGg+MSl7bGV0IGEsbixzPTA7Zm9yKGE9MCxuPXQubGVuZ3RoO2E8bjthKyspcys9dFthXS5sZW5ndGg7cz1zKzMmLTQ7Y29uc3Qgcj1uZXcgVWludDhBcnJheShzKTtsZXQgaT0wO2ZvcihhPTAsbj10Lmxlbmd0aDthPG47YSsrKXtyLnNldCh0W2FdLGkpO2krPXRbYV0ubGVuZ3RofWUuZGF0YT1yO2UubGVuZ3RoPXN9fShlLGopfWxldCByLGk7aWYoaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKHQ9bmV3IFN0cmVhbShuZXcgVWludDhBcnJheSh0LmdldEJ5dGVzKCkpKSkpe2NvbnN0IGU9ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkRhdGEoZSx0KXtjb25zdHtudW1Gb250czphLG9mZnNldFRhYmxlOm59PWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25IZWFkZXIoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KTthc3NlcnQoInR0Y2YiPT09dCwiTXVzdCBiZSBhIFRydWVUeXBlIENvbGxlY3Rpb24gZm9udC4iKTtjb25zdCBhPWUuZ2V0VWludDE2KCksbj1lLmdldFVpbnQxNigpLHM9ZS5nZXRJbnQzMigpPj4+MCxyPVtdO2ZvcihsZXQgdD0wO3Q8czt0Kyspci5wdXNoKGUuZ2V0SW50MzIoKT4+PjApO2NvbnN0IGk9e3R0Y1RhZzp0LG1ham9yVmVyc2lvbjphLG1pbm9yVmVyc2lvbjpuLG51bUZvbnRzOnMsb2Zmc2V0VGFibGU6cn07c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gaTtjYXNlIDI6aS5kc2lnVGFnPWUuZ2V0SW50MzIoKT4+PjA7aS5kc2lnTGVuZ3RoPWUuZ2V0SW50MzIoKT4+PjA7aS5kc2lnT2Zmc2V0PWUuZ2V0SW50MzIoKT4+PjA7cmV0dXJuIGl9dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFRydWVUeXBlIENvbGxlY3Rpb24gbWFqb3JWZXJzaW9uOiAke2F9LmApfShlKSxzPXQuc3BsaXQoIisiKTtsZXQgcjtmb3IobGV0IGk9MDtpPGE7aSsrKXtlLnBvcz0oZS5zdGFydHx8MCkrbltpXTtjb25zdCBhPXJlYWRPcGVuVHlwZUhlYWRlcihlKSxvPXJlYWRUYWJsZXMoZSxhLm51bVRhYmxlcyk7aWYoIW8ubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1RydWVUeXBlIENvbGxlY3Rpb24gZm9udCBtdXN0IGNvbnRhaW4gYSAibmFtZSIgdGFibGUuJyk7Y29uc3RbbF09cmVhZE5hbWVUYWJsZShvLm5hbWUpO2ZvcihsZXQgZT0wLG49bC5sZW5ndGg7ZTxuO2UrKylmb3IobGV0IG49MCxpPWxbZV0ubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9bFtlXVtuXT8ucmVwbGFjZUFsbCgvXHMvZywiIik7aWYoaSl7aWYoaT09PXQpcmV0dXJue2hlYWRlcjphLHRhYmxlczpvfTtpZighKHMubGVuZ3RoPDIpKWZvcihjb25zdCBlIG9mIHMpaT09PWUmJihyPXtuYW1lOmUsaGVhZGVyOmEsdGFibGVzOm99KX19fWlmKHIpe3dhcm4oYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udCwgZmFsbGluZyBiYWNrIHRvICIke3IubmFtZX0iIGZvbnQgaW5zdGVhZC5gKTtyZXR1cm57aGVhZGVyOnIuaGVhZGVyLHRhYmxlczpyLnRhYmxlc319dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBUcnVlVHlwZSBDb2xsZWN0aW9uIGRvZXMgbm90IGNvbnRhaW4gIiR7dH0iIGZvbnQuYCl9KHQsdGhpcy5uYW1lKTtyPWUuaGVhZGVyO2k9ZS50YWJsZXN9ZWxzZXtyPXJlYWRPcGVuVHlwZUhlYWRlcih0KTtpPXJlYWRUYWJsZXModCxyLm51bVRhYmxlcyl9Y29uc3Qgbz0haVsiQ0ZGICJdO2lmKG8pe2lmKCFpLmxvY2EpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAibG9jYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoIWkuZ2x5Zil7d2FybignUmVxdWlyZWQgImdseWYiIHRhYmxlIGlzIG5vdCBmb3VuZCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtpLmdseWY9e3RhZzoiZ2x5ZiIsZGF0YTpuZXcgVWludDhBcnJheSgwKX19dGhpcy5pc09wZW5UeXBlPSExfWVsc2V7aWYoIk9UVE8iPT09ci52ZXJzaW9uJiYhYS5jb21wb3NpdGV8fCFpLmhlYWR8fCFpLmhoZWF8fCFpLm1heHB8fCFpLnBvc3QpcmV0dXJuIHRoaXMuY29udmVydChlLG5ldyBDRkZGb250KG5ldyBTdHJlYW0oaVsiQ0ZGICJdLmRhdGEpLGEpLGEpO2RlbGV0ZSBpLmdseWY7ZGVsZXRlIGkubG9jYTtkZWxldGUgaS5mcGdtO2RlbGV0ZSBpLnByZXA7ZGVsZXRlIGlbImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIWkubWF4cCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTtsZXQgbDtpZighbyl0cnl7Y29uc3QgZT1uZXcgQ0ZGUGFyc2VyKG5ldyBTdHJlYW0oaVsiQ0ZGICJdLmRhdGEpLGEsam4pLnBhcnNlKCk7ZS5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgdD1uZXcgQ0ZGQ29tcGlsZXIoZSk7aVsiQ0ZGICJdLmRhdGE9dC5jb21waWxlKCk7bD1lLmNoYXJTdHJpbmdDb3VudH1jYXRjaHt3YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrYS5sb2FkZWROYW1lKX10LnBvcz0odC5zdGFydHx8MCkraS5tYXhwLm9mZnNldDtsZXQgZj10LmdldEludDMyKCk7Y29uc3QgYz1sPz90LmdldFVpbnQxNigpO2lmKDIwNDgwPT09ZiYmNiE9PWkubWF4cC5sZW5ndGgpe2kubWF4cC5kYXRhPWkubWF4cC5kYXRhLnN1YmFycmF5KDAsNik7aS5tYXhwLmxlbmd0aD02fWlmKDY1NTM2IT09ZiYmMjA0ODAhPT1mKXtpZig2PT09aS5tYXhwLmxlbmd0aClmPTIwNDgwO2Vsc2V7aWYoIShpLm1heHAubGVuZ3RoPj0zMikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCcibWF4cCIgdGFibGUgaGFzIGEgd3JvbmcgdmVyc2lvbiBudW1iZXInKTtmPTY1NTM2fSFmdW5jdGlvbiB3cml0ZVVpbnQzMihlLHQsYSl7ZVt0KzNdPTI1NSZhO2VbdCsyXT1hPj4+ODtlW3QrMV09YT4+PjE2O2VbdF09YT4+PjI0fShpLm1heHAuZGF0YSwwLGYpfWxldCBoPWludDE2KGkuaGVhZC5kYXRhWzUwXSxpLmhlYWQuZGF0YVs1MV0pO2lmKGkubG9jYSl7Y29uc3QgZT1oPzQqKGMrMSk6MiooYysxKTtpZihpLmxvY2EubGVuZ3RoIT09ZSl7d2FybigiSW5jb3JyZWN0ICdsb2NhJyB0YWJsZSBsZW5ndGggLS0gYXR0ZW1wdGluZyB0byBmaXggaXQuIik7Y29uc3QgYT1PYmplY3QudmFsdWVzKGkpLmZpbHRlcihCb29sZWFuKS5zb3J0KChlLHQpPT5lLm9mZnNldC10Lm9mZnNldCksbj1hLmluZGV4T2YoaS5sb2NhKSxzPWFbbisxXXx8bnVsbDtpZihzJiZpLmxvY2Eub2Zmc2V0K2U8cy5vZmZzZXQpe2NvbnN0IGE9dC5wb3M7dC5wb3M9dC5zdGFydHx8MDt0LnNraXAoaS5sb2NhLm9mZnNldCk7aS5sb2NhLmRhdGE9dC5nZXRCeXRlcyhlKTtpLmxvY2EubGVuZ3RoPWU7dC5wb3M9YX19fWlmKGEuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT1jJiZvKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09YSx0PW5ldyBHbHlmVGFibGUoe2dseWZUYWJsZTppLmdseWYuZGF0YSxpc0dseXBoTG9jYXRpb25zTG9uZzpoLGxvY2FUYWJsZTppLmxvY2EuZGF0YSxudW1HbHlwaHM6Y30pO3Quc2NhbGUoZSk7Y29uc3R7Z2x5ZjpuLGxvY2E6cyxpc0xvY2F0aW9uTG9uZzpyfT10LndyaXRlKCk7aS5nbHlmLmRhdGE9bjtpLmxvY2EuZGF0YT1zO2lmKHIhPT0hIWgpe2kuaGVhZC5kYXRhWzUwXT0wO2g9aS5oZWFkLmRhdGFbNTFdPXI/MTowfWNvbnN0IG89aS5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxjO3QrKyl7Y29uc3QgYT00KnQsbj1NYXRoLnJvdW5kKGVbdF0qaW50MTYob1thXSxvW2ErMV0pKTtvW2FdPW4+PjgmMjU1O29bYSsxXT0yNTUmbjt3cml0ZVNpZ25lZEludDE2KG8sYSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihvW2ErMl0sb1thKzNdKSkpfX1sZXQgdT1jKzEsbT0hMDtpZih1PjY1NTM1KXttPSExO3U9Yzt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgcD0wLGQ9MDtpZihmPj02NTUzNiYmaS5tYXhwLmxlbmd0aD49MzIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7aS5tYXhwLmRhdGFbMTRdPTA7aS5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7cD10LmdldFVpbnQxNigpO3QucG9zKz00O2Q9dC5nZXRVaW50MTYoKX1pLm1heHAuZGF0YVs0XT11Pj44O2kubWF4cC5kYXRhWzVdPTI1NSZ1O2NvbnN0IGc9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxhLG4pe2NvbnN0IHM9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxzKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LHMpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpe3dhcm4oIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGE9MCxuPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7YTxuO2ErKyl7aWYoYT50KXt3YXJuKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFthXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFthXSl7d2FybigiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KHMsbik7aWYoYSYmMSZhLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShhLmxlbmd0aCsxKTtlLnNldChhLmRhdGEpO2EuZGF0YT1lfXJldHVybiBzLmhpbnRzVmFsaWR9KGkuZnBnbSxpLnByZXAsaVsiY3Z0ICJdLHApO2lmKCFnKXtkZWxldGUgaS5mcGdtO2RlbGV0ZSBpLnByZXA7ZGVsZXRlIGlbImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxhLG4scyxyKXtpZighdCl7YSYmKGEuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IGk9ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgbz1lLmdldFVpbnQxNigpO2lmKDAhPT1pKXtpZighKDImaW50MTYobi5kYXRhWzQ0XSxuLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKG8+cyl7aW5mbyhgVGhlIG51bU9mTWV0cmljcyAoJHtvfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtzfSkuYCk7bz1zO3QuZGF0YVszNF09KDY1MjgwJm8pPj44O3QuZGF0YVszNV09MjU1Jm99Y29uc3QgbD1zLW8tKGEubGVuZ3RoLTQqbz4+MSk7aWYobD4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzIqbCk7ZS5zZXQoYS5kYXRhKTtpZihyKXtlW2EubGVuZ3RoXT1hLmRhdGFbMl07ZVthLmxlbmd0aCsxXT1hLmRhdGFbM119YS5kYXRhPWV9fSh0LGkuaGhlYSxpLmhtdHgsaS5oZWFkLHUsbSk7aWYoIWkuaGVhZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24gc2FuaXRpemVIZWFkKGUsdCxhKXtjb25zdHtkYXRhOm4sdmlldzpzfT1lLHI9cy5nZXRJbnQzMigwKTtpZihyPj4xNiE9MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIrcik7cy5zZXRJbnQzMigwLDY1NTM2KX1jb25zdCBpPXNpZ25lZEludDE2KG5bNTBdLG5bNTFdKTtpZihpPDB8fGk+MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIraSk7Y29uc3QgZT10KzE7aWYoYT09PWU8PDEpe25bNTBdPTA7bls1MV09MH1lbHNle2lmKGEhPT1lPDwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK2kpO25bNTBdPTA7bls1MV09MX19fShpLmhlYWQsYyxvP2kubG9jYS5sZW5ndGg6MCk7bGV0IGI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihvKXtjb25zdCBlPWZ1bmN0aW9uIHNhbml0aXplR2x5cGhMb2NhdGlvbnMoZSx0LGEsbixzLHIsaSl7bGV0IG8sbCxmO2lmKG4pe289NDtsPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhlLHQpe3JldHVybiBlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM119O2Y9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGVMb25nKGUsdCxhKXtlW3RdPWE+Pj4yNCYyNTU7ZVt0KzFdPWE+PjE2JjI1NTtlW3QrMl09YT4+OCYyNTU7ZVt0KzNdPTI1NSZhfX1lbHNle289MjtsPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfTtmPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlKGUsdCxhKXtlW3RdPWE+PjkmMjU1O2VbdCsxXT1hPj4xJjI1NX19Y29uc3QgYz1yP2ErMTphLGg9byooMStjKSx1PW5ldyBVaW50OEFycmF5KGgpO3Uuc2V0KGUuZGF0YS5zdWJhcnJheSgwLGgpKTtlLmRhdGE9dTtjb25zdCBtPXQuZGF0YSxwPW0ubGVuZ3RoLGQ9bmV3IFVpbnQ4QXJyYXkocCk7bGV0IGcsYjtjb25zdCB3PVtdO2ZvcihnPTAsYj0wO2c8YSsxO2crKyxiKz1vKXtsZXQgZT1sKHUsYik7ZT5wJiYoZT1wKTt3LnB1c2goe2luZGV4Omcsb2Zmc2V0OmUsZW5kT2Zmc2V0OjB9KX13LnNvcnQoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KTtmb3IoZz0wO2c8YTtnKyspd1tnXS5lbmRPZmZzZXQ9d1tnKzFdLm9mZnNldDt3LnNvcnQoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCk7Zm9yKGc9MDtnPGE7ZysrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09d1tnXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgYT13W2crMV0ub2Zmc2V0O2lmKDAhPT1hKXt3W2ddLmVuZE9mZnNldD1hO2JyZWFrfX1jb25zdCBqPXcuYXQoLTIpOzAhPT1qLm9mZnNldCYmMD09PWouZW5kT2Zmc2V0JiYoai5lbmRPZmZzZXQ9cCk7Y29uc3Qgaz1PYmplY3QuY3JlYXRlKG51bGwpO2xldCB5PTA7Zih1LDAseSk7Zm9yKGc9MCxiPW87ZzxhO2crKyxiKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgobSx3W2ddLm9mZnNldCx3W2ddLmVuZE9mZnNldCxkLHkscyksdD1lLmxlbmd0aDswPT09dCYmKGtbZ109ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPmkmJihpPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTt5Kz10O2YodSxiLHkpfWlmKDA9PT15KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihnPTAsYj1vO2c8YztnKyssYis9bylmKHUsYixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihyKXtjb25zdCBhPWwodSxvKTtpZihkLmxlbmd0aD5hK3kpdC5kYXRhPWQuc3ViYXJyYXkoMCxhK3kpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGEreSk7dC5kYXRhLnNldChkLnN1YmFycmF5KDAseSkpfXQuZGF0YS5zZXQoZC5zdWJhcnJheSgwLGEpLHkpO2YoZS5kYXRhLHUubGVuZ3RoLW8seSthKX1lbHNlIHQuZGF0YT1kLnN1YmFycmF5KDAseSk7cmV0dXJue21pc3NpbmdHbHlwaHM6ayxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6aX19KGkubG9jYSxpLmdseWYsYyxoLGcsbSxkKTtiPWUubWlzc2luZ0dseXBocztpZihmPj02NTUzNiYmaS5tYXhwLmxlbmd0aD49MzIpe2kubWF4cC5kYXRhWzI2XT1lLm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtpLm1heHAuZGF0YVsyN109MjU1JmUubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighaS5oaGVhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKDA9PT1pLmhoZWEuZGF0YVsxMF0mJjA9PT1pLmhoZWEuZGF0YVsxMV0pe2kuaGhlYS5kYXRhWzEwXT0yNTU7aS5oaGVhLmRhdGFbMTFdPTI1NX1jb25zdCB3PXt1bml0c1BlckVtOmludDE2KGkuaGVhZC5kYXRhWzE4XSxpLmhlYWQuZGF0YVsxOV0pLHlNYXg6c2lnbmVkSW50MTYoaS5oZWFkLmRhdGFbNDJdLGkuaGVhZC5kYXRhWzQzXSkseU1pbjpzaWduZWRJbnQxNihpLmhlYWQuZGF0YVszOF0saS5oZWFkLmRhdGFbMzldKSxhc2NlbnQ6c2lnbmVkSW50MTYoaS5oaGVhLmRhdGFbNF0saS5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6c2lnbmVkSW50MTYoaS5oaGVhLmRhdGFbNl0saS5oaGVhLmRhdGFbN10pLGxpbmVHYXA6c2lnbmVkSW50MTYoaS5oaGVhLmRhdGFbOF0saS5oaGVhLmRhdGFbOV0pfTt0aGlzLmFzY2VudD13LmFzY2VudC93LnVuaXRzUGVyRW07dGhpcy5kZXNjZW50PXcuZGVzY2VudC93LnVuaXRzUGVyRW07dGhpcy5saW5lR2FwPXcubGluZUdhcC93LnVuaXRzUGVyRW07aWYodGhpcy5jc3NGb250SW5mbz8ubGluZUhlaWdodCl7dGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0O3RoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcH1lbHNlIHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQrdGhpcy5saW5lR2FwO2kucG9zdCYmZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShlLGEsbil7Y29uc3Qgcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cztjb25zdCByPXMrZS5sZW5ndGgsaT10LmdldEludDMyKCk7dC5za2lwKDI4KTtsZXQgbyxsLGY9ITA7c3dpdGNoKGkpe2Nhc2UgNjU1MzY6bz1TbjticmVhaztjYXNlIDEzMTA3Mjpjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZSE9PW4pe2Y9ITE7YnJlYWt9Y29uc3Qgcz1bXTtmb3IobD0wO2w8ZTsrK2wpe2NvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlPj0zMjc2OCl7Zj0hMTticmVha31zLnB1c2goZSl9aWYoIWYpYnJlYWs7Y29uc3QgYz1bXTtmb3IoO3QucG9zPHI7KXtjb25zdCBlPXQuZ2V0Qnl0ZSgpLGE9dC5nZXRTdHJpbmcoZSk7Yy5wdXNoKGEpfW89W107Zm9yKGw9MDtsPGU7KytsKXtjb25zdCBlPXNbbF07ZTwyNTg/by5wdXNoKFNuW2VdKTpvLnB1c2goY1tlLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6d2FybigiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIitpKTtmPSExO2EuZGVmYXVsdEVuY29kaW5nJiYobz1hLmRlZmF1bHRFbmNvZGluZyl9YS5nbHlwaE5hbWVzPW87cmV0dXJuIGZ9KGkucG9zdCxhLGMpO2kucG9zdD17dGFnOiJwb3N0IixkYXRhOmNyZWF0ZVBvc3RUYWJsZShhKX07Y29uc3Qgaj1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGhhc0dseXBoKGUpe3JldHVybiFiW2VdfWlmKGEuY29tcG9zaXRlKXtjb25zdCBlPWEuY2lkVG9HaWRNYXB8fFtdLHQ9MD09PWUubGVuZ3RoO2EuY01hcC5mb3JFYWNoKGZ1bmN0aW9uKGEsbil7InN0cmluZyI9PXR5cGVvZiBuJiYobj1jb252ZXJ0Q2lkU3RyaW5nKGEsbiwhMCkpO2lmKG4+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7bGV0IHM9LTE7dD9zPW46dm9pZCAwIT09ZVtuXSYmKHM9ZVtuXSk7cz49MCYmczxjJiZoYXNHbHlwaChzKSYmKGpbYV09cyl9KX1lbHNle2NvbnN0IGU9ZnVuY3Rpb24gcmVhZENtYXBUYWJsZShlLHQsYSxuKXtpZighZSl7d2FybigiTm8gY21hcCB0YWJsZSBhdmFpbGFibGUuIik7cmV0dXJue3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9fWxldCBzLHI9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXI7dC5za2lwKDIpO2NvbnN0IGk9dC5nZXRVaW50MTYoKTtsZXQgbyxsPSExO2ZvcihsZXQgZT0wO2U8aTtlKyspe2NvbnN0IHM9dC5nZXRVaW50MTYoKSxyPXQuZ2V0VWludDE2KCksZj10LmdldEludDMyKCk+Pj4wO2xldCBjPSExO2lmKG8/LnBsYXRmb3JtSWQhPT1zfHxvPy5lbmNvZGluZ0lkIT09cil7aWYoMCE9PXN8fDAhPT1yJiYxIT09ciYmMyE9PXIpaWYoMT09PXMmJjA9PT1yKWM9ITA7ZWxzZSBpZigzIT09c3x8MSE9PXJ8fCFuJiZvKXtpZihhJiYzPT09cyYmMD09PXIpe2M9ITA7bGV0IGE9ITA7aWYoZTxpLTEpe2NvbnN0IGU9dC5wZWVrQnl0ZXMoMik7aW50MTYoZVswXSxlWzFdKTxzJiYoYT0hMSl9YSYmKGw9ITApfX1lbHNle2M9ITA7YXx8KGw9ITApfWVsc2UgYz0hMDtjJiYobz17cGxhdGZvcm1JZDpzLGVuY29kaW5nSWQ6cixvZmZzZXQ6Zn0pO2lmKGwpYnJlYWt9fW8mJih0LnBvcz1yK28ub2Zmc2V0KTtpZighb3x8LTE9PT10LnBlZWtCeXRlKCkpe3dhcm4oIkNvdWxkIG5vdCBmaW5kIGEgcHJlZmVycmVkIGNtYXAgdGFibGUuIik7cmV0dXJue3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9fWNvbnN0IGY9dC5nZXRVaW50MTYoKTtsZXQgYz0hMTtjb25zdCBoPVtdO2xldCB1LG07aWYoMD09PWYpe3Quc2tpcCg0KTtmb3IodT0wO3U8MjU2O3UrKyl7Y29uc3QgZT10LmdldEJ5dGUoKTtlJiZoLnB1c2goe2NoYXJDb2RlOnUsZ2x5cGhJZDplfSl9Yz0hMH1lbHNlIGlmKDI9PT1mKXt0LnNraXAoNCk7Y29uc3QgZT1bXTtsZXQgYT0wO2ZvcihsZXQgbj0wO248MjU2O24rKyl7Y29uc3Qgbj10LmdldFVpbnQxNigpPj4zO2UucHVzaChuKTthPU1hdGgubWF4KG4sYSl9Y29uc3Qgbj1bXTtmb3IobGV0IGU9MDtlPD1hO2UrKyluLnB1c2goe2ZpcnN0Q29kZTp0LmdldFVpbnQxNigpLGVudHJ5Q291bnQ6dC5nZXRVaW50MTYoKSxpZERlbHRhOnNpZ25lZEludDE2KHQuZ2V0Qnl0ZSgpLHQuZ2V0Qnl0ZSgpKSxpZFJhbmdlUG9zOnQucG9zK3QuZ2V0VWludDE2KCl9KTtmb3IobGV0IGE9MDthPDI1NjthKyspaWYoMD09PWVbYV0pe3QucG9zPW5bMF0uaWRSYW5nZVBvcysyKmE7bT10LmdldFVpbnQxNigpO2gucHVzaCh7Y2hhckNvZGU6YSxnbHlwaElkOm19KX1lbHNle2NvbnN0IHM9bltlW2FdXTtmb3IodT0wO3U8cy5lbnRyeUNvdW50O3UrKyl7Y29uc3QgZT0oYTw8OCkrdStzLmZpcnN0Q29kZTt0LnBvcz1zLmlkUmFuZ2VQb3MrMip1O209dC5nZXRVaW50MTYoKTswIT09bSYmKG09KG0rcy5pZERlbHRhKSU2NTUzNik7aC5wdXNoKHtjaGFyQ29kZTplLGdseXBoSWQ6bX0pfX19ZWxzZSBpZig0PT09Zil7dC5za2lwKDQpO2NvbnN0IGU9dC5nZXRVaW50MTYoKT4+MTt0LnNraXAoNik7Y29uc3QgYT1bXTtsZXQgbjtmb3Iobj0wO248ZTtuKyspYS5wdXNoKHtlbmQ6dC5nZXRVaW50MTYoKX0pO3Quc2tpcCgyKTtmb3Iobj0wO248ZTtuKyspYVtuXS5zdGFydD10LmdldFVpbnQxNigpO2ZvcihuPTA7bjxlO24rKylhW25dLmRlbHRhPXQuZ2V0VWludDE2KCk7bGV0IGksbz0wO2ZvcihuPTA7bjxlO24rKyl7cz1hW25dO2NvbnN0IHI9dC5nZXRVaW50MTYoKTtpZihyKXtpPShyPj4xKS0oZS1uKTtzLm9mZnNldEluZGV4PWk7bz1NYXRoLm1heChvLGkrcy5lbmQtcy5zdGFydCsxKX1lbHNlIHMub2Zmc2V0SW5kZXg9LTF9Y29uc3QgbD1bXTtmb3IodT0wO3U8bzt1KyspbC5wdXNoKHQuZ2V0VWludDE2KCkpO2ZvcihuPTA7bjxlO24rKyl7cz1hW25dO3I9cy5zdGFydDtjb25zdCBlPXMuZW5kLHQ9cy5kZWx0YTtpPXMub2Zmc2V0SW5kZXg7Zm9yKHU9cjt1PD1lO3UrKylpZig2NTUzNSE9PXUpe209aTwwP3U6bFtpK3Utcl07bT1tK3QmNjU1MzU7aC5wdXNoKHtjaGFyQ29kZTp1LGdseXBoSWQ6bX0pfX19ZWxzZSBpZig2PT09Zil7dC5za2lwKDQpO2NvbnN0IGU9dC5nZXRVaW50MTYoKSxhPXQuZ2V0VWludDE2KCk7Zm9yKHU9MDt1PGE7dSsrKXttPXQuZ2V0VWludDE2KCk7Y29uc3QgYT1lK3U7aC5wdXNoKHtjaGFyQ29kZTphLGdseXBoSWQ6bX0pfX1lbHNle2lmKDEyIT09Zil7d2FybigiY21hcCB0YWJsZSBoYXMgdW5zdXBwb3J0ZWQgZm9ybWF0OiAiK2YpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX17dC5za2lwKDEwKTtjb25zdCBlPXQuZ2V0SW50MzIoKT4+PjA7Zm9yKHU9MDt1PGU7dSsrKXtjb25zdCBlPXQuZ2V0SW50MzIoKT4+PjAsYT10LmdldEludDMyKCk+Pj4wO2xldCBuPXQuZ2V0SW50MzIoKT4+PjA7Zm9yKGxldCB0PWU7dDw9YTt0KyspaC5wdXNoKHtjaGFyQ29kZTp0LGdseXBoSWQ6bisrfSl9fX1oLnNvcnQoKGUsdCk9PmUuY2hhckNvZGUtdC5jaGFyQ29kZSk7Y29uc3QgcD1bXSxkPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgaCl7Y29uc3R7Y2hhckNvZGU6dH09ZTtpZighZC5oYXModCkpe2QuYWRkKHQpO3AucHVzaChlKX19cmV0dXJue3BsYXRmb3JtSWQ6by5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6by5lbmNvZGluZ0lkLG1hcHBpbmdzOnAsaGFzU2hvcnRDbWFwOmN9fShpLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGEuaGFzRW5jb2RpbmcpLG49ZS5wbGF0Zm9ybUlkLHM9ZS5lbmNvZGluZ0lkLHI9ZS5tYXBwaW5ncztsZXQgbz1bXSxsPSExOyFhLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1hLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhhLmJhc2VFbmNvZGluZ05hbWUpKTtpZihhLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1uJiYxPT09c3x8MT09PW4mJjA9PT1zKSl7Y29uc3QgZT1tbigpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IGk7aT12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOmZuW3RdO2lmKCFpKWNvbnRpbnVlO2NvbnN0IGw9cmVjb3ZlckdseXBoTmFtZShpLGUpO2xldCBmOzM9PT1uJiYxPT09cz9mPWVbbF06MT09PW4mJjA9PT1zJiYoZj1sbi5pbmRleE9mKGwpKTtpZih2b2lkIDA9PT1mKXtpZighYS5nbHlwaE5hbWVzJiZhLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoZj1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1mKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHIpaWYoZS5jaGFyQ29kZT09PWYpe2pbdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09bil7Zm9yKGNvbnN0IGUgb2YgcilqW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtsPSEwfWVsc2UgaWYoMz09PW4mJjA9PT1zKWZvcihjb25zdCBlIG9mIHIpe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTtqW3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIHIpaltlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYoYS5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFsJiZ2b2lkIDAhPT1qW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCBuPWEuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO24+MCYmaGFzR2x5cGgobikmJihqW2VdPW4pfX0wPT09ai5sZW5ndGgmJihqWzBdPTApO2xldCBrPXUtMTttfHwoaz0wKTtpZighYS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKGosaGFzR2x5cGgsayx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtpLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLHUpfTtpWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgYT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3Qgbj10LmdldFVpbnQxNigpO2lmKGE8NCYmNzY4Jm4pcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KGlbIk9TLzIiXSx0KXx8KGlbIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGEsZS5jaGFyQ29kZVRvR2x5cGhJZCx3KX0pfWlmKGkubmFtZSl7Y29uc3RbdCxuXT1yZWFkTmFtZVRhYmxlKGkubmFtZSk7aS5uYW1lLmRhdGE9Y3JlYXRlTmFtZVRhYmxlKGUsdCk7dGhpcy5wc05hbWU9dFswXVs2XXx8bnVsbDthLmNvbXBvc2l0ZXx8ZnVuY3Rpb24gYWRqdXN0VHJ1ZVR5cGVUb1VuaWNvZGUoZSx0LGEpe2lmKGUuaXNJbnRlcm5hbEZvbnQpcmV0dXJuO2lmKGUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXApcmV0dXJuO2lmKGUuaGFzRW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2lmKCF0KXJldHVybjtpZigwPT09YS5sZW5ndGgpcmV0dXJuO2lmKGUuZGVmYXVsdEVuY29kaW5nPT09Y24pcmV0dXJuO2Zvcihjb25zdCBlIG9mIGEpaWYoIWlzV2luTmFtZVJlY29yZChlKSlyZXR1cm47Y29uc3Qgbj1jbixzPVtdLHI9bW4oKTtmb3IoY29uc3QgZSBpbiBuKXtjb25zdCB0PW5bZV07aWYoIiI9PT10KWNvbnRpbnVlO2NvbnN0IGE9clt0XTt2b2lkIDAhPT1hJiYoc1tlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX1zLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChzKX0oYSx0aGlzLmlzU3ltYm9saWNGb250LG4pfWVsc2UgaS5uYW1lPXt0YWc6Im5hbWUiLGRhdGE6Y3JlYXRlTmFtZVRhYmxlKHRoaXMubmFtZSl9O2NvbnN0IHk9bmV3IE9wZW5UeXBlRmlsZUJ1aWxkZXIoci52ZXJzaW9uKTtmb3IoY29uc3QgZSBpbiBpKXkuYWRkVGFibGUoZSxpW2VdLmRhdGEpO3JldHVybiB5LnRvQXJyYXkoKX1jb252ZXJ0KGUsdCxhKXthLmZpeGVkUGl0Y2g9ITE7YS5idWlsdEluRW5jb2RpbmcmJmZ1bmN0aW9uIGFkanVzdFR5cGUxVG9Vbmljb2RlKGUsdCl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYodD09PWUuZGVmYXVsdEVuY29kaW5nKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtjb25zdCBhPVtdLG49bW4oKTtmb3IoY29uc3QgcyBpbiB0KXtpZihlLmhhc0VuY29kaW5nJiYoZS5iYXNlRW5jb2RpbmdOYW1lfHx2b2lkIDAhPT1lLmRpZmZlcmVuY2VzW3NdKSljb250aW51ZTtjb25zdCByPWdldFVuaWNvZGVGb3JHbHlwaCh0W3NdLG4pOy0xIT09ciYmKGFbc109U3RyaW5nLmZyb21DaGFyQ29kZShyKSl9YS5sZW5ndGg+MCYmZS50b1VuaWNvZGUuYW1lbmQoYSl9KGEsYS5idWlsdEluRW5jb2RpbmcpO2xldCBzPTE7dCBpbnN0YW5jZW9mIENGRkZvbnQmJihzPXQubnVtR2x5cGhzLTEpO2NvbnN0IHI9dC5nZXRHbHlwaE1hcHBpbmcoYSk7bGV0IGk9bnVsbCxvPXIsbD1udWxsO2lmKCFhLmNzc0ZvbnRJbmZvKXtpPWFkanVzdE1hcHBpbmcocix0Lmhhc0dseXBoSWQuYmluZCh0KSxzLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9aS50b0ZvbnRDaGFyO289aS5jaGFyQ29kZVRvR2x5cGhJZDtsPWkudG9Vbmljb2RlRXh0cmFNYXB9Y29uc3QgZj10Lm51bUdseXBocztmdW5jdGlvbiBnZXRDaGFyQ29kZXMoZSx0KXtsZXQgYT1udWxsO2Zvcihjb25zdCBuIGluIGUpdD09PWVbbl0mJihhfHw9W10pLnB1c2goMHxuKTtyZXR1cm4gYX1mdW5jdGlvbiBjcmVhdGVDaGFyQ29kZShlLHQpe2Zvcihjb25zdCBhIGluIGUpaWYodD09PWVbYV0pcmV0dXJuIDB8YTtpLmNoYXJDb2RlVG9HbHlwaElkW2kubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZV09dDtyZXR1cm4gaS5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlKyt9Y29uc3QgYz10LnNlYWNzO2lmKGkmJmM/Lmxlbmd0aCl7Y29uc3QgZT1hLmZvbnRNYXRyaXh8fG4scz10LmdldENoYXJzZXQoKSxvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0IGluIGMpe3R8PTA7Y29uc3QgYT1jW3RdLG49Zm5bYVsyXV0sbD1mblthWzNdXSxmPXMuaW5kZXhPZihuKSxoPXMuaW5kZXhPZihsKTtpZihmPDB8fGg8MCljb250aW51ZTtjb25zdCB1PXt4OmFbMF0qZVswXSthWzFdKmVbMl0rZVs0XSx5OmFbMF0qZVsxXSthWzFdKmVbM10rZVs1XX0sbT1nZXRDaGFyQ29kZXMocix0KTtpZihtKWZvcihjb25zdCBlIG9mIG0pe2NvbnN0IHQ9aS5jaGFyQ29kZVRvR2x5cGhJZCxhPWNyZWF0ZUNoYXJDb2RlKHQsZiksbj1jcmVhdGVDaGFyQ29kZSh0LGgpO29bZV09e2Jhc2VGb250Q2hhckNvZGU6YSxhY2NlbnRGb250Q2hhckNvZGU6bixhY2NlbnRPZmZzZXQ6dX19fWEuc2VhY01hcD1vfWNvbnN0IGg9YS5mb250TWF0cml4PzEvTWF0aC5tYXgoLi4uYS5mb250TWF0cml4LnNsaWNlKDAsNCkubWFwKE1hdGguYWJzKSk6MWUzLHU9bmV3IE9wZW5UeXBlRmlsZUJ1aWxkZXIoIk9UVE8iKTt1LmFkZFRhYmxlKCJDRkYgIix0LmRhdGEpO3UuYWRkVGFibGUoIk9TLzIiLGNyZWF0ZU9TMlRhYmxlKGEsbykpO3UuYWRkVGFibGUoImNtYXAiLGNyZWF0ZUNtYXBUYWJsZShvLGwsZikpO3UuYWRkVGFibGUoImhlYWQiLGZ1bmN0aW9uIGZvbnRUYWJsZUhlYWQoKXtjb25zdCBlPVswLDAsMCwwLDE1OCwxMSwxMjYsMzldLHQ9bmV3IFRydWVUeXBlVGFibGVCdWlsZGVyKHtleGFjdExlbmd0aDo1NH0pO3Quc2V0QXJyYXkoWzAsMSwwLDBdKTt0LnNldEFycmF5KFswLDAsMTYsMF0pO3Quc2tpcCg0KTt0LnNldEFycmF5KFs5NSwxNSw2MCwyNDVdKTt0LnNraXAoMik7dC5zZXRTYWZlSW50MTYoaCk7dC5zZXRBcnJheShlKTt0LnNldEFycmF5KGUpO3Quc2tpcCgyKTt0LnNldFNhZmVJbnQxNihhLmRlc2NlbnQpO3Quc2V0QXJyYXkoWzE1LDI1NV0pO3Quc2V0U2FmZUludDE2KGEuYXNjZW50KTt0LnNldEludDE2KGEuaXRhbGljQW5nbGU/MjowKTt0LnNldEFycmF5KFswLDE3XSk7dC5za2lwKDYpO3JldHVybiB0LmRhdGF9KCkpO3UuYWRkVGFibGUoImhoZWEiLGZ1bmN0aW9uIGZvbnRUYWJsZUhoZWEoKXtjb25zdCBlPW5ldyBUcnVlVHlwZVRhYmxlQnVpbGRlcih7ZXhhY3RMZW5ndGg6MzZ9KTtlLnNldEFycmF5KFswLDEsMCwwXSk7ZS5zZXRTYWZlSW50MTYoYS5hc2NlbnQpO2Uuc2V0U2FmZUludDE2KGEuZGVzY2VudCk7ZS5za2lwKDIpO2Uuc2V0QXJyYXkoWzI1NSwyNTVdKTtlLnNraXAoNik7ZS5zZXRTYWZlSW50MTYoYS5jYXBIZWlnaHQpO2Uuc2V0U2FmZUludDE2KE1hdGgudGFuKGEuaXRhbGljQW5nbGUpKmEueEhlaWdodCk7ZS5za2lwKDEyKTtlLnNldEludDE2KGYpO3JldHVybiBlLmRhdGF9KCkpO3UuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRUYWJsZUhtdHgoKXtjb25zdCBlPXQuY2hhcnN0cmluZ3MsYT10LmNmZj8ud2lkdGhzPz9udWxsLG49bmV3IFRydWVUeXBlVGFibGVCdWlsZGVyKHtleGFjdExlbmd0aDo0KmZ9KTtuLnNraXAoNCk7Zm9yKGxldCB0PTEscz1mO3Q8czt0Kyspe2xldCBzPTA7ZT9zPWVbdC0xXS53aWR0aHx8MDphJiYocz1NYXRoLmNlaWwoYVt0XXx8MCkpO24uc2V0SW50MTYocyk7bi5za2lwKDIpfXJldHVybiBuLmRhdGF9KCkpO3UuYWRkVGFibGUoIm1heHAiLGZ1bmN0aW9uIGZvbnRUYWJsZU1heHAoKXtjb25zdCBlPW5ldyBUcnVlVHlwZVRhYmxlQnVpbGRlcih7ZXhhY3RMZW5ndGg6Nn0pO2Uuc2V0QXJyYXkoWzAsMCw4MCwwXSk7ZS5zZXRJbnQxNihmKTtyZXR1cm4gZS5kYXRhfSgpKTt1LmFkZFRhYmxlKCJuYW1lIixjcmVhdGVOYW1lVGFibGUoZSkpO3UuYWRkVGFibGUoInBvc3QiLGNyZWF0ZVBvc3RUYWJsZShhKSk7cmV0dXJuIHUudG9BcnJheSgpfWdldCBfc3BhY2VXaWR0aCgpe2NvbnN0IGU9WyJzcGFjZSIsIm1pbnVzIiwib25lIiwiaSIsIkkiXTtsZXQgdDtmb3IoY29uc3QgYSBvZiBlKXtpZihhIGluIHRoaXMud2lkdGhzKXt0PXRoaXMud2lkdGhzW2FdO2JyZWFrfWNvbnN0IGU9bW4oKVthXTtsZXQgbj0wO2lmKHRoaXMuY29tcG9zaXRlJiZ0aGlzLmNNYXAuY29udGFpbnMoZSkpe249dGhpcy5jTWFwLmxvb2t1cChlKTsic3RyaW5nIj09dHlwZW9mIG4mJihuPWNvbnZlcnRDaWRTdHJpbmcoZSxuKSl9IW4mJnRoaXMudG9Vbmljb2RlJiYobj10aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpKTtuPD0wJiYobj1lKTt0PXRoaXMud2lkdGhzW25dO2lmKHQpYnJlYWt9cmV0dXJuIHNoYWRvdyh0aGlzLCJfc3BhY2VXaWR0aCIsdHx8dGhpcy5kZWZhdWx0V2lkdGgpfV9jaGFyVG9HbHlwaChlLHQ9ITEpe2xldCBhLG4scyxyPXRoaXMuI25lLmdldChlKTtpZihyPy5pc1NwYWNlPT09dClyZXR1cm4gcjtsZXQgaT1lO2lmKHRoaXMuY01hcD8uY29udGFpbnMoZSkpe2k9dGhpcy5jTWFwLmxvb2t1cChlKTsic3RyaW5nIj09dHlwZW9mIGkmJihpPWNvbnZlcnRDaWRTdHJpbmcoZSxpKSl9bj10aGlzLndpZHRoc1tpXTsibnVtYmVyIiE9dHlwZW9mIG4mJihuPXRoaXMuZGVmYXVsdFdpZHRoKTtjb25zdCBvPXRoaXMudm1ldHJpY3M/LltpXXx8dGhpcy5kZWZhdWx0Vk1ldHJpY3M7bGV0IGw9dGhpcy50b1VuaWNvZGUuZ2V0KGUpfHxlOyJudW1iZXIiPT10eXBlb2YgbCYmKGw9U3RyaW5nLmZyb21DaGFyQ29kZShsKSk7bGV0IGY9dm9pZCAwIT09dGhpcy50b0ZvbnRDaGFyW2VdO2E9dGhpcy50b0ZvbnRDaGFyW2VdfHxlO2lmKHRoaXMubWlzc2luZ0ZpbGUpe2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbZV07aWYoKCIubm90ZGVmIj09PXR8fCIiPT09dCkmJiJUeXBlMSI9PT10aGlzLnR5cGUpe2E9MzI7aWYoIiI9PT10KXtufHw9dGhpcy5fc3BhY2VXaWR0aDtsPVN0cmluZy5mcm9tQ2hhckNvZGUoYSl9fWE9ZnVuY3Rpb24gbWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMoZSl7cmV0dXJuIGU+PTY1NTIwJiZlPD02NTUzNT8wOmU+PTYyOTc2JiZlPD02Mzc0Mz9kbigpW2VdfHxlOjE3Mz09PWU/NDU6ZX0oYSl9dGhpcy5pc1R5cGUzRm9udCYmKHM9YSk7bGV0IGM9bnVsbDtpZih0aGlzLnNlYWNNYXA/LltlXSl7Zj0hMDtjb25zdCB0PXRoaXMuc2VhY01hcFtlXTthPXQuYmFzZUZvbnRDaGFyQ29kZTtjPXtmb250Q2hhcjpTdHJpbmcuZnJvbUNvZGVQb2ludCh0LmFjY2VudEZvbnRDaGFyQ29kZSksb2Zmc2V0OnQuYWNjZW50T2Zmc2V0fX1sZXQgaD0iIjsibnVtYmVyIj09dHlwZW9mIGEmJihhPD0xMTE0MTExP2g9U3RyaW5nLmZyb21Db2RlUG9pbnQoYSk6d2FybihgY2hhclRvR2x5cGggLSBpbnZhbGlkIGZvbnRDaGFyQ29kZTogJHthfWApKTtpZih0aGlzLm1pc3NpbmdGaWxlJiZ0aGlzLnZlcnRpY2FsJiYxPT09aC5sZW5ndGgpe2NvbnN0IGU9QW4oKVtoLmNoYXJDb2RlQXQoMCldO2UmJihoPWw9U3RyaW5nLmZyb21DaGFyQ29kZShlKSl9cj1uZXcgZm9udHNfR2x5cGgoZSxoLGwsYyxuLG8scyx0LGYpO3RoaXMuI25lLnNldChlLHIpO3JldHVybiByfWNoYXJzVG9HbHlwaHMoZSl7bGV0IHQ9dGhpcy4jYWUuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7dD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxuPWUubGVuZ3RoO2xldCBzPTA7Zm9yKDtzPG47KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUscyxhKTtjb25zdHtjaGFyY29kZTpuLGxlbmd0aDpyfT1hO3MrPXI7Y29uc3QgaT10aGlzLl9jaGFyVG9HbHlwaChuLDE9PT1yJiYzMj09PWUuY2hhckNvZGVBdChzLTEpKTt0LnB1c2goaSl9fWVsc2UgZm9yKGxldCBhPTAsbj1lLmxlbmd0aDthPG47KythKXtjb25zdCBuPWUuY2hhckNvZGVBdChhKSxzPXRoaXMuX2NoYXJUb0dseXBoKG4sMzI9PT1uKTt0LnB1c2gocyl9dGhpcy4jYWUuc2V0KGUsdCk7cmV0dXJuIHR9Z2V0Q2hhclBvc2l0aW9ucyhlKXtjb25zdCB0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBuPTA7Zm9yKDtuPGUubGVuZ3RoOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLG4sYSk7Y29uc3Qgcz1hLmxlbmd0aDt0LnB1c2goW24sbitzXSk7bis9c319ZWxzZSBmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjsrK2EpdC5wdXNoKFthLGErMV0pO3JldHVybiB0fWdldCBnbHlwaENhY2hlVmFsdWVzKCl7cmV0dXJuIHRoaXMuI25lLnZhbHVlcygpfWVuY29kZVN0cmluZyhlKXtjb25zdCB0PVtdLGE9W10saGFzQ3VycmVudEJ1ZkVycm9ycz0oKT0+dC5sZW5ndGglMj09MSxuPXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXA/ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKTplPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKFN0cmluZy5mcm9tQ29kZVBvaW50KGUpKTtmb3IobGV0IHM9MCxyPWUubGVuZ3RoO3M8cjtzKyspe2NvbnN0IHI9ZS5jb2RlUG9pbnRBdChzKTtyPjU1Mjk1JiYocjw1NzM0NHx8cj42NTUzMykmJnMrKztpZih0aGlzLnRvVW5pY29kZSl7Y29uc3QgZT1uKHIpO2lmKC0xIT09ZSl7aWYoaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goYS5qb2luKCIiKSk7YS5sZW5ndGg9MH1mb3IobGV0IHQ9KHRoaXMuY01hcD90aGlzLmNNYXAuZ2V0Q2hhckNvZGVMZW5ndGgoZSk6MSktMTt0Pj0wO3QtLSlhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlPj44KnQmMjU1KSk7Y29udGludWV9fWlmKCFoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChhLmpvaW4oIiIpKTthLmxlbmd0aD0wfWEucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChyKSl9dC5wdXNoKGEuam9pbigiIikpO3JldHVybiB0fX1jbGFzcyBFcnJvckZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5lcnJvcj1lO3RoaXMubG9hZGVkTmFtZT0iZ19mb250X2Vycm9yIjt0aGlzLm1pc3NpbmdGaWxlPSEwfWNoYXJzVG9HbHlwaHMoKXtyZXR1cm5bXX1lbmNvZGVTdHJpbmcoZSl7cmV0dXJuW2VdfWV4cG9ydERhdGEoKXtyZXR1cm57ZXJyb3I6dGhpcy5lcnJvcn19fWNvbnN0IG9zPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NDY1NywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzMyOTMsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MTIxLC44Njk0MywuNzk3OTUsLjg4MTk4LC43Nzk1OCwuNzA4NjQsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDE3LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjU0NjU3LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuODg3NjIsLjg3ODUsLjc1MjQxLC44Nzg1LC45MDUxOCwuOTUwMTUsLjc3NjE4LC44Nzg1LC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTE0ODgsLjg3ODUsLjg4MDEsLjg3ODUsLjg3ODUsLjkxMzQzLC43MTczLDEuMDQxMDYsLjg3ODUsLjg1MDc1LC45NTc5NCwuODI2MTYsLjg1MTYyLC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xMjQwMSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MzI5MywuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTEyMSwuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44NTI4NCwuODc1MDgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44NzE1LC43NTI0MSwuOTA1MTgsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44Nzg1LC44ODAxLC44ODAxLC44ODAxLC44ODAxLC44ODAxLC45MDc0NywuODkwNDksLjg3ODUsLjg3ODUsLjg3ODUsLjg3ODUsLjg1MTYyLC44Nzg1LC44NTE2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC44NzI4OSwuODMwMTYsLjg4NTA2LC45MzEyNSwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsMSwxLC44NzM1NiwuODc4NSwuOTEwNzUsLjg5NjA4LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzYyMjksLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc5NDY4LC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTEyMSwuODc4NSwxLDEsLjkxMjEsLjg3ODUsLjg3ODAyLC44ODY1NiwuODc4NSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODc0MDIsLjg5MjkxLC43Nzk1OCwuOTEzNDMsMSwxLC43Nzk1OCwuOTEzNDMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuODg3NjIsLjc3NTM5LC44NzE1LC44NzUwOCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwNjc0LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjA2MzAzLC44MzkwOCwuODAzNTIsLjU3MTg0LC42OTY1LC41NjI4OSwuODIwMDEsLjU2MDI5LC44MTIzNSwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjgxNTYsLjgwMzY3LC43MzEzMywuNzgyNTcsLjg3MzU2LC44Njk0MywuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MTIxLC43NjQ4LC44Njk0MywuODczNTYsLjc5Nzk1LC43ODI3NSwuODEwNTUsLjc3ODkyLC45NzYyLC44MjU3NywuOTk4MTksLjg0ODk2LC45NTk1OCwuNzc4OTIsLjk2MTA4LDEuMDE0MDcsLjg5MDQ5LDEuMDI5ODgsLjk0MjExLC45NjEwOCwuODkzNiwuODQwMjEsLjg3ODQyLC45NjM5OSwuNzkxMDksLjg5MDQ5LDEuMDA4MTMsMS4wMjk4OCwuODYwNzcsLjg3NDQ1LC45MjA5OSwuODQ3MjMsLjg2NTEzLC44ODAxLC43NTYzOCwuODU3MTQsLjc4MjE2LC43OTU4NiwuODc5NjUsLjk0MjExLC45Nzc0NywuNzgyODcsLjk3OTI2LC44NDk3MSwxLjAyOTg4LC45NDIxMSwuODgwMSwuOTQyMTEsLjg0OTcxLC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTAyNjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTE4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDU0OCwxLDEsMSwxLDEsMSwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMTQzLDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTM4MzUsLjgzNDA2LC45MTEzMywuODQxMDcsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwMDYsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGxzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxmcz1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTYyMzksLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjcxODA1LC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTA4NzIsLjg1OTM4LC43OTc5NSwuODcwNjgsLjc3OTU4LC42OTc2NiwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwNjgsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTI5LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuOTQ5MDgsLjg2NDExLC43NDAxMiwuODY0MTEsLjg4MzIzLC45NTAxNSwuODY0MTEsLjg2MzMxLC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTAzOSwuODYzMzEsLjg2MzMxLC44NjQxMSwuODY0MTEsLjkwNDY0LC43MDg1MiwxLjA0MTA2LC44NjMzMSwuODQzNzIsLjk1Nzk0LC44MjYxNiwuODQ1NDgsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjE5MTI5LC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjcxODA1LC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MDg3MiwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTI4NCwuODcwNjgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC44NTg4NywuNzQwMTIsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuOTA3NDcsLjg5MDQ5LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODQ1NDgsLjg2NDExLC44NDU0OCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC44NzI4OSwuNzk1MzgsLjg4NTA2LC45MjcyNiwuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsMSwxLC44NzM1NiwuODYzMzEsLjkxMDc1LC44Nzc3LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzY0NjcsLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc3MzEyLC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTA4NzIsLjg2MzMxLDEsMSwuOTA4NzIsLjg2MzMxLC44NjkwNiwuODgxMTYsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NzQwMiwuODY1NDksLjc3OTU4LC45MDQ2NCwxLDEsLjc3OTU4LC45MDQ2NCwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuOTQ5MDgsLjc3NTM5LC44NTg4NywuODcwNjgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDA4OCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS40ODM4NywuODM5MDgsLjgwMzUyLC41NzExOCwuNjk2NSwuNTYzNDcsLjc5MTc5LC41NTg1MywuODAzNDYsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY3MTc0LC44NjAzNiwuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY0NDEsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTA4NzIsLjc0ODg5LC44NTkzOCwuODc4OTEsLjc5Nzk1LC43OTU3LC44MTA1NSwuNzc4OTIsLjk3NDQ3LC44MjU3NywuOTc0NjYsLjg3MTc5LC45NTk1OCwuNzc4OTIsLjk0MjUyLC45NTYxMiwuODc1MywxLjAyOTg4LC45MjczMywuOTQyNTIsLjg3NDExLC44NDAyMSwuODcyOCwuOTU2MTIsLjc0MDgxLC44NzUzLDEuMDIxODksMS4wMjk4OCwuODQ4MTQsLjg3NDQ1LC45MTgyMiwuODQ3MjMsLjg1NjY4LC44NjMzMSwuODEzNDQsLjg3NTgxLC43NjQyMiwuODIwNDYsLjk2MDU3LC45MjczMywuOTkzNzUsLjc4MDIyLC45NTQ1MiwuODYwMTUsMS4wMjk4OCwuOTI3MzMsLjg2MzMxLC45MjczMywuODYwMTUsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDYzMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODgzMjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg1MTc0LDEsMSwxLDEsMSwxLC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg5ODA3LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzEwOTQsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45Mjk3MiwuODM0MDYsLjkxMTMzLC44MzMyNiwuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNjE2LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTA3LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxjcz17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30saHM9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5NTQzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MjM0NiwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkyNDksLjg0MTE4LC43NzQ1MiwuODUzNzQsLjc1MTg2LC42Nzc4OSwuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQzMDksLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzgzMTMsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuOTI0NSwuOTI0NSwuODMyMDMsLjkyNDUsLjg1ODY1LDEuMDk4NDIsLjkyNDUsLjkyNDUsMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NDk1OSwuOTI0NSwuOTIyNzQsLjkyNDUsLjkyNDUsMS4wMjkzMywuNzc4MzIsMS4yMDU2MiwuOTI0NSwuODkxNiwuOTg5ODYsLjg2NjIxLC44OTQ1MywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjE2MzU5LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjcyMzQ2LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTI0OSwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NTI4NCwuODQ1NTcsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg0ODQzLC44MzIwMywuODU4NjUsLjg1ODY1LC44NTg2NSwuODU4NjUsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTI0NSwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MDc0NywuODY2NTEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg5NDUzLC45MjQ1LC44OTQ1MywuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC44NTE5MywuODg3NSwuODY0NzcsLjk5MDM0LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwxLDEsLjg2Mjc1LC45MjQ1LC45MDg3MiwuOTM1OTEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc4OTYsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTM3NSwuOTgxNTYsLjkzNDA3LC43NzI2MSwxLjExNDI5LC44OTI0OSwuOTI0NSwxLDEsLjg5MjQ5LC45MjQ1LC45MjUzNCwuODY2OTgsLjkyNDUsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg2NjcsLjg2MjkxLC43NTE4NiwxLjAyOTMzLDEsMSwuNzUxODYsMS4wMjkzMywuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLDEsMSwuNzk3NzYsLjk3NjU1LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC45MjQ1LC43NjMxOCwuODQ4NDMsLjg0NTU3LC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42NzAwOSwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY3NSwuOTA4NjEsLjYxOTIsLjczNjMsLjY0ODI0LC44MjQxMSwuNTYzMjEsLjg1Njk2LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43Mjg2LC44NDEzNCwuNzMyMDYsLjc2NjU5LC44NjI3NSwuODQzNjksLjkwNjg1LC43Nzg5MiwuODU4NzEsMS4wMjYzOCwuODkyNDksLjc1ODI4LC44NDExOCwuODU5ODQsLjc3NDUyLC43NjQ2NiwuNzk3NzYsLjczMDYsLjkwNzgyLC43NzgxOCwuOTAzLC44NzI5MSwuOTA2ODUsLjczMDYsLjk5MDU4LDEuMDM2NjcsLjk0NjM1LDEuMjM1MTYsLjk4NDksLjk5MDU4LC45MjM5MywuODkxNiwuOTQyLDEuMDM2NjcsLjc1MDI2LC45NDYzNSwxLjAyOTcsMS4yMzUxNiwuOTA5MTgsLjk0MDQ4LC45ODIxNywuODk3NDYsLjg0MTUzLC45MjI3NCwuODI1MDcsLjg4ODMyLC44NDQzOCwuODgxNzgsMS4wMzUyNSwuOTg0OSwxLjAwMjI1LC43ODA4NiwuOTcyNDgsLjg5NDA0LDEuMjM1MTYsLjk4NDksLjkyMjc0LC45ODQ5LC44OTQwNCwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTg2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA5MzMsMSwxLDEsMSwxLDEsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42ODk5NCwxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk3ODU4LC44MjYxNiwuOTExMzMsLjgzNDM3LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTcyLDEuODEwNTUsLjkwNzQ5LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUyODQsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHVzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxtcz1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0scHM9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LGRzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sZ3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LGJzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMDQ0LC45OTk3NywxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTcxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMTAxMSwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzcsMSwxLDEuMDAwMjYsLjk5OTY5LC45OTk3MiwuOTk5ODEsLjk5OTgsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwuOTExNTUsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTk2NiwxLjAwMDIyLDEuMDAwMzIsMS4wMDAwMSwuOTk5NDQsMS4wMDAyNiwxLjAwMDAxLC45OTk2OCwxLjAwMDAxLDEuMDAwNDcsMSwxLjAwMDYsMS4wMDAwMSwuOTk5ODEsMS4wMDEwMSwxLjAwMDI2LDEuMDAwNiwuOTk5NDgsLjk5OTgxLDEuMDAwNjQsLjk5OTczLC45OTk0MiwxLjAwMTAxLDEuMDAwNjEsMS4wMDAyNiwxLjAwMDY5LDEuMDAwNiwxLjAwMDE0LC45OTk3MywxLjAxMzIyLC45OTk3MywxLjAwMDY1LDEuMDAwMjYsMS4wMDAxMiwuOTk5MjMsMSwxLjAwMDY0LDEuMDAwNzYsLjk5OTQ4LDEuMDAwNTUsMS4wMDA2MywxLjAwMDA3LC45OTk0MywxLjAwMDYsLjk5OTQ4LDEuMDAwMjYsLjk5OTQ4LC45OTk0MywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyOSwxLjAwMDM4LDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzgsMS4wMDAwMSwxLjAwMDU3LC45OTk4OSwuOTk5NjcsLjk5OTY0LC45OTk2NywuOTk5NzcsLjk5OTk5LC45OTk3NywxLjAwMDM4LC45OTk3NywxLjAwMDAxLC45OTk3MywxLjAwMDY2LC45OTk2NywuOTk5NjcsMS4wMDA0MSwuOTk5OTgsLjk5OTk5LC45OTk3NywxLjAwMDIyLC45OTk2NywxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk2NCwxLjAwMDMxLDEuMDAwMDEsLjk5OTk5LC45OTk5OSwxLDEuMDAwMjMsMSwxLC45OTk5OSwxLjAwMDM1LDEuMDAwMDEsLjk5OTk5LC45OTk3MywuOTk5NzcsLjk5OTk5LDEuMDAwNTgsLjk5OTczLC45OTk3MywuOTk5NTUsLjk5OTUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk5OTg5LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywuNDU5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMDEsLjk5OTk5LC45OTk4MiwuOTk5OTQsLjk5OTk2LDEsMS4wMDA0MiwxLjAwMDQ0LDEuMDAwMjksMS4wMDAyMywuOTk5NzMsLjk5OTczLDEuMDAwMjYsLjk5OTQ5LDEuMDAwMDIsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAzMiwuOTg2ODUsLjk5OTczLDEuMDAwMjYsMSwxLC45OTk2NiwxLjAwMDQ0LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzEsLjk5OTc4LDEsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA5OCwxLDEsMSwxLjAwMDQ5LDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sd3M9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxqcz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDI4OCwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsLjk5OTQ2LDEuMDAwMzQsMSwuOTk5MjQsMS4wMDAwMSwxLDEsLjk5OTczLC45OTkyNCwuOTk5NzMsLjk5OTI0LC45OTk3MywxLjA2MzExLC45OTk3MywxLjAwMDI0LC45OTk3MywuOTk5MjQsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA0MSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44OTU0NywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLjAwMDAxLDEsMS4wMDA1NCwuOTk5NzcsMS4wMDA4NCwxLjAwMDA3LC45OTk3MywxLjAwMDEzLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsLjk5OTQ1LC45MTIyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTkzMywxLjAwMDIyLDEuMDAwNTQsMS4wMDAwMSwxLjAwMDY1LDEuMDAwMjYsMS4wMDAwMSwxLjAwMDEsMS4wMDAwMSwxLjAwMDUyLDEsMS4wMDA2LDEuMDAwMDEsLjk5OTQ1LC45OTg5NywuOTk5NjgsLjk5OTI0LDEuMDAwMzYsLjk5OTQ1LC45OTk0OSwxLDEuMDAwNiwuOTk4OTcsLjk5OTE4LC45OTk2OCwuOTk5MTEsLjk5OTI0LDEsLjk5OTYyLDEuMDE0ODcsMSwxLjAwMDUsLjk5OTczLDEuMDAwMTIsMS4wMDA0MywxLC45OTk5NSwuOTk5OTQsMS4wMDAzNiwuOTk5NDcsMS4wMDAxOSwxLjAwMDYzLDEuMDAwMjUsLjk5OTI0LDEuMDAwMzYsLjk5OTczLDEuMDAwMzYsMS4wMDAyNSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNywxLjAwMDEsMS4wMDA2OCwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwxLjAwMDA4LC45OTk1NywuOTk5NzIsLjk5OTQsLjk5OTU0LC45OTk3NSwxLjAwMDUxLDEuMDAwMDEsMS4wMDAxOSwxLjAwMDAxLDEuMDAwMSwuOTk5ODYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMzgsLjk5OTU0LC45OTk1NCwuOTk5NCwxLjAwMDY2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTc1LDEuMDAwMSwxLjAwMDAxLC45OTk5MywuOTk5NSwuOTk5NTUsMS4wMDAxNiwuOTk5NzgsLjk5OTc0LDEuMDAwMTksMS4wMDAyMiwuOTk5NTUsMS4wMDA1MywuOTk5NzMsMS4wMDA4OSwxLjAwMDA1LC45OTk2NywxLjAwMDQ4LC45OTk3MywxLjAwMDAyLDEuMDAwMzQsLjk5OTczLC45OTk3MywuOTk5NjQsMS4wMDAwNiwxLjAwMDY2LC45OTk0NywuOTk5NzMsLjk4ODk0LC45OTk3MywxLC40NDg5OCwxLC45OTk0NiwxLDEuMDAwMzksMS4wMDA4MiwuOTk5OTEsLjk5OTkxLC45OTk4NSwxLjAwMDIyLDEuMDAwMjMsMS4wMDA2MSwxLjAwMDA2LC45OTk2NiwuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDE5LDEuMDAwOCwxLC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk4MywxLjAwMDQ0LC45OTk3MywuOTk5NjQsLjk4MzMyLDEsLjk5OTczLDEsMSwuOTk5NjIsLjk5ODk1LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLDEuMDA0MjMsLjk5OTI1LC45OTk5OSwxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDQ5LDEsMS4wMDI0NSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTUzMTcsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxrcz17bGluZUhlaWdodDoxLjM1LGxpbmVHYXA6LjJ9LHlzPVsuNzYxMTYsMSwxLDEuMDAwNiwxLjAwMDYsMS4wMDAwNiwuOTk5NzMsLjk5OTczLC45OTk4MiwxLjAwMDAxLDEuMDAwNDMsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLC45OTk3MywuOTk5ODcsMS4wMDAwMSwxLjAwMDAxLC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwxLDEuMDAwMDEsLjk5OTczLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk0OSwuOTk5NzMsLjk5OTk4LC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTkyNCwuOTk5MjQsMSwuOTk5MjQsLjk5OTk5LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDYsLjk5OTczLDEsLjk5OTc3LDEsMSwxLDEuMDAwMDUsMS4wMDA5LDEuMDAwMDUsMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwOSwuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTgsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwxLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDY0MDksMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsMSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMS4wNDU5NiwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsMS4wMDAxOSwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wMjU3MiwuOTk5NzMsMS4wMDAwNSwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk5OSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44NDUzMywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5MjgsMSwuOTk5NzcsMS4wMDAxMywxLjAwMDU1LC45OTk0NywuOTk5NDUsLjk5OTQxLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsMS4wMDA0LC45MTYyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwNSwuOTk5OTksLjk5OTc3LDEuMDAwMTUsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwuOTk5NDYsMSwxLjAwMDYsMS4wMDAwMSwuOTk5NzgsMS4wMDA0NSwuOTk5NzMsLjk5OTI0LDEuMDAwMjMsLjk5OTc4LC45OTk2NiwxLDEuMDAwNjUsMS4wMDA0NSwxLjAwMDE5LC45OTk3MywuOTk5NzMsLjk5OTI0LDEsMSwuOTY0OTksMSwxLjAwMDU1LC45OTk3MywxLjAwMDA4LDEuMDAwMjcsMSwuOTk5NywuOTk5OTUsMS4wMDAyMywuOTk5MzMsMS4wMDAxOSwxLjAwMDE1LDEuMDAwMzEsLjk5OTI0LDEuMDAwMjMsLjk5OTczLDEuMDAwMjMsMS4wMDAzMSwxLjAwMDAxLC45OTkyOCwxLjAwMDI5LDEuMDAwOTIsMS4wMDAzNSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwuOTk5ODgsLjk5OTc1LDEsMS4wMDA4MiwuOTk1NjEsLjk5OTYsMS4wMDAzNSwxLjAwMDAxLC45OTk2MiwxLjAwMDAxLDEuMDAwOTIsLjk5OTY0LDEuMDAwMDEsLjk5OTYzLC45OTk5OSwxLjAwMDM1LDEuMDAwMzUsMS4wMDA4MiwuOTk5NjIsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NiwuOTk5NjcsMS4wMDAwMSwxLjAwMDM0LDEuMDAwNzQsMS4wMDA1NCwxLjAwMDUzLDEuMDAwNjMsLjk5OTcxLC45OTk2MiwxLjAwMDM1LC45OTk3NSwuOTk5NzcsLjk5OTczLDEuMDAwNDMsLjk5OTUzLDEuMDAwNywuOTk5MTUsLjk5OTczLDEuMDAwMDgsLjk5ODkyLDEuMDAwNzMsMS4wMDA3MywxLjAwMTE0LC45OTkxNSwxLjAwMDczLC45OTk1NSwuOTk5NzMsMS4wMDA5MiwuOTk5NzMsMSwuOTk5OTgsMSwxLjAwMDMsMSwxLjAwMDQzLDEuMDAwMDEsLjk5OTY5LDEuMDAwMywxLDEuMDAwMzUsMS4wMDAwMSwuOTk5NSwxLDEuMDAwOTIsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3LC45OTk1LDEsLjk5OTI0LDEuMDAwNiwuOTk5MjQsLjk5OTcyLDEuMDAwNjIsLjk5OTczLDEuMDAxMTQsMS4wMDA3MywxLC45OTk1NSwxLDEsMS4wMDA0NywuOTk5NjgsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAyNjcsLjk5OTk5LC45OTk5OCwuOTk5OTgsMSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsLjk5OTcxLC45OTkyNSwxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk2MzI5LDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsLjgyNTQsMS4wMDAxNSwxLDEuMDAwMzUsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHFzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSx2cz1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDcxOSw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzg1LDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzg1LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNDY1LDcyMiwzMzMsODUzLDkwNiw0NzQsODI1LDkyNyw4MzgsMjc4LDcyMiw3MjIsNjAxLDcxOSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NDQsNzc4LDcyMiw2NjcsNjAwLDYxMSw2NjcsODIxLDY2Nyw4MDksODAyLDI3OCw2NjcsNjE1LDQ1MSw2MTEsMjc4LDU4Miw2MTUsNjEwLDU1Niw2MDYsNDc1LDQ2MCw2MTEsNTQxLDI3OCw1NTgsNTU2LDYxMiw1NTYsNDQ1LDYxMSw3NjYsNjE5LDUyMCw2ODQsNDQ2LDU4Miw3MTUsNTc2LDc1Myw4NDUsMjc4LDU4Miw2MTEsNTgyLDg0NSw2NjcsNjY5LDg4NSw1NjcsNzExLDY2NywyNzgsMjc2LDU1NiwxMDk0LDEwNjIsODc1LDYxMCw3MjIsNjIyLDcxOSw3MjIsNzE5LDcyMiw1NjcsNzEyLDY2Nyw5MDQsNjI2LDcxOSw3MTksNjEwLDcwMiw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjIyLDg1NCw2NjcsNzMwLDcwMywxMDA1LDEwMTksODcwLDk3OSw3MTksNzExLDEwMzEsNzE5LDU1Niw2MTgsNjE1LDQxNyw2MzUsNTU2LDcwOSw0OTcsNjE1LDYxNSw1MDAsNjM1LDc0MCw2MDQsNjExLDYwNCw2MTEsNTU2LDQ5MCw1NTYsODc1LDU1Niw2MTUsNTgxLDgzMyw4NDQsNzI5LDg1NCw2MTUsNTUyLDg1NCw1ODMsNTU2LDU1Niw2MTEsNDE3LDU1Miw1NTYsMjc4LDI4MSwyNzgsOTY5LDkwNiw2MTEsNTAwLDYxNSw1NTYsNjA0LDc3OCw2MTEsNDg3LDQ0Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMDk0LDU1Niw4ODUsNDg5LDExMTUsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxTcz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sQXM9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3NDAsNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4Miw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM5Niw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw3MjIsMzMzLDg1NCw5MDYsNDczLDg0NCw5MzAsODQ3LDI3OCw3MjIsNzIyLDYxMCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjU3LDc3OCw3MTgsNjY3LDU5MCw2MTEsNjY3LDgyMiw2NjcsODI5LDc4MSwyNzgsNjY3LDYyMCw0NzksNjExLDI3OCw1OTEsNjIwLDYyMSw1NTYsNjEwLDQ3OSw0OTIsNjExLDU1OCwyNzgsNTY2LDU1Niw2MDMsNTU2LDQ1MCw2MTEsNzEyLDYwNSw1MzIsNjY0LDQwOSw1OTEsNzA0LDU3OCw3NzMsODM0LDI3OCw1OTEsNjExLDU5MSw4MzQsNjY3LDY2Nyw4ODYsNjE0LDcxOSw2NjcsMjc4LDI3OCw1NTYsMTA5NCwxMDQyLDg1NCw2MjIsNzE5LDY3Nyw3MTksNzIyLDcwOCw3MjIsNjE0LDcyMiw2NjcsOTI3LDY0Myw3MTksNzE5LDYxNSw2ODcsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDY3Nyw3ODEsNjY3LDcyOSw3MDgsOTc5LDk4OSw4NTQsMWUzLDcwOCw3MTksMTA0Miw3MjksNTU2LDYxOSw2MDQsNTM0LDYxOCw1NTYsNzM2LDUxMCw2MTEsNjExLDUwNyw2MjIsNzQwLDYwNCw2MTEsNjExLDYxMSw1NTYsODg5LDU1Niw4ODUsNTU2LDY0Niw1ODMsODg5LDkzNSw3MDcsODU0LDU5NCw1NTIsODY1LDU4OSw1NTYsNTU2LDYxMSw0NjksNTYzLDU1NiwyNzgsMjc4LDI3OCw5NjksOTA2LDYxMSw1MDcsNjE5LDU1Niw2MTEsNzc4LDYxMSw1NzUsNDY3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDExMDQsNTU2LDg4NSw1MTYsMTE0NiwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsOTk5LDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdLHhzPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxDcz1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MjUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczMyw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI4MSw1NTYsNDAwLDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjE1LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM1NCw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4OSw4NDYsMzg5LDc5NCw4NjUsNzc1LDIyMiw2NjcsNjY3LDU3MCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY3LDgzMyw3MjIsNjQ4LDc3OCw3MjUsNjY3LDYwMCw2MTEsNjY3LDgzNyw2NjcsODMxLDc2MSwyNzgsNjY3LDU3MCw0MzksNTU1LDIyMiw1NTAsNTcwLDU3MSw1MDAsNTU2LDQzOSw0NjMsNTU1LDU0MiwyMjIsNTAwLDQ5Miw1NDgsNTAwLDQ0Nyw1NTYsNjcwLDU3Myw0ODYsNjAzLDM3NCw1NTAsNjUyLDU0Niw3MjgsNzc5LDIyMiw1NTAsNTU2LDU1MCw3NzksNjY3LDY2Nyw4NDMsNTQ0LDcwOCw2NjcsMjc4LDI3OCw1MDAsMTA2Niw5ODIsODQ0LDU4OSw3MTUsNjM5LDcyNCw2NjcsNjUxLDY2Nyw1NDQsNzA0LDY2Nyw5MTcsNjE0LDcxNSw3MTUsNTg5LDY4Niw4MzMsNzIyLDc3OCw3MjUsNjY3LDcyMiw2MTEsNjM5LDc5NSw2NjcsNzI3LDY3Myw5MjAsOTIzLDgwNSw4ODYsNjUxLDY5NCwxMDIyLDY4Miw1NTYsNTYyLDUyMiw0OTMsNTUzLDU1Niw2ODgsNDY1LDU1Niw1NTYsNDcyLDU2NCw2ODYsNTUwLDU1Niw1NTYsNTU2LDUwMCw4MzMsNTAwLDgzNSw1MDAsNTcyLDUxOCw4MzAsODUxLDYyMSw3MzYsNTI2LDQ5Miw3NTIsNTM0LDU1Niw1NTYsNTU2LDM3OCw0OTYsNTAwLDIyMiwyMjIsMjIyLDkxMCw4MjgsNTU2LDQ3Miw1NjUsNTAwLDU1Niw3NzgsNTU2LDQ5MiwzMzksOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDgzLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDk5OCw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTg0LDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0sSXM9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLEZzPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYxNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzM1LDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjkyLDU1NiwzMzQsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MDQsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzc1LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg0LDgzOCwzODQsNzc0LDg1NSw3NTIsMjIyLDY2Nyw2NjcsNTUxLDY2OCw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjgsODMzLDcyMiw2NTAsNzc4LDcyMiw2NjcsNjE4LDYxMSw2NjcsNzk4LDY2Nyw4MzUsNzQ4LDI3OCw2NjcsNTc4LDQ0Niw1NTYsMjIyLDU0Nyw1NzgsNTc1LDUwMCw1NTcsNDQ2LDQ0MSw1NTYsNTU2LDIyMiw1MDAsNTAwLDU3Niw1MDAsNDQ4LDU1Niw2OTAsNTY5LDQ4Miw2MTcsMzk1LDU0Nyw2NDgsNTI1LDcxMyw3ODEsMjIyLDU0Nyw1NTYsNTQ3LDc4MSw2NjcsNjY3LDg2NSw1NDIsNzE5LDY2NywyNzgsMjc4LDUwMCwxMDU3LDEwMTAsODU0LDU4Myw3MjIsNjM1LDcxOSw2NjcsNjU2LDY2Nyw1NDIsNjc3LDY2Nyw5MjMsNjA0LDcxOSw3MTksNTgzLDY1Niw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjM1LDc2MCw2NjcsNzQwLDY2Nyw5MTcsOTM4LDc5Miw4ODUsNjU2LDcxOSwxMDEwLDcyMiw1NTYsNTczLDUzMSwzNjUsNTgzLDU1Niw2NjksNDU4LDU1OSw1NTksNDM4LDU4Myw2ODgsNTUyLDU1Niw1NDIsNTU2LDUwMCw0NTgsNTAwLDgyMyw1MDAsNTczLDUyMSw4MDIsODIzLDYyNSw3MTksNTIxLDUxMCw3NTAsNTQyLDU1Niw1NTYsNTU2LDM2NSw1MTAsNTAwLDIyMiwyNzgsMjIyLDkwNiw4MTIsNTU2LDQzOCw1NTksNTAwLDU1Miw3NzgsNTU2LDQ4OSw0MTEsOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDczLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0sVHM9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLE9zPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxScz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sSHM9WzEuMzY4OTgsMSwxLC42NjIyNywuODA3NzksLjgxNjI1LC45NzI3NiwuOTcyNzYsLjk3NzMzLC45MjIyMiwuODMyNjYsLjk0MjkyLC45NDI5MiwxLjE2MTQ4LDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xNzMzNywuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzE1NDEsLjc2ODEzLC44NTU3NiwuODA1OTEsLjgwNzI5LC45NDI5OSwuNzc1MTIsLjgzNjU1LC44NjUyMywuOTIyMjIsLjk4NjIxLC43MTc0MywuODE2OTgsLjc5NzI2LC45ODU1OCwuOTIyMjIsLjkwNjM3LC44MzgwOSwuOTA2MzcsLjgwNzI5LC43NjQ2MywuODYyNzUsLjkwNjk5LC45MTYwNSwuOTE1NCwuODUzMDgsLjg1NDU4LC45MDUzMSwuOTQyOTIsMS4yMTI5NiwuOTQyOTIsMS4wMjA1OCwuODk5MDMsMS4xODYxNiwuOTk2MTMsLjkxNjc3LC43ODIxNiwuOTE2NzcsLjkwMDgzLC45ODc5NiwuOTEzNSwuOTIxNjgsLjk1MzgxLC45ODk4MSwuOTUyOTgsLjk1MzgxLC45MzQ1OSwuOTIxNjgsLjkxNTEzLC45MjAwNCwuOTE2NzcsLjk1MDc3LC43NDgsMS4wNDUwMiwuOTE2NzcsLjkyMDYxLC45NDIzNiwuODk1NDQsLjg5MzY0LC45LC44MDY4NywuODU3OCwuODA2ODcsMS4wMjA1OCwuODA3NzksLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC44NTc4LC45OTk3MywxLjE4NjE2LC45MTMzOSwxLjA4MDc0LC44Mjg5MSwxLjAyMDU4LC41NTUwOSwuNzE1MjYsLjg5MDIyLDEuMDg1OTUsMSwxLDEuMTg2MTYsMSwuOTY3MzYsLjkzNTgyLDEuMTg2MTYsMSwxLjA0ODY0LC44MjcxMSwuOTkwNDMsLjk5MDQzLC45OTA0MywuNzE1NDEsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg0NSwuODA3MjksLjc3NTEyLC43NzUxMiwuNzc1MTIsLjc3NTEyLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTU5NjEsLjkyMjIyLC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsMS4wMjA1OCwuOTAyNTEsLjkwNjk5LC45MDY5OSwuOTA2OTksLjkwNjk5LC44NTQ1OCwuODM2NTksLjk0OTUxLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC44NTgxMSwuNzgyMTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC45NTM4MSwuOTUzODEsLjk1MzgxLC45NTM4MSwuOTEzNSwuOTIxNjgsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywxLjA4NTk1LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjg5MzY0LC45MjMzMiwuODkzNjQsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuOTQyOTksLjc2NzgzLC45NTk2MSwuOTE2NzcsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LDEsMSwuOTIyMjIsLjkyMTY4LC45MjIyMiwuOTIxNjgsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC44NjAzNiwuOTcwOTYsLjcxNzQzLC45ODk4MSwxLDEsLjk1Mjk4LC43OTcyNiwuOTUzODEsMSwxLC43OTcyNiwuNjg5NCwuNzk3MjYsLjc0MzIxLC44MTY5MSwxLjAwMDYsLjkyMjIyLC45MjE2OCwxLDEsLjkyMjIyLC45MjE2OCwuNzk0NjQsLjkyMDk4LC45MjE2OCwuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA5LC44NzUxNCwuODA3MjksLjk1MDc3LDEsMSwuODA3MjksLjk1MDc3LC43NjQ2MywuNzQ4LC43NjQ2MywuNzQ4LDEsMSwuNzY0NjMsLjc0OCwxLDEsLjg2Mjc1LC43MjY1MSwuODYyNzUsMS4wNDUwMiwuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuODU0NTgsLjkwNTMxLC45LC45MDUzMSwuOSwuOTA1MzEsLjksMSwuOTcyNzYsLjg1NTc2LC45OTYxMywuODQ1LC44NTgxMSwuOTAyNTEsLjkxNjc3LDEsMSwuODYyNzUsMS4wNDUwMiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjAwODk5LDEuMzA2MjgsLjg1NTc2LC44MDE3OCwuNjY4NjIsLjc5MjcsLjY5MzIzLC44ODEyNywuNzI0NTksLjg5NzExLC45NTM4MSwuODU1NzYsLjgwNTkxLC43ODA1LC45NDcyOSwuNzc1MTIsLjkwNTMxLC45MjIyMiwuOTA2MzcsLjk4NjIxLC44MTY5OCwuOTI2NTUsLjk4NTU4LC45MjIyMiwuODUzNTksLjkwNjM3LC45MDk3NiwuODM4MDksLjk0NTIzLC44NjI3NSwuODM1MDksLjkzMTU3LC44NTMwOCwuODMzOTIsLjkyMzQ2LC45ODYyMSwuODM1MDksLjkyODg2LC45MTMyNCwuOTIxNjgsLjk1MzgxLC45MDY0NiwuOTI4ODYsLjkwNTU3LC44Njg0NywuOTAyNzYsLjkxMzI0LC44Njg0MiwuOTIxNjgsLjk5NTMxLC45NTM4MSwuOTIyNCwuODU0MDgsLjkyNjk5LC44Njg0NywxLjAwNTEsLjkxNTEzLC44MDQ4NywuOTM0ODEsMSwuODgxNTksMS4wNTIxNCwuOTA2NDYsLjk3MzU1LC44MTUzOSwuODkzOTgsLjg1OTIzLC45NTM4MSwuOTA2NDYsLjkxNTEzLC45MDY0NiwuODU5MjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTE3ODIsLjkxNzgyLC45MTc4MiwxLC44OTYsLjg5NiwuODk2LC45MzMyLC45MzMyLC45NTk3MywxLDEuMjYsMSwxLC44MDQ3OSwuODAxNzgsMSwxLC44NTYzMywxLDEsMSwxLC45NzI3NiwxLDEsMSwuNjk4LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNDU0MiwxLC43OTE5OSwuNzg2OTQsMS4wMjA1OCwxLjAzNDkzLDEuMDU0ODYsMSwxLDEuMjMwMjYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4yMDAwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxCcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sRHM9WzEuMzY4OTgsMSwxLC42NTUwNywuODQ5NDMsLjg1NjM5LC44ODQ2NSwuODg0NjUsLjg2OTM2LC44ODMwNywuODY5NDgsLjg1MjgzLC44NTI4MywxLjA2MzgzLDEuMDIwNTgsLjc1OTQ1LC45MjE5LC43NTk0NSwxLjE3MzM3LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuNzU5NDUsLjc1OTQ1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC42OTA0NiwuNzA5MjYsLjg1MTU4LC43NzgxMiwuNzY4NTIsLjg5NTkxLC43MDQ2NiwuNzYxMjUsLjgwMDk0LC44NjgyMiwuODM4NjQsLjcyOCwuNzcyMTIsLjc5NDc1LC45MzYzNywuODc1MTQsLjg1ODgsLjc2MDEzLC44NTg4LC43MjQyMSwuNjk4NjYsLjc3NTk4LC44NTk5MSwuODA4MTEsLjg3ODMyLC43ODExMiwuNzc1MTIsLjg1NjIsMS4wMjIyLDEuMTg0MTcsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLDEuMTUwMTIsLjkzODU5LC45NDM5OSwuODQ2LC45NDM5OSwuODE0NTMsMS4wMTg2LC45NDIxOSwuOTYwMTcsMS4wMzA3NSwxLjAyMTc1LC45MTIsMS4wMzA3NSwuOTY5OTgsLjk2MDE3LC45Mzg1OSwuOTQzOTksLjk0Mzk5LC45NTQ5MywuNzQ2LDEuMTI2NTgsLjk0NTc4LC45MSwuOTc5LC44ODIsLjg4MiwuODMsLjg1MDM0LC44MzUzNywuODUwMzQsMS4wMjA1OCwuNzA4NjksLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44MzUzNywuOTAwODMsMS4xNTAxMiwuOTE2MSwuOTQ1NjUsLjczNTQxLDEuMDIwNTgsLjUzNjA5LC42OTM1MywuNzk1MTksMS4wODU5NSwxLDEsMS4xNTAxMiwxLC45MTk3NCwuNzU5NDUsMS4xNTAxMiwxLC45NDQ2LC43MzM2MSwuOTAwNSwuOTAwNSwuOTAwNSwuNjI4NjQsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjc3MywuNzY4NTIsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjcwNDY2LC44Mzg2NCwuODM4NjQsLjgzODY0LC44Mzg2NCwuOTA1NjEsLjg3NTE0LC44NTg4LC44NTg4LC44NTg4LC44NTg4LC44NTg4LDEuMDIwNTgsLjg1NzUxLC44NTk5MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuNzc1MTIsLjc2MDEzLC44ODA3NSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuODA3NSwuODQ2LC44MTQ1MywuODE0NTMsLjgxNDUzLC44MTQ1MywuODI0MjQsLjgyNDI0LC44MjQyNCwuODI0MjQsLjkyNzgsLjk2MDE3LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksMS4wODU5NSwuODU2MiwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjg4MiwuOTQ1NzgsLjg4MiwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuODk1OTEsLjg1NDQsLjkwNTYxLC45NDM5OSwuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksMSwxLC44NjgyMiwuOTYwMTcsLjg2ODIyLC45NjAxNywuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsMS4wMzA3NSwuODM4NjQsLjgyNDI0LC44MTQwMiwxLjAyNzM4LC43MjgsMS4wMjE3NSwxLDEsLjkxMiwuNzk0NzUsMS4wMzA3NSwxLDEsLjc5NDc1LC44MzkxMSwuNzk0NzUsLjY2MjY2LC44MDU1MywxLjA2Njc2LC44NzUxNCwuOTYwMTcsMSwxLC44NzUxNCwuOTYwMTcsLjg2ODY1LC44NzM5NiwuOTYwMTcsLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg2NywuODQ3NTksLjcyNDIxLC45NTQ5MywxLDEsLjcyNDIxLC45NTQ5MywuNjk4NjYsLjc0NiwuNjk4NjYsLjc0NiwxLDEsLjY5ODY2LC43NDYsMSwxLC43NzU5OCwuODg0MTcsLjc3NTk4LDEuMTI2NTgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjc3NTEyLC44NTYyLC44MywuODU2MiwuODMsLjg1NjIsLjgzLDEsLjg4NDY1LC44NTE1OCwuOTM4NTksLjc3MywuODA3NSwuODU3NTEsLjg1NjIsMSwxLC43NzU5OCwxLjEyNjU4LDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MzEzLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMDgxMDYsMS4wMzkwMSwuODUxNTgsLjc3MDI1LC42MjI2NCwuNzY0NiwuNjUzNTEsLjg2MDI2LC42OTQ2MSwuODk5NDcsMS4wMzA3NSwuODUxNTgsLjc3ODEyLC43NjQ0OSwuODg4MzYsLjcwNDY2LC44NTYyLC44NjgyMiwuODU4OCwuODM4NjQsLjc3MjEyLC44NTMwOCwuOTM2MzcsLjg3NTE0LC44MjM1MiwuODU4OCwuODU3MDEsLjc2MDEzLC44OTA1OCwuNzc1OTgsLjgxNTYsLjgyNTY1LC43ODExMiwuNzc4OTksLjg5Mzg2LC44Mzg2NCwuODE1NiwuOTQ4NiwuOTIzODgsLjk2MTg2LDEuMDMwNzUsLjkxMTIzLC45NDg2LC45MzI5OCwuODc4LC45Mzk0MiwuOTIzODgsLjg0NTk2LC45NjE4NiwuOTUxMTksMS4wMzA3NSwuOTIyLC44ODc4NywuOTU4MjksLjg4LC45MzU1OSwuOTM4NTksLjc4ODE1LC45Mzc1OCwxLC44OTIxNywxLjAzNzM3LC45MTEyMywuOTM5NjksLjc3NDg3LC44NTc2OSwuODY3OTksMS4wMzA3NSwuOTExMjMsLjkzODU5LC45MTEyMywuODY3OTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuODczMjEsLjg3MzIxLC44NzMyMSwxLDEuMDI3LDEuMDI3LDEuMDI3LC44Njg0NywuODY4NDcsLjc5MTIxLDEsMS4xMjQsMSwxLC43MzU3MiwuNzM1NzIsMSwxLC44NTAzNCwxLDEsMSwxLC44ODQ2NSwxLDEsMSwuNjY5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDgyOCwxLC43NDk0OCwuNzUxODcsMS4wMjA1OCwuOTgzOTEsMS4wMjExOSwxLDEsMS4wNjIzMywxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1MjMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLE1zPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxOcz1bMS4zNjg5OCwxLDEsLjc2MzA1LC44Mjc4NCwuOTQ5MzUsLjg5MzY0LC45MjI0MSwuODkwNzMsLjkwNzA2LC45ODQ3MiwuODUyODMsLjg1MjgzLDEuMDY2NCwxLjAyMDU4LC43NDUwNSwuOTIxOSwuNzQ1MDUsMS4yMzQ1NiwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjc0NTA1LC43NDUwNSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzMwMDIsLjcyNjAxLC45MTc1NSwuODEyNiwuODAzMTQsLjkyMjIyLC43Mzc2NCwuNzk3MjYsLjgzMDUxLC45MDI4NCwuODYwMjMsLjc0LC44MTI2LC44NDg2OSwuOTY1MTgsLjkxMTE1LC44ODU4LC43OTc2MSwuODg1OCwuNzQ0OTgsLjczOTE0LC44MTM2MywuODk1OTEsLjgzNjU5LC44OTYzMywuODU2MDgsLjgxMTEsLjkwNTMxLDEuMDIyMiwxLjIyNzM2LDEuMDIyMiwxLjI3MDE0LC44OTkwMywuOTAwODgsLjg2NjY3LDEuMDIzMSwuODk2LDEuMDE0MTEsLjkwMDgzLDEuMDUwOTksMS4wMDUxMiwuOTk3OTMsMS4wNTMyNiwxLjA5Mzc3LC45MzgsMS4wNjIyNiwxLjAwMTE5LC45OTc5MywuOTg3MTQsMS4wMjMxLDEuMDEyMzEsLjk4MTk2LC43OTIsMS4xOTEzNywuOTkwNzQsLjk2MiwxLjAxOTE1LC45MjYsLjk0MiwuODU2LC44NTAzNCwuOTIwMDYsLjg1MDM0LDEuMDIwNTgsLjY5MDY3LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIwMDYsLjkzMzIsLjkwMDg4LC45MTg4MiwuOTM0ODQsLjc1MzM5LDEuMDIwNTgsLjU2ODY2LC41NDMyNCwuNzk1MTksMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk1MzI1LC43NDUwNSwuOTAwODgsMSwuOTcxOTgsLjc1MzM5LC45MTAwOSwuOTEwMDksLjkxMDA5LC42NjQ2NiwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuNzg4LC44MDMxNCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjg2MDIzLC44NjAyMywuODYwMjMsLjg2MDIzLC45MjkxNSwuOTExMTUsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsMS4wMjA1OCwuODg1OCwuODk1OTEsLjg5NTkxLC44OTU5MSwuODk1OTEsLjgxMTEsLjc5NjExLC44OTcxMywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY5MzYsLjg5NiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjg0MjI0LC44NDIyNCwuODQyMjQsLjg0MjI0LC45NzI3NiwuOTk3OTMsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwxLjA4NTk1LC44OTg3NiwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk0MiwxLjAyMzEsLjk0MiwuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuOTIyMjIsLjkzMzcyLC45MjkxNSwxLjAxNDExLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwxLDEsLjkwMjg0LC45OTc5MywuOTA5NzYsLjk5NzkzLC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywxLjA1MzI2LC44NjAyMywuODQyMjQsLjgyODczLDEuMDc0NjksLjc0LDEuMDkzNzcsMSwxLC45MzgsLjg0ODY5LDEuMDYyMjYsMSwxLC44NDg2OSwuODM3MDQsLjg0ODY5LC44MTQ0MSwuODU1ODgsMS4wODkyNywuOTExMTUsLjk5NzkzLDEsMSwuOTExMTUsLjk5NzkzLC45MTg4NywuOTA5OTEsLjk5NzkzLC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44OTQsLjkxNDM0LC43NDQ5OCwuOTgxOTYsMSwxLC43NDQ5OCwuOTgxOTYsLjczOTE0LC43OTIsLjczOTE0LC43OTIsMSwxLC43MzkxNCwuNzkyLDEsMSwuODEzNjMsLjkwNCwuODEzNjMsMS4xOTEzNywuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC44MTExLC45MDUzMSwuODU2LC45MDUzMSwuODU2LC45MDUzMSwuODU2LDEsLjkyMjQxLC45MTc1NSwuODY2NjcsLjc4OCwuODY5MzYsLjg4NTgsLjg5ODc2LDEsMSwuODEzNjMsMS4xOTEzNywuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAzODgsMS4wMzkwMSwuOTIxMzgsLjc4MTA1LC43MTU0LC44NjE2OSwuODA1MTMsLjk0MDA3LC44MjUyOCwuOTg2MTIsMS4wNjIyNiwuOTE3NTUsLjgxMjYsLjgxODg0LC45MjgxOSwuNzM3NjQsLjkwNTMxLC45MDI4NCwuODg1OCwuODYwMjMsLjgxMjYsLjkxMTcyLC45NjUxOCwuOTExMTUsLjgzMDg5LC44ODU4LC44Nzc5MSwuNzk3NjEsLjg5Mjk3LC44MTM2MywuODgxNTcsLjg5OTkyLC44NTYwOCwuODE5OTIsLjk0MzA3LC44NjAyMywuODgxNTcsLjk1MzA4LC45ODY5OSwuOTk3OTMsMS4wNjIyNiwuOTU4MTcsLjk1MzA4LC45NzM1OCwuOTI4LC45ODA4OCwuOTg2OTksLjkyNzYxLC45OTc5MywuOTYwMTcsMS4wNjIyNiwuOTg2LC45NDQsLjk1OTc4LC45MzgsLjk2NzA1LC45ODcxNCwuODA0NDIsLjk4OTcyLDEsLjg5NzYyLDEuMDQ1NTIsLjk1ODE3LC45OTAwNywuODcwNjQsLjkxODc5LC44ODg4OCwxLjA2MjI2LC45NTgxNywuOTg3MTQsLjk1ODE3LC44ODg4OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjkzMTczLC45MzE3MywuOTMxNzMsMSwxLjA2MzA0LDEuMDYzMDQsMS4wNjkwNCwuODk5MDMsLjg5OTAzLC44MDU0OSwxLDEuMTU2LDEsMSwuNzY1NzUsLjc2NTc1LDEsMSwuNzI0NTgsMSwxLDEsMSwuOTIyNDEsMSwxLDEsLjYxOSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDcyNTcsMSwuNzQ3MDUsLjcxMTE5LDEuMDIwNTgsMS4wMjQsMS4wMjExOSwxLDEsMS4xNTM2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU2MzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sRXM9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LF9zPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHpzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxMcz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sVXM9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LFhzPVsxLjc2NzM4LDEsMSwuOTg5NDYsMS4xNDc2MywxLjA1MzY1LDEuMDYyMzQsLjk2OTI3LC45MjU4NiwxLjE1MzczLDEuMTg0MTQsLjkxMzQ5LC45MTM0OSwxLjA3NDAzLDEuMTczMDgsLjc4MzgzLDEuMjAwODgsLjc4MzgzLDEuNDI1MzEsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC43ODM4MywuNzgzODMsMS4xNzMwOCwxLjE3MzA4LDEuMTczMDgsLjc3MzQ5LC45NDU2NSwuOTQ3MjksLjg1OTQ0LC44ODUwNiwuOTg1OCwuNzQ4MTcsLjgwMDE2LC44ODQ0OSwuOTgwMzksLjk1NzgyLC42OTIzOCwuODk4OTgsLjgzMjMxLC45ODE4MywxLjAzOTg5LC45NjkyNCwuODYyMzcsLjk2OTI0LC44MDU5NSwuNzQ1MjQsLjg2MDkxLC45NTQwMiwuOTQxNDMsLjk4NDQ4LC44ODU4LC44MzA4OSwuOTMyODUsMS4wOTQ5LDEuMzkwMTYsMS4wOTQ5LDEuNDU5OTQsLjc0NjI3LDEuMDQ4MzksLjk3NDU0LC45NzQ1NCwuODcyMDcsLjk3NDU0LC44NzUzMywxLjA2MTUxLC45NzQ1NCwxLjAwMTc2LDEuMTY0ODQsMS4wODEzMiwuOTgwNDcsMS4xNjQ4NCwxLjAyOTg5LDEuMDEwNTQsLjk2MjI1LC45NzQ1NCwuOTc0NTQsMS4wNjU5OCwuNzkwMDQsMS4xNjM0NCwxLjAwMzUxLC45NDYyOSwuOTk3MywuOTEwMTYsLjk2Nzc3LC45MDQzLC45MTA4MiwuOTI0ODEsLjkxMDgyLDEuMTczMDgsLjk1NzQ4LC45NjkyNywuOTY5MjcsMSwuOTY5MjcsLjkyNDgxLC44MDU5NywxLjA0ODM5LDEuMjMzOTMsMS4xNzgxLC45MjQ1LDEuMTczMDgsMS4yMDgwOCwuNjMyMTgsLjk0MjYxLDEuMjQ4MjIsMS4wOTk3MSwxLjA5OTcxLDEuMDQ4MzksMSwuODUyNzMsLjc4MDMyLDEuMDQ4MzksMS4wOTk3MSwxLjIyMzI2LC45MjQ1LDEuMDk4MzYsMS4xMzUyNSwxLjE1MjIyLC43MDQyNCwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuODU0OTgsLjg4NTA2LC43NDgxNywuNzQ4MTcsLjc0ODE3LC43NDgxNywuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk4NTgsMS4wMzk4OSwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTczMDgsLjk2OTI0LC45NTQwMiwuOTU0MDIsLjk1NDAyLC45NTQwMiwuODMwODksLjg2MjM3LC44ODQwOSwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTI5MTYsLjg3MjA3LC44NzUzMywuODc1MzMsLjg3NTMzLC44NzUzMywuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzODU0LDEuMDEwNTQsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwxLjI0ODIyLC44NzYxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsLjk2Nzc3LC45NzQ1NCwuOTY3NzcsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuOTg1OCwuOTUzOTEsLjk4NTgsLjk3NDU0LC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwxLDEsLjk4MDM5LDEuMDAxNzYsLjk4MDM5LDEuMDAxNzYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLDEuMTY0ODQsLjk1NzgyLC45MzE0NiwuODQ0MjEsMS4xMjc2MSwuNjkyMzgsMS4wODEzMiwxLDEsLjk4MDQ3LC44MzIzMSwxLjE2NDg0LDEsMSwuODQ3MjMsMS4wNDg2MSwuODQ3MjMsLjc4NzU1LC44MzIzMSwxLjIzNzM2LDEuMDM5ODksMS4wMTA1NCwxLDEsMS4wMzk4OSwxLjAxMDU0LC45ODU3LDEuMDM4NDksMS4wMTA1NCwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTIzODMsLjkwMTcxLC44MDU5NSwxLjA2NTk4LDEsMSwuODA1OTUsMS4wNjU5OCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LDEsMSwuODYwOTEsMS4wMjc1OSwuODU3NzEsMS4xNjM0NCwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywuODMwODksLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsMS4zMTg2OCwuOTY5MjcsLjk0NzI5LC45NzQ1NCwuODU0OTgsLjkyOTE2LC45NjkyNCwuODc2MSwxLDEsLjg2MDkxLDEuMTYzNDQsMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksLjgxOTY1LC44MTk2NSwuOTQ3MjksLjc4MDMyLC43MTAyMiwuOTA4ODMsLjg0MTcxLC45OTg3NywuNzc1OTYsMS4wNTczNCwxLjIsLjk0NzI5LC44NTk0NCwuODI3OTEsLjk2MDcsLjc0ODE3LC45MzI4NSwuOTgwMzksLjk2OTI0LC45NTc4MiwuODk4OTgsLjk4MzE2LC45ODE4MywxLjAzOTg5LC43ODYxNCwuOTY5MjQsLjk3NjQyLC44NjIzNywuODYwNzUsLjg2MDkxLC44MzA4OSwuOTAwODIsLjg4NTgsLjk3Mjk2LDEuMDEyODQsLjk1NzgyLC44MzA4OSwxLjA5NzYsMS4wNCwxLjAzMzQyLDEuMiwxLjA2NzUsMS4wOTc2LC45ODIwNSwxLjAzODA5LDEuMDUwOTcsMS4wNCwuOTUzNjQsMS4wMzM0MiwxLjA1NDAxLDEuMiwxLjAyMTQ4LDEuMDExOSwxLjA0NzI0LDEuMDEyNywxLjAyNzMyLC45NjIyNSwuODk2NSwuOTc3ODMsLjkzNTc0LC45NDgxOCwxLjMwNjc5LDEuMDY3NSwxLjExODI2LC45OTgyMSwxLjA1NTcsMS4wMzI2LDEuMiwxLjA2NzUsLjk2MjI1LDEuMDY3NSwxLjAzMjYsLjc0ODE3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3NTQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3NTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45ODcwNSwxLDEsMSwxLDEsMSwuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsMS4xMjMxNywxLjEyMzE3LDEuMTIzMTcsLjY3NjAzLC42NzYwMywxLjE1NjIxLC43MzU4NCwxLjIxMTkxLDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3MDksLjk2OTI3LDEuMDE0NzMsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4wOTgzNiwxLjA5ODM2LDEuMDk4MzYsMS4wMTUyMiwuODYzMjEsLjk0NDM0LC44NjQ5LC45NDQzNCwuODYxODIsMSwxLDEuMDgzLDEsLjkxNTc4LC44NjQzOCwxLjE3MzA4LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY3OTEsMS4yNDgyMiwxLjI0ODIyLDEuMTczMDgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xNzk4NCwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA3NDIsMS4xMDc0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sV3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LEtzPVsxLjc2NzM4LDEsMSwuOTg1OTQsMS4wMjI4NSwxLjEwNDU0LDEuMDYyMzQsLjk2OTI3LC45MjAzNywxLjE5OTg1LDEuMjA0NiwuOTA2MTYsLjkwNjE2LDEuMDcxNTIsMS4xNzE0LC43ODAzMiwxLjIwMDg4LC43ODAzMiwxLjQwMjQ2LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgwMzIsLjc4MDMyLDEuMTcxNCwxLjE3MTQsMS4xNzE0LC44MDU5NywuOTQwODQsLjk2NzA2LC44NTk0NCwuODU3MzQsLjk3MDkzLC43NTg0MiwuNzk5MzYsLjg4MTk4LC45ODMxLC45NTc4MiwuNzEzODcsLjg2OTY5LC44NDYzNiwxLjA3Nzk2LDEuMDM1ODQsLjk2OTI0LC44Mzk2OCwuOTY5MjQsLjgyODI2LC43OTY0OSwuODU3NzEsLjk1MTMyLC45MzExOSwuOTg5NjUsLjg4NDMzLC44Mjg3LC45MzM2NSwxLjA4NjEyLDEuMzYzOCwxLjA4NjEyLDEuNDU3ODYsLjc0NjI3LC44MDQ5OSwuOTE0ODQsMS4wNTcwNywuOTIzODMsMS4wNTg4MiwuOTQwMywxLjEyNjU0LDEuMDU4ODIsMS4wMTc1NiwxLjA5MDExLDEuMDkwMTEsLjk5NDE0LDEuMDkwMTEsMS4wMzQsMS4wMTc1NiwxLjA1MzU2LDEuMDU3MDcsMS4wNTg4MiwxLjA0Mzk5LC44NDg2MywxLjIxOTY4LDEuMDE3NTYsLjk1ODAxLDEuMDAwNjgsLjkxNzk3LC45Njc3NywuOTA0MywuOTAzNTEsLjkyMTA1LC45MDM1MSwxLjE3MTQsLjg1MzM3LC45NjkyNywuOTY5MjcsLjk5OTEyLC45NjkyNywuOTIxMDUsLjgwNTk3LDEuMjQzNCwxLjIwODA4LDEuMDU5MzcsLjkwOTU3LDEuMTcxNCwxLjIwODA4LC43NTE1NSwuOTQyNjEsMS4yNDY0NCwxLjA5OTcxLDEuMDk5NzEsLjg0NzUxLDEsLjg1MjczLC43ODAzMiwuNjE1ODQsMS4wNTQyNSwxLjE3OTE0LC45MDk1NywxLjA4NjY1LDEuMTE1OTMsMS4xNDE2OSwuNzMzODEsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjg2MDM1LC44NTczNCwuNzU4NDIsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NzA5MywxLjAzNTg0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzE0LC45NjkyNCwuOTUxMzIsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjgyODcsLjgzOTY4LC44OTA0OSwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTM1NzUsLjkyMzgzLC45NDAzLC45NDAzLC45NDAzLC45NDAzLC44NzE3LC44NzE3LC44NzE3LC44NzE3LDEuMDA1MjcsMS4wMTc1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4yNDY0NCwuOTU5MjMsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsMS4wMTc1NiwuOTY3NzcsMS4wNTcwNywuOTY3NzcsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC45NjcwNiwuOTE0ODQsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuOTcwOTMsMS4wOTY5LC45NzA5MywxLjA1ODgyLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsMSwxLC45ODMxLDEuMDE3NTYsLjk4MzEsMS4wMTc1NiwuOTU3ODIsLjg3MTcsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsMS4wOTAxMSwuOTU3ODIsLjg3MTcsLjg0Nzg0LDEuMTE1NTEsLjcxMzg3LDEuMDkwMTEsMSwxLC45OTQxNCwuODQ2MzYsMS4wOTAxMSwxLDEsLjg0NjM2LDEuMDUzNiwuODQ2MzYsLjk0Mjk4LC44NDYzNiwxLjIzMjk3LDEuMDM1ODQsMS4wMTc1NiwxLDEsMS4wMzU4NCwxLjAxNzU2LDEuMDAzMjMsMS4wMzQ0NCwxLjAxNzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45MzA2NiwuOTgyOTMsLjgyODI2LDEuMDQzOTksMSwxLC44MjgyNiwxLjA0Mzk5LC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsMSwxLC44NTc3MSwxLjE3MzE4LC44NTc3MSwxLjIxOTY4LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45ODk2NSwxLjAwMDY4LC44Mjg3LC45Njc3NywuODI4NywuOTMzNjUsLjkwNDMsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywxLjA4NTcxLC45NjkyNywuOTY3MDYsLjkxNDg0LC44NjAzNSwuOTM1NzUsLjk2OTI0LC45NTkyMywxLDEsLjg1NzcxLDEuMjE5NjgsMS4xMTQzNywxLjExNDM3LC45MzEwOSwuOTEyMDIsLjYwNDExLC44NDE2NCwuNTU1NzIsMS4wMTE3MywuOTczNjEsLjgxODE4LC44MTgxOCwuOTY2MzUsLjc4MDMyLC43MjcyNywuOTIzNjYsLjk4NjAxLDEuMDM0MDUsLjc3OTY4LDEuMDk3OTksMS4yLC45NjcwNiwuODU5NDQsLjg1NjM4LC45NjQ5MSwuNzU4NDIsLjkzMzY1LC45ODMxLC45NjkyNCwuOTU3ODIsLjg2OTY5LC45NDE1MiwxLjA3Nzk2LDEuMDM1ODQsLjc4NDM3LC45NjkyNCwuOTg3MTUsLjgzOTY4LC44MzQ5MSwuODU3NzEsLjgyODcsLjk0NDkyLC44ODQzMywuOTI4NywxLjAwOTgsLjk1NzgyLC44Mjg3LDEuMDYyNSwuOTgyNDgsMS4wMzQyNCwxLjIsMS4wMTA3MSwxLjA2MjUsLjk1MjQ2LDEuMDM4MDksMS4wNDkxMiwuOTgyNDgsMS4wMDIyMSwxLjAzNDI0LDEuMDU0NDMsMS4yLDEuMDQ3ODUsLjk5NjA5LDEuMDAxNjksMS4wNTE3NiwuOTkzNDYsMS4wNTM1NiwuOTA4NywxLjAzMDA0LC45NTU0MiwuOTMxMTcsMS4yMzM2MiwxLjAxMDcxLDEuMDc4MzEsMS4wMjUxMiwxLjA1MjA1LDEuMDM1MDIsMS4yLDEuMDEwNzEsMS4wNTM1NiwxLjAxMDcxLDEuMDM1MDIsLjc1ODQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3MTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDAyMSwxLDEsMSwxLDEsMSwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMDMwNzcsMS4xMzE5NiwxLjEzMTk2LDEuMTMxOTYsLjY3NDI4LC42NzQyOCwxLjE2MDM5LC43MzI5MSwxLjIwOTk2LDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3OTYsLjk2OTI3LDEuMDE1MTgsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4xMDUzOSwxLjEwNTM5LDEuMTEzNTgsMS4wNjk2NywuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY1MDcsMS4xNzE0LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY5NywxLjI0ODIyLDEuMjQ4MjIsMS4xNzIzOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4MDgzLDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDkzOCwxLjEwOTM4LDEsMSwxLDEuMDU0MjUsMS4wOTk3MSwxLjA5OTcxLDEuMDk5NzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxHcz17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sVnM9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbIk15cmlhZFByby1SZWd1bGFyIl09ZVsiUGRmSlMtRmFsbGJhY2stUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOk5zLGJhc2VXaWR0aHM6RnMsYmFzZU1hcHBpbmc6VHMsbWV0cmljczpFc307ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6T3MsYmFzZVdpZHRoczp2cyxiYXNlTWFwcGluZzpTcyxtZXRyaWNzOlJzfTtlWyJNeXJpYWRQcm8tSXQiXT1lWyJNeXJpYWRQcm8tSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpEcyxiYXNlV2lkdGhzOkNzLGJhc2VNYXBwaW5nOklzLG1ldHJpY3M6TXN9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpIcyxiYXNlV2lkdGhzOkFzLGJhc2VNYXBwaW5nOnhzLG1ldHJpY3M6QnN9O2UuQXJpYWxNVD1lLkFyaWFsPWVbIkFyaWFsLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsYmFzZVdpZHRoczpGcyxiYXNlTWFwcGluZzpUc307ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOnZzLGJhc2VNYXBwaW5nOlNzfTtlWyJBcmlhbC1JdGFsaWNNVCJdPWVbIkFyaWFsLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGJhc2VXaWR0aHM6Q3MsYmFzZU1hcHBpbmc6SXN9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpBcyxiYXNlTWFwcGluZzp4c307ZVsiQ2FsaWJyaS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6bXMsYmFzZVdpZHRoczpGcyxiYXNlTWFwcGluZzpUcyxtZXRyaWNzOnBzfTtlWyJDYWxpYnJpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpvcyxiYXNlV2lkdGhzOnZzLGJhc2VNYXBwaW5nOlNzLG1ldHJpY3M6bHN9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpocyxiYXNlV2lkdGhzOkNzLGJhc2VNYXBwaW5nOklzLG1ldHJpY3M6dXN9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmZzLGJhc2VXaWR0aHM6QXMsYmFzZU1hcHBpbmc6eHMsbWV0cmljczpjc307ZVsiU2Vnb2V1aS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6S3MsYmFzZVdpZHRoczpGcyxiYXNlTWFwcGluZzpUcyxtZXRyaWNzOkdzfTtlWyJTZWdvZXVpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpfcyxiYXNlV2lkdGhzOnZzLGJhc2VNYXBwaW5nOlNzLG1ldHJpY3M6enN9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpYcyxiYXNlV2lkdGhzOkNzLGJhc2VNYXBwaW5nOklzLG1ldHJpY3M6V3N9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOkxzLGJhc2VXaWR0aHM6QXMsYmFzZU1hcHBpbmc6eHMsbWV0cmljczpVc307ZVsiSGVsdmV0aWNhLVJlZ3VsYXIiXT1lLkhlbHZldGljYT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczp5cyxiYXNlV2lkdGhzOkZzLGJhc2VNYXBwaW5nOlRzLG1ldHJpY3M6cXN9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6ZHMsYmFzZVdpZHRoczp2cyxiYXNlTWFwcGluZzpTcyxtZXRyaWNzOmdzfTtlWyJIZWx2ZXRpY2EtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpqcyxiYXNlV2lkdGhzOkNzLGJhc2VNYXBwaW5nOklzLG1ldHJpY3M6a3N9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6YnMsYmFzZVdpZHRoczpBcyxiYXNlTWFwcGluZzp4cyxtZXRyaWNzOndzfX0pO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIFZzKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczphLGJhc2VNYXBwaW5nOm4sZmFjdG9yczpzfT10LHI9cz9hLm1hcCgoZSx0KT0+ZSpzW3RdKTphO2xldCBpLG89LTI7Y29uc3QgbD1bXTtmb3IoY29uc3RbZSx0XW9mIG4ubWFwKChlLHQpPT5bZSx0XSkuc29ydCgoW2VdLFt0XSk9PmUtdCkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe2kucHVzaChyW3RdKTtvKz0xfWVsc2V7bz1lO2k9W3JbdF1dO2wucHVzaChlLGkpfXJldHVybiBsfShlKSxhPW5ldyBEaWN0KG51bGwpO2Euc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO2Euc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTthLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTthLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO2Euc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Euc2V0KCJXIix0KTthLnNldCgiRmlyc3RDaGFyIix0WzBdKTthLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCBuPW5ldyBEaWN0KG51bGwpO2Euc2V0KCJGb250RGVzY3JpcHRvciIsbik7Y29uc3Qgcz1uZXcgRGljdChudWxsKTtzLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO3Muc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7cy5zZXQoIlN1cHBsZW1lbnQiLDApO2Euc2V0KCJDSURTeXN0ZW1JbmZvIixzKTtyZXR1cm4gYX1jb25zdCAkcz17bnVtYmVyOjAsbGJyYWNlOjEscmJyYWNlOjIsdHJ1ZTozLGZhbHNlOjQsYWRkOjUsc3ViOjYsbXVsOjcsZGl2OjgsaWRpdjo5LG1vZDoxMCxleHA6MTEsZXE6MTIsbmU6MTMsZ3Q6MTQsZ2U6MTUsbHQ6MTYsbGU6MTcsYW5kOjE4LG9yOjE5LHhvcjoyMCxiaXRzaGlmdDoyMSxhYnM6MjIsbmVnOjIzLGNlaWxpbmc6MjQsZmxvb3I6MjUscm91bmQ6MjYsdHJ1bmNhdGU6Mjcsbm90OjI4LHNxcnQ6Mjksc2luOjMwLGNvczozMSxsbjozMixsb2c6MzMsYXRhbjozNCxjdmk6MzUsY3ZyOjM2LGR1cDozNyxleGNoOjM4LHBvcDozOSxjb3B5OjQwLGluZGV4OjQxLHJvbGw6NDIsaWY6NDMsaWZlbHNlOjQ0LGVvZjo0NSxtaW46NDYsbWF4OjQ3fTtjbGFzcyBUb2tlbntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5pZD1lO3RoaXMudmFsdWU9dH19Y2xhc3MgbGV4ZXJfTGV4ZXJ7c3RhdGljI3JlPW51bGw7c3RhdGljI2llPW51bGw7c3RhdGljI29lKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbYSxuXW9mIE9iamVjdC5lbnRyaWVzKCRzKSl7aWYoIm51bWJlciI9PT1hKWNvbnRpbnVlO2NvbnN0IHM9bj49JHMudHJ1ZSYmbjw9JHMuaWZlbHNlLHI9bmV3IFRva2VuKG4scz9hOm51bGwpO2VbYV09cjtzJiYodFthXT1yKX10aGlzLiNyZT1lO3RoaXMuI2llPXR9Y29uc3RydWN0b3IoZSl7bGV4ZXJfTGV4ZXIuI3JlfHxsZXhlcl9MZXhlci4jb2UoKTt0aGlzLmRhdGE9ZTt0aGlzLnBvcz0wO3RoaXMubGVuPWUubGVuZ3RoO3RoaXMuX251bWJlclBhdHRlcm49L1srLV0/KD86XGQrXC4/XGQqfFwuXGQrKSg/OltlRV1bKy1dP1xkKyk/L3k7dGhpcy5faWRlbnRpZmllclBhdHRlcm49L1thLXpdKy95fV9za2lwQ29tbWVudCgpe2NvbnN0IGU9dGhpcy5kYXRhLmluZGV4T2YoIlxuIix0aGlzLnBvcyksdD10aGlzLmRhdGEuaW5kZXhPZigiXHIiLHRoaXMucG9zKSxhPU1hdGgubWluKGU8MD90aGlzLmxlbjplLHQ8MD90aGlzLmxlbjp0KTt0aGlzLnBvcz1NYXRoLm1pbihhKzEsdGhpcy5sZW4pfV9nZXROdW1iZXIoKXt0aGlzLl9udW1iZXJQYXR0ZXJuLmxhc3RJbmRleD10aGlzLnBvcztjb25zdCBlPXRoaXMuX251bWJlclBhdHRlcm4uZXhlYyh0aGlzLmRhdGEpO2lmKCFlKXJldHVybiBuZXcgVG9rZW4oJHMubnVtYmVyLDApO2NvbnN0IHQ9cGFyc2VGbG9hdChlWzBdKTtpZighTnVtYmVyLmlzRmluaXRlKHQpKXJldHVybiBuZXcgVG9rZW4oJHMubnVtYmVyLDApO3RoaXMucG9zPXRoaXMuX251bWJlclBhdHRlcm4ubGFzdEluZGV4O3JldHVybiBuZXcgVG9rZW4oJHMubnVtYmVyLHQpfV9nZXRPcGVyYXRvcigpe3RoaXMuX2lkZW50aWZpZXJQYXR0ZXJuLmxhc3RJbmRleD10aGlzLnBvcztjb25zdCBlPXRoaXMuX2lkZW50aWZpZXJQYXR0ZXJuLmV4ZWModGhpcy5kYXRhKTtpZighZSlyZXR1cm4gbmV3IFRva2VuKCRzLm51bWJlciwwKTt0aGlzLnBvcz10aGlzLl9pZGVudGlmaWVyUGF0dGVybi5sYXN0SW5kZXg7Y29uc3QgdD1lWzBdLGE9bGV4ZXJfTGV4ZXIuI2llW3RdO3JldHVybiBhfHxuZXcgVG9rZW4oJHMubnVtYmVyLDApfW5leHQoKXtmb3IoO3RoaXMucG9zPHRoaXMubGVuOyl7Y29uc3QgZT10aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnBvcysrKTtzd2l0Y2goZSl7Y2FzZSAwOmNhc2UgOTpjYXNlIDEwOmNhc2UgMTI6Y2FzZSAxMzpjYXNlIDMyOmJyZWFrO2Nhc2UgMzc6dGhpcy5fc2tpcENvbW1lbnQoKTticmVhaztjYXNlIDEyMzpyZXR1cm4gbGV4ZXJfTGV4ZXIuI3JlLmxicmFjZTtjYXNlIDEyNTpyZXR1cm4gbGV4ZXJfTGV4ZXIuI3JlLnJicmFjZTtjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0Njp0aGlzLnBvcy0tO3JldHVybiB0aGlzLl9nZXROdW1iZXIoKTtkZWZhdWx0OmlmKGU+PTQ4JiZlPD01Nyl7dGhpcy5wb3MtLTtyZXR1cm4gdGhpcy5fZ2V0TnVtYmVyKCl9aWYoZT49OTcmJmU8PTEyMil7dGhpcy5wb3MtLTtyZXR1cm4gdGhpcy5fZ2V0T3BlcmF0b3IoKX1yZXR1cm4gbmV3IFRva2VuKCRzLm51bWJlciwwKX19cmV0dXJuIGxleGVyX0xleGVyLiNyZS5lb2Z9fWNvbnN0IFlzPTAsSnM9MSxRcz0yLFpzPTAsZXI9MSx0cj0yLGFyPTMsbnI9NCxzcj01LHJyPTYsaXI9Nyxvcj04LGxyPTksZnI9MTA7Y2xhc3MgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMudHlwZT1lfX1jbGFzcyBQc1Byb2dyYW0gZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoWnMpO3RoaXMuYm9keT1lfX1jbGFzcyBQc0Jsb2NrIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGVyKTt0aGlzLmluc3RydWN0aW9ucz1lfX1jbGFzcyBQc051bWJlciBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih0cik7dGhpcy52YWx1ZT1lfX1jbGFzcyBQc09wZXJhdG9yIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFyKTt0aGlzLm9wPWV9fWNsYXNzIFBzSWYgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIobnIpO3RoaXMudGhlbj1lfX1jbGFzcyBQc0lmRWxzZSBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHNyKTt0aGlzLnRoZW49ZTt0aGlzLm90aGVyd2lzZT10fX1jbGFzcyBQc0FyZ05vZGUgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIocnIpO3RoaXMuaW5kZXg9ZTt0aGlzLnZhbHVlVHlwZT1Zc319Y2xhc3MgUHNDb25zdE5vZGUgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoaXIpO3RoaXMudmFsdWU9ZTt0aGlzLnZhbHVlVHlwZT0iYm9vbGVhbiI9PXR5cGVvZiBlP0pzOllzfX1jbGFzcyBQc1VuYXJ5Tm9kZSBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlLHQsYT1Rcyl7c3VwZXIob3IpO3RoaXMub3A9ZTt0aGlzLm9wZXJhbmQ9dDt0aGlzLnZhbHVlVHlwZT1hfX1jbGFzcyBQc0JpbmFyeU5vZGUgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSx0LGEsbj1Rcyl7c3VwZXIobHIpO3RoaXMub3A9ZTt0aGlzLmZpcnN0PXQ7dGhpcy5zZWNvbmQ9YTt0aGlzLnZhbHVlVHlwZT1ufX1jbGFzcyBQc1Rlcm5hcnlOb2RlIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUsdCxhLG49UXMpe3N1cGVyKGZyKTt0aGlzLmNvbmQ9ZTt0aGlzLnRoZW49dDt0aGlzLm90aGVyd2lzZT1hO3RoaXMudmFsdWVUeXBlPW59fWNsYXNzIGFzdF9QYXJzZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5sZXhlcj1lO3RoaXMuX3Rva2VuPW51bGx9c3RhdGljIF9pc1JlZ3VsYXJPcGVyYXRvcihlKXtyZXR1cm4gZT49JHMudHJ1ZSYmZTwkcy5pZn1fYWR2YW5jZSgpe3RoaXMuX3Rva2VuPXRoaXMubGV4ZXIubmV4dCgpfV9leHBlY3QoZSl7aWYodGhpcy5fdG9rZW4uaWQhPT1lKXRocm93IG5ldyBGb3JtYXRFcnJvcihgUG9zdFNjcmlwdCBmdW5jdGlvbjogZXhwZWN0ZWQgdG9rZW4gaWQgJHtlfSwgZ290ICR7dGhpcy5fdG9rZW4uaWR9LmApO2NvbnN0IHQ9dGhpcy5fdG9rZW47dGhpcy5fYWR2YW5jZSgpO3JldHVybiB0fXBhcnNlKCl7dGhpcy5fYWR2YW5jZSgpO3RoaXMuX2V4cGVjdCgkcy5sYnJhY2UpO2NvbnN0IGU9dGhpcy5fcGFyc2VCbG9jaygpO3RoaXMuX2V4cGVjdCgkcy5yYnJhY2UpO3RoaXMuX3Rva2VuLmlkIT09JHMuZW9mJiZ3YXJuKCJQb3N0U2NyaXB0IGZ1bmN0aW9uOiB1bmV4cGVjdGVkIGNvbnRlbnQgYWZ0ZXIgY2xvc2luZyBicmFjZS4iKTtyZXR1cm4gbmV3IFBzUHJvZ3JhbShlKX1fcGFyc2VCbG9jaygpe2NvbnN0IGU9W107Zm9yKDs7KXtjb25zdCB0PXRoaXMuX3Rva2VuO3N3aXRjaCh0LmlkKXtjYXNlICRzLm51bWJlcjplLnB1c2gobmV3IFBzTnVtYmVyKHQudmFsdWUpKTt0aGlzLl9hZHZhbmNlKCk7YnJlYWs7Y2FzZSAkcy5sYnJhY2U6e3RoaXMuX2FkdmFuY2UoKTtjb25zdCB0PXRoaXMuX3BhcnNlQmxvY2soKTt0aGlzLl9leHBlY3QoJHMucmJyYWNlKTtpZih0aGlzLl90b2tlbi5pZD09PSRzLmlmKXt0aGlzLl9hZHZhbmNlKCk7ZS5wdXNoKG5ldyBQc0lmKHQpKX1lbHNle2lmKHRoaXMuX3Rva2VuLmlkIT09JHMubGJyYWNlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbjogYSBwcm9jZWR1cmUgYmxvY2sgbXVzdCBiZSBmb2xsb3dlZCBieSAnaWYnIG9yICd74oCmfSBpZmVsc2UnLiIpO3t0aGlzLl9hZHZhbmNlKCk7Y29uc3QgYT10aGlzLl9wYXJzZUJsb2NrKCk7dGhpcy5fZXhwZWN0KCRzLnJicmFjZSk7dGhpcy5fZXhwZWN0KCRzLmlmZWxzZSk7ZS5wdXNoKG5ldyBQc0lmRWxzZSh0LGEpKX19YnJlYWt9Y2FzZSAkcy5yYnJhY2U6Y2FzZSAkcy5lb2Y6cmV0dXJuIG5ldyBQc0Jsb2NrKGUpO2Nhc2UgJHMuaWY6Y2FzZSAkcy5pZmVsc2U6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBQb3N0U2NyaXB0IGZ1bmN0aW9uOiB1bmV4cGVjdGVkICcke3QudmFsdWV9JyBvcGVyYXRvci5gKTtkZWZhdWx0OmlmKGFzdF9QYXJzZXIuX2lzUmVndWxhck9wZXJhdG9yKHQuaWQpKXtlLnB1c2gobmV3IFBzT3BlcmF0b3IodC5pZCkpO3RoaXMuX2FkdmFuY2UoKTticmVha310aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFBvc3RTY3JpcHQgZnVuY3Rpb246IHVuZXhwZWN0ZWQgdG9rZW4gaWQgJHt0LmlkfS5gKX19fX1mdW5jdGlvbiBwYXJzZVBvc3RTY3JpcHRGdW5jdGlvbihlKXtyZXR1cm4gbmV3IGFzdF9QYXJzZXIobmV3IGxleGVyX0xleGVyKGUpKS5wYXJzZSgpfWZ1bmN0aW9uIF9ub2Rlc0VxdWFsKGUsdCl7aWYoZT09PXQpcmV0dXJuITA7aWYoZS50eXBlIT09dC50eXBlKXJldHVybiExO3N3aXRjaChlLnR5cGUpe2Nhc2UgcnI6cmV0dXJuIGUuaW5kZXg9PT10LmluZGV4O2Nhc2UgaXI6cmV0dXJuIGUudmFsdWU9PT10LnZhbHVlO2Nhc2Ugb3I6cmV0dXJuIGUub3A9PT10Lm9wJiZfbm9kZXNFcXVhbChlLm9wZXJhbmQsdC5vcGVyYW5kKTtjYXNlIGxyOnJldHVybiBlLm9wPT09dC5vcCYmX25vZGVzRXF1YWwoZS5maXJzdCx0LmZpcnN0KSYmX25vZGVzRXF1YWwoZS5zZWNvbmQsdC5zZWNvbmQpO2Nhc2UgZnI6cmV0dXJuIF9ub2Rlc0VxdWFsKGUuY29uZCx0LmNvbmQpJiZfbm9kZXNFcXVhbChlLnRoZW4sdC50aGVuKSYmX25vZGVzRXF1YWwoZS5vdGhlcndpc2UsdC5vdGhlcndpc2UpO2RlZmF1bHQ6cmV0dXJuITF9fWNvbnN0IGNyPTEwMDtjbGFzcyBQU1N0YWNrVG9UcmVle3N0YXRpYyNsZT1udWxsO3N0YXRpYyNmZT1udWxsO3N0YXRpYyNjZT1udWxsO3N0YXRpYyNoZT1udWxsO3N0YXRpYyN1ZSgpe3RoaXMuI2xlPW5ldyBTZXQoWyRzLmFkZCwkcy5zdWIsJHMubXVsLCRzLmRpdiwkcy5pZGl2LCRzLm1vZCwkcy5leHAsJHMuYXRhbiwkcy5lcSwkcy5uZSwkcy5ndCwkcy5nZSwkcy5sdCwkcy5sZSwkcy5hbmQsJHMub3IsJHMueG9yLCRzLmJpdHNoaWZ0XSk7dGhpcy4jZmU9bmV3IFNldChbJHMuYWJzLCRzLm5lZywkcy5jZWlsaW5nLCRzLmZsb29yLCRzLnJvdW5kLCRzLnRydW5jYXRlLCRzLnNxcnQsJHMuc2luLCRzLmNvcywkcy5sbiwkcy5sb2csJHMuY3ZpLCRzLmN2ciwkcy5ub3RdKTt0aGlzLiNjZT1uZXcgU2V0KFskcy5hYnMsJHMuY2VpbGluZywkcy5jdmksJHMuY3ZyLCRzLmZsb29yLCRzLnJvdW5kLCRzLnRydW5jYXRlXSk7dGhpcy4jaGU9bmV3IE1hcChbWyRzLmVxLCRzLm5lXSxbJHMubmUsJHMuZXFdLFskcy5sdCwkcy5nZV0sWyRzLmxlLCRzLmd0XSxbJHMuZ3QsJHMubGVdLFskcy5nZSwkcy5sdF1dKX1ldmFsdWF0ZShlLHQpe1BTU3RhY2tUb1RyZWUuI2xlfHxQU1N0YWNrVG9UcmVlLiN1ZSgpO3RoaXMuX2ZhaWxlZD0hMTtpZih0PmNyKXJldHVybiBudWxsO2NvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTx0O2UrKylhLnB1c2gobmV3IFBzQXJnTm9kZShlKSk7dGhpcy5fZXZhbEJsb2NrKGUuYm9keSxhKTtpZih0aGlzLl9mYWlsZWQpcmV0dXJuIG51bGw7UFNTdGFja1RvVHJlZS4jbWUoYSk7cmV0dXJuIGF9c3RhdGljI21lKGUpe2NvbnN0IHQ9bmV3IE1hcCx2aXNpdD1lPT57aWYoIWV8fGUudHlwZT09PXJyfHxlLnR5cGU9PT1pcilyZXR1cm47Y29uc3QgYT10LmdldChlKT8/MDt0LnNldChlLGErMSk7aWYoIShhPjApKXN3aXRjaChlLnR5cGUpe2Nhc2Ugb3I6dmlzaXQoZS5vcGVyYW5kKTticmVhaztjYXNlIGxyOnZpc2l0KGUuZmlyc3QpO3Zpc2l0KGUuc2Vjb25kKTticmVhaztjYXNlIGZyOnZpc2l0KGUuY29uZCk7dmlzaXQoZS50aGVuKTt2aXNpdChlLm90aGVyd2lzZSl9fTtmb3IoY29uc3QgdCBvZiBlKXZpc2l0KHQpO2Zvcihjb25zdFtlLGFdb2YgdClpZihhPjEpe2Uuc2hhcmVkPSEwO2Uuc2hhcmVkQ291bnQ9YX19X2V2YWxCbG9jayhlLHQpe3RoaXMuX2V2YWxCbG9ja0Zyb20oZS5pbnN0cnVjdGlvbnMsMCx0KX1fZXZhbEJsb2NrRnJvbShlLHQsYSl7Zm9yKGxldCBuPXQ7bjxlLmxlbmd0aCYmIXRoaXMuX2ZhaWxlZDtuKyspe2NvbnN0IHQ9ZVtuXTtzd2l0Y2godC50eXBlKXtjYXNlIHRyOmEucHVzaChuZXcgUHNDb25zdE5vZGUodC52YWx1ZSkpO2EubGVuZ3RoPmNyJiYodGhpcy5fZmFpbGVkPSEwKTticmVhaztjYXNlIGFyOnRoaXMuX2V2YWxPcCh0Lm9wLGEpO2JyZWFrO2Nhc2UgbnI6e2lmKGEubGVuZ3RoPDEpe3RoaXMuX2ZhaWxlZD0hMDticmVha31jb25zdCBzPWEucG9wKCkscj1hLnNsaWNlKCk7dGhpcy5fZXZhbEJsb2NrKHQudGhlbixhKTtpZih0aGlzLl9mYWlsZWQpYnJlYWs7aWYoYS5sZW5ndGg9PT1yLmxlbmd0aClmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKylhW2VdIT09cltlXSYmKGFbZV09dGhpcy5fbWFrZVRlcm5hcnkocyxhW2VdLHJbZV0pKTtlbHNle2lmKGEubGVuZ3RoPnIubGVuZ3RoKXtpZihzLnR5cGU9PT1pcil7aWYoIXMudmFsdWUpe2EubGVuZ3RoPTA7YS5wdXNoKC4uLnIpfWJyZWFrfWNvbnN0IHQ9YS5zbGljZSgpO3RoaXMuX2V2YWxCbG9ja0Zyb20oZSxuKzEsdCk7aWYodGhpcy5fZmFpbGVkKWJyZWFrO2NvbnN0IGk9cjt0aGlzLl9ldmFsQmxvY2tGcm9tKGUsbisxLGkpO2lmKHRoaXMuX2ZhaWxlZClicmVhaztpZih0Lmxlbmd0aCE9PWkubGVuZ3RoKXtjb25zdCBlPW5ldyBQc0NvbnN0Tm9kZSgwKTtmb3IoO3QubGVuZ3RoPGkubGVuZ3RoOyl0LnB1c2goZSk7Zm9yKDtpLmxlbmd0aDx0Lmxlbmd0aDspaS5wdXNoKGUpfWEubGVuZ3RoPTA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspYS5wdXNoKHRoaXMuX21ha2VUZXJuYXJ5KHMsdFtlXSxpW2VdKSk7cmV0dXJufXRoaXMuX2ZhaWxlZD0hMH1icmVha31jYXNlIHNyOntpZihhLmxlbmd0aDwxKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y29uc3QgZT1hLnBvcCgpLG49YS5zbGljZSgpLHM9bi5zbGljZSgpO3RoaXMuX2V2YWxCbG9jayh0LnRoZW4scyk7aWYodGhpcy5fZmFpbGVkKWJyZWFrO2NvbnN0IHI9bi5zbGljZSgpO3RoaXMuX2V2YWxCbG9jayh0Lm90aGVyd2lzZSxyKTtpZih0aGlzLl9mYWlsZWQpYnJlYWs7aWYocy5sZW5ndGghPT1yLmxlbmd0aCl7Y29uc3QgZT1uZXcgUHNDb25zdE5vZGUoMCk7Zm9yKDtzLmxlbmd0aDxyLmxlbmd0aDspcy5wdXNoKGUpO2Zvcig7ci5sZW5ndGg8cy5sZW5ndGg7KXIucHVzaChlKX1hLmxlbmd0aD0wO2ZvcihsZXQgdD0wO3Q8cy5sZW5ndGg7dCsrKWEucHVzaCh0aGlzLl9tYWtlVGVybmFyeShlLHNbdF0sclt0XSkpO2JyZWFrfX19fV9ldmFsT3AoZSx0KXtpZihQU1N0YWNrVG9UcmVlLiNsZS5oYXMoZSkpe2lmKHQubGVuZ3RoPDIpe3RoaXMuX2ZhaWxlZD0hMDtyZXR1cm59Y29uc3QgYT10LnBvcCgpLG49dC5wb3AoKTt0LnB1c2godGhpcy5fbWFrZUJpbmFyeShlLGEsbikpO3JldHVybn1pZihQU1N0YWNrVG9UcmVlLiNmZS5oYXMoZSkpe2lmKHQubGVuZ3RoPDEpe3RoaXMuX2ZhaWxlZD0hMDtyZXR1cm59dC5wdXNoKHRoaXMuX21ha2VVbmFyeShlLHQucG9wKCkpKX1lbHNlIHN3aXRjaChlKXtjYXNlICRzLnRydWU6dC5wdXNoKG5ldyBQc0NvbnN0Tm9kZSghMCkpO3QubGVuZ3RoPmNyJiYodGhpcy5fZmFpbGVkPSEwKTticmVhaztjYXNlICRzLmZhbHNlOnQucHVzaChuZXcgUHNDb25zdE5vZGUoITEpKTt0Lmxlbmd0aD5jciYmKHRoaXMuX2ZhaWxlZD0hMCk7YnJlYWs7Y2FzZSAkcy5kdXA6aWYodC5sZW5ndGg8MSl7dGhpcy5fZmFpbGVkPSEwO2JyZWFrfXQucHVzaCh0LmF0KC0xKSk7dC5sZW5ndGg+Y3ImJih0aGlzLl9mYWlsZWQ9ITApO2JyZWFrO2Nhc2UgJHMuZXhjaDp7aWYodC5sZW5ndGg8Mil7dGhpcy5fZmFpbGVkPSEwO2JyZWFrfWNvbnN0IGU9dC5wb3AoKSxhPXQucG9wKCk7dC5wdXNoKGUsYSk7YnJlYWt9Y2FzZSAkcy5wb3A6aWYodC5sZW5ndGg8MSl7dGhpcy5fZmFpbGVkPSEwO2JyZWFrfXQucG9wKCk7YnJlYWs7Y2FzZSAkcy5jb3B5OntpZih0Lmxlbmd0aDwxKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y29uc3QgZT10LnBvcCgpO2lmKGUudHlwZT09PWlyKXtjb25zdCBhPTB8ZS52YWx1ZTtpZigwPT09YSk7ZWxzZSBpZihhPDB8fGE+dC5sZW5ndGgpdGhpcy5fZmFpbGVkPSEwO2Vsc2V7dC5wdXNoKC4uLnQuc2xpY2UoLWEpKTt0Lmxlbmd0aD5jciYmKHRoaXMuX2ZhaWxlZD0hMCl9fWVsc2UgdGhpcy5fZmFpbGVkPSEwO2JyZWFrfWNhc2UgJHMuaW5kZXg6e2lmKHQubGVuZ3RoPDEpe3RoaXMuX2ZhaWxlZD0hMDticmVha31jb25zdCBlPXQucG9wKCk7aWYoZS50eXBlPT09aXIpe2NvbnN0IGE9MHxlLnZhbHVlO2E8MHx8YT49dC5sZW5ndGg/dGhpcy5fZmFpbGVkPSEwOnQucHVzaCh0LmF0KC1hLTEpKX1lbHNlIHRoaXMuX2ZhaWxlZD0hMDticmVha31jYXNlICRzLnJvbGw6e2lmKHQubGVuZ3RoPDIpe3RoaXMuX2ZhaWxlZD0hMDticmVha31jb25zdCBlPXQucG9wKCksYT10LnBvcCgpO2lmKGEudHlwZT09PWlyJiZlLnR5cGU9PT1pcil7Y29uc3Qgbj0wfGEudmFsdWU7aWYoMD09PW4pO2Vsc2UgaWYobjwwfHxuPnQubGVuZ3RoKXRoaXMuX2ZhaWxlZD0hMDtlbHNle2NvbnN0IGE9KCgwfGUudmFsdWUpJW4rbiklbjtpZihhPjApe2NvbnN0IGU9dC5zcGxpY2UoLW4sbik7dC5wdXNoKC4uLmUuc2xpY2Uobi1hKSwuLi5lLnNsaWNlKDAsbi1hKSl9fX1lbHNlIHRoaXMuX2ZhaWxlZD0hMDticmVha31kZWZhdWx0OnRoaXMuX2ZhaWxlZD0hMH19X21ha2VCaW5hcnkoZSx0LGEpe2lmKHQudHlwZT09PWlyJiZhLnR5cGU9PT1pcil7Y29uc3Qgbj1mdW5jdGlvbiBfZXZhbEJpbmFyeUNvbnN0KGUsdCxhKXtzd2l0Y2goZSl7Y2FzZSAkcy5hZGQ6cmV0dXJuIHQrYTtjYXNlICRzLnN1YjpyZXR1cm4gdC1hO2Nhc2UgJHMubXVsOnJldHVybiB0KmE7Y2FzZSAkcy5kaXY6cmV0dXJuIDAhPT1hP3QvYTowO2Nhc2UgJHMuaWRpdjpyZXR1cm4gMCE9PWE/TWF0aC50cnVuYyh0L2EpOjA7Y2FzZSAkcy5tb2Q6cmV0dXJuIDAhPT1hP3QtTWF0aC50cnVuYyh0L2EpKmE6MDtjYXNlICRzLmV4cDp7Y29uc3QgZT10KiphO3JldHVybiBOdW1iZXIuaXNGaW5pdGUoZSk/ZTp2b2lkIDB9Y2FzZSAkcy5hdGFuOntsZXQgZT1NYXRoLmF0YW4yKHQsYSkqKDE4MC9NYXRoLlBJKTtlPDAmJihlKz0zNjApO3JldHVybiBlfWNhc2UgJHMuZXE6cmV0dXJuIHQ9PT1hO2Nhc2UgJHMubmU6cmV0dXJuIHQhPT1hO2Nhc2UgJHMuZ3Q6cmV0dXJuIHQ+YTtjYXNlICRzLmdlOnJldHVybiB0Pj1hO2Nhc2UgJHMubHQ6cmV0dXJuIHQ8YTtjYXNlICRzLmxlOnJldHVybiB0PD1hO2Nhc2UgJHMuYW5kOnJldHVybiJib29sZWFuIj09dHlwZW9mIHQ/dCYmYTp0JmF8MDtjYXNlICRzLm9yOnJldHVybiJib29sZWFuIj09dHlwZW9mIHQ/dHx8YTp0fGF8MDtjYXNlICRzLnhvcjpyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0P3QhPT1hOnReYXwwO2Nhc2UgJHMuYml0c2hpZnQ6cmV0dXJuIGE+PTA/dDw8YXwwOnQ+Pi1hfDA7Y2FzZSAkcy5taW46cmV0dXJuIE1hdGgubWluKHQsYSk7Y2FzZSAkcy5tYXg6cmV0dXJuIE1hdGgubWF4KHQsYSk7ZGVmYXVsdDpyZXR1cm59fShlLGEudmFsdWUsdC52YWx1ZSk7aWYodm9pZCAwIT09bilyZXR1cm4gbmV3IFBzQ29uc3ROb2RlKG4pfWlmKF9ub2Rlc0VxdWFsKHQsYSkpc3dpdGNoKGUpe2Nhc2UgJHMuc3ViOnJldHVybiBuZXcgUHNDb25zdE5vZGUoMCk7Y2FzZSAkcy54b3I6cmV0dXJuIG5ldyBQc0NvbnN0Tm9kZSh0LnZhbHVlVHlwZSE9PUpzJiYwKTtjYXNlICRzLmFuZDpjYXNlICRzLm9yOmNhc2UgJHMubWluOmNhc2UgJHMubWF4OnJldHVybiB0O2Nhc2UgJHMuZXE6Y2FzZSAkcy5nZTpjYXNlICRzLmxlOnJldHVybiBuZXcgUHNDb25zdE5vZGUoITApO2Nhc2UgJHMubmU6Y2FzZSAkcy5ndDpjYXNlICRzLmx0OnJldHVybiBuZXcgUHNDb25zdE5vZGUoITEpfWlmKHQudHlwZT09PWlyKXtjb25zdCBuPXQudmFsdWU7c3dpdGNoKGUpe2Nhc2UgJHMuYWRkOmNhc2UgJHMuc3ViOmlmKDA9PT1uKXJldHVybiBhO2JyZWFrO2Nhc2UgJHMubXVsOmlmKDE9PT1uKXJldHVybiBhO2lmKDA9PT1uKXJldHVybiB0O2lmKC0xPT09bilyZXR1cm4gdGhpcy5fbWFrZVVuYXJ5KCRzLm5lZyxhKTticmVhaztjYXNlICRzLmRpdjppZigwIT09bilyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeSgkcy5tdWwsbmV3IFBzQ29uc3ROb2RlKDEvbiksYSk7YnJlYWs7Y2FzZSAkcy5pZGl2OmlmKDE9PT1uKXJldHVybiBhO2JyZWFrO2Nhc2UgJHMuZXhwOmlmKDE9PT1uKXJldHVybiBhO2lmKC0xPT09bilyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeSgkcy5kaXYsYSxuZXcgUHNDb25zdE5vZGUoMSkpO2lmKC41PT09bilyZXR1cm4gdGhpcy5fbWFrZVVuYXJ5KCRzLnNxcnQsYSk7aWYoLjI1PT09bil7Y29uc3QgZT10aGlzLl9tYWtlVW5hcnkoJHMuc3FydCxhKTtyZXR1cm4gdGhpcy5fbWFrZVVuYXJ5KCRzLnNxcnQsZSl9aWYoMj09PW4pcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkoJHMubXVsLGEsYSk7aWYoMz09PW4pcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkoJHMubXVsLHRoaXMuX21ha2VCaW5hcnkoJHMubXVsLGEsYSksYSk7aWYoND09PW4pe2NvbnN0IGU9dGhpcy5fbWFrZUJpbmFyeSgkcy5tdWwsYSxhKTtyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeSgkcy5tdWwsZSxlKX1pZigwPT09bilyZXR1cm4gbmV3IFBzQ29uc3ROb2RlKDEpO2JyZWFrO2Nhc2UgJHMuYW5kOmlmKCEwPT09bilyZXR1cm4gYTtpZighMT09PW4pcmV0dXJuIHQ7YnJlYWs7Y2FzZSAkcy5vcjppZighMT09PW4pcmV0dXJuIGE7aWYoITA9PT1uKXJldHVybiB0O2JyZWFrO2Nhc2UgJHMubWluOmlmKGEudHlwZT09PWxyJiZhLm9wPT09JHMubWF4JiZhLmZpcnN0LnR5cGU9PT1pciYmYS5maXJzdC52YWx1ZT49bilyZXR1cm4gdDticmVhaztjYXNlICRzLm1heDppZihhLnR5cGU9PT1sciYmYS5vcD09PSRzLm1pbiYmYS5maXJzdC50eXBlPT09aXImJmEuZmlyc3QudmFsdWU8PW4pcmV0dXJuIHR9fWlmKGEudHlwZT09PWlyKXtjb25zdCBuPWEudmFsdWU7c3dpdGNoKGUpe2Nhc2UgJHMuYWRkOmlmKDA9PT1uKXJldHVybiB0O2JyZWFrO2Nhc2UgJHMuc3ViOmlmKDA9PT1uKXJldHVybiB0aGlzLl9tYWtlVW5hcnkoJHMubmVnLHQpO2JyZWFrO2Nhc2UgJHMubXVsOmlmKDE9PT1uKXJldHVybiB0O2lmKDA9PT1uKXJldHVybiBhO2lmKC0xPT09bilyZXR1cm4gdGhpcy5fbWFrZVVuYXJ5KCRzLm5lZyx0KTticmVhaztjYXNlICRzLmFuZDppZighMD09PW4pcmV0dXJuIHQ7aWYoITE9PT1uKXJldHVybiBhO2JyZWFrO2Nhc2UgJHMub3I6aWYoITE9PT1uKXJldHVybiB0O2lmKCEwPT09bilyZXR1cm4gYX19cmV0dXJuIG5ldyBQc0JpbmFyeU5vZGUoZSx0LGEsZnVuY3Rpb24gX2JpbmFyeVZhbHVlVHlwZShlLHQsYSl7c3dpdGNoKGUpe2Nhc2UgJHMuZXE6Y2FzZSAkcy5uZTpjYXNlICRzLmd0OmNhc2UgJHMuZ2U6Y2FzZSAkcy5sdDpjYXNlICRzLmxlOnJldHVybiBKcztjYXNlICRzLmFuZDpjYXNlICRzLm9yOmNhc2UgJHMueG9yOnJldHVybiB0PT09YSYmdCE9PVFzP3Q6UXM7ZGVmYXVsdDpyZXR1cm4gWXN9fShlLHQudmFsdWVUeXBlLGEudmFsdWVUeXBlKSl9X21ha2VVbmFyeShlLHQpe2lmKHQudHlwZT09PWlyKXtjb25zdCBhPWZ1bmN0aW9uIF9ldmFsVW5hcnlDb25zdChlLHQpe3N3aXRjaChlKXtjYXNlICRzLmFiczpyZXR1cm4gTWF0aC5hYnModCk7Y2FzZSAkcy5uZWc6cmV0dXJuLXQ7Y2FzZSAkcy5jZWlsaW5nOnJldHVybiBNYXRoLmNlaWwodCk7Y2FzZSAkcy5mbG9vcjpyZXR1cm4gTWF0aC5mbG9vcih0KTtjYXNlICRzLnJvdW5kOnJldHVybiBNYXRoLnJvdW5kKHQpO2Nhc2UgJHMudHJ1bmNhdGU6cmV0dXJuIE1hdGgudHJ1bmModCk7Y2FzZSAkcy5zcXJ0Ontjb25zdCBlPU1hdGguc3FydCh0KTtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGUpP2U6dm9pZCAwfWNhc2UgJHMuc2luOnJldHVybiBNYXRoLnNpbih0JTM2MCpNYXRoLlBJLzE4MCk7Y2FzZSAkcy5jb3M6cmV0dXJuIE1hdGguY29zKHQlMzYwKk1hdGguUEkvMTgwKTtjYXNlICRzLmxuOntjb25zdCBlPU1hdGgubG9nKHQpO3JldHVybiBOdW1iZXIuaXNGaW5pdGUoZSk/ZTp2b2lkIDB9Y2FzZSAkcy5sb2c6e2NvbnN0IGU9TWF0aC5sb2cxMCh0KTtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGUpP2U6dm9pZCAwfWNhc2UgJHMuY3ZpOnJldHVybiBNYXRoLnRydW5jKHQpO2Nhc2UgJHMuY3ZyOnJldHVybiB0O2Nhc2UgJHMubm90OnJldHVybiJib29sZWFuIj09dHlwZW9mIHQ/IXQ6fnQ7ZGVmYXVsdDpyZXR1cm59fShlLHQudmFsdWUpO2lmKHZvaWQgMCE9PWEpcmV0dXJuIG5ldyBQc0NvbnN0Tm9kZShhKX1pZihlPT09JHMubm90JiZ0LnR5cGU9PT1scil7Y29uc3QgZT1QU1N0YWNrVG9UcmVlLiNoZS5nZXQodC5vcCk7aWYodm9pZCAwIT09ZSlyZXR1cm4gbmV3IFBzQmluYXJ5Tm9kZShlLHQuZmlyc3QsdC5zZWNvbmQsSnMpfWlmKGU9PT0kcy5uZWcmJnQudHlwZT09PWxyJiZ0Lm9wPT09JHMuc3ViKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KCRzLnN1Yix0LnNlY29uZCx0LmZpcnN0KTtpZih0LnR5cGU9PT1vcil7aWYoZT09PSRzLm5lZyYmdC5vcD09PSRzLm5lZ3x8ZT09PSRzLm5vdCYmdC5vcD09PSRzLm5vdClyZXR1cm4gdC5vcGVyYW5kO2lmKGU9PT0kcy5hYnMmJnQub3A9PT0kcy5uZWcpcmV0dXJuIHRoaXMuX21ha2VVbmFyeSgkcy5hYnMsdC5vcGVyYW5kKTtpZihQU1N0YWNrVG9UcmVlLiNjZS5oYXMoZSkmJmU9PT10Lm9wKXJldHVybiB0fXJldHVybiBuZXcgUHNVbmFyeU5vZGUoZSx0LGZ1bmN0aW9uIF91bmFyeVZhbHVlVHlwZShlLHQpe3JldHVybiBlPT09JHMubm90P3Q6WXN9KGUsdC52YWx1ZVR5cGUpKX1fbWFrZVRlcm5hcnkoZSx0LGEpe2lmKGUudHlwZT09PWlyKXJldHVybiBlLnZhbHVlP3Q6YTtpZihfbm9kZXNFcXVhbCh0LGEpKXJldHVybiB0O2lmKHQudHlwZT09PWlyJiZhLnR5cGU9PT1pcil7aWYoITA9PT10LnZhbHVlJiYhMT09PWEudmFsdWUpcmV0dXJuIGU7aWYoITE9PT10LnZhbHVlJiYhMD09PWEudmFsdWUpcmV0dXJuIHRoaXMuX21ha2VVbmFyeSgkcy5ub3QsZSl9aWYoZS50eXBlPT09bHIpe2NvbnN0e29wOm4sZmlyc3Q6cyxzZWNvbmQ6cn09ZTtpZihuPT09JHMuZ3R8fG49PT0kcy5nZSl7aWYoX25vZGVzRXF1YWwodCxzKSYmX25vZGVzRXF1YWwoYSxyKSlyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeSgkcy5taW4scyxyKTtpZihfbm9kZXNFcXVhbCh0LHIpJiZfbm9kZXNFcXVhbChhLHMpKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KCRzLm1heCxzLHIpfWVsc2UgaWYobj09PSRzLmx0fHxuPT09JHMubGUpe2lmKF9ub2Rlc0VxdWFsKHQscykmJl9ub2Rlc0VxdWFsKGEscikpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkoJHMubWF4LHMscik7aWYoX25vZGVzRXF1YWwodCxyKSYmX25vZGVzRXF1YWwoYSxzKSlyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeSgkcy5taW4scyxyKX19cmV0dXJuIG5ldyBQc1Rlcm5hcnlOb2RlKGUsdCxhLHQudmFsdWVUeXBlPT09YS52YWx1ZVR5cGU/dC52YWx1ZVR5cGU6UXMpfX1jb25zdCBocj0wLHVyPTEsbXI9Mixwcj0zLGRyPTQsZ3I9NSxicj02LHdyPTcsanI9OCxrcj05LHlyPTEwLHFyPTExLHZyPTEyLFNyPTEzLEFyPTE0LHhyPTE1LENyPTE2LElyPTE3LEZyPTE4LFRyPTE5LE9yPTIwLFJyPTIxLEhyPTIyLERyPTIzLE1yPTI0LE5yPTI1LFByPTI2LEVyPTI3LF9yPTI4LHpyPTI5LExyPTMwLFVyPTMxLFhyPTMyLFdyPTMzLEtyPTM0LEdyPTM1LFZyPTM2LCRyPTM3LFlyPTM4LEpyPTM5LFFyPTQwLFpyPU1hdGguUEkvMTgwLGVpPTE4MC9NYXRoLlBJO2NsYXNzIFBzSnNDb21waWxlcntzdGF0aWMjcGU9bmV3IEZsb2F0NjRBcnJheSg2NCk7c3RhdGljI2RlPW5ldyBGbG9hdDY0QXJyYXkoNjQpO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5uSW49ZS5sZW5ndGg+PjE7dGhpcy5uT3V0PXQubGVuZ3RoPj4xO3RoaXMucmFuZ2U9dDt0aGlzLmlyPVtdO3RoaXMuX3RtcE1hcD1uZXcgTWFwO3RoaXMuX25leHRUbXA9MH1fY29tcGlsZU5vZGUoZSl7aWYoZS5zaGFyZWQpe2NvbnN0IHQ9dGhpcy5fdG1wTWFwLmdldChlKTtpZih2b2lkIDAhPT10KXt0aGlzLmlyLnB1c2goUXIsdCk7cmV0dXJuITB9aWYoIXRoaXMuX2NvbXBpbGVOb2RlSW1wbChlKSlyZXR1cm4hMTtjb25zdCBhPXRoaXMuX25leHRUbXArKzt0aGlzLl90bXBNYXAuc2V0KGUsYSk7dGhpcy5pci5wdXNoKEpyLGEpO3JldHVybiEwfXJldHVybiB0aGlzLl9jb21waWxlTm9kZUltcGwoZSl9X2NvbXBpbGVOb2RlSW1wbChlKXtzd2l0Y2goZS50eXBlKXtjYXNlIHJyOnRoaXMuaXIucHVzaChocixlLmluZGV4KTtyZXR1cm4hMDtjYXNlIGlyOntjb25zdCB0PWUudmFsdWU7dGhpcy5pci5wdXNoKHVyLCJib29sZWFuIj09dHlwZW9mIHQ/TnVtYmVyKHQpOnQpO3JldHVybiEwfWNhc2Ugb3I6cmV0dXJuIHRoaXMuX2NvbXBpbGVVbmFyeShlKTtjYXNlIGxyOnJldHVybiB0aGlzLl9jb21waWxlQmluYXJ5KGUpO2Nhc2UgZnI6cmV0dXJuIHRoaXMuX2NvbXBpbGVUZXJuYXJ5KGUpO2RlZmF1bHQ6cmV0dXJuITF9fV9jb21waWxlVW5hcnkoZSl7Y29uc3R7b3A6dCxvcGVyYW5kOmEsdmFsdWVUeXBlOm59PWU7aWYodD09PSRzLmN2cilyZXR1cm4gdGhpcy5fY29tcGlsZU5vZGUoYSk7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGEpKXJldHVybiExO3N3aXRjaCh0KXtjYXNlICRzLmFiczp0aGlzLmlyLnB1c2goZ3IpO2JyZWFrO2Nhc2UgJHMubmVnOnRoaXMuaXIucHVzaChicik7YnJlYWs7Y2FzZSAkcy5jZWlsaW5nOnRoaXMuaXIucHVzaCh3cik7YnJlYWs7Y2FzZSAkcy5mbG9vcjp0aGlzLmlyLnB1c2goanIpO2JyZWFrO2Nhc2UgJHMucm91bmQ6dGhpcy5pci5wdXNoKGtyKTticmVhaztjYXNlICRzLnRydW5jYXRlOnRoaXMuaXIucHVzaCh5cik7YnJlYWs7Y2FzZSAkcy5zcXJ0OnRoaXMuaXIucHVzaChTcik7YnJlYWs7Y2FzZSAkcy5zaW46dGhpcy5pci5wdXNoKEFyKTticmVhaztjYXNlICRzLmNvczp0aGlzLmlyLnB1c2goeHIpO2JyZWFrO2Nhc2UgJHMubG46dGhpcy5pci5wdXNoKENyKTticmVhaztjYXNlICRzLmxvZzp0aGlzLmlyLnB1c2goSXIpO2JyZWFrO2Nhc2UgJHMuY3ZpOnRoaXMuaXIucHVzaChGcik7YnJlYWs7Y2FzZSAkcy5ub3Q6aWYobj09PUpzKXRoaXMuaXIucHVzaChxcik7ZWxzZXtpZihuIT09WXMpcmV0dXJuITE7dGhpcy5pci5wdXNoKHZyKX1icmVhaztkZWZhdWx0OnJldHVybiExfXJldHVybiEwfV9jb21waWxlQmluYXJ5KGUpe2NvbnN0e29wOnQsZmlyc3Q6YSxzZWNvbmQ6bn09ZTtpZih0PT09JHMuYml0c2hpZnQpe2lmKGEudHlwZSE9PWlyfHwhTnVtYmVyLmlzSW50ZWdlcihhLnZhbHVlKSlyZXR1cm4hMTtpZighdGhpcy5fY29tcGlsZU5vZGUobikpcmV0dXJuITE7dGhpcy5pci5wdXNoKFRyLGEudmFsdWUpO3JldHVybiEwfWlmKCF0aGlzLl9jb21waWxlTm9kZShuKSlyZXR1cm4hMTtpZighdGhpcy5fY29tcGlsZU5vZGUoYSkpcmV0dXJuITE7c3dpdGNoKHQpe2Nhc2UgJHMuYWRkOnRoaXMuaXIucHVzaChPcik7YnJlYWs7Y2FzZSAkcy5zdWI6dGhpcy5pci5wdXNoKFJyKTticmVhaztjYXNlICRzLm11bDp0aGlzLmlyLnB1c2goSHIpO2JyZWFrO2Nhc2UgJHMuZGl2OnRoaXMuaXIucHVzaChEcik7YnJlYWs7Y2FzZSAkcy5pZGl2OnRoaXMuaXIucHVzaChNcik7YnJlYWs7Y2FzZSAkcy5tb2Q6dGhpcy5pci5wdXNoKE5yKTticmVhaztjYXNlICRzLmV4cDp0aGlzLmlyLnB1c2goUHIpO2JyZWFrO2Nhc2UgJHMuZXE6dGhpcy5pci5wdXNoKEVyKTticmVhaztjYXNlICRzLm5lOnRoaXMuaXIucHVzaChfcik7YnJlYWs7Y2FzZSAkcy5ndDp0aGlzLmlyLnB1c2goenIpO2JyZWFrO2Nhc2UgJHMuZ2U6dGhpcy5pci5wdXNoKExyKTticmVhaztjYXNlICRzLmx0OnRoaXMuaXIucHVzaChVcik7YnJlYWs7Y2FzZSAkcy5sZTp0aGlzLmlyLnB1c2goWHIpO2JyZWFrO2Nhc2UgJHMuYW5kOnRoaXMuaXIucHVzaChXcik7YnJlYWs7Y2FzZSAkcy5vcjp0aGlzLmlyLnB1c2goS3IpO2JyZWFrO2Nhc2UgJHMueG9yOnRoaXMuaXIucHVzaChHcik7YnJlYWs7Y2FzZSAkcy5hdGFuOnRoaXMuaXIucHVzaChWcik7YnJlYWs7Y2FzZSAkcy5taW46dGhpcy5pci5wdXNoKCRyKTticmVhaztjYXNlICRzLm1heDp0aGlzLmlyLnB1c2goWXIpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9cmV0dXJuITB9X2NvbXBpbGVUZXJuYXJ5KGUpe2lmKCF0aGlzLl9jb21waWxlTm9kZShlLmNvbmQpKXJldHVybiExO3RoaXMuaXIucHVzaChwciwwKTtjb25zdCB0PXRoaXMuaXIubGVuZ3RoLTE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUudGhlbikpcmV0dXJuITE7dGhpcy5pci5wdXNoKGRyLDApO2NvbnN0IGE9dGhpcy5pci5sZW5ndGgtMTt0aGlzLmlyW3RdPXRoaXMuaXIubGVuZ3RoO2lmKCF0aGlzLl9jb21waWxlTm9kZShlLm90aGVyd2lzZSkpcmV0dXJuITE7dGhpcy5pclthXT10aGlzLmlyLmxlbmd0aDtyZXR1cm4hMH1jb21waWxlKGUpe2NvbnN0IHQ9KG5ldyBQU1N0YWNrVG9UcmVlKS5ldmFsdWF0ZShlLHRoaXMubkluKTtpZighdHx8dC5sZW5ndGg8dGhpcy5uT3V0KXJldHVybiBudWxsO2ZvcihsZXQgZT0wO2U8dGhpcy5uT3V0O2UrKyl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKHRbZV0pKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5yYW5nZVsyKmVdLG49dGhpcy5yYW5nZVsyKmUrMV07dGhpcy5pci5wdXNoKG1yLGUsYSxuKX1yZXR1cm4gbmV3IEZsb2F0NjRBcnJheSh0aGlzLmlyKX1zdGF0aWMgZXhlY3V0ZShlLHQsYSxuLHMpe2xldCByPTAsaT0wO2NvbnN0IG89ZS5sZW5ndGgsbD10aGlzLiNwZSxmPXRoaXMuI2RlO2Zvcig7cjxvOylzd2l0Y2goMHxlW3IrK10pe2Nhc2UgaHI6bFtpKytdPXRbYSsoMHxlW3IrK10pXTticmVhaztjYXNlIHVyOmxbaSsrXT1lW3IrK107YnJlYWs7Y2FzZSBtcjp7Y29uc3QgdD0wfGVbcisrXSxhPWVbcisrXSxvPWVbcisrXTtuW3MrdF09TWF0aENsYW1wKGxbLS1pXSxhLG8pO2JyZWFrfWNhc2UgcHI6e2NvbnN0IHQ9ZVtyKytdOzA9PT1sWy0taV0mJihyPXQpO2JyZWFrfWNhc2UgZHI6cj1lW3JdO2JyZWFrO2Nhc2UgZ3I6bFtpLTFdPU1hdGguYWJzKGxbaS0xXSk7YnJlYWs7Y2FzZSBicjpsW2ktMV09LWxbaS0xXTticmVhaztjYXNlIHdyOmxbaS0xXT1NYXRoLmNlaWwobFtpLTFdKTticmVhaztjYXNlIGpyOmxbaS0xXT1NYXRoLmZsb29yKGxbaS0xXSk7YnJlYWs7Y2FzZSBrcjpsW2ktMV09TWF0aC5mbG9vcihsW2ktMV0rLjUpO2JyZWFrO2Nhc2UgeXI6bFtpLTFdPU1hdGgudHJ1bmMobFtpLTFdKTticmVhaztjYXNlIHFyOmxbaS0xXT0wIT09bFtpLTFdPzA6MTticmVhaztjYXNlIHZyOmxbaS0xXT1+bFtpLTFdO2JyZWFrO2Nhc2UgU3I6bFtpLTFdPU1hdGguc3FydChsW2ktMV0pO2JyZWFrO2Nhc2UgQXI6bFtpLTFdPU1hdGguc2luKGxbaS0xXSUzNjAqWnIpO2JyZWFrO2Nhc2UgeHI6bFtpLTFdPU1hdGguY29zKGxbaS0xXSUzNjAqWnIpO2JyZWFrO2Nhc2UgQ3I6bFtpLTFdPU1hdGgubG9nKGxbaS0xXSk7YnJlYWs7Y2FzZSBJcjpsW2ktMV09TWF0aC5sb2cxMChsW2ktMV0pO2JyZWFrO2Nhc2UgRnI6bFtpLTFdPTB8TWF0aC50cnVuYyhsW2ktMV0pO2JyZWFrO2Nhc2UgVHI6e2NvbnN0IHQ9ZVtyKytdLGE9MHxsW2ktMV07bFtpLTFdPXQ+MD9hPDx0OnQ8MD9hPj4tdDphO2JyZWFrfWNhc2UgT3I6e2NvbnN0IGU9bFstLWldO2xbaS0xXSs9ZTticmVha31jYXNlIFJyOntjb25zdCBlPWxbLS1pXTtsW2ktMV0tPWU7YnJlYWt9Y2FzZSBIcjp7Y29uc3QgZT1sWy0taV07bFtpLTFdKj1lO2JyZWFrfWNhc2UgRHI6e2NvbnN0IGU9bFstLWldO2xbaS0xXT0wIT09ZT9sW2ktMV0vZTowO2JyZWFrfWNhc2UgTXI6e2NvbnN0IGU9bFstLWldO2xbaS0xXT0wIT09ZT9NYXRoLnRydW5jKGxbaS0xXS9lKTowO2JyZWFrfWNhc2UgTnI6e2NvbnN0IGU9bFstLWldO2xbaS0xXT0wIT09ZT9sW2ktMV0lZTowO2JyZWFrfWNhc2UgUHI6e2NvbnN0IGU9bFstLWldO2xbaS0xXSoqPWU7YnJlYWt9Y2FzZSBFcjp7Y29uc3QgZT1sWy0taV07bFtpLTFdPWxbaS0xXT09PWU/MTowO2JyZWFrfWNhc2UgX3I6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1sW2ktMV0hPT1lPzE6MDticmVha31jYXNlIHpyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09bFtpLTFdPmU/MTowO2JyZWFrfWNhc2UgTHI6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1sW2ktMV0+PWU/MTowO2JyZWFrfWNhc2UgVXI6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1sW2ktMV08ZT8xOjA7YnJlYWt9Y2FzZSBYcjp7Y29uc3QgZT1sWy0taV07bFtpLTFdPWxbaS0xXTw9ZT8xOjA7YnJlYWt9Y2FzZSBXcjp7Y29uc3QgZT0wfGxbLS1pXTtsW2ktMV09KDB8bFtpLTFdKSZlO2JyZWFrfWNhc2UgS3I6e2NvbnN0IGU9MHxsWy0taV07bFtpLTFdPTB8bFtpLTFdfGU7YnJlYWt9Y2FzZSBHcjp7Y29uc3QgZT0wfGxbLS1pXTtsW2ktMV09KDB8bFtpLTFdKV5lO2JyZWFrfWNhc2UgVnI6e2NvbnN0IGU9bFstLWldLHQ9TWF0aC5hdGFuMihsW2ktMV0sZSkqZWk7bFtpLTFdPXQ8MD90KzM2MDp0O2JyZWFrfWNhc2UgJHI6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1NYXRoLm1pbihsW2ktMV0sZSk7YnJlYWt9Y2FzZSBZcjp7Y29uc3QgZT1sWy0taV07bFtpLTFdPU1hdGgubWF4KGxbaS0xXSxlKTticmVha31jYXNlIEpyOmZbMHxlW3IrK11dPWxbaS0xXTticmVhaztjYXNlIFFyOmxbaSsrXT1mWzB8ZVtyKytdXX19fWNsYXNzIFBTU3RhY2tCYXNlZEludGVycHJldGVye3N0YXRpYyNwZT1uZXcgRmxvYXQ2NEFycmF5KDEwMCk7c3RhdGljI2dlPTA7c3RhdGljI2JlKGUpe3RoaXMuI2dlPHRoaXMuI3BlLmxlbmd0aCYmKHRoaXMuI3BlW3RoaXMuI2dlKytdPWUpfXN0YXRpYyN3ZShlKXtjb25zdCB0PXRoaXMuI3BlO3N3aXRjaChlKXtjYXNlICRzLnRydWU6dGhpcy4jYmUoMSk7YnJlYWs7Y2FzZSAkcy5mYWxzZTp0aGlzLiNiZSgwKTticmVhaztjYXNlICRzLmFiczp0W3RoaXMuI2dlLTFdPU1hdGguYWJzKHRbdGhpcy4jZ2UtMV0pO2JyZWFrO2Nhc2UgJHMubmVnOnRbdGhpcy4jZ2UtMV09LXRbdGhpcy4jZ2UtMV07YnJlYWs7Y2FzZSAkcy5jZWlsaW5nOnRbdGhpcy4jZ2UtMV09TWF0aC5jZWlsKHRbdGhpcy4jZ2UtMV0pO2JyZWFrO2Nhc2UgJHMuZmxvb3I6dFt0aGlzLiNnZS0xXT1NYXRoLmZsb29yKHRbdGhpcy4jZ2UtMV0pO2JyZWFrO2Nhc2UgJHMucm91bmQ6dFt0aGlzLiNnZS0xXT1NYXRoLmZsb29yKHRbdGhpcy4jZ2UtMV0rLjUpO2JyZWFrO2Nhc2UgJHMudHJ1bmNhdGU6dFt0aGlzLiNnZS0xXT1NYXRoLnRydW5jKHRbdGhpcy4jZ2UtMV0pO2JyZWFrO2Nhc2UgJHMuc3FydDp0W3RoaXMuI2dlLTFdPU1hdGguc3FydCh0W3RoaXMuI2dlLTFdKTticmVhaztjYXNlICRzLnNpbjp0W3RoaXMuI2dlLTFdPU1hdGguc2luKHRbdGhpcy4jZ2UtMV0lMzYwKlpyKTticmVhaztjYXNlICRzLmNvczp0W3RoaXMuI2dlLTFdPU1hdGguY29zKHRbdGhpcy4jZ2UtMV0lMzYwKlpyKTticmVhaztjYXNlICRzLmxuOnRbdGhpcy4jZ2UtMV09TWF0aC5sb2codFt0aGlzLiNnZS0xXSk7YnJlYWs7Y2FzZSAkcy5sb2c6dFt0aGlzLiNnZS0xXT1NYXRoLmxvZzEwKHRbdGhpcy4jZ2UtMV0pO2JyZWFrO2Nhc2UgJHMuY3ZpOnRbdGhpcy4jZ2UtMV09MHxNYXRoLnRydW5jKHRbdGhpcy4jZ2UtMV0pO2JyZWFrO2Nhc2UgJHMuY3ZyOmJyZWFrO2Nhc2UgJHMubm90Ontjb25zdCBlPXRbdGhpcy4jZ2UtMV07dFt0aGlzLiNnZS0xXT0wPT09ZXx8MT09PWU/MS1lOn5lO2JyZWFrfWNhc2UgJHMuYWRkOntjb25zdCBlPXRbLS10aGlzLiNnZV07dFt0aGlzLiNnZS0xXSs9ZTticmVha31jYXNlICRzLnN1Yjp7Y29uc3QgZT10Wy0tdGhpcy4jZ2VdO3RbdGhpcy4jZ2UtMV0tPWU7YnJlYWt9Y2FzZSAkcy5tdWw6e2NvbnN0IGU9dFstLXRoaXMuI2dlXTt0W3RoaXMuI2dlLTFdKj1lO2JyZWFrfWNhc2UgJHMuZGl2Ontjb25zdCBlPXRbLS10aGlzLiNnZV07dFt0aGlzLiNnZS0xXT0wIT09ZT90W3RoaXMuI2dlLTFdL2U6MDticmVha31jYXNlICRzLmlkaXY6e2NvbnN0IGU9dFstLXRoaXMuI2dlXTt0W3RoaXMuI2dlLTFdPTAhPT1lP01hdGgudHJ1bmModFt0aGlzLiNnZS0xXS9lKTowO2JyZWFrfWNhc2UgJHMubW9kOntjb25zdCBlPXRbLS10aGlzLiNnZV07dFt0aGlzLiNnZS0xXT0wIT09ZT90W3RoaXMuI2dlLTFdJWU6MDticmVha31jYXNlICRzLmV4cDp7Y29uc3QgZT10Wy0tdGhpcy4jZ2VdO3RbdGhpcy4jZ2UtMV0qKj1lO2JyZWFrfWNhc2UgJHMuYXRhbjp7Y29uc3QgZT10Wy0tdGhpcy4jZ2VdLGE9TWF0aC5hdGFuMih0W3RoaXMuI2dlLTFdLGUpKmVpO3RbdGhpcy4jZ2UtMV09YTwwP2ErMzYwOmE7YnJlYWt9Y2FzZSAkcy5lcTp7Y29uc3QgZT10Wy0tdGhpcy4jZ2VdO3RbdGhpcy4jZ2UtMV09dFt0aGlzLiNnZS0xXT09PWU/MTowO2JyZWFrfWNhc2UgJHMubmU6e2NvbnN0IGU9dFstLXRoaXMuI2dlXTt0W3RoaXMuI2dlLTFdPXRbdGhpcy4jZ2UtMV0hPT1lPzE6MDticmVha31jYXNlICRzLmd0Ontjb25zdCBlPXRbLS10aGlzLiNnZV07dFt0aGlzLiNnZS0xXT10W3RoaXMuI2dlLTFdPmU/MTowO2JyZWFrfWNhc2UgJHMuZ2U6e2NvbnN0IGU9dFstLXRoaXMuI2dlXTt0W3RoaXMuI2dlLTFdPXRbdGhpcy4jZ2UtMV0+PWU/MTowO2JyZWFrfWNhc2UgJHMubHQ6e2NvbnN0IGU9dFstLXRoaXMuI2dlXTt0W3RoaXMuI2dlLTFdPXRbdGhpcy4jZ2UtMV08ZT8xOjA7YnJlYWt9Y2FzZSAkcy5sZTp7Y29uc3QgZT10Wy0tdGhpcy4jZ2VdO3RbdGhpcy4jZ2UtMV09dFt0aGlzLiNnZS0xXTw9ZT8xOjA7YnJlYWt9Y2FzZSAkcy5hbmQ6e2NvbnN0IGU9MHx0Wy0tdGhpcy4jZ2VdO3RbdGhpcy4jZ2UtMV09KDB8dFt0aGlzLiNnZS0xXSkmZTticmVha31jYXNlICRzLm9yOntjb25zdCBlPTB8dFstLXRoaXMuI2dlXTt0W3RoaXMuI2dlLTFdPTB8dFt0aGlzLiNnZS0xXXxlO2JyZWFrfWNhc2UgJHMueG9yOntjb25zdCBlPTB8dFstLXRoaXMuI2dlXTt0W3RoaXMuI2dlLTFdPSgwfHRbdGhpcy4jZ2UtMV0pXmU7YnJlYWt9Y2FzZSAkcy5iaXRzaGlmdDp7Y29uc3QgZT0wfHRbLS10aGlzLiNnZV0sYT0wfHRbdGhpcy4jZ2UtMV07dFt0aGlzLiNnZS0xXT1lPjA/YTw8ZTphPj4tZTticmVha31jYXNlICRzLm1pbjp7Y29uc3QgZT10Wy0tdGhpcy4jZ2VdO3RbdGhpcy4jZ2UtMV09TWF0aC5taW4odFt0aGlzLiNnZS0xXSxlKTticmVha31jYXNlICRzLm1heDp7Y29uc3QgZT10Wy0tdGhpcy4jZ2VdO3RbdGhpcy4jZ2UtMV09TWF0aC5tYXgodFt0aGlzLiNnZS0xXSxlKTticmVha31jYXNlICRzLmR1cDp0aGlzLiNiZSh0W3RoaXMuI2dlLTFdKTticmVhaztjYXNlICRzLmV4Y2g6e2NvbnN0IGU9dFstLXRoaXMuI2dlXSxhPXRbLS10aGlzLiNnZV07dGhpcy4jYmUoZSk7dGhpcy4jYmUoYSk7YnJlYWt9Y2FzZSAkcy5wb3A6dGhpcy4jZ2UtLTticmVhaztjYXNlICRzLmNvcHk6e2NvbnN0IGU9TWF0aC50cnVuYyh0Wy0tdGhpcy4jZ2VdKSxhPXRoaXMuI2dlLWU7Zm9yKGxldCBuPTA7bjxlO24rKyl0aGlzLiNiZSh0W2Erbl0pO2JyZWFrfWNhc2UgJHMuaW5kZXg6e2NvbnN0IGU9TWF0aC50cnVuYyh0Wy0tdGhpcy4jZ2VdKTt0aGlzLiNiZSh0W3RoaXMuI2dlLTEtZV0pO2JyZWFrfWNhc2UgJHMucm9sbDp7Y29uc3QgZT1NYXRoLnRydW5jKHRbLS10aGlzLiNnZV0pLGE9TWF0aC50cnVuYyh0Wy0tdGhpcy4jZ2VdKTtpZihhPjEmJjAhPT1lKXtjb25zdCBuPShlJWErYSklYTtpZigwIT09bil7Y29uc3QgZT10aGlzLiNnZS1hLHM9dC5zbGljZShlLHRoaXMuI2dlKTtmb3IobGV0IHI9MDtyPGE7cisrKXRbZStyXT1zWyhyLW4rYSklYV19fWJyZWFrfX19c3RhdGljI2plKGUpe2Zvcihjb25zdCB0IG9mIGUpc3dpdGNoKHQudHlwZSl7Y2FzZSB0cjp0aGlzLiNiZSh0LnZhbHVlKTticmVhaztjYXNlIGFyOnRoaXMuI3dlKHQub3ApO2JyZWFrO2Nhc2UgbnI6MCE9PXRoaXMuI3BlWy0tdGhpcy4jZ2VdJiZ0aGlzLiNqZSh0LnRoZW4uaW5zdHJ1Y3Rpb25zKTticmVhaztjYXNlIHNyOjAhPT10aGlzLiNwZVstLXRoaXMuI2dlXT90aGlzLiNqZSh0LnRoZW4uaW5zdHJ1Y3Rpb25zKTp0aGlzLiNqZSh0Lm90aGVyd2lzZS5pbnN0cnVjdGlvbnMpfX1zdGF0aWMgYnVpbGQoZSx0LGEpe2NvbnN0IG49dC5sZW5ndGg+PjEscz1hLmxlbmd0aD4+MSx7aW5zdHJ1Y3Rpb25zOnJ9PWUuYm9keTtyZXR1cm4oZSx0LGksbyk9Pnt0aGlzLiNnZT0wO2ZvcihsZXQgYT0wO2E8bjthKyspdGhpcy4jYmUoZVt0K2FdKTt0aGlzLiNqZShyKTtjb25zdCBsPXRoaXMuI2dlLXM7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7Y29uc3QgdD1sK2U+PTA/dGhpcy4jcGVbbCtlXTowO2lbbytlXT1NYXRoQ2xhbXAoYVsyKmUrMV0sYVsyKmVdLHQpfX19fWNvbnN0IHRpPXtpZjo0LGVsc2U6NSxlbmQ6MTEsc2VsZWN0OjI3LGNhbGw6MTYsbG9jYWxfZ2V0OjMyLGxvY2FsX3NldDozMyxsb2NhbF90ZWU6MzQsaTMyX2NvbnN0OjY1LGkzMl9lcXo6NjksaTMyX2FuZDoxMTMsaTMyX29yOjExNCxpMzJfeG9yOjExNSxpMzJfc2hsOjExNixpMzJfc2hyX3M6MTE3LGkzMl90cnVuY19mNjRfczoxNzAsZjY0X2NvbnN0OjY4LGY2NF9lcTo5NyxmNjRfbmU6OTgsZjY0X2x0Ojk5LGY2NF9ndDoxMDAsZjY0X2xlOjEwMSxmNjRfZ2U6MTAyLGY2NF9hYnM6MTUzLGY2NF9uZWc6MTU0LGY2NF9jZWlsOjE1NSxmNjRfZmxvb3I6MTU2LGY2NF90cnVuYzoxNTcsZjY0X25lYXJlc3Q6MTU4LGY2NF9zcXJ0OjE1OSxmNjRfYWRkOjE2MCxmNjRfc3ViOjE2MSxmNjRfbXVsOjE2MixmNjRfZGl2OjE2MyxmNjRfbWluOjE2NCxmNjRfbWF4OjE2NSxmNjRfY29udmVydF9pMzJfczoxODMsZjY0X3N0b3JlOjU3fSxhaT0xMjQsbmk9MSxzaT0yLHJpPTMsaWk9NSxvaT03LGxpPTEwO2Z1bmN0aW9uIHVuc2lnbmVkTEVCMTI4KGUpe2NvbnN0IHQ9W107ZG97bGV0IGE9MTI3JmU7MCE9PShlPj4+PTcpJiYoYXw9MTI4KTt0LnB1c2goYSl9d2hpbGUoMCE9PWUpO3JldHVybiB0fWZ1bmN0aW9uIGVuY29kZUFTQ0lJU3RyaW5nKGUpe3JldHVyblsuLi51bnNpZ25lZExFQjEyOChlLmxlbmd0aCksLi4uQXJyYXkuZnJvbShlLGU9PmUuY2hhckNvZGVBdCgwKSldfWZ1bmN0aW9uIHNlY3Rpb24oZSx0KXtyZXR1cm5bZSwuLi51bnNpZ25lZExFQjEyOCh0Lmxlbmd0aCksLi4udF19ZnVuY3Rpb24gdmVjKGUpe2NvbnN0IHQ9dW5zaWduZWRMRUIxMjgoZS5sZW5ndGgpO2Zvcihjb25zdCBhIG9mIGUpaWYoIm51bWJlciIhPXR5cGVvZiBhKWZvcihjb25zdCBlIG9mIGEpdC5wdXNoKGUpO2Vsc2UgdC5wdXNoKGEpO3JldHVybiB0fWNvbnN0IGZpPVtbInNpbiIsIk1hdGgiLCJzaW4iLFthaV0sW2FpXV0sWyJjb3MiLCJNYXRoIiwiY29zIixbYWldLFthaV1dLFsiYXRhbjIiLCJNYXRoIiwiYXRhbjIiLFthaSxhaV0sW2FpXV0sWyJsb2ciLCJNYXRoIiwibG9nIixbYWldLFthaV1dLFsibG9nMTAiLCJNYXRoIiwibG9nMTAiLFthaV0sW2FpXV0sWyJwb3ciLCJNYXRoIiwicG93IixbYWksYWldLFthaV1dXSxjaT17TWF0aDpPYmplY3QuZnJvbUVudHJpZXMoZmkubWFwKChbZV0pPT5bZSxNYXRoW2VdXSkpfTtjbGFzcyBQc1dhc21Db21waWxlcntzdGF0aWMja2U9ITE7c3RhdGljI3llPW51bGw7c3RhdGljI3FlPW51bGw7c3RhdGljI3ZlPTA7c3RhdGljI1NlPTA7c3RhdGljI0FlPW51bGw7c3RhdGljI3hlPW51bGw7c3RhdGljI0NlPW51bGw7c3RhdGljI0llPW51bGw7c3RhdGljI0ZlPW51bGw7c3RhdGljI1RlPW51bGw7c3RhdGljI09lPW51bGw7c3RhdGljI1JlPW51bGw7c3RhdGljI3VlKCl7dGhpcy4jeWU9bmV3IE1hcChbWyRzLmVxLHRpLmY2NF9lcV0sWyRzLm5lLHRpLmY2NF9uZV0sWyRzLmx0LHRpLmY2NF9sdF0sWyRzLmxlLHRpLmY2NF9sZV0sWyRzLmd0LHRpLmY2NF9ndF0sWyRzLmdlLHRpLmY2NF9nZV1dKTt0aGlzLiNxZT1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wO2U8ZmkubGVuZ3RoO2UrKyl0aGlzLiNxZVtmaVtlXVswXV09ZTt0aGlzLiN2ZT1NYXRoLlBJLzE4MDt0aGlzLiNTZT0xODAvTWF0aC5QSTt0aGlzLiNBZT1maS5tYXAoKFssLCxlLHRdKT0+Wzk2LC4uLnZlYyhlKSwuLi52ZWModCldKTt0aGlzLiN4ZT1uZXcgVWludDhBcnJheShzZWN0aW9uKHNpLHZlYyhmaS5tYXAoKFssZSx0XSxhKT0+Wy4uLmVuY29kZUFTQ0lJU3RyaW5nKGUpLC4uLmVuY29kZUFTQ0lJU3RyaW5nKHQpLDAsLi4udW5zaWduZWRMRUIxMjgoYSsxKV0pKSkpO3RoaXMuI0NlPW5ldyBVaW50OEFycmF5KHNlY3Rpb24ocmksdmVjKFtbMF1dKSkpO3RoaXMuI0llPW5ldyBVaW50OEFycmF5KHNlY3Rpb24oaWksdmVjKFtbMCwxXV0pKSk7dGhpcy4jRmU9bmV3IFVpbnQ4QXJyYXkoc2VjdGlvbihvaSx2ZWMoW1suLi5lbmNvZGVBU0NJSVN0cmluZygiZm4iKSwwLC4uLnVuc2lnbmVkTEVCMTI4KGZpLmxlbmd0aCldLFsuLi5lbmNvZGVBU0NJSVN0cmluZygibWVtIiksMiwwXV0pKSk7dGhpcy4jVGU9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwXSk7Y29uc3QgZT1uZXcgQXJyYXlCdWZmZXIoOCk7dGhpcy4jT2U9bmV3IERhdGFWaWV3KGUpO3RoaXMuI1JlPW5ldyBVaW50OEFycmF5KGUpO3RoaXMuI2tlPSEwfWNvbnN0cnVjdG9yKGUsdCl7UHNXYXNtQ29tcGlsZXIuI2tlfHxQc1dhc21Db21waWxlci4jdWUoKTt0aGlzLl9uSW49ZS5sZW5ndGg+PjE7dGhpcy5fbk91dD10Lmxlbmd0aD4+MTt0aGlzLl9yYW5nZT10O3RoaXMuX2NvZGU9W107dGhpcy5fbmV4dExvY2FsPXRoaXMuX25Jbjt0aGlzLl9mcmVlTG9jYWxzPVtdO3RoaXMuX3NoYXJlZExvY2Fscz1uZXcgTWFwfV9hbGxvY0xvY2FsKCl7cmV0dXJuIHRoaXMuX2ZyZWVMb2NhbHMucG9wKCk/P3RoaXMuX25leHRMb2NhbCsrfV9yZWxlYXNlTG9jYWwoZSl7dGhpcy5fZnJlZUxvY2Fscy5wdXNoKGUpfV9lbWl0VUxFQjEyOChlKXtkb3tsZXQgdD0xMjcmZTswIT09KGU+Pj49NykmJih0fD0xMjgpO3RoaXMuX2NvZGUucHVzaCh0KX13aGlsZSgwIT09ZSl9X2VtaXRGNjRDb25zdChlKXt0aGlzLl9jb2RlLnB1c2godGkuZjY0X2NvbnN0KTtQc1dhc21Db21waWxlci4jT2Uuc2V0RmxvYXQ2NCgwLGUsITApO2ZvcihsZXQgZT0wO2U8ODtlKyspdGhpcy5fY29kZS5wdXNoKFBzV2FzbUNvbXBpbGVyLiNSZVtlXSl9X2VtaXRMb2NhbEdldChlKXt0aGlzLl9jb2RlLnB1c2godGkubG9jYWxfZ2V0KTt0aGlzLl9lbWl0VUxFQjEyOChlKX1fZW1pdExvY2FsU2V0KGUpe3RoaXMuX2NvZGUucHVzaCh0aS5sb2NhbF9zZXQpO3RoaXMuX2VtaXRVTEVCMTI4KGUpfV9lbWl0TG9jYWxUZWUoZSl7dGhpcy5fY29kZS5wdXNoKHRpLmxvY2FsX3RlZSk7dGhpcy5fZW1pdFVMRUIxMjgoZSl9X2NvbXBpbGVOb2RlKGUpe2lmKGUuc2hhcmVkKXtjb25zdCB0PXRoaXMuX3NoYXJlZExvY2Fscy5nZXQoZSk7aWYodm9pZCAwIT09dCl7dGhpcy5fZW1pdExvY2FsR2V0KHQubG9jYWwpOzA9PT0tLXQucmVtYWluaW5nJiZ0aGlzLl9yZWxlYXNlTG9jYWwodC5sb2NhbCk7cmV0dXJuITB9aWYoIXRoaXMuX2NvbXBpbGVOb2RlSW1wbChlKSlyZXR1cm4hMTtjb25zdCBhPXRoaXMuX2FsbG9jTG9jYWwoKTt0aGlzLl9zaGFyZWRMb2NhbHMuc2V0KGUse2xvY2FsOmEscmVtYWluaW5nOmUuc2hhcmVkQ291bnQtMX0pO3RoaXMuX2VtaXRMb2NhbFRlZShhKTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5fY29tcGlsZU5vZGVJbXBsKGUpfV9jb21waWxlTm9kZUltcGwoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSBycjp0aGlzLl9lbWl0TG9jYWxHZXQoZS5pbmRleCk7cmV0dXJuITA7Y2FzZSBpcjp7bGV0IHQ9ZS52YWx1ZTsiYm9vbGVhbiI9PXR5cGVvZiB0JiYodD10PzE6MCk7dGhpcy5fZW1pdEY2NENvbnN0KHQpO3JldHVybiEwfWNhc2Ugb3I6cmV0dXJuIHRoaXMuX2NvbXBpbGVVbmFyeU5vZGUoZSk7Y2FzZSBscjpyZXR1cm4gdGhpcy5fY29tcGlsZUJpbmFyeU5vZGUoZSk7Y2FzZSBmcjpyZXR1cm4gdGhpcy5fY29tcGlsZVRlcm5hcnlOb2RlKGUpO2RlZmF1bHQ6cmV0dXJuITF9fV9jb21waWxlU2luQ29zTm9kZShlKXtjb25zdCB0PXRoaXMuX2FsbG9jTG9jYWwoKTt0cnl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUub3BlcmFuZCkpcmV0dXJuITE7Y29uc3QgYT10aGlzLl9jb2RlO3RoaXMuX2VtaXRMb2NhbFNldCh0KTt0aGlzLl9lbWl0TG9jYWxHZXQodCk7dGhpcy5fZW1pdExvY2FsR2V0KHQpO3RoaXMuX2VtaXRGNjRDb25zdCgzNjApO2EucHVzaCh0aS5mNjRfZGl2LHRpLmY2NF90cnVuYyk7dGhpcy5fZW1pdEY2NENvbnN0KDM2MCk7YS5wdXNoKHRpLmY2NF9tdWwsdGkuZjY0X3N1Yik7dGhpcy5fZW1pdEY2NENvbnN0KFBzV2FzbUNvbXBpbGVyLiN2ZSk7YS5wdXNoKHRpLmY2NF9tdWwsdGkuY2FsbCk7dGhpcy5fZW1pdFVMRUIxMjgoUHNXYXNtQ29tcGlsZXIuI3FlW2Uub3A9PT0kcy5zaW4/InNpbiI6ImNvcyJdKTtyZXR1cm4hMH1maW5hbGx5e3RoaXMuX3JlbGVhc2VMb2NhbCh0KX19X2NvbXBpbGVVbmFyeU5vZGUoZSl7Y29uc3QgdD10aGlzLl9jb2RlO2lmKGUub3A9PT0kcy5zaW58fGUub3A9PT0kcy5jb3MpcmV0dXJuIHRoaXMuX2NvbXBpbGVTaW5Db3NOb2RlKGUpO2lmKGUub3A9PT0kcy5ub3Qpe2lmKGUudmFsdWVUeXBlPT09SnMpe2lmKCF0aGlzLl9jb21waWxlTm9kZUFzQm9vbEkzMihlLm9wZXJhbmQpKXJldHVybiExO3QucHVzaCh0aS5pMzJfZXF6LHRpLmY2NF9jb252ZXJ0X2kzMl9zKTtyZXR1cm4hMH1pZihlLnZhbHVlVHlwZT09PVlzKXtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5vcGVyYW5kKSlyZXR1cm4hMTt0LnB1c2godGkuaTMyX3RydW5jX2Y2NF9zLHRpLmkzMl9jb25zdCwxMjcsdGkuaTMyX3hvcix0aS5mNjRfY29udmVydF9pMzJfcyk7cmV0dXJuITB9cmV0dXJuITF9aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUub3BlcmFuZCkpcmV0dXJuITE7c3dpdGNoKGUub3Ape2Nhc2UgJHMuYWJzOnQucHVzaCh0aS5mNjRfYWJzKTticmVhaztjYXNlICRzLm5lZzp0LnB1c2godGkuZjY0X25lZyk7YnJlYWs7Y2FzZSAkcy5zcXJ0OnQucHVzaCh0aS5mNjRfc3FydCk7YnJlYWs7Y2FzZSAkcy5mbG9vcjp0LnB1c2godGkuZjY0X2Zsb29yKTticmVhaztjYXNlICRzLmNlaWxpbmc6dC5wdXNoKHRpLmY2NF9jZWlsKTticmVhaztjYXNlICRzLnJvdW5kOnRoaXMuX2VtaXRGNjRDb25zdCguNSk7dC5wdXNoKHRpLmY2NF9hZGQsdGkuZjY0X2Zsb29yKTticmVhaztjYXNlICRzLnRydW5jYXRlOnQucHVzaCh0aS5mNjRfdHJ1bmMpO2JyZWFrO2Nhc2UgJHMuY3ZpOnQucHVzaCh0aS5pMzJfdHJ1bmNfZjY0X3MsdGkuZjY0X2NvbnZlcnRfaTMyX3MpO2JyZWFrO2Nhc2UgJHMuY3ZyOmJyZWFrO2Nhc2UgJHMubG46dC5wdXNoKHRpLmNhbGwpO3RoaXMuX2VtaXRVTEVCMTI4KFBzV2FzbUNvbXBpbGVyLiNxZS5sb2cpO2JyZWFrO2Nhc2UgJHMubG9nOnQucHVzaCh0aS5jYWxsKTt0aGlzLl9lbWl0VUxFQjEyOChQc1dhc21Db21waWxlci4jcWUubG9nMTApO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9cmV0dXJuITB9X2NvbXBpbGVTYWZlRGl2Tm9kZShlLHQpe2NvbnN0IGE9dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO2NvbnN0IG49dGhpcy5fY29kZTt0aGlzLl9lbWl0TG9jYWxUZWUoYSk7bi5wdXNoKHRpLmY2NF9kaXYpO3RoaXMuX2VtaXRGNjRDb25zdCgwKTt0aGlzLl9lbWl0TG9jYWxHZXQoYSk7dGhpcy5fZW1pdEY2NENvbnN0KDApO24ucHVzaCh0aS5mNjRfbmUsdGkuc2VsZWN0KTtyZXR1cm4hMH1maW5hbGx5e3RoaXMuX3JlbGVhc2VMb2NhbChhKX19X2NvbXBpbGVTYWZlSWRpdk5vZGUoZSx0KXtjb25zdCBhPXRoaXMuX2FsbG9jTG9jYWwoKTt0cnl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKHQpKXJldHVybiExO2lmKCF0aGlzLl9jb21waWxlTm9kZShlKSlyZXR1cm4hMTtjb25zdCBuPXRoaXMuX2NvZGU7dGhpcy5fZW1pdExvY2FsVGVlKGEpO24ucHVzaCh0aS5mNjRfZGl2LHRpLmY2NF90cnVuYyk7dGhpcy5fZW1pdEY2NENvbnN0KDApO3RoaXMuX2VtaXRMb2NhbEdldChhKTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7bi5wdXNoKHRpLmY2NF9uZSx0aS5zZWxlY3QpO3JldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKGEpfX1fY29tcGlsZUJpdHNoaWZ0Tm9kZShlLHQpe2lmKGUudHlwZSE9PWlyfHwhTnVtYmVyLmlzSW50ZWdlcihlLnZhbHVlKSlyZXR1cm4hMTtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7Y29uc3QgYT10aGlzLl9jb2RlO2EucHVzaCh0aS5pMzJfdHJ1bmNfZjY0X3MpO2NvbnN0IG49ZS52YWx1ZTtpZihuPjApe2EucHVzaCh0aS5pMzJfY29uc3QpO3RoaXMuX2VtaXRVTEVCMTI4KG4pO2EucHVzaCh0aS5pMzJfc2hsKX1lbHNlIGlmKG48MCl7YS5wdXNoKHRpLmkzMl9jb25zdCk7dGhpcy5fZW1pdFVMRUIxMjgoLW4pO2EucHVzaCh0aS5pMzJfc2hyX3MpfWEucHVzaCh0aS5mNjRfY29udmVydF9pMzJfcyk7cmV0dXJuITB9X2NvbXBpbGVNb2ROb2RlKGUsdCl7aWYoZS50eXBlPT09aXImJjA9PT1lLnZhbHVlKXtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7dGhpcy5fY29kZS5wdXNoKHRpLmRyb3ApO3RoaXMuX2VtaXRGNjRDb25zdCgwKTtyZXR1cm4hMH1jb25zdCBhPXRoaXMuX2FsbG9jTG9jYWwoKTt0cnl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKHQpKXJldHVybiExO3RoaXMuX2VtaXRMb2NhbFRlZShhKTtjb25zdCBuPXRoaXMuX2NvZGU7aWYoZS50eXBlPT09aXIpe3RoaXMuX2VtaXRMb2NhbEdldChhKTt0aGlzLl9lbWl0RjY0Q29uc3QoZS52YWx1ZSk7bi5wdXNoKHRpLmY2NF9kaXYsdGkuZjY0X3RydW5jKTt0aGlzLl9lbWl0RjY0Q29uc3QoZS52YWx1ZSk7bi5wdXNoKHRpLmY2NF9tdWwsdGkuZjY0X3N1Yil9ZWxzZXtjb25zdCB0PXRoaXMuX2FsbG9jTG9jYWwoKTt0cnl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO3RoaXMuX2VtaXRMb2NhbFNldCh0KTt0aGlzLl9lbWl0TG9jYWxHZXQoYSk7dGhpcy5fZW1pdExvY2FsR2V0KHQpO24ucHVzaCh0aS5mNjRfZGl2LHRpLmY2NF90cnVuYyk7dGhpcy5fZW1pdExvY2FsR2V0KHQpO24ucHVzaCh0aS5mNjRfbXVsLHRpLmY2NF9zdWIpO3RoaXMuX2VtaXRGNjRDb25zdCgwKTt0aGlzLl9lbWl0TG9jYWxHZXQodCk7dGhpcy5fZW1pdEY2NENvbnN0KDApO24ucHVzaCh0aS5mNjRfbmUsdGkuc2VsZWN0KX1maW5hbGx5e3RoaXMuX3JlbGVhc2VMb2NhbCh0KX19cmV0dXJuITB9ZmluYWxseXt0aGlzLl9yZWxlYXNlTG9jYWwoYSl9fV9jb21waWxlQXRhbk5vZGUoZSx0KXtjb25zdCBhPXRoaXMuX2FsbG9jTG9jYWwoKTt0cnl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKHQpKXJldHVybiExO2lmKCF0aGlzLl9jb21waWxlTm9kZShlKSlyZXR1cm4hMTtjb25zdCBuPXRoaXMuX2NvZGU7bi5wdXNoKHRpLmNhbGwpO3RoaXMuX2VtaXRVTEVCMTI4KFBzV2FzbUNvbXBpbGVyLiNxZS5hdGFuMik7dGhpcy5fZW1pdEY2NENvbnN0KFBzV2FzbUNvbXBpbGVyLiNTZSk7bi5wdXNoKHRpLmY2NF9tdWwpO3RoaXMuX2VtaXRMb2NhbFRlZShhKTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7bi5wdXNoKHRpLmY2NF9sdCx0aS5pZixhaSk7dGhpcy5fZW1pdExvY2FsR2V0KGEpO3RoaXMuX2VtaXRGNjRDb25zdCgzNjApO24ucHVzaCh0aS5mNjRfYWRkLHRpLmVsc2UpO3RoaXMuX2VtaXRMb2NhbEdldChhKTtuLnB1c2godGkuZW5kKTtyZXR1cm4hMH1maW5hbGx5e3RoaXMuX3JlbGVhc2VMb2NhbChhKX19X2NvbXBpbGVCaXR3aXNlTm9kZShlLHQsYSl7aWYoIXRoaXMuX2NvbXBpbGVCaXR3aXNlT3BlcmFuZEkzMihhKSlyZXR1cm4hMTtpZighdGhpcy5fY29tcGlsZUJpdHdpc2VPcGVyYW5kSTMyKHQpKXJldHVybiExO2NvbnN0IG49dGhpcy5fY29kZTtzd2l0Y2goZSl7Y2FzZSAkcy5hbmQ6bi5wdXNoKHRpLmkzMl9hbmQpO2JyZWFrO2Nhc2UgJHMub3I6bi5wdXNoKHRpLmkzMl9vcik7YnJlYWs7Y2FzZSAkcy54b3I6bi5wdXNoKHRpLmkzMl94b3IpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9bi5wdXNoKHRpLmY2NF9jb252ZXJ0X2kzMl9zKTtyZXR1cm4hMH1fY29tcGlsZUJpdHdpc2VPcGVyYW5kSTMyKGUpe2lmKGUudmFsdWVUeXBlPT09SnMpcmV0dXJuIHRoaXMuX2NvbXBpbGVOb2RlQXNCb29sSTMyKGUpO2lmKCF0aGlzLl9jb21waWxlTm9kZShlKSlyZXR1cm4hMTt0aGlzLl9jb2RlLnB1c2godGkuaTMyX3RydW5jX2Y2NF9zKTtyZXR1cm4hMH1fY29tcGlsZVN0YW5kYXJkQmluYXJ5Tm9kZShlLHQsYSl7aWYodCE9PWF8fHQudHlwZT09PXJyfHx0LnR5cGU9PT1pcnx8dC5zaGFyZWQpe2lmKCF0aGlzLl9jb21waWxlTm9kZShhKSlyZXR1cm4hMTtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITF9ZWxzZXtjb25zdCBlPXRoaXMuX2FsbG9jTG9jYWwoKTt0cnl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKHQpKXJldHVybiExO3RoaXMuX2VtaXRMb2NhbFRlZShlKTt0aGlzLl9lbWl0TG9jYWxHZXQoZSl9ZmluYWxseXt0aGlzLl9yZWxlYXNlTG9jYWwoZSl9fWNvbnN0IG49dGhpcy5fY29kZTtzd2l0Y2goZSl7Y2FzZSAkcy5hZGQ6bi5wdXNoKHRpLmY2NF9hZGQpO2JyZWFrO2Nhc2UgJHMuc3ViOm4ucHVzaCh0aS5mNjRfc3ViKTticmVhaztjYXNlICRzLm11bDpuLnB1c2godGkuZjY0X211bCk7YnJlYWs7Y2FzZSAkcy5leHA6bi5wdXNoKHRpLmNhbGwpO3RoaXMuX2VtaXRVTEVCMTI4KFBzV2FzbUNvbXBpbGVyLiNxZS5wb3cpO2JyZWFrO2Nhc2UgJHMuZXE6bi5wdXNoKHRpLmY2NF9lcSx0aS5mNjRfY29udmVydF9pMzJfcyk7YnJlYWs7Y2FzZSAkcy5uZTpuLnB1c2godGkuZjY0X25lLHRpLmY2NF9jb252ZXJ0X2kzMl9zKTticmVhaztjYXNlICRzLmx0Om4ucHVzaCh0aS5mNjRfbHQsdGkuZjY0X2NvbnZlcnRfaTMyX3MpO2JyZWFrO2Nhc2UgJHMubGU6bi5wdXNoKHRpLmY2NF9sZSx0aS5mNjRfY29udmVydF9pMzJfcyk7YnJlYWs7Y2FzZSAkcy5ndDpuLnB1c2godGkuZjY0X2d0LHRpLmY2NF9jb252ZXJ0X2kzMl9zKTticmVhaztjYXNlICRzLmdlOm4ucHVzaCh0aS5mNjRfZ2UsdGkuZjY0X2NvbnZlcnRfaTMyX3MpO2JyZWFrO2Nhc2UgJHMubWluOm4ucHVzaCh0aS5mNjRfbWluKTticmVhaztjYXNlICRzLm1heDpuLnB1c2godGkuZjY0X21heCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1yZXR1cm4hMH1fY29tcGlsZUJpbmFyeU5vZGUoZSl7Y29uc3R7b3A6dCxmaXJzdDphLHNlY29uZDpufT1lO3JldHVybiB0PT09JHMuYml0c2hpZnQ/dGhpcy5fY29tcGlsZUJpdHNoaWZ0Tm9kZShhLG4pOnQ9PT0kcy5kaXY/dGhpcy5fY29tcGlsZVNhZmVEaXZOb2RlKGEsbik6dD09PSRzLmlkaXY/dGhpcy5fY29tcGlsZVNhZmVJZGl2Tm9kZShhLG4pOnQ9PT0kcy5tb2Q/dGhpcy5fY29tcGlsZU1vZE5vZGUoYSxuKTp0PT09JHMuYXRhbj90aGlzLl9jb21waWxlQXRhbk5vZGUoYSxuKTp0PT09JHMuYW5kfHx0PT09JHMub3J8fHQ9PT0kcy54b3I/dGhpcy5fY29tcGlsZUJpdHdpc2VOb2RlKHQsYSxuKTp0aGlzLl9jb21waWxlU3RhbmRhcmRCaW5hcnlOb2RlKHQsYSxuKX1fY29tcGlsZU5vZGVBc0Jvb2xJMzIoZSl7aWYoZS50eXBlPT09bHIpe2NvbnN0IHQ9UHNXYXNtQ29tcGlsZXIuI3llLmdldChlLm9wKTtpZih2b2lkIDAhPT10KXtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5zZWNvbmQpKXJldHVybiExO2lmKCF0aGlzLl9jb21waWxlTm9kZShlLmZpcnN0KSlyZXR1cm4hMTt0aGlzLl9jb2RlLnB1c2godCk7cmV0dXJuITB9aWYoZS52YWx1ZVR5cGU9PT1KcyYmKGUub3A9PT0kcy5hbmR8fGUub3A9PT0kcy5vcnx8ZS5vcD09PSRzLnhvcikpe2lmKCF0aGlzLl9jb21waWxlTm9kZUFzQm9vbEkzMihlLnNlY29uZCkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlQXNCb29sSTMyKGUuZmlyc3QpKXJldHVybiExO3N3aXRjaChlLm9wKXtjYXNlICRzLmFuZDp0aGlzLl9jb2RlLnB1c2godGkuaTMyX2FuZCk7YnJlYWs7Y2FzZSAkcy5vcjp0aGlzLl9jb2RlLnB1c2godGkuaTMyX29yKTticmVhaztjYXNlICRzLnhvcjp0aGlzLl9jb2RlLnB1c2godGkuaTMyX3hvcil9cmV0dXJuITB9fWlmKGUudHlwZT09PW9yJiZlLm9wPT09JHMubm90JiZlLnZhbHVlVHlwZT09PUpzKXtpZighdGhpcy5fY29tcGlsZU5vZGVBc0Jvb2xJMzIoZS5vcGVyYW5kKSlyZXR1cm4hMTt0aGlzLl9jb2RlLnB1c2godGkuaTMyX2Vxeik7cmV0dXJuITB9aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO2lmKGUudmFsdWVUeXBlPT09SnMpdGhpcy5fY29kZS5wdXNoKHRpLmkzMl90cnVuY19mNjRfcyk7ZWxzZXt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7dGhpcy5fY29kZS5wdXNoKHRpLmY2NF9uZSl9cmV0dXJuITB9X2NvbXBpbGVUZXJuYXJ5Tm9kZShlKXtpZighdGhpcy5fY29tcGlsZU5vZGVBc0Jvb2xJMzIoZS5jb25kKSlyZXR1cm4hMTt0aGlzLl9jb2RlLnB1c2godGkuaWYsYWkpO2lmKCF0aGlzLl9jb21waWxlTm9kZShlLnRoZW4pKXJldHVybiExO3RoaXMuX2NvZGUucHVzaCh0aS5lbHNlKTtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5vdGhlcndpc2UpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaCh0aS5lbmQpO3JldHVybiEwfWNvbXBpbGUoZSl7Y29uc3QgdD0obmV3IFBTU3RhY2tUb1RyZWUpLmV2YWx1YXRlKGUsdGhpcy5fbkluKTtpZighdHx8dC5sZW5ndGg8dGhpcy5fbk91dClyZXR1cm4gbnVsbDtjb25zdCBhPXRoaXMuX2NvZGU7Zm9yKGxldCBlPTA7ZTx0aGlzLl9uT3V0O2UrKyl7Y29uc3Qgbj10aGlzLl9yYW5nZVsyKmVdLHM9dGhpcy5fcmFuZ2VbMiplKzFdO2EucHVzaCh0aS5pMzJfY29uc3QpO3RoaXMuX2VtaXRVTEVCMTI4KDgqZSk7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKHRbZV0pKXJldHVybiBudWxsO3RoaXMuX2VtaXRGNjRDb25zdChzKTthLnB1c2godGkuZjY0X21pbik7dGhpcy5fZW1pdEY2NENvbnN0KG4pO2EucHVzaCh0aS5mNjRfbWF4LHRpLmY2NF9zdG9yZSwzLDApfWEucHVzaCh0aS5lbmQpO2NvbnN0IG49dGhpcy5fbkluLHM9dGhpcy5fbmV4dExvY2FsLW4scj1bOTYsLi4udmVjKEFycmF5KG4pLmZpbGwoYWkpKSwuLi52ZWMoW10pXSxpPW5ldyBVaW50OEFycmF5KHNlY3Rpb24obmksdmVjKFtyLC4uLlBzV2FzbUNvbXBpbGVyLiNBZV0pKSksbz12ZWMocz4wP1tbLi4udW5zaWduZWRMRUIxMjgocyksYWldXTpbXSksbD1vLmxlbmd0aCthLmxlbmd0aCxmPW5ldyBVaW50OEFycmF5KHNlY3Rpb24obGksdmVjKFtbLi4udW5zaWduZWRMRUIxMjgobCksLi4ubywuLi5hXV0pKSksYz1Qc1dhc21Db21waWxlci4jVGUsaD1Qc1dhc21Db21waWxlci4jeGUsdT1Qc1dhc21Db21waWxlci4jQ2UsbT1Qc1dhc21Db21waWxlci4jSWUscD1Qc1dhc21Db21waWxlci4jRmUsZD1jLmxlbmd0aCtpLmxlbmd0aCtoLmxlbmd0aCt1Lmxlbmd0aCttLmxlbmd0aCtwLmxlbmd0aCtmLmxlbmd0aCxnPW5ldyBVaW50OEFycmF5KGQpO2xldCBiPTA7Zy5zZXQoYyxiKTtiKz1jLmxlbmd0aDtnLnNldChpLGIpO2IrPWkubGVuZ3RoO2cuc2V0KGgsYik7Yis9aC5sZW5ndGg7Zy5zZXQodSxiKTtiKz11Lmxlbmd0aDtnLnNldChtLGIpO2IrPW0ubGVuZ3RoO2cuc2V0KHAsYik7Yis9cC5sZW5ndGg7Zy5zZXQoZixiKTtyZXR1cm4gZ319ZnVuY3Rpb24gYnVpbGRQb3N0U2NyaXB0V2FzbUZ1bmN0aW9uKGUsdCxhKXtjb25zdCBuPWZ1bmN0aW9uIGNvbXBpbGVQb3N0U2NyaXB0VG9XYXNtKGUsdCxhKXtyZXR1cm4gbmV3IFBzV2FzbUNvbXBpbGVyKHQsYSkuY29tcGlsZShwYXJzZVBvc3RTY3JpcHRGdW5jdGlvbihlKSl9KGUsdCxhKTtpZighbilyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGZ1bmN0aW9uIF9tYWtlV3JhcHBlcihlLHQsYSl7Y29uc3R7Zm46bixtZW06c309ZSxyPW5ldyBGbG9hdDY0QXJyYXkocy5idWZmZXIsMCxhKTtsZXQgaTtzd2l0Y2goYSl7Y2FzZSAxOmk9KGUsdCk9PntlW3RdPXJbMF19O2JyZWFrO2Nhc2UgMjppPShlLHQpPT57ZVt0XT1yWzBdO2VbdCsxXT1yWzFdfTticmVhaztjYXNlIDM6aT0oZSx0KT0+e2VbdF09clswXTtlW3QrMV09clsxXTtlW3QrMl09clsyXX07YnJlYWs7Y2FzZSA0Omk9KGUsdCk9PntlW3RdPXJbMF07ZVt0KzFdPXJbMV07ZVt0KzJdPXJbMl07ZVt0KzNdPXJbM119O2JyZWFrO2RlZmF1bHQ6aT0oZSx0KT0+e2ZvcihsZXQgbj0wO248YTtuKyspZVt0K25dPXJbbl19fXN3aXRjaCh0KXtjYXNlIDE6cmV0dXJuKGUsdCxhLHMpPT57bihlW3RdKTtpKGEscyl9O2Nhc2UgMjpyZXR1cm4oZSx0LGEscyk9PntuKGVbdF0sZVt0KzFdKTtpKGEscyl9O2Nhc2UgMzpyZXR1cm4oZSx0LGEscyk9PntuKGVbdF0sZVt0KzFdLGVbdCsyXSk7aShhLHMpfTtjYXNlIDQ6cmV0dXJuKGUsdCxhLHMpPT57bihlW3RdLGVbdCsxXSxlW3QrMl0sZVt0KzNdKTtpKGEscyl9O2RlZmF1bHQ6e2NvbnN0IGU9bmV3IEZsb2F0NjRBcnJheSh0KTtyZXR1cm4oYSxzLHIsbyk9Pntmb3IobGV0IG49MDtuPHQ7bisrKWVbbl09YVtzK25dO24oLi4uZSk7aShyLG8pfX19fShuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShuKSxjaSkuZXhwb3J0cyx0Lmxlbmd0aD4+MSxhLmxlbmd0aD4+MSl9Y2F0Y2h7cmV0dXJuIG51bGx9fWNsYXNzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3RoaXMuX29ubHlSZWZzPSEwPT09ZT8ub25seVJlZnM7aWYoIXRoaXMuX29ubHlSZWZzKXt0aGlzLl9uYW1lUmVmTWFwPW5ldyBNYXA7dGhpcy5faW1hZ2VNYXA9bmV3IE1hcH10aGlzLl9pbWFnZUNhY2hlPW5ldyBSZWZTZXRDYWNoZX1nZXRCeU5hbWUoZSl7dGhpcy5fb25seVJlZnMmJnVucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYGdldEJ5TmFtZWAgbWV0aG9kLiIpO2NvbnN0IHQ9dGhpcy5fbmFtZVJlZk1hcC5nZXQoZSk7cmV0dXJuIHQ/dGhpcy5nZXRCeVJlZih0KTp0aGlzLl9pbWFnZU1hcC5nZXQoZSl8fG51bGx9Z2V0QnlSZWYoZSl7cmV0dXJuIHRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpfHxudWxsfXNldChlLHQsYSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgc2V0YCBjYWxsZWQuIil9fWNsYXNzIExvY2FsSW1hZ2VDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxhKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEltYWdlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFyZ3VtZW50LicpO2lmKHQpe2lmKHRoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpKXJldHVybjt0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGEpfX1jbGFzcyBMb2NhbENvbG9yU3BhY2VDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlPW51bGwsdD1udWxsLGEpe2lmKCJzdHJpbmciIT10eXBlb2YgZSYmIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbENvbG9yU3BhY2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYW5kL29yICJyZWYiIGFyZ3VtZW50LicpO2lmKHQpe2lmKHRoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpKXJldHVybjtudWxsIT09ZSYmdGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxhKX19Y2xhc3MgTG9jYWxGdW5jdGlvbkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxGdW5jdGlvbkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX1jbGFzcyBMb2NhbEdTdGF0ZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLGEpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsR1N0YXRlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFyZ3VtZW50LicpO2lmKHQpe2lmKHRoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpKXJldHVybjt0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGEpfX1jbGFzcyBMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxhKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsVGlsaW5nUGF0dGVybkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX1jbGFzcyBSZWdpb25hbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsYSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdSZWdpb25hbEltYWdlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9fWNsYXNzIEdsb2JhbENvbG9yU3BhY2VDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxhKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbENvbG9yU3BhY2VDYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1jbGVhcigpe3RoaXMuX2ltYWdlQ2FjaGUuY2xlYXIoKX19Y2xhc3MgR2xvYmFsSW1hZ2VDYWNoZXtzdGF0aWMgTlVNX1BBR0VTX1RIUkVTSE9MRD0yO3N0YXRpYyBNSU5fSU1BR0VTX1RPX0NBQ0hFPTEwO3N0YXRpYyBNQVhfQllURV9TSVpFPTVlNzsjSGU9bmV3IFJlZlNldDtjb25zdHJ1Y3Rvcigpe3RoaXMuX3JlZkNhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLl9pbWFnZUNhY2hlPW5ldyBSZWZTZXRDYWNoZX1nZXQjQmUoKXtsZXQgZT0wO2Zvcihjb25zdCB0IG9mIHRoaXMuX2ltYWdlQ2FjaGUpZSs9dC5ieXRlU2l6ZTtyZXR1cm4gZX1nZXQjRGUoKXtyZXR1cm4hKHRoaXMuX2ltYWdlQ2FjaGUuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk1JTl9JTUFHRVNfVE9fQ0FDSEUpJiYhKHRoaXMuI0JlPEdsb2JhbEltYWdlQ2FjaGUuTUFYX0JZVEVfU0laRSl9c2hvdWxkQ2FjaGUoZSx0KXtsZXQgYT10aGlzLl9yZWZDYWNoZS5nZXQoZSk7aWYoIWEpe2E9bmV3IFNldDt0aGlzLl9yZWZDYWNoZS5wdXQoZSxhKX1hLmFkZCh0KTtyZXR1cm4hKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpJiYhKCF0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKSYmdGhpcy4jRGUpfWFkZERlY29kZUZhaWxlZChlKXt0aGlzLiNIZS5wdXQoZSl9aGFzRGVjb2RlRmFpbGVkKGUpe3JldHVybiB0aGlzLiNIZS5oYXMoZSl9YWRkQnl0ZVNpemUoZSx0KXtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2EmJihhLmJ5dGVTaXplfHwoYS5ieXRlU2l6ZT10KSl9Z2V0RGF0YShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpcmV0dXJuIG51bGw7Y29uc3Qgbj10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpZighbilyZXR1cm4gbnVsbDthLmFkZCh0KTtyZXR1cm4gbn1zZXREYXRhKGUsdCl7aWYoIXRoaXMuX3JlZkNhY2hlLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGV4cGVjdGVkICJzaG91bGRDYWNoZSIgdG8gaGF2ZSBiZWVuIGNhbGxlZC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKXx8KHRoaXMuI0RlP3dhcm4oIkdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGNhY2hlIGxpbWl0IHJlYWNoZWQuIik6dGhpcy5faW1hZ2VDYWNoZS5wdXQoZSx0KSl9Y2xlYXIoZT0hMSl7aWYoIWUpe3RoaXMuI0hlLmNsZWFyKCk7dGhpcy5fcmVmQ2FjaGUuY2xlYXIoKX10aGlzLl9pbWFnZUNhY2hlLmNsZWFyKCl9fWNvbnN0IGhpPTAsdWk9MixtaT0zLHBpPTQ7Y2xhc3MgUERGRnVuY3Rpb25GYWN0b3J5e3N0YXRpYyNDPSEwO3N0YXRpYyBzZXRPcHRpb25zKHt1c2VXYXNtOmV9KXt0aGlzLiNDPWV9Y29uc3RydWN0b3Ioe3hyZWY6ZX0pe3RoaXMueHJlZj1lfWdldCB1c2VXYXNtKCl7cmV0dXJuIFBERkZ1bmN0aW9uRmFjdG9yeS4jQ31jcmVhdGUoZSx0PSExKXtsZXQgYSxuO2UgaW5zdGFuY2VvZiBSZWY/YT1lOmUgaW5zdGFuY2VvZiBEaWN0P2E9ZS5vYmpJZDplIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9ZS5kaWN0Py5vYmpJZCk7aWYoYSl7Y29uc3QgZT10aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuZ2V0QnlSZWYoYSk7aWYoZSlyZXR1cm4gZX1jb25zdCBzPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO2lmKEFycmF5LmlzQXJyYXkocykpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZSAtIGV4cGVjdGVkICJwYXJzZUFycmF5IiBhcmd1bWVudC4nKTtuPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkodGhpcyxzKX1lbHNlIG49UERGRnVuY3Rpb24ucGFyc2UodGhpcyxzKTthJiZ0aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0KG51bGwsYSxuKTtyZXR1cm4gbn1nZXQgX2xvY2FsRnVuY3Rpb25DYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IExvY2FsRnVuY3Rpb25DYWNoZSl9fWZ1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aXNOdW1iZXJBcnJheShlLG51bGwpP2U6ZS5tYXAoZT0+K2UpOm51bGx9Y2xhc3MgUERGRnVuY3Rpb257c3RhdGljIGdldFNhbXBsZUFycmF5KGUsdCxhLG4pe2xldCBzPXQ7Zm9yKGNvbnN0IHQgb2YgZSlzKj10O2NvbnN0IHI9bmV3IEFycmF5KHMpO2xldCBpPTAsbz0wO2NvbnN0IGw9MS8oMioqYS0xKSxmPW4uZ2V0Qnl0ZXMoKHMqYSs3KS84KTtsZXQgYz0wO2ZvcihsZXQgZT0wO2U8cztlKyspe2Zvcig7aTxhOyl7bzw8PTg7b3w9ZltjKytdO2krPTh9aS09YTtyW2VdPShvPj5pKSpsO28mPSgxPDxpKS0xfXJldHVybiByfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0IGE9dC5kaWN0fHx0LG49YS5nZXQoIkZ1bmN0aW9uVHlwZSIpO3N3aXRjaChuKXtjYXNlIGhpOnJldHVybiB0aGlzLmNvbnN0cnVjdFNhbXBsZWQoZSx0LGEpO2Nhc2UgdWk6cmV0dXJuIHRoaXMuY29uc3RydWN0SW50ZXJwb2xhdGVkKGUsYSk7Y2FzZSBtaTpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTdGljaGVkKGUsYSk7Y2FzZSBwaTpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RQb3N0U2NyaXB0KGUsdCxhKX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gZnVuY3Rpb24gdHlwZTogJHtufWApfXN0YXRpYyBwYXJzZUFycmF5KGUsdCl7Y29uc3R7eHJlZjphfT1lLG49W107Zm9yKGNvbnN0IHMgb2YgdCluLnB1c2godGhpcy5wYXJzZShlLGEuZmV0Y2hJZlJlZihzKSkpO3JldHVybiBmdW5jdGlvbihlLHQsYSxzKXtmb3IobGV0IHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspbltyXShlLHQsYSxzK3IpfX1zdGF0aWMgY29uc3RydWN0U2FtcGxlZChlLHQsYSl7ZnVuY3Rpb24gaW50ZXJwb2xhdGUoZSx0LGEsbixzKXtyZXR1cm4gbisocy1uKS8oYS10KSooZS10KX1jb25zdCBuPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighbnx8IXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4gb3IgcmFuZ2UiKTtjb25zdCByPW4ubGVuZ3RoLzIsaT1zLmxlbmd0aC8yLG89dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJTaXplIikpLGw9YS5nZXQoIkJpdHNQZXJTYW1wbGUiKSxmPWEuZ2V0KCJPcmRlciIpfHwxOzEhPT1mJiZpbmZvKCJObyBzdXBwb3J0IGZvciBjdWJpYyBzcGxpbmUgaW50ZXJwb2xhdGlvbjogIitmKTtsZXQgYz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkVuY29kZSIpKTtpZighYyl7Yz1bXTtmb3IobGV0IGU9MDtlPHI7KytlKWMucHVzaCgwLG9bZV0tMSl9Y29uc3QgaD10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRlY29kZSIpKXx8cyx1PXRoaXMuZ2V0U2FtcGxlQXJyYXkobyxpLGwsdCk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsYSxsKXtjb25zdCBmPTE8PHIsbT1uZXcgRmxvYXQ2NEFycmF5KGYpLmZpbGwoMSkscD1uZXcgVWludDMyQXJyYXkoZik7bGV0IGQsZyxiPWksdz0xO2ZvcihkPTA7ZDxyOysrZCl7Y29uc3QgYT1uWzIqZF0scz1uWzIqZCsxXTtsZXQgcj1pbnRlcnBvbGF0ZShNYXRoQ2xhbXAoZVt0K2RdLGEscyksYSxzLGNbMipkXSxjWzIqZCsxXSk7Y29uc3QgaT1vW2RdO3I9TWF0aENsYW1wKHIsMCxpLTEpO2NvbnN0IGw9cjxpLTE/TWF0aC5mbG9vcihyKTpyLTEsaD1sKzEtcix1PXItbCxqPWwqYixrPWorYjtmb3IoZz0wO2c8ZjtnKyspaWYoZyZ3KXttW2ddKj11O3BbZ10rPWt9ZWxzZXttW2ddKj1oO3BbZ10rPWp9Yio9aTt3PDw9MX1mb3IoZz0wO2c8aTsrK2cpe2xldCBlPTA7Zm9yKGQ9MDtkPGY7ZCsrKWUrPXVbcFtkXStnXSptW2RdO2U9aW50ZXJwb2xhdGUoZSwwLDEsaFsyKmddLGhbMipnKzFdKTthW2wrZ109TWF0aENsYW1wKGUsc1syKmddLHNbMipnKzFdKX19fXN0YXRpYyBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWQoZSx0KXtjb25zdCBhPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiQzAiKSl8fFswXSxuPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiQzEiKSl8fFsxXSxzPXQuZ2V0KCJOIikscj1bXTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDsrK2Upci5wdXNoKG5bZV0tYVtlXSk7Y29uc3QgaT1yLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0SW50ZXJwb2xhdGVkRm4oZSx0LG4sbyl7Y29uc3QgbD0xPT09cz9lW3RdOmVbdF0qKnM7Zm9yKGxldCBlPTA7ZTxpOysrZSluW28rZV09YVtlXStsKnJbZV19fXN0YXRpYyBjb25zdHJ1Y3RTdGljaGVkKGUsdCl7Y29uc3QgYT10b051bWJlckFycmF5KHQuZ2V0QXJyYXkoIkRvbWFpbiIpKTtpZighYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiIpO2lmKDEhPT1hLmxlbmd0aC8yKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQmFkIGRvbWFpbiBmb3Igc3RpY2hlZCBmdW5jdGlvbiIpO2NvbnN0e3hyZWY6bn09ZSxzPVtdO2Zvcihjb25zdCBhIG9mIHQuZ2V0KCJGdW5jdGlvbnMiKSlzLnB1c2godGhpcy5wYXJzZShlLG4uZmV0Y2hJZlJlZihhKSkpO2NvbnN0IHI9dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJCb3VuZHMiKSksaT10b051bWJlckFycmF5KHQuZ2V0QXJyYXkoIkVuY29kZSIpKSxvPW5ldyBGbG9hdDMyQXJyYXkoMSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFN0aWNoZWRGbihlLHQsbixsKXtjb25zdCBmPU1hdGhDbGFtcChlW3RdLGFbMF0sYVsxXSksYz1yLmxlbmd0aDtsZXQgaDtmb3IoaD0wO2g8YyYmIShmPHJbaF0pOysraCk7Y29uc3QgdT1oPjA/cltoLTFdOmFbMF0sbT1oPGM/cltoXTphWzFdLHA9aVsyKmhdLGQ9aVsyKmgrMV07b1swXT11PT09bT9wOnArKGYtdSkqKGQtcCkvKG0tdSk7c1toXShvLDAsbixsKX19c3RhdGljIGNvbnN0cnVjdFBvc3RTY3JpcHQoZSx0LGEpe2NvbnN0IG49dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSkscz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFuKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluLiIpO2lmKCFzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3Qgcj10LmdldFN0cmluZygpO3RyeXtpZihlLnVzZVdhc20pe2NvbnN0IGU9YnVpbGRQb3N0U2NyaXB0V2FzbUZ1bmN0aW9uKHIsbixzKTtpZihlKXJldHVybiBlfX1jYXRjaHt9d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgUG9zdFNjcmlwdCBmdW5jdGlvbiB0byB3YXNtLCBmYWxsaW5nIGJhY2sgdG8gSlMiKTtyZXR1cm4gZnVuY3Rpb24gYnVpbGRQb3N0U2NyaXB0SnNGdW5jdGlvbihlLHQsYSxuPSExKXtjb25zdCBzPXBhcnNlUG9zdFNjcmlwdEZ1bmN0aW9uKGUpLHI9IW4mJm5ldyBQc0pzQ29tcGlsZXIodCxhKS5jb21waWxlKHMpO3JldHVybiByPyhlLHQsYSxuKT0+e1BzSnNDb21waWxlci5leGVjdXRlKHIsZSx0LGEsbil9OlBTU3RhY2tCYXNlZEludGVycHJldGVyLmJ1aWxkKHMsdCxhKX0ocixuLHMpfX1mdW5jdGlvbiBpc1BERkZ1bmN0aW9uKGUpe2xldCB0O2lmKGUgaW5zdGFuY2VvZiBEaWN0KXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9Y29uc3QgZGk9WyJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJTIiwiQiIsIlMiLCJXUyIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkIiLCJCIiwiUyIsIldTIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJFUyIsIkNTIiwiRVMiLCJDUyIsIkNTIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJDUyIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQ1MiLCJPTiIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiT04iLCJPTiIsIkJOIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFTiIsIkVOIiwiT04iLCJMIiwiT04iLCJPTiIsIk9OIiwiRU4iLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCJdLGdpPVsiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiT04iLCJPTiIsIkFMIiwiRVQiLCJFVCIsIkFMIiwiQ1MiLCJBTCIsIk9OIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJFVCIsIkFOIiwiQU4iLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQU4iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCJdO2Z1bmN0aW9uIGlzT2RkKGUpe3JldHVybiEhKDEmZSl9ZnVuY3Rpb24gaXNFdmVuKGUpe3JldHVybiEoMSZlKX1mdW5jdGlvbiBmaW5kVW5lcXVhbChlLHQsYSl7bGV0IG4scztmb3Iobj10LHM9ZS5sZW5ndGg7bjxzOysrbilpZihlW25dIT09YSlyZXR1cm4gbjtyZXR1cm4gbn1mdW5jdGlvbiByZXZlcnNlVmFsdWVzKGUsdCxhKXtmb3IobGV0IG49dCxzPWEtMTtuPHM7KytuLC0tcyl7Y29uc3QgdD1lW25dO2Vbbl09ZVtzXTtlW3NdPXR9fWZ1bmN0aW9uIGNyZWF0ZUJpZGlUZXh0KGUsdCxhPSExKXtsZXQgbj0ibHRyIjthP249InR0YiI6dHx8KG49InJ0bCIpO3JldHVybntzdHI6ZSxkaXI6bn19Y29uc3QgYmk9W10sd2k9W107ZnVuY3Rpb24gYmlkaShlLHQ9LTEsYT0hMSl7bGV0IG49ITA7Y29uc3Qgcz1lLmxlbmd0aDtpZigwPT09c3x8YSlyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxuLGEpO2JpLmxlbmd0aD1zO3dpLmxlbmd0aD1zO2xldCByLGksbz0wO2ZvcihyPTA7cjxzOysrcil7Ymlbcl09ZS5jaGFyQXQocik7Y29uc3QgdD1lLmNoYXJDb2RlQXQocik7bGV0IGE9IkwiO2lmKHQ8PTI1NSlhPWRpW3RdO2Vsc2UgaWYoMTQyNDw9dCYmdDw9MTUyNClhPSJSIjtlbHNlIGlmKDE1MzY8PXQmJnQ8PTE3OTEpe2E9Z2lbMjU1JnRdO2F8fHdhcm4oIkJpZGk6IGludmFsaWQgVW5pY29kZSBjaGFyYWN0ZXIgIit0LnRvU3RyaW5nKDE2KSl9ZWxzZSgxNzkyPD10JiZ0PD0yMjIwfHw2NDMzNjw9dCYmdDw9NjUwMjN8fDY1MTM2PD10JiZ0PD02NTI3OSkmJihhPSJBTCIpOyJSIiE9PWEmJiJBTCIhPT1hJiYiQU4iIT09YXx8bysrO3dpW3JdPWF9aWYoMD09PW8pe249ITA7cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KGUsbil9aWYoLTE9PT10KWlmKG8vczwuMyYmcz40KXtuPSEwO3Q9MH1lbHNle249ITE7dD0xfWNvbnN0IGw9W107Zm9yKHI9MDtyPHM7KytyKWxbcl09dDtjb25zdCBmPWlzT2RkKHQpPyJSIjoiTCIsYz1mLGg9YztsZXQgdSxtPWM7Zm9yKHI9MDtyPHM7KytyKSJOU00iPT09d2lbcl0/d2lbcl09bTptPXdpW3JdO209Yztmb3Iocj0wO3I8czsrK3Ipe3U9d2lbcl07IkVOIj09PXU/d2lbcl09IkFMIj09PW0/IkFOIjoiRU4iOiJSIiE9PXUmJiJMIiE9PXUmJiJBTCIhPT11fHwobT11KX1mb3Iocj0wO3I8czsrK3Ipe3U9d2lbcl07IkFMIj09PXUmJih3aVtyXT0iUiIpfWZvcihyPTE7cjxzLTE7KytyKXsiRVMiPT09d2lbcl0mJiJFTiI9PT13aVtyLTFdJiYiRU4iPT09d2lbcisxXSYmKHdpW3JdPSJFTiIpOyJDUyIhPT13aVtyXXx8IkVOIiE9PXdpW3ItMV0mJiJBTiIhPT13aVtyLTFdfHx3aVtyKzFdIT09d2lbci0xXXx8KHdpW3JdPXdpW3ItMV0pfWZvcihyPTA7cjxzOysrcilpZigiRU4iPT09d2lbcl0pe2ZvcihsZXQgZT1yLTE7ZT49MCYmIkVUIj09PXdpW2VdOy0tZSl3aVtlXT0iRU4iO2ZvcihsZXQgZT1yKzE7ZTxzJiYiRVQiPT09d2lbZV07KytlKXdpW2VdPSJFTiJ9Zm9yKHI9MDtyPHM7KytyKXt1PXdpW3JdOyJXUyIhPT11JiYiRVMiIT09dSYmIkVUIiE9PXUmJiJDUyIhPT11fHwod2lbcl09Ik9OIil9bT1jO2ZvcihyPTA7cjxzOysrcil7dT13aVtyXTsiRU4iPT09dT93aVtyXT0iTCI9PT1tPyJMIjoiRU4iOiJSIiE9PXUmJiJMIiE9PXV8fChtPXUpfWZvcihyPTA7cjxzOysrcilpZigiT04iPT09d2lbcl0pe2NvbnN0IGU9ZmluZFVuZXF1YWwod2kscisxLCJPTiIpO2xldCB0PWM7Zm9yKGxldCBlPXItMTtlPj0wO2UtLSl7Y29uc3QgYT13aVtlXTtpZigiTCI9PT1hKXt0PSJMIjticmVha31pZigiUiI9PT1hfHwiRU4iPT09YXx8IkFOIj09PWEpe3Q9IlIiO2JyZWFrfX1sZXQgYT1oO2ZvcihsZXQgdD1lO3Q8czt0Kyspe2NvbnN0IGU9d2lbdF07aWYoIkwiPT09ZSl7YT0iTCI7YnJlYWt9aWYoIlIiPT09ZXx8IkVOIj09PWV8fCJBTiI9PT1lKXthPSJSIjticmVha319dD09PWEmJndpLmZpbGwodCxyLGUpO3I9ZS0xfWZvcihyPTA7cjxzOysrcikiT04iPT09d2lbcl0mJih3aVtyXT1mKTtmb3Iocj0wO3I8czsrK3Ipe3U9d2lbcl07aXNFdmVuKGxbcl0pPyJSIj09PXU/bFtyXSs9MToiQU4iIT09dSYmIkVOIiE9PXV8fChsW3JdKz0yKToiTCIhPT11JiYiQU4iIT09dSYmIkVOIiE9PXV8fChsW3JdKz0xKX1sZXQgcCxkPS0xLGc9OTk7Zm9yKHI9MCxpPWwubGVuZ3RoO3I8aTsrK3Ipe3A9bFtyXTtkPHAmJihkPXApO2c+cCYmaXNPZGQocCkmJihnPXApfWZvcihwPWQ7cD49ZzstLXApe2xldCBlPS0xO2ZvcihyPTAsaT1sLmxlbmd0aDtyPGk7KytyKWlmKGxbcl08cCl7aWYoZT49MCl7cmV2ZXJzZVZhbHVlcyhiaSxlLHIpO2U9LTF9fWVsc2UgZTwwJiYoZT1yKTtlPj0wJiZyZXZlcnNlVmFsdWVzKGJpLGUsbC5sZW5ndGgpfWZvcihyPTAsaT1iaS5sZW5ndGg7cjxpOysrcil7Y29uc3QgZT1iaVtyXTsiPCIhPT1lJiYiPiIhPT1lfHwoYmlbcl09IiIpfXJldHVybiBjcmVhdGVCaWRpVGV4dChiaS5qb2luKCIiKSxuKX1jb25zdCBqaT17c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwifSxraT17c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiJib2xkIn0seWk9e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoibm9ybWFsIn0scWk9e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoiYm9sZCJ9LHZpPW5ldyBNYXAoW1siVGltZXMtUm9tYW4iLHtsb2NhbDpbIlRpbWVzIE5ldyBSb21hbiIsIlRpbWVzLVJvbWFuIiwiVGltZXMiLCJMaWJlcmF0aW9uIFNlcmlmIiwiTmltYnVzIFJvbWFuIiwiTmltYnVzIFJvbWFuIEwiLCJUaW5vcyIsIlRob3JuZGFsZSIsIlRlWCBHeXJlIFRlcm1lcyIsIkZyZWVTZXJpZiIsIkxpbnV4IExpYmVydGluZSBPIiwiTGliZXJ0aW51cyBTZXJpZiIsIlBUIEFzdHJhIFNlcmlmIiwiRGVqYVZ1IFNlcmlmIiwiQml0c3RyZWFtIFZlcmEgU2VyaWYiLCJVYnVudHUiXSxzdHlsZTpqaSx1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1Cb2xkIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTpraSx1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1JdGFsaWMiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOnlpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUJvbGRJdGFsaWMiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOnFpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIkhlbHZldGljYSIse2xvY2FsOlsiSGVsdmV0aWNhIiwiSGVsdmV0aWNhIE5ldWUiLCJBcmlhbCIsIkFyaWFsIE5vdmEiLCJMaWJlcmF0aW9uIFNhbnMiLCJBcmltbyIsIk5pbWJ1cyBTYW5zIiwiTmltYnVzIFNhbnMgTCIsIkEwMzAiLCJUZVggR3lyZSBIZXJvcyIsIkZyZWVTYW5zIiwiRGVqYVZ1IFNhbnMiLCJBbGJhbnkiLCJCaXRzdHJlYW0gVmVyYSBTYW5zIiwiQXJpYWwgVW5pY29kZSBNUyIsIk1pY3Jvc29mdCBTYW5zIFNlcmlmIiwiQXBwbGUgU3ltYm9scyIsIkNhbnRhcmVsbCJdLHBhdGg6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIixzdHlsZTpqaSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1Cb2xkIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZC50dGYiLHN0eWxlOmtpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLU9ibGlxdWUiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIixzdHlsZTp5aSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIixzdHlsZTpxaSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkNvdXJpZXIiLHtsb2NhbDpbIkNvdXJpZXIiLCJDb3VyaWVyIE5ldyIsIkxpYmVyYXRpb24gTW9ubyIsIk5pbWJ1cyBNb25vIiwiTmltYnVzIE1vbm8gTCIsIkNvdXNpbmUiLCJDdW1iZXJsYW5kIiwiVGVYIEd5cmUgQ3Vyc29yIiwiRnJlZU1vbm8iLCJMaW51eCBMaWJlcnRpbmUgTW9ubyBPIiwiTGliZXJ0aW51cyBNb25vIl0sc3R5bGU6amksdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZCIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTpraSx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1PYmxpcXVlIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOnlpLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLUJvbGRPYmxpcXVlIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOnFpLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJBcmlhbEJsYWNrIix7bG9jYWw6WyJBcmlhbCBCbGFjayJdLHN0eWxlOntzdHlsZToibm9ybWFsIix3ZWlnaHQ6IjkwMCJ9LGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkFyaWFsQmxhY2stQm9sZCIse2FsaWFzOiJBcmlhbEJsYWNrIn1dLFsiQXJpYWxCbGFjay1JdGFsaWMiLHthbGlhczoiQXJpYWxCbGFjayIsc3R5bGU6e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoiOTAwIn0sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJ9XSxbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyIse2FsaWFzOiJBcmlhbEJsYWNrLUl0YWxpYyJ9XSxbIkFyaWFsTmFycm93Iix7bG9jYWw6WyJBcmlhbCBOYXJyb3ciLCJMaWJlcmF0aW9uIFNhbnMgTmFycm93IiwiSGVsdmV0aWNhIENvbmRlbnNlZCIsIk5pbWJ1cyBTYW5zIE5hcnJvdyIsIlRlWCBHeXJlIEhlcm9zIENuIl0sc3R5bGU6amksZmFsbGJhY2s6IkhlbHZldGljYSJ9XSxbIkFyaWFsTmFycm93LUJvbGQiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOmtpLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkFyaWFsTmFycm93LUl0YWxpYyIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6eWksZmFsbGJhY2s6IkhlbHZldGljYS1PYmxpcXVlIn1dLFsiQXJpYWxOYXJyb3ctQm9sZEl0YWxpYyIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6cWksZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJ9XSxbIkNhbGlicmkiLHtsb2NhbDpbIkNhbGlicmkiLCJDYXJsaXRvIl0sc3R5bGU6amksZmFsbGJhY2s6IkhlbHZldGljYSJ9XSxbIkNhbGlicmktQm9sZCIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTpraSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJDYWxpYnJpLUl0YWxpYyIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTp5aSxmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJDYWxpYnJpLUJvbGRJdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6cWksZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJ9XSxbIldpbmdkaW5ncyIse2xvY2FsOlsiV2luZ2RpbmdzIiwiVVJXIERpbmdiYXRzIl0sc3R5bGU6aml9XSxbIldpbmdkaW5ncy1SZWd1bGFyIix7YWxpYXM6IldpbmdkaW5ncyJ9XSxbIldpbmdkaW5ncy1Cb2xkIix7YWxpYXM6IldpbmdkaW5ncyJ9XSxbIsOLw47DjMOlIix7bG9jYWw6WyJTaW1TdW4iLCJTaW1TdW4gUmVndWxhciIsIk5TaW1TdW4iXSxzdHlsZTpqaSx1bHRpbWF0ZToic2VyaWYifV0sWyLCusOaw4zDpSIse2xvY2FsOlsiU2ltSGVpIiwiU2ltSGVpIFJlZ3VsYXIiXSxzdHlsZTpqaSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIsK/wqzDjMOlIix7bG9jYWw6WyJLYWlUaSIsIlNpbUthaSIsIlNpbUthaSBSZWd1bGFyIl0sc3R5bGU6amksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyLCt8OCw4vDjiIse2xvY2FsOlsiRmFuZ1NvbmciLCJTaW1GYW5nIiwiU2ltRmFuZyBSZWd1bGFyIl0sc3R5bGU6amksdWx0aW1hdGU6InNlcmlmIn1dLFsiwr/CrMOMw6VfR0IyMzEyIix7YWxpYXM6IsK/wqzDjMOlIn1dLFsiwrfDgsOLw45fR0IyMzEyIix7YWxpYXM6IsK3w4LDi8OOIn1dLFsiw4HCpcOKw6kiLHtsb2NhbDpbIlNpbUxpIiwiU2ltTGkgUmVndWxhciJdLHN0eWxlOmppLHVsdGltYXRlOiJzZXJpZiJ9XSxbIsOQw4LDi8OOIix7YWxpYXM6IsOLw47DjMOlIn1dXSksU2k9bmV3IE1hcChbWyJBcmlhbC1CbGFjayIsIkFyaWFsQmxhY2siXV0pO2Z1bmN0aW9uIGdldEZhbWlseU5hbWUoZSl7Y29uc3QgdD1uZXcgU2V0KFsidGhpbiIsImV4dHJhbGlnaHQiLCJ1bHRyYWxpZ2h0IiwiZGVtaWxpZ2h0Iiwic2VtaWxpZ2h0IiwibGlnaHQiLCJib29rIiwicmVndWxhciIsIm5vcm1hbCIsIm1lZGl1bSIsImRlbWlib2xkIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwidWx0cmFib2xkIiwiYmxhY2siLCJoZWF2eSIsImV4dHJhYmxhY2siLCJ1bHRyYWJsYWNrIiwicm9tYW4iLCJpdGFsaWMiLCJvYmxpcXVlIiwidWx0cmFjb25kZW5zZWQiLCJleHRyYWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWljb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhZXhwYW5kZWQiLCJ1bHRyYWV4cGFuZGVkIiwiYm9sZGl0YWxpYyJdKTtyZXR1cm4gZS5zcGxpdCgvWy0gLCtdKy9nKS5maWx0ZXIoZT0+IXQuaGFzKGUudG9Mb3dlckNhc2UoKSkpLmpvaW4oIiAiKX1mdW5jdGlvbiBnZW5lcmF0ZUZvbnQoe2FsaWFzOmUsbG9jYWw6dCxwYXRoOmEsZmFsbGJhY2s6bixzdHlsZTpzLHVsdGltYXRlOnJ9LGksbyxsPSEwLGY9ITAsYz0iIil7Y29uc3QgaD17c3R5bGU6bnVsbCx1bHRpbWF0ZTpudWxsfTtpZih0KXtjb25zdCBlPWM/YCAke2N9YDoiIjtmb3IoY29uc3QgYSBvZiB0KWkucHVzaChgbG9jYWwoJHthfSR7ZX0pYCl9aWYoZSl7Y29uc3QgdD12aS5nZXQoZSkscj1jfHxmdW5jdGlvbiBnZXRTdHlsZVRvQXBwZW5kKGUpe3N3aXRjaChlKXtjYXNlIGtpOnJldHVybiJCb2xkIjtjYXNlIHlpOnJldHVybiJJdGFsaWMiO2Nhc2UgcWk6cmV0dXJuIkJvbGQgSXRhbGljIjtkZWZhdWx0OmlmKCJib2xkIj09PWU/LndlaWdodClyZXR1cm4iQm9sZCI7aWYoIml0YWxpYyI9PT1lPy5zdHlsZSlyZXR1cm4iSXRhbGljIn1yZXR1cm4iIn0ocyk7T2JqZWN0LmFzc2lnbihoLGdlbmVyYXRlRm9udCh0LGksbyxsJiYhbixmJiYhYSxyKSl9cyYmKGguc3R5bGU9cyk7ciYmKGgudWx0aW1hdGU9cik7aWYobCYmbil7Y29uc3QgZT12aS5nZXQobikse3VsdGltYXRlOnR9PWdlbmVyYXRlRm9udChlLGksbyxsLGYmJiFhLGMpO2gudWx0aW1hdGV8fD10fWYmJmEmJm8mJmkucHVzaChgdXJsKCR7b30ke2F9KWApO3JldHVybiBofWZ1bmN0aW9uIGdldEZvbnRTdWJzdGl0dXRpb24oZSx0LGEsbixzLHIpe2lmKG4uc3RhcnRzV2l0aCgiSW52YWxpZFBERmpzRm9udF8iKSlyZXR1cm4gbnVsbDsiVHJ1ZVR5cGUiIT09ciYmIlR5cGUxIiE9PXJ8fCEvXltBLVpdezZ9XCsvLnRlc3Qobil8fChuPW4uc2xpY2UoNykpO2NvbnN0IGk9bj1ub3JtYWxpemVGb250TmFtZShuKTtsZXQgbz1lLmdldChpKTtpZihvKXJldHVybiBvO2xldCBsPXZpLmdldChuKTtpZighbClmb3IoY29uc3RbZSx0XW9mIFNpKWlmKG4uc3RhcnRzV2l0aChlKSl7bj1gJHt0fSR7bi5zdWJzdHJpbmcoZS5sZW5ndGgpfWA7bD12aS5nZXQobik7YnJlYWt9bGV0IGY9ITE7aWYoIWwpe2w9dmkuZ2V0KHMpO2Y9ITB9Y29uc3QgYz1gJHt0LmdldERvY0lkKCl9X3Mke3QuY3JlYXRlRm9udElkKCl9YDtpZighbCl7aWYoIXZhbGlkYXRlRm9udE5hbWUobikpe3dhcm4oYENhbm5vdCBzdWJzdGl0dXRlIHRoZSBmb250IGJlY2F1c2Ugb2YgaXRzIG5hbWU6ICR7bn1gKTtlLnNldChpLG51bGwpO3JldHVybiBudWxsfWNvbnN0IHQ9L2JvbGQvZ2kudGVzdChuKSxhPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KG4pLHM9dCYmYSYmcWl8fHQmJmtpfHxhJiZ5aXx8amk7bz17Y3NzOmAiJHtnZXRGYW1pbHlOYW1lKG4pfSIsJHtjfWAsZ3Vlc3NGYWxsYmFjazohMCxsb2FkZWROYW1lOmMsYmFzZUZvbnROYW1lOm4sc3JjOmBsb2NhbCgke259KWAsc3R5bGU6c307ZS5zZXQoaSxvKTtyZXR1cm4gb31jb25zdCBoPVtdO2YmJnZhbGlkYXRlRm9udE5hbWUobikmJmgucHVzaChgbG9jYWwoJHtufSlgKTtjb25zdHtzdHlsZTp1LHVsdGltYXRlOm19PWdlbmVyYXRlRm9udChsLGgsYSkscD1udWxsPT09bSxkPXA/IiI6YCwke219YDtvPXtjc3M6YCIke2dldEZhbWlseU5hbWUobil9Iiwke2N9JHtkfWAsZ3Vlc3NGYWxsYmFjazpwLGxvYWRlZE5hbWU6YyxiYXNlRm9udE5hbWU6bixzcmM6aC5qb2luKCIsIiksc3R5bGU6dX07ZS5zZXQoaSxvKTtyZXR1cm4gb31jb25zdCBBaT0zMjg1Mzc3NTIwLHhpPTQyOTQ5MDE3NjAsQ2k9NjU1MzU7Y2xhc3MgTXVybXVySGFzaDNfNjR7Y29uc3RydWN0b3IoZSl7dGhpcy5oMT1lPzQyOTQ5NjcyOTUmZTpBaTt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOkFpfXVwZGF0ZShlKXtsZXQgdCxhO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dD1uZXcgVWludDhBcnJheSgyKmUubGVuZ3RoKTthPTA7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtjb25zdCBzPWUuY2hhckNvZGVBdChuKTtpZihzPD0yNTUpdFthKytdPXM7ZWxzZXt0W2ErK109cz4+Pjg7dFthKytdPTI1NSZzfX19ZWxzZXtpZighQXJyYXlCdWZmZXIuaXNWaWV3KGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkYXRhIGZvcm1hdCwgbXVzdCBiZSBhIHN0cmluZyBvciBUeXBlZEFycmF5LiIpO3Q9ZS5zbGljZSgpO2E9dC5ieXRlTGVuZ3RofWNvbnN0IG49YT4+MixzPWEtNCpuLHI9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsbik7bGV0IGk9MCxvPTAsbD10aGlzLmgxLGY9dGhpcy5oMjtjb25zdCBjPTM0MzI5MTgzNTMsaD00NjE4NDU5MDcsdT0xMTYwMSxtPTEzNzE1O2ZvcihsZXQgZT0wO2U8bjtlKyspaWYoMSZlKXtpPXJbZV07aT1pKmMmeGl8aSp1JkNpO2k9aTw8MTV8aT4+PjE3O2k9aSpoJnhpfGkqbSZDaTtsXj1pO2w9bDw8MTN8bD4+PjE5O2w9NSpsKzM4NjQyOTIxOTZ9ZWxzZXtvPXJbZV07bz1vKmMmeGl8byp1JkNpO289bzw8MTV8bz4+PjE3O289bypoJnhpfG8qbSZDaTtmXj1vO2Y9Zjw8MTN8Zj4+PjE5O2Y9NSpmKzM4NjQyOTIxOTZ9aT0wO3N3aXRjaChzKXtjYXNlIDM6aV49dFs0Km4rMl08PDE2O2Nhc2UgMjppXj10WzQqbisxXTw8ODtjYXNlIDE6aV49dFs0Km5dO2k9aSpjJnhpfGkqdSZDaTtpPWk8PDE1fGk+Pj4xNztpPWkqaCZ4aXxpKm0mQ2k7MSZuP2xePWk6Zl49aX10aGlzLmgxPWw7dGhpcy5oMj1mfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJnhpfDM2MDQ1KmUmQ2k7dD00MjgzNTQzNTExKnQmeGl8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmeGkpPj4+MTY7ZV49dD4+PjE7ZT00NDQ5ODQ0MDMqZSZ4aXw2MDQ5OSplJkNpO3Q9MzMwMTg4MjM2Nip0JnhpfCgzMTIwNDM3ODkzKih0PDwxNnxlPj4+MTYpJnhpKT4+PjE2O2VePXQ+Pj4xO3JldHVybihlPj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSsodD4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIil9fWNsYXNzIFBERkltYWdle2NvbnN0cnVjdG9yKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTpuPSExLHNtYXNrOnM9bnVsbCxtYXNrOnI9bnVsbCxpc01hc2s6aT0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSl7dGhpcy5pbWFnZT1hO2NvbnN0IGM9YS5kaWN0LGg9Yy5nZXQoIkYiLCJGaWx0ZXIiKTtsZXQgdTtpZihoIGluc3RhbmNlb2YgTmFtZSl1PWgubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoaCkpe2NvbnN0IHQ9ZS5mZXRjaElmUmVmKGhbMF0pO3QgaW5zdGFuY2VvZiBOYW1lJiYodT10Lm5hbWUpfXN3aXRjaCh1KXtjYXNlIkpQWERlY29kZSI6KHt3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodCxjb21wb25lbnRzQ291bnQ6YS5udW1Db21wcyxiaXRzUGVyQ29tcG9uZW50OmEuYml0c1BlckNvbXBvbmVudH09SnB4SW1hZ2UucGFyc2VJbWFnZVByb3BlcnRpZXMoYS5zdHJlYW0pKTthLnN0cmVhbS5yZXNldCgpO2NvbnN0IGU9SW1hZ2VSZXNpemVyLmdldFJlZHVjZVBvd2VyRm9ySlBYKGEud2lkdGgsYS5oZWlnaHQsYS5udW1Db21wcyk7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucz17bnVtQ29tcG9uZW50czowLGlzSW5kZXhlZENvbG9ybWFwOiExLHNtYXNrSW5EYXRhOmMuaGFzKCJTTWFza0luRGF0YSIpLHJlZHVjZVBvd2VyOmV9O2lmKGUpe2NvbnN0IHQ9MioqZTthLndpZHRoPU1hdGguY2VpbChhLndpZHRoL3QpO2EuaGVpZ2h0PU1hdGguY2VpbChhLmhlaWdodC90KX1icmVhaztjYXNlIkpCSUcyRGVjb2RlIjphLmJpdHNQZXJDb21wb25lbnQ9MTthLm51bUNvbXBzPTF9bGV0IG09Yy5nZXQoIlciLCJXaWR0aCIpLHA9Yy5nZXQoIkgiLCJIZWlnaHQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEud2lkdGgpJiZhLndpZHRoPjAmJk51bWJlci5pc0ludGVnZXIoYS5oZWlnaHQpJiZhLmhlaWdodD4wJiYoYS53aWR0aCE9PW18fGEuaGVpZ2h0IT09cCkpe3dhcm4oIlBERkltYWdlIC0gdXNpbmcgdGhlIFdpZHRoL0hlaWdodCBvZiB0aGUgaW1hZ2UgZGF0YSwgcmF0aGVyIHRoYW4gdGhlIGltYWdlIGRpY3Rpb25hcnkuIik7bT1hLndpZHRoO3A9YS5oZWlnaHR9ZWxzZXtjb25zdCBlPSJudW1iZXIiPT10eXBlb2YgbSYmbT4wLHQ9Im51bWJlciI9PXR5cGVvZiBwJiZwPjA7aWYoIWV8fCF0KXtpZighYS5mYWxsYmFja0RpbXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGltYWdlIHdpZHRoOiAke219IG9yIGhlaWdodDogJHtwfWApO3dhcm4oIlBERkltYWdlIC0gdXNpbmcgdGhlIFdpZHRoL0hlaWdodCBvZiB0aGUgcGFyZW50IGltYWdlLCBmb3IgU01hc2svTWFzayBkYXRhLiIpO2V8fChtPWEuZmFsbGJhY2tEaW1zLndpZHRoKTt0fHwocD1hLmZhbGxiYWNrRGltcy5oZWlnaHQpfX10aGlzLndpZHRoPW07dGhpcy5oZWlnaHQ9cDt0aGlzLmludGVycG9sYXRlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKTt0aGlzLmltYWdlTWFzaz1jLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITE7dGhpcy5tYXR0ZT1jLmdldCgiTWF0dGUiKXx8ITE7bGV0IGQ9YS5iaXRzUGVyQ29tcG9uZW50O2lmKCFkKXtkPWMuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iik7aWYoIWQpe2lmKCF0aGlzLmltYWdlTWFzayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJpdHMgcGVyIGNvbXBvbmVudCBtaXNzaW5nIGluIGltYWdlOiAke3RoaXMuaW1hZ2VNYXNrfWApO2Q9MX19dGhpcy5icGM9ZDtpZih0aGlzLmltYWdlTWFzayl0aGlzLm51bUNvbXBzPTE7ZWxzZXtsZXQgcz1jLmdldFJhdygiQ1MiKXx8Yy5nZXRSYXcoIkNvbG9yU3BhY2UiKTtjb25zdCByPSEhcztpZihyKXRoaXMuanB4RGVjb2Rlck9wdGlvbnM/LnNtYXNrSW5EYXRhJiYocz1OYW1lLmdldCgiRGV2aWNlUkdCQSIpKTtlbHNlIGlmKHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpcz1OYW1lLmdldCgiRGV2aWNlUkdCQSIpO2Vsc2Ugc3dpdGNoKGEubnVtQ29tcHMpe2Nhc2UgMTpzPU5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOnM9TmFtZS5nZXQoIkRldmljZVJHQiIpO2JyZWFrO2Nhc2UgNDpzPU5hbWUuZ2V0KCJEZXZpY2VDTVlLIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEltYWdlcyB3aXRoICR7YS5udW1Db21wc30gY29sb3IgY29tcG9uZW50cyBub3Qgc3VwcG9ydGVkLmApfXRoaXMuY29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOnMseHJlZjplLHJlc291cmNlczpuP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucyl7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5udW1Db21wb25lbnRzPXI/dGhpcy5udW1Db21wczowO3RoaXMuanB4RGVjb2Rlck9wdGlvbnMuaXNJbmRleGVkQ29sb3JtYXA9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlLm5hbWV9fXRoaXMuZGVjb2RlPWMuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTt0aGlzLm5lZWRzRGVjb2RlPSExO2lmKHRoaXMuZGVjb2RlJiYodGhpcy5jb2xvclNwYWNlJiYhdGhpcy5jb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSxkKXx8aSYmIUNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLDEpKSl7dGhpcy5uZWVkc0RlY29kZT0hMDtjb25zdCBlPSgxPDxkKS0xO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzPVtdO3RoaXMuZGVjb2RlQWRkZW5kcz1bXTtjb25zdCB0PSJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZT8ubmFtZTtmb3IobGV0IGE9MCxuPTA7YTx0aGlzLmRlY29kZS5sZW5ndGg7YSs9MiwrK24pe2NvbnN0IHM9dGhpcy5kZWNvZGVbYV0scj10aGlzLmRlY29kZVthKzFdO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzW25dPXQ/KHItcykvZTpyLXM7dGhpcy5kZWNvZGVBZGRlbmRzW25dPXQ/czplKnN9fWlmKHMpe3MuZmFsbGJhY2tEaW1zPz89e3dpZHRoOm0saGVpZ2h0OnB9O3RoaXMuc21hc2s9bmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6cyxpc0lubGluZTpuLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpsLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KX1lbHNlIGlmKHIpaWYociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2lmKHIuZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIikpe3IuZmFsbGJhY2tEaW1zPz89e3dpZHRoOm0saGVpZ2h0OnB9O3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpyLGlzSW5saW5lOm4saXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpsLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KX1lbHNlIHdhcm4oIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1yfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTpuPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtjb25zdCBvPWE7bGV0IGw9bnVsbCxmPW51bGw7Y29uc3QgYz1hLmRpY3QuZ2V0KCJTTWFzayIpLGg9YS5kaWN0LmdldCgiTWFzayIpO2M/YyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bD1jOndhcm4oIlVuc3VwcG9ydGVkIC9TTWFzayBmb3JtYXQuIik6aCYmKGggaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGgpP2Y9aDp3YXJuKCJVbnN1cHBvcnRlZCAvTWFzayBmb3JtYXQuIikpO3JldHVybiBuZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpvLGlzSW5saW5lOm4sc21hc2s6bCxtYXNrOmYscGRmRnVuY3Rpb25GYWN0b3J5OnMsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pfXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWFnZTplLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnQ9ITF9KXtjb25zdHtkaWN0OmF9PWUsbj1hLmdldCgiVyIsIldpZHRoIikscz1hLmdldCgiSCIsIkhlaWdodCIpLHI9YS5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLGk9YS5nZXRBcnJheSgiRCIsIkRlY29kZSIpLG89aT8uWzBdPjAsbD0obis3Pj4zKSpzLGY9YXdhaXQgZS5nZXRJbWFnZURhdGEobCksYz0xPT09biYmMT09PXMmJm89PT0oMD09PWYubGVuZ3RofHwhISgxMjgmZlswXSkpO2lmKGMpcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6Y307aWYodCl7aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQobixzKSl7Y29uc3QgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkobipzKjQpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZixkZXN0OmUsd2lkdGg6bixoZWlnaHQ6cyxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpvfSk7cmV0dXJuIEltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7a2luZDpPLGRhdGE6ZSx3aWR0aDpuLGhlaWdodDpzLGludGVycG9sYXRlOnJ9KX1jb25zdCBlPW5ldyBPZmZzY3JlZW5DYW52YXMobixzKSx0PWUuZ2V0Q29udGV4dCgiMmQiKSxhPXQuY3JlYXRlSW1hZ2VEYXRhKG4scyk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzpmLGRlc3Q6YS5kYXRhLHdpZHRoOm4saGVpZ2h0OnMsbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6b30pO3QucHV0SW1hZ2VEYXRhKGEsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOm4saGVpZ2h0OnMsaW50ZXJwb2xhdGU6cixiaXRtYXA6ZS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19Y29uc3QgaD1mLmJ5dGVMZW5ndGg7bGV0IHU7aWYoZSBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSYmKCFvfHxsPT09aCkpdT1mO2Vsc2UgaWYobyl7dT1uZXcgVWludDhBcnJheShsKTt1LnNldChmKTt1LmZpbGwoMjU1LGgpfWVsc2UgdT1uZXcgVWludDhBcnJheShmKTtpZihvKWZvcihsZXQgZT0wO2U8aDtlKyspdVtlXV49MjU1O3JldHVybntkYXRhOnUsd2lkdGg6bixoZWlnaHQ6cyxpbnRlcnBvbGF0ZTpyfX1nZXQgZHJhd1dpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzaz8ud2lkdGh8fDAsdGhpcy5tYXNrPy53aWR0aHx8MCl9Z2V0IGRyYXdIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzaz8uaGVpZ2h0fHwwLHRoaXMubWFzaz8uaGVpZ2h0fHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxhPXRoaXMubnVtQ29tcHMsbj10aGlzLmRlY29kZUFkZGVuZHMscz10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxyPSgxPDx0KS0xO2xldCBpLG87aWYoMT09PXQpe2ZvcihpPTAsbz1lLmxlbmd0aDtpPG87aSsrKWVbaV09KyFlW2ldO3JldHVybn1sZXQgbD0wO2ZvcihpPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O2k8bztpKyspZm9yKGxldCB0PTA7dDxhO3QrKyl7ZVtsXT1NYXRoQ2xhbXAoblt0XStlW2xdKnNbdF0sMCxyKTtsKyt9fWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCBhPXRoaXMud2lkdGgsbj10aGlzLmhlaWdodCxzPXRoaXMubnVtQ29tcHMscj1hKm4qcztsZXQgaSxvPTA7aT10PD04P25ldyBVaW50OEFycmF5KHIpOnQ8PTE2P25ldyBVaW50MTZBcnJheShyKTpuZXcgVWludDMyQXJyYXkocik7Y29uc3QgbD1hKnMsZj0oMTw8dCktMTtsZXQgYyxoLHU9MDtpZigxPT09dCl7bGV0IHQsYSxzO2ZvcihsZXQgcj0wO3I8bjtyKyspe2E9dSsoLTgmbCk7cz11K2w7Zm9yKDt1PGE7KXtoPWVbbysrXTtpW3VdPWg+PjcmMTtpW3UrMV09aD4+NiYxO2lbdSsyXT1oPj41JjE7aVt1KzNdPWg+PjQmMTtpW3UrNF09aD4+MyYxO2lbdSs1XT1oPj4yJjE7aVt1KzZdPWg+PjEmMTtpW3UrN109MSZoO3UrPTh9aWYodTxzKXtoPWVbbysrXTt0PTEyODtmb3IoO3U8czspe2lbdSsrXT0rISEoaCZ0KTt0Pj49MX19fX1lbHNle2xldCBhPTA7aD0wO2Zvcih1PTAsYz1yO3U8YzsrK3Upe2lmKHUlbD09PTApe2g9MDthPTB9Zm9yKDthPHQ7KXtoPWg8PDh8ZVtvKytdO2ErPTh9Y29uc3Qgbj1hLXQ7bGV0IHM9aD4+bjtzPDA/cz0wOnM+ZiYmKHM9Zik7aVt1XT1zO2gmPSgxPDxuKS0xO2E9bn19cmV0dXJuIGl9YXN5bmMgZmlsbE9wYWNpdHkoZSx0LGEsbixzKXtsZXQgcjtpZih0aGlzLnNtYXNrKXI9KGUsbik9PnRoaXMuc21hc2suZmlsbEdyYXlCdWZmZXIoZSx7Li4ubixkZXN0V2lkdGg6dCxkZXN0SGVpZ2h0OmF9KTtlbHNlIGlmKHRoaXMubWFzaylpZih0aGlzLm1hc2sgaW5zdGFuY2VvZiBQREZJbWFnZSlyPShlLG4pPT50aGlzLm1hc2suZmlsbEdyYXlCdWZmZXIoZSx7Li4ubixpbnZlcnRPdXRwdXQ6ITAsZGVzdFdpZHRoOnQsZGVzdEhlaWdodDphfSk7ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0aGlzLm1hc2spKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBtYXNrIGZvcm1hdC4iKTtyPShlLHttYXhSb3dzOmEsb2Zmc2V0Om4sc3RyaWRlOnJ9KT0+e2ZvcihsZXQgaT0wLG89dCphO2k8bzsrK2kpe2xldCB0PTA7Y29uc3QgYT1pKnRoaXMubnVtQ29tcHM7Zm9yKGxldCBlPTA7ZTx0aGlzLm51bUNvbXBzOysrZSl7Y29uc3Qgbj1zW2ErZV0scj0yKmU7aWYobjx0aGlzLm1hc2tbcl18fG4+dGhpcy5tYXNrW3IrMV0pe3Q9MjU1O2JyZWFrfX1lW2kqcituXT10fX19ZWxzZSByPShlLHttYXhSb3dzOmEsb2Zmc2V0Om4sc3RyaWRlOnN9KT0+e2ZvcihsZXQgcj0wLGk9dCphO3I8aTsrK3IpZVtyKnMrbl09MjU1fTthd2FpdCByKGUse21heFJvd3M6bixvZmZzZXQ6MyxzdHJpZGU6NH0pfXVuZG9QcmVibGVuZChlLHQsYSl7Y29uc3Qgbj10aGlzLnNtYXNrPy5tYXR0ZTtpZighbilyZXR1cm47Y29uc3Qgcz10aGlzLmNvbG9yU3BhY2UuZ2V0UmdiKG4sMCkscj1zWzBdLGk9c1sxXSxvPXNbMl0sbD10KmEqNDtmb3IobGV0IHQ9MDt0PGw7dCs9NCl7Y29uc3QgYT1lW3QrM107aWYoMD09PWEpe2VbdF09MjU1O2VbdCsxXT0yNTU7ZVt0KzJdPTI1NTtjb250aW51ZX1jb25zdCBuPTI1NS9hO2VbdF09KGVbdF0tcikqbityO2VbdCsxXT0oZVt0KzFdLWkpKm4raTtlW3QrMl09KGVbdCsyXS1vKSpuK299fWFzeW5jIGNyZWF0ZUltYWdlRGF0YShlPSExLHQ9ITEpe2NvbnN0IGE9dGhpcy5kcmF3V2lkdGgsbj10aGlzLmRyYXdIZWlnaHQscz17d2lkdGg6YSxoZWlnaHQ6bixpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlLGtpbmQ6MCxkYXRhOm51bGx9LHI9dGhpcy5udW1Db21wcyxpPXRoaXMud2lkdGgsbz10aGlzLmhlaWdodCxsPXRoaXMuYnBjLGY9aSpyKmwrNz4+MyxjPXQmJkltYWdlUmVzaXplci5uZWVkc1RvQmVSZXNpemVkKGEsbik7aWYoIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJiJEZXZpY2VSR0JBIj09PXRoaXMuY29sb3JTcGFjZS5uYW1lKXtzLmtpbmQ9Tztjb25zdCBlPXMuZGF0YT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMobyppKjQse2ludGVybmFsOnQmJmN9KTtyZXR1cm4gdD9jP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShzLCExKTp0aGlzLmNyZWF0ZUJpdG1hcChPLGEsbixlKTpzfWlmKCFlKXtsZXQgZTsiRGV2aWNlR3JheSI9PT10aGlzLmNvbG9yU3BhY2UubmFtZSYmMT09PWw/ZT1GOiJEZXZpY2VSR0IiIT09dGhpcy5jb2xvclNwYWNlLm5hbWV8fDghPT1sfHx0aGlzLm5lZWRzRGVjb2RlfHwoZT1UKTtpZihlJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmYT09PWkmJm49PT1vKXtjb25zdCByPWF3YWl0IHRoaXMuI01lKGksbyk7aWYocilyZXR1cm4gcjtjb25zdCBsPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmYse2ludGVybmFsOnQmJmN9KTtpZih0KXJldHVybiBjP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7ZGF0YTpsLGtpbmQ6ZSx3aWR0aDphLGhlaWdodDpuLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9LHRoaXMubmVlZHNEZWNvZGUpOnRoaXMuY3JlYXRlQml0bWFwKGUsaSxvLGwpO3Mua2luZD1lO3MuZGF0YT1sO2lmKHRoaXMubmVlZHNEZWNvZGUpe2Fzc2VydChlPT09RiwiUERGSW1hZ2UuY3JlYXRlSW1hZ2VEYXRhOiBUaGUgaW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUuIik7Y29uc3QgdD1zLmRhdGE7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXRbZV1ePTI1NX1yZXR1cm4gc31pZih0aGlzLmltYWdlIGluc3RhbmNlb2YgSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJiF0aGlzLm5lZWRzRGVjb2RlKXtsZXQgZT1vKmY7aWYodCYmIWMpe2xldCB0PSExO3N3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj00O3Q9ITA7YnJlYWs7Y2FzZSJEZXZpY2VSR0IiOmU9ZS8zKjQ7dD0hMDticmVhaztjYXNlIkRldmljZUNNWUsiOnQ9ITB9aWYodCl7Y29uc3QgdD1hd2FpdCB0aGlzLiNNZShhLG4pO2lmKHQpcmV0dXJuIHQ7Y29uc3Qgcz1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOmEsZHJhd0hlaWdodDpuLGZvcmNlUkdCQTohMCxpbnRlcm5hbDohMH0pO3JldHVybiB0aGlzLmNyZWF0ZUJpdG1hcChPLGEsbixzKX19ZWxzZSBzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjpzLmtpbmQ9VDtzLmRhdGE9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDphLGRyYXdIZWlnaHQ6bixmb3JjZVJHQjohMCxpbnRlcm5hbDpjfSk7cmV0dXJuIGM/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHMpOnN9fX1jb25zdCBoPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmYse2ludGVybmFsOiEwfSksdT0wfGgubGVuZ3RoL2Yqbi9vLG09dGhpcy5nZXRDb21wb25lbnRzKGgpO2xldCBwLGQsZyxiLHcsajtpZih0JiYhYyl7Zz1uZXcgT2Zmc2NyZWVuQ2FudmFzKGEsbik7Yj1nLmdldENvbnRleHQoIjJkIik7dz1iLmNyZWF0ZUltYWdlRGF0YShhLG4pO2o9dy5kYXRhfXMua2luZD1PO2lmKGV8fHRoaXMuc21hc2t8fHRoaXMubWFzayl7dCYmIWN8fChqPW5ldyBVaW50OENsYW1wZWRBcnJheShhKm4qNCkpO3A9MTtkPSEwO2F3YWl0IHRoaXMuZmlsbE9wYWNpdHkoaixhLG4sdSxtKX1lbHNle2lmKCF0fHxjKXtzLmtpbmQ9VDtqPW5ldyBVaW50OENsYW1wZWRBcnJheShhKm4qMyk7cD0wfWVsc2V7bmV3IFVpbnQzMkFycmF5KGouYnVmZmVyKS5maWxsKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzQyNzgxOTAwODA6MjU1KTtwPTF9ZD0hMX10aGlzLm5lZWRzRGVjb2RlJiZ0aGlzLmRlY29kZUJ1ZmZlcihtKTt0aGlzLmNvbG9yU3BhY2UuZmlsbFJnYihqLGksbyxhLG4sdSxsLG0scCk7ZCYmdGhpcy51bmRvUHJlYmxlbmQoaixhLHUpO2lmKHQmJiFjKXtiLnB1dEltYWdlRGF0YSh3LDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDphLGhlaWdodDpuLGJpdG1hcDpnLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9fXMuZGF0YT1qO3JldHVybiBjP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShzKTpzfWFzeW5jIGZpbGxHcmF5QnVmZmVyKGUse2Rlc3RXaWR0aDp0LGRlc3RIZWlnaHQ6YSxpbnZlcnRPdXRwdXQ6bixtYXhSb3dzOnMsb2Zmc2V0OnI9MCxzdHJpZGU6aT0xfT17fSl7Y29uc3Qgbz10aGlzLm51bUNvbXBzO2lmKDEhPT1vKXRocm93IG5ldyBGb3JtYXRFcnJvcihgUmVhZGluZyBncmF5IHNjYWxlIGZyb20gYSBjb2xvciBpbWFnZTogJHtvfWApO2NvbnN0IGw9dGhpcy53aWR0aCxmPXRoaXMuaGVpZ2h0LGM9dGhpcy5icGMsaD1sKm8qYys3Pj4zLHU9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGYqaCx7aW50ZXJuYWw6ITB9KSxtPXRoaXMuZ2V0Q29tcG9uZW50cyh1KSxwPXQ/P2wsZD1hPz9mLGc9cCE9PWx8fGQhPT1mLGI9dm9pZCAwPT09cz9kOk1hdGgubWluKGQscyk7bGV0IHc9bCxqPTAsaz1udWxsO2lmKGcpe3c9cDtqPWYvZDtjb25zdCBlPWwvcDtrPW5ldyBVaW50MzJBcnJheShwKTtmb3IobGV0IHQ9MDt0PHA7dCsrKWtbdF09TWF0aC5mbG9vcih0KmUpfWNvbnN0IHk9bj8yNTU6MDtpZigxPT09Yyl7aWYoayl7Y29uc3QgdD1rO2xldCBhPXI7aWYodGhpcy5uZWVkc0RlY29kZSlmb3IobGV0IG49MDtuPGI7bisrKXtjb25zdCBzPU1hdGguZmxvb3IobipqKSpsO2ZvcihsZXQgbj0wO248dztuKyspe2VbYV09bVtzK3Rbbl1dLTEmMjU1Xnk7YSs9aX19ZWxzZSBmb3IobGV0IG49MDtuPGI7bisrKXtjb25zdCBzPU1hdGguZmxvb3IobipqKSpsO2ZvcihsZXQgbj0wO248dztuKyspe2VbYV09MjU1Ji1tW3MrdFtuXV1eeTthKz1pfX19ZWxzZXtjb25zdCB0PXcqYjtpZih0aGlzLm5lZWRzRGVjb2RlKWZvcihsZXQgYT0wO2E8dDsrK2EpZVthKmkrcl09bVthXS0xJjI1NV55O2Vsc2UgZm9yKGxldCBhPTA7YTx0OysrYSllW2EqaStyXT0yNTUmLW1bYV1eeX1yZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIobSk7Y29uc3QgcT0yNTUvKCgxPDxjKS0xKTtpZihrKXtjb25zdCB0PWs7bGV0IGE9cjtmb3IobGV0IG49MDtuPGI7bisrKXtjb25zdCBzPU1hdGguZmxvb3IobipqKSpsO2ZvcihsZXQgbj0wO248dztuKyspe2VbYV09cSptW3MrdFtuXV1eeTthKz1pfX19ZWxzZXtjb25zdCB0PXcqYjtmb3IobGV0IGE9MDthPHQ7KythKWVbYSppK3JdPXEqbVthXV55fX1jcmVhdGVCaXRtYXAoZSx0LGEsbil7Y29uc3Qgcz1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsYSkscj1zLmdldENvbnRleHQoIjJkIik7bGV0IGk7aWYoZT09PU8paT1uZXcgSW1hZ2VEYXRhKG4sdCxhKTtlbHNle2k9ci5jcmVhdGVJbWFnZURhdGEodCxhKTtjb252ZXJ0VG9SR0JBKHtraW5kOmUsc3JjOm4sZGVzdDpuZXcgVWludDMyQXJyYXkoaS5kYXRhLmJ1ZmZlciksd2lkdGg6dCxoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOnRoaXMubmVlZHNEZWNvZGV9KX1yLnB1dEltYWdlRGF0YShpLDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDp0LGhlaWdodDphLGJpdG1hcDpzLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9fWFzeW5jI01lKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLmltYWdlLmdldFRyYW5zZmVyYWJsZUltYWdlKCk7cmV0dXJuIGE/e2RhdGE6bnVsbCx3aWR0aDplLGhlaWdodDp0LGJpdG1hcDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9Om51bGx9YXN5bmMgZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6dCxkcmF3SGVpZ2h0OmEsZm9yY2VSR0JBOm49ITEsZm9yY2VSR0I6cz0hMSxpbnRlcm5hbDpyPSExfSl7dGhpcy5pbWFnZS5yZXNldCgpO3RoaXMuaW1hZ2UuZHJhd1dpZHRoPXR8fHRoaXMud2lkdGg7dGhpcy5pbWFnZS5kcmF3SGVpZ2h0PWF8fHRoaXMuaGVpZ2h0O3RoaXMuaW1hZ2UuZm9yY2VSR0JBPSEhbjt0aGlzLmltYWdlLmZvcmNlUkdCPSEhcztjb25zdCBpPWF3YWl0IHRoaXMuaW1hZ2UuZ2V0SW1hZ2VEYXRhKGUsdGhpcy5qcHhEZWNvZGVyT3B0aW9ucyk7aWYocnx8dGhpcy5pbWFnZSBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSlyZXR1cm4gaTthc3NlcnQoaSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksJ1BERkltYWdlLmdldEltYWdlQnl0ZXM6IFVuc3VwcG9ydGVkICJpbWFnZUJ5dGVzIiB0eXBlLicpO3JldHVybiBuZXcgVWludDhBcnJheShpKX19Y29uc3QgSWk9T2JqZWN0LmZyZWV6ZSh7bWF4SW1hZ2VTaXplOi0xLGRpc2FibGVGb250RmFjZTohMSxpZ25vcmVFcnJvcnM6ITEsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6ITEsaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ6ITEsY2FudmFzTWF4QXJlYUluQnl0ZXM6LTEsZm9udEV4dHJhUHJvcGVydGllczohMSx1c2VTeXN0ZW1Gb250czohMCx1c2VXYXNtOiEwLHVzZVdvcmtlckZldGNoOiEwLGNNYXBVcmw6bnVsbCxjTWFwUGFja2VkOiEwLGljY1VybDpudWxsLHN0YW5kYXJkRm9udERhdGFVcmw6bnVsbCx3YXNtVXJsOm51bGwsaGFzR1BVOiExfSksRmk9MSxUaT0yLE9pPVByb21pc2UucmVzb2x2ZSgpO2Z1bmN0aW9uIG5vcm1hbGl6ZUJsZW5kTW9kZShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9bm9ybWFsaXplQmxlbmRNb2RlKHQsITApO2lmKGUpcmV0dXJuIGV9d2FybihgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZSBBcnJheTogJHtlfWApO3JldHVybiJzb3VyY2Utb3ZlciJ9aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpcmV0dXJuIHQ/bnVsbDoic291cmNlLW92ZXIiO3N3aXRjaChlLm5hbWUpe2Nhc2UiTm9ybWFsIjpjYXNlIkNvbXBhdGlibGUiOnJldHVybiJzb3VyY2Utb3ZlciI7Y2FzZSJNdWx0aXBseSI6cmV0dXJuIm11bHRpcGx5IjtjYXNlIlNjcmVlbiI6cmV0dXJuInNjcmVlbiI7Y2FzZSJPdmVybGF5IjpyZXR1cm4ib3ZlcmxheSI7Y2FzZSJEYXJrZW4iOnJldHVybiJkYXJrZW4iO2Nhc2UiTGlnaHRlbiI6cmV0dXJuImxpZ2h0ZW4iO2Nhc2UiQ29sb3JEb2RnZSI6cmV0dXJuImNvbG9yLWRvZGdlIjtjYXNlIkNvbG9yQnVybiI6cmV0dXJuImNvbG9yLWJ1cm4iO2Nhc2UiSGFyZExpZ2h0IjpyZXR1cm4iaGFyZC1saWdodCI7Y2FzZSJTb2Z0TGlnaHQiOnJldHVybiJzb2Z0LWxpZ2h0IjtjYXNlIkRpZmZlcmVuY2UiOnJldHVybiJkaWZmZXJlbmNlIjtjYXNlIkV4Y2x1c2lvbiI6cmV0dXJuImV4Y2x1c2lvbiI7Y2FzZSJIdWUiOnJldHVybiJodWUiO2Nhc2UiU2F0dXJhdGlvbiI6cmV0dXJuInNhdHVyYXRpb24iO2Nhc2UiQ29sb3IiOnJldHVybiJjb2xvciI7Y2FzZSJMdW1pbm9zaXR5IjpyZXR1cm4ibHVtaW5vc2l0eSJ9aWYodClyZXR1cm4gbnVsbDt3YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlOiAke2UubmFtZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWZ1bmN0aW9uIGFkZENhY2hlZEltYWdlT3BzKGUse29iaklkOnQsZm46YSxhcmdzOm4sb3B0aW9uYWxDb250ZW50OnMsaGFzTWFzazpyfSl7dCYmZS5hZGREZXBlbmRlbmN5KHQpO2UuYWRkSW1hZ2VPcHMoYSxuLHMscik7YT09PU10JiZuWzBdPy5jb3VudD4wJiZuWzBdLmNvdW50Kyt9Y2xhc3MgVGltZVNsb3RNYW5hZ2Vye3N0YXRpYyBUSU1FX1NMT1RfRFVSQVRJT05fTVM9MjA7c3RhdGljIENIRUNLX1RJTUVfRVZFUlk9MTAwO2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7aWYoKyt0aGlzLmNoZWNrZWQ8VGltZVNsb3RNYW5hZ2VyLkNIRUNLX1RJTUVfRVZFUlkpcmV0dXJuITE7dGhpcy5jaGVja2VkPTA7cmV0dXJuIHRoaXMuZW5kVGltZTw9RGF0ZS5ub3coKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK1RpbWVTbG90TWFuYWdlci5USU1FX1NMT1RfRFVSQVRJT05fTVM7dGhpcy5jaGVja2VkPTB9fWNsYXNzIFBhcnRpYWxFdmFsdWF0b3J7Y29uc3RydWN0b3Ioe3hyZWY6ZSxoYW5kbGVyOnQscGFnZUluZGV4OmEsaWRGYWN0b3J5Om4sZm9udENhY2hlOnMsYnVpbHRJbkNNYXBDYWNoZTpyLHN0YW5kYXJkRm9udERhdGFDYWNoZTppLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpvLGdsb2JhbEltYWdlQ2FjaGU6bCxzeXN0ZW1Gb250Q2FjaGU6ZixvcHRpb25zOmM9bnVsbH0pe3RoaXMueHJlZj1lO3RoaXMuaGFuZGxlcj10O3RoaXMucGFnZUluZGV4PWE7dGhpcy5pZEZhY3Rvcnk9bjt0aGlzLmZvbnRDYWNoZT1zO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1yO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPWk7dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGU9bzt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bDt0aGlzLnN5c3RlbUZvbnRDYWNoZT1mO3RoaXMub3B0aW9ucz1jfHxJaTt0aGlzLnR5cGUzRm9udFJlZnM9bnVsbDt0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGU9bmV3IFJlZ2lvbmFsSW1hZ2VDYWNoZTt0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQ9dGhpcy5mZXRjaEJ1aWx0SW5DTWFwLmJpbmQodGhpcyl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmfSkpfWdldCBwYXJzaW5nVHlwZTNGb250KCl7cmV0dXJuISF0aGlzLnR5cGUzRm9udFJlZnN9Y2xvbmUoZT1udWxsKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnMsZSk7cmV0dXJuIHR9aGFzQmxlbmRNb2RlcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGE9bmV3IFJlZlNldCh0KTtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtjb25zdCBuPVtlXSxzPXRoaXMueHJlZjtmb3IoO24ubGVuZ3RoOyl7Y29uc3QgZT1uLnNoaWZ0KCksdD1lLmdldCgiRXh0R1N0YXRlIik7aWYodCBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHQuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtjb25zdCB0PWUuZ2V0KCJCTSIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtpZigiTm9ybWFsIiE9PXQubmFtZSlyZXR1cm4hMH1lbHNlIGlmKHZvaWQgMCE9PXQmJkFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgcj1lLmdldCgiWE9iamVjdCIpO2lmKHIgaW5zdGFuY2VvZiBEaWN0KWZvcihsZXQgZSBvZiByLmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhlKSljb250aW51ZTt0cnl7ZT1zLmZldGNoKGUpfWNhdGNoKHQpe2EucHV0KGUpO2luZm8oYGhhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmYS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYoIXQub2JqSWR8fCFhLmhhcyh0Lm9iaklkKSkpe24ucHVzaCh0KTt0Lm9iaklkJiZhLnB1dCh0Lm9iaklkKX19fWZvcihjb25zdCBlIG9mIGEpdC5wdXQoZSk7cmV0dXJuITF9YXN5bmMgZmV0Y2hCdWlsdEluQ01hcChlKXtjb25zdCB0PXRoaXMuYnVpbHRJbkNNYXBDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgYTthPXRoaXMub3B0aW9ucy51c2VXb3JrZXJGZXRjaD97Y01hcERhdGE6YXdhaXQgZmV0Y2hCaW5hcnlEYXRhKGAke3RoaXMub3B0aW9ucy5jTWFwVXJsfSR7ZX0uYmNtYXBgKSxpc0NvbXByZXNzZWQ6ITB9OntjTWFwRGF0YTphd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaEJpbmFyeURhdGEiLHtraW5kOiJjTWFwVXJsIixmaWxlbmFtZTpgJHtlfSR7dGhpcy5vcHRpb25zLmNNYXBQYWNrZWQ/Ii5iY21hcCI6IiJ9YH0pLGlzQ29tcHJlc3NlZDp0aGlzLm9wdGlvbnMuY01hcFBhY2tlZH07dGhpcy5idWlsdEluQ01hcENhY2hlLnNldChlLGEpO3JldHVybiBhfWFzeW5jIGZldGNoU3RhbmRhcmRGb250RGF0YShlKXtjb25zdCB0PXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmdldChlKTtpZih0KXJldHVybiBuZXcgU3RyZWFtKHQpO2lmKHRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmIlN5bWJvbCIhPT1lJiYiWmFwZkRpbmdiYXRzIiE9PWUpcmV0dXJuIG51bGw7Y29uc3QgYT1ObigpW2VdO2xldCBuO3RyeXtuPXRoaXMub3B0aW9ucy51c2VXb3JrZXJGZXRjaD9hd2FpdCBmZXRjaEJpbmFyeURhdGEoYCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHthfWApOmF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQmluYXJ5RGF0YSIse2tpbmQ6InN0YW5kYXJkRm9udERhdGFVcmwiLGZpbGVuYW1lOmF9KX1jYXRjaChlKXt3YXJuKGUpO3JldHVybiBudWxsfXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLnNldChlLG4pO3JldHVybiBuZXcgU3RyZWFtKG4pfWFzeW5jIGJ1aWxkRm9ybVhPYmplY3QoZSx0LGEsbixzLHIsaSxvKXtjb25zdHtkaWN0Omx9PXQsZj1sb29rdXBNYXRyaXgobC5nZXRBcnJheSgiTWF0cml4IiksbnVsbCksYz1sb29rdXBOb3JtYWxSZWN0KGwuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgaCx1LG09YyYmbmV3IEZsb2F0MzJBcnJheShjKTttPy5zb21lKGU9PiFpc0Zpbml0ZShlKSkmJihtPW51bGwpO2wuaGFzKCJPQyIpJiYoaD1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGwuZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT1oJiZuLmFkZE9wKHh0LFsiT0MiLGhdKTtjb25zdCBwPWwuZ2V0KCJHcm91cCIpO2xldCBkO2NvbnN0IGc9W2YmJm5ldyBGbG9hdDMyQXJyYXkoZiksIXAmJm18fG51bGxdLGI9bC5nZXQoIlJlc291cmNlcyIpO2lmKHApe3U9e21hdHJpeDpmLGJib3g6bSxzbWFzazphLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExLG5lZWRzSXNvbGF0aW9uOiExfTtsZXQgdD1udWxsO2lmKGlzTmFtZShwLmdldCgiUyIpLCJUcmFuc3BhcmVuY3kiKSl7dS5pc29sYXRlZD1wLmdldCgiSSIpfHwhMTt1Lmtub2Nrb3V0PXAuZ2V0KCJLIil8fCExO2lmKHAuaGFzKCJDUyIpKXtjb25zdCBhPXRoaXMuX2dldENvbG9yU3BhY2UocC5nZXRSYXcoIkNTIiksZSxpKTt0PWEgaW5zdGFuY2VvZiBDb2xvclNwYWNlP2E6YXdhaXQgdGhpcy5faGFuZGxlQ29sb3JTcGFjZShhKX19aWYoYT8uYmFja2Ryb3Ape3R8fD1Db2xvclNwYWNlVXRpbHMucmdiO2EuYmFja2Ryb3A9dC5nZXRSZ2JIZXgoYS5iYWNrZHJvcCwwKX1kPW5ldyBDaGVja2VkT3BlcmF0b3JMaXN0fWVsc2V7ZD1uO24uYWRkT3AoVHQsZyl9YXdhaXQgdGhpcy5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp0LHRhc2s6cyxyZXNvdXJjZXM6YiBpbnN0YW5jZW9mIERpY3Q/YjplLG9wZXJhdG9yTGlzdDpkLGluaXRpYWxTdGF0ZTpyLHByZXZSZWZzOm99KTtpZihwKXt1Lm5lZWRzSXNvbGF0aW9uPWQubmVlZHNJc29sYXRpb258fCEhYTtuLmFkZE9wKFJ0LFt1XSk7bi5hZGRPcChUdCxnKTtuLmFkZE9wTGlzdChkKTtuLmFkZE9wKE90LFtdKTtuLmFkZE9wKEh0LFt1XSl9ZWxzZSBuLmFkZE9wKE90LFtdKTt2b2lkIDAhPT1oJiZuLmFkZE9wKEN0LFtdKX1fc2VuZEltZ0RhdGEoZSx0LGE9ITEpe2NvbnN0IG49dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8YT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLG4pOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0sbil9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTphPSExLG9wZXJhdG9yTGlzdDpuLGNhY2hlS2V5OnMsbG9jYWxJbWFnZUNhY2hlOnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pe2NvbnN0e21heEltYWdlU2l6ZTpvLGlnbm9yZUVycm9yczpsLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmZ9PXRoaXMub3B0aW9ucyx7ZGljdDpjfT10LGg9Yy5vYmpJZCx1PWMuZ2V0KCJXIiwiV2lkdGgiKSxtPWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIXV8fCJudW1iZXIiIT10eXBlb2YgdXx8IW18fCJudW1iZXIiIT10eXBlb2YgbSl7d2FybigiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWlmKC0xIT09byYmdSptPm8pe2NvbnN0IGU9IkltYWdlIGV4Y2VlZGVkIG1heGltdW0gYWxsb3dlZCBzaXplIGFuZCB3YXMgcmVtb3ZlZC4iO2lmKCFsKXRocm93IG5ldyBFcnJvcihlKTt3YXJuKGUpO3JldHVybn1sZXQgcDtjLmhhcygiT0MiKSYmKHA9YXdhaXQgdGhpcy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhjLmdldCgiT0MiKSxlKSk7bGV0IGQsZyxiO2lmKGMuZ2V0KCJJTSIsIkltYWdlTWFzayIpfHwhMSl7ZD1hd2FpdCBQREZJbWFnZS5jcmVhdGVNYXNrKHtpbWFnZTp0LGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmYmJiF0aGlzLnBhcnNpbmdUeXBlM0ZvbnR9KTtpZihkLmlzU2luZ2xlT3BhcXVlUGl4ZWwpe2c9VXQ7Yj1bXTtuLmFkZEltYWdlT3BzKGcsYixwKTtpZihzKXtjb25zdCBlPXtmbjpnLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6cH07ci5zZXQocyxoLGUpO2gmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxoLGUpfXJldHVybn1pZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe2I9ZnVuY3Rpb24gY29tcGlsZVR5cGUzR2x5cGgoe2RhdGE6ZSx3aWR0aDp0LGhlaWdodDphfSl7aWYodD4xZTN8fGE+MWUzKXJldHVybiBudWxsO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoWzAsMiw0LDAsMSwwLDUsNCw4LDEwLDAsOCwwLDIsMSwwXSkscz10KzEscj1uZXcgVWludDhBcnJheShzKihhKzEpKTtsZXQgaSxvLGw7Y29uc3QgZj10KzcmLTgsYz1uZXcgVWludDhBcnJheShmKmEpO2xldCBoPTA7Zm9yKGNvbnN0IHQgb2YgZSl7bGV0IGU9MTI4O2Zvcig7ZT4wOyl7Y1toKytdPXQmZT8wOjI1NTtlPj49MX19bGV0IHU9MDtoPTA7aWYoMCE9PWNbaF0pe3JbMF09MTsrK3V9Zm9yKG89MTtvPHQ7bysrKXtpZihjW2hdIT09Y1toKzFdKXtyW29dPWNbaF0/MjoxOysrdX1oKyt9aWYoMCE9PWNbaF0pe3Jbb109MjsrK3V9Zm9yKGk9MTtpPGE7aSsrKXtoPWkqZjtsPWkqcztpZihjW2gtZl0hPT1jW2hdKXtyW2xdPWNbaF0/MTo4OysrdX1sZXQgZT0oY1toXT80OjApKyhjW2gtZl0/ODowKTtmb3Iobz0xO288dDtvKyspe2U9KGU+PjIpKyhjW2grMV0/NDowKSsoY1toLWYrMV0/ODowKTtpZihuW2VdKXtyW2wrb109bltlXTsrK3V9aCsrfWlmKGNbaC1mXSE9PWNbaF0pe3JbbCtvXT1jW2hdPzI6NDsrK3V9aWYodT4xZTMpcmV0dXJuIG51bGx9aD1mKihhLTEpO2w9aSpzO2lmKDAhPT1jW2hdKXtyW2xdPTg7Kyt1fWZvcihvPTE7bzx0O28rKyl7aWYoY1toXSE9PWNbaCsxXSl7cltsK29dPWNbaF0/NDo4OysrdX1oKyt9aWYoMCE9PWNbaF0pe3JbbCtvXT00OysrdX1pZih1PjFlMylyZXR1cm4gbnVsbDtjb25zdCBtPW5ldyBJbnQzMkFycmF5KFswLHMsLTEsMCwtcywwLDAsMCwxXSkscD1bXSx7YTpkLGI6ZyxjOmIsZDp3LGU6aixmOmt9PShuZXcgRE9NTWF0cml4KS5zY2FsZVNlbGYoMS90LC0xL2EpLnRyYW5zbGF0ZVNlbGYoMCwtYSk7Zm9yKGk9MDt1JiZpPD1hO2krKyl7bGV0IGU9aSpzO2NvbnN0IGE9ZSt0O2Zvcig7ZTxhJiYhcltlXTspZSsrO2lmKGU9PT1hKWNvbnRpbnVlO2xldCBuPWUlcyxvPWk7cC5wdXNoKFZ0LGQqbitiKm8raixnKm4rdypvK2spO2NvbnN0IGw9ZTtsZXQgZj1yW2VdO2Rve2NvbnN0IHQ9bVtmXTtkb3tlKz10fXdoaWxlKCFyW2VdKTtjb25zdCBhPXJbZV07aWYoNSE9PWEmJjEwIT09YSl7Zj1hO3JbZV09MH1lbHNle2Y9YSY1MSpmPj40O3JbZV0mPWY+PjJ8Zjw8Mn1uPWUlcztvPWUvc3wwO3AucHVzaCgkdCxkKm4rYipvK2osZypuK3cqbytrKTtyW2VdfHwtLXV9d2hpbGUobCE9PWUpOy0taX1yZXR1cm5bR3QsW25ldyBGbG9hdDMyQXJyYXkocCldLG5ldyBGbG9hdDMyQXJyYXkoWzAsMCx0LGFdKV19KGQpO2lmKGIpe24uYWRkSW1hZ2VPcHMoWHQsYixwKTtyZXR1cm59d2FybigiQ2Fubm90IGNvbXBpbGUgVHlwZTMgZ2x5cGguIik7bi5hZGRJbWFnZU9wcyhNdCxbZF0scCk7cmV0dXJufWNvbnN0IGU9YG1hc2tfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7bi5hZGREZXBlbmRlbmN5KGUpO2QuZGF0YUxlbj1kLmJpdG1hcD9kLndpZHRoKmQuaGVpZ2h0KjQ6ZC5kYXRhLmxlbmd0aDt0aGlzLl9zZW5kSW1nRGF0YShlLGQpO2c9TXQ7Yj1be2RhdGE6ZSx3aWR0aDpkLndpZHRoLGhlaWdodDpkLmhlaWdodCxpbnRlcnBvbGF0ZTpkLmludGVycG9sYXRlLGNvdW50OjF9XTtuLmFkZEltYWdlT3BzKGcsYixwKTtpZihzKXtjb25zdCB0PXtvYmpJZDplLGZuOmcsYXJnczpiLG9wdGlvbmFsQ29udGVudDpwfTtyLnNldChzLGgsdCk7aCYmdGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLGgsdCl9cmV0dXJufWNvbnN0IHc9Yy5oYXMoIlNNYXNrIil8fGMuaGFzKCJNYXNrIik7aWYoYSYmdSttPDIwMCYmIXcpe3RyeXtjb25zdCBzPW5ldyBQREZJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KTtkPWF3YWl0IHMuY3JlYXRlSW1hZ2VEYXRhKCEwLCExKTtuLmFkZEltYWdlT3BzKEV0LFtkXSxwKX1jYXRjaChlKXtjb25zdCB0PWBVbmFibGUgdG8gZGVjb2RlIGlubGluZSBpbWFnZTogIiR7ZX0iLmA7aWYoIWwpdGhyb3cgbmV3IEVycm9yKHQpO3dhcm4odCl9cmV0dXJufWxldCBqPWBpbWdfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWAsaz0hMSx5PW51bGw7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KWo9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtqfWA7ZWxzZSBpZihzJiZoKXtrPXRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zaG91bGRDYWNoZShoLHRoaXMucGFnZUluZGV4KTtpZihrKXthc3NlcnQoIWEsIkNhbm5vdCBjYWNoZSBhbiBpbmxpbmUgaW1hZ2UgZ2xvYmFsbHkuIik7aj1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke2p9YH19bi5hZGREZXBlbmRlbmN5KGopO2c9UHQ7Yj1baix1LG1dO24uYWRkSW1hZ2VPcHMoZyxiLHAsdyk7aWYoayl7eT17b2JqSWQ6aixmbjpnLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6cCxoYXNNYXNrOncsYnl0ZVNpemU6MH07aWYodGhpcy5nbG9iYWxJbWFnZUNhY2hlLmhhc0RlY29kZUZhaWxlZChoKSl7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoaCx5KTt0aGlzLl9zZW5kSW1nRGF0YShqLG51bGwsayk7cmV0dXJufWlmKHUqbT4yNWU0fHx3KXtjb25zdCBlPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoImNvbW1vbm9iaiIsW2osIkNvcHlMb2NhbEltYWdlIix7aW1hZ2VSZWY6aH1dKTtpZihlKXt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShoLHkpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5hZGRCeXRlU2l6ZShoLGUpO3JldHVybn19fVBERkltYWdlLmJ1aWxkSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczplLGltYWdlOnQsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTppfSkudGhlbihhc3luYyBlPT57ZD1hd2FpdCBlLmNyZWF0ZUltYWdlRGF0YSghMSxmKTtkLmRhdGFMZW49ZC5iaXRtYXA/ZC53aWR0aCpkLmhlaWdodCo0OmQuZGF0YS5sZW5ndGg7ZC5yZWY9aDtrJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUoaCxkLmRhdGFMZW4pO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YShqLGQsayl9KS5jYXRjaChlPT57d2FybihgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHtqfSI6ICIke2V9Ii5gKTtoJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkRGVjb2RlRmFpbGVkKGgpO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YShqLG51bGwsayl9KTtpZihzKXtjb25zdCBlPXtvYmpJZDpqLGZuOmcsYXJnczpiLG9wdGlvbmFsQ29udGVudDpwLGhhc01hc2s6d307ci5zZXQocyxoLGUpO2lmKGgpe3RoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxoLGUpO2lmKGspe2Fzc2VydCh5LCJUaGUgZ2xvYmFsIGNhY2hlLWRhdGEgbXVzdCBiZSBhdmFpbGFibGUuIik7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoaCx5KX19fX1oYW5kbGVTTWFzayhlLHQsYSxuLHMscixpKXtjb25zdCBvPWUuZ2V0KCJHIiksbD17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGY9ZS5nZXQoIlRSIik7aWYoaXNQREZGdW5jdGlvbihmKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGYpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBuPTA7bjwyNTY7bisrKXthWzBdPW4vMjU1O2UoYSwwLGEsMCk7dFtuXT0yNTUqYVswXXwwfWwudHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQsbyxsLGEsbixzLnN0YXRlLmNsb25lKHtuZXdQYXRoOiEwfSkscixpKX1oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGUpe2xldCB0O2lmKEFycmF5LmlzQXJyYXkoZSkpe3Q9ZTtlLmxlbmd0aD4xJiZlLmV2ZXJ5KHQ9PnQ9PT1lWzBdKSYmKHQ9W2VbMF1dKX1lbHNle2lmKCFpc1BERkZ1bmN0aW9uKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGE9W107bGV0IG49MCxzPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTtuKys7aWYoaXNOYW1lKHQsIklkZW50aXR5Iikpe2EucHVzaChudWxsKTtjb250aW51ZX1pZighaXNQREZGdW5jdGlvbih0KSlyZXR1cm4gbnVsbDtjb25zdCByPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksaT1uZXcgVWludDhBcnJheSgyNTYpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe29bMF09ZS8yNTU7cihvLDAsbywwKTtpW2VdPTI1NSpvWzBdfDB9YS5wdXNoKGkpO3MrK31yZXR1cm4gMSE9PW4mJjQhPT1ufHwwPT09cz9udWxsOmF9aGFuZGxlVGlsaW5nVHlwZShlLHQsYSxuLHMscixpLG8pe2NvbnN0IGw9bmV3IENoZWNrZWRPcGVyYXRvckxpc3QsZj1EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3MuZ2V0KCJSZXNvdXJjZXMiKSxhXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOm4sdGFzazppLHJlc291cmNlczpmLG9wZXJhdG9yTGlzdDpsfSkudGhlbihmdW5jdGlvbigpe2NvbnN0IGE9bC5nZXRJUigpLHtuZWVkc0lzb2xhdGlvbjpufT1sLGk9Z2V0VGlsaW5nUGF0dGVybklSKGEscyx0LG4pO3IuYWRkRGVwZW5kZW5jaWVzKGwuZGVwZW5kZW5jaWVzKTtyLmFkZE9wKGUsaSk7cy5vYmpJZCYmby5zZXQobnVsbCxzLm9iaklkLHtvcGVyYXRvckxpc3RJUjphLG5lZWRzSXNvbGF0aW9uOm4sZGljdDpzfSl9KS5jYXRjaChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGhhbmRsZVRpbGluZ1R5cGUgLSBpZ25vcmluZyBwYXR0ZXJuOiAiJHtlfSIuYCl9fSl9YXN5bmMgaGFuZGxlU2V0Rm9udChlLHQsYSxuLHMscixpPW51bGwsbz1udWxsKXtjb25zdCBsPXQ/LlswXWluc3RhbmNlb2YgTmFtZT90WzBdLm5hbWU6bnVsbCxmPWF3YWl0IHRoaXMubG9hZEZvbnQobCxhLGUscyxpLG8pO2YuZm9udC5pc1R5cGUzRm9udCYmbi5hZGREZXBlbmRlbmNpZXMoZi50eXBlM0RlcGVuZGVuY2llcyk7ci5mb250PWYuZm9udDtmLnNlbmQodGhpcy5oYW5kbGVyKTtyZXR1cm4gZi5sb2FkZWROYW1lfWhhbmRsZVRleHQoZSx0KXtjb25zdCBhPXQuZm9udCxuPWEuY2hhcnNUb0dseXBocyhlKTtpZihhLmRhdGEpeyghISh0LnRleHRSZW5kZXJpbmdNb2RlJkMpfHwiUGF0dGVybiI9PT10LmZpbGxDb2xvclNwYWNlLm5hbWV8fCJQYXR0ZXJuIj09PXQuc3Ryb2tlQ29sb3JTcGFjZS5uYW1lfHxhLmRpc2FibGVGb250RmFjZSkmJlBhcnRpYWxFdmFsdWF0b3IuYnVpbGRGb250UGF0aHMoYSxuLHRoaXMuaGFuZGxlcix0aGlzLm9wdGlvbnMpfXJldHVybiBufWVuc3VyZVN0YXRlRm9udChlKXtpZihlLmZvbnQpcmV0dXJuO2NvbnN0IHQ9bmV3IEZvcm1hdEVycm9yKCJNaXNzaW5nIHNldEZvbnQgKFRmKSBvcGVyYXRvciBiZWZvcmUgdGV4dCByZW5kZXJpbmcgb3BlcmF0b3IuIik7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDt3YXJuKGBlbnN1cmVTdGF0ZUZvbnQ6ICIke3R9Ii5gKX1hc3luYyBzZXRHU3RhdGUoe3Jlc291cmNlczplLGdTdGF0ZTp0LG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5Om4sdGFzazpzLHN0YXRlTWFuYWdlcjpyLGxvY2FsR1N0YXRlQ2FjaGU6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpvLHNlZW5SZWZzOmx9KXtjb25zdCBmPXQub2JqSWQ7bGV0IGM9ITA7Y29uc3QgaD1bXTtsZXQgdT1Qcm9taXNlLnJlc29sdmUoKTtmb3IoY29uc3RbbixpXW9mIHQpc3dpdGNoKG4pe2Nhc2UiVHlwZSI6YnJlYWs7Y2FzZSJMVyI6aWYoIm51bWJlciIhPXR5cGVvZiBpKXt3YXJuKGBJbnZhbGlkIExXIChsaW5lIHdpZHRoKTogJHtpfWApO2JyZWFrfWgucHVzaChbbixNYXRoLmFicyhpKV0pO2JyZWFrO2Nhc2UiTEMiOmNhc2UiTEoiOmNhc2UiTUwiOmNhc2UiRCI6Y2FzZSJSSSI6Y2FzZSJGTCI6Y2FzZSJDQSI6Y2FzZSJjYSI6aC5wdXNoKFtuLGldKTticmVhaztjYXNlIkZvbnQiOmM9ITE7dT11LnRoZW4oKCk9PnRoaXMuaGFuZGxlU2V0Rm9udChlLG51bGwsaVswXSxhLHMsci5zdGF0ZSkudGhlbihmdW5jdGlvbihlKXthLmFkZERlcGVuZGVuY3koZSk7aC5wdXNoKFtuLFtlLGlbMV1dXSl9KSk7YnJlYWs7Y2FzZSJCTSI6aC5wdXNoKFtuLG5vcm1hbGl6ZUJsZW5kTW9kZShpKV0pO2JyZWFrO2Nhc2UiU01hc2siOmlmKGlzTmFtZShpLCJOb25lIikpe2gucHVzaChbbiwhMV0pO2JyZWFrfWlmKGkgaW5zdGFuY2VvZiBEaWN0KXtjPSExO3U9dS50aGVuKCgpPT50aGlzLmhhbmRsZVNNYXNrKGksZSxhLHMscixvLGwpKTtoLnB1c2goW24sITBdKX1lbHNlIHdhcm4oIlVuc3VwcG9ydGVkIFNNYXNrIHR5cGUiKTticmVhaztjYXNlIlRSIjpjb25zdCB0PXRoaXMuaGFuZGxlVHJhbnNmZXJGdW5jdGlvbihpKTtoLnB1c2goW24sdF0pO2JyZWFrO2Nhc2UiT1AiOmNhc2Uib3AiOmNhc2UiT1BNIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiU00iOmNhc2UiU0EiOmNhc2UiQUlTIjpjYXNlIlRLIjppbmZvKCJncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrbik7YnJlYWs7ZGVmYXVsdDppbmZvKCJVbmtub3duIGdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIituKX1hd2FpdCB1O2gubGVuZ3RoPjAmJmEuYWRkT3AoamUsW2hdKTtjJiZpLnNldChuLGYsaCl9bG9hZEZvbnQoZSx0LGEsbixzPW51bGwscj1udWxsKXtjb25zdCBlcnJvckZvbnQ9YXN5bmMoKT0+bmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOiJnX2ZvbnRfZXJyb3IiLGZvbnQ6bmV3IEVycm9yRm9udChgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKSxkaWN0OnR9KTtsZXQgaTtpZih0KXQgaW5zdGFuY2VvZiBSZWYmJihpPXQpO2Vsc2V7Y29uc3QgdD1hLmdldCgiRm9udCIpO3QmJihpPXQuZ2V0UmF3KGUpKX1pZihpKXtpZih0aGlzLnR5cGUzRm9udFJlZnM/LmhhcyhpKSlyZXR1cm4gZXJyb3JGb250KCk7aWYodGhpcy5mb250Q2FjaGUuaGFzKGkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQoaSk7dHJ5e3Q9dGhpcy54cmVmLmZldGNoSWZSZWYoaSl9Y2F0Y2goZSl7d2FybihgbG9hZEZvbnQgLSBsb29rdXAgZmFpbGVkOiAiJHtlfSIuYCl9fWlmKCEodCBpbnN0YW5jZW9mIERpY3QpKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyYmIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7d2FybihgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtyZXR1cm4gZXJyb3JGb250KCl9d2FybihgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZSAtLSBhdHRlbXB0aW5nIHRvIGZhbGxiYWNrIHRvIGEgZGVmYXVsdCBmb250LmApO3Q9c3x8UGFydGlhbEV2YWx1YXRvci5mYWxsYmFja0ZvbnREaWN0fWlmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0e3Byb21pc2U6byxyZXNvbHZlOmx9PVByb21pc2Uud2l0aFJlc29sdmVycygpO2xldCBmO3RyeXtmPXRoaXMucHJlRXZhbHVhdGVGb250KHQpO2YuY3NzRm9udEluZm89cn1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIHByZUV2YWx1YXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtyZXR1cm4gZXJyb3JGb250KCl9Y29uc3R7ZGVzY3JpcHRvcjpjLGhhc2g6aH09Zix1PWkgaW5zdGFuY2VvZiBSZWY7bGV0IG07aWYoaCYmYyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9Yy5mb250QWxpYXNlc3x8PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZVtoXSl7Y29uc3QgdD1lW2hdLmFsaWFzUmVmO2lmKHUmJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSl7dGhpcy5mb250Q2FjaGUucHV0QWxpYXMoaSx0KTtyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KGkpfX1lbHNlIGVbaF09e2ZvbnRJRDp0aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKX07dSYmKGVbaF0uYWxpYXNSZWY9aSk7bT1lW2hdLmZvbnRJRH1lbHNlIG09dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCk7YXNzZXJ0KG0/LnN0YXJ0c1dpdGgoImYiKSwnVGhlICJmb250SUQiIG11c3QgYmUgKGNvcnJlY3RseSkgZGVmaW5lZC4nKTtpZih1KXRoaXMuZm9udENhY2hlLnB1dChpLG8pO2Vsc2V7dC5jYWNoZUtleT1gY2FjaGVLZXlfJHttfWA7dGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksbyl9dC5sb2FkZWROYW1lPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7bX1gO3RoaXMudHJhbnNsYXRlRm9udChmKS50aGVuKGFzeW5jIGU9Pntjb25zdCBzPW5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDplLGRpY3Q6dH0pO2lmKGUuaXNUeXBlM0ZvbnQpdHJ5e2F3YWl0IHMubG9hZFR5cGUzRGF0YSh0aGlzLGEsbil9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKGBUeXBlMyBmb250IGxvYWQgZXJyb3I6ICR7ZX1gKX1sKHMpfSkuY2F0Y2goZT0+e3dhcm4oYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtsKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgRXJyb3JGb250KGU/Lm1lc3NhZ2UpLGRpY3Q6dH0pKX0pO3JldHVybiBvfWJ1aWxkUGF0aChlLHQsYSl7Y29uc3R7cGF0aE1pbk1heDpuLHBhdGhCdWZmZXI6c309YTtzd2l0Y2goMHxlKXtjYXNlIEZlOntjb25zdCBlPWEuY3VycmVudFBvaW50WD10WzBdLHI9YS5jdXJyZW50UG9pbnRZPXRbMV0saT10WzJdLG89dFszXSxsPWUraSxmPXIrbzswPT09aXx8MD09PW8/cy5wdXNoKFZ0LGUsciwkdCxsLGYsUXQpOnMucHVzaChWdCxlLHIsJHQsbCxyLCR0LGwsZiwkdCxlLGYsUXQpO1V0aWwucmVjdEJvdW5kaW5nQm94KGUscixsLGYsbik7YnJlYWt9Y2FzZSB2ZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFg9dFswXSxyPWEuY3VycmVudFBvaW50WT10WzFdO3MucHVzaChWdCxlLHIpO1V0aWwucG9pbnRCb3VuZGluZ0JveChlLHIsbik7YnJlYWt9Y2FzZSBTZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFg9dFswXSxyPWEuY3VycmVudFBvaW50WT10WzFdO3MucHVzaCgkdCxlLHIpO1V0aWwucG9pbnRCb3VuZGluZ0JveChlLHIsbik7YnJlYWt9Y2FzZSBBZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFgscj1hLmN1cnJlbnRQb2ludFksW2ksbyxsLGYsYyxoXT10O2EuY3VycmVudFBvaW50WD1jO2EuY3VycmVudFBvaW50WT1oO3MucHVzaChZdCxpLG8sbCxmLGMsaCk7VXRpbC5iZXppZXJCb3VuZGluZ0JveChlLHIsaSxvLGwsZixjLGgsbik7YnJlYWt9Y2FzZSB4ZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFgscj1hLmN1cnJlbnRQb2ludFksW2ksbyxsLGZdPXQ7YS5jdXJyZW50UG9pbnRYPWw7YS5jdXJyZW50UG9pbnRZPWY7cy5wdXNoKFl0LGUscixpLG8sbCxmKTtVdGlsLmJlemllckJvdW5kaW5nQm94KGUscixlLHIsaSxvLGwsZixuKTticmVha31jYXNlIENlOntjb25zdCBlPWEuY3VycmVudFBvaW50WCxyPWEuY3VycmVudFBvaW50WSxbaSxvLGwsZl09dDthLmN1cnJlbnRQb2ludFg9bDthLmN1cnJlbnRQb2ludFk9ZjtzLnB1c2goWXQsaSxvLGwsZixsLGYpO1V0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxyLGksbyxsLGYsbCxmLG4pO2JyZWFrfWNhc2UgSWU6cy5wdXNoKFF0KX19X2dldENvbG9yU3BhY2UoZSx0LGEpe3JldHVybiBDb2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmUseHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnQscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6YSxhc3luY0lmTm90Q2FjaGVkOiEwfSl9YXN5bmMgX2hhbmRsZUNvbG9yU3BhY2UoZSl7dHJ5e3JldHVybiBhd2FpdCBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBfaGFuZGxlQ29sb3JTcGFjZSAtIGlnbm9yaW5nIENvbG9yU3BhY2U6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfX1wYXJzZVNoYWRpbmcoe3NoYWRpbmc6ZSxyZXNvdXJjZXM6dCxsb2NhbENvbG9yU3BhY2VDYWNoZTphLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpufSl7bGV0IHMscj1uLmdldChlKTtpZihyKXJldHVybiByO3RyeXtzPVBhdHRlcm4ucGFyc2VTaGFkaW5nKGUsdGhpcy54cmVmLHQsdGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LHRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGEpLmdldElSKCl9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHBhcnNlU2hhZGluZyAtIGlnbm9yaW5nIHNoYWRpbmc6ICIke3R9Ii5gKTtuLnNldChlLG51bGwpO3JldHVybiBudWxsfXRocm93IHR9cj1gcGF0dGVybl8ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQmJihyPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9X3R5cGUzXyR7cn1gKTtuLnNldChlLHIpO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udCl7Y29uc3QgZT1mdW5jdGlvbiBjb21waWxlUGF0dGVybkluZm8oZSl7bGV0IHQsYT1udWxsLG49W10scz1bXSxyPVtdLGk9bnVsbCxvPW51bGw7c3dpdGNoKGVbMF0pe2Nhc2UiUmFkaWFsQXhpYWwiOnQ9ImF4aWFsIj09PWVbMV0/MToyO2E9ZVsyXTtyPWVbM107MT09PXQ/bi5wdXNoKC4uLmVbNF0sLi4uZVs1XSk6bi5wdXNoKGVbNF1bMF0sZVs0XVsxXSxlWzZdLGVbNV1bMF0sZVs1XVsxXSxlWzddKTticmVhaztjYXNlIk1lc2giOnQ9MztpPWVbMV07bj1lWzJdO3M9ZVszXTthPWVbNl07bz1lWzddO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBwYXR0ZXJuIHR5cGU6ICR7ZVswXX1gKX1jb25zdCBsPU1hdGguZmxvb3Iobi5sZW5ndGgvMiksZj1NYXRoLmZsb29yKHMubGVuZ3RoLzQpLGM9ci5sZW5ndGgsaD1uZXcgQXJyYXlCdWZmZXIoMjArOCpsKzQqZis4KmMrKGE/MTY6MCkrKG8/MzowKSksdT1uZXcgRGF0YVZpZXcoaCksbT1uZXcgVWludDhBcnJheShoKTt1LnNldFVpbnQ4KFBBVFRFUk5fSU5GTy5LSU5ELHQpO3Uuc2V0VWludDgoUEFUVEVSTl9JTkZPLkhBU19CQk9YLGE/MTowKTt1LnNldFVpbnQ4KFBBVFRFUk5fSU5GTy5IQVNfQkFDS0dST1VORCxvPzE6MCk7dS5zZXRVaW50OChQQVRURVJOX0lORk8uU0hBRElOR19UWVBFLGkpO3Uuc2V0VWludDMyKFBBVFRFUk5fSU5GTy5OX0NPT1JELGwsITApO3Uuc2V0VWludDMyKFBBVFRFUk5fSU5GTy5OX0NPTE9SLGYsITApO3Uuc2V0VWludDMyKFBBVFRFUk5fSU5GTy5OX1NUT1AsYywhMCk7dS5zZXRVaW50MzIoUEFUVEVSTl9JTkZPLk5fRklHVVJFUywwLCEwKTtsZXQgcD0yMDtuZXcgRmxvYXQzMkFycmF5KGgscCwyKmwpLnNldChuKTtwKz04Kmw7bS5zZXQocyxwKTtwKz00KmY7Zm9yKGNvbnN0W2UsdF1vZiByKXt1LnNldEZsb2F0MzIocCxlLCEwKTtwKz00O3Uuc2V0VWludDMyKHAscGFyc2VJbnQodC5zbGljZSgxKSwxNiksITApO3ArPTR9aWYoYSlmb3IoY29uc3QgZSBvZiBhKXt1LnNldEZsb2F0MzIocCxlLCEwKTtwKz00fW8mJm0uc2V0KG8scCk7cmV0dXJuIGh9KHMpO3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtyLCJQYXR0ZXJuIixlXSxbZV0pfWVsc2UgdGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW3IsdGhpcy5wYWdlSW5kZXgsIlBhdHRlcm4iLHNdKTtyZXR1cm4gcn1oYW5kbGVDb2xvck4oZSx0LGEsbixzLHIsaSxvLGwsZil7Y29uc3QgYz1hLnBvcCgpO2lmKGMgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBoPXMuZ2V0UmF3KGMubmFtZSksdT1oIGluc3RhbmNlb2YgUmVmJiZsLmdldEJ5UmVmKGgpO2lmKHUpdHJ5e2NvbnN0IHM9bi5iYXNlP24uYmFzZS5nZXRSZ2JIZXgoYSwwKTpudWxsLHI9Z2V0VGlsaW5nUGF0dGVybklSKHUub3BlcmF0b3JMaXN0SVIsdS5kaWN0LHMsdS5uZWVkc0lzb2xhdGlvbik7ZS5hZGRPcCh0LHIpO3JldHVybn1jYXRjaHt9Y29uc3QgbT10aGlzLnhyZWYuZmV0Y2hJZlJlZihoKTtpZihtKXtjb25zdCBzPW0gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP20uZGljdDptLGM9cy5nZXQoIlBhdHRlcm5UeXBlIik7aWYoYz09PUZpKXtjb25zdCBvPW4uYmFzZT9uLmJhc2UuZ2V0UmdiSGV4KGEsMCk6bnVsbDtyZXR1cm4gdGhpcy5oYW5kbGVUaWxpbmdUeXBlKHQsbyxyLG0scyxlLGksbCl9aWYoYz09PVRpKXtjb25zdCBhPXMuZ2V0KCJTaGFkaW5nIiksbj10aGlzLnBhcnNlU2hhZGluZyh7c2hhZGluZzphLHJlc291cmNlczpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm8sbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmZ9KTtpZihuKXtjb25zdCBhPWxvb2t1cE1hdHJpeChzLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTtlLmFkZE9wKHQsWyJTaGFkaW5nIixuLGFdKX1yZXR1cm59dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIFBhdHRlcm5UeXBlOiAke2N9YCl9fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtjfWApfV9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxhKXtpZigrK3Q+MTApe3dhcm4oIlZpc2liaWxpdHkgZXhwcmVzc2lvbiBpcyB0b28gZGVlcGx5IG5lc3RlZCIpO3JldHVybn1jb25zdCBuPWUubGVuZ3RoLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoZVswXSk7aWYoIShuPDIpJiZzIGluc3RhbmNlb2YgTmFtZSl7c3dpdGNoKHMubmFtZSl7Y2FzZSJBbmQiOmNhc2UiT3IiOmNhc2UiTm90IjphLnB1c2gocy5uYW1lKTticmVhaztkZWZhdWx0Ondhcm4oYEludmFsaWQgb3BlcmF0b3IgJHtzLm5hbWV9IGluIHZpc2liaWxpdHkgZXhwcmVzc2lvbmApO3JldHVybn1mb3IobGV0IHM9MTtzPG47cysrKXtjb25zdCBuPWVbc10scj10aGlzLnhyZWYuZmV0Y2hJZlJlZihuKTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPVtdO2EucHVzaChlKTt0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKHIsdCxlKX1lbHNlIG4gaW5zdGFuY2VvZiBSZWYmJmEucHVzaChuLnRvU3RyaW5nKCkpfX1lbHNlIHdhcm4oIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9YXN5bmMgcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0KXtsZXQgYTtpZihlIGluc3RhbmNlb2YgTmFtZSl7YT10LmdldCgiUHJvcGVydGllcyIpLmdldChlLm5hbWUpfWVsc2V7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2E9ZX1jb25zdCBuPWEuZ2V0KCJUeXBlIik/Lm5hbWU7aWYoIk9DRyI9PT1uKXJldHVybnt0eXBlOm4saWQ6YS5vYmpJZH07aWYoIk9DTUQiPT09bil7Y29uc3QgZT1hLmdldCgiVkUiKTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PVtdO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSwwLHQpO2lmKHQubGVuZ3RoPjApcmV0dXJue3R5cGU6Ik9DTUQiLGV4cHJlc3Npb246dH19Y29uc3QgdD1hLmdldCgiT0NHcyIpO2lmKEFycmF5LmlzQXJyYXkodCl8fHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPVtdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGEgb2YgdCllLnB1c2goYS50b1N0cmluZygpKTtlbHNlIGUucHVzaCh0Lm9iaklkKTtyZXR1cm57dHlwZTpuLGlkczplLHBvbGljeTphLmdldCgiUCIpaW5zdGFuY2VvZiBOYW1lP2EuZ2V0KCJQIikubmFtZTpudWxsLGV4cHJlc3Npb246bnVsbH19aWYodCBpbnN0YW5jZW9mIFJlZilyZXR1cm57dHlwZTpuLGlkOnQudG9TdHJpbmcoKX19cmV0dXJuIG51bGx9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06ZSx0YXNrOmEscmVzb3VyY2VzOm4sb3BlcmF0b3JMaXN0OnMsaW5pdGlhbFN0YXRlOnI9bnVsbCxmYWxsYmFja0ZvbnREaWN0Omk9bnVsbCxwcmV2UmVmczpvPW51bGx9KXtpZihlLmlzQXN5bmMpe2NvbnN0IHQ9YXdhaXQgZS5hc3luY0dldEJ5dGVzKCk7dCYmKGU9bmV3IFN0cmVhbSh0LDAsdC5sZW5ndGgsZS5kaWN0KSl9Y29uc3QgbD1lLmRpY3Q/Lm9iaklkLGY9bmV3IFJlZlNldChvKTtpZihsKXtpZihvPy5oYXMobCkpdGhyb3cgbmV3IEVycm9yKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBjaXJjdWxhciByZWZlcmVuY2U6ICR7bH1gKTtmLnB1dChsKX1ufHw9RGljdC5lbXB0eTtyfHw9bmV3IEV2YWxTdGF0ZTtpZighcyl0aHJvdyBuZXcgRXJyb3IoJ2dldE9wZXJhdG9yTGlzdDogbWlzc2luZyAib3BlcmF0b3JMaXN0IiBwYXJhbWV0ZXInKTtjb25zdCBjPXRoaXMsaD10aGlzLnhyZWYsdT1uZXcgTG9jYWxJbWFnZUNhY2hlLG09bmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlLHA9bmV3IExvY2FsR1N0YXRlQ2FjaGUsZD1uZXcgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUsZz1uZXcgTWFwLGI9bi5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eSx3PW4uZ2V0KCJQYXR0ZXJuIil8fERpY3QuZW1wdHksaj1uZXcgU3RhdGVNYW5hZ2VyKHIpLGs9bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLGgsaikseT1uZXcgVGltZVNsb3RNYW5hZ2VyO2Z1bmN0aW9uIGNsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoZSl7Zm9yKGxldCBlPTAsdD1rLnNhdmVkU3RhdGVzRGVwdGg7ZTx0O2UrKylzLmFkZE9wKHllLFtdKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxyKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe1Byb21pc2UuYWxsKFt0LHMucmVhZHldKS50aGVuKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscil9Y2F0Y2goZSl7cihlKX19LHIpfTthLmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTt5LnJlc2V0KCk7Y29uc3Qgbz17fTtsZXQgbCxxLHYsUyx4LEM7Zm9yKDshKGw9eS5jaGVjaygpKTspe28uYXJncz1udWxsO2lmKCFrLnJlYWQobykpYnJlYWs7bGV0IGU9by5hcmdzLHI9by5mbjtzd2l0Y2goMHxyKXtjYXNlIHF0OkM9ZVswXWluc3RhbmNlb2YgTmFtZTt4PWVbMF0ubmFtZTtpZihDKXtjb25zdCB0PXUuZ2V0QnlOYW1lKHgpO2lmKHQpe2FkZENhY2hlZEltYWdlT3BzKHMsdCk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7aWYoIUMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtsZXQgcj1iLmdldFJhdyh4KTtpZihyIGluc3RhbmNlb2YgUmVmKXtjb25zdCB0PXUuZ2V0QnlSZWYocil8fGMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5nZXRCeVJlZihyKXx8Yy5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEocixjLnBhZ2VJbmRleCk7aWYodCl7YWRkQ2FjaGVkSW1hZ2VPcHMocyx0KTtlKCk7cmV0dXJufXI9aC5mZXRjaChyKX1pZighKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3QgaT1yLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09aS5uYW1lKWlmKCJJbWFnZSIhPT1pLm5hbWUpe2lmKCJQUyIhPT1pLm5hbWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmhhbmRsZWQgWE9iamVjdCBzdWJ0eXBlICR7aS5uYW1lfWApO2luZm8oIklnbm9yZWQgWE9iamVjdCBzdWJ0eXBlIFBTIik7ZSgpfWVsc2UgYy5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6bixpbWFnZTpyLG9wZXJhdG9yTGlzdDpzLGNhY2hlS2V5OngsbG9jYWxJbWFnZUNhY2hlOnUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bX0pLnRoZW4oZSx0KTtlbHNle2ouc2F2ZSgpO2MuYnVpbGRGb3JtWE9iamVjdChuLHIsbnVsbCxzLGEsai5zdGF0ZS5jbG9uZSh7bmV3UGF0aDohMH0pLG0sZikudGhlbihmdW5jdGlvbigpe2oucmVzdG9yZSgpO2UoKX0sdCl9fSkuY2F0Y2goZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2UgR2U6Y29uc3Qgbz1lWzFdO25leHQoYy5oYW5kbGVTZXRGb250KG4sZSxudWxsLHMsYSxqLnN0YXRlLGkpLnRoZW4oZnVuY3Rpb24oZSl7cy5hZGREZXBlbmRlbmN5KGUpO3MuYWRkT3AoR2UsW2Usb10pfSkpO3JldHVybjtjYXNlIHl0OmNvbnN0IGw9ZVswXS5jYWNoZUtleTtpZihsKXtjb25zdCB0PXUuZ2V0QnlOYW1lKGwpO2lmKHQpe2FkZENhY2hlZEltYWdlT3BzKHMsdCk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KGMuYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOm4saW1hZ2U6ZVswXSxpc0lubGluZTohMCxvcGVyYXRvckxpc3Q6cyxjYWNoZUtleTpsLGxvY2FsSW1hZ2VDYWNoZTp1LGxvY2FsQ29sb3JTcGFjZUNhY2hlOm19KSk7cmV0dXJuO2Nhc2UgZXQ6aWYoIWouc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoai5zdGF0ZSk7Y29udGludWV9ZVswXT1jLmhhbmRsZVRleHQoZVswXSxqLnN0YXRlKTticmVhaztjYXNlIHR0OmlmKCFqLnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KGouc3RhdGUpO2NvbnRpbnVlfWNvbnN0IGs9W10seT1qLnN0YXRlO2Zvcihjb25zdCB0IG9mIGVbMF0pInN0cmluZyI9PXR5cGVvZiB0P2sucHVzaCguLi5jLmhhbmRsZVRleHQodCx5KSk6Im51bWJlciI9PXR5cGVvZiB0JiZrLnB1c2godCk7ZVswXT1rO3I9ZXQ7YnJlYWs7Y2FzZSBhdDppZighai5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udChqLnN0YXRlKTtjb250aW51ZX1zLmFkZE9wKFplKTtlWzBdPWMuaGFuZGxlVGV4dChlWzBdLGouc3RhdGUpO3I9ZXQ7YnJlYWs7Y2FzZSBudDppZighai5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udChqLnN0YXRlKTtjb250aW51ZX1zLmFkZE9wKFplKTtzLmFkZE9wKFhlLFtlLnNoaWZ0KCldKTtzLmFkZE9wKFVlLFtlLnNoaWZ0KCldKTtlWzBdPWMuaGFuZGxlVGV4dChlWzBdLGouc3RhdGUpO3I9ZXQ7YnJlYWs7Y2FzZSBWZTpqLnN0YXRlLnRleHRSZW5kZXJpbmdNb2RlPWVbMF07YnJlYWs7Y2FzZSBvdDp7Y29uc3QgdD1jLl9nZXRDb2xvclNwYWNlKGVbMF0sbixtKTtpZih0IGluc3RhbmNlb2YgQ29sb3JTcGFjZSl7ai5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5faGFuZGxlQ29sb3JTcGFjZSh0KS50aGVuKGU9PntqLnN0YXRlLmZpbGxDb2xvclNwYWNlPWV8fENvbG9yU3BhY2VVdGlscy5ncmF5fSkpO3JldHVybn1jYXNlIGl0Ontjb25zdCB0PWMuX2dldENvbG9yU3BhY2UoZVswXSxuLG0pO2lmKHQgaW5zdGFuY2VvZiBDb2xvclNwYWNlKXtqLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KGMuX2hhbmRsZUNvbG9yU3BhY2UodCkudGhlbihlPT57ai5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWV8fENvbG9yU3BhY2VVdGlscy5ncmF5fSkpO3JldHVybn1jYXNlIGN0OlM9ai5zdGF0ZS5maWxsQ29sb3JTcGFjZTtlPVtTLmdldFJnYkhleChlLDApXTtyPWR0O2JyZWFrO2Nhc2UgbHQ6Uz1qLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1bUy5nZXRSZ2JIZXgoZSwwKV07cj1wdDticmVhaztjYXNlIG10Omouc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmdyYXk7ZT1bQ29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSGV4KGUsMCldO3I9ZHQ7YnJlYWs7Y2FzZSB1dDpqLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmdyYXk7ZT1bQ29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSGV4KGUsMCldO3I9cHQ7YnJlYWs7Y2FzZSBidDpqLnN0YXRlLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5jbXlrO2U9W0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkhleChlLDApXTtyPWR0O2JyZWFrO2Nhc2UgZ3Q6ai5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5jbXlrO2U9W0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkhleChlLDApXTtyPXB0O2JyZWFrO2Nhc2UgZHQ6ai5zdGF0ZS5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucmdiO2U9W0NvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSGV4KGUsMCldO2JyZWFrO2Nhc2UgcHQ6ai5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5yZ2I7ZT1bQ29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JIZXgoZSwwKV07YnJlYWs7Y2FzZSBodDpTPWouc3RhdGUucGF0dGVybkZpbGxDb2xvclNwYWNlO2lmKCFTKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtyPWR0O2JyZWFrfWU9W107cj1LdDticmVha31pZigiUGF0dGVybiI9PT1TLm5hbWUpe25leHQoYy5oYW5kbGVDb2xvck4ocyxodCxlLFMsdyxuLGEsbSxkLGcpKTtyZXR1cm59ZT1bUy5nZXRSZ2JIZXgoZSwwKV07cj1kdDticmVhaztjYXNlIGZ0OlM9ai5zdGF0ZS5wYXR0ZXJuU3Ryb2tlQ29sb3JTcGFjZTtpZighUyl7aWYoaXNOdW1iZXJBcnJheShlLG51bGwpKXtlPVtDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JIZXgoZSwwKV07cj1wdDticmVha31lPVtdO3I9V3Q7YnJlYWt9aWYoIlBhdHRlcm4iPT09Uy5uYW1lKXtuZXh0KGMuaGFuZGxlQ29sb3JOKHMsZnQsZSxTLHcsbixhLG0sZCxnKSk7cmV0dXJufWU9W1MuZ2V0UmdiSGV4KGUsMCldO3I9cHQ7YnJlYWs7Y2FzZSB3dDpsZXQgRjt0cnl7Y29uc3QgdD1uLmdldCgiU2hhZGluZyIpO2lmKCF0KXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gc2hhZGluZyByZXNvdXJjZSBmb3VuZCIpO0Y9dC5nZXQoZVswXS5uYW1lKTtpZighRil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgb2JqZWN0IGZvdW5kIil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKWNvbnRpbnVlO2lmKGMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIFNoYWRpbmc6ICIke2V9Ii5gKTtjb250aW51ZX10aHJvdyBlfWNvbnN0IFQ9Yy5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6RixyZXNvdXJjZXM6bixsb2NhbENvbG9yU3BhY2VDYWNoZTptLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpnfSk7aWYoIVQpY29udGludWU7ZT1bVF07cj13dDticmVhaztjYXNlIGplOkM9ZVswXWluc3RhbmNlb2YgTmFtZTt4PWVbMF0ubmFtZTtpZihDKXtjb25zdCB0PXAuZ2V0QnlOYW1lKHgpO2lmKHQpe3QubGVuZ3RoPjAmJnMuYWRkT3AoamUsW3RdKTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXtpZighQyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgcj1uLmdldCgiRXh0R1N0YXRlIik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJFeHRHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBpPXIuZ2V0KHgpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Yy5zZXRHU3RhdGUoe3Jlc291cmNlczpuLGdTdGF0ZTppLG9wZXJhdG9yTGlzdDpzLGNhY2hlS2V5OngsdGFzazphLHN0YXRlTWFuYWdlcjpqLGxvY2FsR1N0YXRlQ2FjaGU6cCxsb2NhbENvbG9yU3BhY2VDYWNoZTptLHNlZW5SZWZzOmZ9KS50aGVuKGUsdCl9KS5jYXRjaChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFjLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpO3JldHVybjtjYXNlIHVlOntjb25zdFt0XT1lO2lmKCJudW1iZXIiIT10eXBlb2YgdCl7d2FybihgSW52YWxpZCBzZXRMaW5lV2lkdGg6ICR7dH1gKTtjb250aW51ZX1lWzBdPU1hdGguYWJzKHQpO2JyZWFrfWNhc2UgZ2U6e2NvbnN0IHQ9ZVsxXTtpZigibnVtYmVyIiE9dHlwZW9mIHQpe3dhcm4oYEludmFsaWQgc2V0RGFzaDogJHt0fWApO2NvbnRpbnVlfWNvbnN0IGE9ZVswXTtpZighQXJyYXkuaXNBcnJheShhKSl7d2FybihgSW52YWxpZCBzZXREYXNoOiAke2F9YCk7Y29udGludWV9YS5zb21lKGU9PiJudW1iZXIiIT10eXBlb2YgZSkmJihlWzBdPWEuZmlsdGVyKGU9PiJudW1iZXIiPT10eXBlb2YgZSkpO2JyZWFrfWNhc2UgdmU6Y2FzZSBTZTpjYXNlIEFlOmNhc2UgeGU6Y2FzZSBDZTpjYXNlIEllOmNhc2UgRmU6Yy5idWlsZFBhdGgocixlLGouc3RhdGUpO2NvbnRpbnVlO2Nhc2UgVGU6Y2FzZSBPZTpjYXNlIFJlOmNhc2UgSGU6Y2FzZSBCZTpjYXNlIERlOmNhc2UgTWU6Y2FzZSBOZTpjYXNlIFBlOntjb25zdHtzdGF0ZTp7cGF0aEJ1ZmZlcjplLHBhdGhNaW5NYXg6YX19PWo7ciE9PU9lJiZyIT09TWUmJnIhPT1OZXx8ZS5wdXNoKFF0KTtpZigwPT09ZS5sZW5ndGgpcy5hZGRPcChYdCxbcixbbnVsbF0sbnVsbF0pO2Vsc2V7cy5hZGRPcChYdCxbcixbbmV3IEZsb2F0MzJBcnJheShlKV0sYS5zbGljZSgpXSk7ZS5sZW5ndGg9MDthLnNldCh0LDApfWNvbnRpbnVlfWNhc2UgUWU6cy5hZGRPcChyLFtuZXcgRmxvYXQzMkFycmF5KGUpXSk7Y29udGludWU7Y2FzZSB2dDpjYXNlIFN0OmNhc2UgSXQ6Y2FzZSBGdDpjb250aW51ZTtjYXNlIHh0OmlmKCEoZVswXWluc3RhbmNlb2YgTmFtZSkpe3dhcm4oYEV4cGVjdGVkIG5hbWUgZm9yIGJlZ2luTWFya2VkQ29udGVudFByb3BzIGFyZzA9JHtlWzBdfWApO3MuYWRkT3AoeHQsWyJPQyIsbnVsbF0pO2NvbnRpbnVlfWlmKCJPQyI9PT1lWzBdLm5hbWUpe25leHQoYy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlWzFdLG4pLnRoZW4oZT0+e3MuYWRkT3AoeHQsWyJPQyIsZV0pfSkuY2F0Y2goZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBiZWdpbk1hcmtlZENvbnRlbnRQcm9wczogIiR7ZX0iLmApO3MuYWRkT3AoeHQsWyJPQyIsbnVsbF0pfX0pKTtyZXR1cm59ZT1bZVswXS5uYW1lLGVbMV1pbnN0YW5jZW9mIERpY3Q/ZVsxXS5nZXQoIk1DSUQiKTpudWxsXTticmVhaztkZWZhdWx0OmlmKG51bGwhPT1lKXtmb3IocT0wLHY9ZS5sZW5ndGg7cTx2JiYhKGVbcV1pbnN0YW5jZW9mIERpY3QpO3ErKyk7aWYocTx2KXt3YXJuKCJnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBvcGVyYXRvcjogIityKTtjb250aW51ZX19fXMuYWRkT3AocixlKX1pZihsKW5leHQoT2kpO2Vsc2V7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpO2UoKX19KS5jYXRjaChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGVycm9ycyBkdXJpbmcgIiR7YS5uYW1lfSIgdGFzazogIiR7ZX0iLmApO2Nsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoKX19KX1hc3luYyBnZXRUZXh0Q29udGVudCh7c3RyZWFtOmUsdGFzazp0LHJlc291cmNlczphLHN0YXRlTWFuYWdlcjpzPW51bGwsaW5jbHVkZU1hcmtlZENvbnRlbnQ6cj0hMSxzaW5rOmksc2VlblN0eWxlczpvPW5ldyBTZXQsdmlld0JveDpsLGxhbmc6Zj1udWxsLG1hcmtlZENvbnRlbnREYXRhOmM9bnVsbCxkaXNhYmxlTm9ybWFsaXphdGlvbjpoPSExLGtlZXBXaGl0ZVNwYWNlOnU9ITEscHJldlJlZnM6bT1udWxsLGludGVyc2VjdG9yOnA9bnVsbH0pe2lmKGUuaXNBc3luYyl7Y29uc3QgdD1hd2FpdCBlLmFzeW5jR2V0Qnl0ZXMoKTt0JiYoZT1uZXcgU3RyZWFtKHQsMCx0Lmxlbmd0aCxlLmRpY3QpKX1jb25zdCBkPWUuZGljdD8ub2JqSWQsZz1uZXcgUmVmU2V0KG0pO2lmKGQpe2lmKG0/LmhhcyhkKSl0aHJvdyBuZXcgRXJyb3IoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2R9YCk7Zy5wdXQoZCl9YXx8PURpY3QuZW1wdHk7c3x8PW5ldyBTdGF0ZU1hbmFnZXIobmV3IFRleHRTdGF0ZSk7ciYmKGN8fD17bGV2ZWw6MH0pO2NvbnN0IGI9e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpLGxhbmc6Zn0sdz17aW5pdGlhbGl6ZWQ6ITEsc3RyOltdLHRvdGFsV2lkdGg6MCx0b3RhbEhlaWdodDowLHdpZHRoOjAsaGVpZ2h0OjAsdmVydGljYWw6ITEscHJldlRyYW5zZm9ybTpudWxsLHByZXZUZXh0UmlzZTowLHRleHRBZHZhbmNlU2NhbGU6MCxzcGFjZUluRmxvd01pbjowLHNwYWNlSW5GbG93TWF4OjAsdHJhY2tpbmdTcGFjZU1pbjoxLzAsbmVnYXRpdmVTcGFjZU1heDotMS8wLG5vdEFTcGFjZTotMS8wLHRyYW5zZm9ybTpudWxsLGZvbnROYW1lOm51bGwsaGFzRU9MOiExfSxqPVsiICIsIiAiXTtsZXQgaz0wO2Z1bmN0aW9uIHNhdmVMYXN0Q2hhcihlKXtjb25zdCB0PShrKzEpJTIsYT0iICIhPT1qW2tdJiYiICI9PT1qW3RdO2pba109ZTtrPXQ7cmV0dXJuIXUmJmF9ZnVuY3Rpb24gc2hvdWxkQWRkV2hpdGVwc2FjZSgpe3JldHVybiF1JiYiICIhPT1qW2tdJiYiICI9PT1qWyhrKzEpJTJdfWZ1bmN0aW9uIHJlc2V0TGFzdENoYXJzKCl7alswXT1qWzFdPSIgIjtrPTB9Y29uc3QgeT10aGlzLHE9dGhpcy54cmVmLHY9W107bGV0IFM9bnVsbDtjb25zdCB4PW5ldyBMb2NhbEltYWdlQ2FjaGUsQz1uZXcgTG9jYWxHU3RhdGVDYWNoZSxGPW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IoZSxxLHMpO2xldCBULE87ZnVuY3Rpb24gcHVzaFdoaXRlc3BhY2Uoe3dpZHRoOmU9MCxoZWlnaHQ6dD0wLHRyYW5zZm9ybTphPXcucHJldlRyYW5zZm9ybSxmb250TmFtZTpuPXcuZm9udE5hbWV9KXtwPy5hZGRFeHRyYUNoYXIoIiAiKTtiLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOmUsaGVpZ2h0OnQsdHJhbnNmb3JtOmEsZm9udE5hbWU6bixoYXNFT0w6ITF9KX1mdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9VC5mb250LHQ9W1QuZm9udFNpemUqVC50ZXh0SFNjYWxlLDAsMCxULmZvbnRTaXplLDAsVC50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKFQuZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiFpc0FycmF5RXF1YWwoVC5mb250TWF0cml4LG4pKXtjb25zdCBhPWUuYmJveFszXS1lLmJib3hbMV07YT4wJiYodFszXSo9YSpULmZvbnRNYXRyaXhbM10pfXJldHVybiBVdGlsLnRyYW5zZm9ybShULmN0bSxVdGlsLnRyYW5zZm9ybShULnRleHRNYXRyaXgsdCkpfWZ1bmN0aW9uIGVuc3VyZVRleHRDb250ZW50SXRlbSgpe2lmKHcuaW5pdGlhbGl6ZWQpcmV0dXJuIHc7Y29uc3R7Zm9udDplLGxvYWRlZE5hbWU6dH09VDtpZighby5oYXModCkpe28uYWRkKHQpO2Iuc3R5bGVzW3RdPXtmb250RmFtaWx5OmUuZmFsbGJhY2tOYW1lLGFzY2VudDplLmFzY2VudCxkZXNjZW50OmUuZGVzY2VudCx2ZXJ0aWNhbDplLnZlcnRpY2FsfTtpZih5Lm9wdGlvbnMuZm9udEV4dHJhUHJvcGVydGllcyYmZS5zeXN0ZW1Gb250SW5mbyl7Y29uc3QgYT1iLnN0eWxlc1t0XTthLmZvbnRTdWJzdGl0dXRpb249ZS5zeXN0ZW1Gb250SW5mby5jc3M7YS5mb250U3Vic3RpdHV0aW9uTG9hZGVkTmFtZT1lLnN5c3RlbUZvbnRJbmZvLmxvYWRlZE5hbWV9fXcuZm9udE5hbWU9dDtjb25zdCBhPXcudHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7aWYoZS52ZXJ0aWNhbCl7dy53aWR0aD13LnRvdGFsV2lkdGg9TWF0aC5oeXBvdChhWzBdLGFbMV0pO3cuaGVpZ2h0PXcudG90YWxIZWlnaHQ9MDt3LnZlcnRpY2FsPSEwfWVsc2V7dy53aWR0aD13LnRvdGFsV2lkdGg9MDt3LmhlaWdodD13LnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoYVsyXSxhWzNdKTt3LnZlcnRpY2FsPSExfWNvbnN0IG49TWF0aC5oeXBvdChULnRleHRMaW5lTWF0cml4WzBdLFQudGV4dExpbmVNYXRyaXhbMV0pLHM9TWF0aC5oeXBvdChULmN0bVswXSxULmN0bVsxXSk7dy50ZXh0QWR2YW5jZVNjYWxlPXMqbjtjb25zdHtmb250U2l6ZTpyfT1UO3cudHJhY2tpbmdTcGFjZU1pbj0uMTAyKnI7dy5ub3RBU3BhY2U9LjAzKnI7dy5uZWdhdGl2ZVNwYWNlTWF4PS0uMipyO3cuc3BhY2VJbkZsb3dNaW49LjEwMipyO3cuc3BhY2VJbkZsb3dNYXg9LjYqcjt3Lmhhc0VPTD0hMTt3LmluaXRpYWxpemVkPSEwO3JldHVybiB3fWZ1bmN0aW9uIHVwZGF0ZUFkdmFuY2VTY2FsZSgpe2lmKCF3LmluaXRpYWxpemVkKXJldHVybjtjb25zdCBlPU1hdGguaHlwb3QoVC50ZXh0TGluZU1hdHJpeFswXSxULnRleHRMaW5lTWF0cml4WzFdKSx0PU1hdGguaHlwb3QoVC5jdG1bMF0sVC5jdG1bMV0pKmU7aWYodCE9PXcudGV4dEFkdmFuY2VTY2FsZSl7aWYody52ZXJ0aWNhbCl7dy50b3RhbEhlaWdodCs9dy5oZWlnaHQqdy50ZXh0QWR2YW5jZVNjYWxlO3cuaGVpZ2h0PTB9ZWxzZXt3LnRvdGFsV2lkdGgrPXcud2lkdGgqdy50ZXh0QWR2YW5jZVNjYWxlO3cud2lkdGg9MH13LnRleHRBZHZhbmNlU2NhbGU9dH19ZnVuY3Rpb24gcnVuQmlkaVRyYW5zZm9ybShlKXtsZXQgdD1lLnN0ci5qb2luKCIiKTtofHwodD1mdW5jdGlvbiBub3JtYWxpemVVbmljb2RlKGUpe2lmKCFzYSl7c2E9LyhbXHUwMGEwXHUwMGI1XHUwMzdlXHUwZWIzXHUyMDAwLVx1MjAwYVx1MjAyZlx1MjEyNlx1ZmIwMC1cdWZiMDRcdWZiMDZcdWZiMjAtXHVmYjM2XHVmYjM4LVx1ZmIzY1x1ZmIzZVx1ZmI0MC1cdWZiNDFcdWZiNDMtXHVmYjQ0XHVmYjQ2LVx1ZmJhMVx1ZmJhNC1cdWZiYTlcdWZiYWUtXHVmYmIxXHVmYmQzLVx1ZmJkY1x1ZmJkZS1cdWZiZTdcdWZiZWEtXHVmYmY4XHVmYmZjLVx1ZmJmZFx1ZmMwMC1cdWZjNWRcdWZjNjQtXHVmY2YxXHVmY2Y1LVx1ZmQzZFx1ZmQ4OFx1ZmRmNFx1ZmRmYS1cdWZkZmJcdWZlNzFcdWZlNzdcdWZlNzlcdWZlN2JcdWZlN2RdKyl8KFx1ZmIwNSspL2d1O3JhPW5ldyBNYXAoW1si76yFIiwixb90Il1dKX1yZXR1cm4gZS5yZXBsYWNlQWxsKHNhLChlLHQsYSk9PnQ/dC5ub3JtYWxpemUoIk5GS0MiKTpyYS5nZXQoYSkpfSh0KSk7Y29uc3QgYT1iaWRpKHQsLTEsZS52ZXJ0aWNhbCk7cmV0dXJue3N0cjphLnN0cixkaXI6YS5kaXIsd2lkdGg6TWF0aC5hYnMoZS50b3RhbFdpZHRoKSxoZWlnaHQ6TWF0aC5hYnMoZS50b3RhbEhlaWdodCksdHJhbnNmb3JtOmUudHJhbnNmb3JtLGZvbnROYW1lOmUuZm9udE5hbWUsaGFzRU9MOmUuaGFzRU9MfX1hc3luYyBmdW5jdGlvbiBoYW5kbGVTZXRGb250KGUscyl7Y29uc3Qgcj1hd2FpdCB5LmxvYWRGb250KGUscyxhLHQpO1QubG9hZGVkTmFtZT1yLmxvYWRlZE5hbWU7VC5mb250PXIuZm9udDtULmZvbnRNYXRyaXg9ci5mb250LmZvbnRNYXRyaXh8fG59ZnVuY3Rpb24gYXBwbHlJbnZlcnNlUm90YXRpb24oZSx0LGEpe2NvbnN0IG49TWF0aC5oeXBvdChhWzBdLGFbMV0pO3JldHVyblsoYVswXSplK2FbMV0qdCkvbiwoYVsyXSplK2FbM10qdCkvbl19ZnVuY3Rpb24gY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oZSl7Y29uc3QgdD1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2xldCBhPXRbNF0sbj10WzVdO2lmKFQuZm9udD8udmVydGljYWwpe2lmKGE8bFswXXx8YT5sWzJdfHxuK2U8bFsxXXx8bj5sWzNdKXJldHVybiExfWVsc2UgaWYoYStlPGxbMF18fGE+bFsyXXx8bjxsWzFdfHxuPmxbM10pcmV0dXJuITE7aWYoIVQuZm9udHx8IXcucHJldlRyYW5zZm9ybSlyZXR1cm4hMDtsZXQgcz13LnByZXZUcmFuc2Zvcm1bNF0scj13LnByZXZUcmFuc2Zvcm1bNV07aWYocz09PWEmJnI9PT1uKXJldHVybiEwO2xldCBpPS0xO3RbMF0mJjA9PT10WzFdJiYwPT09dFsyXT9pPXRbMF0+MD8wOjE4MDp0WzFdJiYwPT09dFswXSYmMD09PXRbM10mJihpPXRbMV0+MD85MDoyNzApO3N3aXRjaChpKXtjYXNlIDA6YnJlYWs7Y2FzZSA5MDpbYSxuXT1bbixhXTtbcyxyXT1bcixzXTticmVhaztjYXNlIDE4MDpbYSxuLHMscl09Wy1hLC1uLC1zLC1yXTticmVhaztjYXNlIDI3MDpbYSxuXT1bLW4sLWFdO1tzLHJdPVstciwtc107YnJlYWs7ZGVmYXVsdDpbYSxuXT1hcHBseUludmVyc2VSb3RhdGlvbihhLG4sdCk7W3Mscl09YXBwbHlJbnZlcnNlUm90YXRpb24ocyxyLHcucHJldlRyYW5zZm9ybSl9aWYoVC5mb250LnZlcnRpY2FsKXtjb25zdCBlPShyLW4pL3cudGV4dEFkdmFuY2VTY2FsZSx0PWEtcyxpPU1hdGguc2lnbih3LmhlaWdodHx8dy50b3RhbEhlaWdodCk7aWYoZTxpKncubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnModCk+LjUqdy53aWR0aCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKHQpPncud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfWU8PWkqdy5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYoZTw9aSp3LnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe2hlaWdodDpNYXRoLmFicyhlKX0pfWVsc2Ugdy5oZWlnaHQrPWU7ZWxzZSBpZighYWRkRmFrZVNwYWNlcyhlLHcucHJldlRyYW5zZm9ybSxpKSlpZigwPT09dy5zdHIubGVuZ3RoKXtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHcuaGVpZ2h0Kz1lO01hdGguYWJzKHQpPi4yNSp3LndpZHRoJiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWNvbnN0IG89KGEtcykvdy50ZXh0QWR2YW5jZVNjYWxlLGY9bi1yLGM9TWF0aC5zaWduKHcud2lkdGh8fHcudG90YWxXaWR0aCk7aWYobzxjKncubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnMoZik+LjUqdy5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1jb25zdCBoPVQudGV4dFJpc2Utdy5wcmV2VGV4dFJpc2UsdT0wPT09aD9mOmYtdFszXS9ULmZvbnRTaXplKmg7aWYoTWF0aC5hYnModSk+dy5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfW88PWMqdy5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobzw9Yyp3LnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB3LndpZHRoKz1vO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMobyx3LnByZXZUcmFuc2Zvcm0sYykpaWYoMD09PXcuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMobyl9KX1lbHNlIHcud2lkdGgrPW87TWF0aC5hYnMoZik+LjI1KncuaGVpZ2h0JiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7aWYoTyE9PVQmJihPLmZvbnRTaXplIT09VC5mb250U2l6ZXx8Ty5mb250TmFtZSE9PVQuZm9udE5hbWUmJihPLmZvbnQubmFtZSE9PVQuZm9udC5uYW1lfHxPLmZvbnQudmVydGljYWwhPT1ULmZvbnQudmVydGljYWwpKSl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtPPVQuY2xvbmUoKX1jb25zdCBhPVQuZm9udCxuPWEudmVydGljYWw/LVQuY2hhclNwYWNpbmc6VC5jaGFyU3BhY2luZztpZighZSl7Y29uc3QgZT1uK3Q7ZSYmKGEudmVydGljYWw/VC50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWUpOlQudHJhbnNsYXRlVGV4dE1hdHJpeChlKlQudGV4dEhTY2FsZSwwKSk7dSYmY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oMCk7cmV0dXJufWNvbnN0IHM9YS5jaGFyc1RvR2x5cGhzKGUpLHI9VC5mb250TWF0cml4WzBdKlQuZm9udFNpemU7Zm9yKGxldCBlPTAsaT1zLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBvPXNbZV0se2NhdGVnb3J5Omwsb3JpZ2luYWxDaGFyQ29kZTpmfT1vO2lmKGwuaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBjPW4rKGUrMT09PWk/dDowKSxoPW8ud2lkdGg7YS52ZXJ0aWNhbCYmKGg9by52bWV0cmljP28udm1ldHJpY1swXTotaCk7bGV0IG09aCpyOzMyPT09ZiYmKGMrPVQud29yZFNwYWNpbmcpO2lmKCF1JiZsLmlzV2hpdGVzcGFjZSl7aWYoYS52ZXJ0aWNhbCl7Yys9LW07VC50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWMpfWVsc2V7Yys9bTtULnRyYW5zbGF0ZVRleHRNYXRyaXgoYypULnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIWwuaXNaZXJvV2lkdGhEaWFjcml0aWMmJiFjb21wYXJlV2l0aExhc3RQb3NpdGlvbihtKSl7YS52ZXJ0aWNhbD9ULnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxtKTpULnRyYW5zbGF0ZVRleHRNYXRyaXgobSpULnRleHRIU2NhbGUsMCk7Y29udGludWV9Y29uc3QgZD1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtsLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYobT0wKTtpZihhLnZlcnRpY2FsKXtwPy5hZGRHbHlwaChnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLDAsbSxvLnVuaWNvZGUpO1QudHJhbnNsYXRlVGV4dE1hdHJpeCgwLG0pO209TWF0aC5hYnMobSk7ZC5oZWlnaHQrPW19ZWxzZXttKj1ULnRleHRIU2NhbGU7cD8uYWRkR2x5cGgoZ2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxtLDAsby51bmljb2RlKTtULnRyYW5zbGF0ZVRleHRNYXRyaXgobSwwKTtkLndpZHRoKz1tfWlmKG0pe2QucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2QucHJldlRleHRSaXNlPVQudGV4dFJpc2V9Y29uc3QgZz1vLnVuaWNvZGU7aWYoc2F2ZUxhc3RDaGFyKGcpKXtkLnN0ci5wdXNoKCIgIik7cD8uYWRkRXh0cmFDaGFyKCIgIil9cHx8ZC5zdHIucHVzaChnKTtjJiYoYS52ZXJ0aWNhbD9ULnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtYyk6VC50cmFuc2xhdGVUZXh0TWF0cml4KGMqVC50ZXh0SFNjYWxlLDApKX19ZnVuY3Rpb24gYXBwZW5kRU9MKCl7cD8uYWRkRXh0cmFDaGFyKCJcbiIpO3Jlc2V0TGFzdENoYXJzKCk7aWYody5pbml0aWFsaXplZCl7dy5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIGIuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOlQubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxhKXtpZihhKncuc3BhY2VJbkZsb3dNaW48PWUmJmU8PWEqdy5zcGFjZUluRmxvd01heCl7aWYody5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTt3LnN0ci5wdXNoKCIgIik7cD8uYWRkRXh0cmFDaGFyKCIgIil9cmV0dXJuITF9Y29uc3Qgbj13LmZvbnROYW1lO2xldCBzPTA7aWYody52ZXJ0aWNhbCl7cz1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhzKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpufSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZih3LmluaXRpYWxpemVkJiZ3LnN0cil7dy52ZXJ0aWNhbD93LnRvdGFsSGVpZ2h0Kz13LmhlaWdodCp3LnRleHRBZHZhbmNlU2NhbGU6dy50b3RhbFdpZHRoKz13LndpZHRoKncudGV4dEFkdmFuY2VTY2FsZTtiLml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybSh3KSk7dy5pbml0aWFsaXplZD0hMTt3LnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9Yi5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe2k/LmVucXVldWUoYix0KTtiLml0ZW1zPVtdO2Iuc3R5bGVzPU9iamVjdC5jcmVhdGUobnVsbCl9fWNvbnN0IFI9bmV3IFRpbWVTbG90TWFuYWdlcjtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxuKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3QsaT8ucmVhZHldKS50aGVuKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUsbil9Y2F0Y2goZSl7bihlKX19LG4pfTt0LmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtSLnJlc2V0KCk7Y29uc3QgbT17fTtsZXQgcCxkLHcsaj1bXTtmb3IoOyEocD1SLmNoZWNrKCkpOyl7ai5sZW5ndGg9MDttLmFyZ3M9ajtpZighRi5yZWFkKG0pKWJyZWFrO1Q9cy5zdGF0ZTtPfHw9VC5jbG9uZSgpO2NvbnN0IGU9bS5mbjtqPW0uYXJncztzd2l0Y2goMHxlKXtjYXNlIEdlOmNvbnN0IGU9alswXS5uYW1lLG49alsxXTtpZihULmZvbnQmJmU9PT1ULmZvbnROYW1lJiZuPT09VC5mb250U2l6ZSlicmVhaztULmZvbnROYW1lPWU7VC5mb250U2l6ZT1uO25leHQoaGFuZGxlU2V0Rm9udChlLG51bGwpKTtyZXR1cm47Y2FzZSAkZTpULnRleHRSaXNlPWpbMF07YnJlYWs7Y2FzZSBXZTpULnRleHRIU2NhbGU9alswXS8xMDA7YnJlYWs7Y2FzZSBLZTpULmxlYWRpbmc9alswXTticmVhaztjYXNlIFllOlQudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoalswXSxqWzFdKTtULnRleHRNYXRyaXg9VC50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2UgSmU6VC5sZWFkaW5nPS1qWzFdO1QudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoalswXSxqWzFdKTtULnRleHRNYXRyaXg9VC50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2UgWmU6VC5jYXJyaWFnZVJldHVybigpO2JyZWFrO2Nhc2UgUWU6VC5zZXRUZXh0TWF0cml4KGpbMF0salsxXSxqWzJdLGpbM10sals0XSxqWzVdKTtULnNldFRleHRMaW5lTWF0cml4KGpbMF0salsxXSxqWzJdLGpbM10sals0XSxqWzVdKTt1cGRhdGVBZHZhbmNlU2NhbGUoKTticmVhaztjYXNlIFVlOlQuY2hhclNwYWNpbmc9alswXTticmVhaztjYXNlIFhlOlQud29yZFNwYWNpbmc9alswXTticmVhaztjYXNlIHplOlQudGV4dE1hdHJpeD1wYS5zbGljZSgpO1QudGV4dExpbmVNYXRyaXg9cGEuc2xpY2UoKTticmVhaztjYXNlIHR0OmlmKCFzLnN0YXRlLmZvbnQpe3kuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IG09KFQuZm9udC52ZXJ0aWNhbD8xOi0xKSpULmZvbnRTaXplLzFlMyxwPWpbMF07Zm9yKGxldCBlPTAsdD1wLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXBbZV07aWYoInN0cmluZyI9PXR5cGVvZiB0KXYucHVzaCh0KTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdCYmMCE9PXQpe2NvbnN0IGU9di5qb2luKCIiKTt2Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0Km19KX19aWYodi5sZW5ndGg+MCl7Y29uc3QgZT12LmpvaW4oIiIpO3YubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIGV0OmlmKCFzLnN0YXRlLmZvbnQpe3kuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpqWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBhdDppZighcy5zdGF0ZS5mb250KXt5LmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1ULmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmpbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIG50OmlmKCFzLnN0YXRlLmZvbnQpe3kuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfVQud29yZFNwYWNpbmc9alswXTtULmNoYXJTcGFjaW5nPWpbMV07VC5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpqWzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBxdDpmbHVzaFRleHRDb250ZW50SXRlbSgpO1M/Pz1hLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5O3c9alswXWluc3RhbmNlb2YgTmFtZTtkPWpbMF0ubmFtZTtpZih3JiZ4LmdldEJ5TmFtZShkKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsbil7aWYoIXcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtsZXQgbT1TLmdldFJhdyhkKTtpZihtIGluc3RhbmNlb2YgUmVmKXtpZih4LmdldEJ5UmVmKG0pKXtlKCk7cmV0dXJufWlmKHkuZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKG0seS5wYWdlSW5kZXgpKXtlKCk7cmV0dXJufW09cS5mZXRjaChtKX1pZighKG0gaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3R7ZGljdDpwfT1tLGI9cC5nZXQoIlN1YnR5cGUiKTtpZighKGIgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1iLm5hbWUpe3guc2V0KGQscC5vYmpJZCwhMCk7ZSgpO3JldHVybn1jb25zdCBqPXMuc3RhdGUuY2xvbmUoKSxrPW5ldyBTdGF0ZU1hbmFnZXIoaiksdj1sb29rdXBNYXRyaXgocC5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7diYmay50cmFuc2Zvcm0odik7Y29uc3QgQz1wLmdldCgiUmVzb3VyY2VzIik7ZW5xdWV1ZUNodW5rKCk7Y29uc3QgRj17ZW5xdWV1ZUludm9rZWQ6ITEsZW5xdWV1ZShlLHQpe3RoaXMuZW5xdWV1ZUludm9rZWQ9ITA7aS5lbnF1ZXVlKGUsdCl9LGdldCBkZXNpcmVkU2l6ZSgpe3JldHVybiBpLmRlc2lyZWRTaXplPz8wfSxnZXQgcmVhZHkoKXtyZXR1cm4gaS5yZWFkeX19O3kuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTptLHRhc2s6dCxyZXNvdXJjZXM6QyBpbnN0YW5jZW9mIERpY3Q/QzphLHN0YXRlTWFuYWdlcjprLGluY2x1ZGVNYXJrZWRDb250ZW50OnIsc2luazppJiZGLHNlZW5TdHlsZXM6byx2aWV3Qm94OmwsbGFuZzpmLG1hcmtlZENvbnRlbnREYXRhOmMsZGlzYWJsZU5vcm1hbGl6YXRpb246aCxrZWVwV2hpdGVTcGFjZTp1LHByZXZSZWZzOmd9KS50aGVuKGZ1bmN0aW9uKCl7Ri5lbnF1ZXVlSW52b2tlZHx8eC5zZXQoZCxwLm9iaklkLCEwKTtlKCl9LG4pfSkuY2F0Y2goZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZigheS5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKTtyZXR1cm47Y2FzZSBqZTp3PWpbMF1pbnN0YW5jZW9mIE5hbWU7ZD1qWzBdLm5hbWU7aWYodyYmQy5nZXRCeU5hbWUoZCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe2lmKCF3KXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBuPWEuZ2V0KCJFeHRHU3RhdGUiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHM9bi5nZXQoZCk7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCByPXMuZ2V0KCJGb250Iik7aWYocil7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtULmZvbnROYW1lPW51bGw7VC5mb250U2l6ZT1yWzFdO2hhbmRsZVNldEZvbnQobnVsbCxyWzBdKS50aGVuKGUsdCl9ZWxzZXtDLnNldChkLHMub2JqSWQsITApO2UoKX19KS5jYXRjaChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF5Lm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2UgQXQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihyKXtjLmxldmVsKys7Yi5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzpqWzBdaW5zdGFuY2VvZiBOYW1lP2pbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSB4dDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKHIpe2MubGV2ZWwrKztsZXQgZT1udWxsO2pbMV1pbnN0YW5jZW9mIERpY3QmJihlPWpbMV0uZ2V0KCJNQ0lEIikpO2IuaXRlbXMucHVzaCh7dHlwZToiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiLGlkOk51bWJlci5pc0ludGVnZXIoZSk/YCR7eS5pZEZhY3RvcnkuZ2V0UGFnZU9iaklkKCl9X21jJHtlfWA6bnVsbCx0YWc6alswXWluc3RhbmNlb2YgTmFtZT9qWzBdLm5hbWU6bnVsbH0pfWJyZWFrO2Nhc2UgQ3Q6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihyKXtpZigwPT09Yy5sZXZlbClicmVhaztjLmxldmVsLS07Yi5pdGVtcy5wdXNoKHt0eXBlOiJlbmRNYXJrZWRDb250ZW50In0pfX1pZihiLml0ZW1zLmxlbmd0aD49KGk/LmRlc2lyZWRTaXplPz8xKSl7cD0hMDticmVha319aWYocCluZXh0KE9pKTtlbHNle2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCk7ZSgpfX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpfX0pfWFzeW5jIGV4dHJhY3REYXRhU3RydWN0dXJlcyhlLHQpe2NvbnN0IGE9dGhpcy54cmVmO2xldCBuO2NvbnN0IHM9dGhpcy5yZWFkVG9Vbmljb2RlKHQudG9Vbmljb2RlKTtpZih0LmNvbXBvc2l0ZSl7Y29uc3QgYT1lLmdldCgiQ0lEU3lzdGVtSW5mbyIpO2EgaW5zdGFuY2VvZiBEaWN0JiYhdC5jaWRTeXN0ZW1JbmZvJiYodC5jaWRTeXN0ZW1JbmZvPXtyZWdpc3RyeTpzdHJpbmdUb1BERlN0cmluZyhhLmdldCgiUmVnaXN0cnkiKSksb3JkZXJpbmc6c3RyaW5nVG9QREZTdHJpbmcoYS5nZXQoIk9yZGVyaW5nIikpLHN1cHBsZW1lbnQ6YS5nZXQoIlN1cHBsZW1lbnQiKX0pO3RyeXtjb25zdCB0PWUuZ2V0KCJDSURUb0dJRE1hcCIpO3QgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYobj10LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIC0gaWdub3JpbmcgQ0lEVG9HSURNYXAgZGF0YTogIiR7ZX0iLmApfX1jb25zdCByPVtdO2xldCBpLG89bnVsbDtpZihlLmhhcygiRW5jb2RpbmciKSl7aT1lLmdldCgiRW5jb2RpbmciKTtpZihpIGluc3RhbmNlb2YgRGljdCl7bz1pLmdldCgiQmFzZUVuY29kaW5nIik7bz1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtpZihpLmhhcygiRGlmZmVyZW5jZXMiKSl7Y29uc3QgZT1pLmdldCgiRGlmZmVyZW5jZXMiKTtsZXQgdD0wO2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IGU9YS5mZXRjaElmUmVmKG4pO2lmKCJudW1iZXIiPT10eXBlb2YgZSl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZW50cnkgaW4gJ0RpZmZlcmVuY2VzJyBhcnJheTogJHtlfWApO3JbdCsrXT1lLm5hbWV9fX19ZWxzZSBpZihpIGluc3RhbmNlb2YgTmFtZSlvPWkubmFtZTtlbHNle2NvbnN0IGU9IkVuY29kaW5nIGlzIG5vdCBhIE5hbWUgbm9yIGEgRGljdCI7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGUpO3dhcm4oZSl9Ik1hY1JvbWFuRW5jb2RpbmciIT09byYmIk1hY0V4cGVydEVuY29kaW5nIiE9PW8mJiJXaW5BbnNpRW5jb2RpbmciIT09byYmKG89bnVsbCl9Y29uc3QgbD0hdC5maWxlfHx0LmlzSW50ZXJuYWxGb250LGY9X24oKVt0Lm5hbWVdO28mJmwmJmYmJihvPW51bGwpO2lmKCJXaW5BbnNpRW5jb2RpbmciPT09byYmbCYmdC5uYW1lPy5jaGFyQ29kZUF0KDApPj0xODMpe2NvbnN0IGU9dC5uYW1lO2lmKFsiw4vDjsOMw6UiLCLCusOaw4zDpSIsIsK/wqzDjMOlIiwiwrfDgsOLw44iLCLCv8Ksw4zDpV9HQjIzMTIiLCLCt8OCw4vDjl9HQjIzMTIiLCLDgcKlw4rDqSIsIsOQw4LDi8OOIiwiwrfDgsOLw47DjMOlIiwiw5DCocKxw6rDi8OOIl0uaW5jbHVkZXMoZSkpe289bnVsbDt0LmRlZmF1bHRFbmNvZGluZz0iQWRvYmUtR0IxLVVDUzIiO3QuY29tcG9zaXRlPSEwO3QuY2lkRW5jb2Rpbmc9TmFtZS5nZXQoIkdCSy1FVUMtSCIpO2NvbnN0IGU9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzp0LmNpZEVuY29kaW5nLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO3QuY01hcD1lO3QudmVydGljYWw9dC5jTWFwLnZlcnRpY2FsO3QuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6IkFkb2JlIixvcmRlcmluZzoiR0IxIixzdXBwbGVtZW50OjB9fX1pZihvKXQuZGVmYXVsdEVuY29kaW5nPWdldEVuY29kaW5nKG8pO2Vsc2V7bGV0IGU9ISEodC5mbGFncyZxbik7Y29uc3QgYT0hISh0LmZsYWdzJnZuKTtpZigiVHJ1ZVR5cGUiPT09dC50eXBlJiZlJiZhJiYwIT09ci5sZW5ndGgpe3QuZmxhZ3MmPX5xbjtlPSExfWk9Zm47IlRydWVUeXBlIiE9PXQudHlwZXx8YXx8KGk9Y24pO2lmKGV8fGYpe2k9bG47bCYmKC9TeW1ib2wvaS50ZXN0KHQubmFtZSk/aT1objovRGluZ2JhdHMvaS50ZXN0KHQubmFtZSk/aT11bjovV2luZ2RpbmdzL2kudGVzdCh0Lm5hbWUpJiYoaT1jbikpfXQuZGVmYXVsdEVuY29kaW5nPWl9dC5kaWZmZXJlbmNlcz1yO3QuYmFzZUVuY29kaW5nTmFtZT1vO3QuaGFzRW5jb2Rpbmc9ISFvfHxyLmxlbmd0aD4wO3QuZGljdD1lO3QudG9Vbmljb2RlPWF3YWl0IHM7Y29uc3QgYz1hd2FpdCB0aGlzLmJ1aWxkVG9Vbmljb2RlKHQpO3QudG9Vbmljb2RlPWM7biYmKHQuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAobixjKSk7cmV0dXJuIHR9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSx0PSExKXthc3NlcnQoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3QgYT1bXSxuPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCkscz1lLmJhc2VFbmNvZGluZ05hbWUscj1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIHIpe2NvbnN0IHQ9cltlXTsiLm5vdGRlZiIhPT10JiYobltlXT10KX1jb25zdCBpPW1uKCk7Zm9yKGNvbnN0IHIgaW4gbil7bGV0IG89bltyXTtpZigiIj09PW8pY29udGludWU7bGV0IGw9aVtvXTtpZih2b2lkIDAhPT1sKXthW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUobCk7Y29udGludWV9bGV0IGY9MDtzd2l0Y2gob1swXSl7Y2FzZSJHIjozPT09by5sZW5ndGgmJihmPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09by5sZW5ndGgmJihmPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKG8ubGVuZ3RoPj0zJiZvLmxlbmd0aDw9NCl7Y29uc3QgYT1vLnN1YnN0cmluZygxKTtpZih0KXtmPXBhcnNlSW50KGEsMTYpO2JyZWFrfWY9K2E7aWYoTnVtYmVyLmlzTmFOKGYpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KGEsMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmw9Z2V0VW5pY29kZUZvckdseXBoKG8saSk7LTEhPT1sJiYoZj1sKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjphW3JdPW8ucmVwbGFjZUFsbCgiXyIsIiIpO2NvbnRpbnVlfX1pZihmPjAmJmY8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIoZikpe2lmKHMmJmY9PT0rcil7Y29uc3QgZT1nZXRFbmNvZGluZyhzKTtpZihlJiYobz1lW3JdKSl7YVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGlbb10pO2NvbnRpbnVlfX1hW3JdPVN0cmluZy5mcm9tQ29kZVBvaW50KGYpfX1yZXR1cm4gYX1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPWUudG9Vbmljb2RlPy5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAodGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7aWYoZS5jb21wb3NpdGUmJihlLmNNYXAuYnVpbHRJbkNNYXAmJiEoZS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXx8IkFkb2JlIj09PWUuY2lkU3lzdGVtSW5mbz8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzphfT1lLmNpZFN5c3RlbUluZm8sbj1OYW1lLmdldChgJHt0fS0ke2F9LVVDUzJgKSxzPWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6bixmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KSxyPVtdLGk9W107ZS5jTWFwLmZvckVhY2goZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2NvbnN0IGE9cy5sb29rdXAodCk7aWYoYSl7aS5sZW5ndGg9MDtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKWkucHVzaCgoYS5jaGFyQ29kZUF0KGUpPDw4KSthLmNoYXJDb2RlQXQoZSsxKSk7cltlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmkpfX0pO3JldHVybiBuZXcgVG9Vbmljb2RlTWFwKHIpfXJldHVybiBuZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoZS5maXJzdENoYXIsZS5sYXN0Q2hhcil9YXN5bmMgcmVhZFRvVW5pY29kZShlKXtpZighZSlyZXR1cm4gbnVsbDtpZihlIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7cmV0dXJuIHQgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXA/bmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBUb1VuaWNvZGVNYXAodC5nZXRNYXAoKSl9aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pdHJ5e2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO2lmKHQgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXApcmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTtjb25zdCBhPW5ldyBBcnJheSh0Lmxlbmd0aCk7dC5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXthW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KHQpO3JldHVybn10Lmxlbmd0aCUyIT0wJiYodD0iXDAiK3QpO2NvbnN0IG49W107Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXtjb25zdCBhPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JmEpKXtuLnB1c2goYSk7Y29udGludWV9ZSs9Mjtjb25zdCBzPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtuLnB1c2goKCgxMDIzJmEpPDwxMCkrKDEwMjMmcykrNjU1MzYpfWFbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4ubil9KTtyZXR1cm4gbmV3IFRvVW5pY29kZU1hcChhKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcmVhZFRvVW5pY29kZSAtIGlnbm9yaW5nIFRvVW5pY29kZSBkYXRhOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9dGhyb3cgZX1yZXR1cm4gbnVsbH1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBhPVtdO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7Y29uc3Qgcz1lW24rK108PDh8ZVtuXSxyPW4+PjE7KDAhPT1zfHx0LmhhcyhyKSkmJihhW3JdPXMpfXJldHVybiBhfWV4dHJhY3RXaWR0aHMoZSx0LGEpe2NvbnN0IG49dGhpcy54cmVmO2xldCBzPVtdLHI9MDtjb25zdCBpPVtdO2xldCBvO2lmKGEuY29tcG9zaXRlKXtjb25zdCB0PWUuZ2V0KCJEVyIpO3I9Im51bWJlciI9PXR5cGVvZiB0P01hdGguY2VpbCh0KToxZTM7Y29uc3QgbD1lLmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkobCkpZm9yKGxldCBlPTAsdD1sLmxlbmd0aDtlPHQ7ZSsrKXtsZXQgdD1uLmZldGNoSWZSZWYobFtlKytdKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlicmVhaztjb25zdCBhPW4uZmV0Y2hJZlJlZihsW2VdKTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihjb25zdCBlIG9mIGEpe2NvbnN0IGE9bi5mZXRjaElmUmVmKGUpOyJudW1iZXIiPT10eXBlb2YgYSYmKHNbdF09YSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIoYSkpYnJlYWs7e2NvbnN0IHI9bi5mZXRjaElmUmVmKGxbKytlXSk7aWYoIm51bWJlciIhPXR5cGVvZiByKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PWE7ZSsrKXNbZV09cn19fWlmKGEudmVydGljYWwpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRFcyIik7bGV0IGE9aXNOdW1iZXJBcnJheSh0LDIpP3Q6Wzg4MCwtMWUzXTtvPVthWzFdLC41KnIsYVswXV07YT1lLmdldCgiVzIiKTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9bi5mZXRjaElmUmVmKGFbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3Qgcz1uLmZldGNoSWZSZWYoYVtlXSk7aWYoQXJyYXkuaXNBcnJheShzKSlmb3IobGV0IGU9MCxhPXMubGVuZ3RoO2U8YTtlKyspe2NvbnN0IGE9W24uZmV0Y2hJZlJlZihzW2UrK10pLG4uZmV0Y2hJZlJlZihzW2UrK10pLG4uZmV0Y2hJZlJlZihzW2VdKV07aXNOdW1iZXJBcnJheShhLG51bGwpJiYoaVt0XT1hKTt0Kyt9ZWxzZXtpZighTnVtYmVyLmlzSW50ZWdlcihzKSlicmVhazt7Y29uc3Qgcj1bbi5mZXRjaElmUmVmKGFbKytlXSksbi5mZXRjaElmUmVmKGFbKytlXSksbi5mZXRjaElmUmVmKGFbKytlXSldO2lmKCFpc051bWJlckFycmF5KHIsbnVsbCkpY29udGludWU7Zm9yKGxldCBlPXQ7ZTw9cztlKyspaVtlXT1yfX19fX1lbHNle2NvbnN0IGk9ZS5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2xldCBlPWEuZmlyc3RDaGFyO2Zvcihjb25zdCB0IG9mIGkpe2NvbnN0IGE9bi5mZXRjaElmUmVmKHQpOyJudW1iZXIiPT10eXBlb2YgYSYmKHNbZV09YSk7ZSsrfWNvbnN0IG89dC5nZXQoIk1pc3NpbmdXaWR0aCIpO3I9Im51bWJlciI9PXR5cGVvZiBvP286MH1lbHNle2NvbnN0IHQ9ZS5nZXQoIkJhc2VGb250Iik7aWYodCBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IGU9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3ModC5uYW1lKTtzPXRoaXMuYnVpbGRDaGFyQ29kZVRvV2lkdGgoZS53aWR0aHMsYSk7cj1lLmRlZmF1bHRXaWR0aH19fWxldCBsPSEwLGY9cjtmb3IoY29uc3QgZSBpbiBzKXtjb25zdCB0PXNbZV07aWYodClpZihmKXtpZihmIT09dCl7bD0hMTticmVha319ZWxzZSBmPXR9bD9hLmZsYWdzfD1rbjphLmZsYWdzJj1+a247YS5kZWZhdWx0V2lkdGg9cjthLndpZHRocz1zO2EuZGVmYXVsdFZNZXRyaWNzPW87YS52bWV0cmljcz1pfWlzU2VyaWZGb250KGUpe2NvbnN0IHQ9ZS5zcGxpdCgiLSIsMSlbMF07cmV0dXJuIHQgaW4gRW4oKXx8L3NlcmlmL2dpLnRlc3QodCl9Z2V0QmFzZUZvbnRNZXRyaWNzKGUpe2xldCB0PTAsYT1PYmplY3QuY3JlYXRlKG51bGwpLG49ITEscz1ub3JtYWxpemVGb250TmFtZShlKTtzPU1uKClbc118fHM7Y29uc3Qgcj1YbigpLGk9cltzXT8/clt0aGlzLmlzU2VyaWZGb250KGUpPyJUaW1lcy1Sb21hbiI6IkhlbHZldGljYSJdO2lmKCJudW1iZXIiPT10eXBlb2YgaSl7dD1pO249ITB9ZWxzZSBhPWkoKTtyZXR1cm57ZGVmYXVsdFdpZHRoOnQsbW9ub3NwYWNlOm4sd2lkdGhzOmF9fWJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLG49dC5kaWZmZXJlbmNlcyxzPXQuZGVmYXVsdEVuY29kaW5nO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl0IGluIG4mJmVbblt0XV0/YVt0XT1lW25bdF1dOnQgaW4gcyYmZVtzW3RdXSYmKGFbdF09ZVtzW3RdXSk7cmV0dXJuIGF9cHJlRXZhbHVhdGVGb250KGUpe2NvbnN0IHQ9ZTtsZXQgYT1lLmdldCgiU3VidHlwZSIpO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmb250IFN1YnR5cGUiKTtsZXQgbixzPSExO2lmKCJUeXBlMCI9PT1hLm5hbWUpe2NvbnN0IHQ9ZS5nZXQoIkRlc2NlbmRhbnRGb250cyIpO2lmKCF0KXRocm93IG5ldyBGb3JtYXRFcnJvcigiRGVzY2VuZGFudCBmb250cyBhcmUgbm90IHNwZWNpZmllZCIpO2lmKCEoKGU9QXJyYXkuaXNBcnJheSh0KT90aGlzLnhyZWYuZmV0Y2hJZlJlZih0WzBdKTp0KWluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnQgaXMgbm90IGEgZGljdGlvbmFyeS4iKTthPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO3M9ITB9bGV0IHI9ZS5nZXQoIkZpcnN0Q2hhciIpO051bWJlci5pc0ludGVnZXIocil8fChyPTApO2xldCBpPWUuZ2V0KCJMYXN0Q2hhciIpO051bWJlci5pc0ludGVnZXIoaSl8fChpPXM/NjU1MzU6MjU1KTtjb25zdCBvPWUuZ2V0KCJGb250RGVzY3JpcHRvciIpLGw9ZS5nZXQoIlRvVW5pY29kZSIpfHx0LmdldCgiVG9Vbmljb2RlIik7aWYobyl7bj1uZXcgTXVybXVySGFzaDNfNjQ7Y29uc3Qgbz10LmdldFJhdygiRW5jb2RpbmciKTtpZihvIGluc3RhbmNlb2YgTmFtZSluLnVwZGF0ZShvLm5hbWUpO2Vsc2UgaWYobyBpbnN0YW5jZW9mIFJlZiluLnVwZGF0ZShvLnRvU3RyaW5nKCkpO2Vsc2UgaWYobyBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IGUgb2Ygby5nZXRSYXdWYWx1ZXMoKSlpZihlIGluc3RhbmNlb2YgTmFtZSluLnVwZGF0ZShlLm5hbWUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFJlZiluLnVwZGF0ZShlLnRvU3RyaW5nKCkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBBcnJheSh0KTtmb3IobGV0IG49MDtuPHQ7bisrKXtjb25zdCB0PWVbbl07dCBpbnN0YW5jZW9mIE5hbWU/YVtuXT10Lm5hbWU6KCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFJlZikmJihhW25dPXQudG9TdHJpbmcoKSl9bi51cGRhdGUoYS5qb2luKCkpfW4udXBkYXRlKGAke3J9LSR7aX1gKTtpZihsIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgZT1sLnN0cmVhbXx8bCx0PWUuYnVmZmVyP25ldyBVaW50OEFycmF5KGUuYnVmZmVyLmJ1ZmZlciwwLGUuYnVmZmVyTGVuZ3RoKTpuZXcgVWludDhBcnJheShlLmJ5dGVzLmJ1ZmZlcixlLnN0YXJ0LGUuZW5kLWUuc3RhcnQpO24udXBkYXRlKHQpfWVsc2UgbCBpbnN0YW5jZW9mIE5hbWUmJm4udXBkYXRlKGwubmFtZSk7Y29uc3QgZj1lLmdldCgiV2lkdGhzIil8fHQuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KGYpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGYpKCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFJlZikmJmUucHVzaCh0LnRvU3RyaW5nKCkpO24udXBkYXRlKGUuam9pbigpKX1pZihzKXtuLnVwZGF0ZSgiY29tcG9zaXRlRm9udCIpO2NvbnN0IGE9ZS5nZXQoIlciKXx8dC5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGEpaWYoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKWUucHVzaCh0LnRvU3RyaW5nKCkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT1bXTtmb3IoY29uc3QgZSBvZiB0KSgibnVtYmVyIj09dHlwZW9mIGV8fGUgaW5zdGFuY2VvZiBSZWYpJiZhLnB1c2goZS50b1N0cmluZygpKTtlLnB1c2goYFske2Euam9pbigpfV1gKX1uLnVwZGF0ZShlLmpvaW4oKSl9Y29uc3Qgcz1lLmdldFJhdygiQ0lEVG9HSURNYXAiKXx8dC5nZXRSYXcoIkNJRFRvR0lETWFwIik7cyBpbnN0YW5jZW9mIE5hbWU/bi51cGRhdGUocy5uYW1lKTpzIGluc3RhbmNlb2YgUmVmP24udXBkYXRlKHMudG9TdHJpbmcoKSk6cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJm4udXBkYXRlKHMucGVla0J5dGVzKCkpfWlmKCJUeXBlMyI9PT1hLm5hbWUpe2NvbnN0IGU9dC5nZXQoIkNoYXJQcm9jcyIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgZS5nZXRSYXdFbnRyaWVzKCkpbi51cGRhdGUoYSBpbnN0YW5jZW9mIFJlZj9gJHt0fVwwJHthfWA6dCl9fXJldHVybntkZXNjcmlwdG9yOm8sZGljdDplLGJhc2VEaWN0OnQsY29tcG9zaXRlOnMsdHlwZTphLm5hbWUsZmlyc3RDaGFyOnIsbGFzdENoYXI6aSx0b1VuaWNvZGU6bCxoYXNoOm4/bi5oZXhkaWdlc3QoKToiIn19YXN5bmMgdHJhbnNsYXRlRm9udCh7ZGVzY3JpcHRvcjplLGRpY3Q6dCxiYXNlRGljdDphLGNvbXBvc2l0ZTpzLHR5cGU6cixmaXJzdENoYXI6aSxsYXN0Q2hhcjpvLHRvVW5pY29kZTpsLGNzc0ZvbnRJbmZvOmZ9KXtjb25zdCBjPSJUeXBlMyI9PT1yO2lmKCFlKXtpZighYyl7bGV0IGU9dC5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9bm9ybWFsaXplRm9udE5hbWUoZS5uYW1lKTtjb25zdCBuPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKGUpLHM9ZS5zcGxpdCgiLSIsMSlbMF0sZj0odGhpcy5pc1NlcmlmRm9udChzKT95bjowKXwobi5tb25vc3BhY2U/a246MCl8KF9uKClbc10/cW46dm4pLGg9e3R5cGU6cixuYW1lOmUsbG9hZGVkTmFtZTphLmxvYWRlZE5hbWUsc3lzdGVtRm9udEluZm86bnVsbCx3aWR0aHM6bi53aWR0aHMsZGVmYXVsdFdpZHRoOm4uZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6ZixmaXJzdENoYXI6aSxsYXN0Q2hhcjpvLHRvVW5pY29kZTpsLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250OmN9LHU9dC5nZXQoIldpZHRocyIpLG09Z2V0U3RhbmRhcmRGb250TmFtZShlKTtsZXQgcD1udWxsO2lmKG0pe3A9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEobSk7aC5pc0ludGVybmFsRm9udD0hIXB9IWguaXNJbnRlcm5hbEZvbnQmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGguc3lzdGVtRm9udEluZm89Z2V0Rm9udFN1YnN0aXR1dGlvbih0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCxlLG0scikpO2NvbnN0IGQ9YXdhaXQgdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxoKTtpZihBcnJheS5pc0FycmF5KHUpKXtjb25zdCBlPVtdO2xldCB0PWk7Zm9yKGNvbnN0IGEgb2YgdSl7Y29uc3Qgbj10aGlzLnhyZWYuZmV0Y2hJZlJlZihhKTsibnVtYmVyIj09dHlwZW9mIG4mJihlW3RdPW4pO3QrK31kLndpZHRocz1lfWVsc2UgZC53aWR0aHM9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChuLndpZHRocyxkKTtyZXR1cm4gbmV3IEZvbnQoZSxwLGQsdGhpcy5vcHRpb25zKX1lPURpY3QuZW1wdHl9bGV0IGg9ZS5nZXQoIkZvbnROYW1lIiksdT10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIGgmJihoPU5hbWUuZ2V0KGgpKTsic3RyaW5nIj09dHlwZW9mIHUmJih1PU5hbWUuZ2V0KHUpKTtjb25zdCBtPWg/Lm5hbWUscD11Py5uYW1lO2lmKGMpbXx8KGg9TmFtZS5nZXQocikpO2Vsc2UgaWYobSE9PXApe2luZm8oYFRoZSBGb250RGVzY3JpcHRvcidzIEZvbnROYW1lIGlzICIke219IiBidXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBGb250J3MgQmFzZUZvbnQgIiR7cH0iLmApO20mJnAmJihwLnN0YXJ0c1dpdGgobSl8fCFpc0tub3duRm9udE5hbWUobSkmJmlzS25vd25Gb250TmFtZShwKSkmJihoPW51bGwpO2h8fD11fWlmKCEoaCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTtsZXQgZCxnLGIsdyxqO3RyeXtkPWUuZ2V0KCJGb250RmlsZSIsIkZvbnRGaWxlMiIsIkZvbnRGaWxlMyIpO2lmKGQpe2lmKCEoZCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRm9udEZpbGUgc2hvdWxkIGJlIGEgc3RyZWFtIik7aWYoZC5pc0FzeW5jKXtjb25zdCBlPWF3YWl0IGQuYXN5bmNHZXRCeXRlcygpO2UmJihkPW5ldyBTdHJlYW0oZSwwLGUubGVuZ3RoLGQuZGljdCkpfWlmKGQuaXNFbXB0eSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZvbnRGaWxlIGlzIGVtcHR5Iil9fWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgdHJhbnNsYXRlRm9udCAtIGZldGNoaW5nICIke2gubmFtZX0iIGZvbnQgZmlsZTogIiR7ZX0iLmApO2Q9bnVsbH1sZXQgaz0hMSx5PW51bGwscT1udWxsO2lmKGQpe2lmKGQuZGljdCl7Y29uc3QgZT1kLmRpY3QuZ2V0KCJTdWJ0eXBlIik7ZSBpbnN0YW5jZW9mIE5hbWUmJihnPWUubmFtZSk7Yj1kLmRpY3QuZ2V0KCJMZW5ndGgxIik7dz1kLmRpY3QuZ2V0KCJMZW5ndGgyIik7aj1kLmRpY3QuZ2V0KCJMZW5ndGgzIil9fWVsc2UgaWYoZil7Y29uc3QgZT1nZXRYZmFGb250TmFtZShoLm5hbWUpO2lmKGUpe2YuZm9udEZhbWlseT1gJHtmLmZvbnRGYW1pbHl9LVBkZkpTLVhGQWA7Zi5tZXRyaWNzPWUubWV0cmljc3x8bnVsbDt5PWUuZmFjdG9yc3x8bnVsbDtkPWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUubmFtZSk7az0hIWQ7YT10PWdldFhmYUZvbnREaWN0KGgubmFtZSk7cz0hMH19ZWxzZSBpZighYyl7Y29uc3QgZT1nZXRTdGFuZGFyZEZvbnROYW1lKGgubmFtZSk7aWYoZSl7ZD1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTtrPSEhZH0hayYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYocT1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGgubmFtZSxlLHIpKX1jb25zdCB2PWxvb2t1cE1hdHJpeCh0LmdldEFycmF5KCJGb250TWF0cml4IiksbiksUz1sb29rdXBOb3JtYWxSZWN0KGUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94IiksYz9bMCwwLDAsMF06dm9pZCAwKTtsZXQgeD1lLmdldCgiQXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiB4JiYoeD12b2lkIDApO2xldCBDPWUuZ2V0KCJEZXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBDJiYoQz12b2lkIDApO2xldCBGPWUuZ2V0KCJYSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBGJiYoRj0wKTtsZXQgVD1lLmdldCgiQ2FwSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBUJiYoVD0wKTtsZXQgTz1lLmdldCgiRmxhZ3MiKTtOdW1iZXIuaXNJbnRlZ2VyKE8pfHwoTz0wKTtsZXQgUj1lLmdldCgiSXRhbGljQW5nbGUiKTsibnVtYmVyIiE9dHlwZW9mIFImJihSPTApO2NvbnN0IEg9e3R5cGU6cixuYW1lOmgubmFtZSxzdWJ0eXBlOmcsZmlsZTpkLGxlbmd0aDE6YixsZW5ndGgyOncsbGVuZ3RoMzpqLGlzSW50ZXJuYWxGb250OmssbG9hZGVkTmFtZTphLmxvYWRlZE5hbWUsY29tcG9zaXRlOnMsZml4ZWRQaXRjaDohMSxmb250TWF0cml4OnYsZmlyc3RDaGFyOmksbGFzdENoYXI6byx0b1VuaWNvZGU6bCxiYm94OlMsYXNjZW50OngsZGVzY2VudDpDLHhIZWlnaHQ6RixjYXBIZWlnaHQ6VCxmbGFnczpPLGl0YWxpY0FuZ2xlOlIsaXNUeXBlM0ZvbnQ6Yyxjc3NGb250SW5mbzpmLHNjYWxlRmFjdG9yczp5LHN5c3RlbUZvbnRJbmZvOnF9O2lmKHMpe2NvbnN0IGU9YS5nZXQoIkVuY29kaW5nIik7ZSBpbnN0YW5jZW9mIE5hbWUmJihILmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7SC5jTWFwPXQ7SC52ZXJ0aWNhbD1ILmNNYXAudmVydGljYWx9Y29uc3QgRD1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LEgpO3RoaXMuZXh0cmFjdFdpZHRocyh0LGUsRCk7cmV0dXJuIG5ldyBGb250KGgubmFtZSxkLEQsdGhpcy5vcHRpb25zKX1zdGF0aWMgYnVpbGRGb250UGF0aHMoZSx0LGEsbil7ZnVuY3Rpb24gYnVpbGRQYXRoKHQpe2NvbnN0IHM9YCR7ZS5sb2FkZWROYW1lfV9wYXRoXyR7dH1gO3RyeXtpZihlLnJlbmRlcmVyLmhhc0J1aWx0UGF0aCh0KSlyZXR1cm47Y29uc3Qgbj1mdW5jdGlvbiBjb21waWxlRm9udFBhdGhJbmZvKGUpe3JldHVybiBlLnNsaWNlKCkuYnVmZmVyfShlLnJlbmRlcmVyLmdldFBhdGhKcyh0KSk7YS5zZW5kKCJjb21tb25vYmoiLFtzLCJGb250UGF0aCIsbl0sW25dKX1jYXRjaChlKXtpZihuLmlnbm9yZUVycm9ycyl7d2FybihgYnVpbGRGb250UGF0aHMgLSBpZ25vcmluZyAke3N9IGdseXBoOiAiJHtlfSIuYCk7cmV0dXJufXRocm93IGV9fWZvcihjb25zdCBlIG9mIHQpe2J1aWxkUGF0aChlLmZvbnRDaGFyKTtjb25zdCB0PWUuYWNjZW50O3Q/LmZvbnRDaGFyJiZidWlsZFBhdGgodC5mb250Q2hhcil9fXN0YXRpYyBnZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IERpY3Q7ZS5zZXQoIkJhc2VGb250IixOYW1lLmdldCgiSGVsdmV0aWNhIikpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIldpbkFuc2lFbmNvZGluZyIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX1jbGFzcyBUcmFuc2xhdGVkRm9udHsjTmU9ITE7I1BlPW51bGw7Y29uc3RydWN0b3Ioe2xvYWRlZE5hbWU6ZSxmb250OnQsZGljdDphfSl7dGhpcy5sb2FkZWROYW1lPWU7dGhpcy5mb250PXQ7dGhpcy5kaWN0PWE7dGhpcy50eXBlM0RlcGVuZGVuY2llcz10LmlzVHlwZTNGb250P25ldyBTZXQ6bnVsbH1zZW5kKGUpe2lmKHRoaXMuI05lKXJldHVybjt0aGlzLiNOZT0hMDtjb25zdCB0PXRoaXMuZm9udC5leHBvcnREYXRhKCksYT10LmJ1ZmZlcj9bdC5idWZmZXJdOm51bGw7ZS5zZW5kKCJjb21tb25vYmoiLFt0aGlzLmxvYWRlZE5hbWUsIkZvbnQiLHRdLGEpfWZhbGxiYWNrKGUsdCl7aWYodGhpcy5mb250LmRhdGEpe3RoaXMuZm9udC5kaXNhYmxlRm9udEZhY2U9ITA7UGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyh0aGlzLmZvbnQsdGhpcy5mb250LmdseXBoQ2FjaGVWYWx1ZXMsZSx0KX19bG9hZFR5cGUzRGF0YShlLHQsYSl7aWYodGhpcy4jUGUpcmV0dXJuIHRoaXMuI1BlO2NvbnN0e2ZvbnQ6bix0eXBlM0RlcGVuZGVuY2llczpzfT10aGlzO2Fzc2VydChuLmlzVHlwZTNGb250LCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCByPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLGk9bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIWkuaGFzKHRoaXMuZGljdC5vYmpJZCkmJmkucHV0KHRoaXMuZGljdC5vYmpJZCk7ci50eXBlM0ZvbnRSZWZzPWk7bGV0IG89UHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgbD10aGlzLmRpY3QuZ2V0KCJDaGFyUHJvY3MiKSxmPXRoaXMuZGljdC5nZXQoIlJlc291cmNlcyIpfHx0LGM9T2JqZWN0LmNyZWF0ZShudWxsKSxbaCx1LG0scF09bi5iYm94LGQ9bS1oLGc9cC11LGI9TWF0aC5oeXBvdChkLGcpO2Zvcihjb25zdCBlIG9mIGwuZ2V0S2V5cygpKW89by50aGVuKCgpPT57Y29uc3QgdD1sLmdldChlKSxuPW5ldyBPcGVyYXRvckxpc3Q7cmV0dXJuIHIuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOmEscmVzb3VyY2VzOmYsb3BlcmF0b3JMaXN0Om59KS50aGVuKCgpPT57c3dpdGNoKG4uZm5BcnJheVswXSl7Y2FzZSBydDp0aGlzLiNFZShuLGIpO2JyZWFrO2Nhc2Ugc3Q6Ynx8dGhpcy4jX2Uobil9Y1tlXT1uLmdldElSKCk7Zm9yKGNvbnN0IGUgb2Ygbi5kZXBlbmRlbmNpZXMpcy5hZGQoZSl9KS5jYXRjaChmdW5jdGlvbih0KXt3YXJuKGBUeXBlMyBmb250IHJlc291cmNlICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO2NvbnN0IGE9bmV3IE9wZXJhdG9yTGlzdDtjW2VdPWEuZ2V0SVIoKX0pfSk7dGhpcy4jUGU9by50aGVuKCgpPT57bi5jaGFyUHJvY09wZXJhdG9yTGlzdD1jO2lmKHRoaXMuX2Jib3gpe24uaXNDaGFyQkJveD0hMDtuLmJib3g9dGhpcy5fYmJveH19KTtyZXR1cm4gdGhpcy4jUGV9I0VlKGUsYT1OYU4pe2NvbnN0IG49VXRpbC5ub3JtYWxpemVSZWN0KGUuYXJnc0FycmF5WzBdLnNsaWNlKDIpKSxzPW5bMl0tblswXSxyPW5bM10tblsxXSxpPU1hdGguaHlwb3QocyxyKTtpZigwPT09c3x8MD09PXIpe2UuZm5BcnJheS5zcGxpY2UoMCwxKTtlLmFyZ3NBcnJheS5zcGxpY2UoMCwxKX1lbHNlIGlmKDA9PT1hfHxNYXRoLnJvdW5kKGkvYSk+PTEwKXt0aGlzLl9iYm94Pz89dC5zbGljZSgpO1V0aWwucmVjdEJvdW5kaW5nQm94KC4uLm4sdGhpcy5fYmJveCl9bGV0IG89MCxsPWUubGVuZ3RoO2Zvcig7bzxsOyl7c3dpdGNoKGUuZm5BcnJheVtvXSl7Y2FzZSBydDpicmVhaztjYXNlIGl0OmNhc2Ugb3Q6Y2FzZSBsdDpjYXNlIGZ0OmNhc2UgY3Q6Y2FzZSBodDpjYXNlIHV0OmNhc2UgbXQ6Y2FzZSBwdDpjYXNlIGR0OmNhc2UgZ3Q6Y2FzZSBidDpjYXNlIHd0OmNhc2UgYmU6ZS5mbkFycmF5LnNwbGljZShvLDEpO2UuYXJnc0FycmF5LnNwbGljZShvLDEpO2wtLTtjb250aW51ZTtjYXNlIGplOmNvbnN0W3RdPWUuYXJnc0FycmF5W29dO2xldCBhPTAsbj10Lmxlbmd0aDtmb3IoO2E8bjspe2NvbnN0W2VdPXRbYV07c3dpdGNoKGUpe2Nhc2UiVFIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6dC5zcGxpY2UoYSwxKTtuLS07Y29udGludWV9YSsrfX1vKyt9fSNfZShlKXtsZXQgYT0xO2NvbnN0IG49ZS5sZW5ndGg7Zm9yKDthPG47KXtpZihlLmZuQXJyYXlbYV09PT1YdCl7Y29uc3Qgbj1lLmFyZ3NBcnJheVthXVsyXTt0aGlzLl9iYm94Pz89dC5zbGljZSgpO1V0aWwucmVjdEJvdW5kaW5nQm94KC4uLm4sdGhpcy5fYmJveCl9YSsrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09VXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjdG09bmV3IEZsb2F0MzJBcnJheShwYSk7Zm9udE5hbWU9bnVsbDtmb250U2l6ZT0wO2xvYWRlZE5hbWU9bnVsbDtmb250PW51bGw7Zm9udE1hdHJpeD1uO3RleHRNYXRyaXg9cGEuc2xpY2UoKTt0ZXh0TGluZU1hdHJpeD1wYS5zbGljZSgpO2NoYXJTcGFjaW5nPTA7d29yZFNwYWNpbmc9MDtsZWFkaW5nPTA7dGV4dEhTY2FsZT0xO3RleHRSaXNlPTA7c2V0VGV4dE1hdHJpeChlLHQsYSxuLHMscil7Y29uc3QgaT10aGlzLnRleHRNYXRyaXg7aVswXT1lO2lbMV09dDtpWzJdPWE7aVszXT1uO2lbNF09cztpWzVdPXJ9c2V0VGV4dExpbmVNYXRyaXgoZSx0LGEsbixzLHIpe2NvbnN0IGk9dGhpcy50ZXh0TGluZU1hdHJpeDtpWzBdPWU7aVsxXT10O2lbMl09YTtpWzNdPW47aVs0XT1zO2lbNV09cn10cmFuc2xhdGVUZXh0TWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19dHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZSx0KXtjb25zdCBhPXRoaXMudGV4dExpbmVNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19Y2FycmlhZ2VSZXR1cm4oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyk7dGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX1jbG9uZSgpe2NvbnN0IGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHRoaXMpLHRoaXMpO2UudGV4dE1hdHJpeD10aGlzLnRleHRNYXRyaXguc2xpY2UoKTtlLnRleHRMaW5lTWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKTtlLmZvbnRNYXRyaXg9dGhpcy5mb250TWF0cml4LnNsaWNlKCk7cmV0dXJuIGV9fWNsYXNzIEV2YWxTdGF0ZXtjdG09bmV3IEZsb2F0MzJBcnJheShwYSk7Zm9udD1udWxsO3RleHRSZW5kZXJpbmdNb2RlPXg7X2ZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O19zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O3BhdHRlcm5GaWxsQ29sb3JTcGFjZT1udWxsO3BhdHRlcm5TdHJva2VDb2xvclNwYWNlPW51bGw7Y3VycmVudFBvaW50WD0wO2N1cnJlbnRQb2ludFk9MDtwYXRoTWluTWF4PWEuc2xpY2UoKTtwYXRoQnVmZmVyPVtdO2dldCBmaWxsQ29sb3JTcGFjZSgpe3JldHVybiB0aGlzLl9maWxsQ29sb3JTcGFjZX1zZXQgZmlsbENvbG9yU3BhY2UoZSl7dGhpcy5fZmlsbENvbG9yU3BhY2U9dGhpcy5wYXR0ZXJuRmlsbENvbG9yU3BhY2U9ZX1nZXQgc3Ryb2tlQ29sb3JTcGFjZSgpe3JldHVybiB0aGlzLl9zdHJva2VDb2xvclNwYWNlfXNldCBzdHJva2VDb2xvclNwYWNlKGUpe3RoaXMuX3N0cm9rZUNvbG9yU3BhY2U9dGhpcy5wYXR0ZXJuU3Ryb2tlQ29sb3JTcGFjZT1lfWNsb25lKHtuZXdQYXRoOmU9ITF9PXt9KXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7aWYoZSl7dC5wYXRoQnVmZmVyPVtdO3QucGF0aE1pbk1heD1hLnNsaWNlKCl9cmV0dXJuIHR9fWNsYXNzIEV2YWx1YXRvclByZXByb2Nlc3NvcntzdGF0aWMgZ2V0IG9wTWFwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcE1hcCIsT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHt3OntpZDp1ZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxKOntpZDptZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxqOntpZDpwZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNOntpZDpkZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxkOntpZDpnZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxyaTp7aWQ6YmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0saTp7aWQ6d2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZ3M6e2lkOmplLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LHE6e2lkOmtlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFE6e2lkOnllLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGNtOntpZDpxZSxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSxtOntpZDp2ZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxsOntpZDpTZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxjOntpZDpBZSxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSx2OntpZDp4ZSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSx5OntpZDpDZSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxoOntpZDpJZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxyZTp7aWQ6RmUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sUzp7aWQ6VGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sczp7aWQ6T2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZjp7aWQ6UmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRjp7aWQ6UmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sImYqIjp7aWQ6SGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQjp7aWQ6QmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sIkIqIjp7aWQ6RGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sYjp7aWQ6TWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sImIqIjp7aWQ6TmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sbjp7aWQ6UGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVzp7aWQ6RWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sIlcqIjp7aWQ6X2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQlQ6e2lkOnplLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEVUOntpZDpMZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxUYzp7aWQ6VWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHc6e2lkOlhlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR6OntpZDpXZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUTDp7aWQ6S2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVGY6e2lkOkdlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LFRyOntpZDpWZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUczp7aWQ6JGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVGQ6e2lkOlllLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LFREOntpZDpKZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUbTp7aWQ6UWUsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sIlQqIjp7aWQ6WmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGo6e2lkOmV0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRKOntpZDp0dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwiJyI6e2lkOmF0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LCciJzp7aWQ6bnQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sZDA6e2lkOnN0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGQxOntpZDpydCxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSxDUzp7aWQ6aXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sY3M6e2lkOm90LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFNDOntpZDpsdCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfSxTQ046e2lkOmZ0LG51bUFyZ3M6MzMsdmFyaWFibGVBcmdzOiEwfSxzYzp7aWQ6Y3QsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sc2NuOntpZDpodCxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sRzp7aWQ6dXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZzp7aWQ6bXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sUkc6e2lkOnB0LG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LHJnOntpZDpkdCxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxLOntpZDpndCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxrOntpZDpidCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxzaDp7aWQ6d3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkk6e2lkOmp0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LElEOntpZDprdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFSTp7aWQ6eXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRG86e2lkOnF0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LE1QOntpZDp2dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxEUDp7aWQ6U3QsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sQk1DOntpZDpBdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxCREM6e2lkOnh0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEVNQzp7aWQ6Q3QsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQlg6e2lkOkl0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEVYOntpZDpGdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCTTpudWxsLEJEOm51bGwsdHJ1ZTpudWxsLGZhOm51bGwsZmFsOm51bGwsZmFsczpudWxsLGZhbHNlOm51bGwsbnU6bnVsbCxudWw6bnVsbCxudWxsOm51bGx9KSl9c3RhdGljIE1BWF9JTlZBTElEX1BBVEhfT1BTPTEwO2NvbnN0cnVjdG9yKGUsdCxhPW5ldyBTdGF0ZU1hbmFnZXIpe3RoaXMucGFyc2VyPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihlLEV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcCkseHJlZjp0fSk7dGhpcy5zdGF0ZU1hbmFnZXI9YTt0aGlzLm5vblByb2Nlc3NlZEFyZ3M9W107dGhpcy5faXNQYXRoT3A9ITE7dGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MH1nZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH1yZWFkKGUpe2xldCB0PWUuYXJncztmb3IoOzspe2NvbnN0IGE9dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIENtZCl7Y29uc3Qgbj1hLmNtZCxzPUV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcFtuXTtpZighcyl7d2FybihgVW5rbm93biBjb21tYW5kICIke259Ii5gKTtjb250aW51ZX1jb25zdCByPXMuaWQsaT1zLm51bUFyZ3M7bGV0IG89bnVsbCE9PXQ/dC5sZW5ndGg6MDt0aGlzLl9pc1BhdGhPcHx8KHRoaXMuX251bUludmFsaWRQYXRoT1BTPTApO3RoaXMuX2lzUGF0aE9wPXI+PXZlJiZyPD1QZTtpZihzLnZhcmlhYmxlQXJncylvPmkmJmluZm8oYENvbW1hbmQgJHtufTogZXhwZWN0ZWQgWzAsICR7aX1dIGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYCk7ZWxzZXtpZihvIT09aSl7Y29uc3QgZT10aGlzLm5vblByb2Nlc3NlZEFyZ3M7Zm9yKDtvPmk7KXtlLnB1c2godC5zaGlmdCgpKTtvLS19Zm9yKDtvPGkmJjAhPT1lLmxlbmd0aDspe251bGw9PT10JiYodD1bXSk7dC51bnNoaWZ0KGUucG9wKCkpO28rK319aWYobzxpKXtjb25zdCBlPWBjb21tYW5kICR7bn06IGV4cGVjdGVkICR7aX0gYXJncywgYnV0IHJlY2VpdmVkICR7b30gYXJncy5gO2lmKHRoaXMuX2lzUGF0aE9wJiYrK3RoaXMuX251bUludmFsaWRQYXRoT1BTPkV2YWx1YXRvclByZXByb2Nlc3Nvci5NQVhfSU5WQUxJRF9QQVRIX09QUyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgJHtlfWApO3dhcm4oYFNraXBwaW5nICR7ZX1gKTtudWxsIT09dCYmKHQubGVuZ3RoPTApO2NvbnRpbnVlfX10aGlzLnByZXByb2Nlc3NDb21tYW5kKHIsdCk7ZS5mbj1yO2UuYXJncz10O3JldHVybiEwfWlmKGE9PT1vYSlyZXR1cm4hMTtpZihudWxsIT09YSl7bnVsbD09PXQmJih0PVtdKTt0LnB1c2goYSk7aWYodC5sZW5ndGg+MzMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKX19fXByZXByb2Nlc3NDb21tYW5kKGUsdCl7c3dpdGNoKDB8ZSl7Y2FzZSBrZTp0aGlzLnN0YXRlTWFuYWdlci5zYXZlKCk7YnJlYWs7Y2FzZSB5ZTp0aGlzLnN0YXRlTWFuYWdlci5yZXN0b3JlKCk7YnJlYWs7Y2FzZSBxZTp0aGlzLnN0YXRlTWFuYWdlci50cmFuc2Zvcm0odCl9fX1jbGFzcyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihuZXcgU3RyaW5nU3RyZWFtKGUpKX1wYXJzZSgpe2NvbnN0IGU9e2ZuOjAsYXJnczpbXX0sdD17Zm9udFNpemU6MCxmb250TmFtZToiIixmb250Q29sb3I6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpfTt0cnl7Zm9yKDs7KXtlLmFyZ3MubGVuZ3RoPTA7aWYoIXRoaXMucmVhZChlKSlicmVhaztpZigwIT09dGhpcy5zYXZlZFN0YXRlc0RlcHRoKWNvbnRpbnVlO2NvbnN0e2ZuOmEsYXJnczpufT1lO3N3aXRjaCgwfGEpe2Nhc2UgR2U6Y29uc3RbZSxhXT1uO2UgaW5zdGFuY2VvZiBOYW1lJiYodC5mb250TmFtZT1lLm5hbWUpOyJudW1iZXIiPT10eXBlb2YgYSYmYT4wJiYodC5mb250U2l6ZT1hKTticmVhaztjYXNlIGR0OkNvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSXRlbShuLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBtdDpDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JJdGVtKG4sMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGJ0OkNvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkl0ZW0obiwwLHQuZm9udENvbG9yLDApfX19Y2F0Y2goZSl7d2FybihgcGFyc2VEZWZhdWx0QXBwZWFyYW5jZSAtIGlnbm9yaW5nIGVycm9yczogIiR7ZX0iLmApfXJldHVybiB0fX1mdW5jdGlvbiBwYXJzZURlZmF1bHRBcHBlYXJhbmNlKGUpe3JldHVybiBuZXcgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IoZSkucGFyc2UoKX1jbGFzcyBBcHBlYXJhbmNlU3RyZWFtRXZhbHVhdG9yIGV4dGVuZHMgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlKTt0aGlzLnN0cmVhbT1lO3RoaXMueHJlZj10O3RoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlPWE7dGhpcy5yZXNvdXJjZXM9ZS5kaWN0Py5nZXQoIlJlc291cmNlcyIpfXBhcnNlKCl7Y29uc3QgZT17Zm46MCxhcmdzOltdfTtsZXQgdD17c2NhbGVGYWN0b3I6MSxmb250U2l6ZTowLGZvbnROYW1lOiIiLGZvbnRDb2xvcjpuZXcgVWludDhDbGFtcGVkQXJyYXkoMyksZmlsbENvbG9yU3BhY2U6Q29sb3JTcGFjZVV0aWxzLmdyYXl9LGE9ITE7Y29uc3Qgbj1bXTt0cnl7Zm9yKDs7KXtlLmFyZ3MubGVuZ3RoPTA7aWYoYXx8IXRoaXMucmVhZChlKSlicmVhaztjb25zdHtmbjpzLGFyZ3M6cn09ZTtzd2l0Y2goMHxzKXtjYXNlIGtlOm4ucHVzaCh7c2NhbGVGYWN0b3I6dC5zY2FsZUZhY3Rvcixmb250U2l6ZTp0LmZvbnRTaXplLGZvbnROYW1lOnQuZm9udE5hbWUsZm9udENvbG9yOnQuZm9udENvbG9yLnNsaWNlKCksZmlsbENvbG9yU3BhY2U6dC5maWxsQ29sb3JTcGFjZX0pO2JyZWFrO2Nhc2UgeWU6dD1uLnBvcCgpfHx0O2JyZWFrO2Nhc2UgUWU6dC5zY2FsZUZhY3Rvcio9TWF0aC5oeXBvdChyWzBdLHJbMV0pO2JyZWFrO2Nhc2UgR2U6Y29uc3RbZSxzXT1yO2UgaW5zdGFuY2VvZiBOYW1lJiYodC5mb250TmFtZT1lLm5hbWUpOyJudW1iZXIiPT10eXBlb2YgcyYmcz4wJiYodC5mb250U2l6ZT1zKnQuc2NhbGVGYWN0b3IpO2JyZWFrO2Nhc2Ugb3Q6dC5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOnJbMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnRoaXMuX2xvY2FsQ29sb3JTcGFjZUNhY2hlfSk7YnJlYWs7Y2FzZSBjdDp0LmZpbGxDb2xvclNwYWNlLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgZHQ6Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIG10OkNvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgYnQ6Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBldDpjYXNlIHR0OmNhc2UgYXQ6Y2FzZSBudDphPSEwfX19Y2F0Y2goZSl7d2FybihgcGFyc2VBcHBlYXJhbmNlU3RyZWFtIC0gaWdub3JpbmcgZXJyb3JzOiAiJHtlfSIuYCl9dGhpcy5zdHJlYW0ucmVzZXQoKTtkZWxldGUgdC5zY2FsZUZhY3RvcjtkZWxldGUgdC5maWxsQ29sb3JTcGFjZTtyZXR1cm4gdH1nZXQgX2xvY2FsQ29sb3JTcGFjZUNhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfbG9jYWxDb2xvclNwYWNlQ2FjaGUiLG5ldyBMb2NhbENvbG9yU3BhY2VDYWNoZSl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmfSkpfX1mdW5jdGlvbiBnZXRQZGZDb2xvcihlLHQpe2lmKGVbMF09PT1lWzFdJiZlWzFdPT09ZVsyXSl7cmV0dXJuYCR7bnVtYmVyVG9TdHJpbmcoZVswXS8yNTUpfSAke3Q/ImciOiJHIn1gfXJldHVybiBBcnJheS5mcm9tKGUsZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKS5qb2luKCIgIikrIiAiKyh0PyJyZyI6IlJHIil9Y2xhc3MgRmFrZVVuaWNvZGVGb250e3N0YXRpYyN6ZT0xO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy54cmVmPWU7dGhpcy53aWR0aHM9bnVsbDt0aGlzLmZpcnN0Q2hhcj0xLzA7dGhpcy5sYXN0Q2hhcj0tMS8wO3RoaXMuZm9udEZhbWlseT10O2NvbnN0IGE9bmV3IE9mZnNjcmVlbkNhbnZhcygxLDEpO3RoaXMuY3R4TWVhc3VyZT1hLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSk7dGhpcy5mb250TmFtZT1OYW1lLmdldChgSW52YWxpZFBERmpzRm9udF8ke3R9XyR7RmFrZVVuaWNvZGVGb250LiN6ZSsrfWApfWdldCBmb250RGVzY3JpcHRvclJlZigpe2lmKCFGYWtlVW5pY29kZUZvbnQuX2ZvbnREZXNjcmlwdG9yUmVmKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250RGVzY3JpcHRvciIpO2Uuc2V0KCJGb250TmFtZSIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIkZvbnRGYW1pbHkiLCJNeXJpYWRQcm8gUmVndWxhciIpO2Uuc2V0KCJGb250QkJveCIsWzAsMCwwLDBdKTtlLnNldElmTmFtZSgiRm9udFN0cmV0Y2giLCJOb3JtYWwiKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250Iik7ZS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJDSURGb250VHlwZTAiKTtlLnNldElmTmFtZSgiQ0lEVG9HSURNYXAiLCJJZGVudGl0eSIpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10sYT1bLi4udGhpcy53aWR0aHNdLnNvcnQoKTtsZXQgbj1udWxsLHM9bnVsbDtmb3IoY29uc3RbZSxyXW9mIGEpaWYobilpZihlPT09bitzLmxlbmd0aClzLnB1c2gocik7ZWxzZXt0LnB1c2gobixzKTtuPWU7cz1bcl19ZWxzZXtuPWU7cz1bcl19biYmdC5wdXNoKG4scyk7ZS5zZXQoIlciLHQpO2NvbnN0IHI9bmV3IERpY3QodGhpcy54cmVmKTtyLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO3Iuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7ci5zZXQoIlN1cHBsZW1lbnQiLDApO2Uuc2V0KCJDSURTeXN0ZW1JbmZvIixyKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IGJhc2VGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250Iik7ZS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJUeXBlMCIpO2Uuc2V0SWZOYW1lKCJFbmNvZGluZyIsIklkZW50aXR5LUgiKTtlLnNldCgiRGVzY2VuZGFudEZvbnRzIixbdGhpcy5kZXNjZW5kYW50Rm9udFJlZl0pO2Uuc2V0SWZOYW1lKCJUb1VuaWNvZGUiLCJJZGVudGl0eS1IIik7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KHRoaXMuZm9udE5hbWUubmFtZSx0aGlzLmJhc2VGb250UmVmKTtlLnNldCgiRm9udCIsdCk7cmV0dXJuIGV9X2NyZWF0ZUNvbnRleHQoKXt0aGlzLndpZHRocz1uZXcgTWFwO3RoaXMuY3R4TWVhc3VyZS5mb250PWAxMDAwcHggJHt0aGlzLmZvbnRGYW1pbHl9YDtyZXR1cm4gdGhpcy5jdHhNZWFzdXJlfWNyZWF0ZUZvbnRSZXNvdXJjZXMoZSl7Y29uc3QgdD10aGlzLl9jcmVhdGVDb250ZXh0KCk7Zm9yKGNvbnN0IGEgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSlmb3IoY29uc3QgZSBvZiBhLnNwbGl0KCIiKSl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoMCk7aWYodGhpcy53aWR0aHMuaGFzKGEpKWNvbnRpbnVlO2NvbnN0IG49dC5tZWFzdXJlVGV4dChlKSxzPU1hdGguY2VpbChuLndpZHRoKTt0aGlzLndpZHRocy5zZXQoYSxzKTt0aGlzLmZpcnN0Q2hhcj1NYXRoLm1pbihhLHRoaXMuZmlyc3RDaGFyKTt0aGlzLmxhc3RDaGFyPU1hdGgubWF4KGEsdGhpcy5sYXN0Q2hhcil9cmV0dXJuIHRoaXMucmVzb3VyY2VzfXN0YXRpYyBnZXRGaXJzdFBvc2l0aW9uSW5mbyhlLHQsYSl7Y29uc3RbbixpLG8sbF09ZTtsZXQgZj1vLW4sYz1sLWk7dCUxODAhPTAmJihbZixjXT1bYyxmXSk7Y29uc3QgaD1zKmE7cmV0dXJue2Nvb3JkczpbMCxjK3IqYS1oXSxiYm94OlswLDAsZixjXSxtYXRyaXg6MCE9PXQ/Z2V0Um90YXRpb25NYXRyaXgodCxjLGgpOnZvaWQgMH19Y3JlYXRlQXBwZWFyYW5jZShlLHQsYSxuLGksbyl7Y29uc3QgbD10aGlzLl9jcmVhdGVDb250ZXh0KCksZj1bXTtsZXQgYz0tMS8wO2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1xyXG4/fFxuLykpe2YucHVzaCh0KTtjb25zdCBlPWwubWVhc3VyZVRleHQodCkud2lkdGg7Yz1NYXRoLm1heChjLGUpO2Zvcihjb25zdCBlIG9mIGNvZGVQb2ludEl0ZXIodCkpe2NvbnN0IHQ9U3RyaW5nLmZyb21Db2RlUG9pbnQoZSk7bGV0IGE9dGhpcy53aWR0aHMuZ2V0KGUpO2lmKHZvaWQgMD09PWEpe2NvbnN0IG49bC5tZWFzdXJlVGV4dCh0KTthPU1hdGguY2VpbChuLndpZHRoKTt0aGlzLndpZHRocy5zZXQoZSxhKTt0aGlzLmZpcnN0Q2hhcj1NYXRoLm1pbihlLHRoaXMuZmlyc3RDaGFyKTt0aGlzLmxhc3RDaGFyPU1hdGgubWF4KGUsdGhpcy5sYXN0Q2hhcil9fX1jKj1uLzFlMztjb25zdFtoLHUsbSxwXT10O2xldCBkPW0taCxnPXAtdTthJTE4MCE9MCYmKFtkLGddPVtnLGRdKTtsZXQgYj0xO2M+ZCYmKGI9ZC9jKTtsZXQgdz0xO2NvbnN0IGo9cypuLGs9cipuLHk9aipmLmxlbmd0aDt5PmcmJih3PWcveSk7Y29uc3QgcT1uKk1hdGgubWluKGIsdyksdj1bInEiLGAwIDAgJHtudW1iZXJUb1N0cmluZyhkKX0gJHtudW1iZXJUb1N0cmluZyhnKX0gcmUgVyBuYCwiQlQiLGAxIDAgMCAxIDAgJHtudW1iZXJUb1N0cmluZyhnK2spfSBUbSAwIFRjICR7Z2V0UGRmQ29sb3IoaSwhMCl9YCxgLyR7dGhpcy5mb250TmFtZS5uYW1lfSAke251bWJlclRvU3RyaW5nKHEpfSBUZmBdLHtyZXNvdXJjZXM6U309dGhpcztpZigxIT09KG89Im51bWJlciI9PXR5cGVvZiBvJiZvPj0wJiZvPD0xP286MSkpe3YucHVzaCgiL1IwIGdzIik7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpLHQ9bmV3IERpY3QodGhpcy54cmVmKTt0LnNldCgiY2EiLG8pO3Quc2V0KCJDQSIsbyk7dC5zZXRJZk5hbWUoIlR5cGUiLCJFeHRHU3RhdGUiKTtlLnNldCgiUjAiLHQpO1Muc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IHg9bnVtYmVyVG9TdHJpbmcoaik7Zm9yKGNvbnN0IGUgb2YgZil2LnB1c2goYDAgLSR7eH0gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7di5wdXNoKCJFVCIsIlEiKTtjb25zdCBDPXYuam9pbigiXG4iKSxGPW5ldyBEaWN0KHRoaXMueHJlZik7Ri5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7Ri5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7Ri5zZXQoIkJCb3giLFswLDAsZCxnXSk7Ri5zZXQoIkxlbmd0aCIsQy5sZW5ndGgpO0Yuc2V0KCJSZXNvdXJjZXMiLFMpO2lmKGEpe2NvbnN0IGU9Z2V0Um90YXRpb25NYXRyaXgoYSxkLGcpO0Yuc2V0KCJNYXRyaXgiLGUpfWNvbnN0IFQ9bmV3IFN0cmluZ1N0cmVhbShDKTtULmRpY3Q9RjtyZXR1cm4gVH19Y29uc3QgUmk9WyJtL2QiLCJtL2QveXkiLCJtbS9kZC95eSIsIm1tL3l5IiwiZC1tbW0iLCJkLW1tbS15eSIsImRkLW1tbS15eSIsInl5LW1tLWRkIiwibW1tLXl5IiwibW1tbS15eSIsIm1tbSBkLCB5eXl5IiwibW1tbSBkLCB5eXl5IiwibS9kL3l5IGg6TU0gdHQiLCJtL2QveXkgSEg6TU0iXSxIaT1bIkhIOk1NIiwiaDpNTSB0dCIsIkhIOk1NOnNzIiwiaDpNTTpzcyB0dCJdO2NsYXNzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMucm9vdD1lO3RoaXMueHJlZj10O3RoaXMuX3R5cGU9YX1nZXRBbGwoZT0hMSl7Y29uc3QgdD1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIHQ7Y29uc3QgYT10aGlzLnhyZWYsbj1uZXcgUmVmU2V0O3RoaXMucm9vdCBpbnN0YW5jZW9mIFJlZiYmbi5wdXQodGhpcy5yb290KTtjb25zdCBzPVt0aGlzLnJvb3RdO2Zvcig7cy5sZW5ndGg+MDspe2NvbnN0IHI9YS5mZXRjaElmUmVmKHMuc2hpZnQoKSk7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aWYoci5oYXMoIktpZHMiKSl7Y29uc3QgZT1yLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO2Zvcihjb25zdCB0IG9mIGUpe2lmKHQgaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKHQpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgRHVwbGljYXRlIGVudHJ5IGluICIke3RoaXMuX3R5cGV9IiB0cmVlLmApO24ucHV0KHQpfXMucHVzaCh0KX1jb250aW51ZX1jb25zdCBpPXIuZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBuPTAscz1pLmxlbmd0aDtuPHM7bis9Mil0LnNldChhLmZldGNoSWZSZWYoaVtuXSksZT9pW24rMV06YS5mZXRjaElmUmVmKGlbbisxXSkpfXJldHVybiB0fWdldFJhdyhlKXtpZighdGhpcy5yb290KXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy54cmVmO2xldCBhPXQuZmV0Y2hJZlJlZih0aGlzLnJvb3QpLG49MDtmb3IoO2EuaGFzKCJLaWRzIik7KXtpZigrK24+MTApe3dhcm4oYFNlYXJjaCBkZXB0aCBsaW1pdCByZWFjaGVkIGZvciAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtyZXR1cm4gbnVsbH1jb25zdCBzPWEuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkocykpcmV0dXJuIG51bGw7bGV0IHI9MCxpPXMubGVuZ3RoLTE7Zm9yKDtyPD1pOyl7Y29uc3Qgbj1yK2k+PjEsbz10LmZldGNoSWZSZWYoc1tuXSksbD1vLmdldCgiTGltaXRzIik7aWYoZTx0LmZldGNoSWZSZWYobFswXSkpaT1uLTE7ZWxzZXtpZighKGU+dC5mZXRjaElmUmVmKGxbMV0pKSl7YT1vO2JyZWFrfXI9bisxfX1pZihyPmkpcmV0dXJuIG51bGx9Y29uc3Qgcz1hLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KHMpKXtsZXQgYT0wLG49cy5sZW5ndGgtMjtmb3IoO2E8PW47KXtjb25zdCByPWErbj4+MSxpPXIrKDEmciksbz10LmZldGNoSWZSZWYoc1tpXSk7aWYoZTxvKW49aS0yO2Vsc2V7aWYoIShlPm8pKXJldHVybiBzW2krMV07YT1pKzJ9fX1yZXR1cm4gbnVsbH1nZXQoZSl7cmV0dXJuIHRoaXMueHJlZi5mZXRjaElmUmVmKHRoaXMuZ2V0UmF3KGUpKX19Y2xhc3MgTmFtZVRyZWUgZXh0ZW5kcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LCJOYW1lcyIpfX1jbGFzcyBOdW1iZXJUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTnVtcyIpfX1mdW5jdGlvbiBjbGVhckdsb2JhbENhY2hlcygpeyFmdW5jdGlvbiBjbGVhclBhdHRlcm5DYWNoZXMoKXtWYT1PYmplY3QuY3JlYXRlKG51bGwpfSgpOyFmdW5jdGlvbiBjbGVhclByaW1pdGl2ZUNhY2hlcygpe2xhPU9iamVjdC5jcmVhdGUobnVsbCk7ZmE9T2JqZWN0LmNyZWF0ZShudWxsKTtjYT1PYmplY3QuY3JlYXRlKG51bGwpfSgpOyFmdW5jdGlvbiBjbGVhclVuaWNvZGVDYWNoZXMoKXt3bi5jbGVhcigpfSgpO0pCaWcyQ0NJVFRGYXhJbWFnZS5jbGVhbnVwKCk7SnB4SW1hZ2UuY2xlYW51cCgpfWZ1bmN0aW9uIHBpY2tQbGF0Zm9ybUl0ZW0oZSl7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IHQgb2ZbIlVGIiwiRiIsIlVuaXgiLCJNYWMiLCJET1MiXSlpZihlLmhhcyh0KSlyZXR1cm4gZS5nZXQodCk7cmV0dXJuIG51bGx9Y2xhc3MgRmlsZVNwZWN7I0xlPSExO2NvbnN0cnVjdG9yKGUsdD0hMSl7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7ZS5oYXMoIlJGIikmJndhcm4oIlJlbGF0ZWQgZmlsZSBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpO3R8fChlLmhhcygiRUYiKT90aGlzLiNMZT0hMDp3YXJuKCJOb24tZW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpKX19Z2V0IGZpbGVuYW1lKCl7Y29uc3QgZT1waWNrUGxhdGZvcm1JdGVtKHRoaXMucm9vdCk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlLCEwKS5yZXBsYWNlQWxsKCJcXFxcIiwiXFwiKS5yZXBsYWNlQWxsKCJcXC8iLCIvIikucmVwbGFjZUFsbCgiXFwiLCIvIik6IiJ9Z2V0IGNvbnRlbnQoKXtpZighdGhpcy4jTGUpcmV0dXJuIG51bGw7Y29uc3QgZT1waWNrUGxhdGZvcm1JdGVtKHRoaXMucm9vdD8uZ2V0KCJFRiIpKTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSlyZXR1cm4gZS5nZXRCeXRlcygpO3dhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpO3JldHVybiBudWxsfWdldCBkZXNjcmlwdGlvbigpe2NvbnN0IGU9dGhpcy5yb290Py5nZXQoIkRlc2MiKTtyZXR1cm4gZSYmInN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOiIifWdldCBzZXJpYWxpemFibGUoKXtjb25zdHtmaWxlbmFtZTplLGNvbnRlbnQ6dCxkZXNjcmlwdGlvbjphfT10aGlzO3JldHVybntyYXdGaWxlbmFtZTplLGZpbGVuYW1lOihuPWUsbi5zdWJzdHJpbmcobi5sYXN0SW5kZXhPZigiLyIpKzEpKXx8InVubmFtZWQiLGNvbnRlbnQ6dCxkZXNjcmlwdGlvbjphfTt2YXIgbn19Y29uc3QgQmk9MCxEaT0tMixNaT0tMyxOaT0tNCxQaT0tNSxFaT0tNixfaT0tOTtmdW5jdGlvbiBpc1doaXRlc3BhY2UoZSx0KXtjb25zdCBhPWVbdF07cmV0dXJuIiAiPT09YXx8IlxuIj09PWF8fCJcciI9PT1hfHwiXHQiPT09YX1jbGFzcyBYTUxQYXJzZXJCYXNle19yZXNvbHZlRW50aXRpZXMoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvJihbXjtdKyk7L2csKGUsdCk9PntpZigiI3giPT09dC5zdWJzdHJpbmcoMCwyKSlyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQodC5zdWJzdHJpbmcoMiksMTYpKTtpZigiIyI9PT10LnN1YnN0cmluZygwLDEpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygxKSwxMCkpO3N3aXRjaCh0KXtjYXNlImx0IjpyZXR1cm4iPCI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJxdW90IjpyZXR1cm4nIic7Y2FzZSJhcG9zIjpyZXR1cm4iJyJ9cmV0dXJuIHRoaXMub25SZXNvbHZlRW50aXR5KHQpfSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGE9W107bGV0IG49dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO248ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLG4pOykrK259Zm9yKDtuPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsbikmJiI+IiE9PWVbbl0mJiIvIiE9PWVbbl07KSsrbjtjb25zdCBzPWUuc3Vic3RyaW5nKHQsbik7c2tpcFdzKCk7Zm9yKDtuPGUubGVuZ3RoJiYiPiIhPT1lW25dJiYiLyIhPT1lW25dJiYiPyIhPT1lW25dOyl7c2tpcFdzKCk7bGV0IHQ9IiIscz0iIjtmb3IoO248ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxuKSYmIj0iIT09ZVtuXTspe3QrPWVbbl07KytufXNraXBXcygpO2lmKCI9IiE9PWVbbl0pcmV0dXJuIG51bGw7KytuO3NraXBXcygpO2NvbnN0IHI9ZVtuXTtpZignIichPT1yJiYiJyIhPT1yKXJldHVybiBudWxsO2NvbnN0IGk9ZS5pbmRleE9mKHIsKytuKTtpZihpPDApcmV0dXJuIG51bGw7cz1lLnN1YnN0cmluZyhuLGkpO2EucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhzKX0pO249aSsxO3NraXBXcygpfXJldHVybntuYW1lOnMsYXR0cmlidXRlczphLHBhcnNlZDpuLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBhPXQ7Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiI/IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCBuPWUuc3Vic3RyaW5nKHQsYSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7YTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsYSk7KSsrYX0oKTtjb25zdCBzPWE7Zm9yKDthPGUubGVuZ3RoJiYoIj8iIT09ZVthXXx8Ij4iIT09ZVthKzFdKTspKythO3JldHVybntuYW1lOm4sdmFsdWU6ZS5zdWJzdHJpbmcocyxhKSxwYXJzZWQ6YS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBhPXQ7aWYoIjwiPT09ZVt0XSl7KythO2xldCB0O3N3aXRjaChlW2FdKXtjYXNlIi8iOisrYTt0PWUuaW5kZXhPZigiPiIsYSk7aWYodDwwKXt0aGlzLm9uRXJyb3IoX2kpO3JldHVybn10aGlzLm9uRW5kRWxlbWVudChlLnN1YnN0cmluZyhhLHQpKTthPXQrMTticmVhaztjYXNlIj8iOisrYTtjb25zdCBuPXRoaXMuX3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsYSk7aWYoIj8+IiE9PWUuc3Vic3RyaW5nKGErbi5wYXJzZWQsYStuLnBhcnNlZCsyKSl7dGhpcy5vbkVycm9yKE1pKTtyZXR1cm59dGhpcy5vblBpKG4ubmFtZSxuLnZhbHVlKTthKz1uLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGErMSxhKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixhKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFBpKTtyZXR1cm59dGhpcy5vbkNvbW1lbnQoZS5zdWJzdHJpbmcoYSszLHQpKTthPXQrM31lbHNlIGlmKCJbQ0RBVEFbIj09PWUuc3Vic3RyaW5nKGErMSxhKzgpKXt0PWUuaW5kZXhPZigiXV0+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKERpKTtyZXR1cm59dGhpcy5vbkNkYXRhKGUuc3Vic3RyaW5nKGErOCx0KSk7YT10KzN9ZWxzZXtpZigiRE9DVFlQRSIhPT1lLnN1YnN0cmluZyhhKzEsYSs4KSl7dGhpcy5vbkVycm9yKEVpKTtyZXR1cm59e2NvbnN0IG49ZS5pbmRleE9mKCJbIixhKzgpO2xldCBzPSExO3Q9ZS5pbmRleE9mKCI+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKE5pKTtyZXR1cm59aWYobj4wJiZ0Pm4pe3Q9ZS5pbmRleE9mKCJdPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihOaSk7cmV0dXJufXM9ITB9Y29uc3Qgcj1lLnN1YnN0cmluZyhhKzgsdCsocz8xOjApKTt0aGlzLm9uRG9jdHlwZShyKTthPXQrKHM/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCBzPXRoaXMuX3BhcnNlQ29udGVudChlLGEpO2lmKG51bGw9PT1zKXt0aGlzLm9uRXJyb3IoRWkpO3JldHVybn1sZXQgcj0hMTtpZigiLz4iPT09ZS5zdWJzdHJpbmcoYStzLnBhcnNlZCxhK3MucGFyc2VkKzIpKXI9ITA7ZWxzZSBpZigiPiIhPT1lLnN1YnN0cmluZyhhK3MucGFyc2VkLGErcy5wYXJzZWQrMSkpe3RoaXMub25FcnJvcihfaSk7cmV0dXJufXRoaXMub25CZWdpbkVsZW1lbnQocy5uYW1lLHMuYXR0cmlidXRlcyxyKTthKz1zLnBhcnNlZCsocj8yOjEpfX1lbHNle2Zvcig7YTxlLmxlbmd0aCYmIjwiIT09ZVthXTspYSsrO2NvbnN0IG49ZS5zdWJzdHJpbmcodCxhKTt0aGlzLm9uVGV4dCh0aGlzLl9yZXNvbHZlRW50aXRpZXMobikpfXQ9YX19b25SZXNvbHZlRW50aXR5KGUpe3JldHVybmAmJHtlfTtgfW9uUGkoZSx0KXt9b25Db21tZW50KGUpe31vbkNkYXRhKGUpe31vbkRvY3R5cGUoZSl7fW9uVGV4dChlKXt9b25CZWdpbkVsZW1lbnQoZSx0LGEpe31vbkVuZEVsZW1lbnQoZSl7fW9uRXJyb3IoZSl7fX1jbGFzcyBTaW1wbGVET01Ob2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5ub2RlTmFtZT1lO3RoaXMubm9kZVZhbHVlPXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmVudE5vZGUiLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5bMF19Z2V0IG5leHRTaWJsaW5nKCl7Y29uc3QgZT10aGlzLnBhcmVudE5vZGUuY2hpbGROb2RlcztpZighZSlyZXR1cm47Y29uc3QgdD1lLmluZGV4T2YodGhpcyk7cmV0dXJuLTEhPT10P2VbdCsxXTp2b2lkIDB9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz90aGlzLmNoaWxkTm9kZXMubWFwKGU9PmUudGV4dENvbnRlbnQpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz8ubGVuZ3RoPjB9c2VhcmNoTm9kZShlLHQpe2lmKHQ+PWUubGVuZ3RoKXJldHVybiB0aGlzO2NvbnN0IGE9ZVt0XTtpZihhLm5hbWUuc3RhcnRzV2l0aCgiIyIpJiZ0PGUubGVuZ3RoLTEpcmV0dXJuIHRoaXMuc2VhcmNoTm9kZShlLHQrMSk7Y29uc3Qgbj1bXTtsZXQgcz10aGlzO2Zvcig7Oyl7aWYoYS5uYW1lPT09cy5ub2RlTmFtZSl7aWYoMCE9PWEucG9zKXtpZigwPT09bi5sZW5ndGgpcmV0dXJuIG51bGw7e2NvbnN0W3JdPW4ucG9wKCk7bGV0IGk9MDtmb3IoY29uc3QgbiBvZiByLmNoaWxkTm9kZXMpaWYoYS5uYW1lPT09bi5ub2RlTmFtZSl7aWYoaT09PWEucG9zKXJldHVybiBuLnNlYXJjaE5vZGUoZSx0KzEpO2krK31yZXR1cm4gcy5zZWFyY2hOb2RlKGUsdCsxKX19e2NvbnN0IGE9cy5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09YSlyZXR1cm4gYX19aWYocy5jaGlsZE5vZGVzPy5sZW5ndGg+MCl7bi5wdXNoKFtzLDBdKTtzPXMuY2hpbGROb2Rlc1swXX1lbHNle2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1uLmxlbmd0aDspe2NvbnN0W2UsdF09bi5wb3AoKSxhPXQrMTtpZihhPGUuY2hpbGROb2Rlcy5sZW5ndGgpe24ucHVzaChbZSxhXSk7cz1lLmNoaWxkTm9kZXNbYV07YnJlYWt9fWlmKDA9PT1uLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2UucHVzaChgPCR7dGhpcy5ub2RlTmFtZX1gKTtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaChgICR7dC5uYW1lfT0iJHtlbmNvZGVUb1htbFN0cmluZyh0LnZhbHVlKX0iYCk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKGA8LyR7dGhpcy5ub2RlTmFtZX0+YCl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goYD4ke2VuY29kZVRvWG1sU3RyaW5nKHRoaXMubm9kZVZhbHVlKX08LyR7dGhpcy5ub2RlTmFtZX0+YCk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXMubm9kZVZhbHVlKSl9fWNsYXNzIFNpbXBsZVhNTFBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3Ioe2hhc0F0dHJpYnV0ZXM6ZT0hMSxsb3dlckNhc2VOYW1lOnQ9ITF9KXtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPUJpO3RoaXMuX2hhc0F0dHJpYnV0ZXM9ZTt0aGlzLl9sb3dlckNhc2VOYW1lPXR9cGFyc2VGcm9tU3RyaW5nKGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD1bXTt0aGlzLl9zdGFjaz1bXTt0aGlzLl9lcnJvckNvZGU9Qmk7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGUhPT1CaSlyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsYSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCBuPW5ldyBTaW1wbGVET01Ob2RlKGUpO24uY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYobi5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKG4pO2lmKCFhKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PW4uY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX1jbGFzcyBNZXRhZGF0YVBhcnNlcntjb25zdHJ1Y3RvcihlKXtlPXRoaXMuX3JlcGFpcihlKTtjb25zdCB0PW5ldyBTaW1wbGVYTUxQYXJzZXIoe2xvd2VyQ2FzZU5hbWU6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7dGhpcy5fbWV0YWRhdGFNYXA9bmV3IE1hcDt0aGlzLl9kYXRhPWU7dCYmdGhpcy5fcGFyc2UodCl9X3JlcGFpcihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eW148XSsvLCIiKS5yZXBsYWNlQWxsKC8+XFwzNzZcXDM3NyhbXjxdKykvZyxmdW5jdGlvbihlLHQpe2NvbnN0IGE9dC5yZXBsYWNlQWxsKC9cXChbMC0zXSkoWzAtN10pKFswLTddKS9nLGZ1bmN0aW9uKGUsdCxhLG4pe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCphKzEqbil9KS5yZXBsYWNlQWxsKC8mKGFtcHxhcG9zfGd0fGx0fHF1b3QpOy9nLGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJhcG9zIjpyZXR1cm4iJyI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UibHQiOnJldHVybiI8IjtjYXNlInF1b3QiOnJldHVybiciJ310aHJvdyBuZXcgRXJyb3IoYF9yZXBhaXI6ICR7dH0gaXNuJ3QgZGVmaW5lZC5gKX0pLG49WyI+Il07Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqYS5jaGFyQ29kZUF0KGUpK2EuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9uLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6bi5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIG4uam9pbigiIil9KX1fZ2V0U2VxdWVuY2UoZSl7Y29uc3QgdD1lLm5vZGVOYW1lO3JldHVybiJyZGY6YmFnIiE9PXQmJiJyZGY6c2VxIiE9PXQmJiJyZGY6YWx0IiE9PXQ/bnVsbDplLmNoaWxkTm9kZXMuZmlsdGVyKGU9PiJyZGY6bGkiPT09ZS5ub2RlTmFtZSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMsYT10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsYS5tYXAoZT0+ZS50ZXh0Q29udGVudC50cmltKCkpKX1fcGFyc2UoZSl7bGV0IHQ9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoInJkZjpyZGYiIT09dC5ub2RlTmFtZSl7dD10LmZpcnN0Q2hpbGQ7Zm9yKDt0JiYicmRmOnJkZiIhPT10Lm5vZGVOYW1lOyl0PXQubmV4dFNpYmxpbmd9aWYodCYmInJkZjpyZGYiPT09dC5ub2RlTmFtZSYmdC5oYXNDaGlsZE5vZGVzKCkpZm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWlmKCJyZGY6ZGVzY3JpcHRpb24iPT09ZS5ub2RlTmFtZSlmb3IoY29uc3QgdCBvZiBlLmNoaWxkTm9kZXMpe2NvbnN0IGU9dC5ub2RlTmFtZTtzd2l0Y2goZSl7Y2FzZSIjdGV4dCI6Y29udGludWU7Y2FzZSJkYzpjcmVhdG9yIjpjYXNlImRjOnN1YmplY3QiOnRoaXMuX3BhcnNlQXJyYXkodCk7Y29udGludWV9dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUsdC50ZXh0Q29udGVudC50cmltKCkpfX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3BhcnNlZERhdGE6dGhpcy5fbWV0YWRhdGFNYXAscmF3RGF0YTp0aGlzLl9kYXRhfX19Y29uc3Qgemk9MSxYaT0yLFdpPTMsS2k9NCxHaT01O2NsYXNzIFN0cnVjdFRyZWVSb290e2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLnhyZWY9ZTt0aGlzLmRpY3Q9dDt0aGlzLnJlZj1hIGluc3RhbmNlb2YgUmVmP2E6bnVsbDt0aGlzLnJvbGVNYXA9bmV3IE1hcDt0aGlzLnN0cnVjdFBhcmVudElkcz1udWxsO3RoaXMua2lkUmVmVG9Qb3NpdGlvbj12b2lkIDA7dGhpcy5wYXJlbnRUcmVlPW51bGx9Z2V0S2lkUG9zaXRpb24oZSl7aWYodm9pZCAwPT09dGhpcy5raWRSZWZUb1Bvc2l0aW9uKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIksiKTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PXRoaXMua2lkUmVmVG9Qb3NpdGlvbj1uZXcgTWFwO2ZvcihsZXQgYT0wLG49ZS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1lW2FdO24mJnQuc2V0KG4udG9TdHJpbmcoKSxhKX19ZWxzZSB0aGlzLmtpZFJlZlRvUG9zaXRpb249ZSBpbnN0YW5jZW9mIERpY3Q/bmV3IE1hcChbW2Uub2JqSWQsMF1dKTplP251bGw6bmV3IE1hcH1yZXR1cm4gdGhpcy5raWRSZWZUb1Bvc2l0aW9uP3RoaXMua2lkUmVmVG9Qb3NpdGlvbi5nZXQoZSk/P05hTjotMX1pbml0KCl7dGhpcy5yZWFkUm9sZU1hcCgpO2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUGFyZW50VHJlZSIpO2UmJih0aGlzLnBhcmVudFRyZWU9bmV3IE51bWJlclRyZWUoZSx0aGlzLnhyZWYpKX0jVWUoZSx0LGEpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZil8fHQ8MClyZXR1cm47dGhpcy5zdHJ1Y3RQYXJlbnRJZHN8fD1uZXcgUmVmU2V0Q2FjaGU7bGV0IG49dGhpcy5zdHJ1Y3RQYXJlbnRJZHMuZ2V0KGUpO2lmKCFuKXtuPVtdO3RoaXMuc3RydWN0UGFyZW50SWRzLnB1dChlLG4pfW4ucHVzaChbdCxhXSl9YWRkQW5ub3RhdGlvbklkVG9QYWdlKGUsdCl7dGhpcy4jVWUoZSx0LEtpKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgZSlhIGluc3RhbmNlb2YgTmFtZSYmdGhpcy5yb2xlTWFwLnNldCh0LGEubmFtZSl9c3RhdGljIGFzeW5jIGNhbkNyZWF0ZVN0cnVjdHVyZVRyZWUoe2NhdGFsb2dSZWY6ZSxwZGZNYW5hZ2VyOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6YX0pe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oIkNhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogbm8gY2F0YWxvZyByZWZlcmVuY2UuIik7cmV0dXJuITF9bGV0IG49MCxzPSEwO2Zvcihjb25zdFtlLHJdb2YgYSl7Y29uc3R7cmVmOmF9PWF3YWl0IHQuZ2V0UGFnZShlKTtpZighKGEgaW5zdGFuY2VvZiBSZWYpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHtlfSBoYXMgbm8gcmVmLmApO3M9ITA7YnJlYWt9Zm9yKGNvbnN0IGUgb2YgcilpZihlLmFjY2Vzc2liaWxpdHlEYXRhPy50eXBlKXtlLnBhcmVudFRyZWVJZD1uKys7cz0hMX19aWYocyl7Zm9yKGNvbnN0IGUgb2YgYS52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBlKWRlbGV0ZSB0LnBhcmVudFRyZWVJZDtyZXR1cm4hMX1yZXR1cm4hMH1zdGF0aWMgYXN5bmMgY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSx4cmVmOnQsY2F0YWxvZ1JlZjphLHBkZk1hbmFnZXI6bixjaGFuZ2VzOnN9KXtjb25zdCByPWF3YWl0IG4uZW5zdXJlQ2F0YWxvZygiY2xvbmVEaWN0IiksaT1uZXcgUmVmU2V0Q2FjaGU7aS5wdXQoYSxyKTtjb25zdCBvPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7ci5zZXQoIlN0cnVjdFRyZWVSb290IixvKTtjb25zdCBsPW5ldyBEaWN0KHQpO2wuc2V0KCJUeXBlIixOYW1lLmdldCgiU3RydWN0VHJlZVJvb3QiKSk7Y29uc3QgZj10LmdldE5ld1RlbXBvcmFyeVJlZigpO2wuc2V0KCJQYXJlbnRUcmVlIixmKTtjb25zdCBjPVtdO2wuc2V0KCJLIixjKTtpLnB1dChvLGwpO2NvbnN0IGg9bmV3IERpY3QodCksdT1bXTtoLnNldCgiTnVtcyIsdSk7Y29uc3QgbT1hd2FpdCB0aGlzLiNYZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjpvLHN0cnVjdFRyZWVSb290Om51bGwsa2lkczpjLG51bXM6dSx4cmVmOnQscGRmTWFuYWdlcjpuLGNoYW5nZXM6cyxjYWNoZTppfSk7bC5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixtKTtpLnB1dChmLGgpO2Zvcihjb25zdFtlLHRdb2YgaS5pdGVtcygpKXMucHV0KGUse2RhdGE6dH0pfWFzeW5jIGNhblVwZGF0ZVN0cnVjdFRyZWUoe3BkZk1hbmFnZXI6ZSxuZXdBbm5vdGF0aW9uc0J5UGFnZTp0fSl7aWYoIXRoaXMucmVmKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogbm8gcm9vdCByZWZlcmVuY2UuIik7cmV0dXJuITF9bGV0IGE9dGhpcy5kaWN0LmdldCgiUGFyZW50VHJlZU5leHRLZXkiKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogaW52YWxpZCBuZXh0IGtleS4iKTtyZXR1cm4hMX1jb25zdCBuPXRoaXMuZGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IFBhcmVudFRyZWUgaXNuJ3QgYSBkaWN0LiIpO3JldHVybiExfWNvbnN0IHM9bi5nZXQoIk51bXMiKTtpZighQXJyYXkuaXNBcnJheShzKSl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IG51bXMgaXNuJ3QgYW4gYXJyYXkuIik7cmV0dXJuITF9Y29uc3Qgcj1uZXcgTnVtYmVyVHJlZShuLHRoaXMueHJlZik7Zm9yKGNvbnN0IGEgb2YgdC5rZXlzKCkpe2NvbnN0e3BhZ2VEaWN0OnR9PWF3YWl0IGUuZ2V0UGFnZShhKTtpZighdC5oYXMoIlN0cnVjdFBhcmVudHMiKSljb250aW51ZTtjb25zdCBuPXQuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIU51bWJlci5pc0ludGVnZXIobil8fCFBcnJheS5pc0FycmF5KHIuZ2V0KG4pKSl7d2FybihgQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBwYWdlICR7YX0gaGFzIGEgd3JvbmcgaWQuYCk7cmV0dXJuITF9fWxldCBpPSEwO2Zvcihjb25zdFtuLHNdb2YgdCl7Y29uc3R7cGFnZURpY3Q6dH09YXdhaXQgZS5nZXRQYWdlKG4pO1N0cnVjdFRyZWVSb290LiNXZSh7ZWxlbWVudHM6cyx4cmVmOnRoaXMueHJlZixwYWdlRGljdDp0LG51bWJlclRyZWU6cn0pO2Zvcihjb25zdCBlIG9mIHMpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5hY2Nlc3NpYmlsaXR5RGF0YS5zdHJ1Y3RQYXJlbnQ+PTB8fChlLnBhcmVudFRyZWVJZD1hKyspO2k9ITF9fWlmKGkpe2Zvcihjb25zdCBlIG9mIHQudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSl7ZGVsZXRlIHQucGFyZW50VHJlZUlkO2RlbGV0ZSB0LnN0cnVjdFRyZWVQYXJlbnR9cmV0dXJuITF9cmV0dXJuITB9YXN5bmMgdXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxwZGZNYW5hZ2VyOnQsY2hhbmdlczphfSl7Y29uc3R7cmVmOm4seHJlZjpzfT10aGlzLHI9dGhpcy5kaWN0LmNsb25lKCksaT1uZXcgUmVmU2V0Q2FjaGU7aS5wdXQobixyKTtsZXQgbyxsPXIuZ2V0UmF3KCJQYXJlbnRUcmVlIik7aWYobCBpbnN0YW5jZW9mIFJlZilvPXMuZmV0Y2gobCk7ZWxzZXtvPWw7bD1zLmdldE5ld1RlbXBvcmFyeVJlZigpO3Iuc2V0KCJQYXJlbnRUcmVlIixsKX1vPW8uY2xvbmUoKTtpLnB1dChsLG8pO2xldCBmPW8uZ2V0UmF3KCJOdW1zIiksYz1udWxsO2lmKGYgaW5zdGFuY2VvZiBSZWYpe2M9ZjtmPXMuZmV0Y2goYyl9Zj1mLnNsaWNlKCk7Y3x8by5zZXQoIk51bXMiLGYpO2NvbnN0IGg9YXdhaXQgU3RydWN0VHJlZVJvb3QuI1hlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOm4sc3RydWN0VHJlZVJvb3Q6dGhpcyxraWRzOm51bGwsbnVtczpmLHhyZWY6cyxwZGZNYW5hZ2VyOnQsY2hhbmdlczphLGNhY2hlOml9KTtpZigtMSE9PWgpe3Iuc2V0KCJQYXJlbnRUcmVlTmV4dEtleSIsaCk7YyYmaS5wdXQoYyxmKTtmb3IoY29uc3RbZSx0XW9mIGkuaXRlbXMoKSlhLnB1dChlLHtkYXRhOnR9KX19c3RhdGljIGFzeW5jI1hlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOnQsc3RydWN0VHJlZVJvb3Q6YSxraWRzOm4sbnVtczpzLHhyZWY6cixwZGZNYW5hZ2VyOmksY2hhbmdlczpvLGNhY2hlOmx9KXtjb25zdCBmPU5hbWUuZ2V0KCJPQkpSIik7bGV0IGMsaD0tMTtmb3IoY29uc3RbdSxtXW9mIGUpe2NvbnN0IGU9YXdhaXQgaS5nZXRQYWdlKHUpLHtyZWY6cH09ZSxkPXAgaW5zdGFuY2VvZiBSZWY7Zm9yKGNvbnN0e2FjY2Vzc2liaWxpdHlEYXRhOmkscmVmOmcscGFyZW50VHJlZUlkOmIsc3RydWN0VHJlZVBhcmVudDp3fW9mIG0pe2lmKCFpPy50eXBlKWNvbnRpbnVlO2NvbnN0e3N0cnVjdFBhcmVudDptfT1pO2lmKGEmJk51bWJlci5pc0ludGVnZXIobSkmJm0+PTApe2xldCB0PShjfHw9bmV3IE1hcCkuZ2V0KHUpO2lmKHZvaWQgMD09PXQpe3Q9bmV3IFN0cnVjdFRyZWVQYWdlKGEsZS5wYWdlRGljdCkuY29sbGVjdE9iamVjdHMocCk7Yy5zZXQodSx0KX1jb25zdCBuPXQ/LmdldChtKTtpZihuKXtjb25zdCBlPXIuZmV0Y2gobikuY2xvbmUoKTtTdHJ1Y3RUcmVlUm9vdC4jS2UoZSxpKTtvLnB1dChuLHtkYXRhOmV9KTtjb250aW51ZX19aD1NYXRoLm1heChoLGIpO2NvbnN0IGo9ci5nZXROZXdUZW1wb3JhcnlSZWYoKSxrPW5ldyBEaWN0KHIpO1N0cnVjdFRyZWVSb290LiNLZShrLGkpO2F3YWl0IHRoaXMuI0dlKHtzdHJ1Y3RUcmVlUGFyZW50OncsdGFnRGljdDprLG5ld1RhZ1JlZjpqLHN0cnVjdFRyZWVSb290UmVmOnQsZmFsbGJhY2tLaWRzOm4seHJlZjpyLGNhY2hlOmx9KTtjb25zdCB5PW5ldyBEaWN0KHIpO2suc2V0KCJLIix5KTt5LnNldCgiVHlwZSIsZik7ZCYmeS5zZXQoIlBnIixwKTt5LnNldCgiT2JqIixnKTtsLnB1dChqLGspO3MucHVzaChiLGopfX1yZXR1cm4gaCsxfXN0YXRpYyNLZShlLHt0eXBlOnQsdGl0bGU6YSxsYW5nOm4sYWx0OnMsZXhwYW5kZWQ6cixhY3R1YWxUZXh0Oml9KXtlLnNldCgiUyIsTmFtZS5nZXQodCkpO2EmJmUuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGEpKTtuJiZlLnNldCgiTGFuZyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShuKSk7cyYmZS5zZXQoIkFsdCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShzKSk7ciYmZS5zZXQoIkUiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUocikpO2kmJmUuc2V0KCJBY3R1YWxUZXh0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGkpKX1zdGF0aWMjV2Uoe2VsZW1lbnRzOmUseHJlZjp0LHBhZ2VEaWN0OmEsbnVtYmVyVHJlZTpufSl7Y29uc3Qgcz1uZXcgTWFwO2Zvcihjb25zdCB0IG9mIGUpaWYodC5zdHJ1Y3RUcmVlUGFyZW50SWQpe2NvbnN0IGU9cGFyc2VJbnQodC5zdHJ1Y3RUcmVlUGFyZW50SWQuc3BsaXQoIl9tYyIpWzFdLDEwKTtzLmdldE9ySW5zZXJ0Q29tcHV0ZWQoZSxtYWtlQXJyKS5wdXNoKHQpfWNvbnN0IHI9YS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKSlyZXR1cm47Y29uc3QgaT1uLmdldChyKSx1cGRhdGVFbGVtZW50PShlLGEsbik9Pntjb25zdCByPXMuZ2V0KGUpO2lmKHIpe2NvbnN0IGU9YS5nZXRSYXcoIlAiKSxzPXQuZmV0Y2hJZlJlZihlKTtpZihlIGluc3RhbmNlb2YgUmVmJiZzIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT17cmVmOm4sZGljdDphfTtmb3IoY29uc3QgdCBvZiByKXQuc3RydWN0VHJlZVBhcmVudD1lfXJldHVybiEwfXJldHVybiExfTtmb3IoY29uc3QgZSBvZiBpKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKWNvbnRpbnVlO2NvbnN0IGE9dC5mZXRjaChlKSxuPWEuZ2V0KCJLIik7aWYoTnVtYmVyLmlzSW50ZWdlcihuKSl1cGRhdGVFbGVtZW50KG4sYSxlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobikpZm9yKGxldCBzIG9mIG4pe3M9dC5mZXRjaElmUmVmKHMpO2lmKE51bWJlci5pc0ludGVnZXIocykmJnVwZGF0ZUVsZW1lbnQocyxhLGUpKWJyZWFrO2lmKCEocyBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFpc05hbWUocy5nZXQoIlR5cGUiKSwiTUNSIikpYnJlYWs7Y29uc3Qgbj1zLmdldCgiTUNJRCIpO2lmKE51bWJlci5pc0ludGVnZXIobikmJnVwZGF0ZUVsZW1lbnQobixhLGUpKWJyZWFrfX19c3RhdGljIGFzeW5jI0dlKHtzdHJ1Y3RUcmVlUGFyZW50OmUsdGFnRGljdDp0LG5ld1RhZ1JlZjphLHN0cnVjdFRyZWVSb290UmVmOm4sZmFsbGJhY2tLaWRzOnMseHJlZjpyLGNhY2hlOml9KXtsZXQgbyxsPW51bGw7aWYoZSl7KHtyZWY6bH09ZSk7bz1lLmRpY3QuZ2V0UmF3KCJQIil8fG59ZWxzZSBvPW47dC5zZXQoIlAiLG8pO2NvbnN0IGY9ci5mZXRjaElmUmVmKG8pO2lmKCFmKXtzLnB1c2goYSk7cmV0dXJufWxldCBjPWkuZ2V0KG8pO2lmKCFjKXtjPWYuY2xvbmUoKTtpLnB1dChvLGMpfWNvbnN0IGg9Yy5nZXRSYXcoIksiKTtsZXQgdT1oIGluc3RhbmNlb2YgUmVmP2kuZ2V0KGgpOm51bGw7aWYoIXUpe3U9ci5mZXRjaElmUmVmKGgpO3U9QXJyYXkuaXNBcnJheSh1KT91LnNsaWNlKCk6W2hdO2NvbnN0IGU9ci5nZXROZXdUZW1wb3JhcnlSZWYoKTtjLnNldCgiSyIsZSk7aS5wdXQoZSx1KX1jb25zdCBtPXUuaW5kZXhPZihsKTt1LnNwbGljZShtPj0wP20rMTp1Lmxlbmd0aCwwLGEpfX1jbGFzcyBTdHJ1Y3RFbGVtZW50Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMudHJlZT1lO3RoaXMueHJlZj1lLnhyZWY7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiIix7cm9vdDphfT10aGlzLnRyZWU7cmV0dXJuIGEucm9sZU1hcC5nZXQodCk/P3R9Z2V0IG1hdGhNTCgpe2xldCBlPXRoaXMuZGljdC5nZXQoIkFGIil8fFtdO0FycmF5LmlzQXJyYXkoZSl8fChlPVtlXSk7Zm9yKGxldCB0IG9mIGUpe3Q9dGhpcy54cmVmLmZldGNoSWZSZWYodCk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aWYoIWlzTmFtZSh0LmdldCgiVHlwZSIpLCJGaWxlc3BlYyIpKWNvbnRpbnVlO2lmKCFpc05hbWUodC5nZXQoIkFGUmVsYXRpb25zaGlwIiksIlN1cHBsZW1lbnQiKSljb250aW51ZTtjb25zdCBlPXQuZ2V0KCJFRiIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGE9ZS5nZXQoIlVGIil8fGUuZ2V0KCJGIik7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihpc05hbWUoYS5kaWN0LmdldCgiVHlwZSIpLCJFbWJlZGRlZEZpbGUiKSYmaXNOYW1lKGEuZGljdC5nZXQoIlN1YnR5cGUiKSwiYXBwbGljYXRpb24vbWF0aG1sK3htbCIpKSlyZXR1cm4gc3RyaW5nVG9VVEY4U3RyaW5nKGEuZ2V0U3RyaW5nKCkpfWNvbnN0IHQ9dGhpcy5kaWN0LmdldCgiQSIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0KXtpZihpc05hbWUodC5nZXQoIk8iKSwiTVNGVF9PZmZpY2UiKSl7Y29uc3QgZT10LmdldCgiTVNGVF9NYXRoTUwiKTtyZXR1cm4gZT9zdHJpbmdUb1BERlN0cmluZyhlKTpudWxsfX1yZXR1cm4gbnVsbH1wYXJzZUtpZHMoKXtsZXQgZT1udWxsO2NvbnN0IHQ9dGhpcy5kaWN0LmdldFJhdygiUGciKTt0IGluc3RhbmNlb2YgUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGE9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IHQgb2YgYSl7Y29uc3QgYT10aGlzLnBhcnNlS2lkKGUsdGhpcy54cmVmLmZldGNoSWZSZWYodCkpO2EmJnRoaXMua2lkcy5wdXNoKGEpfWVsc2V7Y29uc3QgdD10aGlzLnBhcnNlS2lkKGUsYSk7dCYmdGhpcy5raWRzLnB1c2godCl9fXBhcnNlS2lkKGUsdCl7aWYoTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm4gdGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZT9udWxsOm5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOnppLG1jaWQ6dCxwYWdlT2JqSWQ6ZX0pO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IGE9dC5nZXRSYXcoIlBnIik7YSBpbnN0YW5jZW9mIFJlZiYmKGU9YS50b1N0cmluZygpKTtjb25zdCBuPXQuZ2V0KCJUeXBlIilpbnN0YW5jZW9mIE5hbWU/dC5nZXQoIlR5cGUiKS5uYW1lOm51bGw7aWYoIk1DUiI9PT1uKXtpZih0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9dC5nZXRSYXcoIlN0bSIpO3JldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpYaSxyZWZPYmpJZDphIGluc3RhbmNlb2YgUmVmP2EudG9TdHJpbmcoKTpudWxsLHBhZ2VPYmpJZDplLG1jaWQ6dC5nZXQoIk1DSUQiKX0pfWlmKCJPQkpSIj09PW4pe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgYT10LmdldFJhdygiT2JqIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOldpLHJlZk9iaklkOmEgaW5zdGFuY2VvZiBSZWY/YS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KX1yZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6R2ksZGljdDp0fSl9fWNsYXNzIFN0cnVjdEVsZW1lbnR7Y29uc3RydWN0b3Ioe3R5cGU6ZSxkaWN0OnQ9bnVsbCxtY2lkOmE9bnVsbCxwYWdlT2JqSWQ6bj1udWxsLHJlZk9iaklkOnM9bnVsbH0pe3RoaXMudHlwZT1lO3RoaXMuZGljdD10O3RoaXMubWNpZD1hO3RoaXMucGFnZU9iaklkPW47dGhpcy5yZWZPYmpJZD1zO3RoaXMucGFyZW50Tm9kZT1udWxsfX1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMueHJlZj1lPy54cmVmPz9udWxsO3RoaXMucm9vdERpY3Q9ZT8uZGljdD8/bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1jb2xsZWN0T2JqZWN0cyhlKXtpZighKHRoaXMucm9vdCYmdGhpcy5yb290RGljdCYmZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnJvb3REaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49bmV3IE1hcCxzPW5ldyBOdW1iZXJUcmVlKHQsdGhpcy54cmVmKTtmb3IoY29uc3RbZV1vZiBhKXtjb25zdCB0PXMuZ2V0UmF3KGUpO3QgaW5zdGFuY2VvZiBSZWYmJm4uc2V0KGUsdCl9cmV0dXJuIG59cGFyc2UoZSl7aWYoISh0aGlzLnJvb3QmJnRoaXMucm9vdERpY3QmJmUgaW5zdGFuY2VvZiBSZWYpKXJldHVybjtjb25zdHtwYXJlbnRUcmVlOnR9PXRoaXMucm9vdDtpZighdClyZXR1cm47Y29uc3QgYT10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpLG49dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpJiYhbilyZXR1cm47Y29uc3Qgcz1uZXcgTWFwO2lmKE51bWJlci5pc0ludGVnZXIoYSkpe2NvbnN0IGU9dC5nZXQoYSk7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgdCBvZiBlKXQgaW5zdGFuY2VvZiBSZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnhyZWYuZmV0Y2godCkscyl9aWYobilmb3IoY29uc3RbZSxhXW9mIG4pe2NvbnN0IG49dC5nZXQoZSk7aWYobil7Y29uc3QgZT10aGlzLmFkZE5vZGUodGhpcy54cmVmLmZldGNoSWZSZWYobikscyk7MT09PWU/LmtpZHM/Lmxlbmd0aCYmZS5raWRzWzBdLnR5cGU9PT1XaSYmKGUua2lkc1swXS50eXBlPWEpfX19YWRkTm9kZShlLHQsYT0wKXtpZihhPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpO3JldHVybiBudWxsfWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2lmKHQuaGFzKGUpKXJldHVybiB0LmdldChlKTtjb25zdCBuPW5ldyBTdHJ1Y3RFbGVtZW50Tm9kZSh0aGlzLGUpO3Quc2V0KGUsbik7c3dpdGNoKG4ucm9sZSl7Y2FzZSJMIjpjYXNlIkxCb2R5IjpjYXNlIkxJIjpjYXNlIlRhYmxlIjpjYXNlIlRIZWFkIjpjYXNlIlRCb2R5IjpjYXNlIlRGb290IjpjYXNlIlRSIjpmb3IoY29uc3QgZSBvZiBuLmtpZHMpZS50eXBlPT09R2kmJnRoaXMuYWRkTm9kZShlLmRpY3QsdCxhLTEpfWNvbnN0IHM9ZS5nZXQoIlAiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KXx8aXNOYW1lKHMuZ2V0KCJUeXBlIiksIlN0cnVjdFRyZWVSb290Iikpe3RoaXMuYWRkVG9wTGV2ZWxOb2RlKGUsbil8fHQuZGVsZXRlKGUpO3JldHVybiBufWNvbnN0IHI9dGhpcy5hZGROb2RlKHMsdCxhKzEpO2lmKCFyKXJldHVybiBuO2xldCBpPSExO2Zvcihjb25zdCB0IG9mIHIua2lkcylpZih0LnR5cGU9PT1HaSYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPW47aT0hMH1pfHx0LmRlbGV0ZShlKTtyZXR1cm4gbn1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBhPXRoaXMucm9vdC5nZXRLaWRQb3NpdGlvbihlLm9iaklkKTtpZihpc05hTihhKSlyZXR1cm4hMTstMSE9PWEmJih0aGlzLm5vZGVzW2FdPXQpO3JldHVybiEwfWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBub2RlVG9TZXJpYWxpemFibGUoZSx0LGE9MCl7aWYoYT40MCl7d2FybigiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCk7bi5yb2xlPWUucm9sZTtuLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChuKTtsZXQgcz1lLmRpY3QuZ2V0KCJBbHQiKTsic3RyaW5nIiE9dHlwZW9mIHMmJihzPWUuZGljdC5nZXQoIkFjdHVhbFRleHQiKSk7InN0cmluZyI9PXR5cGVvZiBzJiYobi5hbHQ9c3RyaW5nVG9QREZTdHJpbmcocykpO2lmKCJGb3JtdWxhIj09PW4ucm9sZSl7Y29uc3R7bWF0aE1MOnR9PWU7dCYmKG4ubWF0aE1MPXQpfWNvbnN0IHI9ZS5kaWN0LmdldCgiQSIpO2lmKHIgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWxvb2t1cE5vcm1hbFJlY3Qoci5nZXRBcnJheSgiQkJveCIpLG51bGwpO2lmKGUpbi5iYm94PWU7ZWxzZXtjb25zdCBlPXIuZ2V0KCJXaWR0aCIpLHQ9ci5nZXQoIkhlaWdodCIpOyJudW1iZXIiPT10eXBlb2YgZSYmZT4wJiYibnVtYmVyIj09dHlwZW9mIHQmJnQ+MCYmKG4uYmJveD1bMCwwLGUsdF0pfX1jb25zdCBpPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIGkmJihuLmxhbmc9c3RyaW5nVG9QREZTdHJpbmcoaSkpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1HaT90LnBhcmVudE5vZGU6bnVsbDtlP25vZGVUb1NlcmlhbGl6YWJsZShlLG4sYSsxKTp0LnR5cGU9PT16aXx8dC50eXBlPT09WGk/bi5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcCR7dC5wYWdlT2JqSWR9X21jJHt0Lm1jaWR9YH0pOnQudHlwZT09PVdpP24uY2hpbGRyZW4ucHVzaCh7dHlwZToib2JqZWN0IixpZDp0LnJlZk9iaklkfSk6dC50eXBlPT09S2kmJm4uY2hpbGRyZW4ucHVzaCh7dHlwZToiYW5ub3RhdGlvbiIsaWQ6YHBkZmpzX2ludGVybmFsX2lkXyR7dC5yZWZPYmpJZH1gfSl9fWNvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlLmNoaWxkcmVuPVtdO2Uucm9sZT0iUm9vdCI7Zm9yKGNvbnN0IHQgb2YgdGhpcy5ub2Rlcyl0JiZub2RlVG9TZXJpYWxpemFibGUodCxlKTtyZXR1cm4gZX19Y29uc3QgVmk9ZnVuY3Rpb24gX2lzVmFsaWRFeHBsaWNpdERlc3QoZSx0LGEpe2lmKCFBcnJheS5pc0FycmF5KGEpfHxhLmxlbmd0aDwyKXJldHVybiExO2NvbnN0W24scywuLi5yXT1hO2lmKCFlKG4pJiYhTnVtYmVyLmlzSW50ZWdlcihuKSlyZXR1cm4hMTtpZighdChzKSlyZXR1cm4hMTtjb25zdCBpPXIubGVuZ3RoO2xldCBvPSEwO3N3aXRjaChzLm5hbWUpe2Nhc2UiWFlaIjppZihpPDJ8fGk+MylyZXR1cm4hMTticmVhaztjYXNlIkZpdCI6Y2FzZSJGaXRCIjpyZXR1cm4gMD09PWk7Y2FzZSJGaXRIIjpjYXNlIkZpdEJIIjpjYXNlIkZpdFYiOmNhc2UiRml0QlYiOmlmKGk+MSlyZXR1cm4hMTticmVhaztjYXNlIkZpdFIiOmlmKDQhPT1pKXJldHVybiExO289ITE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1mb3IoY29uc3QgZSBvZiByKWlmKCEoIm51bWJlciI9PXR5cGVvZiBlfHxvJiZudWxsPT09ZSkpcmV0dXJuITE7cmV0dXJuITB9LmJpbmQobnVsbCxlPT5lIGluc3RhbmNlb2YgUmVmLGlzTmFtZSk7ZnVuY3Rpb24gZmV0Y2hEZXN0KGUpe2UgaW5zdGFuY2VvZiBEaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gVmkoZSk/ZTpudWxsfWZ1bmN0aW9uIGZldGNoUmVtb3RlRGVzdChlKXtsZXQgdD1lLmdldCgiRCIpO2lmKHQpe3QgaW5zdGFuY2VvZiBOYW1lJiYodD10Lm5hbWUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcodCwhMCk7aWYoVmkodCkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfXJldHVybiBudWxsfWNsYXNzIENhdGFsb2d7I1ZlPW51bGw7IyRlPW51bGw7YnVpbHRJbkNNYXBDYWNoZT1uZXcgTWFwO2ZvbnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7Z2xvYmFsQ29sb3JTcGFjZUNhY2hlPW5ldyBHbG9iYWxDb2xvclNwYWNlQ2FjaGU7Z2xvYmFsSW1hZ2VDYWNoZT1uZXcgR2xvYmFsSW1hZ2VDYWNoZTtub25CbGVuZE1vZGVzU2V0PW5ldyBSZWZTZXQ7cGFnZURpY3RDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7cGFnZUluZGV4Q2FjaGU9bmV3IFJlZlNldENhY2hlO3BhZ2VLaWRzQ291bnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7c3RhbmRhcmRGb250RGF0YUNhY2hlPW5ldyBNYXA7c3lzdGVtRm9udENhY2hlPW5ldyBNYXA7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnhyZWY9dDt0aGlzLiMkZT10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuIyRlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJDYXRhbG9nIG9iamVjdCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO3RoaXMudG9wbGV2ZWxQYWdlc0RpY3R9Y2xvbmVEaWN0KCl7cmV0dXJuIHRoaXMuIyRlLmNsb25lKCl9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuIyRlLmdldCgiVmVyc2lvbiIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtpZih1YS50ZXN0KGUubmFtZSkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpO3dhcm4oYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixudWxsKX1nZXQgbGFuZygpe2NvbnN0IGU9dGhpcy4jJGUuZ2V0KCJMYW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJsYW5nIixlJiYic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLiMkZS5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJuZWVkc1JlbmRlcmluZyIsImJvb2xlYW4iPT10eXBlb2YgZSYmZSl9Z2V0IGNvbGxlY3Rpb24oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuIyRlLmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIENvbGxlY3Rpb24gZW50cnk7IGFzc3VtaW5nIG5vIGNvbGxlY3Rpb24gaXMgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy4jJGUuZ2V0KCJBY3JvRm9ybSIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtIixlKX1nZXQgYWNyb0Zvcm1SZWYoKXtjb25zdCBlPXRoaXMuIyRlLmdldFJhdygiQWNyb0Zvcm0iKTtyZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLiMkZS5nZXRSYXcoIk1ldGFkYXRhIik7aWYoIShlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIixudWxsKTtsZXQgdD1udWxsO3RyeXtjb25zdCBhPXRoaXMueHJlZi5mZXRjaChlLCF0aGlzLnhyZWYuZW5jcnlwdD8uZW5jcnlwdE1ldGFkYXRhKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS5kaWN0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1hLmRpY3QuZ2V0KCJUeXBlIiksbj1hLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoaXNOYW1lKGUsIk1ldGFkYXRhIikmJmlzTmFtZShuLCJYTUwiKSl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IE1ldGFkYXRhUGFyc2VyKGUpLnNlcmlhbGl6YWJsZSl9fX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGBTa2lwcGluZyBpbnZhbGlkIE1ldGFkYXRhOiAiJHtlfSIuYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNZZSgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1hcmtJbmZvIixlKX0jWWUoKXtjb25zdCBlPXRoaXMuIyRlLmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXtNYXJrZWQ6ITEsVXNlclByb3BlcnRpZXM6ITEsU3VzcGVjdHM6ITF9O2Zvcihjb25zdCBhIGluIHQpe2NvbnN0IG49ZS5nZXQoYSk7ImJvb2xlYW4iPT10eXBlb2YgbiYmKHRbYV09bil9cmV0dXJuIHR9Z2V0IGhhc1N0cnVjdFRyZWUoKXtyZXR1cm4gdGhpcy4jJGUuaGFzKCJTdHJ1Y3RUcmVlUm9vdCIpfWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jSmUoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybiBzaGFkb3codGhpcywic3RydWN0VHJlZVJvb3QiLGUpfSNKZSgpe2NvbnN0IGU9dGhpcy4jJGUuZ2V0UmF3KCJTdHJ1Y3RUcmVlUm9vdCIpLHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgYT1uZXcgU3RydWN0VHJlZVJvb3QodGhpcy54cmVmLHQsZSk7YS5pbml0KCk7cmV0dXJuIGF9Z2V0IHRvcGxldmVsUGFnZXNEaWN0KCl7Y29uc3QgZT10aGlzLiMkZS5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5LiIpO3JldHVybiBzaGFkb3codGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfWdldCBkb2N1bWVudE91dGxpbmUoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI1FlKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgZG9jdW1lbnQgb3V0bGluZS4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9I1FlKGU9e30pe2xldCB0PXRoaXMuIyRlLmdldCgiT3V0bGluZXMiKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDt0PXQuZ2V0UmF3KCJGaXJzdCIpO2lmKCEodCBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgYT17aXRlbXM6W119LG49W3tvYmo6dCxwYXJlbnQ6YX1dLHM9bmV3IFJlZlNldDtzLnB1dCh0KTtjb25zdCByPXRoaXMueHJlZixpPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO24ubGVuZ3RoPjA7KXtjb25zdCBhPW4uc2hpZnQoKSxvPXIuZmV0Y2hJZlJlZihhLm9iaik7aWYobnVsbD09PW8pY29udGludWU7by5oYXMoIlRpdGxlIil8fHdhcm4oIkludmFsaWQgb3V0bGluZSBpdGVtIGVuY291bnRlcmVkLiIpO2NvbnN0IGw9e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDpvLHJlc3VsdE9iajpsLGRvY0Jhc2VVcmw6dGhpcy5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCBmPW8uZ2V0KCJUaXRsZSIpLGM9by5nZXQoIkYiKXx8MCxoPW8uZ2V0QXJyYXkoIkMiKSx1PW8uZ2V0KCJDb3VudCIpO2xldCBtPWk7IWlzTnVtYmVyQXJyYXkoaCwzKXx8MD09PWhbMF0mJjA9PT1oWzFdJiYwPT09aFsyXXx8KG09Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2IoaCwwKSk7Y29uc3QgcD17YWN0aW9uOmwuYWN0aW9uLGF0dGFjaG1lbnQ6bC5hdHRhY2htZW50LGRlc3Q6bC5kZXN0LHVybDpsLnVybCx1bnNhZmVVcmw6bC51bnNhZmVVcmwsbmV3V2luZG93OmwubmV3V2luZG93LHNldE9DR1N0YXRlOmwuc2V0T0NHU3RhdGUsdGl0bGU6InN0cmluZyI9PXR5cGVvZiBmP3N0cmluZ1RvUERGU3RyaW5nKGYpOiIiLGNvbG9yOm0sY291bnQ6TnVtYmVyLmlzSW50ZWdlcih1KT91OnZvaWQgMCxib2xkOiEhKDImYyksaXRhbGljOiEhKDEmYyksaXRlbXM6W119O2Uua2VlcFJhd0RpY3QmJihwLnJhd0RpY3Q9byk7YS5wYXJlbnQuaXRlbXMucHVzaChwKTt0PW8uZ2V0UmF3KCJGaXJzdCIpO2lmKHQgaW5zdGFuY2VvZiBSZWYmJiFzLmhhcyh0KSl7bi5wdXNoKHtvYmo6dCxwYXJlbnQ6cH0pO3MucHV0KHQpfXQ9by5nZXRSYXcoIk5leHQiKTtpZih0IGluc3RhbmNlb2YgUmVmJiYhcy5oYXModCkpe24ucHVzaCh7b2JqOnQscGFyZW50OmEucGFyZW50fSk7cy5wdXQodCl9fXJldHVybiBhLml0ZW1zLmxlbmd0aD4wP2EuaXRlbXM6bnVsbH1nZXQgZG9jdW1lbnRPdXRsaW5lRm9yRWRpdG9yKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNRZSh7a2VlcFJhd0RpY3Q6ITB9KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBkb2N1bWVudCBvdXRsaW5lLiIpfXJldHVybiBzaGFkb3codGhpcywiZG9jdW1lbnRPdXRsaW5lRm9yRWRpdG9yIixlKX1nZXQgcGVybWlzc2lvbnMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI1plKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJwZXJtaXNzaW9ucyIsZSl9I1plKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtsZXQgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz0yKiozMjtjb25zdCBhPVtdO2Zvcihjb25zdCBlIGluIHkpe2NvbnN0IG49eVtlXTt0Jm4mJmEucHVzaChuKX1yZXR1cm4gYX1nZXQgb3B0aW9uYWxDb250ZW50Q29uZmlnKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLiMkZS5nZXQoIk9DUHJvcGVydGllcyIpO2lmKCF0KXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBhPXQuZ2V0KCJEIik7aWYoIWEpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IG49dC5nZXQoIk9DR3MiKTtpZighQXJyYXkuaXNBcnJheShuKSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcz1uZXcgUmVmU2V0Q2FjaGU7Zm9yKGNvbnN0IGUgb2YgbillIGluc3RhbmNlb2YgUmVmJiYhcy5oYXMoZSkmJnMucHV0KGUsdGhpcy4jZXQoZSkpO2U9dGhpcy4jdHQoYSxzKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogJHtlfWApfXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixlKX0jZXQoZSl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2goZSksYT17aWQ6ZS50b1N0cmluZygpLG5hbWU6bnVsbCxpbnRlbnQ6bnVsbCx1c2FnZTp7cHJpbnQ6bnVsbCx2aWV3Om51bGx9LHJiR3JvdXBzOltdfSxuPXQuZ2V0KCJOYW1lIik7InN0cmluZyI9PXR5cGVvZiBuJiYoYS5uYW1lPXN0cmluZ1RvUERGU3RyaW5nKG4pKTtsZXQgcz10LmdldEFycmF5KCJJbnRlbnQiKTtBcnJheS5pc0FycmF5KHMpfHwocz1bc10pO3MuZXZlcnkoZT0+ZSBpbnN0YW5jZW9mIE5hbWUpJiYoYS5pbnRlbnQ9cy5tYXAoZT0+ZS5uYW1lKSk7Y29uc3Qgcj10LmdldCgiVXNhZ2UiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gYTtjb25zdCBpPWEudXNhZ2Usbz1yLmdldCgiUHJpbnQiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1vLmdldCgiUHJpbnRTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjppLnByaW50PXtwcmludFN0YXRlOmUubmFtZX19fWNvbnN0IGw9ci5nZXQoIlZpZXciKTtpZihsIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sLmdldCgiVmlld1N0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmkudmlldz17dmlld1N0YXRlOmUubmFtZX19fXJldHVybiBhfSN0dChlLHQpe2Z1bmN0aW9uIHBhcnNlT25PZmYoZSl7Y29uc3QgYT1bXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCBuIG9mIGUpbiBpbnN0YW5jZW9mIFJlZiYmdC5oYXMobikmJmEucHVzaChuLnRvU3RyaW5nKCkpO3JldHVybiBhfWZ1bmN0aW9uIHBhcnNlT3JkZXIoZSxhPTApe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBudWxsO2NvbnN0IHM9W107Zm9yKGNvbnN0IHIgb2YgZSl7aWYociBpbnN0YW5jZW9mIFJlZiYmdC5oYXMocikpe24ucHV0KHIpO3MucHVzaChyLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihyLGEpO2UmJnMucHVzaChlKX1pZihhPjApcmV0dXJuIHM7Y29uc3Qgcj1bXTtmb3IoY29uc3RbZV1vZiB0Lml0ZW1zKCkpbi5oYXMoZSl8fHIucHVzaChlLnRvU3RyaW5nKCkpO3IubGVuZ3RoJiZzLnB1c2goe25hbWU6bnVsbCxvcmRlcjpyfSk7cmV0dXJuIHN9ZnVuY3Rpb24gcGFyc2VOZXN0ZWRPcmRlcihlLHQpe2lmKCsrdD5zKXt3YXJuKCJwYXJzZU5lc3RlZE9yZGVyIC0gcmVhY2hlZCBNQVhfTkVTVEVEX0xFVkVMUy4iKTtyZXR1cm4gbnVsbH1jb25zdCBuPWEuZmV0Y2hJZlJlZihlKTtpZighQXJyYXkuaXNBcnJheShuKSlyZXR1cm4gbnVsbDtjb25zdCByPWEuZmV0Y2hJZlJlZihuWzBdKTtpZigic3RyaW5nIiE9dHlwZW9mIHIpcmV0dXJuIG51bGw7Y29uc3QgaT1wYXJzZU9yZGVyKG4uc2xpY2UoMSksdCk7cmV0dXJuIGk/Lmxlbmd0aD97bmFtZTpzdHJpbmdUb1BERlN0cmluZyhyKSxvcmRlcjppfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLG49bmV3IFJlZlNldCxzPTEwOyFmdW5jdGlvbiBwYXJzZVJCR3JvdXBzKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT1hLmZldGNoSWZSZWYobik7aWYoIUFycmF5LmlzQXJyYXkoZSl8fCFlLmxlbmd0aCljb250aW51ZTtjb25zdCBzPW5ldyBTZXQ7Zm9yKGNvbnN0IGEgb2YgZSlpZihhIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhhKSYmIXMuaGFzKGEudG9TdHJpbmcoKSkpe3MuYWRkKGEudG9TdHJpbmcoKSk7dC5nZXQoYSkucmJHcm91cHMucHVzaChzKX19fShlLmdldCgiUkJHcm91cHMiKSk7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpP3N0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBOYW1lP2UuZ2V0KCJCYXNlU3RhdGUiKS5uYW1lOm51bGwsb246cGFyc2VPbk9mZihlLmdldCgiT04iKSksb2ZmOnBhcnNlT25PZmYoZS5nZXQoIk9GRiIpKSxvcmRlcjpwYXJzZU9yZGVyKGUuZ2V0KCJPcmRlciIpKSxncm91cHM6Wy4uLnRdfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuI1ZlPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLiNWZX1nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpbiB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeSBpcyBub3QgYW4gaW50ZWdlci4iKTtyZXR1cm4gc2hhZG93KHRoaXMsIl9wYWdlc0NvdW50IixlKX1nZXQgbnVtUGFnZXMoKXtyZXR1cm4gdGhpcy4jVmU/P3RoaXMuX3BhZ2VzQ291bnR9Z2V0IGRlc3RpbmF0aW9ucygpe2NvbnN0IGU9dGhpcy4jYXQoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGEgb2YgZSlpZihhIGluc3RhbmNlb2YgTmFtZVRyZWUpZm9yKGNvbnN0W2Usbl1vZiBhLmdldEFsbCgpKXtjb25zdCBhPWZldGNoRGVzdChuKTthJiYodFtzdHJpbmdUb1BERlN0cmluZyhlLCEwKV09YSl9ZWxzZSBpZihhIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbZSxuXW9mIGEpe2NvbnN0IGE9ZmV0Y2hEZXN0KG4pO2EmJih0W3N0cmluZ1RvUERGU3RyaW5nKGUsITApXXx8PWEpfXJldHVybiBzaGFkb3codGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtpZihPYmplY3QuaGFzT3duKHRoaXMsImRlc3RpbmF0aW9ucyIpKXJldHVybiB0aGlzLmRlc3RpbmF0aW9uc1tlXT8/bnVsbDtjb25zdCB0PXRoaXMuI2F0KCk7Zm9yKGNvbnN0IGEgb2YgdClpZihhIGluc3RhbmNlb2YgTmFtZVRyZWV8fGEgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PWZldGNoRGVzdChhLmdldChlKSk7aWYodClyZXR1cm4gdH1pZih0Lmxlbmd0aCl7Y29uc3QgdD10aGlzLmRlc3RpbmF0aW9uc1tlXTtpZih0KXJldHVybiB0fXJldHVybiBudWxsfSNhdCgpe2NvbnN0IGU9dGhpcy4jJGUuZ2V0KCJOYW1lcyIpLHQ9W107ZT8uaGFzKCJEZXN0cyIpJiZ0LnB1c2gobmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJEZXN0cyIpLHRoaXMueHJlZikpO3RoaXMuIyRlLmhhcygiRGVzdHMiKSYmdC5wdXNoKHRoaXMuIyRlLmdldCgiRGVzdHMiKSk7cmV0dXJuIHR9Z2V0IHJhd1BhZ2VMYWJlbHMoKXtjb25zdCBlPXRoaXMuIyRlLmdldFJhdygiUGFnZUxhYmVscyIpO2lmKCFlKXJldHVybiBudWxsO3JldHVybiBuZXcgTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCl9Z2V0IHBhZ2VMYWJlbHMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI250KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgcGFnZSBsYWJlbHMuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTGFiZWxzIixlKX0jbnQoKXtjb25zdCBlPXRoaXMucmF3UGFnZUxhYmVscztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgYT1udWxsLG49IiIscz0iIixyPTE7Zm9yKGxldCBpPTAsbz10aGlzLm51bVBhZ2VzO2k8bztpKyspe2NvbnN0IG89ZS5nZXQoaSk7aWYodm9pZCAwIT09byl7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlTGFiZWwgaXMgbm90IGEgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiVHlwZSIpJiYhaXNOYW1lKG8uZ2V0KCJUeXBlIiksIlBhZ2VMYWJlbCIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCB0eXBlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2lmKG8uaGFzKCJTIikpe2NvbnN0IGU9by5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgc3R5bGUgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7YT1lLm5hbWV9ZWxzZSBhPW51bGw7aWYoby5oYXMoIlAiKSl7Y29uc3QgZT1vLmdldCgiUCIpO2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgcHJlZml4IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO249c3RyaW5nVG9QREZTdHJpbmcoZSl9ZWxzZSBuPSIiO2lmKG8uaGFzKCJTdCIpKXtjb25zdCBlPW8uZ2V0KCJTdCIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0YXJ0IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO3I9ZX1lbHNlIHI9MX1zd2l0Y2goYSl7Y2FzZSJEIjpzPXI7YnJlYWs7Y2FzZSJSIjpjYXNlInIiOnM9dG9Sb21hbk51bWVyYWxzKHIsInIiPT09YSk7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNvbnN0IGU9MjYsdD0iYSI9PT1hPzk3OjY1LG49ci0xO3M9U3RyaW5nLmZyb21DaGFyQ29kZSh0K24lZSkucmVwZWF0KE1hdGguZmxvb3Iobi9lKSsxKTticmVhaztkZWZhdWx0OmlmKGEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIHN0eWxlICIke2F9IiBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS5gKTtzPSIifXRbaV09bitzO3IrK31yZXR1cm4gdH1nZXQgcGFnZUxheW91dCgpe2NvbnN0IGU9dGhpcy4jJGUuZ2V0KCJQYWdlTGF5b3V0Iik7bGV0IHQ9IiI7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTaW5nbGVQYWdlIjpjYXNlIk9uZUNvbHVtbiI6Y2FzZSJUd29Db2x1bW5MZWZ0IjpjYXNlIlR3b0NvbHVtblJpZ2h0IjpjYXNlIlR3b1BhZ2VMZWZ0IjpjYXNlIlR3b1BhZ2VSaWdodCI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuIyRlLmdldCgiUGFnZU1vZGUiKTtsZXQgdD0iVXNlTm9uZSI7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJGdWxsU2NyZWVuIjpjYXNlIlVzZU9DIjpjYXNlIlVzZUF0dGFjaG1lbnRzIjp0PWUubmFtZX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VNb2RlIix0KX1nZXQgdmlld2VyUHJlZmVyZW5jZXMoKXtjb25zdCBlPXRoaXMuIyRlLmdldCgiVmlld2VyUHJlZmVyZW5jZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gc2hhZG93KHRoaXMsInZpZXdlclByZWZlcmVuY2VzIixudWxsKTtsZXQgdD1udWxsO2Zvcihjb25zdFthLG5db2YgZSl7bGV0IGU7c3dpdGNoKGEpe2Nhc2UiSGlkZVRvb2xiYXIiOmNhc2UiSGlkZU1lbnViYXIiOmNhc2UiSGlkZVdpbmRvd1VJIjpjYXNlIkZpdFdpbmRvdyI6Y2FzZSJDZW50ZXJXaW5kb3ciOmNhc2UiRGlzcGxheURvY1RpdGxlIjpjYXNlIlBpY2tUcmF5QnlQREZTaXplIjoiYm9vbGVhbiI9PXR5cGVvZiBuJiYoZT1uKTticmVhaztjYXNlIk5vbkZ1bGxTY3JlZW5QYWdlTW9kZSI6aWYobiBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKG4ubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJVc2VPQyI6ZT1uLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJVc2VOb25lIn1icmVhaztjYXNlIkRpcmVjdGlvbiI6aWYobiBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKG4ubmFtZSl7Y2FzZSJMMlIiOmNhc2UiUjJMIjplPW4ubmFtZTticmVhaztkZWZhdWx0OmU9IkwyUiJ9YnJlYWs7Y2FzZSJWaWV3QXJlYSI6Y2FzZSJWaWV3Q2xpcCI6Y2FzZSJQcmludEFyZWEiOmNhc2UiUHJpbnRDbGlwIjppZihuIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2gobi5uYW1lKXtjYXNlIk1lZGlhQm94IjpjYXNlIkNyb3BCb3giOmNhc2UiQmxlZWRCb3giOmNhc2UiVHJpbUJveCI6Y2FzZSJBcnRCb3giOmU9bi5uYW1lO2JyZWFrO2RlZmF1bHQ6ZT0iQ3JvcEJveCJ9YnJlYWs7Y2FzZSJQcmludFNjYWxpbmciOmlmKG4gaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChuLm5hbWUpe2Nhc2UiTm9uZSI6Y2FzZSJBcHBEZWZhdWx0IjplPW4ubmFtZTticmVhaztkZWZhdWx0OmU9IkFwcERlZmF1bHQifWJyZWFrO2Nhc2UiRHVwbGV4IjppZihuIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2gobi5uYW1lKXtjYXNlIlNpbXBsZXgiOmNhc2UiRHVwbGV4RmxpcFNob3J0RWRnZSI6Y2FzZSJEdXBsZXhGbGlwTG9uZ0VkZ2UiOmU9bi5uYW1lO2JyZWFrO2RlZmF1bHQ6ZT0iTm9uZSJ9YnJlYWs7Y2FzZSJQcmludFBhZ2VSYW5nZSI6aWYoQXJyYXkuaXNBcnJheShuKSYmbi5sZW5ndGglMj09MCl7bi5ldmVyeSgoZSx0LGEpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49YVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykmJihlPW4pfWJyZWFrO2Nhc2UiTnVtQ29waWVzIjpOdW1iZXIuaXNJbnRlZ2VyKG4pJiZuPjAmJihlPW4pO2JyZWFrO2RlZmF1bHQ6d2FybihgSWdub3Jpbmcgbm9uLXN0YW5kYXJkIGtleSBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHthfS5gKTtjb250aW51ZX1pZih2b2lkIDAhPT1lKXt0Pz89T2JqZWN0LmNyZWF0ZShudWxsKTt0W2FdPWV9ZWxzZSB3YXJuKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7YX0iLCBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHtufS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXdlclByZWZlcmVuY2VzIix0KX1nZXQgb3BlbkFjdGlvbigpe2NvbnN0IGU9dGhpcy4jJGUuZ2V0KCJPcGVuQWN0aW9uIiksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBhPW5ldyBEaWN0KHRoaXMueHJlZik7YS5zZXQoIkEiLGUpO2NvbnN0IG49e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDphLHJlc3VsdE9iajpufSk7QXJyYXkuaXNBcnJheShuLmRlc3QpP3QuZGVzdD1uLmRlc3Q6bi5hY3Rpb24mJih0LmFjdGlvbj1uLmFjdGlvbil9ZWxzZSBWaShlKSYmKHQuZGVzdD1lKTtyZXR1cm4gc2hhZG93KHRoaXMsIm9wZW5BY3Rpb24iLG9iamVjdFNpemUodCk+MD90Om51bGwpfWdldCBhdHRhY2htZW50cygpe2NvbnN0IGU9dGhpcy4jJGUuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJFbWJlZGRlZEZpbGVzIikpe2NvbnN0IGE9bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxuXW9mIGEuZ2V0QWxsKCkpe2NvbnN0IGE9bmV3IEZpbGVTcGVjKG4pO3Q/Pz1PYmplY3QuY3JlYXRlKG51bGwpO3Rbc3RyaW5nVG9QREZTdHJpbmcoZSwhMCldPWEuc2VyaWFsaXphYmxlfX1yZXR1cm4gc2hhZG93KHRoaXMsImF0dGFjaG1lbnRzIix0KX1nZXQgcmF3RW1iZWRkZWRGaWxlcygpe2NvbnN0IGU9dGhpcy4jJGUuZ2V0KCJOYW1lcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJFbWJlZGRlZEZpbGVzIikpKXJldHVybiBudWxsO3JldHVybiBuZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpLmdldEFsbCghMCl9Z2V0IHhmYUltYWdlcygpe2NvbnN0IGU9dGhpcy4jJGUuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJYRkFJbWFnZXMiKSl7Y29uc3QgYT1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIlhGQUltYWdlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2Usbl1vZiBhLmdldEFsbCgpKWlmKG4gaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXt0Pz89bmV3IE1hcDt0LnNldChzdHJpbmdUb1BERlN0cmluZyhlLCEwKSxuLmdldEJ5dGVzKCkpfX1yZXR1cm4gc2hhZG93KHRoaXMsInhmYUltYWdlcyIsdCl9I3N0KCl7Y29uc3QgZT10aGlzLiMkZS5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtmdW5jdGlvbiBhcHBlbmRJZkphdmFTY3JpcHREaWN0KGUsYSl7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2lmKCFpc05hbWUoYS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXJldHVybjtsZXQgbj1hLmdldCgiSlMiKTtpZihuIGluc3RhbmNlb2YgQmFzZVN0cmVhbSluPW4uZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIG4pcmV0dXJuO249c3RyaW5nVG9QREZTdHJpbmcobiwhMCkucmVwbGFjZUFsbCgiXDAiLCIiKTtuJiYodHx8PW5ldyBNYXApLnNldChlLG4pfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiSmF2YVNjcmlwdCIpKXtjb25zdCB0PW5ldyBOYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3Qoc3RyaW5nVG9QREZTdHJpbmcoZSwhMCksYSl9Y29uc3QgYT10aGlzLiMkZS5nZXQoIk9wZW5BY3Rpb24iKTthJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixhKTtyZXR1cm4gdH1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT10aGlzLiNzdCgpO2xldCB0PWNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLiMkZSxvZSk7aWYoZSl7dHx8PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2Esbl1vZiBlKWEgaW4gdD90W2FdLnB1c2gobik6dFthXT1bbl19cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLHQpfWFzeW5jIGNsZWFudXAoZT0hMSl7Y2xlYXJHbG9iYWxDYWNoZXMoKTt0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZS5jbGVhcigpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5jbGVhcihlKTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZS5jbGVhcigpO3RoaXMucGFnZUluZGV4Q2FjaGUuY2xlYXIoKTt0aGlzLnBhZ2VEaWN0Q2FjaGUuY2xlYXIoKTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQuY2xlYXIoKTtmb3IoY29uc3R7ZGljdDplfW9mIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKSlkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCk7dGhpcy5zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKX1hc3luYyBnZXRQYWdlRGljdChlKXtjb25zdCB0PVt0aGlzLnRvcGxldmVsUGFnZXNEaWN0XSxhPW5ldyBSZWZTZXQsbj10aGlzLiMkZS5nZXRSYXcoIlBhZ2VzIik7biBpbnN0YW5jZW9mIFJlZiYmYS5wdXQobik7Y29uc3Qgcz10aGlzLnhyZWYscj10aGlzLnBhZ2VLaWRzQ291bnRDYWNoZSxpPXRoaXMucGFnZUluZGV4Q2FjaGUsbz10aGlzLnBhZ2VEaWN0Q2FjaGU7bGV0IGw9MDtmb3IoO3QubGVuZ3RoOyl7Y29uc3Qgbj10LnBvcCgpO2lmKG4gaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGY9ci5nZXQobik7aWYoZj49MCYmbCtmPD1lKXtsKz1mO2NvbnRpbnVlfWlmKGEuaGFzKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIik7YS5wdXQobik7Y29uc3QgYz1hd2FpdChvLmdldChuKXx8cy5mZXRjaEFzeW5jKG4pKTtpZihjIGluc3RhbmNlb2YgRGljdCl7bGV0IHQ9Yy5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2YgUmVmJiYodD1hd2FpdCBzLmZldGNoQXN5bmModCkpO2lmKGlzTmFtZSh0LCJQYWdlIil8fCFjLmhhcygiS2lkcyIpKXtyLmhhcyhuKXx8ci5wdXQobiwxKTtpLmhhcyhuKXx8aS5wdXQobixsKTtpZihsPT09ZSlyZXR1cm5bYyxuXTtsKys7Y29udGludWV9fXQucHVzaChjKTtjb250aW51ZX1pZighKG4gaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKTtjb25zdHtvYmpJZDpmfT1uO2xldCBjPW4uZ2V0UmF3KCJDb3VudCIpO2MgaW5zdGFuY2VvZiBSZWYmJihjPWF3YWl0IHMuZmV0Y2hBc3luYyhjKSk7aWYoTnVtYmVyLmlzSW50ZWdlcihjKSYmYz49MCl7ZiYmIXIuaGFzKGYpJiZyLnB1dChmLGMpO2lmKGwrYzw9ZSl7bCs9Yztjb250aW51ZX19bGV0IGg9bi5nZXRSYXcoIktpZHMiKTtoIGluc3RhbmNlb2YgUmVmJiYoaD1hd2FpdCBzLmZldGNoQXN5bmMoaCkpO2lmKCFBcnJheS5pc0FycmF5KGgpKXtsZXQgdD1uLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IHMuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IW4uaGFzKCJLaWRzIikpe2lmKGw9PT1lKXJldHVybltuLG51bGxdO2wrKztjb250aW51ZX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIil9Zm9yKGxldCBlPWgubGVuZ3RoLTE7ZT49MDtlLS0pe2NvbnN0IGE9aFtlXTt0LnB1c2goYSk7bj09PXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QmJmEgaW5zdGFuY2VvZiBSZWYmJiFvLmhhcyhhKSYmby5wdXQoYSxzLmZldGNoQXN5bmMoYSkpfX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0e2lnbm9yZUVycm9yczp0fT10aGlzLnBkZk1hbmFnZXIuZXZhbHVhdG9yT3B0aW9ucyxhPVt7Y3VycmVudE5vZGU6dGhpcy50b3BsZXZlbFBhZ2VzRGljdCxwb3NJbktpZHM6MH1dLG49bmV3IFJlZlNldCxzPXRoaXMuIyRlLmdldFJhdygiUGFnZXMiKTtzIGluc3RhbmNlb2YgUmVmJiZuLnB1dChzKTtjb25zdCByPW5ldyBNYXAsaT10aGlzLnhyZWYsbz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBsPTA7ZnVuY3Rpb24gYWRkUGFnZURpY3QoZSx0KXt0JiYhby5oYXModCkmJm8ucHV0KHQsbCk7ci5zZXQobCsrLFtlLHRdKX1mdW5jdGlvbiBhZGRQYWdlRXJyb3IoYSl7aWYoYSBpbnN0YW5jZW9mIFhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgYTtpZihlJiZ0JiYwPT09bCl7d2FybihgZ2V0QWxsUGFnZURpY3RzIC0gU2tpcHBpbmcgaW52YWxpZCBmaXJzdCBwYWdlOiAiJHthfSIuYCk7YT1EaWN0LmVtcHR5fXIuc2V0KGwrKyxbYSxudWxsXSl9Zm9yKDthLmxlbmd0aD4wOyl7Y29uc3QgZT1hLmF0KC0xKSx7Y3VycmVudE5vZGU6dCxwb3NJbktpZHM6c309ZTtsZXQgcj10LmdldFJhdygiS2lkcyIpO2lmKHIgaW5zdGFuY2VvZiBSZWYpdHJ5e3I9YXdhaXQgaS5mZXRjaEFzeW5jKHIpfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha31pZighQXJyYXkuaXNBcnJheShyKSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYocz49ci5sZW5ndGgpe2EucG9wKCk7Y29udGludWV9Y29uc3Qgbz1yW3NdO2xldCBsO2lmKG8gaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKG8pKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKSk7YnJlYWt9bi5wdXQobyk7dHJ5e2w9YXdhaXQgaS5mZXRjaEFzeW5jKG8pfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha319ZWxzZSBsPW87aWYoIShsIGluc3RhbmNlb2YgRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKSk7YnJlYWt9bGV0IGY9bC5nZXRSYXcoIlR5cGUiKTtpZihmIGluc3RhbmNlb2YgUmVmKXRyeXtmPWF3YWl0IGkuZmV0Y2hBc3luYyhmKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aXNOYW1lKGYsIlBhZ2UiKXx8IWwuaGFzKCJLaWRzIik/YWRkUGFnZURpY3QobCxvIGluc3RhbmNlb2YgUmVmP286bnVsbCk6YS5wdXNoKHtjdXJyZW50Tm9kZTpsLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gcn1nZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7Y29uc3QgYT10aGlzLnhyZWY7bGV0IG49MDtjb25zdCBuZXh0PXQ9PmZ1bmN0aW9uIHBhZ2VzQmVmb3JlUmVmKHQpe2xldCBuLHM9MDtyZXR1cm4gYS5mZXRjaEFzeW5jKHQpLnRoZW4oZnVuY3Rpb24oYSl7aWYoaXNSZWZzRXF1YWwodCxlKSYmIWlzRGljdChhLCJQYWdlIikmJiEoYSBpbnN0YW5jZW9mIERpY3QmJiFhLmhhcygiVHlwZSIpJiZhLmhhcygiQ29udGVudHMiKSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUaGUgcmVmZXJlbmNlIGRvZXMgbm90IHBvaW50IHRvIGEgL1BhZ2UgZGljdGlvbmFyeS4iKTtpZighYSlyZXR1cm4gbnVsbDtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7bj1hLmdldFJhdygiUGFyZW50Iik7cmV0dXJuIGEuZ2V0QXN5bmMoIlBhcmVudCIpfSkudGhlbihmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm4gZS5nZXRBc3luYygiS2lkcyIpfSkudGhlbihmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCByPVtdO2xldCBpPSExO2Zvcihjb25zdCBuIG9mIGUpe2lmKCEobiBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZihpc1JlZnNFcXVhbChuLHQpKXtpPSEwO2JyZWFrfXIucHVzaChhLmZldGNoQXN5bmMobikudGhlbihmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZCBub2RlIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO2UuaGFzKCJDb3VudCIpP3MrPWUuZ2V0KCJDb3VudCIpOnMrK30pKX1pZighaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZCByZWZlcmVuY2Ugbm90IGZvdW5kIGluIHBhcmVudCdzIGtpZHMuIik7cmV0dXJuIFByb21pc2UuYWxsKHIpLnRoZW4oKCk9PltzLG5dKX0pfSh0KS50aGVuKHQ9PntpZighdCl7dGhpcy5wYWdlSW5kZXhDYWNoZS5wdXQoZSxuKTtyZXR1cm4gbn1jb25zdFthLHNdPXQ7bis9YTtyZXR1cm4gbmV4dChzKX0pO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLiMkZS5nZXQoIlVSSSIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PWUuZ2V0KCJCYXNlIik7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBlPWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwodCxudWxsLHt0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtpZihlKXJldHVybiBzaGFkb3codGhpcywiYmFzZVVybCIsZS5ocmVmKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIix0aGlzLnBkZk1hbmFnZXIuZG9jQmFzZVVybCl9c3RhdGljI3J0KGUsdCl7Y29uc3QgYT1lLmZldGNoSWZSZWYodCk7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7bGV0IG49bnVsbDtjb25zdCBzPWEuZ2V0UmF3KCJQZyIpO3MgaW5zdGFuY2VvZiBSZWYmJihuPXMpO2lmKCFuKXtjb25zdCB0PVthXTtmb3IoO3QubGVuZ3RoPjAmJiFuOyl7Y29uc3QgYT10LnNoaWZ0KCkuZ2V0KCJLIik7bGV0IHM7aWYoQXJyYXkuaXNBcnJheShhKSlzPWE7ZWxzZXtpZighYSljb250aW51ZTtzPVthXX1mb3IoY29uc3QgYSBvZiBzKXtjb25zdCBzPWUuZmV0Y2hJZlJlZihhKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCByPXMuZ2V0UmF3KCJQZyIpO2lmKHIgaW5zdGFuY2VvZiBSZWYpe249cjticmVha310LnB1c2gocyl9fX1pZighbil7Y29uc3QgdD00MDtsZXQgcz1hO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9cy5nZXRSYXcoIlAiKTtpZighKHQgaW5zdGFuY2VvZiBSZWYpKWJyZWFrO2NvbnN0IGE9ZS5mZXRjaCh0KTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlicmVhaztpZihpc05hbWUoYS5nZXQoIlR5cGUiKSwiU3RydWN0VHJlZVJvb3QiKSlicmVhaztjb25zdCByPWEuZ2V0UmF3KCJQZyIpO2lmKHIgaW5zdGFuY2VvZiBSZWYpe249cjticmVha31zPWF9fWlmKCFuKXJldHVybiBudWxsO2xldCByPW51bGwsaT1udWxsO2NvbnN0IG89YS5nZXQoIkEiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sb29rdXBSZWN0KG8uZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZihlKXtyPWVbMF07aT1lWzNdfX1yZXR1cm5bbix7bmFtZToiWFlaIn0scixpLG51bGxdfXN0YXRpYyBwYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDplLHJlc3VsdE9iajp0LGRvY0Jhc2VVcmw6YT1udWxsLGRvY0F0dGFjaG1lbnRzOm49bnVsbH0pe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXt3YXJuKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgZGVzdERpY3RgIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybn1sZXQgcyxyLGk9ZS5nZXQoIkEiKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSlpZihlLmhhcygiRGVzdCIpKWk9ZS5nZXQoIkRlc3QiKTtlbHNle2k9ZS5nZXQoIkFBIik7aSBpbnN0YW5jZW9mIERpY3QmJihpLmhhcygiRCIpP2k9aS5nZXQoIkQiKTppLmhhcygiVSIpJiYoaT1pLmdldCgiVSIpKSl9aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9aS5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogSW52YWxpZCB0eXBlIGluIEFjdGlvbiBkaWN0aW9uYXJ5LiIpO3JldHVybn1jb25zdCBhPWUubmFtZTtzd2l0Y2goYSl7Y2FzZSJSZXNldEZvcm0iOmNvbnN0IGU9aS5nZXQoIkZsYWdzIiksbz0hKDEmKCJudW1iZXIiPT10eXBlb2YgZT9lOjApKSxsPVtdLGY9W107Zm9yKGNvbnN0IGUgb2YgaS5nZXQoIkZpZWxkcyIpfHxbXSllIGluc3RhbmNlb2YgUmVmP2YucHVzaChlLnRvU3RyaW5nKCkpOiJzdHJpbmciPT10eXBlb2YgZSYmbC5wdXNoKHN0cmluZ1RvUERGU3RyaW5nKGUpKTt0LnJlc2V0Rm9ybT17ZmllbGRzOmwscmVmczpmLGluY2x1ZGU6b307YnJlYWs7Y2FzZSJVUkkiOnM9aS5nZXQoIlVSSSIpO3MgaW5zdGFuY2VvZiBOYW1lJiYocz0iLyIrcy5uYW1lKTticmVhaztjYXNlIkdvVG8iOnI9aS5nZXQoIkQiKTticmVhaztjYXNlIkxhdW5jaCI6Y2FzZSJHb1RvUiI6Y29uc3QgYz1pLmdldCgiRiIpO2lmKGMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW5ldyBGaWxlU3BlYyhjLCEwKTsoe3Jhd0ZpbGVuYW1lOnN9PWUuc2VyaWFsaXphYmxlKX1lbHNle2lmKCJzdHJpbmciIT10eXBlb2YgYylicmVhaztzPWN9Y29uc3QgaD1mZXRjaFJlbW90ZURlc3QoaSk7aCYmKHM9cy5zcGxpdCgiIyIsMSlbMF0rIiMiK2gpO2NvbnN0IHU9aS5nZXQoIk5ld1dpbmRvdyIpOyJib29sZWFuIj09dHlwZW9mIHUmJih0Lm5ld1dpbmRvdz11KTticmVhaztjYXNlIkdvVG9FIjpjb25zdCBtPWkuZ2V0KCJUIik7bGV0IHA7aWYobiYmbSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9bS5nZXQoIlIiKSx0PW0uZ2V0KCJOIik7aXNOYW1lKGUsIkMiKSYmInN0cmluZyI9PXR5cGVvZiB0JiYocD1uW3N0cmluZ1RvUERGU3RyaW5nKHQsITApXSl9aWYocCl7dC5hdHRhY2htZW50PXA7Y29uc3QgZT1mZXRjaFJlbW90ZURlc3QoaSk7ZSYmKHQuYXR0YWNobWVudERlc3Q9ZSl9ZWxzZSB3YXJuKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5pbXBsZW1lbnRlZCAiR29Ub0UiIGFjdGlvbi4nKTticmVhaztjYXNlIk5hbWVkIjpjb25zdCBkPWkuZ2V0KCJOIik7ZCBpbnN0YW5jZW9mIE5hbWUmJih0LmFjdGlvbj1kLm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IGc9aS5nZXQoIlN0YXRlIiksYj1pLmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KGcpfHwwPT09Zy5sZW5ndGgpYnJlYWs7Y29uc3Qgdz1bXTtmb3IoY29uc3QgZSBvZiBnKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpjYXNlIlRvZ2dsZSI6dy5wdXNoKGUubmFtZSl9ZWxzZSBlIGluc3RhbmNlb2YgUmVmJiZ3LnB1c2goZS50b1N0cmluZygpKTtpZih3Lmxlbmd0aCE9PWcubGVuZ3RoKWJyZWFrO3Quc2V0T0NHU3RhdGU9e3N0YXRlOncscHJlc2VydmVSQjoiYm9vbGVhbiIhPXR5cGVvZiBifHxifTticmVhaztjYXNlIkphdmFTY3JpcHQiOmNvbnN0IGo9aS5nZXQoIkpTIik7bGV0IGs7aiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/az1qLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgaiYmKGs9aik7Y29uc3QgeT1rJiZyZWNvdmVySnNVUkwoc3RyaW5nVG9QREZTdHJpbmcoaywhMCkpO2lmKHkpe3M9eS51cmw7dC5uZXdXaW5kb3c9eS5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT1hfHwiU3VibWl0Rm9ybSI9PT1hKWJyZWFrO3dhcm4oYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke2F9Ii5gKX19ZWxzZSBlLmhhcygiRGVzdCIpJiYocj1lLmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIHMpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybChzLGEse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYodC51cmw9ZS5ocmVmKTt0LnVuc2FmZVVybD1zfWlmKHIpe3IgaW5zdGFuY2VvZiBOYW1lJiYocj1yLm5hbWUpOyJzdHJpbmciPT10eXBlb2Ygcj90LmRlc3Q9c3RyaW5nVG9QREZTdHJpbmcociwhMCk6VmkocikmJih0LmRlc3Q9cil9aWYoISh0LmRlc3R8fHQudXJsfHx0LmFjdGlvbnx8dC5hdHRhY2htZW50fHx0LnNldE9DR1N0YXRlfHx0LnJlc2V0Rm9ybSkpe2NvbnN0IGE9ZS5nZXRSYXcoIlNFIik7aWYoYSBpbnN0YW5jZW9mIFJlZil0cnl7Y29uc3Qgbj1DYXRhbG9nLiNydChlLnhyZWYsYSk7biYmKHQuZGVzdD1uKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJTRSBwYXJzaW5nIGZhaWxlZC4iKX19fX1mdW5jdGlvbiBtYXlIYXZlQ2hpbGRyZW4oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWZ8fGUgaW5zdGFuY2VvZiBEaWN0fHxlIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBhZGRDaGlsZHJlbihlLHQpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KWU9ZS5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWU9ZS5kaWN0LmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuO2Zvcihjb25zdCBhIG9mIGUpbWF5SGF2ZUNoaWxkcmVuKGEpJiZ0LnB1c2goYSl9Y2xhc3MgT2JqZWN0TG9hZGVye3JlZlNldD1uZXcgUmVmU2V0O2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRpY3Q9ZTt0aGlzLmtleXM9dDt0aGlzLnhyZWY9YX1hc3luYyBsb2FkKCl7Y29uc3R7a2V5czplLGRpY3Q6dH09dGhpcyxhPVtdO2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcobik7dm9pZCAwIT09ZSYmYS5wdXNoKGUpfWF3YWl0IHRoaXMuI2l0KGEpO3RoaXMucmVmU2V0PW51bGx9YXN5bmMjaXQoZSl7Y29uc3QgdD1bXSxhPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgbj1lLnBvcCgpO2lmKG4gaW5zdGFuY2VvZiBSZWYpe2lmKHRoaXMucmVmU2V0LmhhcyhuKSljb250aW51ZTt0cnl7dGhpcy5yZWZTZXQucHV0KG4pO249dGhpcy54cmVmLmZldGNoKG4pfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl7d2FybihgT2JqZWN0TG9hZGVyLiN3YWxrIC0gcmVxdWVzdGluZyBhbGwgZGF0YTogIiR7ZX0iLmApO2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKCk7cmV0dXJufXQucHVzaChuKTthLnB1c2goe2JlZ2luOmUuYmVnaW4sZW5kOmUuZW5kfSl9fWlmKG4gaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPW4uZ2V0QmFzZVN0cmVhbXMoKTtpZihlKXtsZXQgcz0hMTtmb3IoY29uc3QgdCBvZiBlKWlmKCF0LmlzRGF0YUxvYWRlZCl7cz0hMDthLnB1c2goe2JlZ2luOnQuc3RhcnQsZW5kOnQuZW5kfSl9cyYmdC5wdXNoKG4pfX1hZGRDaGlsZHJlbihuLGUpfWlmKGEubGVuZ3RoKXthd2FpdCB0aGlzLnhyZWYuc3RyZWFtLm1hbmFnZXIucmVxdWVzdFJhbmdlcyhhKTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBSZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTthd2FpdCB0aGlzLiNpdCh0KX19c3RhdGljIGFzeW5jIGxvYWQoZSx0LGEpe2lmKGEuc3RyZWFtLmlzRGF0YUxvYWRlZClyZXR1cm47Y29uc3Qgbj1uZXcgT2JqZWN0TG9hZGVyKGUsdCxhKTthd2FpdCBuLmxvYWQoKX19Y29uc3QgJGk9U3ltYm9sKCksWWk9U3ltYm9sKCksSmk9U3ltYm9sKCksUWk9U3ltYm9sKCksWmk9U3ltYm9sKCksZW89U3ltYm9sKCksdG89U3ltYm9sKCksYW89U3ltYm9sKCksbm89U3ltYm9sKCksc289U3ltYm9sKCJjb250ZW50Iikscm89U3ltYm9sKCJkYXRhIiksaW89U3ltYm9sKCksb289U3ltYm9sKCJleHRyYSIpLGxvPVN5bWJvbCgpLGZvPVN5bWJvbCgpLGNvPVN5bWJvbCgpLGhvPVN5bWJvbCgpLHVvPVN5bWJvbCgpLG1vPVN5bWJvbCgpLHBvPVN5bWJvbCgpLGdvPVN5bWJvbCgpLGJvPVN5bWJvbCgpLHdvPVN5bWJvbCgpLGpvPVN5bWJvbCgpLGtvPVN5bWJvbCgpLHlvPVN5bWJvbCgpLHFvPVN5bWJvbCgpLHZvPVN5bWJvbCgpLFNvPVN5bWJvbCgpLEFvPVN5bWJvbCgpLHhvPVN5bWJvbCgpLENvPVN5bWJvbCgpLElvPVN5bWJvbCgpLEZvPVN5bWJvbCgpLE9vPVN5bWJvbCgpLFJvPVN5bWJvbCgpLEhvPVN5bWJvbCgpLEJvPVN5bWJvbCgpLERvPVN5bWJvbCgpLE1vPVN5bWJvbCgpLE5vPVN5bWJvbCgpLFBvPVN5bWJvbCgpLEVvPVN5bWJvbCgpLF9vPVN5bWJvbCgpLHpvPVN5bWJvbCgpLExvPVN5bWJvbCgibmFtZXNwYWNlSWQiKSxVbz1TeW1ib2woIm5vZGVOYW1lIiksWG89U3ltYm9sKCksV289U3ltYm9sKCksS289U3ltYm9sKCksR289U3ltYm9sKCksVm89U3ltYm9sKCksJG89U3ltYm9sKCksWW89U3ltYm9sKCksSm89U3ltYm9sKCksUW89U3ltYm9sKCJyb290IiksWm89U3ltYm9sKCksZWw9U3ltYm9sKCksdGw9U3ltYm9sKCksYWw9U3ltYm9sKCksbmw9U3ltYm9sKCksc2w9U3ltYm9sKCkscmw9U3ltYm9sKCksaWw9U3ltYm9sKCksb2w9U3ltYm9sKCksbGw9U3ltYm9sKCksZmw9U3ltYm9sKCksY2w9U3ltYm9sKCJ1aWQiKSxobD1TeW1ib2woKSx1bD17Y29uZmlnOntpZDowLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94Y2kvIil9LGNvbm5lY3Rpb25TZXQ6e2lkOjEsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1jb25uZWN0aW9uLXNldC8iKX0sZGF0YXNldHM6e2lkOjIsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLyIpfSxmb3JtOntpZDozLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZm9ybS8iKX0sbG9jYWxlU2V0OntpZDo0LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtbG9jYWxlLXNldC8iKX0scGRmOntpZDo1LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC9wZGYvIj09PWV9LHNpZ25hdHVyZTp7aWQ6NixjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI9PT1lfSxzb3VyY2VTZXQ6e2lkOjcsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1zb3VyY2Utc2V0LyIpfSxzdHlsZXNoZWV0OntpZDo4LGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPT09ZX0sdGVtcGxhdGU6e2lkOjksY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS10ZW1wbGF0ZS8iKX0seGRjOntpZDoxMCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGRjLyIpfSx4ZHA6e2lkOjExLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC8iPT09ZX0seGZkZjp7aWQ6MTIsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGZkZi8iPT09ZX0seGh0bWw6e2lkOjEzLGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWV9LHhtcG1ldGE6e2lkOjE0LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3htcG1ldGEvIj09PWV9fSxtbD17cHQ6ZT0+ZSxjbTplPT5lLzIuNTQqNzIsbW06ZT0+ZS8yNS40KjcyLGluOmU9PjcyKmUscHg6ZT0+ZX0scGw9LyhbKy1dP1xkK1wuP1xkKikoLiopLztmdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCInIil8fGUuc3RhcnRzV2l0aCgnIicpP2Uuc2xpY2UoMSwtMSk6ZX1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgbj1wYXJzZUludChlLDEwKTtyZXR1cm4haXNOYU4obikmJmEobik/bjp0fWZ1bmN0aW9uIGdldEZsb2F0KHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgbj1wYXJzZUZsb2F0KGUpO3JldHVybiFpc05hTihuKSYmYShuKT9uOnR9ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtyZXR1cm4gZSYmYShlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0U3RyaW5nT3B0aW9uKGUsdCl7cmV0dXJuIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dFswXSx2YWxpZGF0ZTplPT50LmluY2x1ZGVzKGUpfSl9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dHx8PSIwIjtpZighZSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7Y29uc3QgYT1lLnRyaW0oKS5tYXRjaChwbCk7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxuLHNdPWEscj1wYXJzZUZsb2F0KG4pO2lmKGlzTmFOKHIpKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09cilyZXR1cm4gMDtjb25zdCBpPW1sW3NdO3JldHVybiBpP2kocik6cn1mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS5zcGxpdCgiOiIsMikubWFwKGU9PnBhcnNlRmxvYXQoZS50cmltKCkpKS5maWx0ZXIoZT0+IWlzTmFOKGUpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFthLG5dPXQ7cmV0dXJue251bTphLGRlbjpufX1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKGU9Pih7ZXhjbHVkZWQ6Ii0iPT09ZVswXSx2aWV3bmFtZTplLnN1YnN0cmluZygxKX0pKTpbXX1jbGFzcyBIVE1MUmVzdWx0e3N0YXRpYyBnZXQgRkFJTFVSRSgpe3JldHVybiBzaGFkb3codGhpcywiRkFJTFVSRSIsbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLG51bGwpKX1zdGF0aWMgZ2V0IEVNUFRZKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxuKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1ufWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fChlLnJlZ3VsYXI9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljKTtpZighdHx8MD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgYT10aGlzLmZvbnRzLmdldCgiUGRmSlMtRmFsbGJhY2stUGRmSlMtWEZBIik7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLmZvbnRzLnNldChlLGEpfWFkZFBkZkZvbnQoZSl7Y29uc3QgdD1lLmNzc0ZvbnRJbmZvLGE9dC5mb250RmFtaWx5LG49dGhpcy5mb250cy5nZXRPckluc2VydENvbXB1dGVkKGEsbWFrZU9iaik7dGhpcy5kZWZhdWx0Rm9udD8/PW47bGV0IHM9IiI7Y29uc3Qgcj1wYXJzZUZsb2F0KHQuZm9udFdlaWdodCk7MCE9PXBhcnNlRmxvYXQodC5pdGFsaWNBbmdsZSk/cz1yPj03MDA/ImJvbGRpdGFsaWMiOiJpdGFsaWMiOnI+PTcwMCYmKHM9ImJvbGQiKTtpZighcyl7KGUubmFtZS5pbmNsdWRlcygiQm9sZCIpfHxlLnBzTmFtZT8uaW5jbHVkZXMoIkJvbGQiKSkmJihzPSJib2xkIik7KGUubmFtZS5pbmNsdWRlcygiSXRhbGljIil8fGUubmFtZS5lbmRzV2l0aCgiSXQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5wc05hbWU/LmVuZHNXaXRoKCJJdCIpKSYmKHMrPSJpdGFsaWMiKX1zfHwocz0icmVndWxhciIpO25bc109ZX1nZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZGVmYXVsdEZvbnR9ZmluZChlLHQ9ITApe2xldCBhPXRoaXMuZm9udHMuZ2V0KGUpfHx0aGlzLmNhY2hlLmdldChlKTtpZihhKXJldHVybiBhO2NvbnN0IG49Lyx8LXxffCB8Ym9sZGl0YWxpY3xib2xkfGl0YWxpY3xyZWd1bGFyfGl0L2dpO2xldCBzPWUucmVwbGFjZUFsbChuLCIiKTthPXRoaXMuZm9udHMuZ2V0KHMpO2lmKGEpe3RoaXMuY2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9cz1zLnRvTG93ZXJDYXNlKCk7Y29uc3Qgcj1bXTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMpZS5yZXBsYWNlQWxsKG4sIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzKSYmci5wdXNoKHQpO2lmKDA9PT1yLmxlbmd0aClmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhci5uYW1lPy5yZXBsYWNlQWxsKG4sIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzKSYmci5wdXNoKGUpO2lmKDA9PT1yLmxlbmd0aCl7cz1zLnJlcGxhY2VBbGwoL3BzbXR8bXQvZ2ksIiIpO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cyllLnJlcGxhY2VBbGwobiwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHMpJiZyLnB1c2godCl9aWYoMD09PXIubGVuZ3RoKWZvcihjb25zdCBlIG9mIHRoaXMuZm9udHMudmFsdWVzKCkpZS5yZWd1bGFyLm5hbWU/LnJlcGxhY2VBbGwobiwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHMpJiZyLnB1c2goZSk7aWYoci5sZW5ndGg+PTEpezEhPT1yLmxlbmd0aCYmdCYmd2FybihgWEZBIC0gVG9vIG1hbnkgY2hvaWNlcyB0byBndWVzcyB0aGUgY29ycmVjdCBmb250OiAke2V9YCk7dGhpcy5jYWNoZS5zZXQoZSxyWzBdKTtyZXR1cm4gclswXX1pZih0JiYhdGhpcy53YXJuZWQuaGFzKGUpKXt0aGlzLndhcm5lZC5hZGQoZSk7d2FybihgWEZBIC0gQ2Fubm90IGZpbmQgdGhlIGZvbnQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19ZnVuY3Rpb24gc2VsZWN0Rm9udChlLHQpe3JldHVybiJpdGFsaWMiPT09ZS5wb3N0dXJlPyJib2xkIj09PWUud2VpZ2h0P3QuYm9sZGl0YWxpYzp0Lml0YWxpYzoiYm9sZCI9PT1lLndlaWdodD90LmJvbGQ6dC5yZWd1bGFyfWNsYXNzIEZvbnRJbmZve2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMubGluZUhlaWdodD1hO3RoaXMucGFyYU1hcmdpbj10fHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjB9O2lmKCFlKXtbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKTtyZXR1cm59dGhpcy54ZmFGb250PXt0eXBlZmFjZTplLnR5cGVmYWNlLHBvc3R1cmU6ZS5wb3N0dXJlLHdlaWdodDplLndlaWdodCxzaXplOmUuc2l6ZSxsZXR0ZXJTcGFjaW5nOmUubGV0dGVyU3BhY2luZ307Y29uc3Qgcz1uLmZpbmQoZS50eXBlZmFjZSk7aWYocyl7dGhpcy5wZGZGb250PXNlbGVjdEZvbnQoZSxzKTt0aGlzLnBkZkZvbnR8fChbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKSl9ZWxzZVt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KG4pfWRlZmF1bHRGb250KGUpe2NvbnN0IHQ9ZS5maW5kKCJIZWx2ZXRpY2EiLCExKXx8ZS5maW5kKCJNeXJpYWQgUHJvIiwhMSl8fGUuZmluZCgiQXJpYWwiLCExKXx8ZS5nZXREZWZhdWx0KCk7aWYodD8ucmVndWxhcil7Y29uc3QgZT10LnJlZ3VsYXI7cmV0dXJuW2Use3R5cGVmYWNlOmUuY3NzRm9udEluZm8uZm9udEZhbWlseSxwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfXJldHVybltudWxsLHt0eXBlZmFjZToiQ291cmllciIscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX19Y2xhc3MgRm9udFNlbGVjdG9ye2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMuZm9udEZpbmRlcj1uO3RoaXMuc3RhY2s9W25ldyBGb250SW5mbyhlLHQsYSxuKV19cHVzaERhdGEoZSx0LGEpe2NvbnN0IG49dGhpcy5zdGFjay5hdCgtMSk7Zm9yKGNvbnN0IHQgb2ZbInR5cGVmYWNlIiwicG9zdHVyZSIsIndlaWdodCIsInNpemUiLCJsZXR0ZXJTcGFjaW5nIl0pZVt0XXx8PW4ueGZhRm9udFt0XTtmb3IoY29uc3QgZSBvZlsidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Il0paXNOYU4odFtlXSkmJih0W2VdPW4ucGFyYU1hcmdpbltlXSk7Y29uc3Qgcz1uZXcgRm9udEluZm8oZSx0LGF8fG4ubGluZUhlaWdodCx0aGlzLmZvbnRGaW5kZXIpO3MucGRmRm9udHx8PW4ucGRmRm9udDt0aGlzLnN0YWNrLnB1c2gocyl9cG9wRm9udCgpe3RoaXMuc3RhY2sucG9wKCl9dG9wRm9udCgpe3JldHVybiB0aGlzLnN0YWNrLmF0KC0xKX19Y2xhc3MgVGV4dE1lYXN1cmV7Y29uc3RydWN0b3IoZSx0LGEsbil7dGhpcy5nbHlwaHM9W107dGhpcy5mb250U2VsZWN0b3I9bmV3IEZvbnRTZWxlY3RvcihlLHQsYSxuKTt0aGlzLmV4dHJhSGVpZ2h0PTB9cHVzaERhdGEoZSx0LGEpe3RoaXMuZm9udFNlbGVjdG9yLnB1c2hEYXRhKGUsdCxhKX1wb3BGb250KGUpe3JldHVybiB0aGlzLmZvbnRTZWxlY3Rvci5wb3BGb250KCl9YWRkUGFyYSgpe2NvbnN0IGU9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpO3RoaXMuZXh0cmFIZWlnaHQrPWUucGFyYU1hcmdpbi50b3ArZS5wYXJhTWFyZ2luLmJvdHRvbX1hZGRTdHJpbmcoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpLGE9dC54ZmFGb250LnNpemU7aWYodC5wZGZGb250KXtjb25zdCBuPXQueGZhRm9udC5sZXR0ZXJTcGFjaW5nLHM9dC5wZGZGb250LHI9cy5saW5lSGVpZ2h0fHwxLjIsaT10LmxpbmVIZWlnaHR8fE1hdGgubWF4KDEuMixyKSphLG89ci0odm9pZCAwPT09cy5saW5lR2FwPy4yOnMubGluZUdhcCksbD1NYXRoLm1heCgxLG8pKmEsZj1hLzFlMyxjPXMuZGVmYXVsdFdpZHRofHxzLmNoYXJzVG9HbHlwaHMoIiAiKVswXS53aWR0aDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2NvbnN0IGU9cy5lbmNvZGVTdHJpbmcodCkuam9pbigiIiksYT1zLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1lLndpZHRofHxjO3RoaXMuZ2x5cGhzLnB1c2goW3QqZituLGksbCxlLnVuaWNvZGUsITFdKX10aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCk7cmV0dXJufWZvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiIikpdGhpcy5nbHlwaHMucHVzaChbYSwxLjIqYSxhLGUsITFdKTt0aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9Y29tcHV0ZShlKXtsZXQgdD0tMSxhPTAsbj0wLHM9MCxyPTAsaT0wLG89ITEsbD0hMDtmb3IobGV0IGY9MCxjPXRoaXMuZ2x5cGhzLmxlbmd0aDtmPGM7ZisrKXtjb25zdFtjLGgsdSxtLHBdPXRoaXMuZ2x5cGhzW2ZdLGQ9IiAiPT09bSxnPWw/dTpoO2lmKHApe249TWF0aC5tYXgobixyKTtyPTA7cys9aTtpPWc7dD0tMTthPTA7bD0hMX1lbHNlIGlmKGQpaWYocitjPmUpe249TWF0aC5tYXgobixyKTtyPTA7cys9aTtpPWc7dD0tMTthPTA7bz0hMDtsPSExfWVsc2V7aT1NYXRoLm1heChnLGkpO2E9cjtyKz1jO3Q9Zn1lbHNlIGlmKHIrYz5lKXtzKz1pO2k9ZztpZigtMSE9PXQpe2Y9dDtuPU1hdGgubWF4KG4sYSk7cj0wO3Q9LTE7YT0wfWVsc2V7bj1NYXRoLm1heChuLHIpO3I9Y31vPSEwO2w9ITF9ZWxzZXtyKz1jO2k9TWF0aC5tYXgoZyxpKX19bj1NYXRoLm1heChuLHIpO3MrPWkrdGhpcy5leHRyYUhlaWdodDtyZXR1cm57d2lkdGg6MS4wMipuLGhlaWdodDpzLGlzQnJva2VuOm99fX1jb25zdCBkbD0vXlteLltdKy8sZ2w9L15bXlxdXSsvLGJsPTAsd2w9MSxqbD0yLGtsPTMseWw9NCxxbD1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW2tvXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSx2bD1uZXcgV2Vha01hcDtmdW5jdGlvbiBwYXJzZUluZGV4KGUpe3JldHVybiIqIj09PShlPWUudHJpbSgpKT8xLzA6cGFyc2VJbnQoZSwxMCl8fDB9ZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKGUsdCxhPSEwKXtsZXQgbj1lLm1hdGNoKGRsKTtpZighbilyZXR1cm4gbnVsbDtsZXRbc109bjtjb25zdCByPVt7bmFtZTpzLGNhY2hlTmFtZToiLiIrcyxpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbCxvcGVyYXRvcjpibH1dO2xldCBpPXMubGVuZ3RoO2Zvcig7aTxlLmxlbmd0aDspe2NvbnN0IG89aTtpZigiWyI9PT1lLmNoYXJBdChpKyspKXtuPWUuc2xpY2UoaSkubWF0Y2goZ2wpO2lmKCFuKXt3YXJuKCJYRkEgLSBJbnZhbGlkIGluZGV4IGluIFNPTSBleHByZXNzaW9uIik7cmV0dXJuIG51bGx9ci5hdCgtMSkuaW5kZXg9cGFyc2VJbmRleChuWzBdKTtpKz1uWzBdLmxlbmd0aCsxO2NvbnRpbnVlfWxldCBsO3N3aXRjaChlLmNoYXJBdChpKSl7Y2FzZSIuIjppZighdClyZXR1cm4gbnVsbDtpKys7bD13bDticmVhaztjYXNlIiMiOmkrKztsPWpsO2JyZWFrO2Nhc2UiWyI6aWYoYSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBGb3JtQ2FsYyBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1sPWtsO2JyZWFrO2Nhc2UiKCI6aWYoYSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBKYXZhU2NyaXB0IHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWw9eWw7YnJlYWs7ZGVmYXVsdDpsPWJsfW49ZS5zbGljZShpKS5tYXRjaChkbCk7aWYoIW4pYnJlYWs7W3NdPW47aSs9cy5sZW5ndGg7ci5wdXNoKHtuYW1lOnMsY2FjaGVOYW1lOmUuc2xpY2UobyxpKSxvcGVyYXRvcjpsLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsfSl9cmV0dXJuIHJ9ZnVuY3Rpb24gc2VhcmNoTm9kZShlLHQsYSxuPSEwLHM9ITApe2NvbnN0IHI9cGFyc2VFeHByZXNzaW9uKGEsbik7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3QgaT1xbC5nZXQoclswXS5uYW1lKTtsZXQgbyxsPTA7aWYoaSl7bz0hMDtlPVtpKGUsdCldO2w9MX1lbHNle289bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBhPXIubGVuZ3RoO2w8YTtsKyspe2NvbnN0e25hbWU6YSxjYWNoZU5hbWU6bixvcGVyYXRvcjppLGluZGV4OmZ9PXJbbF0sYz1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighdC5pc1hGQU9iamVjdCljb250aW51ZTtsZXQgZSxyO2lmKHMpe3I9dmwuZ2V0T3JJbnNlcnRDb21wdXRlZCh0LG1ha2VNYXApO2U9ci5nZXQobil9aWYoIWUpe3N3aXRjaChpKXtjYXNlIGJsOmU9dFtwb10oYSwhMSk7YnJlYWs7Y2FzZSB3bDplPXRbcG9dKGEsITApO2JyZWFrO2Nhc2Ugamw6ZT10W21vXShhKTtlPWUuaXNYRkFPYmplY3RBcnJheT9lLmNoaWxkcmVuOltlXX1zJiZyLnNldChuLGUpfWUubGVuZ3RoPjAmJmMucHVzaChlKX1pZigwPT09Yy5sZW5ndGgmJiFvJiYwPT09bCl7Y29uc3QgYT10W1NvXSgpO2lmKCEodD1hKSlyZXR1cm4gbnVsbDtsPS0xO2U9W3RdO2NvbnRpbnVlfWU9aXNGaW5pdGUoZik/Yy5maWx0ZXIoZT0+ZjxlLmxlbmd0aCkubWFwKGU9PmVbZl0pOmMuZmxhdCgpfXJldHVybiAwPT09ZS5sZW5ndGg/bnVsbDplfWZ1bmN0aW9uIGNyZWF0ZURhdGFOb2RlKGUsdCxhKXtjb25zdCBuPXBhcnNlRXhwcmVzc2lvbihhKTtpZighbilyZXR1cm4gbnVsbDtpZihuLnNvbWUoZT0+ZS5vcGVyYXRvcj09PXdsKSlyZXR1cm4gbnVsbDtjb25zdCBzPXFsLmdldChuWzBdLm5hbWUpO2xldCByPTA7aWYocyl7ZT1zKGUsdCk7cj0xfWVsc2UgZT10fHxlO2ZvcihsZXQgdD1uLmxlbmd0aDtyPHQ7cisrKXtjb25zdHtuYW1lOnQsb3BlcmF0b3I6YSxpbmRleDpzfT1uW3JdO2lmKCFpc0Zpbml0ZShzKSl7bltyXS5pbmRleD0wO3JldHVybiBlLmNyZWF0ZU5vZGVzKG4uc2xpY2UocikpfWxldCBpO3N3aXRjaChhKXtjYXNlIGJsOmk9ZVtwb10odCwhMSk7YnJlYWs7Y2FzZSB3bDppPWVbcG9dKHQsITApO2JyZWFrO2Nhc2Ugamw6aT1lW21vXSh0KTtpPWkuaXNYRkFPYmplY3RBcnJheT9pLmNoaWxkcmVuOltpXX1pZigwPT09aS5sZW5ndGgpcmV0dXJuIGUuY3JlYXRlTm9kZXMobi5zbGljZShyKSk7aWYoIShzPGkubGVuZ3RoKSl7bltyXS5pbmRleD1zLWkubGVuZ3RoO3JldHVybiBlLmNyZWF0ZU5vZGVzKG4uc2xpY2UocikpfXtjb25zdCB0PWlbc107aWYoIXQuaXNYRkFPYmplY3Qpe3dhcm4oIlhGQSAtIENhbm5vdCBjcmVhdGUgYSBub2RlLiIpO3JldHVybiBudWxsfWU9dH19cmV0dXJuIG51bGx9Y29uc3QgU2w9U3ltYm9sKCksQWw9U3ltYm9sKCkseGw9U3ltYm9sKCksQ2w9U3ltYm9sKCJfY2hpbGRyZW4iKSxJbD1TeW1ib2woKSxGbD1TeW1ib2woKSxUbD1TeW1ib2woKSxSbD1TeW1ib2woKSxIbD1TeW1ib2woKSxCbD1TeW1ib2woKSxEbD1TeW1ib2woKSxNbD1TeW1ib2woKSxObD1TeW1ib2woKSxQbD1TeW1ib2woInBhcmVudCIpLEVsPVN5bWJvbCgpLF9sPVN5bWJvbCgpLHpsPVN5bWJvbCgpO2xldCBMbD0wO2NvbnN0IFhsPXVsLmRhdGFzZXRzLmlkO2NsYXNzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYT0hMSl7dGhpc1tMb109ZTt0aGlzW1VvXT10O3RoaXNbRGxdPWE7dGhpc1tQbF09bnVsbDt0aGlzW0NsXT1bXTt0aGlzW2NsXT1gJHt0fSR7TGwrK31gO3RoaXNbeG9dPW51bGx9Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITB9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMX1jcmVhdGVOb2RlcyhlKXtsZXQgdD10aGlzLGE9bnVsbDtmb3IoY29uc3R7bmFtZTpuLGluZGV4OnN9b2YgZSl7Zm9yKGxldCBlPTAscj1pc0Zpbml0ZShzKT9zOjA7ZTw9cjtlKyspe2NvbnN0IGU9dFtMb109PT1YbD8tMTp0W0xvXTthPW5ldyBYbWxPYmplY3QoZSxuKTt0W0ppXShhKX10PWF9cmV0dXJuIGF9W1dvXShlKXtpZighdGhpc1tEbF18fCF0aGlzW0tvXShlKSlyZXR1cm4hMTtjb25zdCB0PWVbVW9dLGE9dGhpc1t0XTtpZighKGEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpe251bGwhPT1hJiZ0aGlzW0pvXShhKTt0aGlzW3RdPWU7dGhpc1tKaV0oZSk7cmV0dXJuITB9aWYoYS5wdXNoKGUpKXt0aGlzW0ppXShlKTtyZXR1cm4hMH1sZXQgbj0iIjt0aGlzLmlkP249YCAoaWQ6ICR7dGhpcy5pZH0pYDp0aGlzLm5hbWUmJihuPWAgKG5hbWU6ICR7dGhpcy5uYW1lfSAke3RoaXMuaC52YWx1ZX0pYCk7d2FybihgWEZBIC0gbm9kZSAiJHt0aGlzW1VvXX0iJHtufSBoYXMgYWxyZWFkeSBlbm91Z2ggIiR7dH0iIWApO3JldHVybiExfVtLb10oZSl7cmV0dXJuIE9iamVjdC5oYXNPd24odGhpcyxlW1VvXSkmJmVbTG9dPT09dGhpc1tMb119W01vXSgpe3JldHVybiExfVskaV0oKXtyZXR1cm4hMX1bUm9dKCl7cmV0dXJuITF9W0hvXSgpe3JldHVybiExfVskb10oKXt0aGlzLnBhcmEmJnRoaXNbQW9dKClbb29dLnBhcmFTdGFjay5wb3AoKX1bWW9dKCl7dGhpc1tBb10oKVtvb10ucGFyYVN0YWNrLnB1c2godGhpcy5wYXJhKX1bdGxdKGUpe3RoaXMuaWQmJnRoaXNbTG9dPT09dWwudGVtcGxhdGUuaWQmJmUuc2V0KHRoaXMuaWQsdGhpcyl9W0FvXSgpe3JldHVybiB0aGlzW3hvXS50ZW1wbGF0ZX1bTm9dKCl7cmV0dXJuITF9W1BvXSgpe3JldHVybiExfVtKaV0oZSl7ZVtQbF09dGhpczt0aGlzW0NsXS5wdXNoKGUpOyFlW3hvXSYmdGhpc1t4b10mJihlW3hvXT10aGlzW3hvXSl9W0pvXShlKXtjb25zdCB0PXRoaXNbQ2xdLmluZGV4T2YoZSk7dGhpc1tDbF0uc3BsaWNlKHQsMSl9W0NvXSgpe3JldHVybiBPYmplY3QuaGFzT3duKHRoaXMsInZhbHVlIil9W25sXShlKXt9W0dvXShlKXt9W2xvXSgpe31bWmldKGUpe2RlbGV0ZSB0aGlzW0RsXTtpZih0aGlzW3RvXSl7ZS5jbGVhbih0aGlzW3RvXSk7ZGVsZXRlIHRoaXNbdG9dfX1bRm9dKGUpe3JldHVybiB0aGlzW0NsXS5pbmRleE9mKGUpfVtPb10oZSx0KXt0W1BsXT10aGlzO3RoaXNbQ2xdLnNwbGljZShlLDAsdCk7IXRbeG9dJiZ0aGlzW3hvXSYmKHRbeG9dPXRoaXNbeG9dKX1bRW9dKCl7cmV0dXJuIXRoaXMubmFtZX1bem9dKCl7cmV0dXJuIiJ9W3JsXSgpe3JldHVybiAwPT09dGhpc1tDbF0ubGVuZ3RoP3RoaXNbc29dOnRoaXNbQ2xdLm1hcChlPT5lW3JsXSgpKS5qb2luKCIiKX1nZXRbeGxdKCl7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYoIWUuX2F0dHJpYnV0ZXMpe2NvbnN0IHQ9ZS5fYXR0cmlidXRlcz1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZihudWxsPT09dGhpc1tlXXx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0fHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSlicmVhazt0LmFkZChlKX19cmV0dXJuIHNoYWRvdyh0aGlzLHhsLGUuX2F0dHJpYnV0ZXMpfVtEb10oZSl7bGV0IHQ9dGhpcztmb3IoO3Q7KXtpZih0PT09ZSlyZXR1cm4hMDt0PXRbU29dKCl9cmV0dXJuITF9W1NvXSgpe3JldHVybiB0aGlzW1BsXX1bdm9dKCl7cmV0dXJuIHRoaXNbU29dKCl9W2tvXShlPW51bGwpe3JldHVybiBlP3RoaXNbZV06dGhpc1tDbF19W2lvXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzW3NvXSYmKGUuJGNvbnRlbnQ9dGhpc1tzb10pO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCBhPXRoaXNbdF07bnVsbCE9PWEmJihhIGluc3RhbmNlb2YgWEZBT2JqZWN0P2VbdF09YVtpb10oKTphIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/YS5pc0VtcHR5KCl8fChlW3RdPWEuZHVtcCgpKTplW3RdPWEpfXJldHVybiBlfVtmbF0oKXtyZXR1cm4gbnVsbH1bb2xdKCl7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Klt5b10oKXtmb3IoY29uc3QgZSBvZiB0aGlzW2tvXSgpKXlpZWxkIGV9KltSbF0oZSx0KXtmb3IoY29uc3QgYSBvZiB0aGlzW3lvXSgpKWlmKCFlfHx0PT09ZS5oYXMoYVtVb10pKXtjb25zdCBlPXRoaXNbdW9dKCksdD1hW29sXShlKTt0LnN1Y2Nlc3N8fCh0aGlzW29vXS5mYWlsaW5nTm9kZT1hKTt5aWVsZCB0fX1bZm9dKCl7cmV0dXJuIG51bGx9W1lpXShlLHQpe3RoaXNbb29dLmNoaWxkcmVuLnB1c2goZSl9W3VvXSgpe31bUWldKHtmaWx0ZXI6ZT1udWxsLGluY2x1ZGU6dD0hMH0pe2lmKHRoaXNbb29dLmdlbmVyYXRvcil7Y29uc3QgZT10aGlzW3VvXSgpLHQ9dGhpc1tvb10uZmFpbGluZ05vZGVbb2xdKGUpO2lmKCF0LnN1Y2Nlc3MpcmV0dXJuIHQ7dC5odG1sJiZ0aGlzW1lpXSh0Lmh0bWwsdC5iYm94KTtkZWxldGUgdGhpc1tvb10uZmFpbGluZ05vZGV9ZWxzZSB0aGlzW29vXS5nZW5lcmF0b3I9dGhpc1tSbF0oZSx0KTtmb3IoOzspe2NvbnN0IGU9dGhpc1tvb10uZ2VuZXJhdG9yLm5leHQoKTtpZihlLmRvbmUpYnJlYWs7Y29uc3QgdD1lLnZhbHVlO2lmKCF0LnN1Y2Nlc3MpcmV0dXJuIHQ7dC5odG1sJiZ0aGlzW1lpXSh0Lmh0bWwsdC5iYm94KX10aGlzW29vXS5nZW5lcmF0b3I9bnVsbDtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1bYWxdKGUpe3RoaXNbX2xdPW5ldyBTZXQoT2JqZWN0LmtleXMoZSkpfVtCbF0oZSl7Y29uc3QgdD10aGlzW3hsXSxhPXRoaXNbX2xdO3JldHVyblsuLi5lXS5maWx0ZXIoZT0+dC5oYXMoZSkmJiFhLmhhcyhlKSl9W1pvXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tDbF0pYVtFbF0oZSx0KX1bRWxdKGUsdCl7Y29uc3QgYT10aGlzW0hsXShlLHQpO2E/dGhpc1tTbF0oYSxlLHQpOnRoaXNbWm9dKGUsdCl9W0hsXShlLHQpe2NvbnN0e3VzZTphLHVzZWhyZWY6bn09dGhpcztpZighYSYmIW4pcmV0dXJuIG51bGw7bGV0IHM9bnVsbCxyPW51bGwsaT1udWxsLG89YTtpZihuKXtvPW47bi5zdGFydHNXaXRoKCIjc29tKCIpJiZuLmVuZHNXaXRoKCIpIik/cj1uLnNsaWNlKDUsLTEpOm4uc3RhcnRzV2l0aCgiLiNzb20oIikmJm4uZW5kc1dpdGgoIikiKT9yPW4uc2xpY2UoNiwtMSk6bi5zdGFydHNXaXRoKCIjIik/aT1uLnNsaWNlKDEpOm4uc3RhcnRzV2l0aCgiLiMiKSYmKGk9bi5zbGljZSgyKSl9ZWxzZSBhLnN0YXJ0c1dpdGgoIiMiKT9pPWEuc2xpY2UoMSk6cj1hO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihpKXM9ZS5nZXQoaSk7ZWxzZXtzPXNlYXJjaE5vZGUoZS5nZXQoUW8pLHRoaXMsciwhMCwhMSk7cyYmKHM9c1swXSl9aWYoIXMpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihzW1VvXSE9PXRoaXNbVW9dKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3NbVW9dfSAhPT0gJHt0aGlzW1VvXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocykpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHMpO2NvbnN0IGw9c1tIbF0oZSx0KTtsJiZzW1NsXShsLGUsdCk7c1tab10oZSx0KTt0LmRlbGV0ZShzKTtyZXR1cm4gc31bU2xdKGUsdCxhKXtpZihhLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW3NvXSYmZVtzb10mJih0aGlzW3NvXT1lW3NvXSk7bmV3IFNldChhKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tCbF0oZVtfbF0pKXt0aGlzW3RdPWVbdF07dGhpc1tfbF0mJnRoaXNbX2xdLmFkZCh0KX1mb3IoY29uc3QgbiBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1t4bF0uaGFzKG4pKWNvbnRpbnVlO2NvbnN0IHM9dGhpc1tuXSxyPWVbbl07aWYocyBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBzW0NsXSllW0VsXSh0LGEpO2ZvcihsZXQgbj1zW0NsXS5sZW5ndGgsaT1yW0NsXS5sZW5ndGg7bjxpO24rKyl7Y29uc3Qgcj1lW0NsXVtuXVthb10oKTtpZighcy5wdXNoKHIpKWJyZWFrO3JbUGxdPXRoaXM7dGhpc1tDbF0ucHVzaChyKTtyW0VsXSh0LGEpfX1lbHNlIGlmKG51bGw9PT1zKXtpZihudWxsIT09cil7Y29uc3QgZT1yW2FvXSgpO2VbUGxdPXRoaXM7dGhpc1tuXT1lO3RoaXNbQ2xdLnB1c2goZSk7ZVtFbF0odCxhKX19ZWxzZXtzW1pvXSh0LGEpO3ImJnNbU2xdKHIsdCxhKX19fXN0YXRpY1tJbF0oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoZT0+WEZBT2JqZWN0W0lsXShlKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W2FvXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGhpcykpdHJ5e2VbdF09dGhpc1t0XX1jYXRjaHtzaGFkb3coZSx0LHRoaXNbdF0pfWVbY2xdPWAke2VbVW9dfSR7TGwrK31gO2VbQ2xdPVtdO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZih0aGlzW3hsXS5oYXModCkpe2VbdF09WEZBT2JqZWN0W0lsXSh0aGlzW3RdKTtjb250aW51ZX1jb25zdCBhPXRoaXNbdF07ZVt0XT1hIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/bmV3IFhGQU9iamVjdEFycmF5KGFbTWxdKTpudWxsfWZvcihjb25zdCB0IG9mIHRoaXNbQ2xdKXtjb25zdCBhPXRbVW9dLG49dFthb10oKTtlW0NsXS5wdXNoKG4pO25bUGxdPWU7bnVsbD09PWVbYV0/ZVthXT1uOmVbYV1bQ2xdLnB1c2gobil9cmV0dXJuIGV9W2tvXShlPW51bGwpe3JldHVybiBlP3RoaXNbQ2xdLmZpbHRlcih0PT50W1VvXT09PWUpOnRoaXNbQ2xdfVttb10oZSl7cmV0dXJuIHRoaXNbZV19W3BvXShlLHQsYT0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1tnb10oZSx0LGEpKX0qW2dvXShlLHQsYT0hMCl7aWYoInBhcmVudCIhPT1lKXtmb3IoY29uc3QgYSBvZiB0aGlzW0NsXSl7YVtVb109PT1lJiYoeWllbGQgYSk7YS5uYW1lPT09ZSYmKHlpZWxkIGEpOyh0fHxhW0VvXSgpKSYmKHlpZWxkKmFbZ29dKGUsdCwhMSkpfWEmJnRoaXNbeGxdLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbUGxdfX1jbGFzcyBYRkFPYmplY3RBcnJheXtjb25zdHJ1Y3RvcihlPTEvMCl7dGhpc1tNbF09ZTt0aGlzW0NsXT1bXX1nZXQgaXNYRkFPYmplY3QoKXtyZXR1cm4hMX1nZXQgaXNYRkFPYmplY3RBcnJheSgpe3JldHVybiEwfXB1c2goZSl7aWYodGhpc1tDbF0ubGVuZ3RoPD10aGlzW01sXSl7dGhpc1tDbF0ucHVzaChlKTtyZXR1cm4hMH13YXJuKGBYRkEgLSBub2RlICIke2VbVW9dfSIgYWNjZXB0cyBubyBtb3JlIHRoYW4gJHt0aGlzW01sXX0gY2hpbGRyZW5gKTtyZXR1cm4hMX1pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzW0NsXS5sZW5ndGh9ZHVtcCgpe3JldHVybiAxPT09dGhpc1tDbF0ubGVuZ3RoP3RoaXNbQ2xdWzBdW2lvXSgpOnRoaXNbQ2xdLm1hcChlPT5lW2lvXSgpKX1bYW9dKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1tNbF0pO2VbQ2xdPXRoaXNbQ2xdLm1hcChlPT5lW2FvXSgpKTtyZXR1cm4gZX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpc1tDbF19Y2xlYXIoKXt0aGlzW0NsXS5sZW5ndGg9MH19Y2xhc3MgWEZBQXR0cmlidXRle2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzW1BsXT1lO3RoaXNbVW9dPXQ7dGhpc1tzb109YTt0aGlzW25vXT0hMTt0aGlzW2NsXT0iYXR0cmlidXRlIitMbCsrfVtTb10oKXtyZXR1cm4gdGhpc1tQbF19W0JvXSgpe3JldHVybiEwfVtib10oKXtyZXR1cm4gdGhpc1tzb10udHJpbSgpfVtubF0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW3NvXT1lLnRvU3RyaW5nKCl9W3JsXSgpe3JldHVybiB0aGlzW3NvXX1bRG9dKGUpe3JldHVybiB0aGlzW1BsXT09PWV8fHRoaXNbUGxdW0RvXShlKX19Y2xhc3MgWG1sT2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhPXt9KXtzdXBlcihlLHQpO3RoaXNbc29dPSIiO3RoaXNbRmxdPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW0FsXT1lO2Zvcihjb25zdFt0LG5db2YgT2JqZWN0LmVudHJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxuKSk7aWYoT2JqZWN0Lmhhc093bihhLFhvKSl7Y29uc3QgZT1hW1hvXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW0ZsXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW0ZsXT0hMCkpfX10aGlzW25vXT0hMX1bbGxdKGUpe2NvbnN0IHQ9dGhpc1tVb107aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW3NvXSkpO3JldHVybn1jb25zdCBhPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxuPXRoaXNbTG9dPT09WGw/InhmYToiOiIiO2UucHVzaChgPCR7bn0ke2F9YCk7Zm9yKGNvbnN0W3QsYV1vZiB0aGlzW0FsXSl7Y29uc3Qgbj11dGY4U3RyaW5nVG9TdHJpbmcodCk7ZS5wdXNoKGAgJHtufT0iJHtlbmNvZGVUb1htbFN0cmluZyhhW3NvXSl9ImApfW51bGwhPT10aGlzW0ZsXSYmKHRoaXNbRmxdP2UucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YVZhbHVlIicpOmUucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YUdyb3VwIicpKTtpZih0aGlzW3NvXXx8MCE9PXRoaXNbQ2xdLmxlbmd0aCl7ZS5wdXNoKCI+Iik7aWYodGhpc1tzb10pInN0cmluZyI9PXR5cGVvZiB0aGlzW3NvXT9lLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpc1tzb10pKTp0aGlzW3NvXVtsbF0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW0NsXSl0W2xsXShlKTtlLnB1c2goYDwvJHtufSR7YX0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W1dvXShlKXtpZih0aGlzW3NvXSl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbTG9dLCIjdGV4dCIpO3RoaXNbSmldKGUpO2Vbc29dPXRoaXNbc29dO3RoaXNbc29dPSIifXRoaXNbSmldKGUpO3JldHVybiEwfVtHb10oZSl7dGhpc1tzb10rPWV9W2xvXSgpe2lmKHRoaXNbc29dJiZ0aGlzW0NsXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbTG9dLCIjdGV4dCIpO3RoaXNbSmldKGUpO2Vbc29dPXRoaXNbc29dO2RlbGV0ZSB0aGlzW3NvXX19W29sXSgpe3JldHVybiIjdGV4dCI9PT10aGlzW1VvXT9IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6IiN0ZXh0Iix2YWx1ZTp0aGlzW3NvXX0pOkhUTUxSZXN1bHQuRU1QVFl9W2tvXShlPW51bGwpe3JldHVybiBlP3RoaXNbQ2xdLmZpbHRlcih0PT50W1VvXT09PWUpOnRoaXNbQ2xdfVtob10oKXtyZXR1cm4gdGhpc1tBbF19W21vXShlKXtjb25zdCB0PXRoaXNbQWxdLmdldChlKTtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXNba29dKGUpfSpbZ29dKGUsdCl7Y29uc3QgYT10aGlzW0FsXS5nZXQoZSk7YSYmKHlpZWxkIGEpO2Zvcihjb25zdCBhIG9mIHRoaXNbQ2xdKXthW1VvXT09PWUmJih5aWVsZCBhKTt0JiYoeWllbGQqYVtnb10oZSx0KSl9fSpbY29dKGUsdCl7Y29uc3QgYT10aGlzW0FsXS5nZXQoZSk7IWF8fHQmJmFbbm9dfHwoeWllbGQgYSk7Zm9yKGNvbnN0IGEgb2YgdGhpc1tDbF0peWllbGQqYVtjb10oZSx0KX0qW2pvXShlLHQsYSl7Zm9yKGNvbnN0IG4gb2YgdGhpc1tDbF0pe25bVW9dIT09ZXx8YSYmbltub118fCh5aWVsZCBuKTt0JiYoeWllbGQqbltqb10oZSx0LGEpKX19W0JvXSgpe3JldHVybiBudWxsPT09dGhpc1tGbF0/MD09PXRoaXNbQ2xdLmxlbmd0aHx8dGhpc1tDbF1bMF1bTG9dPT09dWwueGh0bWwuaWQ6dGhpc1tGbF19W2JvXSgpe3JldHVybiBudWxsPT09dGhpc1tGbF0/MD09PXRoaXNbQ2xdLmxlbmd0aD90aGlzW3NvXS50cmltKCk6dGhpc1tDbF1bMF1bTG9dPT09dWwueGh0bWwuaWQ/dGhpc1tDbF1bMF1bcmxdKCkudHJpbSgpOm51bGw6dGhpc1tzb10udHJpbSgpfVtubF0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW3NvXT1lLnRvU3RyaW5nKCl9W2lvXShlPSExKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSYmKHQuJG5zPXRoaXNbTG9dKTt0aGlzW3NvXSYmKHQuJGNvbnRlbnQ9dGhpc1tzb10pO3QuJG5hbWU9dGhpc1tVb107dC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgYSBvZiB0aGlzW0NsXSl0LmNoaWxkcmVuLnB1c2goYVtpb10oZSkpO3QuYXR0cmlidXRlcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLGFdb2YgdGhpc1tBbF0pdC5hdHRyaWJ1dGVzW2VdPWFbc29dO3JldHVybiB0fX1jbGFzcyBDb250ZW50T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KTt0aGlzW3NvXT0iIn1bR29dKGUpe3RoaXNbc29dKz1lfVtsb10oKXt9fWNsYXNzIE9wdGlvbk9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGUsdCk7dGhpc1tObF09YX1bbG9dKCl7dGhpc1tzb109Z2V0S2V5d29yZCh7ZGF0YTp0aGlzW3NvXSxkZWZhdWx0VmFsdWU6dGhpc1tObF1bMF0sdmFsaWRhdGU6ZT0+dGhpc1tObF0uaW5jbHVkZXMoZSl9KX1bWmldKGUpe3N1cGVyW1ppXShlKTtkZWxldGUgdGhpc1tObF19fWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W2xvXSgpe3RoaXNbc29dPXRoaXNbc29dLnRyaW0oKX19Y2xhc3MgSW50ZWdlck9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGEsbil7c3VwZXIoZSx0KTt0aGlzW1RsXT1hO3RoaXNbemxdPW59W2xvXSgpe3RoaXNbc29dPWdldEludGVnZXIoe2RhdGE6dGhpc1tzb10sZGVmYXVsdFZhbHVlOnRoaXNbVGxdLHZhbGlkYXRlOnRoaXNbemxdfSl9W1ppXShlKXtzdXBlcltaaV0oZSk7ZGVsZXRlIHRoaXNbVGxdO2RlbGV0ZSB0aGlzW3psXX19Y2xhc3MgT3B0aW9uMDEgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDAsZT0+MT09PWUpfX1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSxlPT4wPT09ZSl9fWZ1bmN0aW9uIG1lYXN1cmVUb1N0cmluZyhlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/IjBweCI6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtlfXB4YDpgJHtlLnRvRml4ZWQoMil9cHhgfWNvbnN0IFdsPXthbmNob3JUeXBlKGUsdCl7Y29uc3QgYT1lW3ZvXSgpO2lmKGEmJighYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCkpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTtzd2l0Y2goZS5hbmNob3JUeXBlKXtjYXNlImJvdHRvbUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwgLTEwMCUpIjticmVhaztjYXNlImJvdHRvbUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTEwMCUpIjticmVhaztjYXNlImJvdHRvbVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtMTAwJSkiO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLC01MCUpIjticmVhaztjYXNlIm1pZGRsZUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC01MCUpIjticmVhaztjYXNlInRvcENlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwwKSI7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsMCkifX19LGRpbWVuc2lvbnMoZSx0KXtjb25zdCBhPWVbdm9dKCk7bGV0IG49ZS53O2NvbnN0IHM9ZS5oO2lmKGEubGF5b3V0Py5pbmNsdWRlcygicm93Iikpe2NvbnN0IHQ9YVtvb10scz1lLmNvbFNwYW47bGV0IHI7aWYoLTE9PT1zKXtyPU1hdGguc3VtUHJlY2lzZSh0LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4pKTt0LmN1cnJlbnRDb2x1bW49MH1lbHNle3I9TWF0aC5zdW1QcmVjaXNlKHQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbix0LmN1cnJlbnRDb2x1bW4rcykpO3QuY3VycmVudENvbHVtbj0odC5jdXJyZW50Q29sdW1uK2UuY29sU3BhbikldC5jb2x1bW5XaWR0aHMubGVuZ3RofWlzTmFOKHIpfHwobj1lLnc9cil9dC53aWR0aD0iIiE9PW4/bWVhc3VyZVRvU3RyaW5nKG4pOiJhdXRvIjt0LmhlaWdodD0iIiE9PXM/bWVhc3VyZVRvU3RyaW5nKHMpOiJhdXRvIn0scG9zaXRpb24oZSx0KXtjb25zdCBhPWVbdm9dKCk7aWYoIWE/LmxheW91dHx8InBvc2l0aW9uIj09PWEubGF5b3V0KXt0LnBvc2l0aW9uPSJhYnNvbHV0ZSI7dC5sZWZ0PW1lYXN1cmVUb1N0cmluZyhlLngpO3QudG9wPW1lYXN1cmVUb1N0cmluZyhlLnkpfX0scm90YXRlKGUsdCl7aWYoZS5yb3RhdGUpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTt0LnRyYW5zZm9ybSs9YHJvdGF0ZSgtJHtlLnJvdGF0ZX1kZWcpYDt0LnRyYW5zZm9ybU9yaWdpbj0idG9wIGxlZnQifX0scHJlc2VuY2UoZSx0KXtzd2l0Y2goZS5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOnQudmlzaWJpbGl0eT0iaGlkZGVuIjticmVhaztjYXNlImhpZGRlbiI6Y2FzZSJpbmFjdGl2ZSI6dC5kaXNwbGF5PSJub25lIn19LGhBbGlnbihlLHQpe2lmKCJwYXJhIj09PWVbVW9dKXN3aXRjaChlLmhBbGlnbil7Y2FzZSJqdXN0aWZ5QWxsIjp0LnRleHRBbGlnbj0ianVzdGlmeS1hbGwiO2JyZWFrO2Nhc2UicmFkaXgiOnQudGV4dEFsaWduPSJsZWZ0IjticmVhaztkZWZhdWx0OnQudGV4dEFsaWduPWUuaEFsaWdufWVsc2Ugc3dpdGNoKGUuaEFsaWduKXtjYXNlImxlZnQiOnQuYWxpZ25TZWxmPSJzdGFydCI7YnJlYWs7Y2FzZSJjZW50ZXIiOnQuYWxpZ25TZWxmPSJjZW50ZXIiO2JyZWFrO2Nhc2UicmlnaHQiOnQuYWxpZ25TZWxmPSJlbmQifX0sbWFyZ2luKGUsdCl7ZS5tYXJnaW4mJih0Lm1hcmdpbj1lLm1hcmdpbltmbF0oKS5tYXJnaW4pfX07ZnVuY3Rpb24gc2V0TWluTWF4RGltZW5zaW9ucyhlLHQpe2lmKCJwb3NpdGlvbiI9PT1lW3ZvXSgpLmxheW91dCl7ZS5taW5XPjAmJih0Lm1pbldpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1pblcpKTtlLm1heFc+MCYmKHQubWF4V2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWF4VykpO2UubWluSD4wJiYodC5taW5IZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGUubWluSCkpO2UubWF4SD4wJiYodC5tYXhIZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGUubWF4SCkpfX1mdW5jdGlvbiBsYXlvdXRUZXh0KGUsdCxhLG4scyxyKXtjb25zdCBpPW5ldyBUZXh0TWVhc3VyZSh0LGEsbixzKTsic3RyaW5nIj09dHlwZW9mIGU/aS5hZGRTdHJpbmcoZSk6ZVtWb10oaSk7cmV0dXJuIGkuY29tcHV0ZShyKX1mdW5jdGlvbiBsYXlvdXROb2RlKGUsdCl7bGV0IGE9bnVsbCxuPW51bGwscz0hMTtpZigoIWUud3x8IWUuaCkmJmUudmFsdWUpe2xldCByPTAsaT0wO2lmKGUubWFyZ2luKXtyPWUubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0O2k9ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IG89bnVsbCxsPW51bGw7aWYoZS5wYXJhKXtsPU9iamVjdC5jcmVhdGUobnVsbCk7bz0iIj09PWUucGFyYS5saW5lSGVpZ2h0P251bGw6ZS5wYXJhLmxpbmVIZWlnaHQ7bC50b3A9IiI9PT1lLnBhcmEuc3BhY2VBYm92ZT8wOmUucGFyYS5zcGFjZUFib3ZlO2wuYm90dG9tPSIiPT09ZS5wYXJhLnNwYWNlQmVsb3c/MDplLnBhcmEuc3BhY2VCZWxvdztsLmxlZnQ9IiI9PT1lLnBhcmEubWFyZ2luTGVmdD8wOmUucGFyYS5tYXJnaW5MZWZ0O2wucmlnaHQ9IiI9PT1lLnBhcmEubWFyZ2luUmlnaHQ/MDplLnBhcmEubWFyZ2luUmlnaHR9bGV0IGY9ZS5mb250O2lmKCFmKXtjb25zdCB0PWVbQW9dKCk7bGV0IGE9ZVtTb10oKTtmb3IoO2EmJmEhPT10Oyl7aWYoYS5mb250KXtmPWEuZm9udDticmVha31hPWFbU29dKCl9fWNvbnN0IGM9KGUud3x8dC53aWR0aCktcixoPWVbeG9dLmZvbnRGaW5kZXI7aWYoZS52YWx1ZS5leERhdGEmJmUudmFsdWUuZXhEYXRhW3NvXSYmInRleHQvaHRtbCI9PT1lLnZhbHVlLmV4RGF0YS5jb250ZW50VHlwZSl7Y29uc3QgdD1sYXlvdXRUZXh0KGUudmFsdWUuZXhEYXRhW3NvXSxmLGwsbyxoLGMpO249dC53aWR0aDthPXQuaGVpZ2h0O3M9dC5pc0Jyb2tlbn1lbHNle2NvbnN0IHQ9ZS52YWx1ZVtybF0oKTtpZih0KXtjb25zdCBlPWxheW91dFRleHQodCxmLGwsbyxoLGMpO249ZS53aWR0aDthPWUuaGVpZ2h0O3M9ZS5pc0Jyb2tlbn19bnVsbD09PW58fGUud3x8KG4rPXIpO251bGw9PT1hfHxlLmh8fChhKz1pKX1yZXR1cm57dzpuLGg6YSxpc0Jyb2tlbjpzfX1mdW5jdGlvbiBjb21wdXRlQmJveChlLHQsYSl7bGV0IG47aWYoIiIhPT1lLncmJiIiIT09ZS5oKW49W2UueCxlLnksZS53LGUuaF07ZWxzZXtpZighYSlyZXR1cm4gbnVsbDtsZXQgcz1lLnc7aWYoIiI9PT1zKXtpZigwPT09ZS5tYXhXKXtjb25zdCB0PWVbdm9dKCk7cz0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC53PzA6ZS5taW5XfWVsc2Ugcz1NYXRoLm1pbihlLm1heFcsYS53aWR0aCk7dC5hdHRyaWJ1dGVzLnN0eWxlLndpZHRoPW1lYXN1cmVUb1N0cmluZyhzKX1sZXQgcj1lLmg7aWYoIiI9PT1yKXtpZigwPT09ZS5tYXhIKXtjb25zdCB0PWVbdm9dKCk7cj0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC5oPzA6ZS5taW5IfWVsc2Ugcj1NYXRoLm1pbihlLm1heEgsYS5oZWlnaHQpO3QuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHIpfW49W2UueCxlLnkscyxyXX1yZXR1cm4gbn1mdW5jdGlvbiBmaXhEaW1lbnNpb25zKGUpe2NvbnN0IHQ9ZVt2b10oKTtpZih0LmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCBhPXRbb29dLG49ZS5jb2xTcGFuO2xldCBzO3M9LTE9PT1uP01hdGguc3VtUHJlY2lzZShhLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4pKTpNYXRoLnN1bVByZWNpc2UoYS5jb2x1bW5XaWR0aHMuc2xpY2UoYS5jdXJyZW50Q29sdW1uLGEuY3VycmVudENvbHVtbituKSk7aXNOYU4ocyl8fChlLnc9cyl9dC5sYXlvdXQmJiJwb3NpdGlvbiIhPT10LmxheW91dCYmKGUueD1lLnk9MCk7InRhYmxlIj09PWUubGF5b3V0JiYiIj09PWUudyYmQXJyYXkuaXNBcnJheShlLmNvbHVtbldpZHRocykmJihlLnc9TWF0aC5zdW1QcmVjaXNlKGUuY29sdW1uV2lkdGhzKSl9ZnVuY3Rpb24gbGF5b3V0Q2xhc3MoZSl7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjpkZWZhdWx0OnJldHVybiJ4ZmFQb3NpdGlvbiI7Y2FzZSJsci10YiI6cmV0dXJuInhmYUxyVGIiO2Nhc2Uicmwtcm93IjpyZXR1cm4ieGZhUmxSb3ciO2Nhc2UicmwtdGIiOnJldHVybiJ4ZmFSbFRiIjtjYXNlInJvdyI6cmV0dXJuInhmYVJvdyI7Y2FzZSJ0YWJsZSI6cmV0dXJuInhmYVRhYmxlIjtjYXNlInRiIjpyZXR1cm4ieGZhVGIifX1mdW5jdGlvbiB0b1N0eWxlKGUsLi4udCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBuIG9mIHQpe2NvbnN0IHQ9ZVtuXTtpZihudWxsIT09dClpZihPYmplY3QuaGFzT3duKFdsLG4pKVdsW25dKGUsYSk7ZWxzZSBpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXtjb25zdCBlPXRbZmxdKCk7ZT9PYmplY3QuYXNzaWduKGEsZSk6d2FybihgKERFQlVHKSAtIFhGQSAtIHN0eWxlIGZvciAke259IG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX19cmV0dXJuIGF9ZnVuY3Rpb24gY3JlYXRlV3JhcHBlcihlLHQpe2NvbnN0e2F0dHJpYnV0ZXM6YX09dCx7c3R5bGU6bn09YSxzPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhV3JhcHBlciJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOltdfTthLmNsYXNzLnB1c2goInhmYVdyYXBwZWQiKTtpZihlLmJvcmRlcil7Y29uc3R7d2lkdGhzOmEsaW5zZXRzOnJ9PWUuYm9yZGVyW29vXTtsZXQgaSxvLGw9clswXSxmPXJbM107Y29uc3QgYz1yWzBdK3JbMl0saD1yWzFdK3JbM107c3dpdGNoKGUuYm9yZGVyLmhhbmQpe2Nhc2UiZXZlbiI6bC09YVswXS8yO2YtPWFbM10vMjtpPWBjYWxjKDEwMCUgKyAkeyhhWzFdK2FbM10pLzItaH1weClgO289YGNhbGMoMTAwJSArICR7KGFbMF0rYVsyXSkvMi1jfXB4KWA7YnJlYWs7Y2FzZSJsZWZ0IjpsLT1hWzBdO2YtPWFbM107aT1gY2FsYygxMDAlICsgJHthWzFdK2FbM10taH1weClgO289YGNhbGMoMTAwJSArICR7YVswXSthWzJdLWN9cHgpYDticmVhaztjYXNlInJpZ2h0IjppPWg/YGNhbGMoMTAwJSAtICR7aH1weClgOiIxMDAlIjtvPWM/YGNhbGMoMTAwJSAtICR7Y31weClgOiIxMDAlIn1jb25zdCB1PVsieGZhQm9yZGVyIl07aXNQcmludE9ubHkoZS5ib3JkZXIpJiZ1LnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IG09e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6dSxzdHlsZTp7dG9wOmAke2x9cHhgLGxlZnQ6YCR7Zn1weGAsd2lkdGg6aSxoZWlnaHQ6b319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZlsiYm9yZGVyIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJDb2xvciIsImJvcmRlclJhZGl1cyIsImJvcmRlclN0eWxlIl0paWYodm9pZCAwIT09bltlXSl7bS5hdHRyaWJ1dGVzLnN0eWxlW2VdPW5bZV07ZGVsZXRlIG5bZV19cy5jaGlsZHJlbi5wdXNoKG0sdCl9ZWxzZSBzLmNoaWxkcmVuLnB1c2godCk7Zm9yKGNvbnN0IGUgb2ZbImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQ2xpcCIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4V2lkdGgiLCJtYXhIZWlnaHQiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ2aXNpYmlsaXR5Il0paWYodm9pZCAwIT09bltlXSl7cy5hdHRyaWJ1dGVzLnN0eWxlW2VdPW5bZV07ZGVsZXRlIG5bZV19cy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI9PT1uLnBvc2l0aW9uPyJhYnNvbHV0ZSI6InJlbGF0aXZlIjtkZWxldGUgbi5wb3NpdGlvbjtpZihuLmFsaWduU2VsZil7cy5hdHRyaWJ1dGVzLnN0eWxlLmFsaWduU2VsZj1uLmFsaWduU2VsZjtkZWxldGUgbi5hbGlnblNlbGZ9cmV0dXJuIHN9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PWdldE1lYXN1cmVtZW50KGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3QgYT0icGFkZGluZyIrKCJsZWZ0Ij09PSgicmlnaHQiPT09ZS50ZXh0QWxpZ24/InJpZ2h0IjoibGVmdCIpPyJMZWZ0IjoiUmlnaHQiKSxuPWdldE1lYXN1cmVtZW50KGVbYV0sIjBweCIpO2VbYV09bi10KyJweCJ9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW0FvXSgpW29vXS5wYXJhU3RhY2s7cmV0dXJuIHQubGVuZ3RoP3QuYXQoLTEpOm51bGx9ZnVuY3Rpb24gc2V0UGFyYShlLHQsYSl7aWYoYS5hdHRyaWJ1dGVzLmNsYXNzPy5pbmNsdWRlcygieGZhUmljaCIpKXtpZih0KXsiIj09PWUuaCYmKHQuaGVpZ2h0PSJhdXRvIik7IiI9PT1lLncmJih0LndpZHRoPSJhdXRvIil9Y29uc3Qgbj1nZXRDdXJyZW50UGFyYShlKTtpZihuKXtjb25zdCBlPWEuYXR0cmlidXRlcy5zdHlsZTtlLmRpc3BsYXk9ImZsZXgiO2UuZmxleERpcmVjdGlvbj0iY29sdW1uIjtzd2l0Y2gobi52QWxpZ24pe2Nhc2UidG9wIjplLmp1c3RpZnlDb250ZW50PSJzdGFydCI7YnJlYWs7Y2FzZSJib3R0b20iOmUuanVzdGlmeUNvbnRlbnQ9ImVuZCI7YnJlYWs7Y2FzZSJtaWRkbGUiOmUuanVzdGlmeUNvbnRlbnQ9ImNlbnRlciJ9Y29uc3QgdD1uW2ZsXSgpO2Zvcihjb25zdFthLG5db2YgT2JqZWN0LmVudHJpZXModCkpYSBpbiBlfHwoZVthXT1uKX19fWZ1bmN0aW9uIHNldEZvbnRGYW1pbHkoZSx0LGEsbil7aWYoIWEpe2RlbGV0ZSBuLmZvbnRGYW1pbHk7cmV0dXJufWNvbnN0IHM9c3RyaXBRdW90ZXMoZS50eXBlZmFjZSk7bi5mb250RmFtaWx5PWAiJHtzfSJgO2NvbnN0IHI9YS5maW5kKHMpO2lmKHIpe2NvbnN0e2ZvbnRGYW1pbHk6YX09ci5yZWd1bGFyLmNzc0ZvbnRJbmZvO2EhPT1zJiYobi5mb250RmFtaWx5PWAiJHthfSJgKTtjb25zdCBpPWdldEN1cnJlbnRQYXJhKHQpO2lmKGkmJiIiIT09aS5saW5lSGVpZ2h0KXJldHVybjtpZihuLmxpbmVIZWlnaHQpcmV0dXJuO2NvbnN0IG89c2VsZWN0Rm9udChlLHIpO28mJihuLmxpbmVIZWlnaHQ9TWF0aC5tYXgoMS4yLG8ubGluZUhlaWdodCkpfX1mdW5jdGlvbiBmaXhVUkwoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUsbnVsbCx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO3JldHVybiB0P3QuaHJlZjpudWxsfWZ1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fWZ1bmN0aW9uIGZsdXNoSFRNTChlKXtpZighZVtvb10pcmV0dXJuIG51bGw7Y29uc3QgdD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmVbb29dLmF0dHJpYnV0ZXMsY2hpbGRyZW46ZVtvb10uY2hpbGRyZW59O2lmKGVbb29dLmZhaWxpbmdOb2RlKXtjb25zdCBhPWVbb29dLmZhaWxpbmdOb2RlW2ZvXSgpO2EmJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbYV0pKTp0LmNoaWxkcmVuLnB1c2goYSkpfXJldHVybiAwPT09dC5jaGlsZHJlbi5sZW5ndGg/bnVsbDp0fWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IG49ZVtvb10scz1uLmF2YWlsYWJsZVNwYWNlLFtyLGksbyxsXT1hO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6bi53aWR0aD1NYXRoLm1heChuLndpZHRoLHIrbyk7bi5oZWlnaHQ9TWF0aC5tYXgobi5oZWlnaHQsaStsKTtuLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIW4ubGluZXx8MT09PW4uYXR0ZW1wdCl7bi5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7bi5jaGlsZHJlbi5wdXNoKG4ubGluZSk7bi5udW1iZXJJbkxpbmU9MH1uLm51bWJlckluTGluZSs9MTtuLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09bi5hdHRlbXB0KXtuLmN1cnJlbnRXaWR0aCs9bztuLmhlaWdodD1NYXRoLm1heChuLmhlaWdodCxuLnByZXZIZWlnaHQrbCl9ZWxzZXtuLmN1cnJlbnRXaWR0aD1vO24ucHJldkhlaWdodD1uLmhlaWdodDtuLmhlaWdodCs9bDtuLmF0dGVtcHQ9MH1uLndpZHRoPU1hdGgubWF4KG4ud2lkdGgsbi5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e24uY2hpbGRyZW4ucHVzaCh0KTtuLndpZHRoKz1vO24uaGVpZ2h0PU1hdGgubWF4KG4uaGVpZ2h0LGwpO2NvbnN0IGU9bWVhc3VyZVRvU3RyaW5nKG4uaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBuLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjpuLndpZHRoPU1hdGhDbGFtcChvLG4ud2lkdGgscy53aWR0aCk7bi5oZWlnaHQrPWw7bi5jaGlsZHJlbi5wdXNoKHQpfX1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbb29dLmF2YWlsYWJsZVNwYWNlLGE9ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxuPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbb29dLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtbi1lW29vXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LWEtZVtvb10ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW29vXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOk1hdGguc3VtUHJlY2lzZShlW29vXS5jb2x1bW5XaWR0aHMuc2xpY2UoZVtvb10uY3VycmVudENvbHVtbikpLGhlaWdodDp0LmhlaWdodC1ufTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1uLGhlaWdodDp0LmhlaWdodC1hLWVbb29dLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbQW9dKClbb29dLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3QgYT1lW3ZvXSgpLG49YVtvb10/LmF0dGVtcHR8fDAsWyxzLHIsaV09ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGEsbj0iIj09PWUudz9OYU46ZS53LHM9IiI9PT1lLmg/TmFOOmUuaCxbcixpXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltyLGldPVtuLzIsc107YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbcixpXT1bMCxzXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbcixpXT1bbixzXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W3IsaV09W24vMixzLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W3IsaV09WzAscy8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbcixpXT1bbixzLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbcixpXT1bbi8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltyLGldPVtuLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGFdPVstciwtaV07YnJlYWs7Y2FzZSA5MDpbdCxhXT1bLWkscl07W24sc109W3MsLW5dO2JyZWFrO2Nhc2UgMTgwOlt0LGFdPVtyLGldO1tuLHNdPVstbiwtc107YnJlYWs7Y2FzZSAyNzA6W3QsYV09W2ksLXJdO1tuLHNdPVstcyxuXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxuKSxlLnkrYStNYXRoLm1pbigwLHMpLE1hdGguYWJzKG4pLE1hdGguYWJzKHMpXX0oZSk7c3dpdGNoKGEubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PW4/ZVtBb10oKVtvb10ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQoci10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChpLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQoci10LndpZHRoKTw9Mnx8MD09PWFbb29dLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtBb10oKVtvb10ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKGktdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKHItdC53aWR0aCk8PTJ8fCFhW1BvXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW0FvXSgpW29vXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVtOb10oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQoci10LndpZHRoKTw9Mnx8IWFbUG9dKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQoaS10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbQW9dKClbb29dLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChpK3MtdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBpK3M+ZVtBb10oKVtvb10uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbQW9dKClbb29dLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKGktdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBLbD11bC50ZW1wbGF0ZS5pZCxHbD0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLFZsPS9eSChcZCspJC8sJGw9bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxZbD1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW3dvXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtKaV0odCk7ZS52YWx1ZT10fWUudmFsdWVbbmxdKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVba29dKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFt5b10oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVtzbF09ZVtTb10oKVtzbF07cmV0dXJufWlmKGVbc2xdKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBhIG9mIGUudHJhdmVyc2FsW2tvXSgpKWlmKCJuZXh0Ij09PWEub3BlcmF0aW9uKXt0PWE7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVtzbF09ZVtTb10oKVtzbF07cmV0dXJufWNvbnN0IGE9ZVtBb10oKTtlW3NsXT0rK2Fbc2xdO2NvbnN0IG49YVtlbF0odC5yZWYsZSk7aWYoIW4pcmV0dXJuO2U9blswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBhPWUuYXNzaXN0O2lmKGEpe2NvbnN0IGU9YVtvbF0oKTtlJiYodC50aXRsZT1lKTtjb25zdCBuPWEucm9sZS5tYXRjaChWbCk7aWYobil7Y29uc3QgZT0iaGVhZGluZyIsYT1uWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1hfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGE9ZVtTb10oKTsicm93Ij09PWEubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1hLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tzb10/dC5zcGVha1tzb106dC50b29sVGlwP3QudG9vbFRpcFtzb106bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW0FvXSgpO2lmKG51bGw9PT10W29vXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtvb10uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W29vXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW0FvXSgpO3Rbb29dLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbb29dLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtvb10pcmV0dXJuITE7ZVtvb109T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW0FvXSgpO2xldCBhPW51bGw7aWYoZS50YXJnZXQpe2E9dFtlbF0oZS50YXJnZXQsZVtTb10oKSk7aWYoIWEpcmV0dXJuITE7YT1hWzBdfWNvbnN0e2N1cnJlbnRQYWdlQXJlYTpuLGN1cnJlbnRDb250ZW50QXJlYTpzfT10W29vXTtpZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXthIGluc3RhbmNlb2YgUGFnZUFyZWF8fChhPW51bGwpO2lmKGUuc3RhcnROZXcpe2Vbb29dLnRhcmdldD1hfHxuO3JldHVybiEwfWlmKGEmJmEhPT1uKXtlW29vXS50YXJnZXQ9YTtyZXR1cm4hMH1yZXR1cm4hMX1hIGluc3RhbmNlb2YgQ29udGVudEFyZWF8fChhPW51bGwpO2NvbnN0IHI9YSYmYVtTb10oKTtsZXQgaSxvPXI7aWYoZS5zdGFydE5ldylpZihhKXtjb25zdCBlPXIuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2Yocyksbj1lLmluZGV4T2YoYSk7LTEhPT10JiZ0PG4mJihvPW51bGwpO2k9bi0xfWVsc2UgaT1uLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yocyk7ZWxzZXtpZighYXx8YT09PXMpcmV0dXJuITE7aT1yLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSktMTtvPXI9PT1uP251bGw6cn1lW29vXS50YXJnZXQ9bztlW29vXS5pbmRleD1pO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxhKXtjb25zdCBuPWVbQW9dKCkscz1uW29vXS5ub0xheW91dEZhaWx1cmUscj10W3ZvXTt0W3ZvXT0oKT0+ZTtuW29vXS5ub0xheW91dEZhaWx1cmU9ITA7Y29uc3QgaT10W29sXShhKTtlW1lpXShpLmh0bWwsaS5iYm94KTtuW29vXS5ub0xheW91dEZhaWx1cmU9czt0W3ZvXT1yfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImFwcGVhcmFuY2VGaWx0ZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEFyYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj1nZXRJbnRlZ2VyKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVtvbF0oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtmbF0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW2ZsXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7bGV0IG47Y29uc3Qgcz17eG1sbnM6R2wsc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSluPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpHbCxjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxyPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtpLG8sbCxmXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07bj17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6R2wsZDpgTSAke2l9ICR7b30gQSA1MCA1MCAwICR7cn0gMCAke2x9ICR7Zn1gLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTphfX07T2JqZWN0LmFzc2lnbihzLHt2aWV3Qm94OiIwIDAgMTAwIDEwMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KX1jb25zdCByPXtuYW1lOiJzdmciLGNoaWxkcmVuOltuXSxhdHRyaWJ1dGVzOnN9O2lmKGhhc01hcmdpbih0aGlzW1NvXSgpW1NvXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3JdfSk7ci5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhyKX19Y2xhc3MgQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Klt5b10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bRW9dKCl7cmV0dXJuITB9W0hvXSgpe3JldHVybiEwfVtZaV0oZSx0KXtjb25zdFthLG4scyxyXT10O3RoaXNbb29dLndpZHRoPU1hdGgubWF4KHRoaXNbb29dLndpZHRoLGErcyk7dGhpc1tvb10uaGVpZ2h0PU1hdGgubWF4KHRoaXNbb29dLmhlaWdodCxuK3IpO3RoaXNbb29dLmNoaWxkcmVuLnB1c2goZSl9W3VvXSgpe3JldHVybiB0aGlzW29vXS5hdmFpbGFibGVTcGFjZX1bb2xdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1tjbF0sY2xhc3M6WyJ4ZmFBcmVhIl19O2lzUHJpbnRPbmx5KHRoaXMpJiZhLmNsYXNzLnB1c2goInhmYVByaW50T25seSIpO3RoaXMubmFtZSYmKGEueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IG49W107dGhpc1tvb109e2NoaWxkcmVuOm4sd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTtjb25zdCBzPXRoaXNbUWldKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJleGNsR3JvdXAiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKSxpbmNsdWRlOiEwfSk7aWYoIXMuc3VjY2Vzcyl7aWYocy5pc0JyZWFrKCkpcmV0dXJuIHM7ZGVsZXRlIHRoaXNbb29dO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpc1tvb10ud2lkdGgpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzW29vXS5oZWlnaHQpO2NvbnN0IHI9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOm59LGk9W3RoaXMueCx0aGlzLnksdGhpc1tvb10ud2lkdGgsdGhpc1tvb10uaGVpZ2h0XTtkZWxldGUgdGhpc1tvb107cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhyLGkpfX1jbGFzcyBBc3Npc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bb2xdKCl7cmV0dXJuIHRoaXMudG9vbFRpcD8uW3NvXXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiYmFyY29kZSIsITApO3RoaXMuY2hhckVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMuY2hlY2tzdW09Z2V0U3RyaW5nT3B0aW9uKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSk7dGhpcy5kYXRhQ29sdW1uQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YUxlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YVByZXA9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKTt0aGlzLmRhdGFSb3dDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiI7dGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubW9kdWxlSGVpZ2h0PWdldE1lYXN1cmVtZW50KGUubW9kdWxlSGVpZ2h0LCI1bW0iKTt0aGlzLm1vZHVsZVdpZHRoPWdldE1lYXN1cmVtZW50KGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpO3RoaXMucHJpbnRDaGVja0RpZ2l0PWdldEludGVnZXIoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJvd0NvbHVtblJhdGlvPWdldFJhdGlvKGUucm93Q29sdW1uUmF0aW8pO3RoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIjt0aGlzLnRleHRMb2NhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pO3RoaXMudHJ1bmNhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSk7dGhpcy51cHNNb2RlPWdldFN0cmluZ09wdGlvbihlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndpZGVOYXJyb3dSYXRpbz1nZXRSYXRpbyhlLndpZGVOYXJyb3dSYXRpbyk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQmluZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiYmluZCIsITApO3RoaXMubWF0Y2g9Z2V0U3RyaW5nT3B0aW9uKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBCaW5kSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fWNsYXNzIEJvb2tlbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImJvb2tlbmQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEJvb2xlYW5FbGVtZW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bb2xdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCgxPT09dGhpc1tzb10/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiYm9yZGVyIiwhMCk7dGhpcy5icmVhaz1nZXRTdHJpbmdPcHRpb24oZS5icmVhayxbImNsb3NlIiwib3BlbiJdKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bd29dKCl7aWYoIXRoaXNbb29dKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5zbGljZSgpO2lmKGUubGVuZ3RoPDQpe2NvbnN0IHQ9ZS5hdCgtMSl8fG5ldyBFZGdlKHt9KTtmb3IobGV0IGE9ZS5sZW5ndGg7YTw0O2ErKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcChlPT5lLnRoaWNrbmVzcyksYT1bMCwwLDAsMF07aWYodGhpcy5tYXJnaW4pe2FbMF09dGhpcy5tYXJnaW4udG9wSW5zZXQ7YVsxXT10aGlzLm1hcmdpbi5yaWdodEluc2V0O2FbMl09dGhpcy5tYXJnaW4uYm90dG9tSW5zZXQ7YVszXT10aGlzLm1hcmdpbi5sZWZ0SW5zZXR9dGhpc1tvb109e3dpZHRoczp0LGluc2V0czphLGVkZ2VzOmV9fXJldHVybiB0aGlzW29vXX1bZmxdKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1t3b10oKSx0PWUubWFwKGU9Pntjb25zdCB0PWVbZmxdKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pLGE9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLm1hcmdpbiYmT2JqZWN0LmFzc2lnbihhLHRoaXMubWFyZ2luW2ZsXSgpKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlJiZPYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW2ZsXSgpKTtpZih0aGlzLmNvcm5lci5jaGlsZHJlbi5zb21lKGU9PjAhPT1lLnJhZGl1cykpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKGU9PmVbZmxdKCkpO2lmKDI9PT1lLmxlbmd0aHx8Mz09PWUubGVuZ3RoKXtjb25zdCB0PWUuYXQoLTEpO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1hLmJvcmRlclJhZGl1cz1lLm1hcChlPT5lLnJhZGl1cykuam9pbigiICIpfXN3aXRjaCh0aGlzLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6Y2FzZSJoaWRkZW4iOmEuYm9yZGVyU3R5bGU9IiI7YnJlYWs7Y2FzZSJpbmFjdGl2ZSI6YS5ib3JkZXJTdHlsZT0ibm9uZSI7YnJlYWs7ZGVmYXVsdDphLmJvcmRlclN0eWxlPXQubWFwKGU9PmUuc3R5bGUpLmpvaW4oIiAiKX1hLmJvcmRlcldpZHRoPXQubWFwKGU9PmUud2lkdGgpLmpvaW4oIiAiKTthLmJvcmRlckNvbG9yPXQubWFwKGU9PmUuY29sb3IpLmpvaW4oIiAiKTtyZXR1cm4gYX19Y2xhc3MgQnJlYWsgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImJyZWFrIiwhMCk7dGhpcy5hZnRlcj1nZXRTdHJpbmdPcHRpb24oZS5hZnRlcixbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYWZ0ZXJUYXJnZXQ9ZS5hZnRlclRhcmdldHx8IiI7dGhpcy5iZWZvcmU9Z2V0U3RyaW5nT3B0aW9uKGUuYmVmb3JlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiLCJwYWdlRXZlbiIsInBhZ2VPZGQiXSk7dGhpcy5iZWZvcmVUYXJnZXQ9ZS5iZWZvcmVUYXJnZXR8fCIiO3RoaXMuYm9va2VuZExlYWRlcj1lLmJvb2tlbmRMZWFkZXJ8fCIiO3RoaXMuYm9va2VuZFRyYWlsZXI9ZS5ib29rZW5kVHJhaWxlcnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJmbG93TGVhZGVyPWUub3ZlcmZsb3dMZWFkZXJ8fCIiO3RoaXMub3ZlcmZsb3dUYXJnZXQ9ZS5vdmVyZmxvd1RhcmdldHx8IiI7dGhpcy5vdmVyZmxvd1RyYWlsZXI9ZS5vdmVyZmxvd1RyYWlsZXJ8fCIiO3RoaXMuc3RhcnROZXc9Z2V0SW50ZWdlcih7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJyZWFrQWZ0ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImJyZWFrQWZ0ZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBCcmVha0JlZm9yZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiYnJlYWtCZWZvcmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfVtvbF0oZSl7dGhpc1tvb109e307cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX19Y2xhc3MgQnV0dG9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJidXR0b24iLCEwKTt0aGlzLmhpZ2hsaWdodD1nZXRTdHJpbmdPcHRpb24oZS5oaWdobGlnaHQsWyJpbnZlcnRlZCIsIm5vbmUiLCJvdXRsaW5lIiwicHVzaCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtvbF0oZSl7Y29uc3QgdD10aGlzW1NvXSgpW1NvXSgpLGE9e25hbWU6ImJ1dHRvbiIsYXR0cmlidXRlczp7aWQ6dGhpc1tjbF0sY2xhc3M6WyJ4ZmFCdXR0b24iXSxzdHlsZTp7fX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mIHQuZXZlbnQuY2hpbGRyZW4pe2lmKCJjbGljayIhPT1lLmFjdGl2aXR5fHwhZS5zY3JpcHQpY29udGludWU7Y29uc3QgdD1yZWNvdmVySnNVUkwoZS5zY3JpcHRbc29dKTtpZighdCljb250aW51ZTtjb25zdCBuPWZpeFVSTCh0LnVybCk7biYmYS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJhIixhdHRyaWJ1dGVzOntpZDoibGluayIrdGhpc1tjbF0saHJlZjpuLG5ld1dpbmRvdzp0Lm5ld1dpbmRvdyxjbGFzczpbInhmYUxpbmsiXSxzdHlsZTp7fX0sY2hpbGRyZW46W119KX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGEpfX1jbGFzcyBDYWxjdWxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImNhbGN1bGF0ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT1nZXRTdHJpbmdPcHRpb24oZS5vdmVycmlkZSxbImRpc2FibGVkIiwiZXJyb3IiLCJpZ25vcmUiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIENhcHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImNhcHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGxhY2VtZW50PWdldFN0cmluZ09wdGlvbihlLnBsYWNlbWVudCxbImxlZnQiLCJib3R0b20iLCJpbmxpbmUiLCJyaWdodCIsInRvcCJdKTt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVzZXJ2ZT1NYXRoLmNlaWwoZ2V0TWVhc3VyZW1lbnQoZS5yZXNlcnZlKSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnZhbHVlPW51bGx9W25sXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bd29dKGUpe2lmKCF0aGlzW29vXSl7bGV0e3dpZHRoOnQsaGVpZ2h0OmF9PWU7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0PXRoaXMucmVzZXJ2ZTw9MD90OnRoaXMucmVzZXJ2ZTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmE9dGhpcy5yZXNlcnZlPD0wP2E6dGhpcy5yZXNlcnZlfXRoaXNbb29dPWxheW91dE5vZGUodGhpcyx7d2lkdGg6dCxoZWlnaHQ6YX0pfXJldHVybiB0aGlzW29vXX1bb2xdKGUpe2lmKCF0aGlzLnZhbHVlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO3RoaXNbWW9dKCk7Y29uc3QgdD10aGlzLnZhbHVlW29sXShlKS5odG1sO2lmKCF0KXt0aGlzWyRvXSgpO3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfWNvbnN0IGE9dGhpcy5yZXNlcnZlO2lmKHRoaXMucmVzZXJ2ZTw9MCl7Y29uc3R7dzp0LGg6YX09dGhpc1t3b10oZSk7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0aGlzLnJlc2VydmU9dDticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT1hfX1jb25zdCBuPVtdOyJzdHJpbmciPT10eXBlb2YgdD9uLnB1c2goe25hbWU6IiN0ZXh0Iix2YWx1ZTp0fSk6bi5wdXNoKHQpO2NvbnN0IHM9dG9TdHlsZSh0aGlzLCJmb250IiwibWFyZ2luIiwidmlzaWJpbGl0eSIpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0Ijp0aGlzLnJlc2VydmU+MCYmKHMud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPjAmJihzLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5yZXNlcnZlKSl9c2V0UGFyYSh0aGlzLG51bGwsdCk7dGhpc1skb10oKTt0aGlzLnJlc2VydmU9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOnMsY2xhc3M6WyJ4ZmFDYXB0aW9uIl19LGNoaWxkcmVuOm59KX19Y2xhc3MgQ2VydGlmaWNhdGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImNlcnRpZmljYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENlcnRpZmljYXRlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiY2VydGlmaWNhdGVzIiwhMCk7dGhpcy5jcmVkZW50aWFsU2VydmVyUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3ksWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51cmw9ZS51cmx8fCIiO3RoaXMudXJsUG9saWN5PWUudXJsUG9saWN5fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5pc3N1ZXJzPW51bGw7dGhpcy5rZXlVc2FnZT1udWxsO3RoaXMub2lkcz1udWxsO3RoaXMuc2lnbmluZz1udWxsO3RoaXMuc3ViamVjdEROcz1udWxsfX1jbGFzcyBDaGVja0J1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiY2hlY2tCdXR0b24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWFyaz1nZXRTdHJpbmdPcHRpb24oZS5tYXJrLFsiZGVmYXVsdCIsImNoZWNrIiwiY2lyY2xlIiwiY3Jvc3MiLCJkaWFtb25kIiwic3F1YXJlIiwic3RhciJdKTt0aGlzLnNoYXBlPWdldFN0cmluZ09wdGlvbihlLnNoYXBlLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5zaXplPWdldE1lYXN1cmVtZW50KGUuc2l6ZSwiMTBwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bb2xdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJtYXJnaW4iKSxhPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNpemUpO3Qud2lkdGg9dC5oZWlnaHQ9YTtsZXQgbixzLHI7Y29uc3QgaT10aGlzW1NvXSgpW1NvXSgpLG89aS5pdGVtcy5jaGlsZHJlbi5sZW5ndGgmJmkuaXRlbXMuY2hpbGRyZW5bMF1bb2xdKCkuaHRtbHx8W10sbD17b246KHZvaWQgMCE9PW9bMF0/b1swXToib24iKS50b1N0cmluZygpLG9mZjoodm9pZCAwIT09b1sxXT9vWzFdOiJvZmYiKS50b1N0cmluZygpfSxmPShpLnZhbHVlPy5bcmxdKCl8fCJvZmYiKT09PWwub258fHZvaWQgMCxjPWlbdm9dKCksaD1pW2NsXTtsZXQgdTtpZihjIGluc3RhbmNlb2YgRXhjbEdyb3VwKXtyPWNbY2xdO249InJhZGlvIjtzPSJ4ZmFSYWRpbyI7dT1jW3JvXT8uW2NsXXx8Y1tjbF19ZWxzZXtuPSJjaGVja2JveCI7cz0ieGZhQ2hlY2tib3giO3U9aVtyb10/LltjbF18fGlbY2xdfWNvbnN0IG09e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOntjbGFzczpbc10sc3R5bGU6dCxmaWVsZElkOmgsZGF0YUlkOnUsdHlwZTpuLGNoZWNrZWQ6Zix4ZmFPbjpsLm9uLHhmYU9mZjpsLm9mZiwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O3ImJihtLmF0dHJpYnV0ZXMubmFtZT1yKTtpZihpc1JlcXVpcmVkKGkpKXttLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDttLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W21dfSl9fWNsYXNzIENob2ljZUxpc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImNob2ljZUxpc3QiLCEwKTt0aGlzLmNvbW1pdE9uPWdldFN0cmluZ09wdGlvbihlLmNvbW1pdE9uLFsic2VsZWN0IiwiZXhpdCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3Blbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVuLFsidXNlckNvbnRyb2wiLCJhbHdheXMiLCJtdWx0aVNlbGVjdCIsIm9uRW50cnkiXSk7dGhpcy50ZXh0RW50cnk9Z2V0SW50ZWdlcih7ZGF0YTplLnRleHRFbnRyeSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bb2xdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJtYXJnaW4iKSxhPXRoaXNbU29dKClbU29dKCksbj17Zm9udFNpemU6YGNhbGMoJHthLmZvbnQ/LnNpemV8fDEwfXB4ICogdmFyKC0tdG90YWwtc2NhbGUtZmFjdG9yKSlgfSxzPVtdO2lmKGEuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoPjApe2NvbnN0IGU9YS5pdGVtcztsZXQgdD0wLHI9MDtpZigyPT09ZS5jaGlsZHJlbi5sZW5ndGgpe3Q9ZS5jaGlsZHJlblswXS5zYXZlO3I9MS10fWNvbnN0IGk9ZS5jaGlsZHJlblt0XVtvbF0oKS5odG1sLG89ZS5jaGlsZHJlbltyXVtvbF0oKS5odG1sO2xldCBsPSExO2NvbnN0IGY9YS52YWx1ZT8uW3JsXSgpfHwiIjtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9e25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7dmFsdWU6b1tlXXx8aVtlXSxzdHlsZTpufSx2YWx1ZTppW2VdfTtvW2VdPT09ZiYmKHQuYXR0cmlidXRlcy5zZWxlY3RlZD1sPSEwKTtzLnB1c2godCl9bHx8cy5zcGxpY2UoMCwwLHtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e2hpZGRlbjohMCxzZWxlY3RlZDohMH0sdmFsdWU6IiAifSl9Y29uc3Qgcj17Y2xhc3M6WyJ4ZmFTZWxlY3QiXSxmaWVsZElkOmFbY2xdLGRhdGFJZDphW3JvXT8uW2NsXXx8YVtjbF0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX07aWYoaXNSZXF1aXJlZChhKSl7clsiYXJpYS1yZXF1aXJlZCJdPSEwO3IucmVxdWlyZWQ9ITB9Im11bHRpU2VsZWN0Ij09PXRoaXMub3BlbiYmKHIubXVsdGlwbGU9ITApO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt7bmFtZToic2VsZWN0IixjaGlsZHJlbjpzLGF0dHJpYnV0ZXM6cn1dfSl9fWNsYXNzIENvbG9yIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJjb2xvciIsITApO3RoaXMuY1NwYWNlPWdldFN0cmluZ09wdGlvbihlLmNTcGFjZSxbIlNSR0IiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52YWx1ZT1lLnZhbHVlP2Z1bmN0aW9uIGdldENvbG9yKGUsdD1bMCwwLDBdKXtsZXRbYSxuLHNdPXQ7aWYoIWUpcmV0dXJue3I6YSxnOm4sYjpzfTtjb25zdCByPWUuc3BsaXQoIiwiLDMpLm1hcChlPT5NYXRoQ2xhbXAocGFyc2VJbnQoZS50cmltKCksMTApLDAsMjU1KSkubWFwKGU9PmlzTmFOKGUpPzA6ZSk7aWYoci5sZW5ndGg8MylyZXR1cm57cjphLGc6bixiOnN9O1thLG4sc109cjtyZXR1cm57cjphLGc6bixiOnN9fShlLnZhbHVlKToiIjt0aGlzLmV4dHJhcz1udWxsfVtDb10oKXtyZXR1cm4hMX1bZmxdKCl7cmV0dXJuIHRoaXMudmFsdWU/VXRpbC5tYWtlSGV4Q29sb3IodGhpcy52YWx1ZS5yLHRoaXMudmFsdWUuZyx0aGlzLnZhbHVlLmIpOm51bGx9fWNsYXNzIENvbWIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImNvbWIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVtYmVyT2ZDZWxscz1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyT2ZDZWxscyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDb25uZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJjb25uZWN0IiwhMCk7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2FnZT1nZXRTdHJpbmdPcHRpb24oZS51c2FnZSxbImV4cG9ydEFuZEltcG9ydCIsImV4cG9ydE9ubHkiLCJpbXBvcnRPbmx5Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgQ29udGVudEFyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImNvbnRlbnRBcmVhIiwhMCk7dGhpcy5oPWdldE1lYXN1cmVtZW50KGUuaCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9Z2V0TWVhc3VyZW1lbnQoZS53KTt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtvbF0oZSl7Y29uc3QgdD17bGVmdDptZWFzdXJlVG9TdHJpbmcodGhpcy54KSx0b3A6bWVhc3VyZVRvU3RyaW5nKHRoaXMueSksd2lkdGg6bWVhc3VyZVRvU3RyaW5nKHRoaXMudyksaGVpZ2h0Om1lYXN1cmVUb1N0cmluZyh0aGlzLmgpfSxhPVsieGZhQ29udGVudGFyZWEiXTtpc1ByaW50T25seSh0aGlzKSYmYS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e3N0eWxlOnQsY2xhc3M6YSxpZDp0aGlzW2NsXX19KX19Y2xhc3MgQ29ybmVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJjb3JuZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW52ZXJ0ZWQ9Z2V0SW50ZWdlcih7ZGF0YTplLmludmVydGVkLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5qb2luPWdldFN0cmluZ09wdGlvbihlLmpvaW4sWyJzcXVhcmUiLCJyb3VuZCJdKTt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmFkaXVzPWdldE1lYXN1cmVtZW50KGUucmFkaXVzKTt0aGlzLnN0cm9rZT1nZXRTdHJpbmdPcHRpb24oZS5zdHJva2UsWyJzb2xpZCIsImRhc2hEb3QiLCJkYXNoRG90RG90IiwiZGFzaGVkIiwiZG90dGVkIiwiZW1ib3NzZWQiLCJldGNoZWQiLCJsb3dlcmVkIiwicmFpc2VkIl0pO3RoaXMudGhpY2tuZXNzPWdldE1lYXN1cmVtZW50KGUudGhpY2tuZXNzLCIwLjVwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bZmxdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsInZpc2liaWxpdHkiKTtlLnJhZGl1cz1tZWFzdXJlVG9TdHJpbmcoInNxdWFyZSI9PT10aGlzLmpvaW4/MDp0aGlzLnJhZGl1cyk7cmV0dXJuIGV9fWNsYXNzIERhdGVFbGVtZW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiZGF0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtsb10oKXtjb25zdCBlPXRoaXNbc29dLnRyaW0oKTt0aGlzW3NvXT1lP25ldyBEYXRlKGUpOm51bGx9W29sXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tzb10/dGhpc1tzb10udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiZGF0ZVRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbG9dKCl7Y29uc3QgZT10aGlzW3NvXS50cmltKCk7dGhpc1tzb109ZT9uZXcgRGF0ZShlKTpudWxsfVtvbF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbc29dP3RoaXNbc29dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZUVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImRhdGVUaW1lRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5waWNrZXI9Z2V0U3RyaW5nT3B0aW9uKGUucGlja2VyLFsiaG9zdCIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtvbF0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbU29dKClbU29dKCksbj17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6YVtjbF0sZGF0YUlkOmFbcm9dPy5bY2xdfHxhW2NsXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKGEpKXtuLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDtuLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W25dfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJkZWNpbWFsIik7dGhpcy5mcmFjRGlnaXRzPWdldEludGVnZXIoe2RhdGE6ZS5mcmFjRGlnaXRzLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWREaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmxlYWREaWdpdHMsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtsb10oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tzb10udHJpbSgpKTt0aGlzW3NvXT1pc05hTihlKT9udWxsOmV9W29sXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbc29dP3RoaXNbc29dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEZWZhdWx0VWkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImRlZmF1bHRVaSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIERlc2MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERpZ2VzdE1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImRpZ2VzdE1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5kaWdlc3RNZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBEcmF3IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJkcmF3IiwhMCk7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWx1ZT1udWxsO3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5fVtubF0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W29sXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7dGhpc1tZb10oKTtjb25zdCB0PXRoaXMudyxhPXRoaXMuaCx7dzpuLGg6cyxpc0Jyb2tlbjpyfT1sYXlvdXROb2RlKHRoaXMsZSk7aWYobiYmIiI9PT10aGlzLncpe2lmKHImJnRoaXNbdm9dKClbUG9dKCkpe3RoaXNbJG9dKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX10aGlzLnc9bn1zJiYiIj09PXRoaXMuaCYmKHRoaXMuaD1zKTtzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpe3RoaXMudz10O3RoaXMuaD1hO3RoaXNbJG9dKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IGk9dG9TdHlsZSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7c2V0TWluTWF4RGltZW5zaW9ucyh0aGlzLGkpO2lmKGkubWFyZ2luKXtpLnBhZGRpbmc9aS5tYXJnaW47ZGVsZXRlIGkubWFyZ2lufWNvbnN0IG89WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZvLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmby5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBsPXtzdHlsZTppLGlkOnRoaXNbY2xdLGNsYXNzOm99O3RoaXMubmFtZSYmKGwueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGY9e25hbWU6ImRpdiIsYXR0cmlidXRlczpsLGNoaWxkcmVuOltdfTthcHBseUFzc2lzdCh0aGlzLGwpO2NvbnN0IGM9Y29tcHV0ZUJib3godGhpcyxmLGUpLGg9dGhpcy52YWx1ZT90aGlzLnZhbHVlW29sXShlKS5odG1sOm51bGw7aWYobnVsbD09PWgpe3RoaXMudz10O3RoaXMuaD1hO3RoaXNbJG9dKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsZiksYyl9Zi5jaGlsZHJlbi5wdXNoKGgpO3NldFBhcmEodGhpcyxpLGgpO3RoaXMudz10O3RoaXMuaD1hO3RoaXNbJG9dKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsZiksYyl9fWNsYXNzIEVkZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImVkZ2UiLCEwKTt0aGlzLmNhcD1nZXRTdHJpbmdPcHRpb24oZS5jYXAsWyJzcXVhcmUiLCJidXR0Iiwicm91bmQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtmbF0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO09iamVjdC5hc3NpZ24oZSx7bGluZWNhcDp0aGlzLmNhcCx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy50aGlja25lc3MpLGNvbG9yOnRoaXMuY29sb3I/dGhpcy5jb2xvcltmbF0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImVuY29kaW5nIixbImFkYmUueDUwOS5yc2Ffc2hhMSIsImFkYmUucGtjczcuZGV0YWNoZWQiLCJhZGJlLnBrY3M3LnNoYTEiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY29kaW5ncyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiZW5jb2RpbmdzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jb2Rpbmc9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFbmNyeXB0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJlbmNyeXB0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1udWxsfX1jbGFzcyBFbmNyeXB0RGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImVuY3J5cHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImVuY3J5cHRpb25NZXRob2QiLFsiIiwiQUVTMjU2LUNCQyIsIlRSSVBMRURFUy1DQkMiLCJBRVMxMjgtQ0JDIiwiQUVTMTkyLUNCQyJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImVuY3J5cHRpb25NZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV2ZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJldmVudCIsITApO3RoaXMuYWN0aXZpdHk9Z2V0U3RyaW5nT3B0aW9uKGUuYWN0aXZpdHksWyJjbGljayIsImNoYW5nZSIsImRvY0Nsb3NlIiwiZG9jUmVhZHkiLCJlbnRlciIsImV4aXQiLCJmdWxsIiwiaW5kZXhDaGFuZ2UiLCJpbml0aWFsaXplIiwibW91c2VEb3duIiwibW91c2VFbnRlciIsIm1vdXNlRXhpdCIsIm1vdXNlVXAiLCJwb3N0RXhlY3V0ZSIsInBvc3RPcGVuIiwicG9zdFByaW50IiwicG9zdFNhdmUiLCJwb3N0U2lnbiIsInBvc3RTdWJtaXQiLCJwcmVFeGVjdXRlIiwicHJlT3BlbiIsInByZVByaW50IiwicHJlU2F2ZSIsInByZVNpZ24iLCJwcmVTdWJtaXQiLCJyZWFkeSIsInZhbGlkYXRpb25TdGF0ZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGlzdGVuPWdldFN0cmluZ09wdGlvbihlLmxpc3RlbixbInJlZk9ubHkiLCJyZWZBbmREZXNjZW5kZW50cyJdKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5lbmNyeXB0RGF0YT1udWxsO3RoaXMuZXhlY3V0ZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy5zaWduRGF0YT1udWxsO3RoaXMuc3VibWl0PW51bGx9fWNsYXNzIEV4RGF0YSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9Z2V0U3RyaW5nT3B0aW9uKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bUm9dKCl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlfVtXb10oZSl7aWYoInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZlW0xvXT09PXVsLnhodG1sLmlkKXt0aGlzW3NvXT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW3NvXT1lO3JldHVybiEwfXJldHVybiExfVtvbF0oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW3NvXT90aGlzW3NvXVtvbF0oZSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgRXhPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImV4T2JqZWN0IiwhMCk7dGhpcy5hcmNoaXZlPWUuYXJjaGl2ZXx8IiI7dGhpcy5jbGFzc0lkPWUuY2xhc3NJZHx8IiI7dGhpcy5jb2RlQmFzZT1lLmNvZGVCYXNlfHwiIjt0aGlzLmNvZGVUeXBlPWUuY29kZVR5cGV8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImV4Y2xHcm91cCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5fVtIb10oKXtyZXR1cm4hMH1bQ29dKCl7cmV0dXJuITB9W25sXShlKXtmb3IoY29uc3QgdCBvZiB0aGlzLmZpZWxkLmNoaWxkcmVuKXtpZighdC52YWx1ZSl7Y29uc3QgZT1uZXcgVmFsdWUoe30pO3RbSmldKGUpO3QudmFsdWU9ZX10LnZhbHVlW25sXShlKX19W1BvXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW29vXS5hdHRlbXB0JiZ0aGlzW29vXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tTb10oKVtQb10oKX1bTm9dKCl7Y29uc3QgZT10aGlzW3ZvXSgpO2lmKCFlW05vXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbb29dLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbb29dLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbb29dLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbb29dLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW29vXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVtmb10oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVtZaV0oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bdW9dKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVtvbF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtmaXhEaW1lbnNpb25zKHRoaXMpO2NvbnN0IHQ9W10sYT17aWQ6dGhpc1tjbF0sY2xhc3M6W119O3NldEFjY2Vzcyh0aGlzLGEuY2xhc3MpO3RoaXNbb29dfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtPYmplY3QuYXNzaWduKHRoaXNbb29dLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6YSxhdHRlbXB0OjAsbGluZTpudWxsLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IG49dGhpc1tOb10oKTtufHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCBzPW5ldyBTZXQoWyJmaWVsZCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1t2b10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tvb10uY29sdW1uV2lkdGhzPWU7dGhpc1tvb10uY3VycmVudENvbHVtbj0wfX1jb25zdCByPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksaT1bInhmYUV4Y2xncm91cCJdLG89bGF5b3V0Q2xhc3ModGhpcyk7byYmaS5wdXNoKG8pO2lzUHJpbnRPbmx5KHRoaXMpJiZpLnB1c2goInhmYVByaW50T25seSIpO2Euc3R5bGU9cjthLmNsYXNzPWk7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tZb10oKTtjb25zdCBsPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGY9bD8yOjE7Zm9yKDt0aGlzW29vXS5hdHRlbXB0PGY7dGhpc1tvb10uYXR0ZW1wdCsrKXtsJiYxPT09dGhpc1tvb10uYXR0ZW1wdCYmKHRoaXNbb29dLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbUWldKHtmaWx0ZXI6cyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzWyRvXSgpO3JldHVybiBlfWlmKGwmJjA9PT10aGlzW29vXS5hdHRlbXB0JiYwPT09dGhpc1tvb10ubnVtYmVySW5MaW5lJiYhdGhpc1tBb10oKVtvb10ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW29vXS5hdHRlbXB0PWY7YnJlYWt9fXRoaXNbJG9dKCk7bnx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZih0aGlzW29vXS5hdHRlbXB0PT09Zil7bnx8ZGVsZXRlIHRoaXNbb29dO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9bGV0IGM9MCxoPTA7aWYodGhpcy5tYXJnaW4pe2M9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aD10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCB1PU1hdGgubWF4KHRoaXNbb29dLndpZHRoK2MsdGhpcy53fHwwKSxtPU1hdGgubWF4KHRoaXNbb29dLmhlaWdodCtoLHRoaXMuaHx8MCkscD1bdGhpcy54LHRoaXMueSx1LG1dOyIiPT09dGhpcy53JiYoci53aWR0aD1tZWFzdXJlVG9TdHJpbmcodSkpOyIiPT09dGhpcy5oJiYoci5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKG0pKTtjb25zdCBkPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6YSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGEpO2RlbGV0ZSB0aGlzW29vXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxkKSxwKX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiZXhlY3V0ZSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuZXhlY3V0ZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuZXhlY3V0ZVR5cGUsWyJpbXBvcnQiLCJyZW1lcmdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFeHRyYXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImV4dHJhcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJmaWVsZCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvcm1hdD1udWxsO3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bSG9dKCl7cmV0dXJuITB9W25sXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bb2xdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCF0aGlzLnVpKXt0aGlzLnVpPW5ldyBVaSh7fSk7dGhpcy51aVt4b109dGhpc1t4b107dGhpc1tKaV0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtKaV0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpcy5jYXB0aW9uJiZkZWxldGUgdGhpcy5jYXB0aW9uW29vXTt0aGlzW1lvXSgpO2NvbnN0IHQ9dGhpcy5jYXB0aW9uP3RoaXMuY2FwdGlvbltvbF0oZSkuaHRtbDpudWxsLGE9dGhpcy53LG49dGhpcy5oO2xldCBzPTAscj0wO2lmKHRoaXMubWFyZ2luKXtzPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3I9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IGk9bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsYT1udWxsLG49MCxvPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbiluPW89dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6YX09bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKG51bGwhPT10KXtuPXQ7bz1hfWVsc2Ugbz1mdW5jdGlvbiBmb250c19nZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGE9bnVsbDtpZihlKXtjb25zdCB0PXN0cmlwUXVvdGVzKGUudHlwZWZhY2UpLG49ZVt4b10uZm9udEZpbmRlci5maW5kKHQpO2E9c2VsZWN0Rm9udChlLG4pfWlmKCFhKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IG49ZS5zaXplfHwxMCxzPWEubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGEubGluZUhlaWdodCk6MS4yLHI9dm9pZCAwPT09YS5saW5lR2FwPy4yOmEubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDpzKm4sbGluZUdhcDpyKm4sbGluZU5vR2FwOk1hdGgubWF4KDEscy1yKSpufX0odGhpcy5mb250LCEwKS5saW5lTm9HYXB9aT1nZXRCb3JkZXJEaW1zKHRoaXMudWlbd29dKCkpO24rPWkudztvKz1pLmg7aWYodGhpcy5jYXB0aW9uKXtjb25zdHt3OnMsaDpyLGlzQnJva2VuOml9PXRoaXMuY2FwdGlvblt3b10oZSk7aWYoaSYmdGhpc1t2b10oKVtQb10oKSl7dGhpc1skb10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQ9czthPXI7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPW47YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphKz1vfX1lbHNle3Q9bjthPW99aWYodCYmIiI9PT10aGlzLncpe3QrPXM7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGEmJiIiPT09dGhpcy5oKXthKz1yO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxhP2E6dGhpcy5taW5IKX19dGhpc1skb10oKTtmaXhEaW1lbnNpb25zKHRoaXMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PWE7dGhpcy5oPW47dGhpc1skb10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbz10b1N0eWxlKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbyk7Y29uc3QgbD1bInhmYUZpZWxkIl07dGhpcy5mb250JiZsLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmbC5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBmPXtzdHlsZTpvLGlkOnRoaXNbY2xdLGNsYXNzOmx9O2lmKG8ubWFyZ2luKXtvLnBhZGRpbmc9by5tYXJnaW47ZGVsZXRlIG8ubWFyZ2lufXNldEFjY2Vzcyh0aGlzLGwpO3RoaXMubmFtZSYmKGYueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGM9W10saD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmYsY2hpbGRyZW46Y307YXBwbHlBc3Npc3QodGhpcyxmKTtjb25zdCB1PXRoaXMuYm9yZGVyP3RoaXMuYm9yZGVyW2ZsXSgpOm51bGwsbT1jb21wdXRlQmJveCh0aGlzLGgsZSkscD10aGlzLnVpW29sXSgpLmh0bWw7aWYoIXApe09iamVjdC5hc3NpZ24obyx1KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxtKX10aGlzW3NsXSYmKHAuY2hpbGRyZW4/LlswXT9wLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tzbF06cC5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbc2xdKTtwLmF0dHJpYnV0ZXMuc3R5bGV8fD1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBkPW51bGw7aWYodGhpcy51aS5idXR0b24pezE9PT1wLmNoaWxkcmVuLmxlbmd0aCYmKFtkXT1wLmNoaWxkcmVuLnNwbGljZSgwLDEpKTtPYmplY3QuYXNzaWduKHAuYXR0cmlidXRlcy5zdHlsZSx1KX1lbHNlIE9iamVjdC5hc3NpZ24obyx1KTtjLnB1c2gocCk7aWYodGhpcy52YWx1ZSlpZih0aGlzLnVpLmltYWdlRWRpdClwLmNoaWxkcmVuLnB1c2godGhpcy52YWx1ZVtvbF0oKS5odG1sKTtlbHNlIGlmKCF0aGlzLnVpLmJ1dHRvbil7bGV0IGU9IiI7aWYodGhpcy52YWx1ZS5leERhdGEpZT10aGlzLnZhbHVlLmV4RGF0YVtybF0oKTtlbHNlIGlmKHRoaXMudmFsdWUudGV4dCllPXRoaXMudmFsdWUudGV4dFt3b10oKTtlbHNle2NvbnN0IHQ9dGhpcy52YWx1ZVtvbF0oKS5odG1sO251bGwhPT10JiYoZT10LmNoaWxkcmVuWzBdLnZhbHVlKX10aGlzLnVpLnRleHRFZGl0JiZ0aGlzLnZhbHVlLnRleHQ/Lm1heENoYXJzJiYocC5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLm1heExlbmd0aD10aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMpO2lmKGUpe2lmKHRoaXMudWkubnVtZXJpY0VkaXQpe2U9cGFyc2VGbG9hdChlKTtlPWlzTmFOKGUpPyIiOmUudG9TdHJpbmcoKX0idGV4dGFyZWEiPT09cC5jaGlsZHJlblswXS5uYW1lP3AuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy50ZXh0Q29udGVudD1lOnAuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy52YWx1ZT1lfX1pZighdGhpcy51aS5pbWFnZUVkaXQmJnAuY2hpbGRyZW4/LlswXSYmdGhpcy5oKXtpPWl8fGdldEJvcmRlckRpbXModGhpcy51aVt3b10oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW3dvXShlKS5oKTtjb25zdCBhPXRoaXMuaC10LXItaS5oO3AuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGEpfWVsc2UgcC5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9ZCYmcC5jaGlsZHJlbi5wdXNoKGQpO2lmKCF0KXtwLmF0dHJpYnV0ZXMuY2xhc3MmJnAuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PWE7dGhpcy5oPW47cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksbSl9aWYodGhpcy51aS5idXR0b24pe28ucGFkZGluZyYmZGVsZXRlIG8ucGFkZGluZzsiZGl2Ij09PXQubmFtZSYmKHQubmFtZT0ic3BhbiIpO3AuY2hpbGRyZW4ucHVzaCh0KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGgsbSl9dGhpcy51aS5jaGVja0J1dHRvbiYmKHQuYXR0cmlidXRlcy5jbGFzc1swXT0ieGZhQ2FwdGlvbkZvckNoZWNrQnV0dG9uIik7cC5hdHRyaWJ1dGVzLmNsYXNzfHw9W107cC5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjpwLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOnAuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjpwLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOnAuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9YTt0aGlzLmg9bjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxtKX19Y2xhc3MgRmlsbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiZmlsbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5saW5lYXI9bnVsbDt0aGlzLnBhdHRlcm49bnVsbDt0aGlzLnJhZGlhbD1udWxsO3RoaXMuc29saWQ9bnVsbDt0aGlzLnN0aXBwbGU9bnVsbH1bZmxdKCl7Y29uc3QgZT10aGlzW1NvXSgpLHQ9ZVtTb10oKVtTb10oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IG49ImNvbG9yIixzPW47aWYoZSBpbnN0YW5jZW9mIEJvcmRlcil7bj0iYmFja2dyb3VuZC1jb2xvciI7cz0iYmFja2dyb3VuZCI7dCBpbnN0YW5jZW9mIFVpJiYoYS5iYWNrZ3JvdW5kQ29sb3I9IndoaXRlIil9aWYoZSBpbnN0YW5jZW9mIFJlY3RhbmdsZXx8ZSBpbnN0YW5jZW9mIEFyYyl7bj1zPSJmaWxsIjthLmZpbGw9IndoaXRlIn1mb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwiY29sb3IiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYoISh0IGluc3RhbmNlb2YgWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCByPXRbZmxdKHRoaXMuY29sb3IpO3ImJihhW3Iuc3RhcnRzV2l0aCgiIyIpP246c109cik7cmV0dXJuIGF9aWYodGhpcy5jb2xvcj8udmFsdWUpe2NvbnN0IGU9dGhpcy5jb2xvcltmbF0oKTthW2Uuc3RhcnRzV2l0aCgiIyIpP246c109ZX1yZXR1cm4gYX19Y2xhc3MgRmlsdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJmaWx0ZXIiLCEwKTt0aGlzLmFkZFJldm9jYXRpb25JbmZvPWdldFN0cmluZ09wdGlvbihlLmFkZFJldm9jYXRpb25JbmZvLFsiIiwicmVxdWlyZWQiLCJvcHRpb25hbCIsIm5vbmUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52ZXJzaW9uPWdldEludGVnZXIoe2RhdGE6dGhpcy52ZXJzaW9uLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTEmJmU8PTV9KTt0aGlzLmFwcGVhcmFuY2VGaWx0ZXI9bnVsbDt0aGlzLmNlcnRpZmljYXRlcz1udWxsO3RoaXMuZGlnZXN0TWV0aG9kcz1udWxsO3RoaXMuZW5jb2RpbmdzPW51bGw7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1udWxsO3RoaXMuaGFuZGxlcj1udWxsO3RoaXMubG9ja0RvY3VtZW50PW51bGw7dGhpcy5tZHA9bnVsbDt0aGlzLnJlYXNvbnM9bnVsbDt0aGlzLnRpbWVTdGFtcD1udWxsfX1jbGFzcyBGbG9hdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImZsb2F0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2xvXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW3NvXS50cmltKCkpO3RoaXNbc29dPWlzTmFOKGUpP251bGw6ZX1bb2xdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tzb10/dGhpc1tzb10udG9TdHJpbmcoKToiIil9fWNsYXNzIHRlbXBsYXRlX0ZvbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImZvbnQiLCEwKTt0aGlzLmJhc2VsaW5lU2hpZnQ9Z2V0TWVhc3VyZW1lbnQoZS5iYXNlbGluZVNoaWZ0KTt0aGlzLmZvbnRIb3Jpem9udGFsU2NhbGU9Z2V0RmxvYXQoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZm9udFZlcnRpY2FsU2NhbGU9Z2V0RmxvYXQoe2RhdGE6ZS5mb250VmVydGljYWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2VybmluZ01vZGU9Z2V0U3RyaW5nT3B0aW9uKGUua2VybmluZ01vZGUsWyJub25lIiwicGFpciJdKTt0aGlzLmxldHRlclNwYWNpbmc9Z2V0TWVhc3VyZW1lbnQoZS5sZXR0ZXJTcGFjaW5nLCIwIik7dGhpcy5saW5lVGhyb3VnaD1nZXRJbnRlZ2VyKHtkYXRhOmUubGluZVRocm91Z2gsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5saW5lVGhyb3VnaFBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5vdmVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5vdmVybGluZVBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS5vdmVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5wb3N0dXJlPWdldFN0cmluZ09wdGlvbihlLnBvc3R1cmUsWyJub3JtYWwiLCJpdGFsaWMiXSk7dGhpcy5zaXplPWdldE1lYXN1cmVtZW50KGUuc2l6ZSwiMTBwdCIpO3RoaXMudHlwZWZhY2U9ZS50eXBlZmFjZXx8IkNvdXJpZXIiO3RoaXMudW5kZXJsaW5lPWdldEludGVnZXIoe2RhdGE6ZS51bmRlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy51bmRlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUudW5kZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53ZWlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUud2VpZ2h0LFsibm9ybWFsIiwiYm9sZCJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsfVtaaV0oZSl7c3VwZXJbWmldKGUpO3RoaXNbeG9dLnVzZWRUeXBlZmFjZXMuYWRkKHRoaXMudHlwZWZhY2UpfVtmbF0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiZmlsbCIpLHQ9ZS5jb2xvcjtpZih0KWlmKCIjMDAwMDAwIj09PXQpZGVsZXRlIGUuY29sb3I7ZWxzZSBpZighdC5zdGFydHNXaXRoKCIjIikpe2UuYmFja2dyb3VuZD10O2UuYmFja2dyb3VuZENsaXA9InRleHQiO2UuY29sb3I9InRyYW5zcGFyZW50In10aGlzLmJhc2VsaW5lU2hpZnQmJihlLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKHRoaXMuYmFzZWxpbmVTaGlmdCkpO2UuZm9udEtlcm5pbmc9Im5vbmUiPT09dGhpcy5rZXJuaW5nTW9kZT8ibm9uZSI6Im5vcm1hbCI7ZS5sZXR0ZXJTcGFjaW5nPW1lYXN1cmVUb1N0cmluZyh0aGlzLmxldHRlclNwYWNpbmcpO2lmKDAhPT10aGlzLmxpbmVUaHJvdWdoKXtlLnRleHREZWNvcmF0aW9uPSJsaW5lLXRocm91Z2giOzI9PT10aGlzLmxpbmVUaHJvdWdoJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1pZigwIT09dGhpcy5vdmVybGluZSl7ZS50ZXh0RGVjb3JhdGlvbj0ib3ZlcmxpbmUiOzI9PT10aGlzLm92ZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRTdHlsZT10aGlzLnBvc3R1cmU7ZS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoLjk5KnRoaXMuc2l6ZSk7c2V0Rm9udEZhbWlseSh0aGlzLHRoaXMsdGhpc1t4b10uZm9udEZpbmRlcixlKTtpZigwIT09dGhpcy51bmRlcmxpbmUpe2UudGV4dERlY29yYXRpb249InVuZGVybGluZSI7Mj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRXZWlnaHQ9dGhpcy53ZWlnaHQ7cmV0dXJuIGV9fWNsYXNzIEZvcm1hdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiZm9ybWF0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgSGFuZGxlciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiaGFuZGxlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgSHlwaGVuYXRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImh5cGhlbmF0aW9uIik7dGhpcy5leGNsdWRlQWxsQ2Fwcz1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPWdldEludGVnZXIoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaHlwaGVuYXRlPWdldEludGVnZXIoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHVzaENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEltYWdlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJpbWFnZSIpO3RoaXMuYXNwZWN0PWdldFN0cmluZ09wdGlvbihlLmFzcGVjdCxbImZpdCIsImFjdHVhbCIsImhlaWdodCIsIm5vbmUiLCJ3aWR0aCJdKTt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaHJlZj1lLmhyZWZ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy50cmFuc2ZlckVuY29kaW5nPWdldFN0cmluZ09wdGlvbihlLnRyYW5zZmVyRW5jb2RpbmcsWyJiYXNlNjQiLCJub25lIiwicGFja2FnZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W29sXSgpe2lmKHRoaXMuY29udGVudFR5cGUmJiEkbC5oYXModGhpcy5jb250ZW50VHlwZS50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW3hvXS5pbWFnZXM/LmdldCh0aGlzLmhyZWYpO2lmKCFlJiYodGhpcy5ocmVmfHwhdGhpc1tzb10pKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2V8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT1VaW50OEFycmF5LmZyb21CYXNlNjQodGhpc1tzb10pKTtpZighZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpZighdGhpcy5jb250ZW50VHlwZSl7Zm9yKGNvbnN0W3QsYV1vZiBZbClpZihlLmxlbmd0aD50Lmxlbmd0aCYmdC5ldmVyeSgodCxhKT0+dD09PWVbYV0pKXt0aGlzLmNvbnRlbnRUeXBlPWE7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBhO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6YT17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOmE9e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOmE9e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCBuPXRoaXNbU29dKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6YSxzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6bj9hcmlhTGFiZWwobltTb10oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJpbWFnZUVkaXQiLCEwKTt0aGlzLmRhdGE9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YSxbImxpbmsiLCJlbWJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bb2xdKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319KTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiaW50ZWdlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtsb10oKXtjb25zdCBlPXBhcnNlSW50KHRoaXNbc29dLnRyaW0oKSwxMCk7dGhpc1tzb109aXNOYU4oZSk/bnVsbDplfVtvbF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW3NvXT90aGlzW3NvXS50b1N0cmluZygpOiIiKX19Y2xhc3MgSXNzdWVycyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9Z2V0SW50ZWdlcih7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtvbF0oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNba29dKCkpZS5wdXNoKHRbcmxdKCkpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fWNsYXNzIEtlZXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PWdldFN0cmluZ09wdGlvbihlLmludGFjdCx0KTt0aGlzLm5leHQ9Z2V0U3RyaW5nT3B0aW9uKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPWdldFN0cmluZ09wdGlvbihlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwia2V5VXNhZ2UiKTtjb25zdCB0PVsiIiwieWVzIiwibm8iXTt0aGlzLmNybFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUuY3JsU2lnbix0KTt0aGlzLmRhdGFFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YUVuY2lwaGVybWVudCx0KTt0aGlzLmRlY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5kZWNpcGhlck9ubHksdCk7dGhpcy5kaWdpdGFsU2lnbmF0dXJlPWdldFN0cmluZ09wdGlvbihlLmRpZ2l0YWxTaWduYXR1cmUsdCk7dGhpcy5lbmNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZW5jaXBoZXJPbmx5LHQpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXlBZ3JlZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5QWdyZWVtZW50LHQpO3RoaXMua2V5Q2VydFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUua2V5Q2VydFNpZ24sdCk7dGhpcy5rZXlFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5RW5jaXBoZXJtZW50LHQpO3RoaXMubm9uUmVwdWRpYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUubm9uUmVwdWRpYXRpb24sdCk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTGluZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwibGluZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVtvbF0oKXtjb25zdCBlPXRoaXNbU29dKClbU29dKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxhPXRbZmxdKCksbj1PYmplY3QuY3JlYXRlKG51bGwpLHM9InZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowO24uc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKHMpO24uc3Ryb2tlPWEuY29sb3I7bGV0IHIsaSxvLGwsZj0iMTAwJSIsYz0iMTAwJSI7aWYoZS53PD1zKXtbcixpLG8sbF09WyI1MCUiLDAsIjUwJSIsIjEwMCUiXTtmPW4uc3Ryb2tlV2lkdGh9ZWxzZSBpZihlLmg8PXMpe1tyLGksbyxsXT1bMCwiNTAlIiwiMTAwJSIsIjUwJSJdO2M9bi5zdHJva2VXaWR0aH1lbHNlIlxcIj09PXRoaXMuc2xvcGU/W3IsaSxvLGxdPVswLDAsIjEwMCUiLCIxMDAlIl06W3IsaSxvLGxdPVswLCIxMDAlIiwiMTAwJSIsMF07Y29uc3QgaD17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6ImxpbmUiLGF0dHJpYnV0ZXM6e3htbG5zOkdsLHgxOnIseTE6aSx4MjpvLHkyOmwsc3R5bGU6bn19XSxhdHRyaWJ1dGVzOnt4bWxuczpHbCx3aWR0aDpmLGhlaWdodDpjLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9fX07aWYoaGFzTWFyZ2luKGUpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbaF19KTtoLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGgpfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImxpbmVhciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b1JpZ2h0IiwidG9Cb3R0b20iLCJ0b0xlZnQiLCJ0b1RvcCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2ZsXShlKXtlPWU/ZVtmbF0oKToiI0ZGRkZGRiI7cmV0dXJuYGxpbmVhci1ncmFkaWVudCgke3RoaXMudHlwZS5yZXBsYWNlKC8oW1JCTFRdKS8sIiAkMSIpLnRvTG93ZXJDYXNlKCl9LCAke2V9LCAke3RoaXMuY29sb3I/dGhpcy5jb2xvcltmbF0oKToiIzAwMDAwMCJ9KWB9fWNsYXNzIExvY2tEb2N1bWVudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsImxvY2tEb2N1bWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbG9dKCl7dGhpc1tzb109Z2V0U3RyaW5nT3B0aW9uKHRoaXNbc29dLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwibWFuaWZlc3QiLCEwKTt0aGlzLmFjdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpb24sWyJpbmNsdWRlIiwiYWxsIiwiZXhjbHVkZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJtYXJnaW4iLCEwKTt0aGlzLmJvdHRvbUluc2V0PWdldE1lYXN1cmVtZW50KGUuYm90dG9tSW5zZXQsIjAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVmdEluc2V0PWdldE1lYXN1cmVtZW50KGUubGVmdEluc2V0LCIwIik7dGhpcy5yaWdodEluc2V0PWdldE1lYXN1cmVtZW50KGUucmlnaHRJbnNldCwiMCIpO3RoaXMudG9wSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS50b3BJbnNldCwiMCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtmbF0oKXtyZXR1cm57bWFyZ2luOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRvcEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMucmlnaHRJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmJvdHRvbUluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwibWRwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBlcm1pc3Npb25zPWdldEludGVnZXIoe2RhdGE6ZS5wZXJtaXNzaW9ucyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4xPT09ZXx8Mz09PWV9KTt0aGlzLnNpZ25hdHVyZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2lnbmF0dXJlVHlwZSxbImZpbGxlciIsImF1dGhvciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lZGl1bSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwibWVkaXVtIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmltYWdpbmdCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBhPWUuc3BsaXQoIiwiLDQpLm1hcChlPT5nZXRNZWFzdXJlbWVudChlLnRyaW0oKSwiLTEiKSk7aWYoYS5sZW5ndGg8NHx8YVsyXTwwfHxhWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbbixzLHIsaV09YTtyZXR1cm57eDpuLHk6cyx3aWR0aDpyLGhlaWdodDppfX0oZS5pbWFnaW5nQkJveCk7dGhpcy5sb25nPWdldE1lYXN1cmVtZW50KGUubG9uZyk7dGhpcy5vcmllbnRhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcmllbnRhdGlvbixbInBvcnRyYWl0IiwibGFuZHNjYXBlIl0pO3RoaXMuc2hvcnQ9Z2V0TWVhc3VyZW1lbnQoZS5zaG9ydCk7dGhpcy5zdG9jaz1lLnN0b2NrfHwiIjt0aGlzLnRyYXlJbj1nZXRTdHJpbmdPcHRpb24oZS50cmF5SW4sWyJhdXRvIiwiZGVsZWdhdGUiLCJwYWdlRnJvbnQiXSk7dGhpcy50cmF5T3V0PWdldFN0cmluZ09wdGlvbihlLnRyYXlPdXQsWyJhdXRvIiwiZGVsZWdhdGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZXNzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTnVtZXJpY0VkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W29sXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGE9dGhpc1tTb10oKVtTb10oKSxuPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDphW2NsXSxkYXRhSWQ6YVtyb10/LltjbF18fGFbY2xdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe24uYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO24uYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbbl19KX19Y2xhc3MgT2NjdXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD9nZXRJbnRlZ2VyKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pOiIiO3RoaXMubWluPSIiIT09ZS5taW4/Z2V0SW50ZWdlcih7ZGF0YTplLm1pbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pOiIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtaaV0oKXtjb25zdCBlPXRoaXNbU29dKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8wOjEpOyIiPT09dGhpcy5tYXgmJih0aGlzLm1heD0iIj09PXQ/ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8tMToxOnRoaXMubWluKTstMSE9PXRoaXMubWF4JiZ0aGlzLm1heDx0aGlzLm1pbiYmKHRoaXMubWF4PXRoaXMubWluKTsiIj09PXRoaXMuaW5pdGlhbCYmKHRoaXMuaW5pdGlhbD1lIGluc3RhbmNlb2YgVGVtcGxhdGU/MTp0aGlzLm1pbil9fWNsYXNzIE9pZCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwib2lkIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE9pZHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsIm9pZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5vaWQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBPdmVyZmxvdyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwib3ZlcmZsb3ciKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVt3b10oKXtpZighdGhpc1tvb10pe2NvbnN0IGU9dGhpc1tTb10oKSx0PXRoaXNbQW9dKCksYT10W2VsXSh0aGlzLnRhcmdldCxlKSxuPXRbZWxdKHRoaXMubGVhZGVyLGUpLHM9dFtlbF0odGhpcy50cmFpbGVyLGUpO3RoaXNbb29dPXt0YXJnZXQ6YT8uWzBdfHxudWxsLGxlYWRlcjpuPy5bMF18fG51bGwsdHJhaWxlcjpzPy5bMF18fG51bGwsYWRkTGVhZGVyOiExLGFkZFRyYWlsZXI6ITF9fXJldHVybiB0aGlzW29vXX19Y2xhc3MgUGFnZUFyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInBhZ2VBcmVhIiwhMCk7dGhpcy5ibGFua09yTm90Qmxhbms9Z2V0U3RyaW5nT3B0aW9uKGUuYmxhbmtPck5vdEJsYW5rLFsiYW55IiwiYmxhbmsiLCJub3RCbGFuayJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5pdGlhbE51bWJlcj1nZXRJbnRlZ2VyKHtkYXRhOmUuaW5pdGlhbE51bWJlcixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMubnVtYmVyZWQ9Z2V0SW50ZWdlcih7ZGF0YTplLm51bWJlcmVkLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5vZGRPckV2ZW49Z2V0U3RyaW5nT3B0aW9uKGUub2RkT3JFdmVuLFsiYW55IiwiZXZlbiIsIm9kZCJdKTt0aGlzLnBhZ2VQb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5wYWdlUG9zaXRpb24sWyJhbnkiLCJmaXJzdCIsImxhc3QiLCJvbmx5IiwicmVzdCJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVkaXVtPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheX1bX29dKCl7aWYoIXRoaXNbb29dKXt0aGlzW29vXT17bnVtYmVyT2ZVc2U6MH07cmV0dXJuITB9cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbb29dLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtlb10oKXtkZWxldGUgdGhpc1tvb119W3FvXSgpe3RoaXNbb29dfHw9e251bWJlck9mVXNlOjB9O2NvbnN0IGU9dGhpc1tTb10oKTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09ZS5yZWxhdGlvbiYmdGhpc1tfb10oKSl7dGhpc1tvb10ubnVtYmVyT2ZVc2UrPTE7cmV0dXJuIHRoaXN9cmV0dXJuIGVbcW9dKCl9W3VvXSgpe3JldHVybiB0aGlzW29vXS5zcGFjZXx8e3dpZHRoOjAsaGVpZ2h0OjB9fVtvbF0oKXt0aGlzW29vXXx8PXtudW1iZXJPZlVzZToxfTtjb25zdCBlPVtdO3RoaXNbb29dLmNoaWxkcmVuPWU7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHRoaXMubWVkaXVtJiZ0aGlzLm1lZGl1bS5zaG9ydCYmdGhpcy5tZWRpdW0ubG9uZyl7dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0uc2hvcnQpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1lZGl1bS5sb25nKTt0aGlzW29vXS5zcGFjZT17d2lkdGg6dGhpcy5tZWRpdW0uc2hvcnQsaGVpZ2h0OnRoaXMubWVkaXVtLmxvbmd9O2lmKCJsYW5kc2NhcGUiPT09dGhpcy5tZWRpdW0ub3JpZW50YXRpb24pe2NvbnN0IGU9dC53aWR0aDt0LndpZHRoPXQuaGVpZ2h0O3QuaGVpZ2h0PWU7dGhpc1tvb10uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLmxvbmcsaGVpZ2h0OnRoaXMubWVkaXVtLnNob3J0fX19ZWxzZSB3YXJuKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW1FpXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSk7dGhpc1tRaV0oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46ZSxhdHRyaWJ1dGVzOntjbGFzczpbInhmYVBhZ2UiXSxpZDp0aGlzW2NsXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1jbGFzcyBQYWdlU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJwYWdlU2V0IiwhMCk7dGhpcy5kdXBsZXhJbXBvc2l0aW9uPWdldFN0cmluZ09wdGlvbihlLmR1cGxleEltcG9zaXRpb24sWyJsb25nRWRnZSIsInNob3J0RWRnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucmVsYXRpb24sWyJvcmRlcmVkT2NjdXJyZW5jZSIsImR1cGxleFBhZ2luYXRlZCIsInNpbXBsZXhQYWdpbmF0ZWQiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5wYWdlQXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyBYRkFPYmplY3RBcnJheX1bZW9dKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW2VvXSgpO2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZVNldC5jaGlsZHJlbillW2VvXSgpfVtfb10oKXtyZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tvb10ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3FvXSgpe3RoaXNbb29dfHw9e251bWJlck9mVXNlOjEscGFnZUluZGV4Oi0xLHBhZ2VTZXRJbmRleDotMX07aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PXRoaXMucmVsYXRpb24pe2lmKHRoaXNbb29dLnBhZ2VJbmRleCsxPHRoaXMucGFnZUFyZWEuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW29vXS5wYWdlSW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bdGhpc1tvb10ucGFnZUluZGV4XVtxb10oKX1pZih0aGlzW29vXS5wYWdlU2V0SW5kZXgrMTx0aGlzLnBhZ2VTZXQuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW29vXS5wYWdlU2V0SW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZVNldC5jaGlsZHJlblt0aGlzW29vXS5wYWdlU2V0SW5kZXhdW3FvXSgpfWlmKHRoaXNbX29dKCkpe3RoaXNbb29dLm51bWJlck9mVXNlKz0xO3RoaXNbb29dLnBhZ2VJbmRleD0tMTt0aGlzW29vXS5wYWdlU2V0SW5kZXg9LTE7cmV0dXJuIHRoaXNbcW9dKCl9Y29uc3QgZT10aGlzW1NvXSgpO2lmKGUgaW5zdGFuY2VvZiBQYWdlU2V0KXJldHVybiBlW3FvXSgpO3RoaXNbZW9dKCk7cmV0dXJuIHRoaXNbcW9dKCl9Y29uc3QgZT10aGlzW0FvXSgpW29vXS5wYWdlTnVtYmVyLHQ9ZSUyPT0wPyJldmVuIjoib2RkIixhPTA9PT1lPyJmaXJzdCI6InJlc3QiO2xldCBuPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZChlPT5lLm9kZE9yRXZlbj09PXQmJmUucGFnZVBvc2l0aW9uPT09YSk7aWYobilyZXR1cm4gbjtuPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiZlLnBhZ2VQb3NpdGlvbj09PWEpO2lmKG4pcmV0dXJuIG47bj10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmImFueSI9PT1lLnBhZ2VQb3NpdGlvbik7cmV0dXJuIG58fHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bMF19fWNsYXNzIFBhcmEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInBhcmEiLCEwKTt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saW5lSGVpZ2h0PWUubGluZUhlaWdodD9nZXRNZWFzdXJlbWVudChlLmxpbmVIZWlnaHQsIjBwdCIpOiIiO3RoaXMubWFyZ2luTGVmdD1lLm1hcmdpbkxlZnQ/Z2V0TWVhc3VyZW1lbnQoZS5tYXJnaW5MZWZ0LCIwcHQiKToiIjt0aGlzLm1hcmdpblJpZ2h0PWUubWFyZ2luUmlnaHQ/Z2V0TWVhc3VyZW1lbnQoZS5tYXJnaW5SaWdodCwiMHB0Iik6IiI7dGhpcy5vcnBoYW5zPWdldEludGVnZXIoe2RhdGE6ZS5vcnBoYW5zLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnByZXNlcnZlPWUucHJlc2VydmV8fCIiO3RoaXMucmFkaXhPZmZzZXQ9ZS5yYWRpeE9mZnNldD9nZXRNZWFzdXJlbWVudChlLnJhZGl4T2Zmc2V0LCIwcHQiKToiIjt0aGlzLnNwYWNlQWJvdmU9ZS5zcGFjZUFib3ZlP2dldE1lYXN1cmVtZW50KGUuc3BhY2VBYm92ZSwiMHB0Iik6IiI7dGhpcy5zcGFjZUJlbG93PWUuc3BhY2VCZWxvdz9nZXRNZWFzdXJlbWVudChlLnNwYWNlQmVsb3csIjBwdCIpOiIiO3RoaXMudGFiRGVmYXVsdD1lLnRhYkRlZmF1bHQ/Z2V0TWVhc3VyZW1lbnQodGhpcy50YWJEZWZhdWx0KToiIjt0aGlzLnRhYlN0b3BzPShlLnRhYlN0b3BzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGUsdCk9PnQlMj09MT9nZXRNZWFzdXJlbWVudChlKTplKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50P2dldE1lYXN1cmVtZW50KGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPWdldFN0cmluZ09wdGlvbihlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz1nZXRJbnRlZ2VyKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W2ZsXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJoQWxpZ24iKTsiIiE9PXRoaXMubWFyZ2luTGVmdCYmKGUucGFkZGluZ0xlZnQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWFyZ2luTGVmdCkpOyIiIT09dGhpcy5tYXJnaW5SaWdodCYmKGUucGFkZGluZ1JpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpblJpZ2h0KSk7IiIhPT10aGlzLnNwYWNlQWJvdmUmJihlLnBhZGRpbmdUb3A9bWVhc3VyZVRvU3RyaW5nKHRoaXMuc3BhY2VBYm92ZSkpOyIiIT09dGhpcy5zcGFjZUJlbG93JiYoZS5wYWRkaW5nQm90dG9tPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQmVsb3cpKTtpZigiIiE9PXRoaXMudGV4dEluZGVudCl7ZS50ZXh0SW5kZW50PW1lYXN1cmVUb1N0cmluZyh0aGlzLnRleHRJbmRlbnQpO2ZpeFRleHRJbmRlbnQoZSl9dGhpcy5saW5lSGVpZ2h0PjAmJihlLmxpbmVIZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubGluZUhlaWdodCkpOyIiIT09dGhpcy50YWJEZWZhdWx0JiYoZS50YWJTaXplPW1lYXN1cmVUb1N0cmluZyh0aGlzLnRhYkRlZmF1bHQpKTt0aGlzLnRhYlN0b3BzLmxlbmd0aDt0aGlzLmh5cGhlbmF0YXRpb24mJk9iamVjdC5hc3NpZ24oZSx0aGlzLmh5cGhlbmF0YXRpb25bZmxdKCkpO3JldHVybiBlfX1jbGFzcyBQYXNzd29yZEVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInBhc3N3b3JkRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wYXNzd29yZENoYXI9ZS5wYXNzd29yZENoYXJ8fCIqIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIHRlbXBsYXRlX1BhdHRlcm4gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInBhdHRlcm4iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsiY3Jvc3NIYXRjaCIsImNyb3NzRGlhZ29uYWwiLCJkaWFnb25hbExlZnQiLCJkaWFnb25hbFJpZ2h0IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bZmxdKGUpe2U9ZT9lW2ZsXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltmbF0oKToiIzAwMDAwMCIsYT0icmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCIsbj1gJHtlfSwke2V9IDVweCwke3R9IDVweCwke3R9IDEwcHhgO3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UiY3Jvc3NIYXRjaCI6cmV0dXJuYCR7YX0odG8gdG9wLCR7bn0pICR7YX0odG8gcmlnaHQsJHtufSlgO2Nhc2UiY3Jvc3NEaWFnb25hbCI6cmV0dXJuYCR7YX0oNDVkZWcsJHtufSkgJHthfSgtNDVkZWcsJHtufSlgO2Nhc2UiZGlhZ29uYWxMZWZ0IjpyZXR1cm5gJHthfSg0NWRlZywke259KWA7Y2FzZSJkaWFnb25hbFJpZ2h0IjpyZXR1cm5gJHthfSgtNDVkZWcsJHtufSlgO2Nhc2UiaG9yaXpvbnRhbCI6cmV0dXJuYCR7YX0odG8gdG9wLCR7bn0pYDtjYXNlInZlcnRpY2FsIjpyZXR1cm5gJHthfSh0byByaWdodCwke259KWB9cmV0dXJuIiJ9fWNsYXNzIFBpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInBpY3R1cmUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUHJvdG8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInByb3RvIiwhMCk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmFyYz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmFzc2lzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iYXJjb2RlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29rZW5kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9yZGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnV0dG9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNhbGN1bGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYXB0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jaGVja0J1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jaG9pY2VMaXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbG9yPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbWI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb3JuZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZUVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VWk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVzYz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kaWdlc3RNZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2Rpbmc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2RpbmdzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhlY3V0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWx0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9udD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mb3JtYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaGFuZGxlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5oeXBoZW5hdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZUVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pc3N1ZXJzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLml0ZW1zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtlZXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMua2V5VXNhZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lYXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubG9ja0RvY3VtZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hcmdpbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZHA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWVkaXVtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lc3NhZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubnVtZXJpY0VkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub2NjdXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub2lkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub3ZlcmZsb3c9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXJhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhc3N3b3JkRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBpY3R1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmFkaWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb25zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlY3RhbmdsZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWY9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25hdHVyZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNvbGlkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNwZWFrPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN0aXBwbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmplY3RETj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE5zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHRFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZVN0YW1wPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRvb2xUaXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhdmVyc2FsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnZhbGlkYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnZhbHVlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnZhcmlhYmxlcz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJhZGlhbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwicmFkaWFsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bZmxdKGUpe2U9ZT9lW2ZsXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltmbF0oKToiIzAwMDAwMCI7cmV0dXJuYHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgY2VudGVyLCAkeyJ0b0VkZ2UiPT09dGhpcy50eXBlP2Ake2V9LCR7dH1gOmAke3R9LCR7ZX1gfSlgfX1jbGFzcyBSZWFzb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInJlYXNvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBSZWFzb25zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJyZWFzb25zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucmVhc29uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgUmVjdGFuZ2xlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJyZWN0YW5nbGUiLCEwKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb3JuZXI9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZWRnZT1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5maWxsPW51bGx9W29sXSgpe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLmxlbmd0aD90aGlzLmVkZ2UuY2hpbGRyZW5bMF06bmV3IEVkZ2Uoe30pLHQ9ZVtmbF0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW2ZsXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7Y29uc3Qgbj0odGhpcy5jb3JuZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY29ybmVyLmNoaWxkcmVuWzBdOm5ldyBDb3JuZXIoe30pKVtmbF0oKSxzPXtuYW1lOiJzdmciLGNoaWxkcmVuOlt7bmFtZToicmVjdCIsYXR0cmlidXRlczp7eG1sbnM6R2wsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIseDowLHk6MCxyeDpuLnJhZGl1cyxyeTpuLnJhZGl1cyxzdHlsZTphfX1dLGF0dHJpYnV0ZXM6e3htbG5zOkdsLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9LHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX07aWYoaGFzTWFyZ2luKHRoaXNbU29dKClbU29dKCkpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbc119KTtzLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHMpfX1jbGFzcyBSZWZFbGVtZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJyZWYiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2NyaXB0IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJzY3JpcHQiKTt0aGlzLmJpbmRpbmc9ZS5iaW5kaW5nfHwiIjt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTZXRQcm9wZXJ0eSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwic2V0UHJvcGVydHkiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIifX1jbGFzcyBTaWduRGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwic2lnbkRhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbInNpZ24iLCJjbGVhciIsInZlcmlmeSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJzaWduYXR1cmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsiUERGMS4zIiwiUERGMS42Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGw7dGhpcy5tYXJnaW49bnVsbH19Y2xhc3MgU2lnbmluZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwic2lnbmluZyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgU29saWQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInNvbGlkIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bZmxdKGUpe3JldHVybiBlP2VbZmxdKCk6IiNGRkZGRkYifX1jbGFzcyBTcGVhayBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwic3BlYWsiKTt0aGlzLmRpc2FibGU9Z2V0SW50ZWdlcih7ZGF0YTplLmRpc2FibGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJpb3JpdHk9Z2V0U3RyaW5nT3B0aW9uKGUucHJpb3JpdHksWyJjdXN0b20iLCJjYXB0aW9uIiwibmFtZSIsInRvb2xUaXAiXSk7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU3RpcHBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwic3RpcHBsZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yYXRlPWdldEludGVnZXIoe2RhdGE6ZS5yYXRlLGRlZmF1bHRWYWx1ZTo1MCx2YWxpZGF0ZTplPT5lPj0wJiZlPD0xMDB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2ZsXShlKXtjb25zdCB0PXRoaXMucmF0ZS8xMDA7cmV0dXJuIFV0aWwubWFrZUhleENvbG9yKE1hdGgucm91bmQoZS52YWx1ZS5yKigxLXQpK3RoaXMudmFsdWUucip0KSxNYXRoLnJvdW5kKGUudmFsdWUuZyooMS10KSt0aGlzLnZhbHVlLmcqdCksTWF0aC5yb3VuZChlLnZhbHVlLmIqKDEtdCkrdGhpcy52YWx1ZS5iKnQpKX19Y2xhc3MgU3ViZm9ybSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwic3ViZm9ybSIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWxsb3dNYWNybz1nZXRJbnRlZ2VyKHtkYXRhOmUuYWxsb3dNYWNybyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmNvbHVtbldpZHRocz0oZS5jb2x1bW5XaWR0aHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcChlPT4iLTEiPT09ZT8tMTpnZXRNZWFzdXJlbWVudChlKSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT1nZXRTdHJpbmdPcHRpb24oZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPWdldFN0cmluZ09wdGlvbihlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fVt2b10oKXtjb25zdCBlPXRoaXNbU29dKCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P2Vbdm9dKCk6ZX1bSG9dKCl7cmV0dXJuITB9W1BvXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW29vXS5hdHRlbXB0JiZ0aGlzW29vXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tTb10oKVtQb10oKX0qW3lvXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtmb10oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVtZaV0oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bdW9dKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVtOb10oKXtjb25zdCBlPXRoaXNbdm9dKCk7aWYoIWVbTm9dKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tvb10uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tvb10uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tvb10uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZih0aGlzLmtlZXAmJiJub25lIiE9PXRoaXMua2VlcC5pbnRhY3Qpe3RoaXNbb29dLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbb29dLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW29vXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVtvbF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYodGhpcy5icmVhayl7aWYoImF1dG8iIT09dGhpcy5icmVhay5hZnRlcnx8IiIhPT10aGlzLmJyZWFrLmFmdGVyVGFyZ2V0KXtjb25zdCBlPW5ldyBCcmVha0FmdGVyKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYWZ0ZXIsdGFyZ2V0OnRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVt4b109dGhpc1t4b107dGhpc1tKaV0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3hvXT10aGlzW3hvXTt0aGlzW0ppXShlKTt0aGlzLmJyZWFrQmVmb3JlLnB1c2goZSl9aWYoIiIhPT10aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0KXtjb25zdCBlPW5ldyBPdmVyZmxvdyh7dGFyZ2V0OnRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQsbGVhZGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dMZWFkZXIsdHJhaWxlcjp0aGlzLmJyZWFrLm92ZXJmbG93VHJhaWxlcn0pO2VbeG9dPXRoaXNbeG9dO3RoaXNbSmldKGUpO3RoaXMub3ZlcmZsb3cucHVzaChlKX10aGlzW0pvXSh0aGlzLmJyZWFrKTt0aGlzLmJyZWFrPW51bGx9aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTsodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+MXx8dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD4xKSYmd2FybigiWEZBIC0gU2V2ZXJhbCBicmVha0JlZm9yZSBvciBicmVha0FmdGVyIGluIHN1YmZvcm1zOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtpZih0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXJldHVybiBIVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW29vXT8uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW2NsXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsYS5jbGFzcyk7dGhpc1tvb118fD1PYmplY3QuY3JlYXRlKG51bGwpO09iamVjdC5hc3NpZ24odGhpc1tvb10se2NoaWxkcmVuOnQsbGluZTpudWxsLGF0dHJpYnV0ZXM6YSxhdHRlbXB0OjAsbnVtYmVySW5MaW5lOjAsYXZhaWxhYmxlU3BhY2U6e3dpZHRoOk1hdGgubWluKHRoaXMud3x8MS8wLGUud2lkdGgpLGhlaWdodDpNYXRoLm1pbih0aGlzLmh8fDEvMCxlLmhlaWdodCl9LHdpZHRoOjAsaGVpZ2h0OjAscHJldkhlaWdodDowLGN1cnJlbnRXaWR0aDowfSk7Y29uc3Qgbj10aGlzW0FvXSgpLHM9bltvb10ubm9MYXlvdXRGYWlsdXJlLHI9dGhpc1tOb10oKTtyfHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCBpPW5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImV4Y2xHcm91cCIsImZpZWxkIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbdm9dKCkuY29sdW1uV2lkdGhzO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe3RoaXNbb29dLmNvbHVtbldpZHRocz1lO3RoaXNbb29dLmN1cnJlbnRDb2x1bW49MH19Y29uc3Qgbz10b1N0eWxlKHRoaXMsImFuY2hvclR5cGUiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsImJvcmRlciIsIm1hcmdpbiIsImhBbGlnbiIpLGw9WyJ4ZmFTdWJmb3JtIl0sZj1sYXlvdXRDbGFzcyh0aGlzKTtmJiZsLnB1c2goZik7YS5zdHlsZT1vO2EuY2xhc3M9bDt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtpZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbd29dKCk7aWYodC5hZGRMZWFkZXIpe3QuYWRkTGVhZGVyPSExO2hhbmRsZU92ZXJmbG93KHRoaXMsdC5sZWFkZXIsZSl9fXRoaXNbWW9dKCk7Y29uc3QgYz0ibHItdGIiPT09dGhpcy5sYXlvdXR8fCJybC10YiI9PT10aGlzLmxheW91dCxoPWM/MjoxO2Zvcig7dGhpc1tvb10uYXR0ZW1wdDxoO3RoaXNbb29dLmF0dGVtcHQrKyl7YyYmMT09PXRoaXNbb29dLmF0dGVtcHQmJih0aGlzW29vXS5udW1iZXJJbkxpbmU9MCk7Y29uc3QgZT10aGlzW1FpXSh7ZmlsdGVyOmksaW5jbHVkZTohMH0pO2lmKGUuc3VjY2VzcylicmVhaztpZihlLmlzQnJlYWsoKSl7dGhpc1skb10oKTtyZXR1cm4gZX1pZihjJiYwPT09dGhpc1tvb10uYXR0ZW1wdCYmMD09PXRoaXNbb29dLm51bWJlckluTGluZSYmIW5bb29dLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1tvb10uYXR0ZW1wdD1oO2JyZWFrfX10aGlzWyRvXSgpO3J8fHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7bltvb10ubm9MYXlvdXRGYWlsdXJlPXM7aWYodGhpc1tvb10uYXR0ZW1wdD09PWgpe3RoaXMub3ZlcmZsb3cmJih0aGlzW0FvXSgpW29vXS5vdmVyZmxvd05vZGU9dGhpcy5vdmVyZmxvdyk7cnx8ZGVsZXRlIHRoaXNbb29dO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3dvXSgpO2lmKHQuYWRkVHJhaWxlcil7dC5hZGRUcmFpbGVyPSExO2hhbmRsZU92ZXJmbG93KHRoaXMsdC50cmFpbGVyLGUpfX1sZXQgdT0wLG09MDtpZih0aGlzLm1hcmdpbil7dT10aGlzLm1hcmdpbi5sZWZ0SW5zZXQrdGhpcy5tYXJnaW4ucmlnaHRJbnNldDttPXRoaXMubWFyZ2luLnRvcEluc2V0K3RoaXMubWFyZ2luLmJvdHRvbUluc2V0fWNvbnN0IHA9TWF0aC5tYXgodGhpc1tvb10ud2lkdGgrdSx0aGlzLnd8fDApLGQ9TWF0aC5tYXgodGhpc1tvb10uaGVpZ2h0K20sdGhpcy5ofHwwKSxnPVt0aGlzLngsdGhpcy55LHAsZF07IiI9PT10aGlzLncmJihvLndpZHRoPW1lYXN1cmVUb1N0cmluZyhwKSk7IiI9PT10aGlzLmgmJihvLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZCkpO2lmKCgiMHB4Ij09PW8ud2lkdGh8fCIwcHgiPT09by5oZWlnaHQpJiYwPT09dC5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Y29uc3QgYj17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtjb25zdCB3PUhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsYiksZyk7aWYodGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpe3RoaXNbb29dLmFmdGVyQnJlYWtBZnRlcj13O3JldHVybiBIVE1MUmVzdWx0LmJyZWFrTm9kZShlKX19ZGVsZXRlIHRoaXNbb29dO3JldHVybiB3fX1jbGFzcyBTdWJmb3JtU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJzdWJmb3JtU2V0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZCIsImNob2ljZSIsInVub3JkZXJlZCJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fSpbeW9dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W3ZvXSgpe2xldCBlPXRoaXNbU29dKCk7Zm9yKDshKGUgaW5zdGFuY2VvZiBTdWJmb3JtKTspZT1lW1NvXSgpO3JldHVybiBlfVtIb10oKXtyZXR1cm4hMH19Y2xhc3MgU3ViamVjdEROIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwic3ViamVjdEROIik7dGhpcy5kZWxpbWl0ZXI9ZS5kZWxpbWl0ZXJ8fCIsIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbG9dKCl7dGhpc1tzb109bmV3IE1hcCh0aGlzW3NvXS5zcGxpdCh0aGlzLmRlbGltaXRlcikubWFwKGU9PnsoZT1lLnNwbGl0KCI9IiwyKSlbMF09ZVswXS50cmltKCk7cmV0dXJuIGV9KSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInN1YmplY3RETnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInN1Ym1pdCIsITApO3RoaXMuZW1iZWRQREY9Z2V0SW50ZWdlcih7ZGF0YTplLmVtYmVkUERGLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsieGRwIiwiZm9ybWRhdGEiLCJwZGYiLCJ1cmxlbmNvZGVkIiwieGZkIiwieG1sIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGV4dEVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS50ZXh0RW5jb2Rpbmc/ZS50ZXh0RW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnhkcENvbnRlbnQ9ZS54ZHBDb250ZW50fHwiIjt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT1nZXRTdHJpbmdPcHRpb24oZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheX1bbG9dKCl7MD09PXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgmJndhcm4oIlhGQSAtIE5vIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGUuIik7dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MiYmd2FybigiWEZBIC0gU2V2ZXJhbCBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW3NsXT01ZTN9W05vXSgpe3JldHVybiEwfVtlbF0oZSx0KXtyZXR1cm4gZS5zdGFydHNXaXRoKCIjIik/W3RoaXNbSW9dLmdldChlLnNsaWNlKDEpKV06c2VhcmNoTm9kZSh0aGlzLHQsZSwhMCwhMCl9KltpbF0oKXtpZighdGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfSk7dGhpc1tvb109e292ZXJmbG93Tm9kZTpudWxsLGZpcnN0VW5zcGxpdHRhYmxlOm51bGwsY3VycmVudENvbnRlbnRBcmVhOm51bGwsY3VycmVudFBhZ2VBcmVhOm51bGwsbm9MYXlvdXRGYWlsdXJlOiExLHBhZ2VOdW1iZXI6MSxwYWdlUG9zaXRpb246ImZpcnN0IixvZGRPckV2ZW46Im9kZCIsYmxhbmtPck5vdEJsYW5rOiJub25CbGFuayIscGFyYVN0YWNrOltdfTtjb25zdCBlPXRoaXMuc3ViZm9ybS5jaGlsZHJlblswXTtlLnBhZ2VTZXRbZW9dKCk7Y29uc3QgdD1lLnBhZ2VTZXQucGFnZUFyZWEuY2hpbGRyZW4sYT17bmFtZToiZGl2IixjaGlsZHJlbjpbXX07bGV0IG49bnVsbCxzPW51bGwscj1udWxsO2lmKGUuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtzPWUuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cj1zLnRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe3M9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3I9cy50YXJnZXR9ZWxzZSBpZihlLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3M9ZS5icmVhaztyPXMuYmVmb3JlVGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3M9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrO3I9cy5iZWZvcmVUYXJnZXR9aWYocyl7Y29uc3QgZT10aGlzW2VsXShyLHNbU29dKCkpO2lmKGUgaW5zdGFuY2VvZiBQYWdlQXJlYSl7bj1lO3Nbb29dPXt9fX1ufHw9dFswXTtuW29vXT17bnVtYmVyT2ZVc2U6MX07Y29uc3QgaT1uW1NvXSgpO2lbb29dPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDppLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YobikscGFnZVNldEluZGV4OjB9O2xldCBvLGw9bnVsbCxmPW51bGwsYz0hMCxoPTAsdT0wO2Zvcig7Oyl7aWYoYyloPTA7ZWxzZXthLmNoaWxkcmVuLnBvcCgpO2lmKDM9PT0rK2gpe3dhcm4oIlhGQSAtIFNvbWV0aGluZyBnb2VzIHdyb25nOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtyZXR1cm4gYX19bz1udWxsO3RoaXNbb29dLmN1cnJlbnRQYWdlQXJlYT1uO2NvbnN0IHQ9bltvbF0oKS5odG1sO2EuY2hpbGRyZW4ucHVzaCh0KTtpZihsKXt0aGlzW29vXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGxbb2xdKG5bb29dLnNwYWNlKS5odG1sKTtsPW51bGx9aWYoZil7dGhpc1tvb10ubm9MYXlvdXRGYWlsdXJlPSEwO3QuY2hpbGRyZW4ucHVzaChmW29sXShuW29vXS5zcGFjZSkuaHRtbCk7Zj1udWxsfWNvbnN0IHM9bi5jb250ZW50QXJlYS5jaGlsZHJlbixyPXQuY2hpbGRyZW4uZmlsdGVyKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSk7Yz0hMTt0aGlzW29vXS5maXJzdFVuc3BsaXR0YWJsZT1udWxsO3RoaXNbb29dLm5vTGF5b3V0RmFpbHVyZT0hMTtjb25zdCBmbHVzaD10PT57Y29uc3QgYT1lW2ZvXSgpO2lmKGEpe2N8fD1hLmNoaWxkcmVuPy5sZW5ndGg+MDtyW3RdLmNoaWxkcmVuLnB1c2goYSl9fTtmb3IobGV0IHQ9dSxuPXMubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49dGhpc1tvb10uY3VycmVudENvbnRlbnRBcmVhPXNbdF0saT17d2lkdGg6bi53LGhlaWdodDpuLmh9O3U9MDtpZihsKXtyW3RdLmNoaWxkcmVuLnB1c2gobFtvbF0oaSkuaHRtbCk7bD1udWxsfWlmKGYpe3JbdF0uY2hpbGRyZW4ucHVzaChmW29sXShpKS5odG1sKTtmPW51bGx9Y29uc3QgaD1lW29sXShpKTtpZihoLnN1Y2Nlc3Mpe2lmKGguaHRtbCl7Y3x8PWguaHRtbC5jaGlsZHJlbj8ubGVuZ3RoPjA7clt0XS5jaGlsZHJlbi5wdXNoKGguaHRtbCl9ZWxzZSFjJiZhLmNoaWxkcmVuLmxlbmd0aD4xJiZhLmNoaWxkcmVuLnBvcCgpO3JldHVybiBhfWlmKGguaXNCcmVhaygpKXtjb25zdCBlPWguYnJlYWtOb2RlO2ZsdXNoKHQpO2lmKCJhdXRvIj09PWUudGFyZ2V0VHlwZSljb250aW51ZTtpZihlLmxlYWRlcil7bD10aGlzW2VsXShlLmxlYWRlcixlW1NvXSgpKTtsPWw/bFswXTpudWxsfWlmKGUudHJhaWxlcil7Zj10aGlzW2VsXShlLnRyYWlsZXIsZVtTb10oKSk7Zj1mP2ZbMF06bnVsbH1pZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXtvPWVbb29dLnRhcmdldDt0PTEvMH1lbHNlIGlmKGVbb29dLnRhcmdldCl7bz1lW29vXS50YXJnZXQ7dT1lW29vXS5pbmRleCsxO3Q9MS8wfWVsc2UgdD1lW29vXS5pbmRleDtjb250aW51ZX1pZih0aGlzW29vXS5vdmVyZmxvd05vZGUpe2NvbnN0IGU9dGhpc1tvb10ub3ZlcmZsb3dOb2RlO3RoaXNbb29dLm92ZXJmbG93Tm9kZT1udWxsO2NvbnN0IGE9ZVt3b10oKSxuPWEudGFyZ2V0O2EuYWRkTGVhZGVyPW51bGwhPT1hLmxlYWRlcjthLmFkZFRyYWlsZXI9bnVsbCE9PWEudHJhaWxlcjtmbHVzaCh0KTtjb25zdCByPXQ7dD0xLzA7aWYobiBpbnN0YW5jZW9mIFBhZ2VBcmVhKW89bjtlbHNlIGlmKG4gaW5zdGFuY2VvZiBDb250ZW50QXJlYSl7Y29uc3QgZT1zLmluZGV4T2Yobik7aWYoLTEhPT1lKWU+cj90PWUtMTp1PWU7ZWxzZXtvPW5bU29dKCk7dT1vLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yobil9fWNvbnRpbnVlfWZsdXNoKHQpfXRoaXNbb29dLnBhZ2VOdW1iZXIrPTE7byYmKG9bX29dKCk/b1tvb10ubnVtYmVyT2ZVc2UrPTE6bz1udWxsKTtuPW98fG5bcW9dKCk7eWllbGQgbnVsbH19fWNsYXNzIFRleHQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJ0ZXh0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heENoYXJzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhDaGFycyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bJGldKCl7cmV0dXJuITB9W1dvXShlKXtpZihlW0xvXT09PXVsLnhodG1sLmlkKXt0aGlzW3NvXT1lO3JldHVybiEwfXdhcm4oYFhGQSAtIEludmFsaWQgY29udGVudCBpbiBUZXh0OiAke2VbVW9dfS5gKTtyZXR1cm4hMX1bR29dKGUpe3RoaXNbc29daW5zdGFuY2VvZiBYRkFPYmplY3R8fHN1cGVyW0dvXShlKX1bbG9dKCl7InN0cmluZyI9PXR5cGVvZiB0aGlzW3NvXSYmKHRoaXNbc29dPXRoaXNbc29dLnJlcGxhY2VBbGwoIlxyXG4iLCJcbiIpKX1bd29dKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW3NvXT90aGlzW3NvXS5zcGxpdCgvW1x1MjAyOVx1MjAyOFxuXS8pLmZpbHRlcihlPT4hIWUpLmpvaW4oIlxuIik6dGhpc1tzb11bcmxdKCl9W29sXShlKXtpZigic3RyaW5nIj09dHlwZW9mIHRoaXNbc29dKXtjb25zdCBlPXZhbHVlVG9IdG1sKHRoaXNbc29dKS5odG1sO2lmKHRoaXNbc29dLmluY2x1ZGVzKCJcdTIwMjkiKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tzb10uc3BsaXQoIlx1MjAyOSIpLm1hcChlPT5lLnNwbGl0KC9bXHUyMDI4XG5dLykuZmxhdE1hcChlPT5be25hbWU6InNwYW4iLHZhbHVlOmV9LHtuYW1lOiJiciJ9XSkpLmZvckVhY2godD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToicCIsY2hpbGRyZW46dH0pfSl9ZWxzZSBpZigvW1x1MjAyOFxuXS8udGVzdCh0aGlzW3NvXSkpe2UubmFtZT0iZGl2IjtlLmNoaWxkcmVuPVtdO3RoaXNbc29dLnNwbGl0KC9bXHUyMDI4XG5dLykuZm9yRWFjaCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSl9KX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiB0aGlzW3NvXVtvbF0oZSl9fWNsYXNzIFRleHRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD1nZXRJbnRlZ2VyKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtvbF0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKTtsZXQgYTtjb25zdCBuPXRoaXNbU29dKClbU29dKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPW4gaW5zdGFuY2VvZiBEcmF3PzE6MCk7YT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6bltyb10/LltjbF18fG5bY2xdLGZpZWxkSWQ6bltjbF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6bltyb10/LltjbF18fG5bY2xdLGZpZWxkSWQ6bltjbF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChuKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlthXX0pfX1jbGFzcyBUaW1lIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2xvXSgpe2NvbnN0IGU9dGhpc1tzb10udHJpbSgpO3RoaXNbc29dPWU/bmV3IERhdGUoZSk6bnVsbH1bb2xdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW3NvXT90aGlzW3NvXS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJ0aW1lU3RhbXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2VydmVyPWUuc2VydmVyfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUb29sVGlwIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJ0b29sVGlwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUcmF2ZXJzYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYXZlcnNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bRW9dKCl7cmV0dXJuITF9fWNsYXNzIFVpIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W3dvXSgpe2lmKHZvaWQgMD09PXRoaXNbb29dKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXt0aGlzW29vXT10O3JldHVybiB0fX10aGlzW29vXT1udWxsfXJldHVybiB0aGlzW29vXX1bb2xdKGUpe2NvbnN0IHQ9dGhpc1t3b10oKTtyZXR1cm4gdD90W29sXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbCwidmFsaWRhdGUiLCEwKTt0aGlzLmZvcm1hdFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0VGVzdCxbIndhcm5pbmciLCJkaXNhYmxlZCIsImVycm9yIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udWxsVGVzdD1nZXRTdHJpbmdPcHRpb24oZS5udWxsVGVzdCxbImRpc2FibGVkIiwiZXJyb3IiLCJ3YXJuaW5nIl0pO3RoaXMuc2NyaXB0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5zY3JpcHRUZXN0LFsiZXJyb3IiLCJkaXNhYmxlZCIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgVmFsdWUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoS2wsInZhbHVlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPWdldEludGVnZXIoe2RhdGE6ZS5vdmVycmlkZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYXJjPW51bGw7dGhpcy5ib29sZWFuPW51bGw7dGhpcy5kYXRlPW51bGw7dGhpcy5kYXRlVGltZT1udWxsO3RoaXMuZGVjaW1hbD1udWxsO3RoaXMuZXhEYXRhPW51bGw7dGhpcy5mbG9hdD1udWxsO3RoaXMuaW1hZ2U9bnVsbDt0aGlzLmludGVnZXI9bnVsbDt0aGlzLmxpbmU9bnVsbDt0aGlzLnJlY3RhbmdsZT1udWxsO3RoaXMudGV4dD1udWxsO3RoaXMudGltZT1udWxsfVtubF0oZSl7Y29uc3QgdD10aGlzW1NvXSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aT8uaW1hZ2VFZGl0KXtpZighdGhpcy5pbWFnZSl7dGhpcy5pbWFnZT1uZXcgSW1hZ2Uoe30pO3RoaXNbSmldKHRoaXMuaW1hZ2UpfXRoaXMuaW1hZ2Vbc29dPWVbc29dO3JldHVybn1jb25zdCBhPWVbVW9dO2lmKG51bGw9PT10aGlzW2FdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbZV09bnVsbDt0aGlzW0pvXSh0KX19dGhpc1tlW1VvXV09ZTt0aGlzW0ppXShlKX1lbHNlIHRoaXNbYV1bc29dPWVbc29dfVtybF0oKXtpZih0aGlzLmV4RGF0YSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXMuZXhEYXRhW3NvXT90aGlzLmV4RGF0YVtzb10udHJpbSgpOnRoaXMuZXhEYXRhW3NvXVtybF0oKS50cmltKCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJpbWFnZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybih0W3NvXXx8IiIpLnRvU3RyaW5nKCkudHJpbSgpfXJldHVybiBudWxsfVtvbF0oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtpZihhIGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybiBhW29sXShlKX1yZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgVmFyaWFibGVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEtsLCJ2YXJpYWJsZXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtFb10oKXtyZXR1cm4hMH19Y2xhc3MgVGVtcGxhdGVOYW1lc3BhY2V7c3RhdGljW2hsXShlLHQpe2lmKE9iamVjdC5oYXNPd24oVGVtcGxhdGVOYW1lc3BhY2UsZSkpe2NvbnN0IGE9VGVtcGxhdGVOYW1lc3BhY2VbZV0odCk7YVthbF0odCk7cmV0dXJuIGF9fXN0YXRpYyBhcHBlYXJhbmNlRmlsdGVyKGUpe3JldHVybiBuZXcgQXBwZWFyYW5jZUZpbHRlcihlKX1zdGF0aWMgYXJjKGUpe3JldHVybiBuZXcgQXJjKGUpfXN0YXRpYyBhcmVhKGUpe3JldHVybiBuZXcgQXJlYShlKX1zdGF0aWMgYXNzaXN0KGUpe3JldHVybiBuZXcgQXNzaXN0KGUpfXN0YXRpYyBiYXJjb2RlKGUpe3JldHVybiBuZXcgQmFyY29kZShlKX1zdGF0aWMgYmluZChlKXtyZXR1cm4gbmV3IEJpbmQoZSl9c3RhdGljIGJpbmRJdGVtcyhlKXtyZXR1cm4gbmV3IEJpbmRJdGVtcyhlKX1zdGF0aWMgYm9va2VuZChlKXtyZXR1cm4gbmV3IEJvb2tlbmQoZSl9c3RhdGljIGJvb2xlYW4oZSl7cmV0dXJuIG5ldyBCb29sZWFuRWxlbWVudChlKX1zdGF0aWMgYm9yZGVyKGUpe3JldHVybiBuZXcgQm9yZGVyKGUpfXN0YXRpYyBicmVhayhlKXtyZXR1cm4gbmV3IEJyZWFrKGUpfXN0YXRpYyBicmVha0FmdGVyKGUpe3JldHVybiBuZXcgQnJlYWtBZnRlcihlKX1zdGF0aWMgYnJlYWtCZWZvcmUoZSl7cmV0dXJuIG5ldyBCcmVha0JlZm9yZShlKX1zdGF0aWMgYnV0dG9uKGUpe3JldHVybiBuZXcgQnV0dG9uKGUpfXN0YXRpYyBjYWxjdWxhdGUoZSl7cmV0dXJuIG5ldyBDYWxjdWxhdGUoZSl9c3RhdGljIGNhcHRpb24oZSl7cmV0dXJuIG5ldyBDYXB0aW9uKGUpfXN0YXRpYyBjZXJ0aWZpY2F0ZShlKXtyZXR1cm4gbmV3IENlcnRpZmljYXRlKGUpfXN0YXRpYyBjZXJ0aWZpY2F0ZXMoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZXMoZSl9c3RhdGljIGNoZWNrQnV0dG9uKGUpe3JldHVybiBuZXcgQ2hlY2tCdXR0b24oZSl9c3RhdGljIGNob2ljZUxpc3QoZSl7cmV0dXJuIG5ldyBDaG9pY2VMaXN0KGUpfXN0YXRpYyBjb2xvcihlKXtyZXR1cm4gbmV3IENvbG9yKGUpfXN0YXRpYyBjb21iKGUpe3JldHVybiBuZXcgQ29tYihlKX1zdGF0aWMgY29ubmVjdChlKXtyZXR1cm4gbmV3IENvbm5lY3QoZSl9c3RhdGljIGNvbnRlbnRBcmVhKGUpe3JldHVybiBuZXcgQ29udGVudEFyZWEoZSl9c3RhdGljIGNvcm5lcihlKXtyZXR1cm4gbmV3IENvcm5lcihlKX1zdGF0aWMgZGF0ZShlKXtyZXR1cm4gbmV3IERhdGVFbGVtZW50KGUpfXN0YXRpYyBkYXRlVGltZShlKXtyZXR1cm4gbmV3IERhdGVUaW1lKGUpfXN0YXRpYyBkYXRlVGltZUVkaXQoZSl7cmV0dXJuIG5ldyBEYXRlVGltZUVkaXQoZSl9c3RhdGljIGRlY2ltYWwoZSl7cmV0dXJuIG5ldyBEZWNpbWFsKGUpfXN0YXRpYyBkZWZhdWx0VWkoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VWkoZSl9c3RhdGljIGRlc2MoZSl7cmV0dXJuIG5ldyBEZXNjKGUpfXN0YXRpYyBkaWdlc3RNZXRob2QoZSl7cmV0dXJuIG5ldyBEaWdlc3RNZXRob2QoZSl9c3RhdGljIGRpZ2VzdE1ldGhvZHMoZSl7cmV0dXJuIG5ldyBEaWdlc3RNZXRob2RzKGUpfXN0YXRpYyBkcmF3KGUpe3JldHVybiBuZXcgRHJhdyhlKX1zdGF0aWMgZWRnZShlKXtyZXR1cm4gbmV3IEVkZ2UoZSl9c3RhdGljIGVuY29kaW5nKGUpe3JldHVybiBuZXcgRW5jb2RpbmcoZSl9c3RhdGljIGVuY29kaW5ncyhlKXtyZXR1cm4gbmV3IEVuY29kaW5ncyhlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IEVuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHREYXRhKGUpe3JldHVybiBuZXcgRW5jcnlwdERhdGEoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTWV0aG9kKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZChlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZHMoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTWV0aG9kcyhlKX1zdGF0aWMgZXZlbnQoZSl7cmV0dXJuIG5ldyBFdmVudChlKX1zdGF0aWMgZXhEYXRhKGUpe3JldHVybiBuZXcgRXhEYXRhKGUpfXN0YXRpYyBleE9iamVjdChlKXtyZXR1cm4gbmV3IEV4T2JqZWN0KGUpfXN0YXRpYyBleGNsR3JvdXAoZSl7cmV0dXJuIG5ldyBFeGNsR3JvdXAoZSl9c3RhdGljIGV4ZWN1dGUoZSl7cmV0dXJuIG5ldyBFeGVjdXRlKGUpfXN0YXRpYyBleHRyYXMoZSl7cmV0dXJuIG5ldyBFeHRyYXMoZSl9c3RhdGljIGZpZWxkKGUpe3JldHVybiBuZXcgRmllbGQoZSl9c3RhdGljIGZpbGwoZSl7cmV0dXJuIG5ldyBGaWxsKGUpfXN0YXRpYyBmaWx0ZXIoZSl7cmV0dXJuIG5ldyBGaWx0ZXIoZSl9c3RhdGljIGZsb2F0KGUpe3JldHVybiBuZXcgRmxvYXQoZSl9c3RhdGljIGZvbnQoZSl7cmV0dXJuIG5ldyB0ZW1wbGF0ZV9Gb250KGUpfXN0YXRpYyBmb3JtYXQoZSl7cmV0dXJuIG5ldyBGb3JtYXQoZSl9c3RhdGljIGhhbmRsZXIoZSl7cmV0dXJuIG5ldyBIYW5kbGVyKGUpfXN0YXRpYyBoeXBoZW5hdGlvbihlKXtyZXR1cm4gbmV3IEh5cGhlbmF0aW9uKGUpfXN0YXRpYyBpbWFnZShlKXtyZXR1cm4gbmV3IEltYWdlKGUpfXN0YXRpYyBpbWFnZUVkaXQoZSl7cmV0dXJuIG5ldyBJbWFnZUVkaXQoZSl9c3RhdGljIGludGVnZXIoZSl7cmV0dXJuIG5ldyBJbnRlZ2VyKGUpfXN0YXRpYyBpc3N1ZXJzKGUpe3JldHVybiBuZXcgSXNzdWVycyhlKX1zdGF0aWMgaXRlbXMoZSl7cmV0dXJuIG5ldyBJdGVtcyhlKX1zdGF0aWMga2VlcChlKXtyZXR1cm4gbmV3IEtlZXAoZSl9c3RhdGljIGtleVVzYWdlKGUpe3JldHVybiBuZXcgS2V5VXNhZ2UoZSl9c3RhdGljIGxpbmUoZSl7cmV0dXJuIG5ldyBMaW5lKGUpfXN0YXRpYyBsaW5lYXIoZSl7cmV0dXJuIG5ldyBMaW5lYXIoZSl9c3RhdGljIGxvY2tEb2N1bWVudChlKXtyZXR1cm4gbmV3IExvY2tEb2N1bWVudChlKX1zdGF0aWMgbWFuaWZlc3QoZSl7cmV0dXJuIG5ldyBNYW5pZmVzdChlKX1zdGF0aWMgbWFyZ2luKGUpe3JldHVybiBuZXcgTWFyZ2luKGUpfXN0YXRpYyBtZHAoZSl7cmV0dXJuIG5ldyBNZHAoZSl9c3RhdGljIG1lZGl1bShlKXtyZXR1cm4gbmV3IE1lZGl1bShlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IE1lc3NhZ2UoZSl9c3RhdGljIG51bWVyaWNFZGl0KGUpe3JldHVybiBuZXcgTnVtZXJpY0VkaXQoZSl9c3RhdGljIG9jY3VyKGUpe3JldHVybiBuZXcgT2NjdXIoZSl9c3RhdGljIG9pZChlKXtyZXR1cm4gbmV3IE9pZChlKX1zdGF0aWMgb2lkcyhlKXtyZXR1cm4gbmV3IE9pZHMoZSl9c3RhdGljIG92ZXJmbG93KGUpe3JldHVybiBuZXcgT3ZlcmZsb3coZSl9c3RhdGljIHBhZ2VBcmVhKGUpe3JldHVybiBuZXcgUGFnZUFyZWEoZSl9c3RhdGljIHBhZ2VTZXQoZSl7cmV0dXJuIG5ldyBQYWdlU2V0KGUpfXN0YXRpYyBwYXJhKGUpe3JldHVybiBuZXcgUGFyYShlKX1zdGF0aWMgcGFzc3dvcmRFZGl0KGUpe3JldHVybiBuZXcgUGFzc3dvcmRFZGl0KGUpfXN0YXRpYyBwYXR0ZXJuKGUpe3JldHVybiBuZXcgdGVtcGxhdGVfUGF0dGVybihlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IFBpY3R1cmUoZSl9c3RhdGljIHByb3RvKGUpe3JldHVybiBuZXcgUHJvdG8oZSl9c3RhdGljIHJhZGlhbChlKXtyZXR1cm4gbmV3IFJhZGlhbChlKX1zdGF0aWMgcmVhc29uKGUpe3JldHVybiBuZXcgUmVhc29uKGUpfXN0YXRpYyByZWFzb25zKGUpe3JldHVybiBuZXcgUmVhc29ucyhlKX1zdGF0aWMgcmVjdGFuZ2xlKGUpe3JldHVybiBuZXcgUmVjdGFuZ2xlKGUpfXN0YXRpYyByZWYoZSl7cmV0dXJuIG5ldyBSZWZFbGVtZW50KGUpfXN0YXRpYyBzY3JpcHQoZSl7cmV0dXJuIG5ldyBTY3JpcHQoZSl9c3RhdGljIHNldFByb3BlcnR5KGUpe3JldHVybiBuZXcgU2V0UHJvcGVydHkoZSl9c3RhdGljIHNpZ25EYXRhKGUpe3JldHVybiBuZXcgU2lnbkRhdGEoZSl9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IFNpZ25hdHVyZShlKX1zdGF0aWMgc2lnbmluZyhlKXtyZXR1cm4gbmV3IFNpZ25pbmcoZSl9c3RhdGljIHNvbGlkKGUpe3JldHVybiBuZXcgU29saWQoZSl9c3RhdGljIHNwZWFrKGUpe3JldHVybiBuZXcgU3BlYWsoZSl9c3RhdGljIHN0aXBwbGUoZSl7cmV0dXJuIG5ldyBTdGlwcGxlKGUpfXN0YXRpYyBzdWJmb3JtKGUpe3JldHVybiBuZXcgU3ViZm9ybShlKX1zdGF0aWMgc3ViZm9ybVNldChlKXtyZXR1cm4gbmV3IFN1YmZvcm1TZXQoZSl9c3RhdGljIHN1YmplY3RETihlKXtyZXR1cm4gbmV3IFN1YmplY3RETihlKX1zdGF0aWMgc3ViamVjdEROcyhlKXtyZXR1cm4gbmV3IFN1YmplY3RETnMoZSl9c3RhdGljIHN1Ym1pdChlKXtyZXR1cm4gbmV3IFN1Ym1pdChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZShlKX1zdGF0aWMgdGV4dChlKXtyZXR1cm4gbmV3IFRleHQoZSl9c3RhdGljIHRleHRFZGl0KGUpe3JldHVybiBuZXcgVGV4dEVkaXQoZSl9c3RhdGljIHRpbWUoZSl7cmV0dXJuIG5ldyBUaW1lKGUpfXN0YXRpYyB0aW1lU3RhbXAoZSl7cmV0dXJuIG5ldyBUaW1lU3RhbXAoZSl9c3RhdGljIHRvb2xUaXAoZSl7cmV0dXJuIG5ldyBUb29sVGlwKGUpfXN0YXRpYyB0cmF2ZXJzYWwoZSl7cmV0dXJuIG5ldyBUcmF2ZXJzYWwoZSl9c3RhdGljIHRyYXZlcnNlKGUpe3JldHVybiBuZXcgVHJhdmVyc2UoZSl9c3RhdGljIHVpKGUpe3JldHVybiBuZXcgVWkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgVmFsaWRhdGUoZSl9c3RhdGljIHZhbHVlKGUpe3JldHVybiBuZXcgVmFsdWUoZSl9c3RhdGljIHZhcmlhYmxlcyhlKXtyZXR1cm4gbmV3IFZhcmlhYmxlcyhlKX19Y29uc3QgSmw9dWwuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gY3JlYXRlVGV4dChlKXtjb25zdCB0PW5ldyBUZXh0KHt9KTt0W3NvXT1lO3JldHVybiB0fWNsYXNzIEJpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnJvb3Q9ZTt0aGlzLmRhdGFzZXRzPWUuZGF0YXNldHM7dGhpcy5kYXRhPWUuZGF0YXNldHM/LmRhdGF8fG5ldyBYbWxPYmplY3QodWwuZGF0YXNldHMuaWQsImRhdGEiKTt0aGlzLmVtcHR5TWVyZ2U9MD09PXRoaXMuZGF0YVtrb10oKS5sZW5ndGg7dGhpcy5yb290LmZvcm09dGhpcy5mb3JtPWUudGVtcGxhdGVbYW9dKCl9X2lzQ29uc3VtZURhdGEoKXtyZXR1cm4hdGhpcy5lbXB0eU1lcmdlJiZ0aGlzLl9tZXJnZU1vZGV9X2lzTWF0Y2hUZW1wbGF0ZSgpe3JldHVybiF0aGlzLl9pc0NvbnN1bWVEYXRhKCl9YmluZCgpe3RoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmZvcm19Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9X2JpbmRWYWx1ZShlLHQsYSl7ZVtyb109dDtpZihlW0NvXSgpKWlmKHRbQm9dKCkpe2NvbnN0IGE9dFtib10oKTtlW25sXShjcmVhdGVUZXh0KGEpKX1lbHNlIGlmKGUgaW5zdGFuY2VvZiBGaWVsZCYmIm11bHRpU2VsZWN0Ij09PWUudWk/LmNob2ljZUxpc3Q/Lm9wZW4pe2NvbnN0IGE9dFtrb10oKS5tYXAoZT0+ZVtzb10udHJpbSgpKS5qb2luKCJcbiIpO2VbbmxdKGNyZWF0ZVRleHQoYSkpfWVsc2UgdGhpcy5faXNDb25zdW1lRGF0YSgpJiZ3YXJuKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIik7ZWxzZSF0W0JvXSgpfHx0aGlzLl9pc01hdGNoVGVtcGxhdGUoKT90aGlzLl9iaW5kRWxlbWVudChlLHQpOndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKX1fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoZSx0LGEsbil7aWYoIWUpcmV0dXJuIG51bGw7bGV0IHMscjtmb3IobGV0IG49MDtuPDM7bisrKXtzPWFbam9dKGUsITEsITApO2Zvcig7Oyl7cj1zLm5leHQoKS52YWx1ZTtpZighcilicmVhaztpZih0PT09cltCb10oKSlyZXR1cm4gcn1pZihhW0xvXT09PXVsLmRhdGFzZXRzLmlkJiYiZGF0YSI9PT1hW1VvXSlicmVhazthPWFbU29dKCl9aWYoIW4pcmV0dXJuIG51bGw7cz10aGlzLmRhdGFbam9dKGUsITAsITEpO3I9cy5uZXh0KCkudmFsdWU7aWYocilyZXR1cm4gcjtzPXRoaXMuZGF0YVtjb10oZSwhMCk7cj1zLm5leHQoKS52YWx1ZTtyZXR1cm4gcj8uW0JvXSgpP3I6bnVsbH1fc2V0UHJvcGVydGllcyhlLHQpe2lmKE9iamVjdC5oYXNPd24oZSwic2V0UHJvcGVydHkiKSlmb3IoY29uc3R7cmVmOmEsdGFyZ2V0Om4sY29ubmVjdGlvbjpzfW9mIGUuc2V0UHJvcGVydHkuY2hpbGRyZW4pe2lmKHMpY29udGludWU7aWYoIWEpY29udGludWU7Y29uc3Qgcj1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LGEsITEsITEpO2lmKCFyKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHthfS5gKTtjb250aW51ZX1jb25zdFtpXT1yO2lmKCFpW0RvXSh0aGlzLmRhdGEpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGU6IG11c3QgYmUgYSBkYXRhIG5vZGUuIik7Y29udGludWV9Y29uc3Qgbz1zZWFyY2hOb2RlKHRoaXMucm9vdCxlLG4sITEsITEpO2lmKCFvKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHRhcmdldDogJHtufS5gKTtjb250aW51ZX1jb25zdFtsXT1vO2lmKCFsW0RvXShlKSl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IG11c3QgYmUgYSBwcm9wZXJ0eSBvciBzdWJwcm9wZXJ0eS4iKTtjb250aW51ZX1jb25zdCBmPWxbU29dKCk7aWYobCBpbnN0YW5jZW9mIFNldFByb3BlcnR5fHxmIGluc3RhbmNlb2YgU2V0UHJvcGVydHkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBzZXRQcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9aWYobCBpbnN0YW5jZW9mIEJpbmRJdGVtc3x8ZiBpbnN0YW5jZW9mIEJpbmRJdGVtcyl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IGNhbm5vdCBiZSBhIGJpbmRJdGVtcyBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9Y29uc3QgYz1pW3JsXSgpLGg9bFtVb107aWYobCBpbnN0YW5jZW9mIFhGQUF0dHJpYnV0ZSl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2VbaF09Yztjb25zdCB0PVJlZmxlY3QuY29uc3RydWN0KE9iamVjdC5nZXRQcm90b3R5cGVPZihmKS5jb25zdHJ1Y3RvcixbZV0pO2ZbaF09dFtoXTtjb250aW51ZX1pZihPYmplY3QuaGFzT3duKGwsc28pKXtsW3JvXT1pO2xbc29dPWM7bFtsb10oKX1lbHNlIHdhcm4oIlhGQSAtIEludmFsaWQgbm9kZSB0byB1c2UgaW4gc2V0UHJvcGVydHkiKX19X2JpbmRJdGVtcyhlLHQpe2lmKCFPYmplY3QuaGFzT3duKGUsIml0ZW1zIil8fCFPYmplY3QuaGFzT3duKGUsImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtKb10odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGE9bmV3IEl0ZW1zKHt9KSxuPW5ldyBJdGVtcyh7fSk7ZVtKaV0oYSk7ZS5pdGVtcy5wdXNoKGEpO2VbSmldKG4pO2UuaXRlbXMucHVzaChuKTtmb3IoY29uc3R7cmVmOnMsbGFiZWxSZWY6cix2YWx1ZVJlZjppLGNvbm5lY3Rpb246b31vZiBlLmJpbmRJdGVtcy5jaGlsZHJlbil7aWYobyljb250aW51ZTtpZighcyljb250aW51ZTtjb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQscywhMSwhMSk7aWYoZSlmb3IoY29uc3QgdCBvZiBlKXtpZighdFtEb10odGhpcy5kYXRhc2V0cykpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmICgke3N9KTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLmApO2NvbnRpbnVlfWNvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxyLCEwLCExKTtpZighZSl7d2FybihgWEZBIC0gSW52YWxpZCBsYWJlbDogJHtyfS5gKTtjb250aW51ZX1jb25zdFtvXT1lO2lmKCFvW0RvXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGw9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxpLCEwLCExKTtpZighbCl7d2FybihgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtpfS5gKTtjb250aW51ZX1jb25zdFtmXT1sO2lmKCFmW0RvXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCB2YWx1ZTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGM9Y3JlYXRlVGV4dChvW3JsXSgpKSxoPWNyZWF0ZVRleHQoZltybF0oKSk7YVtKaV0oYyk7YS50ZXh0LnB1c2goYyk7bltKaV0oaCk7bi50ZXh0LnB1c2goaCl9ZWxzZSB3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHtzfS5gKX19X2JpbmRPY2N1cnJlbmNlcyhlLHQsYSl7bGV0IG47aWYodC5sZW5ndGg+MSl7bj1lW2FvXSgpO25bSm9dKG4ub2NjdXIpO24ub2NjdXI9bnVsbH10aGlzLl9iaW5kVmFsdWUoZSx0WzBdLGEpO3RoaXMuX3NldFByb3BlcnRpZXMoZSx0WzBdKTt0aGlzLl9iaW5kSXRlbXMoZSx0WzBdKTtpZigxPT09dC5sZW5ndGgpcmV0dXJuO2NvbnN0IHM9ZVtTb10oKSxyPWVbVW9dLGk9c1tGb10oZSk7Zm9yKGxldCBlPTEsbz10Lmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXRbZV0sbD1uW2FvXSgpO3Nbcl0ucHVzaChsKTtzW09vXShpK2UsbCk7dGhpcy5fYmluZFZhbHVlKGwsbyxhKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGwsbyk7dGhpcy5fYmluZEl0ZW1zKGwsbyl9fV9jcmVhdGVPY2N1cnJlbmNlcyhlKXtpZighdGhpcy5lbXB0eU1lcmdlKXJldHVybjtjb25zdHtvY2N1cjp0fT1lO2lmKCF0fHx0LmluaXRpYWw8PTEpcmV0dXJuO2NvbnN0IGE9ZVtTb10oKSxuPWVbVW9dO2lmKCEoYVtuXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXJldHVybjtsZXQgcztzPWUubmFtZT9hW25dLmNoaWxkcmVuLmZpbHRlcih0PT50Lm5hbWU9PT1lLm5hbWUpLmxlbmd0aDphW25dLmNoaWxkcmVuLmxlbmd0aDtjb25zdCByPWFbRm9dKGUpKzEsaT10LmluaXRpYWwtcztpZihpKXtjb25zdCB0PWVbYW9dKCk7dFtKb10odC5vY2N1cik7dC5vY2N1cj1udWxsO2Fbbl0ucHVzaCh0KTthW09vXShyLHQpO2ZvcihsZXQgZT0xO2U8aTtlKyspe2NvbnN0IHM9dFthb10oKTthW25dLnB1c2gocyk7YVtPb10ocitlLHMpfX19X2dldE9jY3VySW5mbyhlKXtjb25zdHtuYW1lOnQsb2NjdXI6YX09ZTtpZighYXx8IXQpcmV0dXJuWzEsMV07Y29uc3Qgbj0tMT09PWEubWF4PzEvMDphLm1heDtyZXR1cm5bYS5taW4sbl19X3NldEFuZEJpbmQoZSx0KXt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdCk7dGhpcy5fYmluZEl0ZW1zKGUsdCk7dGhpcy5fYmluZEVsZW1lbnQoZSx0KX1fYmluZEVsZW1lbnQoZSx0KXtjb25zdCBhPVtdO3RoaXMuX2NyZWF0ZU9jY3VycmVuY2VzKGUpO2Zvcihjb25zdCBuIG9mIGVba29dKCkpe2lmKG5bcm9dKWNvbnRpbnVlO2lmKHZvaWQgMD09PXRoaXMuX21lcmdlTW9kZSYmInN1YmZvcm0iPT09bltVb10pe3RoaXMuX21lcmdlTW9kZT0iY29uc3VtZURhdGEiPT09bi5tZXJnZU1vZGU7Y29uc3QgZT10W2tvXSgpO2lmKGUubGVuZ3RoPjApdGhpcy5fYmluZE9jY3VycmVuY2VzKG4sW2VbMF1dLG51bGwpO2Vsc2UgaWYodGhpcy5lbXB0eU1lcmdlKXtjb25zdCBlPXRbTG9dPT09Smw/LTE6dFtMb10sYT1uW3JvXT1uZXcgWG1sT2JqZWN0KGUsbi5uYW1lfHwicm9vdCIpO3RbSmldKGEpO3RoaXMuX2JpbmRFbGVtZW50KG4sYSl9Y29udGludWV9aWYoIW5bSG9dKCkpY29udGludWU7bGV0IGU9ITEscz1udWxsLHI9bnVsbCxpPW51bGw7aWYobi5iaW5kKXtzd2l0Y2gobi5iaW5kLm1hdGNoKXtjYXNlIm5vbmUiOnRoaXMuX3NldEFuZEJpbmQobix0KTtjb250aW51ZTtjYXNlImdsb2JhbCI6ZT0hMDticmVhaztjYXNlImRhdGFSZWYiOmlmKCFuLmJpbmQucmVmKXt3YXJuKGBYRkEgLSByZWYgaXMgZW1wdHkgaW4gbm9kZSAke25bVW9dfS5gKTt0aGlzLl9zZXRBbmRCaW5kKG4sdCk7Y29udGludWV9cj1uLmJpbmQucmVmfW4uYmluZC5waWN0dXJlJiYocz1uLmJpbmQucGljdHVyZVtzb10pfWNvbnN0W28sbF09dGhpcy5fZ2V0T2NjdXJJbmZvKG4pO2lmKHIpe2k9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxyLCEwLCExKTtpZihudWxsPT09aSl7aT1jcmVhdGVEYXRhTm9kZSh0aGlzLmRhdGEsdCxyKTtpZighaSljb250aW51ZTt0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJihpW25vXT0hMCk7dGhpcy5fc2V0QW5kQmluZChuLGkpO2NvbnRpbnVlfXRoaXMuX2lzQ29uc3VtZURhdGEoKSYmKGk9aS5maWx0ZXIoZT0+IWVbbm9dKSk7aS5sZW5ndGg+bD9pPWkuc2xpY2UoMCxsKTowPT09aS5sZW5ndGgmJihpPW51bGwpO2kmJnRoaXMuX2lzQ29uc3VtZURhdGEoKSYmaS5mb3JFYWNoKGU9PntlW25vXT0hMH0pfWVsc2V7aWYoIW4ubmFtZSl7dGhpcy5fc2V0QW5kQmluZChuLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgYT1bXTtmb3IoO2EubGVuZ3RoPGw7KXtjb25zdCBzPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKG4ubmFtZSxuW0NvXSgpLHQsZSk7aWYoIXMpYnJlYWs7c1tub109ITA7YS5wdXNoKHMpfWk9YS5sZW5ndGg+MD9hOm51bGx9ZWxzZXtpPXRbam9dKG4ubmFtZSwhMSx0aGlzLmVtcHR5TWVyZ2UpLm5leHQoKS52YWx1ZTtpZighaSl7aWYoMD09PW8pe2EucHVzaChuKTtjb250aW51ZX1jb25zdCBlPXRbTG9dPT09Smw/LTE6dFtMb107aT1uW3JvXT1uZXcgWG1sT2JqZWN0KGUsbi5uYW1lKTt0aGlzLmVtcHR5TWVyZ2UmJihpW25vXT0hMCk7dFtKaV0oaSk7dGhpcy5fc2V0QW5kQmluZChuLGkpO2NvbnRpbnVlfXRoaXMuZW1wdHlNZXJnZSYmKGlbbm9dPSEwKTtpPVtpXX19aT90aGlzLl9iaW5kT2NjdXJyZW5jZXMobixpLHMpOm8+MD90aGlzLl9zZXRBbmRCaW5kKG4sdCk6YS5wdXNoKG4pfWEuZm9yRWFjaChlPT5lW1NvXSgpW0pvXShlKSl9fWNsYXNzIERhdGFIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kYXRhPXQ7dGhpcy5kYXRhc2V0PWUuZGF0YXNldHN8fG51bGx9c2VyaWFsaXplKGUpe2NvbnN0IHQ9W1stMSx0aGlzLmRhdGFba29dKCldXTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBhPXQuYXQoLTEpLFtuLHNdPWE7aWYobisxPT09cy5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3Qgcj1zWysrYVswXV0saT1lLmdldChyW2NsXSk7aWYoaSlyW25sXShpKTtlbHNle2NvbnN0IHQ9cltob10oKTtmb3IoY29uc3QgYSBvZiB0LnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0KGFbY2xdKTtpZih0KXthW25sXSh0KTticmVha319fWNvbnN0IG89cltrb10oKTtvLmxlbmd0aD4wJiZ0LnB1c2goWy0xLG9dKX1jb25zdCBhPVsnPHhmYTpkYXRhc2V0cyB4bWxuczp4ZmE9Imh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWRhdGEvMS4wLyI+J107aWYodGhpcy5kYXRhc2V0KWZvcihjb25zdCBlIG9mIHRoaXMuZGF0YXNldFtrb10oKSkiZGF0YSIhPT1lW1VvXSYmZVtsbF0oYSk7dGhpcy5kYXRhW2xsXShhKTthLnB1c2goIjwveGZhOmRhdGFzZXRzPiIpO3JldHVybiBhLmpvaW4oIiIpfX1jb25zdCBRbD11bC5jb25maWcuaWQ7Y2xhc3MgQWNyb2JhdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiYWNyb2JhdCIsITApO3RoaXMuYWNyb2JhdDc9bnVsbDt0aGlzLmF1dG9TYXZlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcz1udWxsO3RoaXMuc3VibWl0VXJsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWNyb2JhdDcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImFjcm9iYXQ3IiwhMCk7dGhpcy5keW5hbWljUmVuZGVyPW51bGx9fWNsYXNzIEFEQkVfSlNDb25zb2xlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJBREJFX0pTQ29uc29sZSIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIEFEQkVfSlNEZWJ1Z2dlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiQURCRV9KU0RlYnVnZ2VyIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQWRkU2lsZW50UHJpbnQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiYWRkU2lsZW50UHJpbnQiKX19Y2xhc3MgQWRkVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiYWRkVmlld2VyUHJlZmVyZW5jZXMiKX19Y2xhc3MgQWRqdXN0RGF0YSBleHRlbmRzIE9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJhZGp1c3REYXRhIil9fWNsYXNzIEFkb2JlRXh0ZW5zaW9uTGV2ZWwgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJhZG9iZUV4dGVuc2lvbkxldmVsIiwwLGU9PmU+PTEmJmU8PTgpfX1jbGFzcyBBZ2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiYWdlbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5jb21tb249bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBbHdheXNFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImFsd2F5c0VtYmVkIil9fWNsYXNzIEFtZCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiYW1kIil9fWNsYXNzIGNvbmZpZ19BcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJhcmVhIik7dGhpcy5sZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUubGV2ZWwsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9M30pO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiIiwiYmFyY29kZSIsImNvcmVpbml0IiwiZGV2aWNlRHJpdmVyIiwiZm9udCIsImdlbmVyYWwiLCJsYXlvdXQiLCJtZXJnZSIsInNjcmlwdCIsInNpZ25hdHVyZSIsInNvdXJjZVNldCIsInRlbXBsYXRlQ2FjaGUiXSl9fWNsYXNzIEF0dHJpYnV0ZXMgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImF0dHJpYnV0ZXMiLFsicHJlc2VydmUiLCJkZWxlZ2F0ZSIsImlnbm9yZSJdKX19Y2xhc3MgQXV0b1NhdmUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImF1dG9TYXZlIixbImRpc2FibGVkIiwiZW5hYmxlZCJdKX19Y2xhc3MgQmFzZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiYmFzZSIpfX1jbGFzcyBCYXRjaE91dHB1dCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiYmF0Y2hPdXRwdXQiKTt0aGlzLmZvcm1hdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXQsWyJub25lIiwiY29uY2F0IiwiemlwIiwiemlwQ29tcHJlc3MiXSl9fWNsYXNzIEJlaGF2aW9yT3ZlcnJpZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJiZWhhdmlvck92ZXJyaWRlIil9W2xvXSgpe3RoaXNbc29dPW5ldyBNYXAodGhpc1tzb10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+ZS5pbmNsdWRlcygiOiIpKS5tYXAoZT0+ZS5zcGxpdCgiOiIsMikpKX19Y2xhc3MgQ2FjaGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImNhY2hlIiwhMCk7dGhpcy50ZW1wbGF0ZUNhY2hlPW51bGx9fWNsYXNzIENoYW5nZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJjaGFuZ2UiKX19Y2xhc3MgQ29tbW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJjb21tb24iLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLmxvY2FsZT1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5tZXNzYWdpbmc9bnVsbDt0aGlzLnN1cHByZXNzQmFubmVyPW51bGw7dGhpcy50ZW1wbGF0ZT1udWxsO3RoaXMudmFsaWRhdGlvbk1lc3NhZ2luZz1udWxsO3RoaXMudmVyc2lvbkNvbnRyb2w9bnVsbDt0aGlzLmxvZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbXByZXNzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJjb21wcmVzcyIpO3RoaXMuc2NvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2NvcGUsWyJpbWFnZU9ubHkiLCJkb2N1bWVudCJdKX19Y2xhc3MgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImNvbXByZXNzTG9naWNhbFN0cnVjdHVyZSIpfX1jbGFzcyBDb21wcmVzc09iamVjdFN0cmVhbSBleHRlbmRzIE9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJjb21wcmVzc09iamVjdFN0cmVhbSIpfX1jbGFzcyBDb21wcmVzc2lvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiY29tcHJlc3Npb24iLCEwKTt0aGlzLmNvbXByZXNzTG9naWNhbFN0cnVjdHVyZT1udWxsO3RoaXMuY29tcHJlc3NPYmplY3RTdHJlYW09bnVsbDt0aGlzLmxldmVsPW51bGw7dGhpcy50eXBlPW51bGx9fWNsYXNzIENvbmZpZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiY29uZmlnIiwhMCk7dGhpcy5hY3JvYmF0PW51bGw7dGhpcy5wcmVzZW50PW51bGw7dGhpcy50cmFjZT1udWxsO3RoaXMuYWdlbnQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBDb25mb3JtYW5jZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiY29uZm9ybWFuY2UiLFsiQSIsIkIiXSl9fWNsYXNzIENvbnRlbnRDb3B5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImNvbnRlbnRDb3B5Iil9fWNsYXNzIENvcGllcyBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImNvcGllcyIsMSxlPT5lPj0xKX19Y2xhc3MgQ3JlYXRvciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiY3JlYXRvciIpfX1jbGFzcyBDdXJyZW50UGFnZSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImN1cnJlbnRQYWdlIiwwLGU9PmU+PTApfX1jbGFzcyBEYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJkYXRhIiwhMCk7dGhpcy5hZGp1c3REYXRhPW51bGw7dGhpcy5hdHRyaWJ1dGVzPW51bGw7dGhpcy5pbmNyZW1lbnRhbExvYWQ9bnVsbDt0aGlzLm91dHB1dFhTTD1udWxsO3RoaXMucmFuZ2U9bnVsbDt0aGlzLnJlY29yZD1udWxsO3RoaXMuc3RhcnROb2RlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLndpbmRvdz1udWxsO3RoaXMueHNsPW51bGw7dGhpcy5leGNsdWRlTlM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGVidWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiZGVmYXVsdFR5cGVmYWNlIik7dGhpcy53cml0aW5nU2NyaXB0PWdldFN0cmluZ09wdGlvbihlLndyaXRpbmdTY3JpcHQsWyIqIiwiQXJhYmljIiwiQ3lyaWxsaWMiLCJFYXN0RXVyb3BlYW5Sb21hbiIsIkdyZWVrIiwiSGVicmV3IiwiSmFwYW5lc2UiLCJLb3JlYW4iLCJSb21hbiIsIlNpbXBsaWZpZWRDaGluZXNlIiwiVGhhaSIsIlRyYWRpdGlvbmFsQ2hpbmVzZSIsIlZpZXRuYW1lc2UiXSl9fWNsYXNzIERlc3RpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJkZXN0aW5hdGlvbiIsWyJwZGYiLCJwY2wiLCJwcyIsIndlYkNsaWVudCIsInpwbCJdKX19Y2xhc3MgRG9jdW1lbnRBc3NlbWJseSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiZHJpdmVyIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBEdXBsZXhPcHRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImR1cGxleE9wdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4RmxpcExvbmdFZGdlIiwiZHVwbGV4RmxpcFNob3J0RWRnZSJdKX19Y2xhc3MgRHluYW1pY1JlbmRlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiZW1iZWQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiZW5jcnlwdCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiZW5jcnlwdGlvbiIsITApO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdGlvbkxldmVsPW51bGw7dGhpcy5wZXJtaXNzaW9ucz1udWxsfX1jbGFzcyBFbmNyeXB0aW9uTGV2ZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImVuY3J5cHRpb25MZXZlbCIsWyI0MGJpdCIsIjEyOGJpdCJdKX19Y2xhc3MgRW5mb3JjZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImVxdWF0ZSIpO3RoaXMuZm9yY2U9Z2V0SW50ZWdlcih7ZGF0YTplLmZvcmNlLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PjA9PT1lfSk7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIn19Y2xhc3MgRXF1YXRlUmFuZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImVxdWF0ZVJhbmdlIik7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIjt0aGlzLl91bmljb2RlUmFuZ2U9ZS51bmljb2RlUmFuZ2V8fCIifWdldCB1bmljb2RlUmFuZ2UoKXtjb25zdCBlPVtdLHQ9L1VcKyhbMC05YS1mQS1GXSspLyxhPXRoaXMuX3VuaWNvZGVSYW5nZTtmb3IobGV0IG4gb2YgYS5zcGxpdCgiLCIpLm1hcChlPT5lLnRyaW0oKSkuZmlsdGVyKGU9PiEhZSkpe249bi5zcGxpdCgiLSIsMikubWFwKGU9Pntjb25zdCBhPWUubWF0Y2godCk7cmV0dXJuIGE/cGFyc2VJbnQoYVsxXSwxNik6MH0pOzE9PT1uLmxlbmd0aCYmbi5wdXNoKG5bMF0pO2UucHVzaChuKX1yZXR1cm4gc2hhZG93KHRoaXMsInVuaWNvZGVSYW5nZSIsZSl9fWNsYXNzIEV4Y2x1ZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJleGNsdWRlIil9W2xvXSgpe3RoaXNbc29dPXRoaXNbc29dLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKGU9PmUmJlsiY2FsY3VsYXRlIiwiY2xvc2UiLCJlbnRlciIsImV4aXQiLCJpbml0aWFsaXplIiwicmVhZHkiLCJ2YWxpZGF0ZSJdLmluY2x1ZGVzKGUpKX19Y2xhc3MgRXhjbHVkZU5TIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJleGNsdWRlTlMiKX19Y2xhc3MgRmxpcExhYmVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJmbGlwTGFiZWwiLFsidXNlUHJpbnRlclNldHRpbmciLCJvbiIsIm9mZiJdKX19Y2xhc3MgY29uZmlnX0ZvbnRJbmZvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJmb250SW5mbyIsITApO3RoaXMuZW1iZWQ9bnVsbDt0aGlzLm1hcD1udWxsO3RoaXMuc3Vic2V0QmVsb3c9bnVsbDt0aGlzLmFsd2F5c0VtYmVkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRUeXBlZmFjZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5uZXZlckVtYmVkPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRm9ybUZpZWxkRmlsbGluZyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJmb3JtRmllbGRGaWxsaW5nIil9fWNsYXNzIEdyb3VwUGFyZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJncm91cFBhcmVudCIpfX1jbGFzcyBJZkVtcHR5IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJpZkVtcHR5IixbImRhdGFWYWx1ZSIsImRhdGFHcm91cCIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgSW5jbHVkZVhEUENvbnRlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImluY2x1ZGVYRFBDb250ZW50Iil9fWNsYXNzIEluY3JlbWVudGFsTG9hZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiaW5jcmVtZW50YWxMb2FkIixbIm5vbmUiLCJmb3J3YXJkT25seSJdKX19Y2xhc3MgSW5jcmVtZW50YWxNZXJnZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJpbmNyZW1lbnRhbE1lcmdlIil9fWNsYXNzIEludGVyYWN0aXZlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImludGVyYWN0aXZlIil9fWNsYXNzIEpvZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiam9nIixbInVzZVByaW50ZXJTZXR0aW5nIiwibm9uZSIsInBhZ2VTZXQiXSl9fWNsYXNzIExhYmVsUHJpbnRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwibGFiZWxQcmludGVyIiwhMCk7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJ6cGwiLCJkcGwiLCJpcGwiLCJ0Y3BsIl0pO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBMYXlvdXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImxheW91dCIsWyJwYWdpbmF0ZSIsInBhbmVsIl0pfX1jbGFzcyBMZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImxldmVsIiwwLGU9PmU+MCl9fWNsYXNzIExpbmVhcml6ZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwibGluZWFyaXplZCIpfX1jbGFzcyBMb2NhbGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImxvY2FsZSIpfX1jbGFzcyBMb2NhbGVTZXQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImxvY2FsZVNldCIpfX1jbGFzcyBMb2cgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsImxvZyIsITApO3RoaXMubW9kZT1udWxsO3RoaXMudGhyZXNob2xkPW51bGw7dGhpcy50bz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE1hcEVsZW1lbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsIm1hcCIsITApO3RoaXMuZXF1YXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVxdWF0ZVJhbmdlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWVkaXVtSW5mbyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwibWVkaXVtSW5mbyIsITApO3RoaXMubWFwPW51bGx9fWNsYXNzIGNvbmZpZ19NZXNzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJtZXNzYWdlIiwhMCk7dGhpcy5tc2dJZD1udWxsO3RoaXMuc2V2ZXJpdHk9bnVsbH19Y2xhc3MgTWVzc2FnaW5nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJtZXNzYWdpbmciLCEwKTt0aGlzLm1lc3NhZ2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNb2RlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJtb2RlIixbImFwcGVuZCIsIm92ZXJ3cml0ZSJdKX19Y2xhc3MgTW9kaWZ5QW5ub3RzIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsIm1vZGlmeUFubm90cyIpfX1jbGFzcyBNc2dJZCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsIm1zZ0lkIiwxLGU9PmU+PTEpfX1jbGFzcyBOYW1lQXR0ciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsIm5ldmVyRW1iZWQiKX19Y2xhc3MgTnVtYmVyT2ZDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJudW1iZXJPZkNvcGllcyIsbnVsbCxlPT5lPj0yJiZlPD01KX19Y2xhc3MgT3BlbkFjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwib3BlbkFjdGlvbiIsITApO3RoaXMuZGVzdGluYXRpb249bnVsbH19Y2xhc3MgT3V0cHV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJvdXRwdXQiLCEwKTt0aGlzLnRvPW51bGw7dGhpcy50eXBlPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3V0cHV0QmluIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJvdXRwdXRCaW4iKX19Y2xhc3MgT3V0cHV0WFNMIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJvdXRwdXRYU0wiLCEwKTt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdmVycHJpbnQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsIm92ZXJwcmludCIsWyJub25lIiwiYm90aCIsImRyYXciLCJmaWVsZCJdKX19Y2xhc3MgUGFja2V0cyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwicGFja2V0cyIpfVtsb10oKXsiKiIhPT10aGlzW3NvXSYmKHRoaXNbc29dPXRoaXNbc29dLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKGU9PlsiY29uZmlnIiwiZGF0YXNldHMiLCJ0ZW1wbGF0ZSIsInhmZGYiLCJ4c2x0Il0uaW5jbHVkZXMoZSkpKX19Y2xhc3MgUGFnZU9mZnNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwicGFnZU9mZnNldCIpO3RoaXMueD1nZXRJbnRlZ2VyKHtkYXRhOmUueCxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy55PWdldEludGVnZXIoe2RhdGE6ZS55LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KX19Y2xhc3MgUGFnZVJhbmdlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJwYWdlUmFuZ2UiKX1bbG9dKCl7Y29uc3QgZT10aGlzW3NvXS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcChlPT5wYXJzZUludChlLDEwKSksdD1bXTtmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjthKz0yKXQucHVzaChlLnNsaWNlKGEsYSsyKSk7dGhpc1tzb109dH19Y2xhc3MgUGFnaW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwicGFnaW5hdGlvbk92ZXJyaWRlIixbIm5vbmUiLCJmb3JjZUR1cGxleCIsImZvcmNlRHVwbGV4TG9uZ0VkZ2UiLCJmb3JjZUR1cGxleFNob3J0RWRnZSIsImZvcmNlU2ltcGxleCJdKX19Y2xhc3MgUGFydCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInBhcnQiLDEsZT0+ITEpfX1jbGFzcyBQY2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInBjbCIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMucGFnZU9mZnNldD1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJwZGYiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmFkb2JlRXh0ZW5zaW9uTGV2ZWw9bnVsbDt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5jb21wcmVzc2lvbj1udWxsO3RoaXMuY3JlYXRvcj1udWxsO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmludGVyYWN0aXZlPW51bGw7dGhpcy5saW5lYXJpemVkPW51bGw7dGhpcy5vcGVuQWN0aW9uPW51bGw7dGhpcy5wZGZhPW51bGw7dGhpcy5wcm9kdWNlcj1udWxsO3RoaXMucmVuZGVyUG9saWN5PW51bGw7dGhpcy5zY3JpcHRNb2RlbD1udWxsO3RoaXMuc2lsZW50UHJpbnQ9bnVsbDt0aGlzLnN1Ym1pdEZvcm1hdD1udWxsO3RoaXMudGFnZ2VkPW51bGw7dGhpcy52ZXJzaW9uPW51bGw7dGhpcy52aWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZmEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInBkZmEiLCEwKTt0aGlzLmFtZD1udWxsO3RoaXMuY29uZm9ybWFuY2U9bnVsbDt0aGlzLmluY2x1ZGVYRFBDb250ZW50PW51bGw7dGhpcy5wYXJ0PW51bGx9fWNsYXNzIFBlcm1pc3Npb25zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJwZXJtaXNzaW9ucyIsITApO3RoaXMuYWNjZXNzaWJsZUNvbnRlbnQ9bnVsbDt0aGlzLmNoYW5nZT1udWxsO3RoaXMuY29udGVudENvcHk9bnVsbDt0aGlzLmRvY3VtZW50QXNzZW1ibHk9bnVsbDt0aGlzLmZvcm1GaWVsZEZpbGxpbmc9bnVsbDt0aGlzLm1vZGlmeUFubm90cz1udWxsO3RoaXMucGxhaW50ZXh0TWV0YWRhdGE9bnVsbDt0aGlzLnByaW50PW51bGw7dGhpcy5wcmludEhpZ2hRdWFsaXR5PW51bGx9fWNsYXNzIFBpY2tUcmF5QnlQREZTaXplIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInBpY2tUcmF5QnlQREZTaXplIil9fWNsYXNzIGNvbmZpZ19QaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJwaWN0dXJlIil9fWNsYXNzIFBsYWludGV4dE1ldGFkYXRhIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInBsYWludGV4dE1ldGFkYXRhIil9fWNsYXNzIFByZXNlbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJwcmVzZW5jZSIsWyJwcmVzZXJ2ZSIsImRpc3NvbHZlIiwiZGlzc29sdmVTdHJ1Y3R1cmUiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIFByZXNlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInByZXNlbnQiLCEwKTt0aGlzLmJlaGF2aW9yT3ZlcnJpZGU9bnVsbDt0aGlzLmNhY2hlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLmNvcGllcz1udWxsO3RoaXMuZGVzdGluYXRpb249bnVsbDt0aGlzLmluY3JlbWVudGFsTWVyZ2U9bnVsbDt0aGlzLmxheW91dD1udWxsO3RoaXMub3V0cHV0PW51bGw7dGhpcy5vdmVycHJpbnQ9bnVsbDt0aGlzLnBhZ2luYXRpb249bnVsbDt0aGlzLnBhZ2luYXRpb25PdmVycmlkZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMueGRwPW51bGw7dGhpcy5kcml2ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGFiZWxQcmludGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBjbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wZGY9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0VXJsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLndlYkNsaWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy56cGw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJwcmludCIpfX1jbGFzcyBQcmludEhpZ2hRdWFsaXR5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInByaW50SGlnaFF1YWxpdHkiKX19Y2xhc3MgUHJpbnRTY2FsaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJwcmludFNjYWxpbmciLFsiYXBwZGVmYXVsdCIsIm5vU2NhbGluZyJdKX19Y2xhc3MgUHJpbnRlck5hbWUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInByaW50ZXJOYW1lIil9fWNsYXNzIFByb2R1Y2VyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJwcm9kdWNlciIpfX1jbGFzcyBQcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwicHMiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuam9nPW51bGw7dGhpcy5tZWRpdW1JbmZvPW51bGw7dGhpcy5vdXRwdXRCaW49bnVsbDt0aGlzLnN0YXBsZT1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFJhbmdlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwicmFuZ2UiKX1bbG9dKCl7dGhpc1tzb109dGhpc1tzb10uc3BsaXQoIiwiLDIpLm1hcChlPT5lLnNwbGl0KCItIikubWFwKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpLmZpbHRlcihlPT5lLmV2ZXJ5KGU9PiFpc05hTihlKSkpLm1hcChlPT57MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7cmV0dXJuIGV9KX19Y2xhc3MgUmVjb3JkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwicmVjb3JkIil9W2xvXSgpe3RoaXNbc29dPXRoaXNbc29dLnRyaW0oKTtjb25zdCBlPXBhcnNlSW50KHRoaXNbc29dLDEwKTshaXNOYU4oZSkmJmU+PTAmJih0aGlzW3NvXT1lKX19Y2xhc3MgUmVsZXZhbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJyZWxldmFudCIpfVtsb10oKXt0aGlzW3NvXT10aGlzW3NvXS50cmltKCkuc3BsaXQoL1xzKy8pfX1jbGFzcyBSZW5hbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJyZW5hbWUiKX1bbG9dKCl7dGhpc1tzb109dGhpc1tzb10udHJpbSgpOyh0aGlzW3NvXS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoInhtbCIpfHxuZXcgUmVnRXhwKCJbXFxwe0x9X11bXFxwe0x9XFxkLl9cXHB7TX0tXSoiLCJ1IikudGVzdCh0aGlzW3NvXSkpJiZ3YXJuKCJYRkEgLSBSZW5hbWU6IGludmFsaWQgWEZBIG5hbWUiKX19Y2xhc3MgUmVuZGVyUG9saWN5IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJyZW5kZXJQb2xpY3kiLFsic2VydmVyIiwiY2xpZW50Il0pfX1jbGFzcyBSdW5TY3JpcHRzIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJydW5TY3JpcHRzIixbImJvdGgiLCJjbGllbnQiLCJub25lIiwic2VydmVyIl0pfX1jbGFzcyBjb25maWdfU2NyaXB0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJzY3JpcHQiLCEwKTt0aGlzLmN1cnJlbnRQYWdlPW51bGw7dGhpcy5leGNsdWRlPW51bGw7dGhpcy5ydW5TY3JpcHRzPW51bGx9fWNsYXNzIFNjcmlwdE1vZGVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJzY3JpcHRNb2RlbCIsWyJYRkEiLCJub25lIl0pfX1jbGFzcyBTZXZlcml0eSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwic2V2ZXJpdHkiLFsiaWdub3JlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsInRyYWNlIiwid2FybmluZyJdKX19Y2xhc3MgU2lsZW50UHJpbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInNpbGVudFByaW50IiwhMCk7dGhpcy5hZGRTaWxlbnRQcmludD1udWxsO3RoaXMucHJpbnRlck5hbWU9bnVsbH19Y2xhc3MgU3RhcGxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJzdGFwbGUiKTt0aGlzLm1vZGU9Z2V0U3RyaW5nT3B0aW9uKGUubW9kZSxbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIFN0YXJ0Tm9kZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwic3RhcnROb2RlIil9fWNsYXNzIFN0YXJ0UGFnZSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInN0YXJ0UGFnZSIsMCxlPT4hMCl9fWNsYXNzIFN1Ym1pdEZvcm1hdCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJzdWJtaXRVcmwiKX19Y2xhc3MgU3Vic2V0QmVsb3cgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJzdWJzZXRCZWxvdyIsMTAwLGU9PmU+PTAmJmU8PTEwMCl9fWNsYXNzIFN1cHByZXNzQmFubmVyIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInN1cHByZXNzQmFubmVyIil9fWNsYXNzIFRhZ2dlZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJ0YWdnZWQiKX19Y2xhc3MgY29uZmlnX1RlbXBsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZT1udWxsO3RoaXMucmVsZXZhbnQ9bnVsbDt0aGlzLnN0YXJ0UGFnZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy54c2w9bnVsbH19Y2xhc3MgVGhyZXNob2xkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJ0aHJlc2hvbGQiLFsidHJhY2UiLCJlcnJvciIsImluZm9ybWF0aW9uIiwid2FybmluZyJdKX19Y2xhc3MgVG8gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInRvIixbIm51bGwiLCJtZW1vcnkiLCJzdGRlcnIiLCJzdGRvdXQiLCJzeXN0ZW0iLCJ1cmkiXSl9fWNsYXNzIFRlbXBsYXRlQ2FjaGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInRlbXBsYXRlQ2FjaGUiKTt0aGlzLm1heEVudHJpZXM9Z2V0SW50ZWdlcih7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBUcmFjZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwidHJhY2UiLCEwKTt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInRyYW5zZm9ybSIsITApO3RoaXMuZ3JvdXBQYXJlbnQ9bnVsbDt0aGlzLmlmRW1wdHk9bnVsbDt0aGlzLm5hbWVBdHRyPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5wcmVzZW5jZT1udWxsO3RoaXMucmVuYW1lPW51bGw7dGhpcy53aGl0ZXNwYWNlPW51bGx9fWNsYXNzIFR5cGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInR5cGUiLFsibm9uZSIsImFzY2lpODUiLCJhc2NpaUhleCIsImNjaXR0ZmF4IiwiZmxhdGUiLCJsenciLCJydW5MZW5ndGgiLCJuYXRpdmUiLCJ4ZHAiLCJtZXJnZWRYRFAiXSl9fWNsYXNzIFVyaSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwidXJpIil9fWNsYXNzIGNvbmZpZ19WYWxpZGF0ZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwidmFsaWRhdGUiLFsicHJlU3VibWl0IiwicHJlUHJpbnQiLCJwcmVFeGVjdXRlIiwicHJlU2F2ZSJdKX19Y2xhc3MgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJ2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyIpfVtsb10oKXt0aGlzW3NvXT10aGlzW3NvXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcihlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSl9fWNsYXNzIFZhbGlkYXRpb25NZXNzYWdpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInZhbGlkYXRpb25NZXNzYWdpbmciLFsiYWxsTWVzc2FnZXNJbmRpdmlkdWFsbHkiLCJhbGxNZXNzYWdlc1RvZ2V0aGVyIiwiZmlyc3RNZXNzYWdlT25seSIsIm5vTWVzc2FnZXMiXSl9fWNsYXNzIFZlcnNpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInZlcnNpb24iLFsiMS43IiwiMS42IiwiMS41IiwiMS40IiwiMS4zIiwiMS4yIl0pfX1jbGFzcyBWZXJzaW9uQ29udHJvbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwiVmVyc2lvbkNvbnRyb2wiKTt0aGlzLm91dHB1dEJlbG93PWdldFN0cmluZ09wdGlvbihlLm91dHB1dEJlbG93LFsid2FybiIsImVycm9yIiwidXBkYXRlIl0pO3RoaXMuc291cmNlQWJvdmU9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQWJvdmUsWyJ3YXJuIiwiZXJyb3IiXSk7dGhpcy5zb3VyY2VCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5zb3VyY2VCZWxvdyxbInVwZGF0ZSIsIm1haW50YWluIl0pfX1jbGFzcyBWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwidmlld2VyUHJlZmVyZW5jZXMiLCEwKTt0aGlzLkFEQkVfSlNDb25zb2xlPW51bGw7dGhpcy5BREJFX0pTRGVidWdnZXI9bnVsbDt0aGlzLmFkZFZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy5kdXBsZXhPcHRpb249bnVsbDt0aGlzLmVuZm9yY2U9bnVsbDt0aGlzLm51bWJlck9mQ29waWVzPW51bGw7dGhpcy5wYWdlUmFuZ2U9bnVsbDt0aGlzLnBpY2tUcmF5QnlQREZTaXplPW51bGw7dGhpcy5wcmludFNjYWxpbmc9bnVsbH19Y2xhc3MgV2ViQ2xpZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJ3ZWJDbGllbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFdoaXRlc3BhY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsIndoaXRlc3BhY2UiLFsicHJlc2VydmUiLCJsdHJpbSIsIm5vcm1hbGl6ZSIsInJ0cmltIiwidHJpbSJdKX19Y2xhc3MgV2luZG93IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihRbCwid2luZG93Iil9W2xvXSgpe2NvbnN0IGU9dGhpc1tzb10uc3BsaXQoIiwiLDIpLm1hcChlPT5wYXJzZUludChlLnRyaW0oKSwxMCkpO2lmKGUuc29tZShlPT5pc05hTihlKSkpdGhpc1tzb109WzAsMF07ZWxzZXsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTt0aGlzW3NvXT1lfX19Y2xhc3MgWGRjIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFFsLCJ4ZGMiLCEwKTt0aGlzLnVyaT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2w9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBYZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInhkcCIsITApO3RoaXMucGFja2V0cz1udWxsfX1jbGFzcyBYc2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInhzbCIsITApO3RoaXMuZGVidWc9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBacGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUWwsInpwbCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgQ29uZmlnTmFtZXNwYWNle3N0YXRpY1tobF0oZSx0KXtpZihPYmplY3QuaGFzT3duKENvbmZpZ05hbWVzcGFjZSxlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IGNvbmZpZ19BcmVhKGUpfXN0YXRpYyBhdHRyaWJ1dGVzKGUpe3JldHVybiBuZXcgQXR0cmlidXRlcyhlKX1zdGF0aWMgYXV0b1NhdmUoZSl7cmV0dXJuIG5ldyBBdXRvU2F2ZShlKX1zdGF0aWMgYmFzZShlKXtyZXR1cm4gbmV3IEJhc2UoZSl9c3RhdGljIGJhdGNoT3V0cHV0KGUpe3JldHVybiBuZXcgQmF0Y2hPdXRwdXQoZSl9c3RhdGljIGJlaGF2aW9yT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBCZWhhdmlvck92ZXJyaWRlKGUpfXN0YXRpYyBjYWNoZShlKXtyZXR1cm4gbmV3IENhY2hlKGUpfXN0YXRpYyBjaGFuZ2UoZSl7cmV0dXJuIG5ldyBDaGFuZ2UoZSl9c3RhdGljIGNvbW1vbihlKXtyZXR1cm4gbmV3IENvbW1vbihlKX1zdGF0aWMgY29tcHJlc3MoZSl7cmV0dXJuIG5ldyBDb21wcmVzcyhlKX1zdGF0aWMgY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpe3JldHVybiBuZXcgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpfXN0YXRpYyBjb21wcmVzc09iamVjdFN0cmVhbShlKXtyZXR1cm4gbmV3IENvbXByZXNzT2JqZWN0U3RyZWFtKGUpfXN0YXRpYyBjb21wcmVzc2lvbihlKXtyZXR1cm4gbmV3IENvbXByZXNzaW9uKGUpfXN0YXRpYyBjb25maWcoZSl7cmV0dXJuIG5ldyBDb25maWcoZSl9c3RhdGljIGNvbmZvcm1hbmNlKGUpe3JldHVybiBuZXcgQ29uZm9ybWFuY2UoZSl9c3RhdGljIGNvbnRlbnRDb3B5KGUpe3JldHVybiBuZXcgQ29udGVudENvcHkoZSl9c3RhdGljIGNvcGllcyhlKXtyZXR1cm4gbmV3IENvcGllcyhlKX1zdGF0aWMgY3JlYXRvcihlKXtyZXR1cm4gbmV3IENyZWF0b3IoZSl9c3RhdGljIGN1cnJlbnRQYWdlKGUpe3JldHVybiBuZXcgQ3VycmVudFBhZ2UoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBEYXRhKGUpfXN0YXRpYyBkZWJ1ZyhlKXtyZXR1cm4gbmV3IERlYnVnKGUpfXN0YXRpYyBkZWZhdWx0VHlwZWZhY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VHlwZWZhY2UoZSl9c3RhdGljIGRlc3RpbmF0aW9uKGUpe3JldHVybiBuZXcgRGVzdGluYXRpb24oZSl9c3RhdGljIGRvY3VtZW50QXNzZW1ibHkoZSl7cmV0dXJuIG5ldyBEb2N1bWVudEFzc2VtYmx5KGUpfXN0YXRpYyBkcml2ZXIoZSl7cmV0dXJuIG5ldyBEcml2ZXIoZSl9c3RhdGljIGR1cGxleE9wdGlvbihlKXtyZXR1cm4gbmV3IER1cGxleE9wdGlvbihlKX1zdGF0aWMgZHluYW1pY1JlbmRlcihlKXtyZXR1cm4gbmV3IER5bmFtaWNSZW5kZXIoZSl9c3RhdGljIGVtYmVkKGUpe3JldHVybiBuZXcgRW1iZWQoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IGNvbmZpZ19FbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBjb25maWdfRm9udEluZm8oZSl9c3RhdGljIGZvcm1GaWVsZEZpbGxpbmcoZSl7cmV0dXJuIG5ldyBGb3JtRmllbGRGaWxsaW5nKGUpfXN0YXRpYyBncm91cFBhcmVudChlKXtyZXR1cm4gbmV3IEdyb3VwUGFyZW50KGUpfXN0YXRpYyBpZkVtcHR5KGUpe3JldHVybiBuZXcgSWZFbXB0eShlKX1zdGF0aWMgaW5jbHVkZVhEUENvbnRlbnQoZSl7cmV0dXJuIG5ldyBJbmNsdWRlWERQQ29udGVudChlKX1zdGF0aWMgaW5jcmVtZW50YWxMb2FkKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxMb2FkKGUpfXN0YXRpYyBpbmNyZW1lbnRhbE1lcmdlKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxNZXJnZShlKX1zdGF0aWMgaW50ZXJhY3RpdmUoZSl7cmV0dXJuIG5ldyBJbnRlcmFjdGl2ZShlKX1zdGF0aWMgam9nKGUpe3JldHVybiBuZXcgSm9nKGUpfXN0YXRpYyBsYWJlbFByaW50ZXIoZSl7cmV0dXJuIG5ldyBMYWJlbFByaW50ZXIoZSl9c3RhdGljIGxheW91dChlKXtyZXR1cm4gbmV3IExheW91dChlKX1zdGF0aWMgbGV2ZWwoZSl7cmV0dXJuIG5ldyBMZXZlbChlKX1zdGF0aWMgbGluZWFyaXplZChlKXtyZXR1cm4gbmV3IExpbmVhcml6ZWQoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBsb2coZSl7cmV0dXJuIG5ldyBMb2coZSl9c3RhdGljIG1hcChlKXtyZXR1cm4gbmV3IE1hcEVsZW1lbnQoZSl9c3RhdGljIG1lZGl1bUluZm8oZSl7cmV0dXJuIG5ldyBNZWRpdW1JbmZvKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgY29uZmlnX01lc3NhZ2UoZSl9c3RhdGljIG1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IE1lc3NhZ2luZyhlKX1zdGF0aWMgbW9kZShlKXtyZXR1cm4gbmV3IE1vZGUoZSl9c3RhdGljIG1vZGlmeUFubm90cyhlKXtyZXR1cm4gbmV3IE1vZGlmeUFubm90cyhlKX1zdGF0aWMgbXNnSWQoZSl7cmV0dXJuIG5ldyBNc2dJZChlKX1zdGF0aWMgbmFtZUF0dHIoZSl7cmV0dXJuIG5ldyBOYW1lQXR0cihlKX1zdGF0aWMgbmV2ZXJFbWJlZChlKXtyZXR1cm4gbmV3IE5ldmVyRW1iZWQoZSl9c3RhdGljIG51bWJlck9mQ29waWVzKGUpe3JldHVybiBuZXcgTnVtYmVyT2ZDb3BpZXMoZSl9c3RhdGljIG9wZW5BY3Rpb24oZSl7cmV0dXJuIG5ldyBPcGVuQWN0aW9uKGUpfXN0YXRpYyBvdXRwdXQoZSl7cmV0dXJuIG5ldyBPdXRwdXQoZSl9c3RhdGljIG91dHB1dEJpbihlKXtyZXR1cm4gbmV3IE91dHB1dEJpbihlKX1zdGF0aWMgb3V0cHV0WFNMKGUpe3JldHVybiBuZXcgT3V0cHV0WFNMKGUpfXN0YXRpYyBvdmVycHJpbnQoZSl7cmV0dXJuIG5ldyBPdmVycHJpbnQoZSl9c3RhdGljIHBhY2tldHMoZSl7cmV0dXJuIG5ldyBQYWNrZXRzKGUpfXN0YXRpYyBwYWdlT2Zmc2V0KGUpe3JldHVybiBuZXcgUGFnZU9mZnNldChlKX1zdGF0aWMgcGFnZVJhbmdlKGUpe3JldHVybiBuZXcgUGFnZVJhbmdlKGUpfXN0YXRpYyBwYWdpbmF0aW9uKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbihlKX1zdGF0aWMgcGFnaW5hdGlvbk92ZXJyaWRlKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbk92ZXJyaWRlKGUpfXN0YXRpYyBwYXJ0KGUpe3JldHVybiBuZXcgUGFydChlKX1zdGF0aWMgcGNsKGUpe3JldHVybiBuZXcgUGNsKGUpfXN0YXRpYyBwZGYoZSl7cmV0dXJuIG5ldyBQZGYoZSl9c3RhdGljIHBkZmEoZSl7cmV0dXJuIG5ldyBQZGZhKGUpfXN0YXRpYyBwZXJtaXNzaW9ucyhlKXtyZXR1cm4gbmV3IFBlcm1pc3Npb25zKGUpfXN0YXRpYyBwaWNrVHJheUJ5UERGU2l6ZShlKXtyZXR1cm4gbmV3IFBpY2tUcmF5QnlQREZTaXplKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgY29uZmlnX1BpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgY29uZmlnX1NjcmlwdChlKX1zdGF0aWMgc2NyaXB0TW9kZWwoZSl7cmV0dXJuIG5ldyBTY3JpcHRNb2RlbChlKX1zdGF0aWMgc2V2ZXJpdHkoZSl7cmV0dXJuIG5ldyBTZXZlcml0eShlKX1zdGF0aWMgc2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBTaWxlbnRQcmludChlKX1zdGF0aWMgc3RhcGxlKGUpe3JldHVybiBuZXcgU3RhcGxlKGUpfXN0YXRpYyBzdGFydE5vZGUoZSl7cmV0dXJuIG5ldyBTdGFydE5vZGUoZSl9c3RhdGljIHN0YXJ0UGFnZShlKXtyZXR1cm4gbmV3IFN0YXJ0UGFnZShlKX1zdGF0aWMgc3VibWl0Rm9ybWF0KGUpe3JldHVybiBuZXcgU3VibWl0Rm9ybWF0KGUpfXN0YXRpYyBzdWJtaXRVcmwoZSl7cmV0dXJuIG5ldyBTdWJtaXRVcmwoZSl9c3RhdGljIHN1YnNldEJlbG93KGUpe3JldHVybiBuZXcgU3Vic2V0QmVsb3coZSl9c3RhdGljIHN1cHByZXNzQmFubmVyKGUpe3JldHVybiBuZXcgU3VwcHJlc3NCYW5uZXIoZSl9c3RhdGljIHRhZ2dlZChlKXtyZXR1cm4gbmV3IFRhZ2dlZChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVGVtcGxhdGUoZSl9c3RhdGljIHRlbXBsYXRlQ2FjaGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZUNhY2hlKGUpfXN0YXRpYyB0aHJlc2hvbGQoZSl7cmV0dXJuIG5ldyBUaHJlc2hvbGQoZSl9c3RhdGljIHRvKGUpe3JldHVybiBuZXcgVG8oZSl9c3RhdGljIHRyYWNlKGUpe3JldHVybiBuZXcgVHJhY2UoZSl9c3RhdGljIHRyYW5zZm9ybShlKXtyZXR1cm4gbmV3IFRyYW5zZm9ybShlKX1zdGF0aWMgdHlwZShlKXtyZXR1cm4gbmV3IFR5cGUoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IFVyaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fWNvbnN0IFpsPXVsLmNvbm5lY3Rpb25TZXQuaWQ7Y2xhc3MgQ29ubmVjdGlvblNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiY29ubmVjdGlvblNldCIsITApO3RoaXMud3NkbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueG1sQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRWZmZWN0aXZlSW5wdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiZWZmZWN0aXZlT3V0cHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE9wZXJhdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwib3BlcmF0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmlucHV0PWUuaW5wdXR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMub3V0cHV0PWUub3V0cHV0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJvb3RFbGVtZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJzb2FwQWN0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBZGRyZXNzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJzb2FwQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBjb25uZWN0aW9uX3NldF9VcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwid3NkbEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsIndzZGxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuZWZmZWN0aXZlSW5wdXRQb2xpY3k9bnVsbDt0aGlzLmVmZmVjdGl2ZU91dHB1dFBvbGljeT1udWxsO3RoaXMub3BlcmF0aW9uPW51bGw7dGhpcy5zb2FwQWN0aW9uPW51bGw7dGhpcy5zb2FwQWRkcmVzcz1udWxsO3RoaXMud3NkbEFkZHJlc3M9bnVsbH19Y2xhc3MgWG1sQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJ4c2RDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucm9vdEVsZW1lbnQ9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBDb25uZWN0aW9uU2V0TmFtZXNwYWNle3N0YXRpY1tobF0oZSx0KXtpZihPYmplY3QuaGFzT3duKENvbm5lY3Rpb25TZXROYW1lc3BhY2UsZSkpcmV0dXJuIENvbm5lY3Rpb25TZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNvbm5lY3Rpb25TZXQoZSl7cmV0dXJuIG5ldyBDb25uZWN0aW9uU2V0KGUpfXN0YXRpYyBlZmZlY3RpdmVJbnB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZUlucHV0UG9saWN5KGUpfXN0YXRpYyBlZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl9c3RhdGljIG9wZXJhdGlvbihlKXtyZXR1cm4gbmV3IE9wZXJhdGlvbihlKX1zdGF0aWMgcm9vdEVsZW1lbnQoZSl7cmV0dXJuIG5ldyBSb290RWxlbWVudChlKX1zdGF0aWMgc29hcEFjdGlvbihlKXtyZXR1cm4gbmV3IFNvYXBBY3Rpb24oZSl9c3RhdGljIHNvYXBBZGRyZXNzKGUpe3JldHVybiBuZXcgU29hcEFkZHJlc3MoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IGNvbm5lY3Rpb25fc2V0X1VyaShlKX1zdGF0aWMgd3NkbEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBXc2RsQWRkcmVzcyhlKX1zdGF0aWMgd3NkbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBXc2RsQ29ubmVjdGlvbihlKX1zdGF0aWMgeG1sQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhtbENvbm5lY3Rpb24oZSl9c3RhdGljIHhzZENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYc2RDb25uZWN0aW9uKGUpfX1jb25zdCBlZj11bC5kYXRhc2V0cy5pZDtjbGFzcyBkYXRhc2V0c19EYXRhIGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGVmLCJkYXRhIixlKX1bTW9dKCl7cmV0dXJuITB9fWNsYXNzIERhdGFzZXRzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGVmLCJkYXRhc2V0cyIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMuU2lnbmF0dXJlPW51bGx9W1dvXShlKXtjb25zdCB0PWVbVW9dOygiZGF0YSI9PT10JiZlW0xvXT09PWVmfHwiU2lnbmF0dXJlIj09PXQmJmVbTG9dPT09dWwuc2lnbmF0dXJlLmlkKSYmKHRoaXNbdF09ZSk7dGhpc1tKaV0oZSl9fWNsYXNzIERhdGFzZXRzTmFtZXNwYWNle3N0YXRpY1tobF0oZSx0KXtpZihPYmplY3QuaGFzT3duKERhdGFzZXRzTmFtZXNwYWNlLGUpKXJldHVybiBEYXRhc2V0c05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgZGF0YXNldHMoZSl7cmV0dXJuIG5ldyBEYXRhc2V0cyhlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IGRhdGFzZXRzX0RhdGEoZSl9fWNvbnN0IHRmPXVsLmxvY2FsZVNldC5pZDtjbGFzcyBDYWxlbmRhclN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsImNhbGVuZGFyU3ltYm9scyIsITApO3RoaXMubmFtZT0iZ3JlZ29yaWFuIjt0aGlzLmRheU5hbWVzPW5ldyBYRkFPYmplY3RBcnJheSgyKTt0aGlzLmVyYU5hbWVzPW51bGw7dGhpcy5tZXJpZGllbU5hbWVzPW51bGw7dGhpcy5tb250aE5hbWVzPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2wgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsImN1cnJlbmN5U3ltYm9sIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJzeW1ib2wiLCJpc29uYW1lIiwiZGVjaW1hbCJdKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHRmLCJjdXJyZW5jeVN5bWJvbHMiLCEwKTt0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBYRkFPYmplY3RBcnJheSgzKX19Y2xhc3MgRGF0ZVBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsImRhdGVQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBEYXRlUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsImRhdGVQYXR0ZXJucyIsITApO3RoaXMuZGF0ZVBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBEYXRlVGltZVN5bWJvbHMgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHRmLCJkYXRlVGltZVN5bWJvbHMiKX19Y2xhc3MgRGF5IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHRmLCJkYXkiKX19Y2xhc3MgRGF5TmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsImRheU5hbWVzIiwhMCk7dGhpcy5hYmJyPWdldEludGVnZXIoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5kYXk9bmV3IFhGQU9iamVjdEFycmF5KDcpfX1jbGFzcyBFcmEgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsImVyYSIpfX1jbGFzcyBFcmFOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih0ZiwiZXJhTmFtZXMiLCEwKTt0aGlzLmVyYT1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIGxvY2FsZV9zZXRfTG9jYWxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHRmLCJsb2NhbGUiLCEwKTt0aGlzLmRlc2M9ZS5kZXNjfHwiIjt0aGlzLm5hbWU9Imlzb25hbWUiO3RoaXMuY2FsZW5kYXJTeW1ib2xzPW51bGw7dGhpcy5jdXJyZW5jeVN5bWJvbHM9bnVsbDt0aGlzLmRhdGVQYXR0ZXJucz1udWxsO3RoaXMuZGF0ZVRpbWVTeW1ib2xzPW51bGw7dGhpcy5udW1iZXJQYXR0ZXJucz1udWxsO3RoaXMubnVtYmVyU3ltYm9scz1udWxsO3RoaXMudGltZVBhdHRlcm5zPW51bGw7dGhpcy50eXBlRmFjZXM9bnVsbH19Y2xhc3MgbG9jYWxlX3NldF9Mb2NhbGVTZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsImxvY2FsZVNldCIsITApO3RoaXMubG9jYWxlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsIm1lcmlkaWVtIil9fWNsYXNzIE1lcmlkaWVtTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsIm1lcmlkaWVtTmFtZXMiLCEwKTt0aGlzLm1lcmlkaWVtPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgTW9udGggZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsIm1vbnRoIil9fWNsYXNzIE1vbnRoTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsIm1vbnRoTmFtZXMiLCEwKTt0aGlzLmFiYnI9Z2V0SW50ZWdlcih7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLm1vbnRoPW5ldyBYRkFPYmplY3RBcnJheSgxMil9fWNsYXNzIE51bWJlclBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodGYsIm51bWJlclBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIE51bWJlclBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHRmLCJudW1iZXJQYXR0ZXJucyIsITApO3RoaXMubnVtYmVyUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIE51bWJlclN5bWJvbCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih0ZiwibnVtYmVyU3ltYm9sIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJkZWNpbWFsIiwiZ3JvdXBpbmciLCJwZXJjZW50IiwibWludXMiLCJ6ZXJvIl0pfX1jbGFzcyBOdW1iZXJTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHRmLCJudW1iZXJTeW1ib2xzIiwhMCk7dGhpcy5udW1iZXJTeW1ib2w9bmV3IFhGQU9iamVjdEFycmF5KDUpfX1jbGFzcyBUaW1lUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih0ZiwidGltZVBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIFRpbWVQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih0ZiwidGltZVBhdHRlcm5zIiwhMCk7dGhpcy50aW1lUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIFR5cGVGYWNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHRmLCJ0eXBlRmFjZSIsITApO3RoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIFR5cGVGYWNlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih0ZiwidHlwZUZhY2VzIiwhMCk7dGhpcy50eXBlRmFjZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIExvY2FsZVNldE5hbWVzcGFjZXtzdGF0aWNbaGxdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihMb2NhbGVTZXROYW1lc3BhY2UsZSkpcmV0dXJuIExvY2FsZVNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY2FsZW5kYXJTeW1ib2xzKGUpe3JldHVybiBuZXcgQ2FsZW5kYXJTeW1ib2xzKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbChlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9sKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbHMoZSl9c3RhdGljIGRhdGVQYXR0ZXJuKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm4oZSl9c3RhdGljIGRhdGVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJucyhlKX1zdGF0aWMgZGF0ZVRpbWVTeW1ib2xzKGUpe3JldHVybiBuZXcgRGF0ZVRpbWVTeW1ib2xzKGUpfXN0YXRpYyBkYXkoZSl7cmV0dXJuIG5ldyBEYXkoZSl9c3RhdGljIGRheU5hbWVzKGUpe3JldHVybiBuZXcgRGF5TmFtZXMoZSl9c3RhdGljIGVyYShlKXtyZXR1cm4gbmV3IEVyYShlKX1zdGF0aWMgZXJhTmFtZXMoZSl7cmV0dXJuIG5ldyBFcmFOYW1lcyhlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgbG9jYWxlX3NldF9Mb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19Y29uc3QgYWY9dWwuc2lnbmF0dXJlLmlkO2NsYXNzIHNpZ25hdHVyZV9TaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljW2hsXShlLHQpe2lmKE9iamVjdC5oYXNPd24oU2lnbmF0dXJlTmFtZXNwYWNlLGUpKXJldHVybiBTaWduYXR1cmVOYW1lc3BhY2VbZV0odCl9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IHNpZ25hdHVyZV9TaWduYXR1cmUoZSl9fWNvbnN0IG5mPXVsLnN0eWxlc2hlZXQuaWQ7Y2xhc3MgU3R5bGVzaGVldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihuZiwic3R5bGVzaGVldCIsITApfX1jbGFzcyBTdHlsZXNoZWV0TmFtZXNwYWNle3N0YXRpY1tobF0oZSx0KXtpZihPYmplY3QuaGFzT3duKFN0eWxlc2hlZXROYW1lc3BhY2UsZSkpcmV0dXJuIFN0eWxlc2hlZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIHN0eWxlc2hlZXQoZSl7cmV0dXJuIG5ldyBTdHlsZXNoZWV0KGUpfX1jb25zdCBzZj11bC54ZHAuaWQ7Y2xhc3MgeGRwX1hkcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwieGRwIiwhMCk7dGhpcy51dWlkPWUudXVpZHx8IiI7dGhpcy50aW1lU3RhbXA9ZS50aW1lU3RhbXB8fCIiO3RoaXMuY29uZmlnPW51bGw7dGhpcy5jb25uZWN0aW9uU2V0PW51bGw7dGhpcy5kYXRhc2V0cz1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5zdHlsZXNoZWV0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRlbXBsYXRlPW51bGx9W0tvXShlKXtjb25zdCB0PXVsW2VbVW9dXTtyZXR1cm4gdCYmZVtMb109PT10LmlkfX1jbGFzcyBYZHBOYW1lc3BhY2V7c3RhdGljW2hsXShlLHQpe2lmKE9iamVjdC5oYXNPd24oWGRwTmFtZXNwYWNlLGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IHhkcF9YZHAoZSl9fWNvbnN0IHJmPXVsLnhodG1sLmlkLG9mPVN5bWJvbCgpLGxmPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksZmY9bmV3IE1hcChbWyJwYWdlLWJyZWFrLWFmdGVyIiwiYnJlYWtBZnRlciJdLFsicGFnZS1icmVhay1iZWZvcmUiLCJicmVha0JlZm9yZSJdLFsicGFnZS1icmVhay1pbnNpZGUiLCJicmVha0luc2lkZSJdLFsia2VybmluZy1tb2RlIixlPT4ibm9uZSI9PT1lPyJub25lIjoibm9ybWFsIl0sWyJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIixlPT5gc2NhbGVYKCR7TWF0aC5tYXgoMCxwYXJzZUludChlLDEwKS8xMDApLnRvRml4ZWQoMil9KWBdLFsieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLGU9PmBzY2FsZVkoJHtNYXRoLm1heCgwLHBhcnNlSW50KGUsMTApLzEwMCkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtc3BhY2VydW4iLCIiXSxbInhmYS10YWItc3RvcHMiLCIiXSxbImZvbnQtc2l6ZSIsKGUsdCk9Pm1lYXN1cmVUb1N0cmluZyguOTkqKGU9dC5mb250U2l6ZT1NYXRoLmFicyhnZXRNZWFzdXJlbWVudChlKSkpKV0sWyJsZXR0ZXItc3BhY2luZyIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJsaW5lLWhlaWdodCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLWJvdHRvbSIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tbGVmdCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tcmlnaHQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLXRvcCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJ0ZXh0LWluZGVudCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJmb250LWZhbWlseSIsZT0+ZV0sWyJ2ZXJ0aWNhbC1hbGlnbiIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV1dKSxjZj0vXHMrL2csaGY9L1tcclxuXSsvZyx1Zj0vXHJcbj8vZztmdW5jdGlvbiBtYXBTdHlsZShlLHQsYSl7Y29uc3Qgbj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCFlKXJldHVybiBuO2NvbnN0IHM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbdCxhXW9mIGUuc3BsaXQoIjsiKS5tYXAoZT0+ZS5zcGxpdCgiOiIsMikpKXtjb25zdCBlPWZmLmdldCh0KTtpZigiIj09PWUpY29udGludWU7bGV0IHI9YTtlJiYocj0ic3RyaW5nIj09dHlwZW9mIGU/ZTplKGEscykpO3QuZW5kc1dpdGgoInNjYWxlIik/bi50cmFuc2Zvcm09bi50cmFuc2Zvcm0/YCR7blt0XX0gJHtyfWA6cjpuW3QucmVwbGFjZUFsbCgvLShbYS16QS1aXSkvZywoZSx0KT0+dC50b1VwcGVyQ2FzZSgpKV09cn1uLmZvbnRGYW1pbHkmJnNldEZvbnRGYW1pbHkoe3R5cGVmYWNlOm4uZm9udEZhbWlseSx3ZWlnaHQ6bi5mb250V2VpZ2h0fHwibm9ybWFsIixwb3N0dXJlOm4uZm9udFN0eWxlfHwibm9ybWFsIixzaXplOnMuZm9udFNpemV8fDB9LHQsdFt4b10uZm9udEZpbmRlcixuKTtpZihhJiZuLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09bi52ZXJ0aWNhbEFsaWduJiZuLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLGE9Z2V0TWVhc3VyZW1lbnQobi5mb250U2l6ZSk7bi5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoYSplKTtuLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKE1hdGguc2lnbihnZXRNZWFzdXJlbWVudChuLnZlcnRpY2FsQWxpZ24pKSphKnQpfWEmJm4uZm9udFNpemUmJihuLmZvbnRTaXplPWBjYWxjKCR7bi5mb250U2l6ZX0gKiB2YXIoLS10b3RhbC1zY2FsZS1mYWN0b3IpKWApO2ZpeFRleHRJbmRlbnQobik7cmV0dXJuIG59Y29uc3QgbWY9bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIocmYsdCk7dGhpc1tvZl09ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bWmldKGUpe3N1cGVyW1ppXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS5zcGxpdCgiOyIpLmZpbHRlcihlPT4hIWUudHJpbSgpKS5tYXAoZT0+ZS5zcGxpdCgiOiIsMikubWFwKGU9PmUudHJpbSgpKSkuZmlsdGVyKChbdCxhXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVt4b10udXNlZFR5cGVmYWNlcy5hZGQoYSk7cmV0dXJuIGxmLmhhcyh0KX0pLm1hcChlPT5lLmpvaW4oIjoiKSkuam9pbigiOyIpOiIifSh0aGlzKX1bJGldKCl7cmV0dXJuIW1mLmhhcyh0aGlzW1VvXSl9W0dvXShlLHQ9ITEpe2lmKHQpdGhpc1tvZl09ITA7ZWxzZXtlPWUucmVwbGFjZUFsbChoZiwiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwoY2YsIiAiKSl9ZSYmKHRoaXNbc29dKz1lKX1bVm9dKGUsdD0hMCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLG49e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCBzPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKGU9PmUuc3BsaXQoIjoiLDIpKSlzd2l0Y2goZSl7Y2FzZSJmb250LWZhbWlseSI6YS50eXBlZmFjZT1zdHJpcFF1b3Rlcyh0KTticmVhaztjYXNlImZvbnQtc2l6ZSI6YS5zaXplPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UiZm9udC13ZWlnaHQiOmEud2VpZ2h0PXQ7YnJlYWs7Y2FzZSJmb250LXN0eWxlIjphLnBvc3R1cmU9dDticmVhaztjYXNlImxldHRlci1zcGFjaW5nIjphLmxldHRlclNwYWNpbmc9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4iOmNvbnN0IGU9dC5zcGxpdCgvIFx0LykubWFwKGU9PmdldE1lYXN1cmVtZW50KGUpKTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMTpuLnRvcD1uLmJvdHRvbT1uLmxlZnQ9bi5yaWdodD1lWzBdO2JyZWFrO2Nhc2UgMjpuLnRvcD1uLmJvdHRvbT1lWzBdO24ubGVmdD1uLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSAzOm4udG9wPWVbMF07bi5ib3R0b209ZVsyXTtuLmxlZnQ9bi5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgNDpuLnRvcD1lWzBdO24ubGVmdD1lWzFdO24uYm90dG9tPWVbMl07bi5yaWdodD1lWzNdfWJyZWFrO2Nhc2UibWFyZ2luLXRvcCI6bi50b3A9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tYm90dG9tIjpuLmJvdHRvbT1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1sZWZ0IjpuLmxlZnQ9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tcmlnaHQiOm4ucmlnaHQ9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJsaW5lLWhlaWdodCI6cz1nZXRNZWFzdXJlbWVudCh0KX1lLnB1c2hEYXRhKGEsbixzKTtpZih0aGlzW3NvXSllLmFkZFN0cmluZyh0aGlzW3NvXSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW2tvXSgpKSIjdGV4dCIhPT10W1VvXT90W1ZvXShlKTplLmFkZFN0cmluZyh0W3NvXSk7dCYmZS5wb3BGb250KCl9W29sXShlKXtjb25zdCB0PVtdO3RoaXNbb29dPXtjaGlsZHJlbjp0fTt0aGlzW1FpXSh7fSk7aWYoMD09PXQubGVuZ3RoJiYhdGhpc1tzb10pcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bGV0IGE7YT10aGlzW29mXT90aGlzW3NvXT90aGlzW3NvXS5yZXBsYWNlQWxsKHVmLCJcbiIpOnZvaWQgMDp0aGlzW3NvXXx8dm9pZCAwO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6dGhpc1tVb10sYXR0cmlidXRlczp7aHJlZjp0aGlzLmhyZWYsc3R5bGU6bWFwU3R5bGUodGhpcy5zdHlsZSx0aGlzLHRoaXNbb2ZdKX0sY2hpbGRyZW46dCx2YWx1ZTphfSl9fWNsYXNzIEEgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJhIik7dGhpcy5ocmVmPWZpeFVSTChlLmhyZWYpfHwiIn19Y2xhc3MgQiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImIiKX1bVm9dKGUpe2UucHVzaEZvbnQoe3dlaWdodDoiYm9sZCJ9KTtzdXBlcltWb10oZSk7ZS5wb3BGb250KCl9fWNsYXNzIEJvZHkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJib2R5Iil9W29sXShlKXtjb25zdCB0PXN1cGVyW29sXShlKSx7aHRtbDphfT10O2lmKCFhKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2EubmFtZT0iZGl2IjthLmF0dHJpYnV0ZXMuY2xhc3M9WyJ4ZmFSaWNoIl07cmV0dXJuIHR9fWNsYXNzIEJyIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYnIiKX1bcmxdKCl7cmV0dXJuIlxuIn1bVm9dKGUpe2UuYWRkU3RyaW5nKCJcbiIpfVtvbF0oZSl7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiYnIifSl9fWNsYXNzIEh0bWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJodG1sIil9W29sXShlKXtjb25zdCB0PVtdO3RoaXNbb29dPXtjaGlsZHJlbjp0fTt0aGlzW1FpXSh7fSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LHZhbHVlOnRoaXNbc29dfHwiIn0pO2lmKDE9PT10Lmxlbmd0aCl7Y29uc3QgZT10WzBdO2lmKGUuYXR0cmlidXRlcz8uY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LGNoaWxkcmVuOnR9KX19Y2xhc3MgSSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImkiKX1bVm9dKGUpe2UucHVzaEZvbnQoe3Bvc3R1cmU6Iml0YWxpYyJ9KTtzdXBlcltWb10oZSk7ZS5wb3BGb250KCl9fWNsYXNzIExpIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwibGkiKX19Y2xhc3MgT2wgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJvbCIpfX1jbGFzcyBQIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwicCIpfVtWb10oZSl7c3VwZXJbVm9dKGUsITEpO2UuYWRkU3RyaW5nKCJcbiIpO2UuYWRkUGFyYSgpO2UucG9wRm9udCgpfVtybF0oKXtyZXR1cm4gdGhpc1tTb10oKVtrb10oKS5hdCgtMSk9PT10aGlzP3N1cGVyW3JsXSgpOnN1cGVyW3JsXSgpKyJcbiJ9fWNsYXNzIFNwYW4gZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzcGFuIil9fWNsYXNzIFN1YiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1YiIpfX1jbGFzcyBTdXAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdXAiKX19Y2xhc3MgVWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJ1bCIpfX1jbGFzcyBYaHRtbE5hbWVzcGFjZXtzdGF0aWNbaGxdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihYaHRtbE5hbWVzcGFjZSxlKSlyZXR1cm4gWGh0bWxOYW1lc3BhY2VbZV0odCl9c3RhdGljIGEoZSl7cmV0dXJuIG5ldyBBKGUpfXN0YXRpYyBiKGUpe3JldHVybiBuZXcgQihlKX1zdGF0aWMgYm9keShlKXtyZXR1cm4gbmV3IEJvZHkoZSl9c3RhdGljIGJyKGUpe3JldHVybiBuZXcgQnIoZSl9c3RhdGljIGh0bWwoZSl7cmV0dXJuIG5ldyBIdG1sKGUpfXN0YXRpYyBpKGUpe3JldHVybiBuZXcgSShlKX1zdGF0aWMgbGkoZSl7cmV0dXJuIG5ldyBMaShlKX1zdGF0aWMgb2woZSl7cmV0dXJuIG5ldyBPbChlKX1zdGF0aWMgcChlKXtyZXR1cm4gbmV3IFAoZSl9c3RhdGljIHNwYW4oZSl7cmV0dXJuIG5ldyBTcGFuKGUpfXN0YXRpYyBzdWIoZSl7cmV0dXJuIG5ldyBTdWIoZSl9c3RhdGljIHN1cChlKXtyZXR1cm4gbmV3IFN1cChlKX1zdGF0aWMgdWwoZSl7cmV0dXJuIG5ldyBVbChlKX19Y29uc3QgcGY9e2NvbmZpZzpDb25maWdOYW1lc3BhY2UsY29ubmVjdGlvbjpDb25uZWN0aW9uU2V0TmFtZXNwYWNlLGRhdGFzZXRzOkRhdGFzZXRzTmFtZXNwYWNlLGxvY2FsZVNldDpMb2NhbGVTZXROYW1lc3BhY2Usc2lnbmF0dXJlOlNpZ25hdHVyZU5hbWVzcGFjZSxzdHlsZXNoZWV0OlN0eWxlc2hlZXROYW1lc3BhY2UsdGVtcGxhdGU6VGVtcGxhdGVOYW1lc3BhY2UseGRwOlhkcE5hbWVzcGFjZSx4aHRtbDpYaHRtbE5hbWVzcGFjZX07Y2xhc3MgVW5rbm93bk5hbWVzcGFjZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWVzcGFjZUlkPWV9W2hsXShlLHQpe3JldHVybiBuZXcgWG1sT2JqZWN0KHRoaXMubmFtZXNwYWNlSWQsZSx0KX19Y2xhc3MgUm9vdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcigtMSwicm9vdCIsT2JqZWN0LmNyZWF0ZShudWxsKSk7dGhpcy5lbGVtZW50PW51bGw7dGhpc1tJb109ZX1bV29dKGUpe3RoaXMuZWxlbWVudD1lO3JldHVybiEwfVtsb10oKXtzdXBlcltsb10oKTtpZih0aGlzLmVsZW1lbnQudGVtcGxhdGUgaW5zdGFuY2VvZiBUZW1wbGF0ZSl7dGhpc1tJb10uc2V0KFFvLHRoaXMuZWxlbWVudCk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW1pvXSh0aGlzW0lvXSk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW0lvXT10aGlzW0lvXX19fWNsYXNzIEVtcHR5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLTEsIiIsT2JqZWN0LmNyZWF0ZShudWxsKSl9W1dvXShlKXtyZXR1cm4hMX19Y2xhc3MgQnVpbGRlcntjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX25hbWVzcGFjZVN0YWNrPVtdO3RoaXMuX25zQWdub3N0aWNMZXZlbD0wO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzPW5ldyBNYXA7dGhpcy5fbmFtZXNwYWNlcz1uZXcgTWFwO3RoaXMuX25leHROc0lkPU1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXModWwpLm1hcCgoe2lkOmV9KT0+ZSkpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9ZXx8bmV3IFVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCl9YnVpbGRSb290KGUpe3JldHVybiBuZXcgUm9vdChlKX1idWlsZCh7bnNQcmVmaXg6ZSxuYW1lOnQsYXR0cmlidXRlczphLG5hbWVzcGFjZTpuLHByZWZpeGVzOnN9KXtjb25zdCByPW51bGwhPT1uO2lmKHIpe3RoaXMuX25hbWVzcGFjZVN0YWNrLnB1c2godGhpcy5fY3VycmVudE5hbWVzcGFjZSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9zZWFyY2hOYW1lc3BhY2Uobil9cyYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KHMpO2lmKE9iamVjdC5oYXNPd24oYSxYbykpe2NvbnN0IGU9cGYuZGF0YXNldHMsdD1hW1hvXTtsZXQgbj1udWxsO2Zvcihjb25zdFthLHNdb2YgT2JqZWN0LmVudHJpZXModCkpe2lmKHRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGEpPT09ZSl7bj17eGZhOnN9O2JyZWFrfX1uP2FbWG9dPW46ZGVsZXRlIGFbWG9dfWNvbnN0IGk9dGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoZSksbz1pPy5baGxdKHQsYSl8fG5ldyBFbXB0eTtvW01vXSgpJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwrKzsocnx8c3x8b1tNb10oKSkmJihvW3RvXT17aGFzTmFtZXNwYWNlOnIscHJlZml4ZXM6cyxuc0Fnbm9zdGljOm9bTW9dKCl9KTtyZXR1cm4gb31pc05zQWdub3N0aWMoKXtyZXR1cm4gdGhpcy5fbnNBZ25vc3RpY0xldmVsPjB9X3NlYXJjaE5hbWVzcGFjZShlKXtsZXQgdD10aGlzLl9uYW1lc3BhY2VzLmdldChlKTtpZih0KXJldHVybiB0O2Zvcihjb25zdFthLHtjaGVjazpufV1vZiBPYmplY3QuZW50cmllcyh1bCkpaWYobihlKSl7dD1wZlthXTtpZih0KXt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fWJyZWFrfXQ9bmV3IFVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCk7dGhpcy5fbmFtZXNwYWNlcy5zZXQoZSx0KTtyZXR1cm4gdH1fYWRkTmFtZXNwYWNlUHJlZml4KGUpe2Zvcihjb25zdHtwcmVmaXg6dCx2YWx1ZTphfW9mIGUpe2NvbnN0IGU9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGEpO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldE9ySW5zZXJ0Q29tcHV0ZWQodCxtYWtlQXJyKS5wdXNoKGUpfX1fZ2V0TmFtZXNwYWNlVG9Vc2UoZSl7aWYoIWUpcmV0dXJuIHRoaXMuX2N1cnJlbnROYW1lc3BhY2U7Y29uc3QgdD10aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSk7aWYodD8ubGVuZ3RoPjApcmV0dXJuIHQuYXQoLTEpO3dhcm4oYFVua25vd24gbmFtZXNwYWNlIHByZWZpeDogJHtlfS5gKTtyZXR1cm4gbnVsbH1jbGVhbihlKXtjb25zdHtoYXNOYW1lc3BhY2U6dCxwcmVmaXhlczphLG5zQWdub3N0aWM6bn09ZTt0JiYodGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9uYW1lc3BhY2VTdGFjay5wb3AoKSk7YSYmYS5mb3JFYWNoKCh7cHJlZml4OmV9KT0+e3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldChlKS5wb3AoKX0pO24mJnRoaXMuX25zQWdub3N0aWNMZXZlbC0tfX1jbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKGU9bnVsbCx0PSExKXtzdXBlcigpO3RoaXMuX2J1aWxkZXI9bmV3IEJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPUJpO3RoaXMuX3doaXRlUmVnZXg9L15ccyskLzt0aGlzLl9uYnNwcz0vXHhhMCsvZzt0aGlzLl9yaWNoVGV4dD10fXBhcnNlKGUpe3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlPT09Qmkpe3RoaXMuX2N1cnJlbnRbbG9dKCk7cmV0dXJuIHRoaXMuX2N1cnJlbnQuZWxlbWVudH19b25UZXh0KGUpe2U9ZS5yZXBsYWNlKHRoaXMuX25ic3BzLGU9PmUuc2xpY2UoMSkrIiAiKTt0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFskaV0oKT90aGlzLl9jdXJyZW50W0dvXShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbR29dKGUudHJpbSgpKX1vbkNkYXRhKGUpe3RoaXMuX2N1cnJlbnRbR29dKGUpfV9ta0F0dHJpYnV0ZXMoZSx0KXtsZXQgYT1udWxsLG49bnVsbDtjb25zdCBzPU9iamVjdC5jcmVhdGUoe30pO2Zvcihjb25zdHtuYW1lOnIsdmFsdWU6aX1vZiBlKWlmKCJ4bWxucyI9PT1yKWE/d2FybihgWEZBIC0gbXVsdGlwbGUgbmFtZXNwYWNlIGRlZmluaXRpb24gaW4gPCR7dH0+YCk6YT1pO2Vsc2UgaWYoci5zdGFydHNXaXRoKCJ4bWxuczoiKSl7Y29uc3QgZT1yLnN1YnN0cmluZyg2KTtuPz89W107bi5wdXNoKHtwcmVmaXg6ZSx2YWx1ZTppfSl9ZWxzZXtjb25zdCBlPXIuaW5kZXhPZigiOiIpO2lmKC0xPT09ZSlzW3JdPWk7ZWxzZXtjb25zdCB0PXNbWG9dPz89T2JqZWN0LmNyZWF0ZShudWxsKSxbYSxuXT1bci5zbGljZSgwLGUpLHIuc2xpY2UoZSsxKV07KHRbYV18fD1PYmplY3QuY3JlYXRlKG51bGwpKVtuXT1pfX1yZXR1cm5bYSxuLHNdfV9nZXROYW1lQW5kUHJlZml4KGUsdCl7Y29uc3QgYT1lLmluZGV4T2YoIjoiKTtyZXR1cm4tMT09PWE/W2UsbnVsbF06W2Uuc3Vic3RyaW5nKGErMSksdD8iIjplLnN1YnN0cmluZygwLGEpXX1vbkJlZ2luRWxlbWVudChlLHQsYSl7Y29uc3RbbixzLHJdPXRoaXMuX21rQXR0cmlidXRlcyh0LGUpLFtpLG9dPXRoaXMuX2dldE5hbWVBbmRQcmVmaXgoZSx0aGlzLl9idWlsZGVyLmlzTnNBZ25vc3RpYygpKSxsPXRoaXMuX2J1aWxkZXIuYnVpbGQoe25zUHJlZml4Om8sbmFtZTppLGF0dHJpYnV0ZXM6cixuYW1lc3BhY2U6bixwcmVmaXhlczpzfSk7bFt4b109dGhpcy5fZ2xvYmFsRGF0YTtpZihhKXtsW2xvXSgpO3RoaXMuX2N1cnJlbnRbV29dKGwpJiZsW3RsXSh0aGlzLl9pZHMpO2xbWmldKHRoaXMuX2J1aWxkZXIpfWVsc2V7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50KTt0aGlzLl9jdXJyZW50PWx9fW9uRW5kRWxlbWVudChlKXtjb25zdCB0PXRoaXMuX2N1cnJlbnQ7aWYodFtSb10oKSYmInN0cmluZyI9PXR5cGVvZiB0W3NvXSl7Y29uc3QgZT1uZXcgWEZBUGFyc2VyO2UuX2dsb2JhbERhdGE9dGhpcy5fZ2xvYmFsRGF0YTtjb25zdCBhPWUucGFyc2UodFtzb10pO3Rbc29dPW51bGw7dFtXb10oYSl9dFtsb10oKTt0aGlzLl9jdXJyZW50PXRoaXMuX3N0YWNrLnBvcCgpO3RoaXMuX2N1cnJlbnRbV29dKHQpJiZ0W3RsXSh0aGlzLl9pZHMpO3RbWmldKHRoaXMuX2J1aWxkZXIpfW9uRXJyb3IoZSl7dGhpcy5fZXJyb3JDb2RlPWV9fWNsYXNzIFhGQUZhY3Rvcnl7Y29uc3RydWN0b3IoZSl7dHJ5e3RoaXMucm9vdD0obmV3IFhGQVBhcnNlcikucGFyc2UoWEZBRmFjdG9yeS5fY3JlYXRlRG9jdW1lbnQoZSkpO2NvbnN0IHQ9bmV3IEJpbmRlcih0aGlzLnJvb3QpO3RoaXMuZm9ybT10LmJpbmQoKTt0aGlzLmRhdGFIYW5kbGVyPW5ldyBEYXRhSGFuZGxlcih0aGlzLnJvb3QsdC5nZXREYXRhKCkpO3RoaXMuZm9ybVt4b10udGVtcGxhdGU9dGhpcy5mb3JtfWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIGFuZCBiaW5kaW5nOiAke2V9YCl9fWlzVmFsaWQoKXtyZXR1cm4hKCF0aGlzLnJvb3R8fCF0aGlzLmZvcm0pfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW2lsXSgpO3JldHVybiBuZXcgUHJvbWlzZSgodCxhKT0+e2NvbnN0IG5leHRJdGVyYXRpb249KCk9Pnt0cnl7Y29uc3QgYT1lLm5leHQoKTthLmRvbmU/dChhLnZhbHVlKTpzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9Y2F0Y2goZSl7YShlKX19O3NldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX0pfWFzeW5jIF9jcmVhdGVQYWdlcygpe3RyeXt0aGlzLnBhZ2VzPWF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzSGVscGVyKCk7dGhpcy5kaW1zPXRoaXMucGFnZXMuY2hpbGRyZW4ubWFwKGU9Pntjb25zdHt3aWR0aDp0LGhlaWdodDphfT1lLmF0dHJpYnV0ZXMuc3R5bGU7cmV0dXJuWzAsMCxwYXJzZUludCh0LDEwKSxwYXJzZUludChhLDEwKV19KX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgbGF5b3V0OiAke2V9YCl9fWdldEJvdW5kaW5nQm94KGUpe3JldHVybiB0aGlzLmRpbXNbZV19YXN5bmMgZ2V0TnVtUGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO3JldHVybiB0aGlzLmRpbXMubGVuZ3RofXNldEltYWdlcyhlKXt0aGlzLmZvcm1beG9dLmltYWdlcz1lfXNldEZvbnRzKGUpe3RoaXMuZm9ybVt4b10uZm9udEZpbmRlcj1uZXcgRm9udEZpbmRlcihlKTtjb25zdCB0PVtdO2ZvcihsZXQgZSBvZiB0aGlzLmZvcm1beG9dLnVzZWRUeXBlZmFjZXMpe2U9c3RyaXBRdW90ZXMoZSk7dGhpcy5mb3JtW3hvXS5mb250RmluZGVyLmZpbmQoZSl8fHQucHVzaChlKX1yZXR1cm4gdC5sZW5ndGg+MD90Om51bGx9YXBwZW5kRm9udHMoZSx0KXt0aGlzLmZvcm1beG9dLmZvbnRGaW5kZXIuYWRkKGUsdCl9YXN5bmMgZ2V0UGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO2NvbnN0IGU9dGhpcy5wYWdlczt0aGlzLnBhZ2VzPW51bGw7cmV0dXJuIGV9c2VyaWFsaXplRGF0YShlKXtyZXR1cm4gdGhpcy5kYXRhSGFuZGxlci5zZXJpYWxpemUoZSl9c3RhdGljIF9jcmVhdGVEb2N1bWVudChlKXtyZXR1cm4gZVsiL3hkcDp4ZHAiXT9PYmplY3QudmFsdWVzKGUpLmpvaW4oIiIpOmVbInhkcDp4ZHAiXX1zdGF0aWMgZ2V0UmljaFRleHRBc0h0bWwoZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7bGV0IHQ9bmV3IFhGQVBhcnNlcihYaHRtbE5hbWVzcGFjZSwhMCkucGFyc2UoZSk7aWYoIVsiYm9keSIsInhodG1sIl0uaW5jbHVkZXModFtVb10pKXtjb25zdCBlPVhodG1sTmFtZXNwYWNlLmJvZHkoe30pO2VbSmldKHQpO3Q9ZX1jb25zdCBhPXRbb2xdKCk7aWYoIWEuc3VjY2VzcylyZXR1cm4gbnVsbDtjb25zdHtodG1sOm59PWEse2F0dHJpYnV0ZXM6c309bjtpZihzKXtzLmNsYXNzJiYocy5jbGFzcz1zLmNsYXNzLmZpbHRlcihlPT4hZS5zdGFydHNXaXRoKCJ4ZmEiKSkpO3MuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDpuLHN0cjp0W3JsXSgpfX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19Y2xhc3MgQW5ub3RhdGlvbkZhY3Rvcnl7c3RhdGljIGNyZWF0ZUdsb2JhbHMoZSl7cmV0dXJuIFByb21pc2UuYWxsKFtlLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksZS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksZS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpLGUuZW5zdXJlQ2F0YWxvZygiYmFzZVVybCIpLGUuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKSxlLmVuc3VyZUNhdGFsb2coImdsb2JhbENvbG9yU3BhY2VDYWNoZSIpXSkudGhlbigoW3QsYSxuLHMscixpXSk9Pih7cGRmTWFuYWdlcjplLGFjcm9Gb3JtOnQgaW5zdGFuY2VvZiBEaWN0P3Q6RGljdC5lbXB0eSx4ZmFEYXRhc2V0czphLHN0cnVjdFRyZWVSb290Om4sYmFzZVVybDpzLGF0dGFjaG1lbnRzOnIsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOml9KSxlPT57d2FybihgY3JlYXRlR2xvYmFsczogIiR7ZX0iLmApO3JldHVybiBudWxsfSl9c3RhdGljIGFzeW5jIGNyZWF0ZShlLHQsYSxuLHMscixpLG8pe2NvbnN0IGw9cz9hd2FpdCB0aGlzLl9nZXRQYWdlSW5kZXgoZSx0LGEucGRmTWFuYWdlcik6bnVsbDtyZXR1cm4gYS5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfY3JlYXRlIixbZSx0LGEsbixzLHIsaSxsLG9dKX1zdGF0aWMgX2NyZWF0ZShlLHQsYSxuLHM9ITEscj1udWxsLGk9bnVsbCxvPW51bGwsbD1udWxsKXtjb25zdCBmPWUuZmV0Y2hJZlJlZih0KTtpZighKGYgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47bGV0IGM9Zi5nZXQoIlN1YnR5cGUiKTtjPWMgaW5zdGFuY2VvZiBOYW1lP2MubmFtZTpudWxsO2lmKGkmJiFpLmhhcyhSW2M/LnRvVXBwZXJDYXNlKCldKSlyZXR1cm4gbnVsbDtjb25zdHthY3JvRm9ybTpoLHBkZk1hbmFnZXI6dX09YSxtPXQgaW5zdGFuY2VvZiBSZWY/dC50b1N0cmluZygpOmBhbm5vdF8ke24uY3JlYXRlT2JqSWQoKX1gLHA9e3hyZWY6ZSxyZWY6dCxkaWN0OmYsc3VidHlwZTpjLGlkOm0sYW5ub3RhdGlvbkdsb2JhbHM6YSxjb2xsZWN0RmllbGRzOnMsb3JwaGFuRmllbGRzOnIsbmVlZEFwcGVhcmFuY2VzOiFzJiYhMD09PWguZ2V0KCJOZWVkQXBwZWFyYW5jZXMiKSxwYWdlSW5kZXg6byxldmFsdWF0b3JPcHRpb25zOnUuZXZhbHVhdG9yT3B0aW9ucyxwYWdlUmVmOmx9O3N3aXRjaChjKXtjYXNlIkxpbmsiOnJldHVybiBuZXcgTGlua0Fubm90YXRpb24ocCk7Y2FzZSJUZXh0IjpyZXR1cm4gbmV3IFRleHRBbm5vdGF0aW9uKHApO2Nhc2UiV2lkZ2V0IjpsZXQgZT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmYsa2V5OiJGVCJ9KTtlPWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24ocCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24ocCl9d2FybihgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKHApO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKHApO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihwKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKHApO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKHApO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKHApO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24ocCk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihwKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKHApO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKHApO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24ocCk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24ocCk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24ocCk7ZGVmYXVsdDpzfHx3YXJuKGM/YFVuaW1wbGVtZW50ZWQgYW5ub3RhdGlvbiB0eXBlICIke2N9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgYW5ub3RhdGlvbi5gOiJBbm5vdGF0aW9uIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIC9TdWJ0eXBlLiIpO3JldHVybiBuZXcgQW5ub3RhdGlvbihwKX19c3RhdGljIGFzeW5jIF9nZXRQYWdlSW5kZXgoZSx0LGEpe3RyeXtjb25zdCBuPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXJldHVybi0xO2NvbnN0IHM9bi5nZXRSYXcoIlAiKTtpZihzIGluc3RhbmNlb2YgUmVmKXRyeXtyZXR1cm4gYXdhaXQgYS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFtzXSl9Y2F0Y2goZSl7aW5mbyhgX2dldFBhZ2VJbmRleCAtLSBub3QgYSB2YWxpZCBwYWdlIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKG4uaGFzKCJLaWRzIikpcmV0dXJuLTE7Y29uc3Qgcj1hd2FpdCBhLmVuc3VyZURvYygibnVtUGFnZXMiKTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjb25zdCBuPWF3YWl0IGEuZ2V0UGFnZShlKSxzPWF3YWl0IGEuZW5zdXJlKG4sImFubm90YXRpb25zIik7Zm9yKGNvbnN0IGEgb2YgcylpZihhIGluc3RhbmNlb2YgUmVmJiZpc1JlZnNFcXVhbChhLHQpKXJldHVybiBlfX1jYXRjaChlKXt3YXJuKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCl9cmV0dXJuLTF9c3RhdGljIGdlbmVyYXRlSW1hZ2VzKGUsdCxhKXtpZighYSl7d2FybigiZ2VuZXJhdGVJbWFnZXM6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBjYW5ub3Qgc2F2ZSBvciBwcmludCBzb21lIGFubm90YXRpb25zIHdpdGggaW1hZ2VzLiIpO3JldHVybiBudWxsfWxldCBuO2Zvcihjb25zdHtiaXRtYXBJZDphLGJpdG1hcDpzfW9mIGUpaWYocyl7bnx8PW5ldyBNYXA7bi5zZXQoYSxTdGFtcEFubm90YXRpb24uY3JlYXRlSW1hZ2Uocyx0KSl9cmV0dXJuIG59c3RhdGljIGFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsYSxuLHMscil7bGV0IGk7Y29uc3Qgbz1bXSx7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6bH09ZS5vcHRpb25zO2Zvcihjb25zdCBmIG9mIG4paWYoIWYuZGVsZXRlZClzd2l0Y2goZi5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBnOmlmKCFpKXtjb25zdCBlPW5ldyBEaWN0KHQpO2Uuc2V0SWZOYW1lKCJCYXNlRm9udCIsIkhlbHZldGljYSIpO2Uuc2V0SWZOYW1lKCJUeXBlIiwiRm9udCIpO2Uuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiVHlwZTEiKTtlLnNldElmTmFtZSgiRW5jb2RpbmciLCJXaW5BbnNpRW5jb2RpbmciKTtpPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7ci5wdXQoaSx7ZGF0YTplfSl9by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHQsZixyLHtldmFsdWF0b3I6ZSx0YXNrOmEsYmFzZUZvbnRSZWY6aX0pKTticmVhaztjYXNlIGI6Zi5xdWFkUG9pbnRzP28ucHVzaChIaWdobGlnaHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24odCxmLHIpKTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHQsZixyKSk7YnJlYWs7Y2FzZSBqOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24odCxmLHIpKTticmVhaztjYXNlIHc6Y29uc3Qgbj1sP2F3YWl0KHM/LmdldChmLmJpdG1hcElkKSk6bnVsbDtpZihuPy5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTphfT1uO2lmKGEpe2NvbnN0IG49dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnB1dChuLHtkYXRhOmF9KTtlLmRpY3Quc2V0KCJTTWFzayIsbil9Y29uc3Qgcz1uLmltYWdlUmVmPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7ci5wdXQocyx7ZGF0YTplfSk7bi5pbWFnZVN0cmVhbT1uLnNtYXNrU3RyZWFtPW51bGx9by5wdXNoKFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHQsZixyLHtpbWFnZTpufSkpO2JyZWFrO2Nhc2UgazpvLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24odCxmLHIse30pKX1yZXR1cm57YW5ub3RhdGlvbnM6KGF3YWl0IFByb21pc2UuYWxsKG8pKS5mbGF0KCl9fXN0YXRpYyBhc3luYyBwcmludE5ld0Fubm90YXRpb25zKGUsdCxhLG4scyl7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3R7b3B0aW9uczpyLHhyZWY6aX09dCxvPVtdO2Zvcihjb25zdCBsIG9mIG4paWYoIWwuZGVsZXRlZClzd2l0Y2gobC5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBnOm8ucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsaSxsLHtldmFsdWF0b3I6dCx0YXNrOmEsZXZhbHVhdG9yT3B0aW9uczpyfSkpO2JyZWFrO2Nhc2UgYjpsLnF1YWRQb2ludHM/by5wdXNoKEhpZ2hsaWdodEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsaSxsLHtldmFsdWF0b3JPcHRpb25zOnJ9KSk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsaSxsLHtldmFsdWF0b3JPcHRpb25zOnJ9KSk7YnJlYWs7Y2FzZSBqOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLGksbCx7ZXZhbHVhdG9yT3B0aW9uczpyfSkpO2JyZWFrO2Nhc2Ugdzpjb25zdCBuPXIuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ/YXdhaXQocz8uZ2V0KGwuYml0bWFwSWQpKTpudWxsO2lmKG4/LmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PW47dCYmZS5kaWN0LnNldCgiU01hc2siLHQpO24uaW1hZ2VSZWY9bmV3IEpwZWdTdHJlYW0oZSxlLmxlbmd0aCk7bi5pbWFnZVN0cmVhbT1uLnNtYXNrU3RyZWFtPW51bGx9by5wdXNoKFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2ltYWdlOm4sZXZhbHVhdG9yT3B0aW9uczpyfSkpO2JyZWFrO2Nhc2UgazpvLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLGksbCx7ZXZhbHVhdG9yT3B0aW9uczpyfSkpfXJldHVybiBQcm9taXNlLmFsbChvKX19ZnVuY3Rpb24gZ2V0UmdiQ29sb3IoZSx0PW5ldyBVaW50OENsYW1wZWRBcnJheSgzKSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQ7Y29uc3QgYT10fHxuZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAxOkNvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7Y2FzZSAzOkNvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSXRlbShlLDAsYSwwKTtyZXR1cm4gYTtjYXNlIDQ6Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSXRlbShlLDAsYSwwKTtyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB0fX1mdW5jdGlvbiBnZXRQZGZDb2xvckFycmF5KGUsdD1udWxsKXtyZXR1cm4gZSYmQXJyYXkuZnJvbShlLGU9PmUvMjU1KXx8dH1mdW5jdGlvbiBnZXRRdWFkUG9pbnRzKGUsdCl7Y29uc3QgYT1lLmdldEFycmF5KCJRdWFkUG9pbnRzIik7aWYoIWlzTnVtYmVyQXJyYXkoYSxudWxsKXx8MD09PWEubGVuZ3RofHxhLmxlbmd0aCU4PjApcmV0dXJuIG51bGw7Y29uc3Qgbj1uZXcgRmxvYXQzMkFycmF5KGEubGVuZ3RoKTtmb3IobGV0IGU9MCxzPWEubGVuZ3RoO2U8cztlKz04KXtjb25zdFtzLHIsaSxvLGwsZixjLGhdPWEuc2xpY2UoZSxlKzgpLHU9TWF0aC5taW4ocyxpLGwsYyksbT1NYXRoLm1heChzLGksbCxjKSxwPU1hdGgubWluKHIsbyxmLGgpLGQ9TWF0aC5tYXgocixvLGYsaCk7aWYobnVsbCE9PXQmJih1PHRbMF18fG0+dFsyXXx8cDx0WzFdfHxkPnRbM10pKXJldHVybiBudWxsO24uc2V0KFt1LGQsbSxkLHUscCxtLHBdLGUpfXJldHVybiBufWZ1bmN0aW9uIGdldFRyYW5zZm9ybU1hdHJpeChlLHQsbil7Y29uc3Qgcz1hLnNsaWNlKCk7VXRpbC5heGlhbEFsaWduZWRCb3VuZGluZ0JveCh0LG4scyk7Y29uc3RbcixpLG8sbF09cztpZihyPT09b3x8aT09PWwpcmV0dXJuWzEsMCwwLDEsZVswXSxlWzFdXTtjb25zdCBmPShlWzJdLWVbMF0pLyhvLXIpLGM9KGVbM10tZVsxXSkvKGwtaSk7cmV0dXJuW2YsMCwwLGMsZVswXS1yKmYsZVsxXS1pKmNdfWNsYXNzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7Y29uc3R7YW5ub3RhdGlvbkdsb2JhbHM6dCxkaWN0OmEsb3JwaGFuRmllbGRzOm4scmVmOnMsc3VidHlwZTpyLHhyZWY6aX09ZSxvPW4/LmdldChzKTtvJiZhLnNldCgiUGFyZW50IixvKTt0aGlzLnNldFRpdGxlKGEuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHMoYS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShhLmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKGEuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKGEuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcihhLmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUoYSk7dGhpcy5zZXRBcHBlYXJhbmNlKGEpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KGEpO2NvbnN0IGw9YS5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGwpO3RoaXMuc2V0Um90YXRpb24obCxhKTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBmPSEhKHRoaXMuZmxhZ3MmTCksYz0hISh0aGlzLmZsYWdzJlUpO3RoaXMuZGF0YT17YW5ub3RhdGlvblR5cGU6UltyPy50b1VwcGVyQ2FzZSgpXSxhbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOnIsaGFzT3duQ2FudmFzOiExLG5vUm90YXRlOiEhKHRoaXMuZmxhZ3MmXyksbm9IVE1MOmYmJmMsaXNFZGl0YWJsZTohMSxzdHJ1Y3RQYXJlbnQ6LTF9O2lmKHQuc3RydWN0VHJlZVJvb3Qpe2xldCBuPWEuZ2V0KCJTdHJ1Y3RQYXJlbnQiKTt0aGlzLmRhdGEuc3RydWN0UGFyZW50PW49TnVtYmVyLmlzSW50ZWdlcihuKSYmbj49MD9uOi0xO3Quc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixuKX1pZihlLmNvbGxlY3RGaWVsZHMpe2NvbnN0IHQ9YS5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPVtdO2Zvcihjb25zdCBhIG9mIHQpYSBpbnN0YW5jZW9mIFJlZiYmZS5wdXNoKGEudG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhpLGEsaWUpO3RoaXMuZGF0YS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKGEpO3RoaXMuZGF0YS5wYWdlSW5kZXg9ZS5wYWdlSW5kZXh9Y29uc3QgaD1hLmdldCgiSVQiKTtoIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5pdD1oLm5hbWUpO3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1fYnVpbGRGbGFncyhlLHQpe2xldHtmbGFnczphfT10aGlzO2lmKHZvaWQgMD09PWUpe2lmKHZvaWQgMD09PXQpcmV0dXJuO3JldHVybiB0P2EmfkU6YSZ+TnxFfWlmKGUpe2F8PUU7cmV0dXJuIHQ/YSZ+enxOOmEmfk58en1hJj1+KE58eik7cmV0dXJuIHQ/YSZ+RTphfEV9X2lzVmlld2FibGUoZSl7cmV0dXJuIXRoaXMuX2hhc0ZsYWcoZSxNKSYmIXRoaXMuX2hhc0ZsYWcoZSx6KX1faXNQcmludGFibGUoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcoZSxFKSYmIXRoaXMuX2hhc0ZsYWcoZSxOKSYmIXRoaXMuX2hhc0ZsYWcoZSxNKX1tdXN0QmVWaWV3ZWQoZSx0KXtjb25zdCBhPWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ZpZXc7cmV0dXJuIHZvaWQgMCE9PWE/IWE6dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxOKX1tdXN0QmVQcmludGVkKGUpe2NvbnN0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/Lm5vUHJpbnQ7cmV0dXJuIHZvaWQgMCE9PXQ/IXQ6dGhpcy5wcmludGFibGV9bXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoZSx0PW51bGwpe3JldHVybiBlPyF0aGlzLmRhdGEuaXNFZGl0YWJsZTohdD8uaGFzKHRoaXMuZGF0YS5pZCl9Z2V0IHZpZXdhYmxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmKDA9PT10aGlzLmZsYWdzfHx0aGlzLl9pc1ZpZXdhYmxlKHRoaXMuZmxhZ3MpKX1nZXQgcHJpbnRhYmxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmKDAhPT10aGlzLmZsYWdzJiZ0aGlzLl9pc1ByaW50YWJsZSh0aGlzLmZsYWdzKSl9X3BhcnNlU3RyaW5nSGVscGVyKGUpe2NvbnN0IHQ9InN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOiIiO3JldHVybntzdHI6dCxkaXI6dCYmInJ0bCI9PT1iaWRpKHQpLmRpcj8icnRsIjoibHRyIn19c2V0RGVmYXVsdEFwcGVhcmFuY2UoZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOmF9PWUsbj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEQSJ9KXx8YS5hY3JvRm9ybS5nZXQoIkRBIik7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9InN0cmluZyI9PXR5cGVvZiBuP246IiI7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1wYXJzZURlZmF1bHRBcHBlYXJhbmNlKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlKX1zZXRUaXRsZShlKXt0aGlzLl90aXRsZT10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRDb250ZW50cyhlKXt0aGlzLl9jb250ZW50cz10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRNb2RpZmljYXRpb25EYXRlKGUpe3RoaXMubW9kaWZpY2F0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfXNldEZsYWdzKGUpe3RoaXMuZmxhZ3M9TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wP2U6MDt0aGlzLmZsYWdzJk0mJiJBbm5vdGF0aW9uIiE9PXRoaXMuY29uc3RydWN0b3IubmFtZSYmKHRoaXMuZmxhZ3NePU0pfWhhc0ZsYWcoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxlKX1zZXRSZWN0YW5nbGUoZSl7dGhpcy5yZWN0YW5nbGU9bG9va3VwTm9ybWFsUmVjdChlLFswLDAsMCwwXSl9c2V0Q29sb3IoZSl7dGhpcy5jb2xvcj1nZXRSZ2JDb2xvcihlKX1zZXRMaW5lRW5kaW5ncyhlKXt0aGlzLmxpbmVFbmRpbmdzPVsiTm9uZSIsIk5vbmUiXTtpZihBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgpZm9yKGxldCB0PTA7dDwyO3QrKyl7Y29uc3QgYT1lW3RdO2lmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTm9uZSI6Y29udGludWU7Y2FzZSJTcXVhcmUiOmNhc2UiQ2lyY2xlIjpjYXNlIkRpYW1vbmQiOmNhc2UiT3BlbkFycm93IjpjYXNlIkNsb3NlZEFycm93IjpjYXNlIkJ1dHQiOmNhc2UiUk9wZW5BcnJvdyI6Y2FzZSJSQ2xvc2VkQXJyb3ciOmNhc2UiU2xhc2giOnRoaXMubGluZUVuZGluZ3NbdF09YS5uYW1lO2NvbnRpbnVlfXdhcm4oYElnbm9yaW5nIGludmFsaWQgbGluZUVuZGluZzogJHthfWApfX1zZXRSb3RhdGlvbihlLHQpe3RoaXMucm90YXRpb249MDtsZXQgYT1lIGluc3RhbmNlb2YgRGljdD9lLmdldCgiUiIpfHwwOnQuZ2V0KCJSb3RhdGUiKXx8MDtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpJiYwIT09YSl7YSU9MzYwO2E8MCYmKGErPTM2MCk7YSU5MD09MCYmKHRoaXMucm90YXRpb249YSl9fXNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoZSl7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe3RoaXMuYm9yZGVyQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkMiKSxudWxsKTt0aGlzLmJhY2tncm91bmRDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCRyIpLG51bGwpfWVsc2UgdGhpcy5ib3JkZXJDb2xvcj10aGlzLmJhY2tncm91bmRDb2xvcj1udWxsfXNldEJvcmRlclN0eWxlKGUpe3RoaXMuYm9yZGVyU3R5bGU9bmV3IEFubm90YXRpb25Cb3JkZXJTdHlsZTtpZihlIGluc3RhbmNlb2YgRGljdClpZihlLmhhcygiQlMiKSl7Y29uc3QgdD1lLmdldCgiQlMiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiVHlwZSIpO2lmKCFlfHxpc05hbWUoZSwiQm9yZGVyIikpe3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodC5nZXQoIlciKSx0aGlzLnJlY3RhbmdsZSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRTdHlsZSh0LmdldCgiUyIpKTt0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0LmdldEFycmF5KCJEIikpfX19ZWxzZSBpZihlLmhhcygiQm9yZGVyIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiQm9yZGVyIik7aWYoQXJyYXkuaXNBcnJheSh0KSlpZih0Lmxlbmd0aD49Myl7dGhpcy5ib3JkZXJTdHlsZS5zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKHRbMF0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0VmVydGljYWxDb3JuZXJSYWRpdXModFsxXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0WzJdLHRoaXMucmVjdGFuZ2xlKTs0PT09dC5sZW5ndGgmJnRoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHRbM10sITApfWVsc2UgMD09PXQubGVuZ3RoJiZ0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKDApfWVsc2UgdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1zZXRBcHBlYXJhbmNlKGUpe3RoaXMuYXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9ZS5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9dC5nZXQoIk4iKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7dGhpcy5hcHBlYXJhbmNlPWE7cmV0dXJufWlmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBuPWUuZ2V0KCJBUyIpO2lmKCEobiBpbnN0YW5jZW9mIE5hbWUmJmEuaGFzKG4ubmFtZSkpKXJldHVybjtjb25zdCBzPWEuZ2V0KG4ubmFtZSk7cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0aGlzLmFwcGVhcmFuY2U9cyl9c2V0T3B0aW9uYWxDb250ZW50KGUpe3RoaXMub2M9bnVsbDtjb25zdCB0PWUuZ2V0KCJPQyIpO3QgaW5zdGFuY2VvZiBOYW1lP3dhcm4oInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBEaWN0JiYodGhpcy5vYz10KX1hc3luYyBsb2FkUmVzb3VyY2VzKGUsdCl7Y29uc3QgYT1hd2FpdCB0LmRpY3QuZ2V0QXN5bmMoIlJlc291cmNlcyIpO2EmJmF3YWl0IE9iamVjdExvYWRlci5sb2FkKGEsZSxhLnhyZWYpO3JldHVybiBhfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsYSxuKXtjb25zdHtoYXNPd25DYW52YXM6cyxpZDpyLHJlY3Q6aX09dGhpcy5kYXRhO2xldCBvPXRoaXMuYXBwZWFyYW5jZTtjb25zdCBmPSEhKHMmJmEmbCk7aWYoZiYmKDA9PT10aGlzLndpZHRofHwwPT09dGhpcy5oZWlnaHQpKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSExO3JldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWlmKCFvKXtpZighZilyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfTtvPW5ldyBTdHJpbmdTdHJlYW0oIiIpO28uZGljdD1uZXcgRGljdH1jb25zdCBjPW8uZGljdCxoPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhkYSxvKSx1PWxvb2t1cFJlY3QoYy5nZXRBcnJheSgiQkJveCIpLFswLDAsMSwxXSksbT1sb29rdXBNYXRyaXgoYy5nZXRBcnJheSgiTWF0cml4IikscGEpLHA9Z2V0VHJhbnNmb3JtTWF0cml4KGksdSxtKSxkPW5ldyBPcGVyYXRvckxpc3Q7bGV0IGc7dGhpcy5vYyYmKGc9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1nJiZkLmFkZE9wKHh0LFsiT0MiLGddKTtkLmFkZE9wKEJ0LFtyLGkscCxtLGZdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOm8sdGFzazp0LHJlc291cmNlczpoLG9wZXJhdG9yTGlzdDpkLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2QuYWRkT3AoRHQsW10pO3ZvaWQgMCE9PWcmJmQuYWRkT3AoQ3QsW10pO3RoaXMucmVzZXQoKTtyZXR1cm57b3BMaXN0OmQsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOmZ9fWFzeW5jIHNhdmUoZSx0LGEsbil7cmV0dXJuIG51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hMX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGEpe2lmKCF0aGlzLmFwcGVhcmFuY2UpcmV0dXJuO2NvbnN0IG49YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKGdhLHRoaXMuYXBwZWFyYW5jZSkscz1bXSxyPVtdO2xldCBpPW51bGw7Y29uc3Qgbz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcylpZih2b2lkIDAhPT10LnN0cil7aXx8PXQudHJhbnNmb3JtLnNsaWNlKC0yKTtyLnB1c2godC5zdHIpO2lmKHQuaGFzRU9MKXtzLnB1c2goci5qb2luKCIiKS50cmltRW5kKCkpO3IubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczpuLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGtlZXBXaGl0ZVNwYWNlOiEwLHNpbms6byx2aWV3Qm94OmF9KTt0aGlzLnJlc2V0KCk7ci5sZW5ndGgmJnMucHVzaChyLmpvaW4oIiIpLnRyaW1FbmQoKSk7aWYocy5sZW5ndGg+MXx8c1swXSl7Y29uc3QgZT10aGlzLmFwcGVhcmFuY2UuZGljdCx0PWxvb2t1cFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpLGE9bG9va3VwTWF0cml4KGUuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQoaSx0LGEpO3RoaXMuZGF0YS50ZXh0Q29udGVudD1zfX1fdHJhbnNmb3JtUG9pbnQoZSx0LGEpe2NvbnN0e3JlY3Q6bn09dGhpcy5kYXRhO3R8fD1bMCwwLDEsMV07YXx8PVsxLDAsMCwxLDAsMF07Y29uc3Qgcz1nZXRUcmFuc2Zvcm1NYXRyaXgobix0LGEpO3NbNF0tPW5bMF07c1s1XS09blsxXTtjb25zdCByPWUuc2xpY2UoKTtVdGlsLmFwcGx5VHJhbnNmb3JtKHIscyk7VXRpbC5hcHBseVRyYW5zZm9ybShyLGEpO3JldHVybiByfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJuIHRoaXMuZGF0YS5raWRJZHM/e2lkOnRoaXMuZGF0YS5pZCxhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3IsdHlwZToiIixraWRJZHM6dGhpcy5kYXRhLmtpZElkcyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgscm90YXRpb246dGhpcy5yb3RhdGlvbn06bnVsbH1yZXNldCgpe2Zvcihjb25zdCBlIG9mIHRoaXMuX3N0cmVhbXMpZS5yZXNldCgpfV9jb25zdHJ1Y3RGaWVsZE5hbWUoZSl7aWYoIWUuaGFzKCJUIikmJiFlLmhhcygiUGFyZW50Iikpe3dhcm4oIlVua25vd24gZmllbGQgbmFtZSwgZmFsbGluZyBiYWNrIHRvIGVtcHR5IGZpZWxkIG5hbWUuIik7cmV0dXJuIiJ9aWYoIWUuaGFzKCJQYXJlbnQiKSlyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIlQiKSk7Y29uc3QgdD1bXTtlLmhhcygiVCIpJiZ0LnVuc2hpZnQoc3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIlQiKSkpO2xldCBhPWU7Y29uc3Qgbj1uZXcgUmVmU2V0O2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2Zvcig7YS5oYXMoIlBhcmVudCIpOyl7YT1hLmdldCgiUGFyZW50Iik7aWYoIShhIGluc3RhbmNlb2YgRGljdCl8fGEub2JqSWQmJm4uaGFzKGEub2JqSWQpKWJyZWFrO2Eub2JqSWQmJm4ucHV0KGEub2JqSWQpO2EuaGFzKCJUIikmJnQudW5zaGlmdChzdHJpbmdUb1BERlN0cmluZyhhLmdldCgiVCIpKSl9cmV0dXJuIHQuam9pbigiLiIpfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXX1nZXQgaGVpZ2h0KCl7cmV0dXJuIHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdfX1jbGFzcyBBbm5vdGF0aW9uQm9yZGVyU3R5bGV7d2lkdGg9MTtyYXdXaWR0aD0xO3N0eWxlPXRlO2Rhc2hBcnJheT1bM107aG9yaXpvbnRhbENvcm5lclJhZGl1cz0wO3ZlcnRpY2FsQ29ybmVyUmFkaXVzPTA7c2V0V2lkdGgoZSx0PVswLDAsMCwwXSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe3RoaXMucmF3V2lkdGg9ZTtjb25zdCBhPSh0WzJdLXRbMF0pLzIsbj0odFszXS10WzFdKS8yO2lmKGE+MCYmbj4wJiYoZT5hfHxlPm4pKXt3YXJuKGBBbm5vdGF0aW9uQm9yZGVyU3R5bGUuc2V0V2lkdGggLSBpZ25vcmluZyB3aWR0aDogJHtlfWApO2U9MX19dGhpcy53aWR0aD1lfX1zZXRTdHlsZShlKXtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlMiOnRoaXMuc3R5bGU9dGU7YnJlYWs7Y2FzZSJEIjp0aGlzLnN0eWxlPWFlO2JyZWFrO2Nhc2UiQiI6dGhpcy5zdHlsZT1uZTticmVhaztjYXNlIkkiOnRoaXMuc3R5bGU9c2U7YnJlYWs7Y2FzZSJVIjp0aGlzLnN0eWxlPXJlfX1zZXREYXNoQXJyYXkoZSx0PSExKXtpZihBcnJheS5pc0FycmF5KGUpKXtsZXQgYT0hMCxuPSEwO2Zvcihjb25zdCB0IG9mIGUpe2lmKCEoK3Q+PTApKXthPSExO2JyZWFrfXQ+MCYmKG49ITEpfWlmKDA9PT1lLmxlbmd0aHx8YSYmIW4pe3RoaXMuZGFzaEFycmF5PWU7dCYmdGhpcy5zZXRTdHlsZShOYW1lLmdldCgiRCIpKX1lbHNlIHRoaXMud2lkdGg9MH1lbHNlIGUmJih0aGlzLndpZHRoPTApfXNldEhvcml6b250YWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz1lKX1zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz1lKX19Y2xhc3MgTWFya3VwQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJJUlQiKSl7Y29uc3QgZT10LmdldFJhdygiSVJUIik7dGhpcy5kYXRhLmluUmVwbHlUbz1lIGluc3RhbmNlb2YgUmVmP2UudG9TdHJpbmcoKTpudWxsO2NvbnN0IGE9dC5nZXQoIlJUIik7dGhpcy5kYXRhLnJlcGx5VHlwZT1hIGluc3RhbmNlb2YgTmFtZT9hLm5hbWU6RH1sZXQgYT1udWxsO2lmKHRoaXMuZGF0YS5yZXBseVR5cGU9PT1IKXtjb25zdCBlPXQuZ2V0KCJJUlQiKTt0aGlzLnNldFRpdGxlKGUuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKGUuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7aWYoZS5oYXMoIkNyZWF0aW9uRGF0ZSIpKXt0aGlzLnNldENyZWF0aW9uRGF0ZShlLmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEuY3JlYXRpb25EYXRlPW51bGw7aWYoZS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGUuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7YT1lLmdldFJhdygiUG9wdXAiKTtpZihlLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGUuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbH1lbHNle3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENyZWF0aW9uRGF0ZSh0LmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGU7YT10LmdldFJhdygiUG9wdXAiKTt0LmhhcygiQyIpfHwodGhpcy5kYXRhLmNvbG9yPW51bGwpfXRoaXMuZGF0YS5wb3B1cFJlZj1hIGluc3RhbmNlb2YgUmVmP2EudG9TdHJpbmcoKTpudWxsO3QuaGFzKCJSQyIpJiYodGhpcy5kYXRhLnJpY2hUZXh0PVhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwodC5nZXQoIlJDIikpKX1zZXRDcmVhdGlvbkRhdGUoZSl7dGhpcy5jcmVhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZSxleHRyYTphLHN0cm9rZUNvbG9yOm4sZmlsbENvbG9yOnMsYmxlbmRNb2RlOnIsc3Ryb2tlQWxwaGE6aSxmaWxsQWxwaGE6byxwb2ludHNDYWxsYmFjazpsfSl7Y29uc3QgZj10aGlzLmRhdGEucmVjdD10LnNsaWNlKCksYz1bInEiXTthJiZjLnB1c2goYSk7biYmYy5wdXNoKGAke25bMF19ICR7blsxXX0gJHtuWzJdfSBSR2ApO3MmJmMucHVzaChgJHtzWzBdfSAke3NbMV19ICR7c1syXX0gcmdgKTtjb25zdCBoPXRoaXMuZGF0YS5xdWFkUG9pbnRzfHxGbG9hdDMyQXJyYXkuZnJvbShbdGhpcy5yZWN0YW5nbGVbMF0sdGhpcy5yZWN0YW5nbGVbM10sdGhpcy5yZWN0YW5nbGVbMl0sdGhpcy5yZWN0YW5nbGVbM10sdGhpcy5yZWN0YW5nbGVbMF0sdGhpcy5yZWN0YW5nbGVbMV0sdGhpcy5yZWN0YW5nbGVbMl0sdGhpcy5yZWN0YW5nbGVbMV1dKTtmb3IobGV0IGU9MCx0PWgubGVuZ3RoO2U8dDtlKz04KXtjb25zdCB0PWwoYyxoLnN1YmFycmF5KGUsZSs4KSk7VXRpbC5yZWN0Qm91bmRpbmdCb3goLi4udCxmKX1jLnB1c2goIlEiKTtjb25zdCB1PW5ldyBEaWN0KGUpLG09bmV3IERpY3QoZSk7bS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7Y29uc3QgcD1uZXcgU3RyaW5nU3RyZWFtKGMuam9pbigiICIpKTtwLmRpY3Q9bTt1LnNldCgiRm0wIixwKTtjb25zdCBkPW5ldyBEaWN0KGUpO3ImJmQuc2V0SWZOYW1lKCJCTSIscik7ZC5zZXRJZk51bWJlcigiQ0EiLGkpO2Quc2V0SWZOdW1iZXIoImNhIixvKTtjb25zdCBnPW5ldyBEaWN0KGUpO2cuc2V0KCJHUzAiLGQpO2NvbnN0IGI9bmV3IERpY3QoZSk7Yi5zZXQoIkV4dEdTdGF0ZSIsZyk7Yi5zZXQoIlhPYmplY3QiLHUpO2NvbnN0IHc9bmV3IERpY3QoZSk7dy5zZXQoIlJlc291cmNlcyIsYik7dy5zZXQoIkJCb3giLGYpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iKTt0aGlzLmFwcGVhcmFuY2UuZGljdD13O3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UscCl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LGEsbil7Y29uc3Qgcz10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkscj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLG4pO2xldCBpO2lmKHIpe2NvbnN0IG49ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtpPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOm59KTthLnB1dChuLHtkYXRhOnJ9KX1lbHNlIGk9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7fSk7TnVtYmVyLmlzSW50ZWdlcih0LnBhcmVudFRyZWVJZCkmJmkuc2V0KCJTdHJ1Y3RQYXJlbnQiLHQucGFyZW50VHJlZUlkKTthLnB1dChzLHtkYXRhOml9KTtjb25zdCBvPXtyZWY6c30se3BvcHVwOmx9PXQ7aWYobCl7aWYobC5kZWxldGVkKXtpLmRlbGV0ZSgiUG9wdXAiKTtpLmRlbGV0ZSgiQ29udGVudHMiKTtpLmRlbGV0ZSgiUkMiKTtyZXR1cm4gb31jb25zdCB0PWwucmVmfHw9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtsLnBhcmVudD1zO2NvbnN0IG49UG9wdXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0RpY3QobCxlKTthLnB1dCh0LHtkYXRhOm59KTtpLnNldElmRGVmaW5lZCgiQ29udGVudHMiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUobC5jb250ZW50cykpO2kuc2V0KCJQb3B1cCIsdCk7cmV0dXJuW28se3JlZjp0fV19cmV0dXJuIG99c3RhdGljIGFzeW5jIGNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHQsYSxuKXtjb25zdCBzPWF3YWl0IHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShhLHQsbikscj10aGlzLmNyZWF0ZU5ld0RpY3QoYSx0LHM/e2FwOnN9Ont9KSxpPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7ZGljdDpyLHhyZWY6dCxhbm5vdGF0aW9uR2xvYmFsczplLGV2YWx1YXRvck9wdGlvbnM6bi5ldmFsdWF0b3JPcHRpb25zfSk7YS5yZWYmJihpLnJlZj1pLnJlZlRvUmVwbGFjZT1hLnJlZik7cmV0dXJuIGl9fWNsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmEsYW5ub3RhdGlvbkdsb2JhbHM6bn09ZSxzPXRoaXMuZGF0YTt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ZS5uZWVkQXBwZWFyYW5jZXM7dm9pZCAwPT09cy5maWVsZE5hbWUmJihzLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCkpO3ZvaWQgMD09PXMuYWN0aW9ucyYmKHMuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhhLHQsaWUpKTtsZXQgcj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO3MuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUocik7Y29uc3QgaT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTtzLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShpKTtpZih2b2lkIDA9PT1yJiZuLnhmYURhdGFzZXRzKXtjb25zdCBlPXRoaXMuX3RpdGxlLnN0cjtpZihlKXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7cy5maWVsZFZhbHVlPXI9bi54ZmFEYXRhc2V0cy5nZXRWYWx1ZShlKX19dm9pZCAwPT09ciYmbnVsbCE9PXMuZGVmYXVsdEZpZWxkVmFsdWUmJihzLmZpZWxkVmFsdWU9cy5kZWZhdWx0RmllbGRWYWx1ZSk7cy5hbHRlcm5hdGl2ZVRleHQ9c3RyaW5nVG9QREZTdHJpbmcodC5nZXQoIlRVIil8fCIiKTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO3MuaGFzQXBwZWFyYW5jZXx8PXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmdm9pZCAwIT09cy5maWVsZFZhbHVlJiZudWxsIT09cy5maWVsZFZhbHVlO2NvbnN0IG89Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRlQifSk7cy5maWVsZFR5cGU9byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7Y29uc3QgbD1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEUiJ9KSxmPW4uYWNyb0Zvcm0uZ2V0KCJEUiIpLGM9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7dGhpcy5fZmllbGRSZXNvdXJjZXM9e2xvY2FsUmVzb3VyY2VzOmwsYWNyb0Zvcm1SZXNvdXJjZXM6ZixhcHBlYXJhbmNlUmVzb3VyY2VzOmMsbWVyZ2VkUmVzb3VyY2VzOkRpY3QubWVyZ2Uoe3hyZWY6YSxkaWN0QXJyYXk6W2wsYyxmXSxtZXJnZVN1YkRpY3RzOiEwfSl9O3MuZmllbGRGbGFncz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGZiJ9KTsoIU51bWJlci5pc0ludGVnZXIocy5maWVsZEZsYWdzKXx8cy5maWVsZEZsYWdzPDApJiYocy5maWVsZEZsYWdzPTApO3MucGFzc3dvcmQ9dGhpcy5oYXNGaWVsZEZsYWcoRyk7cy5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhYKTtzLnJlcXVpcmVkPXRoaXMuaGFzRmllbGRGbGFnKFcpO3MuaGlkZGVuPXRoaXMuX2hhc0ZsYWcocy5hbm5vdGF0aW9uRmxhZ3MsTil8fHRoaXMuX2hhc0ZsYWcocy5hbm5vdGF0aW9uRmxhZ3Mseil9X2RlY29kZUZvcm1WYWx1ZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubWFwKGU9PnRoaXMuX2RlY29kZUZvcm1WYWx1ZShlKSkuZmlsdGVyKGU9Pm51bGwhPT1lKTtyZXR1cm4gdC5sZW5ndGg+MD90Om51bGx9cmV0dXJuIGUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbH1oYXNGaWVsZEZsYWcoZSl7cmV0dXJuISEodGhpcy5kYXRhLmZpZWxkRmxhZ3MmZSl9X2lzVmlld2FibGUoZSl7cmV0dXJuITB9bXVzdEJlVmlld2VkKGUsdCl7cmV0dXJuIHQ/dGhpcy52aWV3YWJsZTpzdXBlci5tdXN0QmVWaWV3ZWQoZSx0KSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyx6KX1nZXRSb3RhdGlvbk1hdHJpeChlKXtsZXQgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ucm90YXRpb247dm9pZCAwPT09dCYmKHQ9dGhpcy5yb3RhdGlvbik7cmV0dXJuIDA9PT10P3BhOmdldFJvdGF0aW9uTWF0cml4KHQsdGhpcy53aWR0aCx0aGlzLmhlaWdodCl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IGE9MD09PXR8fDE4MD09PXQ/YDAgMCAke3RoaXMud2lkdGh9ICR7dGhpcy5oZWlnaHR9IHJlYDpgMCAwICR7dGhpcy5oZWlnaHR9ICR7dGhpcy53aWR0aH0gcmVgO2xldCBuPSIiO3RoaXMuYmFja2dyb3VuZENvbG9yJiYobj1gJHtnZXRQZGZDb2xvcih0aGlzLmJhY2tncm91bmRDb2xvciwhMCl9ICR7YX0gZiBgKTtpZih0aGlzLmJvcmRlckNvbG9yKXtuKz1gJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofHwxfSB3ICR7Z2V0UGRmQ29sb3IodGhpcy5ib3JkZXJDb2xvciwhMSl9ICR7YX0gUyBgfXJldHVybiBufWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsYSxuKXtpZihhJmgmJiEodGhpcyBpbnN0YW5jZW9mIFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24pJiYhdGhpcy5kYXRhLm5vSFRNTCYmIXRoaXMuZGF0YS5oYXNPd25DYW52YXMpcmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMCxzZXBhcmF0ZUNhbnZhczohMX07aWYoIXRoaXMuX2hhc1RleHQpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxuKTtjb25zdCBzPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LGEsbik7aWYodGhpcy5hcHBlYXJhbmNlJiZudWxsPT09cylyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4pO2NvbnN0IHI9bmV3IE9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6cixzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGk9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmYSZsKSxvPVswLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF0sZj1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsbyxbMSwwLDAsMSwwLDBdKTtsZXQgYzt0aGlzLm9jJiYoYz1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWMmJnIuYWRkT3AoeHQsWyJPQyIsY10pO3IuYWRkT3AoQnQsW3RoaXMuZGF0YS5pZCx0aGlzLmRhdGEucmVjdCxmLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgobiksaV0pO2NvbnN0IHU9bmV3IFN0cmluZ1N0cmVhbShzKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnUsdGFzazp0LHJlc291cmNlczp0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMsb3BlcmF0b3JMaXN0OnJ9KTtyLmFkZE9wKER0LFtdKTt2b2lkIDAhPT1jJiZyLmFkZE9wKEN0LFtdKTtyZXR1cm57b3BMaXN0OnIsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOml9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgRGljdChudWxsKTtlJiZ0LnNldCgiUiIsZSk7dC5zZXRJZkFycmF5KCJCQyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJvcmRlckNvbG9yKSk7dC5zZXRJZkFycmF5KCJCRyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJhY2tncm91bmRDb2xvcikpO3JldHVybiB0LnNpemU+MD90Om51bGx9YW1lbmRTYXZlZERpY3QoZSx0KXt9c2V0VmFsdWUoZSx0LGEsbil7Y29uc3R7ZGljdDpzLHJlZjpyfT1mdW5jdGlvbiBnZXRQYXJlbnRUb1VwZGF0ZShlLHQsYSl7Y29uc3Qgbj1uZXcgUmVmU2V0LHM9ZSxyPXtkaWN0Om51bGwscmVmOm51bGx9O2Zvcig7ZSBpbnN0YW5jZW9mIERpY3QmJiFuLmhhcyh0KTspe24ucHV0KHQpO2lmKGUuaGFzKCJUIikpYnJlYWs7aWYoISgodD1lLmdldFJhdygiUGFyZW50IikpaW5zdGFuY2VvZiBSZWYpKXJldHVybiByO2U9YS5mZXRjaCh0KX1pZihlIGluc3RhbmNlb2YgRGljdCYmZSE9PXMpe3IuZGljdD1lO3IucmVmPXR9cmV0dXJuIHJ9KGUsdGhpcy5yZWYsYSk7aWYocyl7aWYoIW4uaGFzKHIpKXtjb25zdCBlPXMuY2xvbmUoKTtlLnNldCgiViIsdCk7bi5wdXQocix7ZGF0YTplfSk7cmV0dXJuIGV9fWVsc2UgZS5zZXQoIlYiLHQpO3JldHVybiBudWxsfWFzeW5jIHNhdmUoZSx0LGEsbil7Y29uc3Qgcz1hPy5nZXQodGhpcy5kYXRhLmlkKSxyPXRoaXMuX2J1aWxkRmxhZ3Mocz8ubm9WaWV3LHM/Lm5vUHJpbnQpO2xldCBpPXM/LnZhbHVlLG89cz8ucm90YXRpb247aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlfHx2b2lkIDA9PT1pKXtpZighdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZ2b2lkIDA9PT1vJiZ2b2lkIDA9PT1yKXJldHVybjtpfHw9dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09byYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShpKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJmlzQXJyYXlFcXVhbChpLHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmdm9pZCAwPT09cilyZXR1cm47dm9pZCAwPT09byYmKG89dGhpcy5yb3RhdGlvbik7bGV0IGw9bnVsbDtpZighdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXtsPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LGMsYSk7aWYobnVsbD09PWwmJnZvaWQgMD09PXIpcmV0dXJufWxldCBmPSExO2lmKGw/Lm5lZWRBcHBlYXJhbmNlcyl7Zj0hMDtsPW51bGx9Y29uc3R7eHJlZjpofT1lLHU9aC5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKHUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgbT1uZXcgRGljdChoKTtmb3IoY29uc3RbZSx0XW9mIHUuZ2V0UmF3RW50cmllcygpKSJBUCIhPT1lJiZtLnNldChlLHQpO2lmKHZvaWQgMCE9PXIpe20uc2V0KCJGIixyKTtpZihudWxsPT09bCYmIWYpe2NvbnN0IGU9dS5nZXRSYXcoIkFQIik7ZSYmbS5zZXQoIkFQIixlKX19Y29uc3QgcD17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOml9LGQ9dGhpcy5zZXRWYWx1ZShtLEFycmF5LmlzQXJyYXkoaSk/aS5tYXAoc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRSk6c3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShpKSxoLG4pO3RoaXMuYW1lbmRTYXZlZERpY3QoYSxkfHxtKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChvKTtnJiZtLnNldCgiTUsiLGcpO24ucHV0KHRoaXMucmVmLHtkYXRhOm0seGZhOnAsbmVlZEFwcGVhcmFuY2VzOmZ9KTtpZihudWxsIT09bCl7Y29uc3QgZT1oLmdldE5ld1RlbXBvcmFyeVJlZigpLHQ9bmV3IERpY3QoaCk7bS5zZXQoIkFQIix0KTt0LnNldCgiTiIsZSk7Y29uc3Qgcz10aGlzLl9nZXRTYXZlRmllbGRSZXNvdXJjZXMoaCkscj1uZXcgU3RyaW5nU3RyZWFtKGwpLGk9ci5kaWN0PW5ldyBEaWN0KGgpO2kuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2kuc2V0KCJSZXNvdXJjZXMiLHMpO2NvbnN0IGY9byUxODA9PTA/WzAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0XTpbMCwwLHRoaXMuaGVpZ2h0LHRoaXMud2lkdGhdO2kuc2V0KCJCQm94IixmKTtjb25zdCBjPXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSk7YyE9PXBhJiZpLnNldCgiTWF0cml4IixjKTtuLnB1dChlLHtkYXRhOnIseGZhOm51bGwsbmVlZEFwcGVhcmFuY2VzOiExfSl9bS5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApfWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxhLG4pe2lmKHRoaXMuZGF0YS5wYXNzd29yZClyZXR1cm4gbnVsbDtjb25zdCBzPW4/LmdldCh0aGlzLmRhdGEuaWQpO2xldCByLG87aWYocyl7cj1zLmZvcm1hdHRlZFZhbHVlfHxzLnZhbHVlO289cy5yb3RhdGlvbn1pZih2b2lkIDA9PT1vJiZ2b2lkIDA9PT1yJiYhdGhpcy5fbmVlZEFwcGVhcmFuY2VzJiYoIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQXx8dGhpcy5hcHBlYXJhbmNlKSlyZXR1cm4gbnVsbDtjb25zdCBsPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKG4pO2lmKHZvaWQgMD09PXIpe3I9dGhpcy5kYXRhLmZpZWxkVmFsdWU7aWYoIXIpcmV0dXJuYC9UeCBCTUMgcSAke2x9USBFTUNgfUFycmF5LmlzQXJyYXkocikmJjE9PT1yLmxlbmd0aCYmKHI9clswXSk7YXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgciwiRXhwZWN0ZWQgYHZhbHVlYCB0byBiZSBhIHN0cmluZy4iKTtyPXIudHJpbUVuZCgpO2lmKHRoaXMuZGF0YS5jb21ibyl7Y29uc3QgZT10aGlzLmRhdGEub3B0aW9ucy5maW5kKCh7ZXhwb3J0VmFsdWU6ZX0pPT5yPT09ZSk7cj1lPy5kaXNwbGF5VmFsdWV8fHJ9aWYoIiI9PT1yKXJldHVybmAvVHggQk1DIHEgJHtsfVEgRU1DYDt2b2lkIDA9PT1vJiYobz10aGlzLnJvdGF0aW9uKTtsZXQgZixoPS0xO2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe2Y9ci5zcGxpdCgvXHJcbj98XG4vKS5tYXAoZT0+ZS5ub3JtYWxpemUoIk5GQyIpKTtoPWYubGVuZ3RofWVsc2UgZj1bci5yZXBsYWNlKC9cclxuP3xcbi8sIiIpLm5vcm1hbGl6ZSgiTkZDIildO2xldHt3aWR0aDp1LGhlaWdodDptfT10aGlzOzkwIT09byYmMjcwIT09b3x8KFt1LG1dPVttLHVdKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8KHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0iL0hlbHZldGljYSAwIFRmIDAgZyIpKTtsZXQgcCxkLGcsYj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2NvbnN0IHc9W107bGV0IGo9ITE7Zm9yKGNvbnN0IGUgb2YgZil7Y29uc3QgdD1iLmVuY29kZVN0cmluZyhlKTt0Lmxlbmd0aD4xJiYoaj0hMCk7dy5wdXNoKHQuam9pbigiIikpfWlmKGomJmEmYylyZXR1cm57bmVlZEFwcGVhcmFuY2VzOiEwfTtpZihqJiZ0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgYT10aGlzLmRhdGEuY29tYj8ibW9ub3NwYWNlIjoic2Fucy1zZXJpZiIsbj1uZXcgRmFrZVVuaWNvZGVGb250KGUueHJlZixhKSxzPW4uY3JlYXRlRm9udFJlc291cmNlcyhmLmpvaW4oIiIpKSxpPXMuZ2V0UmF3KCJGb250Iik7aWYodGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLmhhcygiRm9udCIpKXtjb25zdCBlPXRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5nZXQoIkZvbnQiKTtmb3IoY29uc3RbdCxhXW9mIGkuZ2V0UmF3RW50cmllcygpKWUuc2V0KHQsYSl9ZWxzZSB0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuc2V0KCJGb250IixpKTtjb25zdCBvPW4uZm9udE5hbWUubmFtZTtiPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx7Zm9udE5hbWU6byxmb250U2l6ZTowfSxzKTtmb3IobGV0IGU9MCx0PXcubGVuZ3RoO2U8dDtlKyspd1tlXT1zdHJpbmdUb1VURjE2U3RyaW5nKGZbZV0pO2NvbnN0IGw9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemU9MDt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnROYW1lPW87W3AsZCxnXT10aGlzLl9jb21wdXRlRm9udFNpemUobS0yLHUtNCxyLGIsaCk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1sfWVsc2V7dGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR8fHdhcm4oIl9nZXRBcHBlYXJhbmNlOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIik7W3AsZCxnXT10aGlzLl9jb21wdXRlRm9udFNpemUobS0yLHUtNCxyLGIsaCl9bGV0IGs9Yi5kZXNjZW50O2s9aXNOYU4oayk/aSpnOk1hdGgubWF4KGkqZyxNYXRoLmFicyhrKSpkKTtjb25zdCB5PU1hdGgubWluKE1hdGguZmxvb3IoKG0tZCkvMiksMSkscT10aGlzLmRhdGEudGV4dEFsaWdubWVudDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXJldHVybiB0aGlzLl9nZXRNdWx0aWxpbmVBcHBlYXJhbmNlKHAsdyxiLGQsdSxtLHEsMix5LGssZyxuKTtpZih0aGlzLmRhdGEuY29tYilyZXR1cm4gdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UocCxiLHdbMF0sZCx1LG0sMix5LGssZyxxLCJydGwiPT09YmlkaShmWzBdKS5kaXIsbik7Y29uc3Qgdj15K2s7aWYoMD09PXF8fHE+MilyZXR1cm5gL1R4IEJNQyBxICR7bH1CVCBgK3ArYCAxIDAgMCAxICR7bnVtYmVyVG9TdHJpbmcoMil9ICR7bnVtYmVyVG9TdHJpbmcodil9IFRtICgke2VzY2FwZVN0cmluZyh3WzBdKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7bH1CVCBgK3ArYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQod1swXSxiLGQsdSxxLHtzaGlmdDowfSwyLHYpfSBFVCBRIEVNQ2B9c3RhdGljIGFzeW5jIF9nZXRGb250RGF0YShlLHQsYSxuKXtjb25zdCBzPW5ldyBPcGVyYXRvckxpc3Qscj17Zm9udDpudWxsLGNsb25lKCl7cmV0dXJuIHRoaXN9fSx7Zm9udE5hbWU6aSxmb250U2l6ZTpvfT1hO2F3YWl0IGUuaGFuZGxlU2V0Rm9udChuLFtpJiZOYW1lLmdldChpKSxvXSxudWxsLHMsdCxyLG51bGwpO3JldHVybiByLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiBNYXRoLnN1bVByZWNpc2UodC5jaGFyc1RvR2x5cGhzKGUpLm1hcChlPT5lLndpZHRoKSkvMWUzfV9jb21wdXRlRm9udFNpemUoZSx0LGEsbixyKXtsZXR7Zm9udFNpemU6aX09dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSxvPShpfHwxMikqcyxsPU1hdGgucm91bmQoZS9vKTtpZighaSl7Y29uc3Qgcm91bmRXaXRoVHdvRGlnaXRzPWU9Pk1hdGguZmxvb3IoMTAwKmUpLzEwMDtpZigtMT09PXIpe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dFdpZHRoKGEsbik7aT1yb3VuZFdpdGhUd29EaWdpdHMoTWF0aC5taW4oZS9zLHQvcikpO2w9MX1lbHNle2NvbnN0IGY9YS5zcGxpdCgvXHJcbj98XG4vKSxjPVtdO2Zvcihjb25zdCBlIG9mIGYpe2NvbnN0IHQ9bi5lbmNvZGVTdHJpbmcoZSkuam9pbigiIiksYT1uLmNoYXJzVG9HbHlwaHModCkscz1uLmdldENoYXJQb3NpdGlvbnModCk7Yy5wdXNoKHtsaW5lOnQsZ2x5cGhzOmEscG9zaXRpb25zOnN9KX1jb25zdCBpc1Rvb0JpZz1hPT57bGV0IHM9MDtmb3IoY29uc3QgciBvZiBjKXtzKz10aGlzLl9zcGxpdExpbmUobnVsbCxuLGEsdCxyKS5sZW5ndGgqYTtpZihzPmUpcmV0dXJuITB9cmV0dXJuITF9O2w9TWF0aC5tYXgobCxyKTtmb3IoOzspe289ZS9sO2k9cm91bmRXaXRoVHdvRGlnaXRzKG8vcyk7aWYoIWlzVG9vQmlnKGkpKWJyZWFrO2wrK319Y29uc3R7Zm9udE5hbWU6Zixmb250Q29sb3I6Y309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT1mdW5jdGlvbiBjcmVhdGVEZWZhdWx0QXBwZWFyYW5jZSh7Zm9udFNpemU6ZSxmb250TmFtZTp0LGZvbnRDb2xvcjphfSl7cmV0dXJuYC8ke2VzY2FwZVBERk5hbWUodCl9ICR7ZX0gVGYgJHtnZXRQZGZDb2xvcihhLCEwKX1gfSh7Zm9udFNpemU6aSxmb250TmFtZTpmLGZvbnRDb2xvcjpjfSl9cmV0dXJuW3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlLGksZS9sXX1fcmVuZGVyVGV4dChlLHQsYSxuLHMscixpLG8pe2xldCBsO2lmKDE9PT1zKXtsPShuLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmEpLzJ9ZWxzZSBpZigyPT09cyl7bD1uLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmEtaX1lbHNlIGw9aTtjb25zdCBmPW51bWJlclRvU3RyaW5nKGwtci5zaGlmdCk7ci5zaGlmdD1sO3JldHVybmAke2Z9ICR7bz1udW1iZXJUb1N0cmluZyhvKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKGUpfSkgVGpgfV9nZXRTYXZlRmllbGRSZXNvdXJjZXMoZSl7Y29uc3R7bG9jYWxSZXNvdXJjZXM6dCxhcHBlYXJhbmNlUmVzb3VyY2VzOmEsYWNyb0Zvcm1SZXNvdXJjZXM6bn09dGhpcy5fZmllbGRSZXNvdXJjZXMscz10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPy5mb250TmFtZTtpZighcylyZXR1cm4gdHx8RGljdC5lbXB0eTtmb3IoY29uc3QgZSBvZlt0LGFdKWlmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PWUuZ2V0KCJGb250Iik7aWYodCBpbnN0YW5jZW9mIERpY3QmJnQuaGFzKHMpKXJldHVybiBlfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBhPW4uZ2V0KCJGb250Iik7aWYoYSBpbnN0YW5jZW9mIERpY3QmJmEuaGFzKHMpKXtjb25zdCBuPW5ldyBEaWN0KGUpO24uc2V0KHMsYS5nZXRSYXcocykpO2NvbnN0IHI9bmV3IERpY3QoZSk7ci5zZXQoIkZvbnQiLG4pO3JldHVybiBEaWN0Lm1lcmdlKHt4cmVmOmUsZGljdEFycmF5OltyLHRdLG1lcmdlU3ViRGljdHM6ITB9KX19cmV0dXJuIHR8fERpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTtpZih0LmhhcygiUE1EIikpe3RoaXMuZmxhZ3N8PU47dGhpcy5kYXRhLmhpZGRlbj0hMDt3YXJuKCJCYXJjb2RlcyBhcmUgbm90IHN1cHBvcnRlZCIpfXRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLnJlYWRPbmx5JiYhdGhpcy5kYXRhLm5vSFRNTDt0aGlzLl9oYXNUZXh0PSEwOyJzdHJpbmciIT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT0iIik7bGV0IGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiUSJ9KTsoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MHx8YT4yKSYmKGE9bnVsbCk7dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ9YTtsZXQgbj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJNYXhMZW4ifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHxuPDApJiYobj0wKTt0aGlzLmRhdGEubWF4TGVuPW47dGhpcy5kYXRhLm11bHRpTGluZT10aGlzLmhhc0ZpZWxkRmxhZyhLKTt0aGlzLmRhdGEuY29tYj10aGlzLmhhc0ZpZWxkRmxhZyhlZSkmJiF0aGlzLmRhdGEubXVsdGlMaW5lJiYhdGhpcy5kYXRhLnBhc3N3b3JkJiYhdGhpcy5oYXNGaWVsZEZsYWcoSikmJjAhPT10aGlzLmRhdGEubWF4TGVuO3RoaXMuZGF0YS5kb05vdFNjcm9sbD10aGlzLmhhc0ZpZWxkRmxhZyhaKTtjb25zdHtkYXRhOnthY3Rpb25zOnN9fT10aGlzO2lmKCFzKXJldHVybjtjb25zdCByPS9eQUYoRGF0ZXxUaW1lKV8oPzpLZXlzdHJva2V8Rm9ybWF0KSg/OkV4KT9cKFsnIl0/KFteJyJdKylbJyJdP1wpOyQvO2xldCBpPSExOygxPT09cy5Gb3JtYXQ/Lmxlbmd0aCYmMT09PXMuS2V5c3Ryb2tlPy5sZW5ndGgmJnIudGVzdChzLkZvcm1hdFswXSkmJnIudGVzdChzLktleXN0cm9rZVswXSl8fDA9PT1zLkZvcm1hdD8ubGVuZ3RoJiYxPT09cy5LZXlzdHJva2U/Lmxlbmd0aCYmci50ZXN0KHMuS2V5c3Ryb2tlWzBdKXx8MD09PXMuS2V5c3Ryb2tlPy5sZW5ndGgmJjE9PT1zLkZvcm1hdD8ubGVuZ3RoJiZyLnRlc3Qocy5Gb3JtYXRbMF0pKSYmKGk9ITApO2NvbnN0IG89W107cy5Gb3JtYXQmJm8ucHVzaCguLi5zLkZvcm1hdCk7cy5LZXlzdHJva2UmJm8ucHVzaCguLi5zLktleXN0cm9rZSk7aWYoaSl7ZGVsZXRlIHMuS2V5c3Ryb2tlO3MuRm9ybWF0PW99Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD1lLm1hdGNoKHIpO2lmKCF0KWNvbnRpbnVlO2NvbnN0IGE9IkRhdGUiPT09dFsxXTtsZXQgbj10WzJdO2NvbnN0IHM9cGFyc2VJbnQobiwxMCk7aXNOYU4ocyl8fE1hdGguZmxvb3IoTWF0aC5sb2cxMChzKSkrMSE9PXRbMl0ubGVuZ3RofHwobj0oYT9SaTpIaSlbc10/P24pO3RoaXMuZGF0YS5kYXRldGltZUZvcm1hdD1uO2lmKCFpKWJyZWFrO2lmKGEpe2lmKC9ISHxNTXxzc3xoLy50ZXN0KG4pKXt0aGlzLmRhdGEuZGF0ZXRpbWVUeXBlPSJkYXRldGltZS1sb2NhbCI7dGhpcy5kYXRhLnRpbWVTdGVwPS9zcy8udGVzdChuKT8xOjYwfWVsc2UgdGhpcy5kYXRhLmRhdGV0aW1lVHlwZT0iZGF0ZSI7YnJlYWt9dGhpcy5kYXRhLmRhdGV0aW1lVHlwZT0idGltZSI7dGhpcy5kYXRhLnRpbWVTdGVwPS9zcy8udGVzdChuKT8xOjYwO2JyZWFrfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hIXRoaXMuYXBwZWFyYW5jZSYmIXRoaXMuX25lZWRBcHBlYXJhbmNlc31fZ2V0Q29tYkFwcGVhcmFuY2UoZSx0LGEsbixzLHIsaSxvLGwsZixjLGgsdSl7Y29uc3QgbT1zL3RoaXMuZGF0YS5tYXhMZW4scD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyh1KSxkPVtdLGc9dC5nZXRDaGFyUG9zaXRpb25zKGEpO2Zvcihjb25zdFtlLHRdb2YgZylkLnB1c2goYCgke2VzY2FwZVN0cmluZyhhLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7aCYmZC5yZXZlcnNlKCk7Y29uc3QgYj1tKmcubGVuZ3RoO2xldCB3PWk7MT09PWM/dys9TWF0aC5mbG9vcigocy1iKS8oMiptKSkqbToyPT09YyYmKHcrPXMtYik7Y29uc3Qgaj1kLmpvaW4oYCAke251bWJlclRvU3RyaW5nKG0pfSAwIFRkIGApO3JldHVybmAvVHggQk1DIHEgJHtwfUJUIGArZStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZyh3KX0gJHtudW1iZXJUb1N0cmluZyhvK2wpfSBUbSAke2p9IEVUIFEgRU1DYH1fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShlLHQsYSxuLHMscixpLG8sbCxmLGMsaCl7Y29uc3QgdT1bXSxtPXMtMipvLHA9e3NoaWZ0OjB9O2ZvcihsZXQgZT0wLHI9dC5sZW5ndGg7ZTxyO2UrKyl7Y29uc3Qgcj10W2VdLGg9dGhpcy5fc3BsaXRMaW5lKHIsYSxuLG0pO2ZvcihsZXQgdD0wLHI9aC5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1oW3RdLG09MD09PWUmJjA9PT10Py1sLShjLWYpOi1jO3UucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHIsYSxuLHMsaSxwLG8sbSkpfX1jb25zdCBkPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGgpLGc9dS5qb2luKCJcbiIpO3JldHVybmAvVHggQk1DIHEgJHtkfUJUIGArZStgIDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKHIpfSBUbSAke2d9IEVUIFEgRU1DYH1fc3BsaXRMaW5lKGUsdCxhLG4scz17fSl7ZT1zLmxpbmV8fGU7Y29uc3Qgcj1zLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKHIubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBpPXMucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1hLzFlMyxsPVtdO2xldCBmPS0xLGM9LTEsaD0tMSx1PTAsbT0wO2ZvcihsZXQgdD0wLGE9ci5sZW5ndGg7dDxhO3QrKyl7Y29uc3RbYSxzXT1pW3RdLHA9clt0XSxkPXAud2lkdGgqbztpZigiICI9PT1wLnVuaWNvZGUpaWYobStkPm4pe2wucHVzaChlLnN1YnN0cmluZyh1LGEpKTt1PWE7bT1kO2Y9LTE7aD0tMX1lbHNle20rPWQ7Zj1hO2M9cztoPXR9ZWxzZSBpZihtK2Q+bilpZigtMSE9PWYpe2wucHVzaChlLnN1YnN0cmluZyh1LGMpKTt1PWM7dD1oKzE7Zj0tMTttPTB9ZWxzZXtsLnB1c2goZS5zdWJzdHJpbmcodSxhKSk7dT1hO209ZH1lbHNlIG0rPWR9dTxlLmxlbmd0aCYmbC5wdXNoKGUuc3Vic3RyaW5nKHUsZS5sZW5ndGgpKTtyZXR1cm4gbH1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGEpe2F3YWl0IHN1cGVyLmV4dHJhY3RUZXh0Q29udGVudChlLHQsYSk7Y29uc3Qgbj10aGlzLmRhdGEudGV4dENvbnRlbnQ7aWYoIW4pcmV0dXJuO2NvbnN0IHM9bi5qb2luKCJcbiIpO2lmKHM9PT10aGlzLmRhdGEuZmllbGRWYWx1ZSlyZXR1cm47Y29uc3Qgcj1zLnJlcGxhY2VBbGwoLyhbLiorP14ke30oKXxbXF1cXF0pfChccyspL2csKGUsdCk9PnQ/YFxcJHt0fWA6IlxccysiKTtuZXcgUmVnRXhwKGBeXFxzKiR7cn1cXHMqJGApLnRlc3QodGhpcy5kYXRhLmZpZWxkVmFsdWUpJiYodGhpcy5kYXRhLnRleHRDb250ZW50PXRoaXMuZGF0YS5maWVsZFZhbHVlLnNwbGl0KCJcbiIpKX1nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWUsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZXx8IiIsbXVsdGlsaW5lOnRoaXMuZGF0YS5tdWx0aUxpbmUscGFzc3dvcmQ6dGhpcy5kYXRhLnBhc3N3b3JkLGNoYXJMaW1pdDp0aGlzLmRhdGEubWF4TGVuLGNvbWI6dGhpcy5kYXRhLmNvbWIsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixkYXRldGltZUZvcm1hdDp0aGlzLmRhdGEuZGF0ZXRpbWVGb3JtYXQsaGFzRGF0ZXRpbWVIVE1MOiEhdGhpcy5kYXRhLmRhdGV0aW1lVHlwZSx0eXBlOiJ0ZXh0In19fWNsYXNzIEJ1dHRvbldpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9bnVsbDt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PXRoaXMuaGFzRmllbGRGbGFnKFYpLGE9dGhpcy5oYXNGaWVsZEZsYWcoJCk7dGhpcy5kYXRhLmNoZWNrQm94PSF0JiYhYTt0aGlzLmRhdGEucmFkaW9CdXR0b249dCYmIWE7dGhpcy5kYXRhLnB1c2hCdXR0b249YTt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hMTtpZih0aGlzLmRhdGEuY2hlY2tCb3gpdGhpcy5fcHJvY2Vzc0NoZWNrQm94KGUpO2Vsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXRoaXMuX3Byb2Nlc3NSYWRpb0J1dHRvbihlKTtlbHNlIGlmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5fcHJvY2Vzc1B1c2hCdXR0b24oZSl9ZWxzZSB3YXJuKCJJbnZhbGlkIGZpZWxkIGZsYWdzIGZvciBidXR0b24gd2lkZ2V0IGFubm90YXRpb24iKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbil7aWYodGhpcy5kYXRhLnB1c2hCdXR0b24pcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSwhMSxuKTtsZXQgcz1udWxsLHI9bnVsbDtpZihuKXtjb25zdCBlPW4uZ2V0KHRoaXMuZGF0YS5pZCk7cz1lP2UudmFsdWU6bnVsbDtyPWU/ZS5yb3RhdGlvbjpudWxsfWlmKG51bGw9PT1zJiZ0aGlzLmFwcGVhcmFuY2UpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxuKTtudWxsPT1zJiYocz10aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWUpO2NvbnN0IGk9cz90aGlzLmNoZWNrZWRBcHBlYXJhbmNlOnRoaXMudW5jaGVja2VkQXBwZWFyYW5jZTtpZihpKXtjb25zdCBzPXRoaXMuYXBwZWFyYW5jZSxvPWxvb2t1cE1hdHJpeChpLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpLHBhKTtyJiZpLmRpY3Quc2V0KCJNYXRyaXgiLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgobikpO3RoaXMuYXBwZWFyYW5jZT1pO2NvbnN0IGw9c3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4pO3RoaXMuYXBwZWFyYW5jZT1zO2kuZGljdC5zZXQoIk1hdHJpeCIsbyk7cmV0dXJuIGx9cmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19YXN5bmMgc2F2ZShlLHQsYSxuKXt0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fc2F2ZUNoZWNrYm94KGUsdCxhLG4pOnRoaXMuZGF0YS5yYWRpb0J1dHRvbiYmdGhpcy5fc2F2ZVJhZGlvQnV0dG9uKGUsdCxhLG4pfWFzeW5jIF9zYXZlQ2hlY2tib3goZSx0LGEsbil7aWYoIWEpcmV0dXJuO2NvbnN0IHM9YS5nZXQodGhpcy5kYXRhLmlkKSxyPXRoaXMuX2J1aWxkRmxhZ3Mocz8ubm9WaWV3LHM/Lm5vUHJpbnQpO2xldCBpPXM/LnJvdGF0aW9uLG89cz8udmFsdWU7aWYodm9pZCAwPT09aSYmdm9pZCAwPT09cil7aWYodm9pZCAwPT09bylyZXR1cm47aWYodGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU9PT1vKXJldHVybn1sZXQgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2w9bC5jbG9uZSgpO3ZvaWQgMD09PWkmJihpPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PW8mJihvPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBmPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6bz90aGlzLmRhdGEuZXhwb3J0VmFsdWU6IiJ9LGM9TmFtZS5nZXQobz90aGlzLmRhdGEuZXhwb3J0VmFsdWU6Ik9mZiIpO3RoaXMuc2V0VmFsdWUobCxjLGUueHJlZixuKTtsLnNldCgiQVMiLGMpO2wuc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt2b2lkIDAhPT1yJiZsLnNldCgiRiIscik7Y29uc3QgaD10aGlzLl9nZXRNS0RpY3QoaSk7aCYmbC5zZXQoIk1LIixoKTtuLnB1dCh0aGlzLnJlZix7ZGF0YTpsLHhmYTpmLG5lZWRBcHBlYXJhbmNlczohMX0pfWFzeW5jIF9zYXZlUmFkaW9CdXR0b24oZSx0LGEsbil7aWYoIWEpcmV0dXJuO2NvbnN0IHM9YS5nZXQodGhpcy5kYXRhLmlkKSxyPXRoaXMuX2J1aWxkRmxhZ3Mocz8ubm9WaWV3LHM/Lm5vUHJpbnQpO2xldCBpPXM/LnJvdGF0aW9uLG89cz8udmFsdWU7aWYodm9pZCAwPT09aSYmdm9pZCAwPT09cil7aWYodm9pZCAwPT09bylyZXR1cm47aWYodGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWU9PT1vKXJldHVybn1sZXQgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2w9bC5jbG9uZSgpO3ZvaWQgMD09PW8mJihvPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt2b2lkIDA9PT1pJiYoaT10aGlzLnJvdGF0aW9uKTtjb25zdCBmPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6bz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LGM9TmFtZS5nZXQobz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6Ik9mZiIpO28mJnRoaXMuc2V0VmFsdWUobCxjLGUueHJlZixuKTtsLnNldCgiQVMiLGMpO2wuc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt2b2lkIDAhPT1yJiZsLnNldCgiRiIscik7Y29uc3QgaD10aGlzLl9nZXRNS0RpY3QoaSk7aCYmbC5zZXQoIk1LIixoKTtuLnB1dCh0aGlzLnJlZix7ZGF0YTpsLHhmYTpmLG5lZWRBcHBlYXJhbmNlczohMX0pfV9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSx0KXtjb25zdHt3aWR0aDphLGhlaWdodDpufT10aGlzLHM9WzAsMCxhLG5dLHI9LjgqTWF0aC5taW4oYSxuKTtsZXQgaSxvO2lmKCJjaGVjayI9PT10KXtpPXt3aWR0aDouNzU1KnIsaGVpZ2h0Oi43MDUqcn07bz0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtpPXt3aWR0aDouNzkxKnIsaGVpZ2h0Oi43MDUqcn07bz0ibCJ9ZWxzZSB1bnJlYWNoYWJsZShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCBsPWBxIEJUIC9QZGZKc1phRGIgJHtyfSBUZiAwIGcgJHtudW1iZXJUb1N0cmluZygoYS1pLndpZHRoKS8yKX0gJHtudW1iZXJUb1N0cmluZygobi1pLmhlaWdodCkvMil9IFRkICgke299KSBUaiBFVCBRYCxmPW5ldyBEaWN0KGUueHJlZik7Zi5zZXQoIkZvcm1UeXBlIiwxKTtmLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtmLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtmLnNldCgiQkJveCIscyk7Zi5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsMCwwXSk7Zi5zZXQoIkxlbmd0aCIsbC5sZW5ndGgpO2NvbnN0IGM9bmV3IERpY3QoZS54cmVmKSxoPW5ldyBEaWN0KGUueHJlZik7aC5zZXQoIlBkZkpzWmFEYiIsdGhpcy5mYWxsYmFja0ZvbnREaWN0KTtjLnNldCgiRm9udCIsaCk7Zi5zZXQoIlJlc291cmNlcyIsYyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKGwpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2UuZGljdD1mO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKX1fcHJvY2Vzc0NoZWNrQm94KGUpe2NvbnN0IHQ9ZS5kaWN0LmdldCgiQVAiKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgYT10LmdldCgiTiIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBuPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlLmRpY3QuZ2V0KCJBUyIpKTsic3RyaW5nIj09dHlwZW9mIG4mJih0aGlzLmRhdGEuZmllbGRWYWx1ZT1uKTtjb25zdCBzPW51bGwhPT10aGlzLmRhdGEuZmllbGRWYWx1ZSYmIk9mZiIhPT10aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZToiWWVzIixyPVsuLi5hLmdldEtleXMoKV07aWYoMD09PXIubGVuZ3RoKXIucHVzaCgiT2ZmIixzKTtlbHNlIGlmKDE9PT1yLmxlbmd0aCkiT2ZmIj09PXJbMF0/ci5wdXNoKHMpOnIudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihyLmluY2x1ZGVzKHMpKXtyLmxlbmd0aD0wO3IucHVzaCgiT2ZmIixzKX1lbHNle2NvbnN0IGU9ci5maW5kKGU9PiJPZmYiIT09ZSk7ci5sZW5ndGg9MDtyLnB1c2goIk9mZiIsZSl9ci5pbmNsdWRlcyh0aGlzLmRhdGEuZmllbGRWYWx1ZSl8fCh0aGlzLmRhdGEuZmllbGRWYWx1ZT0iT2ZmIik7dGhpcy5kYXRhLmV4cG9ydFZhbHVlPXJbMV07Y29uc3QgaT1hLmdldCh0aGlzLmRhdGEuZXhwb3J0VmFsdWUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9aSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/aTpudWxsO2NvbnN0IG89YS5nZXQoIk9mZiIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1vIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9vOm51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImNoZWNrIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT1udWxsO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUGFyZW50Iik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe3RoaXMucGFyZW50PWUuZGljdC5nZXRSYXcoIlBhcmVudCIpO2NvbnN0IGE9dC5nZXQoIlYiKTthIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShhKSl9Y29uc3QgYT1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBuPWEuZ2V0KCJOIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2Zvcihjb25zdCBlIG9mIG4uZ2V0S2V5cygpKWlmKCJPZmYiIT09ZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPWU7YnJlYWt9Y29uc3Qgcz1uLmdldCh0aGlzLmRhdGEuYnV0dG9uVmFsdWUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/czpudWxsO2NvbnN0IHI9bi5nZXQoIk9mZiIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1yIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9yOm51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImRpc2MiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUHVzaEJ1dHRvbihlKXtjb25zdHtkaWN0OnQsYW5ub3RhdGlvbkdsb2JhbHM6YX09ZTtpZih0LmhhcygiQSIpfHx0LmhhcygiQUEiKXx8dGhpcy5kYXRhLmFsdGVybmF0aXZlVGV4dCl7dGhpcy5kYXRhLmlzVG9vbHRpcE9ubHk9IXQuaGFzKCJBIikmJiF0LmhhcygiQUEiKTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OnQscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOmEuYmFzZVVybCxkb2NBdHRhY2htZW50czphLmF0dGFjaG1lbnRzfSl9ZWxzZSB3YXJuKCJQdXNoIGJ1dHRvbnMgd2l0aG91dCBhY3Rpb24gZGljdGlvbmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkIil9Z2V0RmllbGRPYmplY3QoKXtsZXQgZSx0PSJidXR0b24iO2lmKHRoaXMuZGF0YS5jaGVja0JveCl7dD0iY2hlY2tib3giO2U9dGhpcy5kYXRhLmV4cG9ydFZhbHVlfWVsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXt0PSJyYWRpb2J1dHRvbiI7ZT10aGlzLmRhdGEuYnV0dG9uVmFsdWV9cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZXx8Ik9mZiIsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxleHBvcnRWYWx1ZXM6ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6dH19Z2V0IGZhbGxiYWNrRm9udERpY3QoKXtjb25zdCBlPW5ldyBEaWN0O2Uuc2V0SWZOYW1lKCJCYXNlRm9udCIsIlphcGZEaW5nYmF0cyIpO2Uuc2V0SWZOYW1lKCJUeXBlIiwiRmFsbGJhY2tUeXBlIik7ZS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGYWxsYmFja1R5cGUiKTtlLnNldElmTmFtZSgiRW5jb2RpbmciLCJaYXBmRGluZ2JhdHNFbmNvZGluZyIpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5pbmRpY2VzPXQuZ2V0QXJyYXkoIkkiKTt0aGlzLmhhc0luZGljZXM9QXJyYXkuaXNBcnJheSh0aGlzLmluZGljZXMpJiZ0aGlzLmluZGljZXMubGVuZ3RoPjA7dGhpcy5kYXRhLm9wdGlvbnM9W107Y29uc3Qgbj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9YS5mZXRjaElmUmVmKG5bZV0pLHM9QXJyYXkuaXNBcnJheSh0KTt0aGlzLmRhdGEub3B0aW9uc1tlXT17ZXhwb3J0VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHM/YS5mZXRjaElmUmVmKHRbMF0pOnQpLGRpc3BsYXlWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocz9hLmZldGNoSWZSZWYodFsxXSk6dCl9fWlmKHRoaXMuaGFzSW5kaWNlcyl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9W107Y29uc3QgZT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg7Zm9yKGNvbnN0IHQgb2YgdGhpcy5pbmRpY2VzKU51bWJlci5pc0ludGVnZXIodCkmJnQ+PTAmJnQ8ZSYmdGhpcy5kYXRhLmZpZWxkVmFsdWUucHVzaCh0aGlzLmRhdGEub3B0aW9uc1t0XS5leHBvcnRWYWx1ZSl9ZWxzZSJzdHJpbmciPT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWU/dGhpcy5kYXRhLmZpZWxkVmFsdWU9W3RoaXMuZGF0YS5maWVsZFZhbHVlXTp0aGlzLmRhdGEuZmllbGRWYWx1ZXx8PVtdOzA9PT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgmJnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wJiYodGhpcy5kYXRhLm9wdGlvbnM9dGhpcy5kYXRhLmZpZWxkVmFsdWUubWFwKGU9Pih7ZXhwb3J0VmFsdWU6ZSxkaXNwbGF5VmFsdWU6ZX0pKSk7dGhpcy5kYXRhLmNvbWJvPXRoaXMuaGFzRmllbGRGbGFnKFkpO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhRKTt0aGlzLl9oYXNUZXh0PSEwfWdldEZpZWxkT2JqZWN0KCl7Y29uc3QgZT10aGlzLmRhdGEuY29tYm8/ImNvbWJvYm94IjoibGlzdGJveCIsdD10aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGg+MD90aGlzLmRhdGEuZmllbGRWYWx1ZVswXTpudWxsO3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dCxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsbnVtSXRlbXM6dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoLG11bHRpcGxlU2VsZWN0aW9uOnRoaXMuZGF0YS5tdWx0aVNlbGVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLGl0ZW1zOnRoaXMuZGF0YS5vcHRpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOmV9fWFtZW5kU2F2ZWREaWN0KGUsdCl7aWYoIXRoaXMuaGFzSW5kaWNlcylyZXR1cm47bGV0IGE9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnZhbHVlO0FycmF5LmlzQXJyYXkoYSl8fChhPVthXSk7Y29uc3Qgbj1bXSx7b3B0aW9uczpzfT10aGlzLmRhdGE7Zm9yKGxldCBlPTAsdD0wLHI9cy5sZW5ndGg7ZTxyO2UrKylpZihzW2VdLmV4cG9ydFZhbHVlPT09YVt0XSl7bi5wdXNoKGUpO3QrPTF9dC5zZXQoIkkiLG4pfWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxhLG4pe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LGEsbik7bGV0IHIsaTtjb25zdCBvPW4/LmdldCh0aGlzLmRhdGEuaWQpO2lmKG8pe2k9by5yb3RhdGlvbjtyPW8udmFsdWV9aWYodm9pZCAwPT09aSYmdm9pZCAwPT09ciYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcylyZXR1cm4gbnVsbDt2b2lkIDA9PT1yP3I9dGhpcy5kYXRhLmZpZWxkVmFsdWU6QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtsZXR7d2lkdGg6bCxoZWlnaHQ6Zn09dGhpczs5MCE9PWkmJjI3MCE9PWl8fChbbCxmXT1bZixsXSk7Y29uc3QgYz10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsaD1bXTtmb3IobGV0IGU9MDtlPGM7ZSsrKXtjb25zdHtleHBvcnRWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXTtyLmluY2x1ZGVzKHQpJiZoLnB1c2goZSl9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7Y29uc3QgdT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2xldCBtLHtmb250U2l6ZTpwfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKHApbT10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle2NvbnN0IGU9KGYtMSkvYztsZXQgdCxhPS0xO2Zvcihjb25zdHtkaXNwbGF5VmFsdWU6ZX1vZiB0aGlzLmRhdGEub3B0aW9ucyl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0V2lkdGgoZSx1KTtpZihuPmEpe2E9bjt0PWV9fVttLHBdPXRoaXMuX2NvbXB1dGVGb250U2l6ZShlLGwtNCx0LHUsLTEpfWNvbnN0IGQ9cCpzLGc9KGQtcCkvMixiPU1hdGguZmxvb3IoZi9kKTtsZXQgdz0wO2lmKGgubGVuZ3RoPjApe2NvbnN0IGU9TWF0aC5taW4oLi4uaCksdD1NYXRoLm1heCguLi5oKTt3PU1hdGgubWF4KDAsdC1iKzEpO3c+ZSYmKHc9ZSl9Y29uc3Qgaj1NYXRoLm1pbih3K2IrMSxjKSxrPVsiL1R4IEJNQyBxIixgMSAxICR7bH0gJHtmfSByZSBXIG5gXTtpZihoLmxlbmd0aCl7ay5wdXNoKCIwLjYwMDAwNiAwLjc1Njg2NiAwLjg1NDkwNCByZyIpO2Zvcihjb25zdCBlIG9mIGgpdzw9ZSYmZTxqJiZrLnB1c2goYDEgJHtmLShlLXcrMSkqZH0gJHtsfSAke2R9IHJlIGZgKX1rLnB1c2goIkJUIixtLGAxIDAgMCAxIDAgJHtmfSBUbWApO2NvbnN0IHk9e3NoaWZ0OjB9O2ZvcihsZXQgZT13O2U8ajtlKyspe2NvbnN0e2Rpc3BsYXlWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXSxhPWU9PT13P2c6MDtrLnB1c2godGhpcy5fcmVuZGVyVGV4dCh0LHUscCxsLDAseSwyLC1kK2EpKX1rLnB1c2goIkVUIFEgRU1DIik7cmV0dXJuIGsuam9pbigiXG4iKX19Y2xhc3MgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmZpZWxkVmFsdWU9bnVsbDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSF0aGlzLmRhdGEuaGFzT3duQ2FudmFzfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5ub1JvdGF0ZT0hMDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2RpY3Q6dH09ZTtpZih0aGlzLmRhdGEuaGFzQXBwZWFyYW5jZSl0aGlzLmRhdGEubmFtZT0iTm9JY29uIjtlbHNle3RoaXMuZGF0YS5yZWN0WzFdPXRoaXMuZGF0YS5yZWN0WzNdLTIyO3RoaXMuZGF0YS5yZWN0WzJdPXRoaXMuZGF0YS5yZWN0WzBdKzIyO3RoaXMuZGF0YS5uYW1lPXQuaGFzKCJOYW1lIik/dC5nZXQoIk5hbWUiKS5uYW1lOiJOb3RlIn1pZih0LmhhcygiU3RhdGUiKSl7dGhpcy5kYXRhLnN0YXRlPXQuZ2V0KCJTdGF0ZSIpfHxudWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPXQuZ2V0KCJTdGF0ZU1vZGVsIil8fG51bGx9ZWxzZXt0aGlzLmRhdGEuc3RhdGU9bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD1udWxsfX19Y2xhc3MgTGlua0Fubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczphfT1lO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3Qgbj1nZXRRdWFkUG9pbnRzKHQsdGhpcy5yZWN0YW5nbGUpO24mJih0aGlzLmRhdGEucXVhZFBvaW50cz1uKTt0aGlzLmRhdGEuYm9yZGVyQ29sb3J8fD10aGlzLmRhdGEuY29sb3I7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDphLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6YS5hdHRhY2htZW50c30pfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITB9fWNsYXNzIFBvcHVwQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5ub0hUTUw9ITE7MCE9PXRoaXMud2lkdGgmJjAhPT10aGlzLmhlaWdodHx8KHRoaXMuZGF0YS5yZWN0PW51bGwpO2xldCBhPXQuZ2V0KCJQYXJlbnQiKTtpZighYSl7d2FybigiUG9wdXAgYW5ub3RhdGlvbiBoYXMgYSBtaXNzaW5nIG9yIGludmFsaWQgcGFyZW50IGFubm90YXRpb24uIik7cmV0dXJufXRoaXMuZGF0YS5wYXJlbnRSZWN0PWxvb2t1cE5vcm1hbFJlY3QoYS5nZXRBcnJheSgiUmVjdCIpLG51bGwpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9YS5nZXQoIkNyZWF0aW9uRGF0ZSIpfHwiIjtpc05hbWUoYS5nZXQoIlJUIiksSCkmJihhPWEuZ2V0KCJJUlQiKSk7aWYoYS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGEuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aWYoYS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihhLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGw7aWYoIXRoaXMudmlld2FibGUpe2NvbnN0IGU9YS5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoYS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoYS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50czthLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKGEuZ2V0KCJSQyIpKSk7dGhpcy5kYXRhLm9wZW49ISF0LmdldCgiT3BlbiIpfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCxhKXtjb25zdHtvbGRBbm5vdGF0aW9uOm4scmVjdDpzLHBhcmVudDpyfT1lLGk9bnx8bmV3IERpY3QodCk7aS5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2kuc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJQb3B1cCIpKTtpLnNldElmTm90RXhpc3RzKCJPcGVuIiwhMSk7aS5zZXRJZkFycmF5KCJSZWN0IixzKTtpLnNldCgiUGFyZW50IixyKTtyZXR1cm4gaX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7cmV0dXJuIG51bGx9fWNsYXNzIEZyZWVUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHthbm5vdGF0aW9uR2xvYmFsczp0LHhyZWY6YX09ZTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO3RoaXMuX2hhc0FwcGVhcmFuY2U9ISF0aGlzLmFwcGVhcmFuY2U7aWYodGhpcy5faGFzQXBwZWFyYW5jZSl7Y29uc3R7Zm9udENvbG9yOmUsZm9udFNpemU6bn09ZnVuY3Rpb24gcGFyc2VBcHBlYXJhbmNlU3RyZWFtKGUsdCxhKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IoZSx0LGEpLnBhcnNlKCl9KHRoaXMuYXBwZWFyYW5jZSxhLHQuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRDb2xvcj1lO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemU9bnx8MTB9ZWxzZXt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplfHw9MTA7Y29uc3R7Zm9udENvbG9yOnQsZm9udFNpemU6bn09dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTtpZih0aGlzLl9jb250ZW50cy5zdHIpe3RoaXMuZGF0YS50ZXh0Q29udGVudD10aGlzLl9jb250ZW50cy5zdHIuc3BsaXQoL1xyXG4/fFxuLykubWFwKGU9PmUudHJpbUVuZCgpKTtjb25zdHtjb29yZHM6ZSxiYm94OnQsbWF0cml4OmF9PUZha2VVbmljb2RlRm9udC5nZXRGaXJzdFBvc2l0aW9uSW5mbyh0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLG4pO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQoZSx0LGEpfWlmKHRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBzPWUuZGljdC5nZXQoIkNBIikscj1uZXcgRmFrZVVuaWNvZGVGb250KGEsInNhbnMtc2VyaWYiKTt0aGlzLmFwcGVhcmFuY2U9ci5jcmVhdGVBcHBlYXJhbmNlKHRoaXMuX2NvbnRlbnRzLnN0cix0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLG4sdCxzKTt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKX1lbHNlIHdhcm4oIkZyZWVUZXh0QW5ub3RhdGlvbjogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5faGFzQXBwZWFyYW5jZX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmEsYXA6bn0pe2NvbnN0e2NvbG9yOnMsZGF0ZTpyLGZvbnRTaXplOmksb2xkQW5ub3RhdGlvbjpvLHJlY3Q6bCxyb3RhdGlvbjpmLHVzZXI6Yyx2YWx1ZTpofT1lLHU9b3x8bmV3IERpY3QodCk7dS5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO3Uuc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGcmVlVGV4dCIpKTt1LnNldChvPyJNIjoiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUocil9YCk7byYmdS5kZWxldGUoIlJDIik7dS5zZXRJZkFycmF5KCJSZWN0IixsKTtjb25zdCBtPWAvSGVsdiAke2l9IFRmICR7Z2V0UGRmQ29sb3IocywhMCl9YDt1LnNldCgiREEiLG0pO3Uuc2V0SWZEZWZpbmVkKCJDb250ZW50cyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShoKSk7dS5zZXRJZk5vdEV4aXN0cygiRiIsNCk7dS5zZXRJZk5vdEV4aXN0cygiQm9yZGVyIixbMCwwLDBdKTt1LnNldElmTnVtYmVyKCJSb3RhdGUiLGYpO3Uuc2V0SWZEZWZpbmVkKCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGMpKTtpZihhfHxuKXtjb25zdCBlPW5ldyBEaWN0KHQpO3Uuc2V0KCJBUCIsZSk7ZS5zZXQoIk4iLGF8fG4pfXJldHVybiB1fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxhKXtjb25zdHtiYXNlRm9udFJlZjpuLGV2YWx1YXRvcjpyLHRhc2s6aX09YSx7Y29sb3I6byxmb250U2l6ZTpsLHJlY3Q6Zixyb3RhdGlvbjpjLHZhbHVlOmh9PWU7aWYoIW8pcmV0dXJuIG51bGw7Y29uc3QgdT1uZXcgRGljdCh0KSxtPW5ldyBEaWN0KHQpO2lmKG4pbS5zZXQoIkhlbHYiLG4pO2Vsc2V7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldElmTmFtZSgiQmFzZUZvbnQiLCJIZWx2ZXRpY2EiKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnQiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIlR5cGUxIik7ZS5zZXRJZk5hbWUoIkVuY29kaW5nIiwiV2luQW5zaUVuY29kaW5nIik7bS5zZXQoIkhlbHYiLGUpfXUuc2V0KCJGb250IixtKTtjb25zdCBwPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKHIsaSx7Zm9udE5hbWU6IkhlbHYiLGZvbnRTaXplOmx9LHUpLFtkLGcsYix3XT1mO2xldCBqPWItZCxrPXctZztjJTE4MCE9MCYmKFtqLGtdPVtrLGpdKTtjb25zdCB5PWguc3BsaXQoIlxuIikscT1sLzFlMztsZXQgdj0tMS8wO2NvbnN0IFM9W107Zm9yKGxldCBlIG9mIHkpe2NvbnN0IHQ9cC5lbmNvZGVTdHJpbmcoZSk7aWYodC5sZW5ndGg+MSlyZXR1cm4gbnVsbDtlPXQuam9pbigiIik7Uy5wdXNoKGUpO2xldCBhPTA7Y29uc3Qgbj1wLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgbilhKz1lLndpZHRoKnE7dj1NYXRoLm1heCh2LGEpfWxldCB4PTE7dj5qJiYoeD1qL3YpO2xldCBDPTE7Y29uc3QgRj1zKmwsVD0xKmwsTz1GKnkubGVuZ3RoO08+ayYmKEM9ay9PKTtjb25zdCBSPWwqTWF0aC5taW4oeCxDKTtsZXQgSCxELE07c3dpdGNoKGMpe2Nhc2UgMDpNPVsxLDAsMCwxXTtEPVtmWzBdLGZbMV0saixrXTtIPVtmWzBdLGZbM10tVF07YnJlYWs7Y2FzZSA5MDpNPVswLDEsLTEsMF07RD1bZlsxXSwtZlsyXSxqLGtdO0g9W2ZbMV0sLWZbMF0tVF07YnJlYWs7Y2FzZSAxODA6TT1bLTEsMCwwLC0xXTtEPVstZlsyXSwtZlszXSxqLGtdO0g9Wy1mWzJdLC1mWzFdLVRdO2JyZWFrO2Nhc2UgMjcwOk09WzAsLTEsMSwwXTtEPVstZlszXSxmWzBdLGosa107SD1bLWZbM10sZlsyXS1UXX1jb25zdCBOPVsicSIsYCR7TS5qb2luKCIgIil9IDAgMCBjbWAsYCR7RC5qb2luKCIgIil9IHJlIFcgbmAsIkJUIixgJHtnZXRQZGZDb2xvcihvLCEwKX1gLGAwIFRjIC9IZWx2ICR7bnVtYmVyVG9TdHJpbmcoUil9IFRmYF07Ti5wdXNoKGAke0guam9pbigiICIpfSBUZCAoJHtlc2NhcGVTdHJpbmcoU1swXSl9KSBUamApO2NvbnN0IEU9bnVtYmVyVG9TdHJpbmcoRik7Zm9yKGxldCBlPTEsdD1TLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PVNbZV07Ti5wdXNoKGAwIC0ke0V9IFRkICgke2VzY2FwZVN0cmluZyh0KX0pIFRqYCl9Ti5wdXNoKCJFVCIsIlEiKTtjb25zdCBfPU4uam9pbigiXG4iKSx6PW5ldyBEaWN0KHQpO3ouc2V0KCJGb3JtVHlwZSIsMSk7ei5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7ei5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7ei5zZXQoIkJCb3giLGYpO3ouc2V0KCJSZXNvdXJjZXMiLHUpO3ouc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1mWzBdLC1mWzFdXSk7Y29uc3QgTD1uZXcgU3RyaW5nU3RyZWFtKF8pO0wuZGljdD16O3JldHVybiBMfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IG49bG9va3VwUmVjdCh0LmdldEFycmF5KCJMIiksWzAsMCwwLDBdKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPVV0aWwubm9ybWFsaXplUmVjdChuKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLHM9dC5nZXQoIkNBIikscj1nZXRQZGZDb2xvckFycmF5KGdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkpLGk9cj9zOm51bGwsbz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGw9MipvLGY9W3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMF0tbCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzFdLWwsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1syXStsLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbM10rbF07VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsZil8fCh0aGlzLnJlY3RhbmdsZT1mKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke299IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnIsc3Ryb2tlQWxwaGE6cyxmaWxsQWxwaGE6aSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHtuWzBdfSAke25bMV19IG1gLGAke25bMl19ICR7blszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS1vLHRbN10tbyx0WzJdK28sdFszXStvXX19KX19fWNsYXNzIFNxdWFyZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxuPXQuZ2V0KCJDQSIpLHM9Z2V0UGRmQ29sb3JBcnJheShnZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpKSxyPXM/bjpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcylyZXR1cm47dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpzLHN0cm9rZUFscGhhOm4sZmlsbEFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPXRbNF0rdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFs1XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIscj10WzZdLXRbNF0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxpPXRbM10tdFs3XS10aGlzLmJvcmRlclN0eWxlLndpZHRoO2UucHVzaChgJHthfSAke259ICR7cn0gJHtpfSByZWApO3M/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxuPXQuZ2V0KCJDQSIpLHM9Z2V0UGRmQ29sb3JBcnJheShnZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpKSxyPXM/bjpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcylyZXR1cm47Y29uc3QgaT00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6bixmaWxsQWxwaGE6cixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9dFswXSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzFdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG89dFs3XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbD1hKyhyLWEpLzIsZj1uKyhvLW4pLzIsYz0oci1hKS8yKmksaD0oby1uKS8yKmk7ZS5wdXNoKGAke2x9ICR7b30gbWAsYCR7bCtjfSAke299ICR7cn0gJHtmK2h9ICR7cn0gJHtmfSBjYCxgJHtyfSAke2YtaH0gJHtsK2N9ICR7bn0gJHtsfSAke259IGNgLGAke2wtY30gJHtufSAke2F9ICR7Zi1ofSAke2F9ICR7Zn0gY2AsYCR7YX0gJHtmK2h9ICR7bC1jfSAke299ICR7bH0gJHtvfSBjYCwiaCIpO3M/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19Y2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OmEseHJlZjpufT1lO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLnZlcnRpY2VzPW51bGw7aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKGEuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IHM9YS5nZXRBcnJheSgiVmVydGljZXMiKTtpZighaXNOdW1iZXJBcnJheShzLG51bGwpKXJldHVybjtjb25zdCByPXRoaXMuZGF0YS52ZXJ0aWNlcz1GbG9hdDMyQXJyYXkuZnJvbShzKTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxzPWEuZ2V0KCJDQSIpO2xldCBpLG89Z2V0UmdiQ29sb3IoYS5nZXRBcnJheSgiSUMiKSxudWxsKTtvJiYobz1nZXRQZGZDb2xvckFycmF5KG8pKTtpPW8/dGhpcy5jb2xvcj9vLmV2ZXJ5KCh0LGEpPT50PT09ZVthXSk/ImYiOiJCIjoiZiI6IlMiO2NvbnN0IGw9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxmPTIqbCxjPXQuc2xpY2UoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0yKVV0aWwucmVjdEJvdW5kaW5nQm94KHJbZV0tZixyW2UrMV0tZixyW2VdK2YscltlKzFdK2YsYyk7VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsYyl8fCh0aGlzLnJlY3RhbmdsZT1jKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpuLGV4dHJhOmAke2x9IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6cyxmaWxsQ29sb3I6byxmaWxsQWxwaGE6bz9zOm51bGwscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IobGV0IHQ9MCxhPXIubGVuZ3RoO3Q8YTt0Kz0yKWUucHVzaChgJHtyW3RdfSAke3JbdCsxXX0gJHswPT09dD8ibSI6ImwifWApO2UucHVzaChpKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fX1jbGFzcyBQb2x5Z29uQW5ub3RhdGlvbiBleHRlbmRzIFBvbHlsaW5lQW5ub3RhdGlvbnt9Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbnt9Y2xhc3MgSW5rQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtkaWN0OmEseHJlZjpufT1lO3RoaXMuZGF0YS5pbmtMaXN0cz1bXTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5vcGFjaXR5PWEuZ2V0KCJDQSIpfHwxO2NvbnN0IHM9YS5nZXRBcnJheSgiSW5rTGlzdCIpO2lmKEFycmF5LmlzQXJyYXkocykpe2ZvcihsZXQgZT0wLHQ9cy5sZW5ndGg7ZTx0OysrZSl7aWYoIUFycmF5LmlzQXJyYXkoc1tlXSkpY29udGludWU7Y29uc3QgdD1uZXcgRmxvYXQzMkFycmF5KHNbZV0ubGVuZ3RoKTt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaCh0KTtmb3IobGV0IGE9MCxyPXNbZV0ubGVuZ3RoO2E8cjthKz0yKXtjb25zdCByPW4uZmV0Y2hJZlJlZihzW2VdW2FdKSxpPW4uZmV0Y2hJZlJlZihzW2VdW2ErMV0pO2lmKCJudW1iZXIiPT10eXBlb2YgciYmIm51bWJlciI9PXR5cGVvZiBpKXt0W2FdPXI7dFthKzFdPWl9fX1pZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxzPWEuZ2V0KCJDQSIpLHI9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxpPTIqcixvPXQuc2xpY2UoKTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilVdGlsLnJlY3RCb3VuZGluZ0JveChlW3RdLWksZVt0KzFdLWksZVt0XStpLGVbdCsxXStpLG8pO1V0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6bixleHRyYTpgJHtyfSB3YCxzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOnMscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IoY29uc3QgdCBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpe2ZvcihsZXQgYT0wLG49dC5sZW5ndGg7YTxuO2ErPTIpZS5wdXNoKGAke3RbYV19ICR7dFthKzFdfSAkezA9PT1hPyJtIjoibCJ9YCk7ZS5wdXNoKCJTIil9cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjphLGFwOm59KXtjb25zdHtvbGRBbm5vdGF0aW9uOnMsY29sb3I6cixkYXRlOmksb3BhY2l0eTpvLHBhdGhzOmwsb3V0bGluZXM6ZixyZWN0OmMscm90YXRpb246aCx0aGlja25lc3M6dSx1c2VyOm19PWUscD1zfHxuZXcgRGljdCh0KTtwLnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7cC5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIkluayIpKTtwLnNldChzPyJNIjoiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoaSl9YCk7cC5zZXRJZkFycmF5KCJSZWN0IixjKTtwLnNldElmQXJyYXkoIklua0xpc3QiLGY/LnBvaW50c3x8bD8ucG9pbnRzKTtwLnNldElmTm90RXhpc3RzKCJGIiw0KTtwLnNldElmTnVtYmVyKCJSb3RhdGUiLGgpO3Auc2V0SWZEZWZpbmVkKCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKG0pKTtmJiZwLnNldElmTmFtZSgiSVQiLCJJbmtIaWdobGlnaHQiKTtpZih1PjApe2NvbnN0IGU9bmV3IERpY3QodCk7cC5zZXQoIkJTIixlKTtlLnNldCgiVyIsdSl9cC5zZXRJZkFycmF5KCJDIixnZXRQZGZDb2xvckFycmF5KHIpKTtwLnNldElmTnVtYmVyKCJDQSIsbyk7aWYobnx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtwLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixhfHxuKX1yZXR1cm4gcH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7aWYoZS5vdXRsaW5lcylyZXR1cm4gdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtRm9ySGlnaGxpZ2h0KGUsdCxhKTtjb25zdHtjb2xvcjpuLHJlY3Q6cyxwYXRoczpyLHRoaWNrbmVzczppLG9wYWNpdHk6b309ZTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBsPVtgJHtpfSB3IDEgSiAxIGpgLGAke2dldFBkZkNvbG9yKG4sITEpfWBdOzEhPT1vJiZsLnB1c2goIi9SMCBncyIpO2Zvcihjb25zdCBlIG9mIHIubGluZXMpe2wucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbWApO2ZvcihsZXQgdD02LGE9ZS5sZW5ndGg7dDxhO3QrPTYpaWYoaXNOYU4oZVt0XSkpbC5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdCs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVt0KzVdKX0gbGApO2Vsc2V7Y29uc3RbYSxuLHMscixpLG9dPWUuc2xpY2UodCx0KzYpO2wucHVzaChbYSxuLHMscixpLG9dLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpKyIgYyIpfTY9PT1lLmxlbmd0aCYmbC5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbNF0pfSAke251bWJlclRvU3RyaW5nKGVbNV0pfSBsYCl9bC5wdXNoKCJTIik7Y29uc3QgZj1sLmpvaW4oIlxuIiksYz1uZXcgRGljdCh0KTtjLnNldCgiRm9ybVR5cGUiLDEpO2Muc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2Muc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2Muc2V0KCJCQm94IixzKTtjLnNldCgiTGVuZ3RoIixmLmxlbmd0aCk7aWYoMSE9PW8pe2NvbnN0IGU9bmV3IERpY3QodCksYT1uZXcgRGljdCh0KSxuPW5ldyBEaWN0KHQpO24uc2V0KCJDQSIsbyk7bi5zZXRJZk5hbWUoIlR5cGUiLCJFeHRHU3RhdGUiKTthLnNldCgiUjAiLG4pO2Uuc2V0KCJFeHRHU3RhdGUiLGEpO2Muc2V0KCJSZXNvdXJjZXMiLGUpfWNvbnN0IGg9bmV3IFN0cmluZ1N0cmVhbShmKTtoLmRpY3Q9YztyZXR1cm4gaH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsYSl7Y29uc3R7Y29sb3I6bixyZWN0OnMsb3V0bGluZXM6e291dGxpbmU6cn0sb3BhY2l0eTppfT1lO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IG89W2Ake2dldFBkZkNvbG9yKG4sITApfWAsIi9SMCBncyJdO28ucHVzaChgJHtudW1iZXJUb1N0cmluZyhyWzRdKX0gJHtudW1iZXJUb1N0cmluZyhyWzVdKX0gbWApO2ZvcihsZXQgZT02LHQ9ci5sZW5ndGg7ZTx0O2UrPTYpaWYoaXNOYU4ocltlXSkpby5wdXNoKGAke251bWJlclRvU3RyaW5nKHJbZSs0XSl9ICR7bnVtYmVyVG9TdHJpbmcocltlKzVdKX0gbGApO2Vsc2V7Y29uc3RbdCxhLG4scyxpLGxdPXIuc2xpY2UoZSxlKzYpO28ucHVzaChbdCxhLG4scyxpLGxdLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpKyIgYyIpfW8ucHVzaCgiaCBmIik7Y29uc3QgbD1vLmpvaW4oIlxuIiksZj1uZXcgRGljdCh0KTtmLnNldCgiRm9ybVR5cGUiLDEpO2Yuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2Yuc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2Yuc2V0KCJCQm94IixzKTtmLnNldCgiTGVuZ3RoIixsLmxlbmd0aCk7Y29uc3QgYz1uZXcgRGljdCh0KSxoPW5ldyBEaWN0KHQpO2Muc2V0KCJFeHRHU3RhdGUiLGgpO2Yuc2V0KCJSZXNvdXJjZXMiLGMpO2NvbnN0IHU9bmV3IERpY3QodCk7aC5zZXQoIlIwIix1KTt1LnNldElmTmFtZSgiQk0iLCJNdWx0aXBseSIpO2lmKDEhPT1pKXt1LnNldCgiY2EiLGkpO3Uuc2V0SWZOYW1lKCJUeXBlIiwiRXh0R1N0YXRlIil9Y29uc3QgbT1uZXcgU3RyaW5nU3RyZWFtKGwpO20uZGljdD1mO3JldHVybiBtfX1jbGFzcyBIaWdobGlnaHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLm9wYWNpdHk9dC5nZXQoIkNBIil8fDE7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtjb25zdCBlPXRoaXMuYXBwZWFyYW5jZT8uZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKCF0aGlzLmFwcGVhcmFuY2V8fCFlPy5oYXMoIkV4dEdTdGF0ZSIpKXt0aGlzLmFwcGVhcmFuY2UmJndhcm4oIkhpZ2hsaWdodEFubm90YXRpb24gLSBpZ25vcmluZyBidWlsdC1pbiBhcHBlYXJhbmNlIHN0cmVhbS4iKTtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMSwxLDBdKSxuPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZmlsbENvbG9yOmUsYmxlbmRNb2RlOiJNdWx0aXBseSIsZmlsbEFscGhhOm4scG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFswXX0gJHt0WzFdfSBtYCxgJHt0WzJdfSAke3RbM119IGxgLGAke3RbNl19ICR7dFs3XX0gbGAsYCR7dFs0XX0gJHt0WzVdfSBsYCwiZiIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7Y29sb3I6cyxkYXRlOnIsb2xkQW5ub3RhdGlvbjppLG9wYWNpdHk6byxyZWN0Omwscm90YXRpb246Zix1c2VyOmMscXVhZFBvaW50czpofT1lLHU9aXx8bmV3IERpY3QodCk7dS5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO3Uuc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJIaWdobGlnaHQiKSk7dS5zZXQoaT8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKHIpfWApO3Uuc2V0SWZBcnJheSgiUmVjdCIsbCk7dS5zZXRJZk5vdEV4aXN0cygiRiIsNCk7dS5zZXRJZk5vdEV4aXN0cygiQm9yZGVyIixbMCwwLDBdKTt1LnNldElmTnVtYmVyKCJSb3RhdGUiLGYpO3Uuc2V0SWZBcnJheSgiUXVhZFBvaW50cyIsaCk7dS5zZXRJZkFycmF5KCJDIixnZXRQZGZDb2xvckFycmF5KHMpKTt1LnNldElmTnVtYmVyKCJDQSIsbyk7dS5zZXRJZkRlZmluZWQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYykpO2lmKGF8fG4pe2NvbnN0IGU9bmV3IERpY3QodCk7dS5zZXQoIkFQIixlKTtlLnNldCgiTiIsYXx8bil9cmV0dXJuIHV9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGEpe2NvbnN0e2NvbG9yOm4scmVjdDpzLG91dGxpbmVzOnIsb3BhY2l0eTppfT1lO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IG89W2Ake2dldFBkZkNvbG9yKG4sITApfWAsIi9SMCBncyJdLGw9W107Zm9yKGNvbnN0IGUgb2Ygcil7bC5sZW5ndGg9MDtsLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVswXSl9ICR7bnVtYmVyVG9TdHJpbmcoZVsxXSl9IG1gKTtmb3IobGV0IHQ9MixhPWUubGVuZ3RoO3Q8YTt0Kz0yKWwucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3RdKX0gJHtudW1iZXJUb1N0cmluZyhlW3QrMV0pfSBsYCk7bC5wdXNoKCJoIik7by5wdXNoKGwuam9pbigiXG4iKSl9by5wdXNoKCJmKiIpO2NvbnN0IGY9by5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtjLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtjLnNldCgiQkJveCIscyk7Yy5zZXQoIkxlbmd0aCIsZi5sZW5ndGgpO2NvbnN0IGg9bmV3IERpY3QodCksdT1uZXcgRGljdCh0KTtoLnNldCgiRXh0R1N0YXRlIix1KTtjLnNldCgiUmVzb3VyY2VzIixoKTtjb25zdCBtPW5ldyBEaWN0KHQpO3Uuc2V0KCJSMCIsbSk7bS5zZXRJZk5hbWUoIkJNIiwiTXVsdGlwbHkiKTtpZigxIT09aSl7bS5zZXQoImNhIixpKTttLnNldElmTmFtZSgiVHlwZSIsIkV4dEdTdGF0ZSIpfWNvbnN0IHA9bmV3IFN0cmluZ1N0cmVhbShmKTtwLmRpY3Q9YztyZXR1cm4gcH19Y2xhc3MgVW5kZXJsaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLG49dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYToiW10gMCBkIDAuNTcxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHt0WzRdfSAke3RbNV0rMS4zfSBtYCxgJHt0WzZdfSAke3RbN10rMS4zfSBsYCwiUyIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfX1jbGFzcyBTcXVpZ2dseUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxuPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9KHRbMV0tdFs1XSkvNjtsZXQgbj1hLHM9dFs0XTtjb25zdCByPXRbNV0saT10WzZdO2UucHVzaChgJHtzfSAke3Irbn0gbWApO2Rve3MrPTI7bj0wPT09bj9hOjA7ZS5wdXNoKGAke3N9ICR7citufSBsYCl9d2hpbGUoczxpKTtlLnB1c2goIlMiKTtyZXR1cm5bdFs0XSxyLTIqYSxpLHIrMiphXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSksbj10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOm4scG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0rdFs0XSkvMisiICIrKHRbMV0rdFs1XSkvMisiIG0iLCh0WzJdK3RbNl0pLzIrIiAiKyh0WzNdK3RbN10pLzIrIiBsIiwiUyIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfX1jbGFzcyBTdGFtcEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ueyNvdD1udWxsO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITF9bXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoZSx0PW51bGwpe2lmKGUpe2lmKCF0aGlzLmRhdGEuaXNFZGl0YWJsZSlyZXR1cm4hMDt0aGlzLiNvdD8/PXRoaXMuZGF0YS5oYXNPd25DYW52YXM7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMDtyZXR1cm4hMH1pZihudWxsIT09dGhpcy4jb3Qpe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy4jb3Q7dGhpcy4jb3Q9bnVsbH1yZXR1cm4hdD8uaGFzKHRoaXMuZGF0YS5pZCl9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdCl7Y29uc3R7d2lkdGg6YSxoZWlnaHQ6bn09ZSxzPW5ldyBPZmZzY3JlZW5DYW52YXMoYSxuKSxyPXMuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMH0pO3IuZHJhd0ltYWdlKGUsMCwwKTtjb25zdCBpPXIuZ2V0SW1hZ2VEYXRhKDAsMCxhLG4pLmRhdGEsbz1uZXcgVWludDMyQXJyYXkoaS5idWZmZXIpLGw9by5zb21lKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuP2U9PmU+Pj4yNCE9MjU1OmU9PiEhKDI1NSZ+ZSkpO2lmKGwpe3IuZmlsbFN0eWxlPSJ3aGl0ZSI7ci5maWxsUmVjdCgwLDAsYSxuKTtyLmRyYXdJbWFnZShlLDAsMCl9Y29uc3QgZj1zLmNvbnZlcnRUb0Jsb2Ioe3R5cGU6ImltYWdlL2pwZWciLHF1YWxpdHk6MX0pLnRoZW4oZT0+ZS5ieXRlcygpKSxjPU5hbWUuZ2V0KCJYT2JqZWN0IiksaD1OYW1lLmdldCgiSW1hZ2UiKSx1PW5ldyBEaWN0KHQpO3Uuc2V0KCJUeXBlIixjKTt1LnNldCgiU3VidHlwZSIsaCk7dS5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO3Uuc2V0SWZOYW1lKCJDb2xvclNwYWNlIiwiRGV2aWNlUkdCIik7dS5zZXRJZk5hbWUoIkZpbHRlciIsIkRDVERlY29kZSIpO3Uuc2V0KCJCQm94IixbMCwwLGEsbl0pO3Uuc2V0KCJXaWR0aCIsYSk7dS5zZXQoIkhlaWdodCIsbik7bGV0IG09bnVsbDtpZihsKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG8ubGVuZ3RoKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IHQ9MCxhPW8ubGVuZ3RoO3Q8YTt0KyspZVt0XT1vW3RdPj4+MjQ7ZWxzZSBmb3IobGV0IHQ9MCxhPW8ubGVuZ3RoO3Q8YTt0KyspZVt0XT0yNTUmb1t0XTtjb25zdCBzPW5ldyBEaWN0KHQpO3Muc2V0KCJUeXBlIixjKTtzLnNldCgiU3VidHlwZSIsaCk7cy5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO3Muc2V0SWZOYW1lKCJDb2xvclNwYWNlIiwiRGV2aWNlR3JheSIpO3Muc2V0KCJXaWR0aCIsYSk7cy5zZXQoIkhlaWdodCIsbik7bT1uZXcgU3RyZWFtKGUsMCwwLHMpfXJldHVybntpbWFnZVN0cmVhbTpuZXcgU3RyZWFtKGF3YWl0IGYsMCwwLHUpLHNtYXNrU3RyZWFtOm0sd2lkdGg6YSxoZWlnaHQ6bn19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjphLGFwOm59KXtjb25zdHtkYXRlOnMsb2xkQW5ub3RhdGlvbjpyLHJlY3Q6aSxyb3RhdGlvbjpvLHVzZXI6bH09ZSxmPXJ8fG5ldyBEaWN0KHQpO2Yuc2V0SWZOb3RFeGlzdHMoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtmLnNldElmTm90RXhpc3RzKCJTdWJ0eXBlIixOYW1lLmdldCgiU3RhbXAiKSk7Zi5zZXQocj8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKHMpfWApO2Yuc2V0SWZBcnJheSgiUmVjdCIsaSk7Zi5zZXRJZk5vdEV4aXN0cygiRiIsNCk7Zi5zZXRJZk5vdEV4aXN0cygiQm9yZGVyIixbMCwwLDBdKTtmLnNldElmTnVtYmVyKCJSb3RhdGUiLG8pO2Yuc2V0SWZEZWZpbmVkKCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGwpKTtpZihhfHxuKXtjb25zdCBlPW5ldyBEaWN0KHQpO2Yuc2V0KCJBUCIsZSk7ZS5zZXQoIk4iLGF8fG4pfXJldHVybiBmfXN0YXRpYyBhc3luYyNsdChlLHQpe2NvbnN0e2FyZUNvbnRvdXJzOmEsY29sb3I6bixyZWN0OnMsbGluZXM6cix0aGlja25lc3M6aX09ZTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBvPVtgJHtpfSB3IDEgSiAxIGpgLGAke2dldFBkZkNvbG9yKG4sYSl9YF07Zm9yKGNvbnN0IGUgb2Ygcil7by5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbNF0pfSAke251bWJlclRvU3RyaW5nKGVbNV0pfSBtYCk7Zm9yKGxldCB0PTYsYT1lLmxlbmd0aDt0PGE7dCs9NilpZihpc05hTihlW3RdKSlvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVt0KzRdKX0gJHtudW1iZXJUb1N0cmluZyhlW3QrNV0pfSBsYCk7ZWxzZXtjb25zdFthLG4scyxyLGksbF09ZS5zbGljZSh0LHQrNik7by5wdXNoKFthLG4scyxyLGksbF0ubWFwKG51bWJlclRvU3RyaW5nKS5qb2luKCIgIikrIiBjIil9Nj09PWUubGVuZ3RoJiZvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IGxgKX1vLnB1c2goYT8iRiI6IlMiKTtjb25zdCBsPW8uam9pbigiXG4iKSxmPW5ldyBEaWN0KHQpO2Yuc2V0KCJGb3JtVHlwZSIsMSk7Zi5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7Zi5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7Zi5zZXQoIkJCb3giLHMpO2Yuc2V0KCJMZW5ndGgiLGwubGVuZ3RoKTtjb25zdCBjPW5ldyBTdHJpbmdTdHJlYW0obCk7Yy5kaWN0PWY7cmV0dXJuIGN9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGEpe2lmKGUub2xkQW5ub3RhdGlvbilyZXR1cm4gbnVsbDtpZihlLmlzU2lnbmF0dXJlKXJldHVybiB0aGlzLiNsdChlLHQpO2NvbnN0e3JvdGF0aW9uOm59PWUse2ltYWdlUmVmOnMsd2lkdGg6cixoZWlnaHQ6aX09YS5pbWFnZSxvPW5ldyBEaWN0KHQpLGw9bmV3IERpY3QodCk7by5zZXQoIlhPYmplY3QiLGwpO2wuc2V0KCJJbTAiLHMpO2NvbnN0IGY9YHEgJHtyfSAwIDAgJHtpfSAwIDAgY20gL0ltMCBEbyBRYCxjPW5ldyBEaWN0KHQpO2Muc2V0KCJGb3JtVHlwZSIsMSk7Yy5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7Yy5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7Yy5zZXQoIkJCb3giLFswLDAscixpXSk7Yy5zZXQoIlJlc291cmNlcyIsbyk7aWYobil7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChuLHIsaSk7Yy5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgaD1uZXcgU3RyaW5nU3RyZWFtKGYpO2guZGljdD1jO3JldHVybiBofX1jbGFzcyBGaWxlQXR0YWNobWVudEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZSxhPW5ldyBGaWxlU3BlYyh0LmdldCgiRlMiKSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEuZmlsZT1hLnNlcmlhbGl6YWJsZTtjb25zdCBuPXQuZ2V0KCJOYW1lIik7dGhpcy5kYXRhLm5hbWU9biBpbnN0YW5jZW9mIE5hbWU/c3RyaW5nVG9QREZTdHJpbmcobi5uYW1lKToiUHVzaFBpbiI7Y29uc3Qgcz10LmdldCgiY2EiKTt0aGlzLmRhdGEuZmlsbEFscGhhPSJudW1iZXIiPT10eXBlb2YgcyYmcz49MCYmczw9MT9zOm51bGx9fWNvbnN0IGRmPXtnZXQgcigpe3JldHVybiBzaGFkb3codGhpcywiciIsbmV3IFVpbnQ4QXJyYXkoWzcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMV0pKX0sZ2V0IGsoKXtyZXR1cm4gc2hhZG93KHRoaXMsImsiLG5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pKX19O2Z1bmN0aW9uIGNhbGN1bGF0ZU1ENShlLHQsYSl7bGV0IG49MTczMjU4NDE5MyxzPS0yNzE3MzM4Nzkscj0tMTczMjU4NDE5NCxpPTI3MTczMzg3ODtjb25zdCBvPWErNzImLTY0LGw9bmV3IFVpbnQ4QXJyYXkobyk7bGV0IGYsYztmb3IoZj0wO2Y8YTsrK2YpbFtmXT1lW3QrK107bFtmKytdPTEyODtjb25zdCBoPW8tODtmPGgmJihmPWgpO2xbZisrXT1hPDwzJjI1NTtsW2YrK109YT4+NSYyNTU7bFtmKytdPWE+PjEzJjI1NTtsW2YrK109YT4+MjEmMjU1O2xbZisrXT1hPj4+MjkmMjU1O2YrPTM7Y29uc3QgdT1uZXcgSW50MzJBcnJheSgxNikse2s6bSxyOnB9PWRmO2ZvcihmPTA7ZjxvOyl7Zm9yKGM9MDtjPDE2OysrYyxmKz00KXVbY109bFtmXXxsW2YrMV08PDh8bFtmKzJdPDwxNnxsW2YrM108PDI0O2xldCBlLHQsYT1uLG89cyxoPXIsZD1pO2ZvcihjPTA7Yzw2NDsrK2Mpe2lmKGM8MTYpe2U9byZofH5vJmQ7dD1jfWVsc2UgaWYoYzwzMil7ZT1kJm98fmQmaDt0PTUqYysxJjE1fWVsc2UgaWYoYzw0OCl7ZT1vXmheZDt0PTMqYys1JjE1fWVsc2V7ZT1oXihvfH5kKTt0PTcqYyYxNX1jb25zdCBuPWQscz1hK2UrbVtjXSt1W3RdfDAscj1wW2NdO2Q9aDtoPW87bz1vKyhzPDxyfHM+Pj4zMi1yKXwwO2E9bn1uPW4rYXwwO3M9cytvfDA7cj1yK2h8MDtpPWkrZHwwfXJldHVybiBuZXcgVWludDhBcnJheShbMjU1Jm4sbj4+OCYyNTUsbj4+MTYmMjU1LG4+Pj4yNCYyNTUsMjU1JnMscz4+OCYyNTUscz4+MTYmMjU1LHM+Pj4yNCYyNTUsMjU1JnIscj4+OCYyNTUscj4+MTYmMjU1LHI+Pj4yNCYyNTUsMjU1JmksaT4+OCYyNTUsaT4+MTYmMjU1LGk+Pj4yNCYyNTVdKX1mdW5jdGlvbiBkZWNvZGVTdHJpbmcoZSl7dHJ5e3JldHVybiBzdHJpbmdUb1VURjhTdHJpbmcoZSl9Y2F0Y2godCl7d2FybihgVVRGLTggZGVjb2RpbmcgZmFpbGVkOiAiJHt0fSIuYCk7cmV0dXJuIGV9fWNsYXNzIERhdGFzZXRYTUxQYXJzZXIgZXh0ZW5kcyBTaW1wbGVYTUxQYXJzZXJ7bm9kZT1udWxsO29uRW5kRWxlbWVudChlKXtjb25zdCB0PXN1cGVyLm9uRW5kRWxlbWVudChlKTtpZih0JiYieGZhOmRhdGFzZXRzIj09PWUpe3RoaXMubm9kZT10O3Rocm93IG5ldyBFcnJvcigiQWJvcnRpbmcgRGF0YXNldFhNTFBhcnNlci4iKX19fWNsYXNzIERhdGFzZXRSZWFkZXJ7Y29uc3RydWN0b3IoZSl7aWYoZS5kYXRhc2V0cyl0aGlzLm5vZGU9bmV3IFNpbXBsZVhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pLnBhcnNlRnJvbVN0cmluZyhlLmRhdGFzZXRzKS5kb2N1bWVudEVsZW1lbnQ7ZWxzZXtjb25zdCB0PW5ldyBEYXRhc2V0WE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSk7dHJ5e3QucGFyc2VGcm9tU3RyaW5nKGVbInhkcDp4ZHAiXSl9Y2F0Y2h7fXRoaXMubm9kZT10Lm5vZGV9fWdldFZhbHVlKGUpe2lmKCF0aGlzLm5vZGV8fCFlKXJldHVybiIiO2NvbnN0IHQ9dGhpcy5ub2RlLnNlYXJjaE5vZGUocGFyc2VYRkFQYXRoKGUpLDApO2lmKCF0KXJldHVybiIiO2NvbnN0IGE9dC5maXJzdENoaWxkO3JldHVybiJ2YWx1ZSI9PT1hPy5ub2RlTmFtZT90LmNoaWxkcmVuLm1hcChlPT5kZWNvZGVTdHJpbmcoZS50ZXh0Q29udGVudCkpOmRlY29kZVN0cmluZyh0LnRleHRDb250ZW50KX19Y2xhc3MgU2luZ2xlSW50ZXJzZWN0b3J7I2Z0O21pblg9MS8wO21pblk9MS8wO21heFg9LTEvMDttYXhZPS0xLzA7I2N0PW51bGw7I2h0PVtdOyN1dD1bXTsjbXQ9LTE7I3B0PSExO2NvbnN0cnVjdG9yKGUpe3RoaXMuI2Z0PWU7Y29uc3QgdD1lLmRhdGEucXVhZFBvaW50cztpZih0KXtmb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTtlKz04KXt0aGlzLm1pblg9TWF0aC5taW4odGhpcy5taW5YLHRbZV0pO3RoaXMubWF4WD1NYXRoLm1heCh0aGlzLm1heFgsdFtlKzJdKTt0aGlzLm1pblk9TWF0aC5taW4odGhpcy5taW5ZLHRbZSs1XSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSx0W2UrMV0pfXQubGVuZ3RoPjgmJih0aGlzLiNjdD10KX1lbHNlW3RoaXMubWluWCx0aGlzLm1pblksdGhpcy5tYXhYLHRoaXMubWF4WV09ZS5kYXRhLnJlY3R9I2R0KGUsdCl7aWYodGhpcy5taW5YPj1lfHx0aGlzLm1heFg8PWV8fHRoaXMubWluWT49dHx8dGhpcy5tYXhZPD10KXJldHVybiExO2NvbnN0IGE9dGhpcy4jY3Q7aWYoIWEpcmV0dXJuITA7aWYodGhpcy4jbXQ+PTApe2NvbnN0IG49dGhpcy4jbXQ7aWYoIShhW25dPj1lfHxhW24rMl08PWV8fGFbbis1XT49dHx8YVtuKzFdPD10KSlyZXR1cm4hMDt0aGlzLiNtdD0tMX1mb3IobGV0IG49MCxzPWEubGVuZ3RoO248cztuKz04KWlmKCEoYVtuXT49ZXx8YVtuKzJdPD1lfHxhW24rNV0+PXR8fGFbbisxXTw9dCkpe3RoaXMuI210PW47cmV0dXJuITB9cmV0dXJuITF9YWRkR2x5cGgoZSx0LGEpe2lmKCF0aGlzLiNkdChlLHQpKXt0aGlzLmRpc2FibGVFeHRyYUNoYXJzKCk7cmV0dXJuITF9aWYodGhpcy4jdXQubGVuZ3RoPjApe3RoaXMuI2h0LnB1c2godGhpcy4jdXQuam9pbigiIikpO3RoaXMuI3V0Lmxlbmd0aD0wfXRoaXMuI2h0LnB1c2goYSk7dGhpcy4jcHQ9ITA7cmV0dXJuITB9YWRkRXh0cmFDaGFyKGUpe3RoaXMuI3B0JiZ0aGlzLiN1dC5wdXNoKGUpfWRpc2FibGVFeHRyYUNoYXJzKCl7aWYodGhpcy4jcHQpe3RoaXMuI3B0PSExO3RoaXMuI3V0Lmxlbmd0aD0wfX1zZXRUZXh0KCl7dGhpcy4jZnQuZGF0YS5vdmVybGFpZFRleHQ9dGhpcy4jaHQuam9pbigiIil9fWNvbnN0IGdmPTY0O2NsYXNzIEludGVyc2VjdG9yeyNndD1bXTsjYnQ9W107I3d0OyNqdDsja3Q7I3l0OyNxdDsjdnQ7Y29uc3RydWN0b3IoZSl7bGV0IHQ9MS8wLGE9MS8wLG49LTEvMCxzPS0xLzA7Y29uc3Qgcj10aGlzLiNndDtmb3IoY29uc3QgaSBvZiBlKXtpZighaS5kYXRhLnF1YWRQb2ludHMmJiFpLmRhdGEucmVjdCljb250aW51ZTtjb25zdCBlPW5ldyBTaW5nbGVJbnRlcnNlY3RvcihpKTtyLnB1c2goZSk7dD1NYXRoLm1pbih0LGUubWluWCk7YT1NYXRoLm1pbihhLGUubWluWSk7bj1NYXRoLm1heChuLGUubWF4WCk7cz1NYXRoLm1heChzLGUubWF4WSl9dGhpcy4jd3Q9dDt0aGlzLiNrdD1hO3RoaXMuI2p0PW47dGhpcy4jeXQ9czt0aGlzLiNxdD02My8obi10KTt0aGlzLiN2dD02My8ocy1hKTtmb3IoY29uc3QgZSBvZiByKXtjb25zdCB0PXRoaXMuI1N0KGUubWluWCxlLm1pblkpLGE9dGhpcy4jU3QoZS5tYXhYLGUubWF4WSksbj0oYS10KSVnZixzPU1hdGguZmxvb3IoKGEtdCkvZ2YpO2ZvcihsZXQgYT10O2E8PXQrcypnZjthKz1nZilmb3IobGV0IHQ9MDt0PD1uO3QrKyl7bGV0IG49dGhpcy4jYnRbYSt0XTtufHwodGhpcy4jYnRbYSt0XT1uPVtdKTtuLnB1c2goZSl9fX0jU3QoZSx0KXtyZXR1cm4gTWF0aC5mbG9vcigoZS10aGlzLiN3dCkqdGhpcy4jcXQpK01hdGguZmxvb3IoKHQtdGhpcy4ja3QpKnRoaXMuI3Z0KSpnZn1hZGRHbHlwaChlLHQsYSxuKXtjb25zdCBzPWVbNF0rdC8yLHI9ZVs1XSthLzI7aWYoczx0aGlzLiN3dHx8cjx0aGlzLiNrdHx8cz50aGlzLiNqdHx8cj50aGlzLiN5dClyZXR1cm47Y29uc3QgaT10aGlzLiNidFt0aGlzLiNTdChzLHIpXTtpZihpKWZvcihjb25zdCBlIG9mIGkpZS5hZGRHbHlwaChzLHIsbil9YWRkRXh0cmFDaGFyKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuI2d0KXQuYWRkRXh0cmFDaGFyKGUpfXNldFRleHQoKXtmb3IoY29uc3QgZSBvZiB0aGlzLiNndCllLnNldFRleHQoKX19Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fXNoaWZ0UmlnaHQoZSl7aWYoZT49MzIpe3RoaXMubG93PXRoaXMuaGlnaD4+PmUtMzJ8MDt0aGlzLmhpZ2g9MH1lbHNle3RoaXMubG93PXRoaXMubG93Pj4+ZXx0aGlzLmhpZ2g8PDMyLWU7dGhpcy5oaWdoPXRoaXMuaGlnaD4+PmV8MH19cm90YXRlUmlnaHQoZSl7bGV0IHQsYTtpZigzMiZlKXthPXRoaXMubG93O3Q9dGhpcy5oaWdofWVsc2V7dD10aGlzLmxvdzthPXRoaXMuaGlnaH1lJj0zMTt0aGlzLmxvdz10Pj4+ZXxhPDwzMi1lO3RoaXMuaGlnaD1hPj4+ZXx0PDwzMi1lfW5vdCgpe3RoaXMuaGlnaD1+dGhpcy5oaWdoO3RoaXMubG93PX50aGlzLmxvd31hZGQoZSl7Y29uc3QgdD0odGhpcy5sb3c+Pj4wKSsoZS5sb3c+Pj4wKTtsZXQgYT0odGhpcy5oaWdoPj4+MCkrKGUuaGlnaD4+PjApO3Q+NDI5NDk2NzI5NSYmKGErPTEpO3RoaXMubG93PTB8dDt0aGlzLmhpZ2g9MHxhfWNvcHlUbyhlLHQpe2VbdF09dGhpcy5oaWdoPj4+MjQmMjU1O2VbdCsxXT10aGlzLmhpZ2g+PjE2JjI1NTtlW3QrMl09dGhpcy5oaWdoPj44JjI1NTtlW3QrM109MjU1JnRoaXMuaGlnaDtlW3QrNF09dGhpcy5sb3c+Pj4yNCYyNTU7ZVt0KzVdPXRoaXMubG93Pj4xNiYyNTU7ZVt0KzZdPXRoaXMubG93Pj44JjI1NTtlW3QrN109MjU1JnRoaXMubG93fWFzc2lnbihlKXt0aGlzLmhpZ2g9ZS5oaWdoO3RoaXMubG93PWUubG93fX1jb25zdCBiZj17Z2V0IGsoKXtyZXR1cm4gc2hhZG93KHRoaXMsImsiLFtuZXcgV29yZDY0KDExMTYzNTI0MDgsMzYwOTc2NzQ1OCksbmV3IFdvcmQ2NCgxODk5NDQ3NDQxLDYwMjg5MTcyNSksbmV3IFdvcmQ2NCgzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLG5ldyBXb3JkNjQoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxuZXcgV29yZDY0KDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxuZXcgV29yZDY0KDE1MDg5NzA5OTMsMzA1MzgzNDI2NSksbmV3IFdvcmQ2NCgyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLG5ldyBXb3JkNjQoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxuZXcgV29yZDY0KDM2MjQzODEwODAsMjczNDg4MzM5NCksbmV3IFdvcmQ2NCgzMTA1OTg0MDEsMTE2NDk5NjU0MiksbmV3IFdvcmQ2NCg2MDcyMjUyNzgsMTMyMzYxMDc2NCksbmV3IFdvcmQ2NCgxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLG5ldyBXb3JkNjQoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxuZXcgV29yZDY0KDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxuZXcgV29yZDY0KDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxuZXcgV29yZDY0KDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCksbmV3IFdvcmQ2NCgzODM1MzkwNDAxLDI2NjY2MTM0NTgpLG5ldyBXb3JkNjQoNDAyMjIyNDc3NCw5NDQ3MTExMzkpLG5ldyBXb3JkNjQoMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLG5ldyBXb3JkNjQoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLG5ldyBXb3JkNjQoNzcwMjU1OTgzLDE0OTU5OTA5MDEpLG5ldyBXb3JkNjQoMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxuZXcgV29yZDY0KDE1NTUwODE2OTIsMzE3NTIxODEzMiksbmV3IFdvcmQ2NCgxOTk2MDY0OTg2LDIxOTg5NTA4MzcpLG5ldyBXb3JkNjQoMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxuZXcgV29yZDY0KDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxuZXcgV29yZDY0KDI5NTI5OTY4MDgsMjU2NjU5NDg3OSksbmV3IFdvcmQ2NCgzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLG5ldyBXb3JkNjQoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxuZXcgV29yZDY0KDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSksbmV3IFdvcmQ2NCgxMTM5MjY5OTMsMzc1ODMyNjM4MyksbmV3IFdvcmQ2NCgzMzgyNDE4OTUsMTY4NzE3OTM2KSxuZXcgV29yZDY0KDY2NjMwNzIwNSwxMTg4MTc5OTY0KSxuZXcgV29yZDY0KDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxuZXcgV29yZDY0KDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSksbmV3IFdvcmQ2NCgxMzk2MTgyMjkxLDI2NDM4MzM4MjMpLG5ldyBXb3JkNjQoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxuZXcgV29yZDY0KDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCksbmV3IFdvcmQ2NCgyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLG5ldyBXb3JkNjQoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLG5ldyBXb3JkNjQoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxuZXcgV29yZDY0KDI4MjAzMDI0MTEsMzE1ODQ1NDI3MyksbmV3IFdvcmQ2NCgzMjU5NzMwODAwLDM1MDU5NTI2NTcpLG5ldyBXb3JkNjQoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLG5ldyBXb3JkNjQoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxuZXcgV29yZDY0KDM2MDAzNTI4MDQsMTQzMjcyNTc3NiksbmV3IFdvcmQ2NCg0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLG5ldyBXb3JkNjQoMjc1NDIzMzQ0LDg1MTE2OTcyMCksbmV3IFdvcmQ2NCg0MzAyMjc3MzQsMzEwMDgyMzc1MiksbmV3IFdvcmQ2NCg1MDY5NDg2MTYsMTM2MzI1ODE5NSksbmV3IFdvcmQ2NCg2NTkwNjA1NTYsMzc1MDY4NTU5MyksbmV3IFdvcmQ2NCg4ODM5OTc4NzcsMzc4NTA1MDI4MCksbmV3IFdvcmQ2NCg5NTgxMzk1NzEsMzMxODMwNzQyNyksbmV3IFdvcmQ2NCgxMzIyODIyMjE4LDM4MTI3MjM0MDMpLG5ldyBXb3JkNjQoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxuZXcgV29yZDY0KDE3NDc4NzM3NzksMzYwMjAzNjg5OSksbmV3IFdvcmQ2NCgxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLG5ldyBXb3JkNjQoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxuZXcgV29yZDY0KDIyMjc3MzA0NTIsMjcxNjkwNDMwNiksbmV3IFdvcmQ2NCgyMzYxODUyNDI0LDQ0Mjc3NjA0NCksbmV3IFdvcmQ2NCgyNDI4NDM2NDc0LDU5MzY5ODM0NCksbmV3IFdvcmQ2NCgyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLG5ldyBXb3JkNjQoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxuZXcgV29yZDY0KDMzMjkzMjUyOTgsMzgxNTkyMDQyNyksbmV3IFdvcmQ2NCgzMzkxNTY5NjE0LDM5MjgzODM5MDApLG5ldyBXb3JkNjQoMzUxNTI2NzI3MSw1NjYyODA3MTEpLG5ldyBXb3JkNjQoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxuZXcgV29yZDY0KDQxMTg2MzAyNzEsNDAwMDIzOTk5MiksbmV3IFdvcmQ2NCgxMTY0MTg0NzQsMTkxNDEzODU1NCksbmV3IFdvcmQ2NCgxNzQyOTI0MjEsMjczMTA1NTI3MCksbmV3IFdvcmQ2NCgyODkzODAzNTYsMzIwMzk5MzAwNiksbmV3IFdvcmQ2NCg0NjAzOTMyNjksMzIwNjIwMzE1KSxuZXcgV29yZDY0KDY4NTQ3MTczMyw1ODc0OTY4MzYpLG5ldyBXb3JkNjQoODUyMTQyOTcxLDEwODY3OTI4NTEpLG5ldyBXb3JkNjQoMTAxNzAzNjI5OCwzNjU1NDMxMDApLG5ldyBXb3JkNjQoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxuZXcgV29yZDY0KDEyODgwMzM0NzAsMzQwOTg1NTE1OCksbmV3IFdvcmQ2NCgxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYpLG5ldyBXb3JkNjQoMTYwNzE2NzkxNSw5ODcxNjc0NjgpLG5ldyBXb3JkNjQoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV0pfX07ZnVuY3Rpb24gY2goZSx0LGEsbixzKXtlLmFzc2lnbih0KTtlLmFuZChhKTtzLmFzc2lnbih0KTtzLm5vdCgpO3MuYW5kKG4pO2UueG9yKHMpfWZ1bmN0aW9uIG1haihlLHQsYSxuLHMpe2UuYXNzaWduKHQpO2UuYW5kKGEpO3MuYXNzaWduKHQpO3MuYW5kKG4pO2UueG9yKHMpO3MuYXNzaWduKGEpO3MuYW5kKG4pO2UueG9yKHMpfWZ1bmN0aW9uIHNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihhKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsYSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg3KTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihhKTthLmFzc2lnbih0KTthLnNoaWZ0UmlnaHQoNik7ZS54b3IoYSl9ZnVuY3Rpb24gY2FsY3VsYXRlU0hBNTEyKGUsdCxhLG49ITEpe2xldCBzLHIsaSxvLGwsZixjLGg7aWYobil7cz1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7cj1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtpPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO289bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7bD1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7Zj1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7Yz1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7aD1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtzPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtyPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtpPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtvPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtsPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtmPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO2M9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7aD1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCB1PTEyOCpNYXRoLmNlaWwoKGErMTcpLzEyOCksbT1uZXcgVWludDhBcnJheSh1KTtsZXQgcCxkO2ZvcihwPTA7cDxhOysrcCltW3BdPWVbdCsrXTttW3ArK109MTI4O2NvbnN0IGc9dS0xNjtwPGcmJihwPWcpO3ArPTExO21bcCsrXT1hPj4+MjkmMjU1O21bcCsrXT1hPj4yMSYyNTU7bVtwKytdPWE+PjEzJjI1NTttW3ArK109YT4+NSYyNTU7bVtwKytdPWE8PDMmMjU1O2NvbnN0IGI9bmV3IEFycmF5KDgwKTtmb3IocD0wO3A8ODA7cCsrKWJbcF09bmV3IFdvcmQ2NCgwLDApO2NvbnN0e2s6d309YmY7bGV0IGo9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLHk9bmV3IFdvcmQ2NCgwLDApLHE9bmV3IFdvcmQ2NCgwLDApLHY9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLHg9bmV3IFdvcmQ2NCgwLDApLEM9bmV3IFdvcmQ2NCgwLDApO2NvbnN0IEY9bmV3IFdvcmQ2NCgwLDApLFQ9bmV3IFdvcmQ2NCgwLDApLE89bmV3IFdvcmQ2NCgwLDApLFI9bmV3IFdvcmQ2NCgwLDApO2xldCBILEQ7Zm9yKHA9MDtwPHU7KXtmb3IoZD0wO2Q8MTY7KytkKXtiW2RdLmhpZ2g9bVtwXTw8MjR8bVtwKzFdPDwxNnxtW3ArMl08PDh8bVtwKzNdO2JbZF0ubG93PW1bcCs0XTw8MjR8bVtwKzVdPDwxNnxtW3ArNl08PDh8bVtwKzddO3ArPTh9Zm9yKGQ9MTY7ZDw4MDsrK2Qpe0g9YltkXTtsaXR0bGVTaWdtYVByaW1lKEgsYltkLTJdLFIpO0guYWRkKGJbZC03XSk7bGl0dGxlU2lnbWEoTyxiW2QtMTVdLFIpO0guYWRkKE8pO0guYWRkKGJbZC0xNl0pfWouYXNzaWduKHMpO2suYXNzaWduKHIpO3kuYXNzaWduKGkpO3EuYXNzaWduKG8pO3YuYXNzaWduKGwpO1MuYXNzaWduKGYpO3guYXNzaWduKGMpO0MuYXNzaWduKGgpO2ZvcihkPTA7ZDw4MDsrK2Qpe0YuYXNzaWduKEMpO3NpZ21hUHJpbWUoTyx2LFIpO0YuYWRkKE8pO2NoKE8sdixTLHgsUik7Ri5hZGQoTyk7Ri5hZGQod1tkXSk7Ri5hZGQoYltkXSk7c2lnbWEoVCxqLFIpO21haihPLGosayx5LFIpO1QuYWRkKE8pO0g9QztDPXg7eD1TO1M9djtxLmFkZChGKTt2PXE7cT15O3k9aztrPWo7SC5hc3NpZ24oRik7SC5hZGQoVCk7aj1IfXMuYWRkKGopO3IuYWRkKGspO2kuYWRkKHkpO28uYWRkKHEpO2wuYWRkKHYpO2YuYWRkKFMpO2MuYWRkKHgpO2guYWRkKEMpfWlmKG4pe0Q9bmV3IFVpbnQ4QXJyYXkoNDgpO3MuY29weVRvKEQsMCk7ci5jb3B5VG8oRCw4KTtpLmNvcHlUbyhELDE2KTtvLmNvcHlUbyhELDI0KTtsLmNvcHlUbyhELDMyKTtmLmNvcHlUbyhELDQwKX1lbHNle0Q9bmV3IFVpbnQ4QXJyYXkoNjQpO3MuY29weVRvKEQsMCk7ci5jb3B5VG8oRCw4KTtpLmNvcHlUbyhELDE2KTtvLmNvcHlUbyhELDI0KTtsLmNvcHlUbyhELDMyKTtmLmNvcHlUbyhELDQwKTtjLmNvcHlUbyhELDQ4KTtoLmNvcHlUbyhELDU2KX1yZXR1cm4gRH1mdW5jdGlvbiBjYWxjdWxhdGVTSEEzODQoZSx0LGEpe3JldHVybiBjYWxjdWxhdGVTSEE1MTIoZSx0LGEsITApfWNvbnN0IHdmPXtnZXQgaygpe3JldHVybiBzaGFkb3codGhpcywiayIsWzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0pfX07ZnVuY3Rpb24gcm90cihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfY2goZSx0LGEpe3JldHVybiBlJnRefmUmYX1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X21haihlLHQsYSl7cmV0dXJuIGUmdF5lJmFedCZhfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfc2lnbWEoZSl7cmV0dXJuIHJvdHIoZSwyKV5yb3RyKGUsMTMpXnJvdHIoZSwyMil9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9zaWdtYVByaW1lKGUpe3JldHVybiByb3RyKGUsNilecm90cihlLDExKV5yb3RyKGUsMjUpfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfbGl0dGxlU2lnbWEoZSl7cmV0dXJuIHJvdHIoZSw3KV5yb3RyKGUsMTgpXmU+Pj4zfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfbGl0dGxlU2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDE3KV5yb3RyKGUsMTkpXmU+Pj4xMH1mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTYoZSx0LGEpe2xldCBuPTE3NzkwMzM3MDMscz0zMTQ0MTM0Mjc3LHI9MTAxMzkwNDI0MixpPTI3NzM0ODA3NjIsbz0xMzU5ODkzMTE5LGw9MjYwMDgyMjkyNCxmPTUyODczNDYzNSxjPTE1NDE0NTkyMjU7Y29uc3QgaD02NCpNYXRoLmNlaWwoKGErOSkvNjQpLHU9bmV3IFVpbnQ4QXJyYXkoaCk7bGV0IG0scDtmb3IobT0wO208YTsrK20pdVttXT1lW3QrK107dVttKytdPTEyODtjb25zdCBkPWgtODttPGQmJihtPWQpO20rPTM7dVttKytdPWE+Pj4yOSYyNTU7dVttKytdPWE+PjIxJjI1NTt1W20rK109YT4+MTMmMjU1O3VbbSsrXT1hPj41JjI1NTt1W20rK109YTw8MyYyNTU7Y29uc3QgZz1uZXcgVWludDMyQXJyYXkoNjQpLHtrOmJ9PXdmO2ZvcihtPTA7bTxoOyl7Zm9yKHA9MDtwPDE2OysrcCl7Z1twXT11W21dPDwyNHx1W20rMV08PDE2fHVbbSsyXTw8OHx1W20rM107bSs9NH1mb3IocD0xNjtwPDY0OysrcClnW3BdPWNhbGN1bGF0ZV9zaGEyNTZfbGl0dGxlU2lnbWFQcmltZShnW3AtMl0pK2dbcC03XStjYWxjdWxhdGVfc2hhMjU2X2xpdHRsZVNpZ21hKGdbcC0xNV0pK2dbcC0xNl18MDtsZXQgZSx0LGE9bixoPXMsZD1yLHc9aSxqPW8saz1sLHk9ZixxPWM7Zm9yKHA9MDtwPDY0OysrcCl7ZT1xK2NhbGN1bGF0ZV9zaGEyNTZfc2lnbWFQcmltZShqKStjYWxjdWxhdGVfc2hhMjU2X2NoKGosayx5KStiW3BdK2dbcF07dD1jYWxjdWxhdGVfc2hhMjU2X3NpZ21hKGEpK2NhbGN1bGF0ZV9zaGEyNTZfbWFqKGEsaCxkKTtxPXk7eT1rO2s9ajtqPXcrZXwwO3c9ZDtkPWg7aD1hO2E9ZSt0fDB9bj1uK2F8MDtzPXMraHwwO3I9citkfDA7aT1pK3d8MDtvPW8ranwwO2w9bCtrfDA7Zj1mK3l8MDtjPWMrcXwwfXJldHVybiBuZXcgVWludDhBcnJheShbbj4+MjQmMjU1LG4+PjE2JjI1NSxuPj44JjI1NSwyNTUmbixzPj4yNCYyNTUscz4+MTYmMjU1LHM+PjgmMjU1LDI1NSZzLHI+PjI0JjI1NSxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnIsaT4+MjQmMjU1LGk+PjE2JjI1NSxpPj44JjI1NSwyNTUmaSxvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsZj4+MjQmMjU1LGY+PjE2JjI1NSxmPj44JjI1NSwyNTUmZixjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjXSl9Y2xhc3MgRGVjcnlwdFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1hO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyZWFtLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZT8ubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rPy5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxuPWErZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIobikuc2V0KGUsYSk7dGhpcy5idWZmZXJMZW5ndGg9bn1nZXRPcmlnaW5hbFN0cmVhbSgpe3JldHVybiB0aGlzfX1jbGFzcyBBUkNGb3VyQ2lwaGVye2E9MDtiPTA7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD1uZXcgVWludDhBcnJheSgyNTYpLGE9ZS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXRbZV09ZTtmb3IobGV0IG49MCxzPTA7bjwyNTY7KytuKXtjb25zdCByPXRbbl07cz1zK3IrZVtuJWFdJjI1NTt0W25dPXRbc107dFtzXT1yfXRoaXMucz10fWVuY3J5cHRCbG9jayhlKXtsZXQgdD10aGlzLmEsYT10aGlzLmI7Y29uc3Qgbj10aGlzLnMscz1lLmxlbmd0aCxyPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgaT0wO2k8czsrK2kpe3Q9dCsxJjI1NTtjb25zdCBzPW5bdF07YT1hK3MmMjU1O2NvbnN0IG89blthXTtuW3RdPW87blthXT1zO3JbaV09ZVtpXV5uW3MrbyYyNTVdfXRoaXMuYT10O3RoaXMuYj1hO3JldHVybiByfWRlY3J5cHRCbG9jayhlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9ZW5jcnlwdChlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9fWNsYXNzIE51bGxDaXBoZXJ7ZGVjcnlwdEJsb2NrKGUpe3JldHVybiBlfWVuY3J5cHQoZSl7cmV0dXJuIGV9fWNsYXNzIEFFU0Jhc2VDaXBoZXJ7X3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTtfaW52X3M9bmV3IFVpbnQ4QXJyYXkoWzgyLDksMTA2LDIxMyw0OCw1NCwxNjUsNTYsMTkxLDY0LDE2MywxNTgsMTI5LDI0MywyMTUsMjUxLDEyNCwyMjcsNTcsMTMwLDE1NSw0NywyNTUsMTM1LDUyLDE0Miw2Nyw2OCwxOTYsMjIyLDIzMywyMDMsODQsMTIzLDE0OCw1MCwxNjYsMTk0LDM1LDYxLDIzOCw3NiwxNDksMTEsNjYsMjUwLDE5NSw3OCw4LDQ2LDE2MSwxMDIsNDAsMjE3LDM2LDE3OCwxMTgsOTEsMTYyLDczLDEwOSwxMzksMjA5LDM3LDExNCwyNDgsMjQ2LDEwMCwxMzQsMTA0LDE1MiwyMiwyMTIsMTY0LDkyLDIwNCw5MywxMDEsMTgyLDE0NiwxMDgsMTEyLDcyLDgwLDI1MywyMzcsMTg1LDIxOCw5NCwyMSw3MCw4NywxNjcsMTQxLDE1NywxMzIsMTQ0LDIxNiwxNzEsMCwxNDAsMTg4LDIxMSwxMCwyNDcsMjI4LDg4LDUsMTg0LDE3OSw2OSw2LDIwOCw0NCwzMCwxNDMsMjAyLDYzLDE1LDIsMTkzLDE3NSwxODksMywxLDE5LDEzOCwxMDcsNTgsMTQ1LDE3LDY1LDc5LDEwMywyMjAsMjM0LDE1MSwyNDIsMjA3LDIwNiwyNDAsMTgwLDIzMCwxMTUsMTUwLDE3MiwxMTYsMzQsMjMxLDE3Myw1MywxMzMsMjI2LDI0OSw1NSwyMzIsMjgsMTE3LDIyMywxMTAsNzEsMjQxLDI2LDExMywyOSw0MSwxOTcsMTM3LDExMSwxODMsOTgsMTQsMTcwLDI0LDE5MCwyNywyNTIsODYsNjIsNzUsMTk4LDIxMCwxMjEsMzIsMTU0LDIxOSwxOTIsMjU0LDEyMCwyMDUsOTAsMjQ0LDMxLDIyMSwxNjgsNTEsMTM2LDcsMTk5LDQ5LDE3NywxOCwxNiw4OSwzOSwxMjgsMjM2LDk1LDk2LDgxLDEyNywxNjksMjUsMTgxLDc0LDEzLDQ1LDIyOSwxMjIsMTU5LDE0NywyMDEsMTU2LDIzOSwxNjAsMjI0LDU5LDc3LDE3NCw0MiwyNDUsMTc2LDIwMCwyMzUsMTg3LDYwLDEzMSw4MywxNTMsOTcsMjMsNDMsNCwxMjYsMTg2LDExOSwyMTQsMzgsMjI1LDEwNSwyMCw5OSw4NSwzMywxMiwxMjVdKTtfbWl4PW5ldyBVaW50MzJBcnJheShbMCwyMzU0NzQxODcsNDcwOTQ4Mzc0LDMwMzc2NTI3Nyw5NDE4OTY3NDgsOTA4OTMzNDE1LDYwNzUzMDU1NCw3MDg3ODA4NDksMTg4Mzc5MzQ5NiwyMTE4MjE0OTk1LDE4MTc4NjY4MzAsMTY0OTYzOTIzNywxMjE1MDYxMTA4LDExODEwNDUxMTksMTQxNzU2MTY5OCwxNTE3NzY3NTI5LDM3Njc1ODY5OTIsNDAwMzA2MTE3OSw0MjM2NDI5OTkwLDQwNjkyNDY4OTMsMzYzNTczMzY2MCwzNjAyNzcwMzI3LDMyOTkyNzg0NzQsMzQwMDUyODc2OSwyNDMwMTIyMjE2LDI2NjQ1NDM3MTUsMjM2MjA5MDIzOCwyMTkzODYyNjQ1LDI4MzUxMjMzOTYsMjgwMTEwNzQwNywzMDM1NTM1MDU4LDMxMzU3NDA4ODksMzY3ODEyNDkyMywzNTc2ODcwNTEyLDMzNDEzOTQyODUsMzM3NDM2MTcwMiwzODEwNDk2MzQzLDM5Nzc2NzUzNTYsNDI3OTA4MDI1Nyw0MDQzNjEwMTg2LDI4NzY0OTQ2MjcsMjc3NjI5MjkwNCwzMDc2NjM5MDI5LDMxMTA2NTA5NDIsMjQ3MjAxMTUzNSwyNjQwMjQzMjA0LDI0MDM3Mjg2NjUsMjE2OTMwMzA1OCwxMDAxMDg5OTk1LDg5OTgzNTU4NCw2NjY0NjQ3MzMsNjk5NDMyMTUwLDU5NzI3ODQ3LDIyNjkwNjg2MCw1MzA0MDA3NTMsMjk0OTMwNjgyLDEyNzMxNjg3ODcsMTE3Mjk2NzA2NCwxNDc1NDE4NTAxLDE1MDk0MzA0MTQsMTk0MjQzNTc3NSwyMTEwNjY3NDQ0LDE4NzYyNDE4MzMsMTY0MTgxNjIyNiwyOTEwMjE5NzY2LDI3NDMwMzQxMDksMjk3NjE1MTUyMCwzMjExNjIzMTQ3LDI1MDUyMDIxMzgsMjYwNjQ1Mzk2OSwyMzAyNjkwMjUyLDIyNjk3Mjg0NTUsMzcxMTgyOTQyMiwzNTQzNTk5MjY5LDMyNDA4OTQzOTIsMzQ3NTMxMzMzMSwzODQzNjk5MDc0LDM5NDM5MDY0NDEsNDE3ODA2MjIyOCw0MTQ0MDQ3Nzc1LDEzMDY5NjczNjYsMTEzOTc4MTcwOSwxMzc0OTg4MTEyLDE2MTA0NTk3MzksMTk3NTY4MzQzNCwyMDc2OTM1MjY1LDE3NzUyNzY5MjQsMTc0MjMxNTEyNywxMDM0ODY3OTk4LDg2NjYzNzg0NSw1NjYwMjE4OTYsODAwNDQwODM1LDkyOTg3Njk4LDE5MzE5NTA2NSw0Mjk0NTYxNjQsMzk1NDQxNzExLDE5ODQ4MTI2ODUsMjAxNzc3ODU2NiwxNzg0NjYzMTk1LDE2ODM0MDcyNDgsMTMxNTU2MjE0NSwxMDgwMDk0NjM0LDEzODM4NTYzMTEsMTU1MTAzNzg4NCwxMDEwMzk4MjksMTM1MDUwMjA2LDQzNzc1NzEyMywzMzc1NTM4NjQsMTA0MjM4NTY1Nyw4MDc5NjI2MTAsNTczODA0NzgzLDc0MjAzOTAxMiwyNTMxMDY3NDUzLDI1NjQwMzMzMzQsMjMyODgyODk3MSwyMjI3NTczMDI0LDI5MzU1NjY4NjUsMjcwMDA5OTM1NCwzMDAxNzU1NjU1LDMxNjg5MzcyMjgsMzg2ODU1MjgwNSwzOTAyNTYzMTgyLDQyMDMxODExNzEsNDEwMjk3NzkxMiwzNzM2MTY0OTM3LDM1MDE3NDE4OTAsMzI2NTQ3ODc1MSwzNDMzNzEyOTgwLDExMDYwNDE1OTEsMTM0MDQ2MzEwMCwxNTc2OTc2NjA5LDE0MDg3NDkwMzQsMjA0MzIxMTQ4MywyMDA5MTk1NDcyLDE3MDg4NDgzMzMsMTgwOTA1NDE1MCw4MzI4NzcyMzEsMTA2ODM1MTM5Niw3NjY5NDU0NjUsNTk5NzYyMzU0LDE1OTQxNzk4NywxMjY0NTQ2NjQsMzYxOTI5ODc3LDQ2MzE4MDE5MCwyNzA5MjYwODcxLDI5NDM2ODIzODAsMzE3ODEwNjk2MSwzMDA5ODc5Mzg2LDI1NzI2OTcxOTUsMjUzODY4MTE4NCwyMjM2MjI4NzMzLDIzMzY0MzQ1NTAsMzUwOTg3MTEzNSwzNzQ1MzQ1MzAwLDM0NDE4NTAzNzcsMzI3NDY2NzI2NiwzOTEwMTYxOTcxLDM4NzcxOTg2NDgsNDExMDU2ODQ4NSw0MjExODE4Nzk4LDI1OTc4MDY0NzYsMjQ5NzYwNDc0MywyMjYxMDg5MTc4LDIyOTUxMDEwNzMsMjczMzg1NjE2MCwyOTAyMDg3ODUxLDMyMDI0MzcwNDYsMjk2ODAxMTQ1MywzOTM2MjkxMjg0LDM4MzUwMzY4OTUsNDEzNjQ0MDc3MCw0MTY5NDA4MjAxLDM1MzU0ODY0NTYsMzcwMjY2NTQ1OSwzNDY3MTkyMzAyLDMyMzE3MjIyMTMsMjA1MTUxODc4MCwxOTUxMzE3MDQ3LDE3MTY4OTA0MTAsMTc1MDkwMjMwNSwxMTEzODE4Mzg0LDEyODIwNTAwNzUsMTU4NDUwNDU4MiwxMzUwMDc4OTg5LDE2ODgxMDg1Miw2NzU1NjQ2MywzNzEwNDkzMzAsNDA0MDE2NzYxLDg0MTczOTU5MiwxMDA4OTE4NTk1LDc3NTU1MDgxNCw1NDAwODA3MjUsMzk2OTU2MjM2OSwzODAxMzMyMjM0LDQwMzU0ODkwNDcsNDI2OTkwNzk5NiwzNTY5MjU1MjEzLDM2Njk0NjI1NjYsMzM2Njc1NDYxOSwzMzMyNzQwMTQ0LDI2MzEwNjU0MzMsMjQ2Mzg3OTc2MiwyMTYwMTE3MDcxLDIzOTU1ODg2NzYsMjc2NzY0NTU1NywyODY4ODk3NDA2LDMxMDIwMTE3NDcsMzA2OTA0OTk2MCwyMDIwMDg0OTcsMzM3NzgzNjIsMjcwMDQwNDg3LDUwNDQ1OTQzNiw4NzU0NTEyOTMsOTc1NjU4NjQ2LDY3NTAzOTYyNyw2NDEwMjUxNTIsMjA4NDcwNDIzMywxOTE3NTE4NTYyLDE2MTU4NjEyNDcsMTg1MTMzMjg1MiwxMTQ3NTUwNjYxLDEyNDg4MDI1MTAsMTQ4NDAwNTg0MywxNDUxMDQ0MDU2LDkzMzMwMTM3MCw5NjczMTE3MjksNzMzMTU2OTcyLDYzMjk1MzcwMywyNjAzODg5NTAsMjU5NjU5MTcsMzI4NjcxODA4LDQ5NjkwNjA1OSwxMjA2NDc3ODU4LDEyMzk0NDM3NTMsMTU0MzIwODUwMCwxNDQxOTUyNTc1LDIxNDQxNjE4MDYsMTkwODY5NDI3NywxNjc1NTc3ODgwLDE4NDI3NTk0NDMsMzYxMDM2OTIyNiwzNjQ0Mzc5NTg1LDM0MDgxMTk1MTYsMzMwNzkxNjI0Nyw0MDExMTkwNTAyLDM3NzY3Njc0NjksNDA3NzM4NDQzMiw0MjQ1NjE4NjgzLDI4MDk3NzExNTQsMjg0MjczNzA0OSwzMTQ0Mzk2NDIwLDMwNDMxNDA0OTUsMjY3MzcwNTE1MCwyNDM4MjM3NjIxLDIyMDMwMzIyMzIsMjM3MDIxMzc5NV0pO19taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KS5tYXAoKGUsdCk9PnQ8MTI4P3Q8PDE6dDw8MV4yNyk7Y29uc3RydWN0b3IoKXt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7dW5yZWFjaGFibGUoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGEsbixzO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMTYpO3Iuc2V0KGUpO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2EpcltlXV49dFthXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2E9clsxM107clsxM109cls5XTtyWzldPXJbNV07cls1XT1yWzFdO3JbMV09YTthPXJbMTRdO249clsxMF07clsxNF09cls2XTtyWzEwXT1yWzJdO3JbNl09YTtyWzJdPW47YT1yWzE1XTtuPXJbMTFdO3M9cls3XTtyWzE1XT1yWzNdO3JbMTFdPWE7cls3XT1uO3JbM109cztmb3IobGV0IGU9MDtlPDE2OysrZSlyW2VdPXRoaXMuX2ludl9zW3JbZV1dO2ZvcihsZXQgYT0wLG49MTYqZTthPDE2OysrYSwrK24pclthXV49dFtuXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W3JbZV1dLG49dGhpcy5fbWl4W3JbZSsxXV0scz10aGlzLl9taXhbcltlKzJdXSxpPXRoaXMuX21peFtyW2UrM11dO2E9dF5uPj4+OF5uPDwyNF5zPj4+MTZeczw8MTZeaT4+PjI0Xmk8PDg7cltlXT1hPj4+MjQmMjU1O3JbZSsxXT1hPj4xNiYyNTU7cltlKzJdPWE+PjgmMjU1O3JbZSszXT0yNTUmYX19YT1yWzEzXTtyWzEzXT1yWzldO3JbOV09cls1XTtyWzVdPXJbMV07clsxXT1hO2E9clsxNF07bj1yWzEwXTtyWzE0XT1yWzZdO3JbMTBdPXJbMl07cls2XT1hO3JbMl09bjthPXJbMTVdO249clsxMV07cz1yWzddO3JbMTVdPXJbM107clsxMV09YTtyWzddPW47clszXT1zO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtyW2VdPXRoaXMuX2ludl9zW3JbZV1dO3JbZV1ePXRbZV19cmV0dXJuIHJ9X2VuY3J5cHQoZSx0KXtjb25zdCBhPXRoaXMuX3M7bGV0IG4scyxyO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMTYpO2kuc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKWlbZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSlpW2VdPWFbaVtlXV07cj1pWzFdO2lbMV09aVs1XTtpWzVdPWlbOV07aVs5XT1pWzEzXTtpWzEzXT1yO3I9aVsyXTtzPWlbNl07aVsyXT1pWzEwXTtpWzZdPWlbMTRdO2lbMTBdPXI7aVsxNF09cztyPWlbM107cz1pWzddO249aVsxMV07aVszXT1pWzE1XTtpWzddPXI7aVsxMV09cztpWzE1XT1uO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1pW2VdLGE9aVtlKzFdLHM9aVtlKzJdLHI9aVtlKzNdO249dF5hXnNecjtpW2VdXj1uXnRoaXMuX21peENvbFt0XmFdO2lbZSsxXV49bl50aGlzLl9taXhDb2xbYV5zXTtpW2UrMl1ePW5edGhpcy5fbWl4Q29sW3Necl07aVtlKzNdXj1uXnRoaXMuX21peENvbFtyXnRdfWZvcihsZXQgYT0wLG49MTYqZTthPDE2OysrYSwrK24paVthXV49dFtuXX1mb3IobGV0IGU9MDtlPDE2OysrZSlpW2VdPWFbaVtlXV07cj1pWzFdO2lbMV09aVs1XTtpWzVdPWlbOV07aVs5XT1pWzEzXTtpWzEzXT1yO3I9aVsyXTtzPWlbNl07aVsyXT1pWzEwXTtpWzZdPWlbMTRdO2lbMTBdPXI7aVsxNF09cztyPWlbM107cz1pWzddO249aVsxMV07aVszXT1pWzE1XTtpWzddPXI7aVsxMV09cztpWzE1XT1uO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2EpaVtlXV49dFthXTtyZXR1cm4gaX1fZGVjcnlwdEJsb2NrMihlLHQpe2NvbnN0IGE9ZS5sZW5ndGg7bGV0IG49dGhpcy5idWZmZXIscz10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IHI9W107bGV0IGk9dGhpcy5pdjtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtuW3NdPWVbdF07KytzO2lmKHM8MTYpY29udGludWU7Y29uc3QgYT10aGlzLl9kZWNyeXB0KG4sdGhpcy5fa2V5KTtmb3IobGV0IGU9MDtlPDE2OysrZSlhW2VdXj1pW2VdO2k9bjtyLnB1c2goYSk7bj1uZXcgVWludDhBcnJheSgxNik7cz0wfXRoaXMuYnVmZmVyPW47dGhpcy5idWZmZXJMZW5ndGg9czt0aGlzLml2PWk7aWYoMD09PXIubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgbz0xNipyLmxlbmd0aDtpZih0KXtjb25zdCBlPXIuYXQoLTEpO2xldCB0PWVbMTVdO2lmKHQ8PTE2KXtmb3IobGV0IGE9MTUsbj0xNi10O2E+PW47LS1hKWlmKGVbYV0hPT10KXt0PTA7YnJlYWt9by09dDtyW3IubGVuZ3RoLTFdPWUuc3ViYXJyYXkoMCwxNi10KX19Y29uc3QgbD1uZXcgVWludDhBcnJheShvKTtmb3IobGV0IGU9MCx0PTAsYT1yLmxlbmd0aDtlPGE7KytlLHQrPTE2KWwuc2V0KHJbZV0sdCk7cmV0dXJuIGx9ZGVjcnlwdEJsb2NrKGUsdCxhPW51bGwpe2NvbnN0IG49ZS5sZW5ndGgscz10aGlzLmJ1ZmZlcjtsZXQgcj10aGlzLmJ1ZmZlclBvc2l0aW9uO2lmKGEpdGhpcy5pdj1hO2Vsc2V7Zm9yKGxldCB0PTA7cjwxNiYmdDxuOysrdCwrK3Ipc1tyXT1lW3RdO2lmKHI8MTYpe3RoaXMuYnVmZmVyTGVuZ3RoPXI7cmV0dXJuIG5ldyBVaW50OEFycmF5KDApfXRoaXMuaXY9cztlPWUuc3ViYXJyYXkoMTYpfXRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZGVjcnlwdEJsb2NrPXRoaXMuX2RlY3J5cHRCbG9jazI7cmV0dXJuIHRoaXMuZGVjcnlwdEJsb2NrKGUsdCl9ZW5jcnlwdChlLHQpe2NvbnN0IGE9ZS5sZW5ndGg7bGV0IG49dGhpcy5idWZmZXIscz10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IHI9W107dHx8PW5ldyBVaW50OEFycmF5KDE2KTtmb3IobGV0IGk9MDtpPGE7KytpKXtuW3NdPWVbaV07KytzO2lmKHM8MTYpY29udGludWU7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXV49dFtlXTtjb25zdCBhPXRoaXMuX2VuY3J5cHQobix0aGlzLl9rZXkpO3Q9YTtyLnB1c2goYSk7bj1uZXcgVWludDhBcnJheSgxNik7cz0wfXRoaXMuYnVmZmVyPW47dGhpcy5idWZmZXJMZW5ndGg9czt0aGlzLml2PXQ7aWYoMD09PXIubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtjb25zdCBpPTE2KnIubGVuZ3RoLG89bmV3IFVpbnQ4QXJyYXkoaSk7Zm9yKGxldCBlPTAsdD0wLGE9ci5sZW5ndGg7ZTxhOysrZSx0Kz0xNilvLnNldChyW2VdLHQpO3JldHVybiBvfX1jbGFzcyBBRVMxMjhDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye19yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTA7dGhpcy5fa2V5U2l6ZT0xNjA7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPXRoaXMuX3Jjb24sbj1uZXcgVWludDhBcnJheSgxNzYpO24uc2V0KGUpO2ZvcihsZXQgZT0xNixzPTE7ZTwxNzY7KytzKXtsZXQgcj1uW2UtM10saT1uW2UtMl0sbz1uW2UtMV0sbD1uW2UtNF07cj10W3JdO2k9dFtpXTtvPXRbb107bD10W2xdO3JePWFbc107Zm9yKGxldCB0PTA7dDw0OysrdCl7bltlXT1yXj1uW2UtMTZdO2UrKztuW2VdPWlePW5bZS0xNl07ZSsrO25bZV09b149bltlLTE2XTtlKys7bltlXT1sXj1uW2UtMTZdO2UrK319cmV0dXJuIG59fWNsYXNzIEFFUzI1NkNpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTQ7dGhpcy5fa2V5U2l6ZT0yMjQ7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPW5ldyBVaW50OEFycmF5KDI0MCk7YS5zZXQoZSk7bGV0IG4scyxyLGksbz0xO2ZvcihsZXQgZT0zMixsPTE7ZTwyNDA7KytsKXtpZihlJTMyPT0xNil7bj10W25dO3M9dFtzXTtyPXRbcl07aT10W2ldfWVsc2UgaWYoZSUzMj09MCl7bj1hW2UtM107cz1hW2UtMl07cj1hW2UtMV07aT1hW2UtNF07bj10W25dO3M9dFtzXTtyPXRbcl07aT10W2ldO25ePW87KG88PD0xKT49MjU2JiYobz0yNTUmKDI3Xm8pKX1mb3IobGV0IHQ9MDt0PDQ7Kyt0KXthW2VdPW5ePWFbZS0zMl07ZSsrO2FbZV09c149YVtlLTMyXTtlKys7YVtlXT1yXj1hW2UtMzJdO2UrKzthW2VdPWlePWFbZS0zMl07ZSsrfX1yZXR1cm4gYX19Y2xhc3MgUERGQmFzZXtfaGFzaChlLHQsYSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgX2hhc2hgIGNhbGxlZCIpfWNoZWNrT3duZXJQYXNzd29yZChlLHQsYSxuKXtjb25zdCBzPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtzLnNldChlLDApO3Muc2V0KHQsZS5sZW5ndGgpO3Muc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLHMsYSksbil9Y2hlY2tVc2VyUGFzc3dvcmQoZSx0LGEpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7bi5zZXQoZSwwKTtuLnNldCh0LGUubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKHRoaXMuX2hhc2goZSxuLFtdKSxhKX1nZXRPd25lcktleShlLHQsYSxuKXtjb25zdCBzPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtzLnNldChlLDApO3Muc2V0KHQsZS5sZW5ndGgpO3Muc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IHI9dGhpcy5faGFzaChlLHMsYSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocikuZGVjcnlwdEJsb2NrKG4sITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxhKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgcz10aGlzLl9oYXNoKGUsbixbXSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocykuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19Y2xhc3MgUERGMTcgZXh0ZW5kcyBQREZCYXNle19oYXNoKGUsdCxhKXtyZXR1cm4gY2FsY3VsYXRlU0hBMjU2KHQsMCx0Lmxlbmd0aCl9fWNsYXNzIFBERjIwIGV4dGVuZHMgUERGQmFzZXtfaGFzaChlLHQsYSl7bGV0IG49Y2FsY3VsYXRlU0hBMjU2KHQsMCx0Lmxlbmd0aCkuc3ViYXJyYXkoMCwzMikscz1bMF0scj0wO2Zvcig7cjw2NHx8cy5hdCgtMSk+ci0zMjspe2NvbnN0IHQ9ZS5sZW5ndGgrbi5sZW5ndGgrYS5sZW5ndGgsaT1uZXcgVWludDhBcnJheSh0KTtsZXQgbz0wO2kuc2V0KGUsbyk7bys9ZS5sZW5ndGg7aS5zZXQobixvKTtvKz1uLmxlbmd0aDtpLnNldChhLG8pO2NvbnN0IGw9bmV3IFVpbnQ4QXJyYXkoNjQqdCk7Zm9yKGxldCBlPTAsYT0wO2U8NjQ7ZSsrLGErPXQpbC5zZXQoaSxhKTtzPW5ldyBBRVMxMjhDaXBoZXIobi5zdWJhcnJheSgwLDE2KSkuZW5jcnlwdChsLG4uc3ViYXJyYXkoMTYsMzIpKTtjb25zdCBmPU1hdGguc3VtUHJlY2lzZShzLnNsaWNlKDAsMTYpKSUzOzA9PT1mP249Y2FsY3VsYXRlU0hBMjU2KHMsMCxzLmxlbmd0aCk6MT09PWY/bj1jYWxjdWxhdGVTSEEzODQocywwLHMubGVuZ3RoKToyPT09ZiYmKG49Y2FsY3VsYXRlU0hBNTEyKHMsMCxzLmxlbmd0aCkpO3IrK31yZXR1cm4gbi5zdWJhcnJheSgwLDMyKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBhPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgRGVjcnlwdFN0cmVhbShlLHQsZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBhLmRlY3J5cHRCbG9jayhlLHQpfSl9ZGVjcnlwdFN0cmluZyhlKXtjb25zdCB0PW5ldyB0aGlzLlN0cmluZ0NpcGhlckNvbnN0cnVjdG9yO2xldCBhPXN0cmluZ1RvQnl0ZXMoZSk7YT10LmRlY3J5cHRCbG9jayhhLCEwKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhhKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7aWYodCBpbnN0YW5jZW9mIEFFU0Jhc2VDaXBoZXIpe2NvbnN0IGE9MTYtZS5sZW5ndGglMTY7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKS5yZXBlYXQoYSk7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgxNik7Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuKTtsZXQgcz1zdHJpbmdUb0J5dGVzKGUpO3M9dC5lbmNyeXB0KHMsbik7Y29uc3Qgcj1uZXcgVWludDhBcnJheSgxNitzLmxlbmd0aCk7ci5zZXQobik7ci5zZXQocywxNik7cmV0dXJuIGJ5dGVzVG9TdHJpbmcocil9bGV0IGE9c3RyaW5nVG9CeXRlcyhlKTthPXQuZW5jcnlwdChhKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhhKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtzdGF0aWMgZ2V0IF9kZWZhdWx0UGFzc3dvcmRCeXRlcygpe3JldHVybiBzaGFkb3codGhpcywiX2RlZmF1bHRQYXNzd29yZEJ5dGVzIixuZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pKX0jQXQoZSx0LGEsbixzLHIsaSxvLGwsZixjLGgpe2lmKHQpe2NvbnN0IGU9TWF0aC5taW4oMTI3LHQubGVuZ3RoKTt0PXQuc3ViYXJyYXkoMCxlKX1lbHNlIHQ9W107Y29uc3QgdT02PT09ZT9uZXcgUERGMjA6bmV3IFBERjE3O3JldHVybiB1LmNoZWNrVXNlclBhc3N3b3JkKHQsbyxpKT91LmdldFVzZXJLZXkodCxsLGMpOnQubGVuZ3RoJiZ1LmNoZWNrT3duZXJQYXNzd29yZCh0LG4scixhKT91LmdldE93bmVyS2V5KHQscyxyLGYpOm51bGx9I3h0KGUsdCxhLG4scyxyLGksbyl7Y29uc3QgbD00MCthLmxlbmd0aCtlLmxlbmd0aCxmPW5ldyBVaW50OEFycmF5KGwpO2xldCBjLGgsdT0wO2lmKHQpe2g9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7dTxoOysrdSlmW3VdPXRbdV19Yz0wO2Zvcig7dTwzMjspZlt1KytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzW2MrK107Zi5zZXQoYSx1KTt1Kz1hLmxlbmd0aDtmW3UrK109MjU1JnM7Zlt1KytdPXM+PjgmMjU1O2ZbdSsrXT1zPj4xNiYyNTU7Zlt1KytdPXM+Pj4yNCYyNTU7Zi5zZXQoZSx1KTt1Kz1lLmxlbmd0aDtpZihyPj00JiYhbyl7Zi5maWxsKDI1NSx1LHUrNCk7dSs9NH1sZXQgbT1jYWxjdWxhdGVNRDUoZiwwLHUpO2NvbnN0IHA9aT4+MztpZihyPj0zKWZvcihjPTA7Yzw1MDsrK2MpbT1jYWxjdWxhdGVNRDUobSwwLHApO2NvbnN0IGQ9bS5zdWJhcnJheSgwLHApO2xldCBnLGI7aWYocj49Myl7dT0wO2Yuc2V0KENpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzLHUpO3UrPTMyO2Yuc2V0KGUsdSk7dSs9ZS5sZW5ndGg7Zz1uZXcgQVJDRm91ckNpcGhlcihkKTtiPWcuZW5jcnlwdEJsb2NrKGNhbGN1bGF0ZU1ENShmLDAsdSkpO2g9ZC5sZW5ndGg7Y29uc3QgdD1uZXcgVWludDhBcnJheShoKTtmb3IoYz0xO2M8PTE5OysrYyl7Zm9yKGxldCBlPTA7ZTxoOysrZSl0W2VdPWRbZV1eYztnPW5ldyBBUkNGb3VyQ2lwaGVyKHQpO2I9Zy5lbmNyeXB0QmxvY2soYil9fWVsc2V7Zz1uZXcgQVJDRm91ckNpcGhlcihkKTtiPWcuZW5jcnlwdEJsb2NrKENpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzKX1yZXR1cm4gYi5ldmVyeSgoZSx0KT0+blt0XT09PWUpP2Q6bnVsbH0jQ3QoZSx0LGEsbil7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgzMik7bGV0IHI9MDtjb25zdCBpPU1hdGgubWluKDMyLGUubGVuZ3RoKTtmb3IoO3I8aTsrK3Ipc1tyXT1lW3JdO2xldCBvPTA7Zm9yKDtyPDMyOylzW3IrK109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS5fZGVmYXVsdFBhc3N3b3JkQnl0ZXNbbysrXTtsZXQgbD1jYWxjdWxhdGVNRDUocywwLHIpO2NvbnN0IGY9bj4+MztpZihhPj0zKWZvcihvPTA7bzw1MDsrK28pbD1jYWxjdWxhdGVNRDUobCwwLGwubGVuZ3RoKTtsZXQgYyxoO2lmKGE+PTMpe2g9dDtjb25zdCBlPW5ldyBVaW50OEFycmF5KGYpO2ZvcihvPTE5O28+PTA7by0tKXtmb3IobGV0IHQ9MDt0PGY7Kyt0KWVbdF09bFt0XV5vO2M9bmV3IEFSQ0ZvdXJDaXBoZXIoZSk7aD1jLmVuY3J5cHRCbG9jayhoKX19ZWxzZXtjPW5ldyBBUkNGb3VyQ2lwaGVyKGwuc3ViYXJyYXkoMCxmKSk7aD1jLmVuY3J5cHRCbG9jayh0KX1yZXR1cm4gaH0jSXQoZSx0LGEsbj0hMSl7Y29uc3Qgcz1hLmxlbmd0aCxyPW5ldyBVaW50OEFycmF5KHMrOSk7ci5zZXQoYSk7bGV0IGk9cztyW2krK109MjU1JmU7cltpKytdPWU+PjgmMjU1O3JbaSsrXT1lPj4xNiYyNTU7cltpKytdPTI1NSZ0O3JbaSsrXT10Pj44JjI1NTtpZihuKXtyW2krK109MTE1O3JbaSsrXT02NTtyW2krK109MTA4O3JbaSsrXT04NH1yZXR1cm4gY2FsY3VsYXRlTUQ1KHIsMCxpKS5zdWJhcnJheSgwLE1hdGgubWluKHMrNSwxNikpfSNGdChlLHQsYSxuLHMpe2lmKCEodCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjcnlwdCBmaWx0ZXIgbmFtZS4iKTtjb25zdCByPXRoaXMsaT1lLmdldCh0Lm5hbWUpLG89aT8uZ2V0KCJDRk0iKTtpZighb3x8Ik5vbmUiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgTnVsbENpcGhlcn07aWYoIlYyIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoci4jSXQoYSxuLHMsITEpKX07aWYoIkFFU1YyIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFFUzEyOENpcGhlcihyLiNJdChhLG4scywhMCkpfTtpZigiQUVTVjMiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHMpfTt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gY3J5cHRvIG1ldGhvZCIpfWNvbnN0cnVjdG9yKGUsdCxhKXtjb25zdCBuPWUuZ2V0KCJGaWx0ZXIiKTtpZighaXNOYW1lKG4sIlN0YW5kYXJkIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPW4ubmFtZTt0aGlzLmRpY3Q9ZTtjb25zdCBzPWUuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fDEhPT1zJiYyIT09cyYmNCE9PXMmJjUhPT1zKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG0iKTt0aGlzLmFsZ29yaXRobT1zO2xldCByPWUuZ2V0KCJMZW5ndGgiKTtpZighcilpZihzPD0zKXI9NDA7ZWxzZXtjb25zdCB0PWUuZ2V0KCJDRiIpLGE9ZS5nZXQoIlN0bUYiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmYSBpbnN0YW5jZW9mIE5hbWUpe3Quc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGU9dC5nZXQoYS5uYW1lKTtyPWU/LmdldCgiTGVuZ3RoIil8fDEyODtyPDQwJiYocjw8PTMpfX1pZighTnVtYmVyLmlzSW50ZWdlcihyKXx8cjw0MHx8ciU4IT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoIik7Y29uc3QgaT1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJPIikpLG89c3RyaW5nVG9CeXRlcyhlLmdldCgiVSIpKSxsPWkuc3ViYXJyYXkoMCwzMiksZj1vLnN1YmFycmF5KDAsMzIpLGM9ZS5nZXQoIlAiKSxoPWUuZ2V0KCJSIiksdT0oND09PXN8fDU9PT1zKSYmITEhPT1lLmdldCgiRW5jcnlwdE1ldGFkYXRhIik7dGhpcy5lbmNyeXB0TWV0YWRhdGE9dTtjb25zdCBtPXN0cmluZ1RvQnl0ZXModCk7bGV0IHAsZDtpZihhKXtpZig2PT09aCl0cnl7YT11dGY4U3RyaW5nVG9TdHJpbmcoYSl9Y2F0Y2h7d2FybigiQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeTogVW5hYmxlIHRvIGNvbnZlcnQgVVRGOCBlbmNvZGVkIHBhc3N3b3JkLiIpfXA9c3RyaW5nVG9CeXRlcyhhKX1pZig1IT09cylkPXRoaXMuI3h0KG0scCxsLGYsYyxoLHIsdSk7ZWxzZXtjb25zdCB0PWkuc3ViYXJyYXkoMzIsNDApLGE9aS5zdWJhcnJheSg0MCw0OCksbj1vLnN1YmFycmF5KDAsNDgpLHM9by5zdWJhcnJheSgzMiw0MCkscj1vLnN1YmFycmF5KDQwLDQ4KSxjPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk9FIikpLHU9c3RyaW5nVG9CeXRlcyhlLmdldCgiVUUiKSksbT1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJQZXJtcyIpKTtkPXRoaXMuI0F0KGgscCxsLHQsYSxuLGYscyxyLGMsdSxtKX1pZighZCl7aWYoIWEpdGhyb3cgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKCJObyBwYXNzd29yZCBnaXZlbiIsWnQpO2NvbnN0IGU9dGhpcy4jQ3QocCxsLGgscik7ZD10aGlzLiN4dChtLGUsbCxmLGMsaCxyLHUpfWlmKCFkKXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiSW5jb3JyZWN0IFBhc3N3b3JkIixlYSk7aWYoND09PXMmJmQubGVuZ3RoPDE2KXt0aGlzLmVuY3J5cHRpb25LZXk9bmV3IFVpbnQ4QXJyYXkoMTYpO3RoaXMuZW5jcnlwdGlvbktleS5zZXQoZCl9ZWxzZSB0aGlzLmVuY3J5cHRpb25LZXk9ZDtpZihzPj00KXtjb25zdCB0PWUuZ2V0KCJDRiIpO3QgaW5zdGFuY2VvZiBEaWN0JiYodC5zdXBwcmVzc0VuY3J5cHRpb249ITApO3RoaXMuY2Y9dDt0aGlzLnN0bWY9ZS5nZXQoIlN0bUYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7dGhpcy5zdHJmPWUuZ2V0KCJTdHJGIil8fE5hbWUuZ2V0KCJJZGVudGl0eSIpO3RoaXMuZWZmPWUuZ2V0KCJFRkYiKXx8dGhpcy5zdG1mfX1jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZSx0KXtpZig0PT09dGhpcy5hbGdvcml0aG18fDU9PT10aGlzLmFsZ29yaXRobSlyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybSh0aGlzLiNGdCh0aGlzLmNmLHRoaXMuc3RyZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSx0aGlzLiNGdCh0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgYT10aGlzLiNJdChlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSxjaXBoZXJDb25zdHJ1Y3Rvcj1mdW5jdGlvbigpe3JldHVybiBuZXcgQVJDRm91ckNpcGhlcihhKX07cmV0dXJuIG5ldyBDaXBoZXJUcmFuc2Zvcm0oY2lwaGVyQ29uc3RydWN0b3IsY2lwaGVyQ29uc3RydWN0b3IpfX1jbGFzcyBYUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy5feHJlZlN0bXM9bmV3IFNldDt0aGlzLl9jYWNoZU1hcD1uZXcgTWFwO3RoaXMuX3BlbmRpbmdSZWZzPW5ldyBSZWZTZXQ7dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT1udWxsO3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1nZXROZXdQZXJzaXN0ZW50UmVmKGUpe251bGw9PT10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtJiYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0rKzt0aGlzLl9jYWNoZU1hcC5zZXQodCxlKTtyZXR1cm4gUmVmLmdldCh0LDApfWdldE5ld1RlbXBvcmFyeVJlZigpe2lmKG51bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0pe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxO2lmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0pe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bmV3IE1hcDtmb3IobGV0IGU9dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtO2U8dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bTtlKyspe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUuc2V0KGUsdGhpcy5fY2FjaGVNYXAuZ2V0KGUpKTt0aGlzLl9jYWNoZU1hcC5kZWxldGUoZSl9fX1yZXR1cm4gUmVmLmdldCh0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO2lmKHRoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUpZm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlKXRoaXMuX2NhY2hlTWFwLnNldChlLHQpO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsYSxuO2lmKGUpe3dhcm4oIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7YT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJFbmNyeXB0IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihhIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiSUQiKSxuPWU/Lmxlbmd0aD9lWzBdOiIiO2Euc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeShhLG4sdGhpcy5wZGZNYW5hZ2VyLnBhc3N3b3JkKX10cnl7bj10LmdldCgiUm9vdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJSb290IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihuIGluc3RhbmNlb2YgRGljdCl0cnl7aWYobi5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIERpY3Qpe3RoaXMucm9vdD1uO3JldHVybn19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIlBhZ2VzIiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFJvb3QgcmVmZXJlbmNlLiIpfXByb2Nlc3NYUmVmVGFibGUoZSl7InRhYmxlU3RhdGUiaW4gdGhpc3x8KHRoaXMudGFibGVTdGF0ZT17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfSk7aWYoIWlzQ21kKHRoaXMucmVhZFhSZWZUYWJsZShlKSwidHJhaWxlciIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnkiKTtsZXQgdD1lLmdldE9iaigpO3QgaW5zdGFuY2VvZiBEaWN0fHwhdC5kaWN0fHwodD10LmRpY3QpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgcGFyc2UgdHJhaWxlciBkaWN0aW9uYXJ5Iik7ZGVsZXRlIHRoaXMudGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0sYT10aGlzLnRhYmxlU3RhdGU7dC5wb3M9YS5zdHJlYW1Qb3M7ZS5idWYxPWEucGFyc2VyQnVmMTtlLmJ1ZjI9YS5wYXJzZXJCdWYyO2xldCBuO2Zvcig7Oyl7aWYoISgiZmlyc3RFbnRyeU51bSJpbiBhKXx8ISgiZW50cnlDb3VudCJpbiBhKSl7aWYoaXNDbWQobj1lLmdldE9iaigpLCJ0cmFpbGVyIikpYnJlYWs7YS5maXJzdEVudHJ5TnVtPW47YS5lbnRyeUNvdW50PWUuZ2V0T2JqKCl9bGV0IHM9YS5maXJzdEVudHJ5TnVtO2NvbnN0IHI9YS5lbnRyeUNvdW50O2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpfHwhTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogd3JvbmcgdHlwZXMgaW4gc3Vic2VjdGlvbiBoZWFkZXIiKTtmb3IobGV0IG49YS5lbnRyeU51bTtuPHI7bisrKXthLnN0cmVhbVBvcz10LnBvczthLmVudHJ5TnVtPW47YS5wYXJzZXJCdWYxPWUuYnVmMTthLnBhcnNlckJ1ZjI9ZS5idWYyO2NvbnN0IGk9e307aS5vZmZzZXQ9ZS5nZXRPYmooKTtpLmdlbj1lLmdldE9iaigpO2NvbnN0IG89ZS5nZXRPYmooKTtpZihvIGluc3RhbmNlb2YgQ21kKXN3aXRjaChvLmNtZCl7Y2FzZSJmIjppLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjppLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihpLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKGkuZ2VuKXx8IWkuZnJlZSYmIWkudW5jb21wcmVzc2VkKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiBYUmVmIHN1YnNlY3Rpb246ICR7c30sICR7cn1gKTswPT09biYmaS5mcmVlJiYxPT09cyYmKHM9MCk7dGhpcy5lbnRyaWVzW24rc118fCh0aGlzLmVudHJpZXNbbitzXT1pKX1hLmVudHJ5TnVtPTA7YS5zdHJlYW1Qb3M9dC5wb3M7YS5wYXJzZXJCdWYxPWUuYnVmMTthLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBhLmZpcnN0RW50cnlOdW07ZGVsZXRlIGEuZW50cnlDb3VudH1pZih0aGlzLmVudHJpZXNbMF0mJiF0aGlzLmVudHJpZXNbMF0uZnJlZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogdW5leHBlY3RlZCBmaXJzdCBvYmplY3QiKTtyZXR1cm4gbn1wcm9jZXNzWFJlZlN0cmVhbShlKXtpZighKCJzdHJlYW1TdGF0ZSJpbiB0aGlzKSl7Y29uc3R7ZGljdDp0LHBvczphfT1lLG49dC5nZXQoIlciKSxzPXQuZ2V0KCJJbmRleCIpfHxbMCx0LmdldCgiU2l6ZSIpXTt0aGlzLnN0cmVhbVN0YXRlPXtlbnRyeVJhbmdlczpzLGJ5dGVXaWR0aHM6bixlbnRyeU51bTowLHN0cmVhbVBvczphfX10aGlzLnJlYWRYUmVmU3RyZWFtKGUpO2RlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlO3JldHVybiBlLmRpY3R9cmVhZFhSZWZTdHJlYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbVN0YXRlO2UucG9zPXQuc3RyZWFtUG9zO2NvbnN0W2EsbixzXT10LmJ5dGVXaWR0aHMscj10LmVudHJ5UmFuZ2VzO2Zvcig7ci5sZW5ndGg+MDspe2NvbnN0W2ksb109cjtpZighTnVtYmVyLmlzSW50ZWdlcihpKXx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgcmFuZ2UgZmllbGRzOiAke2l9LCAke299YCk7aWYoIU51bWJlci5pc0ludGVnZXIoYSl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHwhTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke2l9LCAke299YCk7Zm9yKGxldCByPXQuZW50cnlOdW07cjxvOysrcil7dC5lbnRyeU51bT1yO3Quc3RyZWFtUG9zPWUucG9zO2xldCBvPTAsbD0wLGY9MDtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICd0eXBlJy4iKTtvPW88PDh8dH0wPT09YSYmKG89MSk7Zm9yKGxldCB0PTA7dDxuOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnb2Zmc2V0Jy4iKTtsPWw8PDh8dH1mb3IobGV0IHQ9MDt0PHM7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtmPWY8PDh8dH1jb25zdCBjPXt9O2Mub2Zmc2V0PWw7Yy5nZW49Zjtzd2l0Y2gobyl7Y2FzZSAwOmMuZnJlZT0hMDticmVhaztjYXNlIDE6Yy51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgdHlwZTogJHtvfWApfXRoaXMuZW50cmllc1tpK3JdfHwodGhpcy5lbnRyaWVzW2krcl09Yyl9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Iuc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBhPSIiLG49ZVt0XTtmb3IoOzEwIT09biYmMTMhPT1uJiY2MCE9PW4mJiEoKyt0Pj1lLmxlbmd0aCk7KXthKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pO249ZVt0XX1yZXR1cm4gYX1mdW5jdGlvbiBza2lwVW50aWwoZSx0LGEpe2NvbnN0IG49YS5sZW5ndGgscz1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7dDxzOyl7bGV0IHM9MDtmb3IoO3M8biYmZVt0K3NdPT09YVtzXTspKytzO2lmKHM+PW4pYnJlYWs7dCsrO3IrK31yZXR1cm4gcn1jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGE9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLG49bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSkscz1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHI9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCBpPXRoaXMuc3RyZWFtO2kucG9zPTA7Y29uc3Qgbz1pLmdldEJ5dGVzKCksbD1ieXRlc1RvU3RyaW5nKG8pLGY9by5sZW5ndGg7bGV0IGM9aS5zdGFydDtjb25zdCBoPVtdLHU9W107Zm9yKDtjPGY7KXtsZXQgbT1vW2NdO2lmKDk9PT1tfHwxMD09PW18fDEzPT09bXx8MzI9PT1tKXsrK2M7Y29udGludWV9aWYoMzc9PT1tKXtkb3srK2M7aWYoYz49ZilicmVhazttPW9bY119d2hpbGUoMTAhPT1tJiYxMyE9PW0pO2NvbnRpbnVlfWNvbnN0IHA9cmVhZFRva2VuKG8sYyk7bGV0IGQ7aWYocC5zdGFydHNXaXRoKCJ4cmVmIikmJig0PT09cC5sZW5ndGh8fC9ccy8udGVzdChwWzRdKSkpe2MrPXNraXBVbnRpbChvLGMsbik7aC5wdXNoKGMpO2MrPXNraXBVbnRpbChvLGMscyl9ZWxzZSBpZihkPWEuZXhlYyhwKSl7Y29uc3QgdD0wfGRbMV0sYT0wfGRbMl0sbj1jK3AubGVuZ3RoO2xldCBzLGg9ITE7aWYodGhpcy5lbnRyaWVzW3RdKXtpZih0aGlzLmVudHJpZXNbdF0uZ2VuPT09YSl0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGkubWFrZVN1YlN0cmVhbShuKSl9KS5nZXRPYmooKTtoPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtwfSk6ICIke2V9Ii5gKTpoPSEwfX1lbHNlIGg9ITA7aCYmKHRoaXMuZW50cmllc1t0XT17b2Zmc2V0OmMtaS5zdGFydCxnZW46YSx1bmNvbXByZXNzZWQ6ITB9KTtlLmxhc3RJbmRleD1uO2NvbnN0IG09ZS5leGVjKGwpO2lmKG0pe3M9ZS5sYXN0SW5kZXgrMS1jO2lmKCJlbmRvYmoiIT09bVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHttWzFdfSIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO3MtPW1bMV0ubGVuZ3RoKzF9fWVsc2Ugcz1mLWM7Y29uc3QgZz1vLnN1YmFycmF5KGMsYytzKSxiPXNraXBVbnRpbChnLDAscik7aWYoYjxzJiZnW2IrNV08NjQpe3UucHVzaChjLWkuc3RhcnQpO3RoaXMuX3hyZWZTdG1zLmFkZChjLWkuc3RhcnQpfWMrPXN9ZWxzZSBpZihwLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1wLmxlbmd0aHx8L1xzLy50ZXN0KHBbN10pKSl7aC5wdXNoKGMpO2NvbnN0IGU9YytwLmxlbmd0aDtsZXQgYTt0Lmxhc3RJbmRleD1lO2NvbnN0IG49dC5leGVjKGwpO2lmKG4pe2E9dC5sYXN0SW5kZXgrMS1jO2lmKCJzdGFydHhyZWYiIT09blsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHtuWzFdfSIgYWZ0ZXIgInRyYWlsZXIiLCBjYXVzZWQgYnkgbWlzc2luZyAic3RhcnR4cmVmIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTthLT1uWzFdLmxlbmd0aCsxfX1lbHNlIGE9Zi1jO2MrPWF9ZWxzZSBjKz1wLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIHUpe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1jb25zdCBtPVtdO2xldCBwLGQsZz0hMTtmb3IoY29uc3QgZSBvZiBoKXtpLnBvcz1lO2NvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSk7aWYoIWlzQ21kKHQuZ2V0T2JqKCksInRyYWlsZXIiKSljb250aW51ZTtjb25zdCBhPXQuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIERpY3Qpe20ucHVzaChhKTthLmhhcygiRW5jcnlwdCIpJiYoZz0hMCl9fWZvcihjb25zdCBlIG9mWy4uLm0sImdlbkZhbGxiYWNrIiwuLi5tXSl7aWYoImdlbkZhbGxiYWNrIj09PWUpe2lmKCFkKWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMDtjb250aW51ZX1sZXQgdD0hMTt0cnl7Y29uc3QgYT1lLmdldCgiUm9vdCIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IG49YS5nZXQoIlBhZ2VzIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3Qgcz1uLmdldCgiQ291bnQiKTtOdW1iZXIuaXNJbnRlZ2VyKHMpJiYodD0hMCl9Y2F0Y2goZSl7ZD1lO2NvbnRpbnVlfWlmKHQmJighZ3x8ZS5oYXMoIkVuY3J5cHQiKSkmJmUuaGFzKCJJRCIpKXJldHVybiBlO3A9ZX1pZihwKXJldHVybiBwO2lmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFtLmxlbmd0aClmb3IoY29uc3QgZSBpbiB0aGlzLmVudHJpZXMpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO2lmKCF0KWNvbnRpbnVlO2NvbnN0IGE9UmVmLmdldChwYXJzZUludChlLDEwKSx0Lmdlbik7bGV0IG47dHJ5e249dGhpcy5mZXRjaChhKX1jYXRjaHtjb250aW51ZX1uIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKG49bi5kaWN0KTtpZihuIGluc3RhbmNlb2YgRGljdCYmbi5oYXMoIlJvb3QiKSlyZXR1cm4gbn10aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1uZXcgU2V0O2Zvcig7dGhpcy5zdGFydFhSZWZRdWV1ZS5sZW5ndGg7KXt0cnl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKGEuaGFzKGUpKXt3YXJuKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1hLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3Qgbj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIodCkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2xldCBzLHI9bi5nZXRPYmooKTtpZihpc0NtZChyLCJ4cmVmIikpe3M9dGhpcy5wcm9jZXNzWFJlZlRhYmxlKG4pO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1zKTtyPXMuZ2V0KCJYUmVmU3RtIik7aWYoTnVtYmVyLmlzSW50ZWdlcihyKSYmIXRoaXMuX3hyZWZTdG1zLmhhcyhyKSl7dGhpcy5feHJlZlN0bXMuYWRkKHIpO3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChyKX19ZWxzZXtpZighTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBzdHJlYW0gaGVhZGVyIik7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKG4uZ2V0T2JqKCkpJiZpc0NtZChuLmdldE9iaigpLCJvYmoiKSYmKHI9bi5nZXRPYmooKSlpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSIpO3M9dGhpcy5wcm9jZXNzWFJlZlN0cmVhbShyKTt0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9cyk7aWYoIXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGYWlsZWQgdG8gcmVhZCBYUmVmIHN0cmVhbSIpfXI9cy5nZXQoIlByZXYiKTtOdW1iZXIuaXNJbnRlZ2VyKHIpP3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChyKTpyIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goci5udW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIih3aGlsZSByZWFkaW5nIFhSZWYpOiAiK2UpfXRoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1pZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDtpZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9ufWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO3JldHVybiB0JiYhdC5mcmVlJiZ0Lm9mZnNldD90Om51bGx9ZmV0Y2hJZlJlZihlLHQ9ITEpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRXJyb3IoInJlZiBvYmplY3QgaXMgbm90IGEgcmVmZXJlbmNlIik7Y29uc3QgYT1lLm51bSxuPXRoaXMuX2NhY2hlTWFwLmdldChhKTtpZih2b2lkIDAhPT1uKXtuIGluc3RhbmNlb2YgRGljdCYmIW4ub2JqSWQmJihuLm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIG59bGV0IHM9dGhpcy5nZXRFbnRyeShhKTtpZihudWxsPT09cylyZXR1cm4gcztpZih0aGlzLl9wZW5kaW5nUmVmcy5oYXMoZSkpe3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKTt3YXJuKGBJZ25vcmluZyBjaXJjdWxhciByZWZlcmVuY2U6ICR7ZX0uYCk7cmV0dXJuIGlhfXRoaXMuX3BlbmRpbmdSZWZzLnB1dChlKTt0cnl7cz1zLnVuY29tcHJlc3NlZD90aGlzLmZldGNoVW5jb21wcmVzc2VkKGUscyx0KTp0aGlzLmZldGNoQ29tcHJlc3NlZChlLHMsdCk7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpfWNhdGNoKHQpe3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKTt0aHJvdyB0fXMgaW5zdGFuY2VvZiBEaWN0P3Mub2JqSWQ9ZS50b1N0cmluZygpOnMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYocy5kaWN0Lm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIHN9ZmV0Y2hVbmNvbXByZXNzZWQoZSx0LGE9ITEpe2NvbnN0IG49ZS5nZW47bGV0IHM9ZS5udW07aWYodC5nZW4hPT1uKXtjb25zdCByPWBJbmNvbnNpc3RlbnQgZ2VuZXJhdGlvbiBpbiBYUmVmOiAke2V9YDtpZih0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2smJnQuZ2VuPG4pe3dhcm4ocik7cmV0dXJuIHRoaXMuZmV0Y2hVbmNvbXByZXNzZWQoUmVmLmdldChzLHQuZ2VuKSx0LGEpfXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24ocil9Y29uc3Qgcj10aGlzLnN0cmVhbS5tYWtlU3ViU3RyZWFtKHQub2Zmc2V0K3RoaXMuc3RyZWFtLnN0YXJ0KSxpPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihyKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSksbz1pLmdldE9iaigpLGw9aS5nZXRPYmooKSxmPWkuZ2V0T2JqKCk7aWYobyE9PXN8fGwhPT1ufHwhKGYgaW5zdGFuY2VvZiBDbWQpKXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7aWYoIm9iaiIhPT1mLmNtZCl7aWYoZi5jbWQuc3RhcnRzV2l0aCgib2JqIikpe3M9cGFyc2VJbnQoZi5jbWQuc3Vic3RyaW5nKDMpLDEwKTtpZighTnVtYmVyLmlzTmFOKHMpKXJldHVybiBzfXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCl9KHQ9dGhpcy5lbmNyeXB0JiYhYT9pLmdldE9iaih0aGlzLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKHMsbikpOmkuZ2V0T2JqKCkpaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHx0aGlzLl9jYWNoZU1hcC5zZXQocyx0KTtyZXR1cm4gdH1mZXRjaENvbXByZXNzZWQoZSx0LGE9ITEpe2NvbnN0IG49dC5vZmZzZXQscz10aGlzLmZldGNoKFJlZi5nZXQobiwwKSk7aWYoIShzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJiYWQgT2JqU3RtIHN0cmVhbSIpO2NvbnN0IHI9cy5kaWN0LmdldCgiRmlyc3QiKSxpPXMuZGljdC5nZXQoIk4iKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKXx8IU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZpcnN0IGFuZCBuIHBhcmFtZXRlcnMgZm9yIE9ialN0bSBzdHJlYW0iKTtsZXQgbz1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIocykseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2NvbnN0IGw9bmV3IEFycmF5KGkpLGY9bmV3IEFycmF5KGkpO2ZvcihsZXQgZT0wO2U8aTsrK2Upe2NvbnN0IHQ9by5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYGludmFsaWQgb2JqZWN0IG51bWJlciBpbiB0aGUgT2JqU3RtIHN0cmVhbTogJHt0fWApO2NvbnN0IGE9by5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYGludmFsaWQgb2JqZWN0IG9mZnNldCBpbiB0aGUgT2JqU3RtIHN0cmVhbTogJHthfWApO2xbZV09dDtjb25zdCBzPXRoaXMuZ2V0RW50cnkodCk7cz8ub2Zmc2V0PT09biYmcy5nZW4hPT1lJiYocy5nZW49ZSk7ZltlXT1hfWNvbnN0IGM9KHMuc3RhcnR8fDApK3IsaD1uZXcgQXJyYXkoaSk7Zm9yKGxldCBlPTA7ZTxpOysrZSl7Y29uc3QgdD1lPGktMT9mW2UrMV0tZltlXTp2b2lkIDA7aWYodDwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7bz1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIocy5tYWtlU3ViU3RyZWFtKGMrZltlXSx0LHMuZGljdCkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBhPW8uZ2V0T2JqKCk7aFtlXT1hO2lmKGEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IHI9bFtlXSx1PXRoaXMuZW50cmllc1tyXTt1JiZ1Lm9mZnNldD09PW4mJnUuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KHIsYSl9aWYodm9pZCAwPT09KHQ9aFt0Lmdlbl0pKXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAoY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO3JldHVybiB0fWFzeW5jIGZldGNoSWZSZWZBc3luYyhlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2hBc3luYyhlLHQpOmV9YXN5bmMgZmV0Y2hBc3luYyhlLHQpe3RyeXtyZXR1cm4gdGhpcy5mZXRjaChlLHQpfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBhO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoYS5iZWdpbixhLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19Y29uc3QgamY9WzAsMCw2MTIsNzkyXTtjbGFzcyBQYWdleyNUdD1udWxsO2NvbnN0cnVjdG9yKHtwZGZNYW5hZ2VyOmUseHJlZjp0LHBhZ2VJbmRleDphLHBhZ2VEaWN0Om4scmVmOnMsZ2xvYmFsSWRGYWN0b3J5OnIsZm9udENhY2hlOmksYnVpbHRJbkNNYXBDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpsLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpmLGdsb2JhbEltYWdlQ2FjaGU6YyxzeXN0ZW1Gb250Q2FjaGU6aCxub25CbGVuZE1vZGVzU2V0OnUseGZhRmFjdG9yeTptfSl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5wYWdlSW5kZXg9YTt0aGlzLnBhZ2VEaWN0PW47dGhpcy54cmVmPXQ7dGhpcy5yZWY9czt0aGlzLmZvbnRDYWNoZT1pO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1vO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPWw7dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGU9Zjt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9Yzt0aGlzLnN5c3RlbUZvbnRDYWNoZT1oO3RoaXMubm9uQmxlbmRNb2Rlc1NldD11O3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1lLmV2YWx1YXRvck9wdGlvbnM7dGhpcy54ZmFGYWN0b3J5PW07Y29uc3QgcD17b2JqOjB9O3RoaXMuX2xvY2FsSWRGYWN0b3J5PWNsYXNzIGV4dGVuZHMgcntzdGF0aWMgY3JlYXRlT2JqSWQoKXtyZXR1cm5gcCR7YX1fJHsrK3Aub2JqfWB9c3RhdGljIGdldFBhZ2VPYmpJZCgpe3JldHVybmBwJHtzLnRvU3RyaW5nKCl9YH19fSNPdChlLHQ9dGhpcy5wYWdlSW5kZXgpe3JldHVybiBuZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KX1jcmVhdGVBbm5vdGF0aW9uRXZhbHVhdG9yKGUpe3JldHVybiB0aGlzLiNPdChlKX0jUnQoZSx0PSExKXtjb25zdCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dGhpcy5wYWdlRGljdCxrZXk6ZSxnZXRBcnJheTp0LHN0b3BXaGVuRm91bmQ6ITF9KTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT8xIT09YS5sZW5ndGgmJmFbMF1pbnN0YW5jZW9mIERpY3Q/RGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5OmF9KTphWzBdOmF9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5wYWdlRGljdC5nZXRBcnJheSgiQ29udGVudHMiKX1nZXQgcmVzb3VyY2VzKCl7Y29uc3QgZT10aGlzLiNSdCgiUmVzb3VyY2VzIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZXNvdXJjZXMiLGUgaW5zdGFuY2VvZiBEaWN0P2U6RGljdC5lbXB0eSl9Z2V0Qm91bmRpbmdCb3goZSl7aWYodGhpcy54ZmFEYXRhKXJldHVybiB0aGlzLnhmYURhdGEuYmJveDtjb25zdCB0PWxvb2t1cE5vcm1hbFJlY3QodGhpcy4jUnQoZSwhMCksbnVsbCk7aWYodCl7aWYodFsyXS10WzBdPjAmJnRbM10tdFsxXT4wKXJldHVybiB0O3dhcm4oYEVtcHR5LCBvciBpbnZhbGlkLCAvJHtlfSBlbnRyeS5gKX1yZXR1cm4gbnVsbH1nZXQgbWVkaWFCb3goKXtyZXR1cm4gc2hhZG93KHRoaXMsIm1lZGlhQm94Iix0aGlzLmdldEJvdW5kaW5nQm94KCJNZWRpYUJveCIpfHxqZil9Z2V0IGNyb3BCb3goKXtyZXR1cm4gc2hhZG93KHRoaXMsImNyb3BCb3giLHRoaXMuZ2V0Qm91bmRpbmdCb3goIkNyb3BCb3giKXx8dGhpcy5tZWRpYUJveCl9Z2V0IHVzZXJVbml0KCl7Y29uc3QgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXJVbml0IiwibnVtYmVyIj09dHlwZW9mIGUmJmU+MD9lOjEpfWdldCB2aWV3KCl7Y29uc3R7Y3JvcEJveDplLG1lZGlhQm94OnR9PXRoaXM7aWYoZSE9PXQmJiFpc0FycmF5RXF1YWwoZSx0KSl7Y29uc3QgYT1VdGlsLmludGVyc2VjdChlLHQpO2lmKGEmJmFbMl0tYVswXT4wJiZhWzNdLWFbMV0+MClyZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLGEpO3dhcm4oIkVtcHR5IC9Dcm9wQm94IGFuZCAvTWVkaWFCb3ggaW50ZXJzZWN0aW9uLiIpfXJldHVybiBzaGFkb3codGhpcywidmlldyIsdCl9Z2V0IHJvdGF0ZSgpe2xldCBlPXRoaXMuI1J0KCJSb3RhdGUiKXx8MDtlJTkwIT0wP2U9MDplPj0zNjA/ZSU9MzYwOmU8MCYmKGU9KGUlMzYwKzM2MCklMzYwKTtyZXR1cm4gc2hhZG93KHRoaXMsInJvdGF0ZSIsZSl9I0h0KGUsdCl7aWYoIXRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRDb250ZW50U3RyZWFtIC0gaWdub3Jpbmcgc3ViLXN0cmVhbSAoJHt0fSk6ICIke2V9Ii5gKX1hc3luYyBnZXRDb250ZW50U3RyZWFtKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImNvbnRlbnQiKTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmIWUuaXNJbWFnZVN0cmVhbSl7aWYoZS5pc0FzeW5jKXtjb25zdCB0PWF3YWl0IGUuYXN5bmNHZXRCeXRlcygpO2lmKHQpcmV0dXJuIG5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLGUuZGljdCl9cmV0dXJuIGV9aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxuPWUubGVuZ3RoO2E8bjthKyspe2NvbnN0IG49ZVthXTtuIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmbi5pc0FzeW5jJiZ0LnB1c2gobi5hc3luY0dldEJ5dGVzKCkudGhlbih0PT57dCYmKGVbYV09bmV3IFN0cmVhbSh0LDAsdC5sZW5ndGgsbi5kaWN0KSl9KSl9dC5sZW5ndGg+MCYmYXdhaXQgUHJvbWlzZS5hbGwodCk7cmV0dXJuIG5ldyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0oZSx0aGlzLiNIdC5iaW5kKHRoaXMpKX1yZXR1cm4gbmV3IE51bGxTdHJlYW19Z2V0IHhmYURhdGEoKXtyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGEiLHRoaXMueGZhRmFjdG9yeT97YmJveDp0aGlzLnhmYUZhY3RvcnkuZ2V0Qm91bmRpbmdCb3godGhpcy5wYWdlSW5kZXgpfTpudWxsKX1hc3luYyNCdChlLHQsYSl7Y29uc3Qgbj1bXTtmb3IoY29uc3QgcyBvZiBlKWlmKHMuaWQpe2NvbnN0IGU9UmVmLmZyb21TdHJpbmcocy5pZCk7aWYoIWUpe3dhcm4oYEEgbm9uLWxpbmtlZCBhbm5vdGF0aW9uIGNhbm5vdCBiZSBtb2RpZmllZDogJHtzLmlkfWApO2NvbnRpbnVlfWlmKHMuZGVsZXRlZCl7dC5wdXQoZSxlKTtpZihzLnBvcHVwUmVmKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKHMucG9wdXBSZWYpO2UmJnQucHV0KGUsZSl9Y29udGludWV9aWYocy5wb3B1cD8uZGVsZXRlZCl7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhzLnBvcHVwUmVmKTtlJiZ0LnB1dChlLGUpfWE/LnB1dChlKTtzLnJlZj1lO24ucHVzaCh0aGlzLnhyZWYuZmV0Y2hBc3luYyhlKS50aGVuKGU9PntlIGluc3RhbmNlb2YgRGljdCYmKHMub2xkQW5ub3RhdGlvbj1lLmNsb25lKCkpfSwoKT0+e3dhcm4oYENhbm5vdCBmZXRjaCBcYG9sZEFubm90YXRpb25cYCBmb3I6ICR7ZX0uYCl9KSk7ZGVsZXRlIHMuaWR9YXdhaXQgUHJvbWlzZS5hbGwobil9YXN5bmMgc2F2ZU5ld0Fubm90YXRpb25zKGUsdCxhLG4scyl7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3Qgcj10aGlzLiNPdChlKSxpPW5ldyBSZWZTZXRDYWNoZSxvPW5ldyBSZWZTZXQ7YXdhaXQgdGhpcy4jQnQoYSxpLG8pO2NvbnN0IGw9dGhpcy5wYWdlRGljdCxmPXRoaXMuYW5ub3RhdGlvbnMuZmlsdGVyKGU9PiEoZSBpbnN0YW5jZW9mIFJlZiYmaS5oYXMoZSkpKSxjPWF3YWl0IEFubm90YXRpb25GYWN0b3J5LnNhdmVOZXdBbm5vdGF0aW9ucyhyLHRoaXMueHJlZix0LGEsbixzKTtmb3IoY29uc3R7cmVmOmV9b2YgYy5hbm5vdGF0aW9ucyllIGluc3RhbmNlb2YgUmVmJiYhby5oYXMoZSkmJmYucHVzaChlKTtjb25zdCBoPWwuY2xvbmUoKTtoLnNldCgiQW5ub3RzIixmKTtzLnB1dCh0aGlzLnJlZix7ZGF0YTpofSk7Zm9yKGNvbnN0IGUgb2YgaSlzLnB1dChlLHtkYXRhOm51bGx9KX1hc3luYyBzYXZlKGUsdCxhLG4pe2NvbnN0IHM9dGhpcy4jT3QoZSkscj1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucyxpPVtdO2Zvcihjb25zdCBlIG9mIHIpaS5wdXNoKGUuc2F2ZShzLHQsYSxuKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBzYXZlIC0gaWdub3JpbmcgYW5ub3RhdGlvbiBkYXRhIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSk7cmV0dXJuIFByb21pc2UuYWxsKGkpfWFzeW5jIGxvYWRSZXNvdXJjZXMoZSl7YXdhaXQodGhpcy4jVHQ/Pz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpKTthd2FpdCBPYmplY3RMb2FkZXIubG9hZCh0aGlzLnJlc291cmNlcyxlLHRoaXMueHJlZil9YXN5bmMjRHQoZSx0KXtjb25zdCBhPWU/LmdldCgiUmVzb3VyY2VzIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCYmYS5zaXplKSlyZXR1cm4gdGhpcy5yZXNvdXJjZXM7YXdhaXQgT2JqZWN0TG9hZGVyLmxvYWQoYSx0LHRoaXMueHJlZik7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbYSx0aGlzLnJlc291cmNlc10sbWVyZ2VTdWJEaWN0czohMH0pfWFzeW5jIGdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjplLHNpbms6dCx0YXNrOmEsaW50ZW50Om4sY2FjaGVLZXk6cyxwYWdlSW5kZXg6cj10aGlzLnBhZ2VJbmRleCxhbm5vdGF0aW9uU3RvcmFnZTppPW51bGwsbW9kaWZpZWRJZHM6Yz1udWxsfSl7Y29uc3QgcD10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxnPXRoaXMubG9hZFJlc291cmNlcyhkYSksYj10aGlzLiNPdChlLHIpLHc9dGhpcy54ZmFGYWN0b3J5P251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAoaSksaj13Py5nZXQodGhpcy5wYWdlSW5kZXgpO2xldCBrPVByb21pc2UucmVzb2x2ZShudWxsKSx5PW51bGw7aWYoail7Y29uc3QgZT10aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpO2xldCB0O2NvbnN0IG49bmV3IFNldDtmb3IoY29uc3R7Yml0bWFwSWQ6ZSxiaXRtYXA6dH1vZiBqKSFlfHx0fHxuLmhhcyhlKXx8bi5hZGQoZSk7Y29uc3R7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6c309dGhpcy5ldmFsdWF0b3JPcHRpb25zO2lmKG4uc2l6ZT4wKXtjb25zdCBlPWouc2xpY2UoKTtmb3IoY29uc3RbdCxhXW9mIGkpdC5zdGFydHNXaXRoKGQpJiZhLmJpdG1hcCYmbi5oYXMoYS5iaXRtYXBJZCkmJmUucHVzaChhKTt0PUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGUsdGhpcy54cmVmLHMpfWVsc2UgdD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhqLHRoaXMueHJlZixzKTt5PW5ldyBSZWZTZXQ7az1Qcm9taXNlLmFsbChbZSx0aGlzLiNCdChqLHksbnVsbCldKS50aGVuKChbZV0pPT5lP0Fubm90YXRpb25GYWN0b3J5LnByaW50TmV3QW5ub3RhdGlvbnMoZSxiLGEsaix0KTpudWxsKX1jb25zdCBxPVByb21pc2UuYWxsKFtwLGddKS50aGVuKGFzeW5jKFtpXSk9Pntjb25zdCBvPWF3YWl0IHRoaXMuI0R0KGkuZGljdCxkYSksbD1uZXcgT3BlcmF0b3JMaXN0KG4sdCk7ZS5zZW5kKCJTdGFydFJlbmRlclBhZ2UiLHt0cmFuc3BhcmVuY3k6Yi5oYXNCbGVuZE1vZGVzKG8sdGhpcy5ub25CbGVuZE1vZGVzU2V0KSxwYWdlSW5kZXg6cixjYWNoZUtleTpzfSk7YXdhaXQgYi5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTppLHRhc2s6YSxyZXNvdXJjZXM6byxvcGVyYXRvckxpc3Q6bH0pO3JldHVybiBsfSk7bGV0W3YsUyx4XT1hd2FpdCBQcm9taXNlLmFsbChbcSx0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucyxrXSk7aWYoeCl7Uz1TLmZpbHRlcihlPT4hKGUucmVmJiZ5LmhhcyhlLnJlZikpKTtmb3IobGV0IGU9MCx0PXgubGVuZ3RoO2U8dDtlKyspe2NvbnN0IGE9eFtlXTtpZihhLnJlZlRvUmVwbGFjZSl7Y29uc3Qgbj1TLmZpbmRJbmRleChlPT5lLnJlZiYmaXNSZWZzRXF1YWwoZS5yZWYsYS5yZWZUb1JlcGxhY2UpKTtpZihuPj0wKXtTLnNwbGljZShuLDEsYSk7eC5zcGxpY2UoZS0tLDEpO3QtLX19fVM9Uy5jb25jYXQoeCl9aWYoMD09PVMubGVuZ3RofHxuJnUpe3YuZmx1c2goITApO3JldHVybntsZW5ndGg6di50b3RhbExlbmd0aH19Y29uc3QgQz0hIShuJmgpLEY9ISEobiZtKSxUPSEhKG4mbyksTz0hIShuJmwpLFI9ISEobiZmKSxIPVtdO2Zvcihjb25zdCBlIG9mIFMpKFR8fE8mJmUubXVzdEJlVmlld2VkKGksQykmJmUubXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoRixjKXx8UiYmZS5tdXN0QmVQcmludGVkKGkpKSYmSC5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KGIsYSxuLGkpLmNhdGNoKGZ1bmN0aW9uKGUpe3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7YS5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybntvcExpc3Q6bnVsbCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fSkpO2NvbnN0IEQ9YXdhaXQgUHJvbWlzZS5hbGwoSCk7bGV0IE09ITEsTj0hMTtmb3IoY29uc3R7b3BMaXN0OmUsc2VwYXJhdGVGb3JtOnQsc2VwYXJhdGVDYW52YXM6YX1vZiBEKXt2LmFkZE9wTGlzdChlKTtNfHw9dDtOfHw9YX12LmZsdXNoKCEwLHtmb3JtOk0sY2FudmFzOk59KTtyZXR1cm57bGVuZ3RoOnYudG90YWxMZW5ndGh9fWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjplLHRhc2s6dCxpbmNsdWRlTWFya2VkQ29udGVudDphLGRpc2FibGVOb3JtYWxpemF0aW9uOm4sc2luazpzLGludGVyc2VjdG9yOnI9bnVsbH0pe2NvbnN0IGk9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksbz10aGlzLmxvYWRSZXNvdXJjZXMoZ2EpLGw9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImxhbmciKSxbZiwsY109YXdhaXQgUHJvbWlzZS5hbGwoW2ksbyxsXSksaD1hd2FpdCB0aGlzLiNEdChmLmRpY3QsZ2EpO3JldHVybiB0aGlzLiNPdChlKS5nZXRUZXh0Q29udGVudCh7c3RyZWFtOmYsdGFzazp0LHJlc291cmNlczpoLGluY2x1ZGVNYXJrZWRDb250ZW50OmEsZGlzYWJsZU5vcm1hbGl6YXRpb246bixzaW5rOnMsdmlld0JveDp0aGlzLnZpZXcsbGFuZzpjLGludGVyc2VjdG9yOnJ9KX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDthd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9uczt0cnl7Y29uc3QgdD1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsIl9wYXJzZVN0cnVjdFRyZWUiLFtlXSk7cmV0dXJuIGF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodCwic2VyaWFsaXphYmxlIil9Y2F0Y2goZSl7d2FybihgZ2V0U3RydWN0VHJlZTogIiR7ZX0iLmApO3JldHVybiBudWxsfX1fcGFyc2VTdHJ1Y3RUcmVlKGUpe2NvbnN0IHQ9bmV3IFN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSh0aGlzLnJlZik7cmV0dXJuIHR9YXN5bmMgZ2V0QW5ub3RhdGlvbnNEYXRhKGUsdCxhKXtjb25zdCBuPWF3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zO2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbjtjb25zdCBzPVtdLHI9W107bGV0IGk7Y29uc3QgYz0hIShhJm8pLGg9ISEoYSZsKSx1PSEhKGEmZiksbT1bXTtmb3IoY29uc3QgYSBvZiBuKXtjb25zdCBuPWN8fGgmJmEudmlld2FibGU7KG58fHUmJmEucHJpbnRhYmxlKSYmcy5wdXNoKGEuZGF0YSk7aWYoYS5oYXNUZXh0Q29udGVudCYmbil7aT8/PXRoaXMuI090KGUpO3IucHVzaChhLmV4dHJhY3RUZXh0Q29udGVudChpLHQsWy0xLzAsLTEvMCwxLzAsMS8wXSkuY2F0Y2goZnVuY3Rpb24oZSl7d2FybihgZ2V0QW5ub3RhdGlvbnNEYXRhIC0gaWdub3JpbmcgdGV4dENvbnRlbnQgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKX0pKX1lbHNlIGEub3ZlcmxheXNUZXh0Q29udGVudCYmbiYmbS5wdXNoKGEpfWlmKG0ubGVuZ3RoPjApe2NvbnN0IGE9bmV3IEludGVyc2VjdG9yKG0pO3IucHVzaCh0aGlzLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjplLHRhc2s6dCxpbmNsdWRlTWFya2VkQ29udGVudDohMSxkaXNhYmxlTm9ybWFsaXphdGlvbjohMSxzaW5rOm51bGwsdmlld0JveDp0aGlzLnZpZXcsbGFuZzpudWxsLGludGVyc2VjdG9yOmF9KS50aGVuKCgpPT57YS5zZXRUZXh0KCl9KSl9YXdhaXQgUHJvbWlzZS5hbGwocik7cmV0dXJuIHN9Z2V0IGFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLiNSdCgiQW5ub3RzIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9ucyIsQXJyYXkuaXNBcnJheShlKT9lOltdKX1nZXQgX3BhcnNlZEFubm90YXRpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKGFzeW5jIGU9PntpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3RbdCxhXT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO2lmKCF0KXJldHVybltdO2NvbnN0IG49YT8ub3JwaGFuRmllbGRzLHM9W107Zm9yKGNvbnN0IGEgb2YgZSlzLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixhLHQsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEsbixudWxsLHRoaXMucmVmKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBfcGFyc2VkQW5ub3RhdGlvbnM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKTtjb25zdCByPVtdO2xldCBpLG87Zm9yKGNvbnN0IGUgb2YgYXdhaXQgUHJvbWlzZS5hbGwocykpZSYmKGUgaW5zdGFuY2VvZiBXaWRnZXRBbm5vdGF0aW9uPyhvfHw9W10pLnB1c2goZSk6ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbj8oaXx8PVtdKS5wdXNoKGUpOnIucHVzaChlKSk7byYmci5wdXNoKC4uLm8pO2kmJnIucHVzaCguLi5pKTtyZXR1cm4gcn0pKX1nZXQganNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLGNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLnBhZ2VEaWN0LGxlKSl9YXN5bmMgY29sbGVjdEFubm90YXRpb25zQnlUeXBlKGUsdCxhLG4scyl7Y29uc3R7cGFnZUluZGV4OnJ9PXRoaXM7aWYoT2JqZWN0Lmhhc093bih0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiKSl7Y29uc3QgZT1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztmb3IoY29uc3R7ZGF0YTp0fW9mIGUpaWYoIWF8fGEuaGFzKHQuYW5ub3RhdGlvblR5cGUpKXt0LnBhZ2VJbmRleD1yO24ucHVzaChQcm9taXNlLnJlc29sdmUodCkpfXJldHVybn1jb25zdCBpPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKTtsZXQgbztmb3IoY29uc3QgbCBvZiBpKW4ucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLGwscyx0aGlzLl9sb2NhbElkRmFjdG9yeSwhMSxudWxsLGEsdGhpcy5yZWYpLnRoZW4oYXN5bmMgYT0+e2lmKCFhKXJldHVybiBudWxsO2EuZGF0YS5wYWdlSW5kZXg9cjtpZihhLmhhc1RleHRDb250ZW50JiZhLnZpZXdhYmxlKXtvPz89dGhpcy4jT3QoZSk7YXdhaXQgYS5leHRyYWN0VGV4dENvbnRlbnQobyx0LFstMS8wLC0xLzAsMS8wLDEvMF0pfXJldHVybiBhLmRhdGF9KS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBjb2xsZWN0QW5ub3RhdGlvbnNCeVR5cGU6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKX19Y29uc3Qga2Y9bmV3IFVpbnQ4QXJyYXkoWzM3LDgwLDY4LDcwLDQ1XSkseWY9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxxZj1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDAsMTExLDk4LDEwNl0pO2Z1bmN0aW9uIGZpbmQoZSx0LGE9MTAyNCxuPSExKXtjb25zdCBzPXQubGVuZ3RoLHI9ZS5wZWVrQnl0ZXMoYSksaT1yLmxlbmd0aC1zO2lmKGk8PTApcmV0dXJuITE7aWYobil7Y29uc3QgYT1zLTE7bGV0IG49ci5sZW5ndGgtMTtmb3IoO24+PWE7KXtsZXQgaT0wO2Zvcig7aTxzJiZyW24taV09PT10W2EtaV07KWkrKztpZihpPj1zKXtlLnBvcys9bi1hO3JldHVybiEwfW4tLX19ZWxzZXtsZXQgYT0wO2Zvcig7YTw9aTspe2xldCBuPTA7Zm9yKDtuPHMmJnJbYStuXT09PXRbbl07KW4rKztpZihuPj1zKXtlLnBvcys9YTtyZXR1cm4hMH1hKyt9fXJldHVybiExfWNsYXNzIFBERkRvY3VtZW50eyNNdD1uZXcgTWFwOyNOdD1udWxsO2NvbnN0cnVjdG9yKGUsdCl7aWYodC5sZW5ndGg8PTApdGhyb3cgbmV3IEludmFsaWRQREZFeGNlcHRpb24oIlRoZSBQREYgZmlsZSBpcyBlbXB0eSwgaS5lLiBpdHMgc2l6ZSBpcyB6ZXJvIGJ5dGVzLiIpO3RoaXMucGRmTWFuYWdlcj1lO3RoaXMuc3RyZWFtPXQ7dGhpcy54cmVmPW5ldyBYUmVmKHQsZSk7Y29uc3QgYT17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKythLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBDYXRhbG9nKHRoaXMucGRmTWFuYWdlcix0aGlzLnhyZWYpfWdldCBsaW5lYXJpemF0aW9uKCl7bGV0IGU9bnVsbDt0cnl7ZT1MaW5lYXJpemF0aW9uLmNyZWF0ZSh0aGlzLnN0cmVhbSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbyhlKX1yZXR1cm4gc2hhZG93KHRoaXMsImxpbmVhcml6YXRpb24iLGUpfWdldCBzdGFydFhSZWYoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PTA7aWYodGhpcy5saW5lYXJpemF0aW9uKXtlLnJlc2V0KCk7aWYoZmluZChlLHFmKSl7ZS5za2lwKDYpO2xldCBhPWUucGVla0J5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZShhKTspe2UucG9zKys7YT1lLnBlZWtCeXRlKCl9dD1lLnBvcy1lLnN0YXJ0fX1lbHNle2NvbnN0IGE9MTAyNCxuPXlmLmxlbmd0aDtsZXQgcz0hMSxyPWUuZW5kO2Zvcig7IXMmJnI+MDspe3ItPWEtbjtyPDAmJihyPTApO2UucG9zPXI7cz1maW5kKGUseWYsYSwhMCl9aWYocyl7ZS5za2lwKDkpO2xldCBhO2Rve2E9ZS5nZXRCeXRlKCl9d2hpbGUoaXNXaGl0ZVNwYWNlKGEpKTtsZXQgbj0iIjtmb3IoO2E+PTMyJiZhPD01Nzspe24rPVN0cmluZy5mcm9tQ2hhckNvZGUoYSk7YT1lLmdldEJ5dGUoKX10PXBhcnNlSW50KG4sMTApO2lzTmFOKHQpJiYodD0wKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJzdGFydFhSZWYiLHQpfWNoZWNrSGVhZGVyKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtlLnJlc2V0KCk7aWYoIWZpbmQoZSxrZikpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKGtmLmxlbmd0aCk7bGV0IHQsYT0iIjtmb3IoOyh0PWUuZ2V0Qnl0ZSgpKT4zMiYmYS5sZW5ndGg8NzspYSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTt1YS50ZXN0KGEpP3RoaXMuI050PWE6d2FybihgSW52YWxpZCBQREYgaGVhZGVyIHZlcnNpb246ICR7YX1gKX1wYXJzZVN0YXJ0WFJlZigpe3RoaXMueHJlZi5zZXRTdGFydFhSZWYodGhpcy5zdGFydFhSZWYpfWdldCBudW1QYWdlcygpe2xldCBlPTA7ZT10aGlzLmNhdGFsb2cuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5jYXRhbG9nLm51bVBhZ2VzOnRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0TnVtUGFnZXMoKTp0aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnRoaXMuY2F0YWxvZy5udW1QYWdlcztyZXR1cm4gc2hhZG93KHRoaXMsIm51bVBhZ2VzIixlKX0jUHQoZSx0PTApe3JldHVybiEhQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeShlPT57aWYoISgoZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUuaGFzKCJLaWRzIikpe2lmKCsrdD4xMCl7d2FybigiI2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXM6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIHJlYWNoZWQiKTtyZXR1cm4hMX1yZXR1cm4gdGhpcy4jUHQoZS5nZXQoIktpZHMiKSx0KX1jb25zdCBhPWlzTmFtZShlLmdldCgiRlQiKSwiU2lnIiksbj1lLmdldCgiUmVjdCIpLHM9QXJyYXkuaXNBcnJheShuKSYmbi5ldmVyeShlPT4wPT09ZSk7cmV0dXJuIGEmJnN9KX1nZXQgX3hmYVN0cmVhbXMoKXtjb25zdHthY3JvRm9ybTplfT10aGlzLmNhdGFsb2c7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksYT1uZXcgTWFwKFsieGRwOnhkcCIsInRlbXBsYXRlIiwiZGF0YXNldHMiLCJjb25maWciLCJjb25uZWN0aW9uU2V0IiwibG9jYWxlU2V0Iiwic3R5bGVzaGVldCIsIi94ZHA6eGRwIl0ubWFwKGU9PltlLG51bGxdKSk7aWYodCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe2Euc2V0KCJ4ZHA6eGRwIix0KTtyZXR1cm4gYX1pZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybiBudWxsO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrPTIpe2xldCBzO3M9MD09PWU/InhkcDp4ZHAiOmU9PT1uLTI/Ii94ZHA6eGRwIjp0W2VdO2lmKCFhLmhhcyhzKSljb250aW51ZTtjb25zdCByPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbZSsxXSk7ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiFyLmlzRW1wdHkmJmEuc2V0KHMscil9cmV0dXJuIGF9Z2V0IHhmYURhdGFzZXRzKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3QgYT1lLmdldCh0KTtpZihhKXRyeXtjb25zdCBlPXN0cmluZ1RvVVRGOFN0cmluZyhhLmdldFN0cmluZygpKTtyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixuZXcgRGF0YXNldFJlYWRlcih7W3RdOmV9KSl9Y2F0Y2h7d2FybigiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7YnJlYWt9fXJldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG51bGwpfWdldCB4ZmFEYXRhKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbYSxuXW9mIGUpaWYobil0cnl7dFthXT1zdHJpbmdUb1VURjhTdHJpbmcobi5nZXRTdHJpbmcoKSl9Y2F0Y2h7d2FybigiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7cmV0dXJuIG51bGx9cmV0dXJuIHR9Z2V0IHhmYUZhY3RvcnkoKXtsZXQgZTt0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKTtyZXR1cm4gc2hhZG93KHRoaXMsInhmYUZhY3RvcnkiLGU/bmV3IFhGQUZhY3RvcnkoZSk6bnVsbCl9Z2V0IGlzUHVyZVhmYSgpe3JldHVybiEhdGhpcy54ZmFGYWN0b3J5JiZ0aGlzLnhmYUZhY3RvcnkuaXNWYWxpZCgpfWdldCBodG1sRm9yWGZhKCl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0UGFnZXMoKTpudWxsfWFzeW5jI0V0KCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygieGZhSW1hZ2VzIik7ZSYmdGhpcy54ZmFGYWN0b3J5LnNldEltYWdlcyhlKX1hc3luYyNfdChlLHQpe2NvbnN0IGE9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIik7aWYoIWEpcmV0dXJuO2NvbnN0IG49YXdhaXQgYS5nZXRBc3luYygiRFIiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47YXdhaXQgT2JqZWN0TG9hZGVyLmxvYWQobixbIkZvbnQiXSx0aGlzLnhyZWYpO2NvbnN0IHM9bi5nZXQoIkZvbnQiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgcj1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMse3VzZVN5c3RlbUZvbnRzOiExfSkse2J1aWx0SW5DTWFwQ2FjaGU6aSxmb250Q2FjaGU6byxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6bH09dGhpcy5jYXRhbG9nLGY9bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6LTEsaWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6byxidWlsdEluQ01hcENhY2hlOmksc3RhbmRhcmRGb250RGF0YUNhY2hlOmwsb3B0aW9uczpyfSksYz1uZXcgT3BlcmF0b3JMaXN0LGg9W10sdT17Z2V0IGZvbnQoKXtyZXR1cm4gaC5hdCgtMSl9LHNldCBmb250KGUpe2gucHVzaChlKX0sY2xvbmUoKXtyZXR1cm4gdGhpc319LHBhcnNlRm9udD0oZSxhLHMpPT5mLmhhbmRsZVNldEZvbnQobixbTmFtZS5nZXQoZSksMV0sbnVsbCxjLHQsdSxhLHMpLmNhdGNoKGU9Pnt3YXJuKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pLG09W107Zm9yKGNvbnN0W2UsdF1vZiBzKXtjb25zdCBhPXQuZ2V0KCJGb250RGVzY3JpcHRvciIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2xldCBuPWEuZ2V0KCJGb250RmFtaWx5Iik7bj1uLnJlcGxhY2VBbGwoL1sgXSsoXGQpL2csIiQxIik7Y29uc3Qgcz17Zm9udEZhbWlseTpuLGZvbnRXZWlnaHQ6YS5nZXQoIkZvbnRXZWlnaHQiKSxpdGFsaWNBbmdsZTotYS5nZXQoIkl0YWxpY0FuZ2xlIil9O3ZhbGlkYXRlQ1NTRm9udChzKSYmbS5wdXNoKHBhcnNlRm9udChlLG51bGwscykpfWF3YWl0IFByb21pc2UuYWxsKG0pO2NvbnN0IHA9dGhpcy54ZmFGYWN0b3J5LnNldEZvbnRzKGgpO2lmKCFwKXJldHVybjtyLmlnbm9yZUVycm9ycz0hMDttLmxlbmd0aD0wO2gubGVuZ3RoPTA7Y29uc3QgZD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIHApZ2V0WGZhRm9udE5hbWUoYCR7ZX0tUmVndWxhcmApfHxkLmFkZChlKTtkLnNpemUmJnAucHVzaCgiUGRmSlMtRmFsbGJhY2siKTtmb3IoY29uc3QgZSBvZiBwKWlmKCFkLmhhcyhlKSlmb3IoY29uc3QgdCBvZlt7bmFtZToiUmVndWxhciIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MH0se25hbWU6IkJvbGQiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJJdGFsaWMiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjEyfSx7bmFtZToiQm9sZEl0YWxpYyIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MTJ9XSl7Y29uc3QgYT1gJHtlfS0ke3QubmFtZX1gO20ucHVzaChwYXJzZUZvbnQoYSxnZXRYZmFGb250RGljdChhKSx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6dC5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOnQuaXRhbGljQW5nbGV9KSl9YXdhaXQgUHJvbWlzZS5hbGwobSk7dGhpcy54ZmFGYWN0b3J5LmFwcGVuZEZvbnRzKGgsZCl9bG9hZFhmYVJlc291cmNlcyhlLHQpe3JldHVybiBQcm9taXNlLmFsbChbdGhpcy4jX3QoZSx0KS5jYXRjaCgoKT0+e30pLHRoaXMuI0V0KCldKX1zZXJpYWxpemVYZmFEYXRhKGUpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LnNlcmlhbGl6ZURhdGEoZSk6bnVsbH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLmNhdGFsb2cudmVyc2lvbnx8dGhpcy4jTnR9Z2V0IGZvcm1JbmZvKCl7Y29uc3QgZT17aGFzRmllbGRzOiExLGhhc0Fjcm9Gb3JtOiExLGhhc1hmYTohMSxoYXNTaWduYXR1cmVzOiExfSx7YWNyb0Zvcm06dH09dGhpcy5jYXRhbG9nO2lmKCF0KXJldHVybiBzaGFkb3codGhpcywiZm9ybUluZm8iLGUpO3RyeXtjb25zdCBhPXQuZ2V0KCJGaWVsZHMiKSxuPUFycmF5LmlzQXJyYXkoYSkmJmEubGVuZ3RoPjA7ZS5oYXNGaWVsZHM9bjtjb25zdCBzPXQuZ2V0KCJYRkEiKTtlLmhhc1hmYT1BcnJheS5pc0FycmF5KHMpJiZzLmxlbmd0aD4wfHxzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmIXMuaXNFbXB0eTtjb25zdCByPSEhKDEmdC5nZXQoIlNpZ0ZsYWdzIikpLGk9ciYmdGhpcy4jUHQoYSk7ZS5oYXNBY3JvRm9ybT1uJiYhaTtlLmhhc1NpZ25hdHVyZXM9cn1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBDYW5ub3QgZmV0Y2ggZm9ybSBpbmZvcm1hdGlvbjogIiR7ZX0iLmApfXJldHVybiBzaGFkb3codGhpcywiZm9ybUluZm8iLGUpfWdldCBkb2N1bWVudEluZm8oKXtjb25zdHtjYXRhbG9nOmUsZm9ybUluZm86dCx4cmVmOmF9PXRoaXMsbj17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6ZS5sYW5nLEVuY3J5cHRGaWx0ZXJOYW1lOmEuZW5jcnlwdD8uZmlsdGVyTmFtZT8/bnVsbCxJc0xpbmVhcml6ZWQ6ISF0aGlzLmxpbmVhcml6YXRpb24sSXNBY3JvRm9ybVByZXNlbnQ6dC5oYXNBY3JvRm9ybSxJc1hGQVByZXNlbnQ6dC5oYXNYZmEsSXNDb2xsZWN0aW9uUHJlc2VudDohIWUuY29sbGVjdGlvbixJc1NpZ25hdHVyZXNQcmVzZW50OnQuaGFzU2lnbmF0dXJlc307bGV0IHM7dHJ5e3M9YS50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoIShzIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLG4pO2Zvcihjb25zdFtlLHRdb2Ygcyl7c3dpdGNoKGUpe2Nhc2UiVGl0bGUiOmNhc2UiQXV0aG9yIjpjYXNlIlN1YmplY3QiOmNhc2UiS2V5d29yZHMiOmNhc2UiQ3JlYXRvciI6Y2FzZSJQcm9kdWNlciI6Y2FzZSJDcmVhdGlvbkRhdGUiOmNhc2UiTW9kRGF0ZSI6aWYoInN0cmluZyI9PXR5cGVvZiB0KXtuW2VdPXN0cmluZ1RvUERGU3RyaW5nKHQpO2NvbnRpbnVlfWJyZWFrO2Nhc2UiVHJhcHBlZCI6aWYodCBpbnN0YW5jZW9mIE5hbWUpe25bZV09dDtjb250aW51ZX1icmVhaztkZWZhdWx0OmxldCBhO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJzdHJpbmciOmE9c3RyaW5nVG9QREZTdHJpbmcodCk7YnJlYWs7Y2FzZSJudW1iZXIiOmNhc2UiYm9vbGVhbiI6YT10O2JyZWFrO2RlZmF1bHQ6dCBpbnN0YW5jZW9mIE5hbWUmJihhPXQpfWlmKHZvaWQgMD09PWEpe3dhcm4oYEJhZCB2YWx1ZSwgZm9yIGN1c3RvbSBrZXkgIiR7ZX0iLCBpbiBJbmZvOiAke3R9LmApO2NvbnRpbnVlfW4uQ3VzdG9tPz89T2JqZWN0LmNyZWF0ZShudWxsKTtuLkN1c3RvbVtlXT1hO2NvbnRpbnVlfXdhcm4oYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHtlfSIsIGluIEluZm86ICR7dH0uYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLG4pfWdldCBmaW5nZXJwcmludHMoKXtjb25zdCBlPSJcMCIucmVwZWF0KDE2KTtmdW5jdGlvbiB2YWxpZGF0ZSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJjE2PT09dC5sZW5ndGgmJnQhPT1lfWNvbnN0IHQ9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJRCIpO2xldCBhLG47aWYoQXJyYXkuaXNBcnJheSh0KSYmdmFsaWRhdGUodFswXSkpe2E9c3RyaW5nVG9CeXRlcyh0WzBdKTt0WzFdIT09dFswXSYmdmFsaWRhdGUodFsxXSkmJihuPXN0cmluZ1RvQnl0ZXModFsxXSkpfWVsc2UgYT1jYWxjdWxhdGVNRDUodGhpcy5zdHJlYW0uZ2V0Qnl0ZVJhbmdlKDAsMTAyNCksMCwxMDI0KTtyZXR1cm4gc2hhZG93KHRoaXMsImZpbmdlcnByaW50cyIsW2EudG9IZXgoKSxuPy50b0hleCgpPz9udWxsXSl9YXN5bmMjenQoZSl7Y29uc3R7Y2F0YWxvZzp0LGxpbmVhcml6YXRpb246YSx4cmVmOm59PXRoaXMscz1SZWYuZ2V0KGEub2JqZWN0TnVtYmVyRmlyc3QsMCk7dHJ5e2NvbnN0IGU9YXdhaXQgbi5mZXRjaEFzeW5jKHMpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtsZXQgYT1lLmdldFJhdygiVHlwZSIpO2EgaW5zdGFuY2VvZiBSZWYmJihhPWF3YWl0IG4uZmV0Y2hBc3luYyhhKSk7aWYoaXNOYW1lKGEsIlBhZ2UiKXx8IWUuaGFzKCJUeXBlIikmJiFlLmhhcygiS2lkcyIpJiZlLmhhcygiQ29udGVudHMiKSl7dC5wYWdlS2lkc0NvdW50Q2FjaGUuaGFzKHMpfHx0LnBhZ2VLaWRzQ291bnRDYWNoZS5wdXQocywxKTt0LnBhZ2VJbmRleENhY2hlLmhhcyhzKXx8dC5wYWdlSW5kZXhDYWNoZS5wdXQocywwKTtyZXR1cm5bZSxzXX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUaGUgTGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBQYWdlIGRpY3Rpb25hcnkuIil9Y2F0Y2goYSl7d2FybihgX2dldExpbmVhcml6YXRpb25QYWdlOiAiJHthLm1lc3NhZ2V9Ii5gKTtyZXR1cm4gdC5nZXRQYWdlRGljdChlKX19Z2V0UGFnZShlKXtjb25zdCB0PXRoaXMuI010LmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0e2NhdGFsb2c6YSxsaW5lYXJpemF0aW9uOm4seGZhRmFjdG9yeTpzfT10aGlzO2xldCByO3I9cz9Qcm9taXNlLnJlc29sdmUoW0RpY3QuZW1wdHksbnVsbF0pOm4/LnBhZ2VGaXJzdD09PWU/dGhpcy4jenQoZSk6YS5nZXRQYWdlRGljdChlKTtyPXIudGhlbigoW3Qsbl0pPT5uZXcgUGFnZSh7cGRmTWFuYWdlcjp0aGlzLnBkZk1hbmFnZXIseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6dCxyZWY6bixnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTphLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOmEuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6YS5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmEuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6YS5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTphLnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0OmEubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5OnN9KSk7dGhpcy4jTXQuc2V0KGUscik7cmV0dXJuIHJ9YXN5bmMgY2hlY2tGaXJzdFBhZ2UoZT0hMSl7aWYoIWUpdHJ5e2F3YWl0IHRoaXMuZ2V0UGFnZSgwKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uKXt0aGlzLiNNdC5kZWxldGUoMCk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7dGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6YX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IG47dHJ5e2F3YWl0IFByb21pc2UuYWxsKFthLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGEuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksYS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjtuPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaXMgbm90IGFuIGludGVnZXIuIik7aWYobjw9MSlyZXR1cm47YXdhaXQgdGhpcy5nZXRQYWdlKG4tMSl9Y2F0Y2gocyl7dGhpcy4jTXQuZGVsZXRlKG4tMSk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7aWYocyBpbnN0YW5jZW9mIFhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbjt3YXJuKGBjaGVja0xhc3RQYWdlIC0gaW52YWxpZCAvUGFnZXMgdHJlZSAvQ291bnQ6ICR7bn0uYCk7bGV0IHI7dHJ5e3I9YXdhaXQgdC5nZXRBbGxQYWdlRGljdHMoZSl9Y2F0Y2goYSl7aWYoYSBpbnN0YW5jZW9mIFhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbjt0LnNldEFjdHVhbE51bVBhZ2VzKDEpO3JldHVybn1mb3IoY29uc3RbZSxbbixzXV1vZiByKXtsZXQgcjtpZihuIGluc3RhbmNlb2YgRXJyb3Ipe3I9UHJvbWlzZS5yZWplY3Qobik7ci5jYXRjaCgoKT0+e30pfWVsc2Ugcj1Qcm9taXNlLnJlc29sdmUobmV3IFBhZ2Uoe3BkZk1hbmFnZXI6YSx4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDpuLHJlZjpzLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnQuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dC5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0LnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnQuc3lzdGVtRm9udENhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6dC5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6bnVsbH0pKTt0aGlzLiNNdC5zZXQoZSxyKX10LnNldEFjdHVhbE51bVBhZ2VzKHIuc2l6ZSl9fWFzeW5jIGZvbnRGYWxsYmFjayhlLHQpe2NvbnN0e2NhdGFsb2c6YSxwZGZNYW5hZ2VyOm59PXRoaXM7Zm9yKGNvbnN0IHMgb2YgYXdhaXQgUHJvbWlzZS5hbGwoYS5mb250Q2FjaGUpKWlmKHMubG9hZGVkTmFtZT09PWUpe3MuZmFsbGJhY2sodCxuLmV2YWx1YXRvck9wdGlvbnMpO3JldHVybn19YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOmNsZWFyR2xvYmFsQ2FjaGVzKCl9YXN5bmMjTHQoZSx0LGEsbixzLHIsaSl7Y29uc3R7eHJlZjpvfT10aGlzO2lmKCEoYSBpbnN0YW5jZW9mIFJlZil8fHIuaGFzKGEpKXJldHVybjtyLnB1dChhKTtjb25zdCBsPWF3YWl0IG8uZmV0Y2hBc3luYyhhKTtpZighKGwgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47bGV0IGY9YXdhaXQgbC5nZXRBc3luYygiU3VidHlwZSIpO2Y9ZiBpbnN0YW5jZW9mIE5hbWU/Zi5uYW1lOm51bGw7aWYoIkxpbmsiPT09ZilyZXR1cm47aWYobC5oYXMoIlQiKSl7Y29uc3QgdD1zdHJpbmdUb1BERlN0cmluZyhhd2FpdCBsLmdldEFzeW5jKCJUIikpO2U9IiI9PT1lP3Q6YCR7ZX0uJHt0fWB9ZWxzZXtsZXQgYT1sO2Zvcig7Oyl7YT1hLmdldFJhdygiUGFyZW50Iil8fHQ7aWYoYSBpbnN0YW5jZW9mIFJlZil7aWYoci5oYXMoYSkpYnJlYWs7YT1hd2FpdCBvLmZldGNoQXN5bmMoYSl9aWYoIShhIGluc3RhbmNlb2YgRGljdCkpYnJlYWs7aWYoYS5oYXMoIlQiKSl7Y29uc3QgdD1zdHJpbmdUb1BERlN0cmluZyhhd2FpdCBhLmdldEFzeW5jKCJUIikpO2U9IiI9PT1lP3Q6YCR7ZX0uJHt0fWA7YnJlYWt9fX10JiYhbC5oYXMoIlBhcmVudCIpJiZpc05hbWUobC5nZXQoIlN1YnR5cGUiKSwiV2lkZ2V0IikmJmkucHV0KGEsdCk7bi5nZXRPckluc2VydENvbXB1dGVkKGUsbWFrZUFycikucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUobyxhLHMsbnVsbCwhMCxpLG51bGwsbnVsbCkudGhlbihlPT5lPy5nZXRGaWVsZE9iamVjdCgpKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGAjY29sbGVjdEZpZWxkT2JqZWN0czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpO2lmKCFsLmhhcygiS2lkcyIpKXJldHVybjtjb25zdCBjPWF3YWl0IGwuZ2V0QXN5bmMoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGMpKWZvcihjb25zdCB0IG9mIGMpYXdhaXQgdGhpcy4jTHQoZSxhLHQsbixzLHIsaSl9Z2V0IGZpZWxkT2JqZWN0cygpe3JldHVybiBzaGFkb3codGhpcywiZmllbGRPYmplY3RzIix0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmb3JtSW5mbyIpLnRoZW4oYXN5bmMgZT0+e2lmKCFlLmhhc0ZpZWxkcylyZXR1cm4gbnVsbDtjb25zdCB0PWF3YWl0IHRoaXMuYW5ub3RhdGlvbkdsb2JhbHM7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YWNyb0Zvcm06YX09dCxuPW5ldyBSZWZTZXQscz1PYmplY3QuY3JlYXRlKG51bGwpLHI9bmV3IE1hcCxpPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhLmdldCgiRmllbGRzIikpYXdhaXQgdGhpcy4jTHQoIiIsbnVsbCxlLHIsdCxuLGkpO2NvbnN0IG89W107Zm9yKGNvbnN0W2UsdF1vZiByKW8ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKHQ9PnsodD10LmZpbHRlcihlPT4hIWUpKS5sZW5ndGg+MCYmKHNbZV09dCl9KSk7YXdhaXQgUHJvbWlzZS5hbGwobyk7cmV0dXJue2FsbEZpZWxkczpvYmplY3RTaXplKHMpPjA/czpudWxsLG9ycGhhbkZpZWxkczppfX0pKX1nZXQgaGFzSlNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoYXNKU0FjdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoIl9wYXJzZUhhc0pTQWN0aW9ucyIpKX1hc3luYyBfcGFyc2VIYXNKU0FjdGlvbnMoKXtjb25zdFtlLHRdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZmllbGRPYmplY3RzIildKTtyZXR1cm4hIWV8fCEhdD8uYWxsRmllbGRzJiZPYmplY3QudmFsdWVzKHQuYWxsRmllbGRzKS5zb21lKGU9PmUuc29tZShlPT5udWxsIT09ZS5hY3Rpb25zKSl9Z2V0IGNhbGN1bGF0aW9uT3JkZXJJZHMoKXtjb25zdCBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybT8uZ2V0KCJDTyIpO2lmKCFBcnJheS5pc0FycmF5KGUpfHwwPT09ZS5sZW5ndGgpcmV0dXJuIHNoYWRvdyh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKTtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpYSBpbnN0YW5jZW9mIFJlZiYmdC5wdXNoKGEudG9TdHJpbmcoKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIix0Lmxlbmd0aD90Om51bGwpfWdldCBhbm5vdGF0aW9uR2xvYmFscygpe3JldHVybiBzaGFkb3codGhpcywiYW5ub3RhdGlvbkdsb2JhbHMiLEFubm90YXRpb25GYWN0b3J5LmNyZWF0ZUdsb2JhbHModGhpcy5wZGZNYW5hZ2VyKSl9YXN5bmMgdG9KU09iamVjdChlLHQ9ITApe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiB0b0pTT2JqZWN0Iil9fWNsYXNzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKHtkb2NCYXNlVXJsOmUsZG9jSWQ6dCxlbmFibGVYZmE6YSxldmFsdWF0b3JPcHRpb25zOm4saGFuZGxlcjpzLHBhc3N3b3JkOnJ9KXt0aGlzLl9kb2NCYXNlVXJsPWZ1bmN0aW9uIHBhcnNlRG9jQmFzZVVybChlKXtpZihlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSk7aWYodClyZXR1cm4gdC5ocmVmO3dhcm4oYEludmFsaWQgYWJzb2x1dGUgZG9jQmFzZVVybDogIiR7ZX0iLmApfXJldHVybiBudWxsfShlKTt0aGlzLl9kb2NJZD10O3RoaXMuX3Bhc3N3b3JkPXI7dGhpcy5lbmFibGVYZmE9YTtuLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7bi5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZCYmPUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1PYmplY3QuZnJlZXplKG4pO0ltYWdlUmVzaXplci5zZXRPcHRpb25zKG4pO0pwZWdTdHJlYW0uc2V0T3B0aW9ucyhuKTtPcGVyYXRvckxpc3Quc2V0T3B0aW9ucyhuKTtjb25zdCBpPXsuLi5uLGhhbmRsZXI6c307SnB4SW1hZ2Uuc2V0T3B0aW9ucyhpKTtJY2NDb2xvclNwYWNlLnNldE9wdGlvbnMoaSk7Q215a0lDQ0Jhc2VkQ1Muc2V0T3B0aW9ucyhpKTtKQmlnMkNDSVRURmF4SW1hZ2Uuc2V0T3B0aW9ucyhpKTtQREZGdW5jdGlvbkZhY3Rvcnkuc2V0T3B0aW9ucyhpKTtQYXR0ZXJuLnNldE9wdGlvbnMoaSl9Z2V0IGRvY0lkKCl7cmV0dXJuIHRoaXMuX2RvY0lkfWdldCBwYXNzd29yZCgpe3JldHVybiB0aGlzLl9wYXNzd29yZH1nZXQgZG9jQmFzZVVybCgpe3JldHVybiB0aGlzLl9kb2NCYXNlVXJsfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxhKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LGEpe2NvbnN0IG49ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KGUsYSk6bn1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsYSl7dHJ5e2NvbnN0IG49ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9hd2FpdCBuLmFwcGx5KGUsYSk6bn1jYXRjaChuKXtpZighKG4gaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgbjthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShuLmJlZ2luLG4uZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGEpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1jb25zdCB2Zj0xLFNmPTIsQWY9MSx4Zj0yLENmPTMsSWY9NCxGZj01LFRmPTYsT2Y9NyxSZj04O2Z1bmN0aW9uIG9uRm4oKXt9ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBJbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBSZXNwb25zZUV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFVua25vd25FcnJvckV4Y2VwdGlvbilyZXR1cm4gZTtlIGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fHVucmVhY2hhYmxlKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaChlLm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgQWJvcnRFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIkludmFsaWRQREZFeGNlcHRpb24iOnJldHVybiBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnJldHVybiBuZXcgUGFzc3dvcmRFeGNlcHRpb24oZS5tZXNzYWdlLGUuY29kZSk7Y2FzZSJSZXNwb25zZUV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMsZS5taXNzaW5nKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBVbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUuZGV0YWlscyl9cmV0dXJuIG5ldyBVbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSl9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7I1V0PW5ldyBBYm9ydENvbnRyb2xsZXI7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuc291cmNlTmFtZT1lO3RoaXMudGFyZ2V0TmFtZT10O3RoaXMuY29tT2JqPWE7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO2EuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy4jWHQuYmluZCh0aGlzKSx7c2lnbmFsOnRoaXMuI1V0LnNpZ25hbH0pfSNYdCh7ZGF0YTplfSl7aWYoZS50YXJnZXROYW1lIT09dGhpcy5zb3VyY2VOYW1lKXJldHVybjtpZihlLnN0cmVhbSl7dGhpcy4jV3QoZSk7cmV0dXJufWlmKGUuY2FsbGJhY2spe2NvbnN0IHQ9ZS5jYWxsYmFja0lkLGE9dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1t0XTtpZighYSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGNhbGxiYWNrICR7dH1gKTtkZWxldGUgdGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1t0XTtpZihlLmNhbGxiYWNrPT09dmYpYS5yZXNvbHZlKGUuZGF0YSk7ZWxzZXtpZihlLmNhbGxiYWNrIT09U2YpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTthLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSl9cmV0dXJufWNvbnN0IHQ9dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXTtpZighdCl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke2UuYWN0aW9ufWApO2lmKGUuY2FsbGJhY2tJZCl7Y29uc3QgYT10aGlzLnNvdXJjZU5hbWUsbj1lLnNvdXJjZU5hbWUscz10aGlzLmNvbU9iajtQcm9taXNlLnRyeSh0LGUuZGF0YSkudGhlbihmdW5jdGlvbih0KXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLGNhbGxiYWNrOnZmLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLGRhdGE6dH0pfSxmdW5jdGlvbih0KXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLGNhbGxiYWNrOlNmLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKHQpfSl9KTtyZXR1cm59ZS5zdHJlYW1JZD90aGlzLiNLdChlKTp0KGUuZGF0YSl9b24oZSx0KXtjb25zdCBhPXRoaXMuYWN0aW9uSGFuZGxlcjtpZihhW2VdKXRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgYWxyZWFkeSBhbiBhY3Rpb25OYW1lIGNhbGxlZCAiJHtlfSJgKTthW2VdPXR9c2VuZChlLHQsYSl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGRhdGE6dH0sYSl9c2VuZFdpdGhQcm9taXNlKGUsdCxhKXtjb25zdCBuPXRoaXMuY2FsbGJhY2tJZCsrLHM9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1tuXT1zO3RyeXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsY2FsbGJhY2tJZDpuLGRhdGE6dH0sYSl9Y2F0Y2goZSl7cy5yZWplY3QoZSl9cmV0dXJuIHMucHJvbWlzZX1zZW5kV2l0aFN0cmVhbShlLHQsYSxuKXtjb25zdCBzPXRoaXMuc3RyZWFtSWQrKyxyPXRoaXMuc291cmNlTmFtZSxpPXRoaXMudGFyZ2V0TmFtZSxvPXRoaXMuY29tT2JqO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0OmE9Pntjb25zdCBsPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc109e2NvbnRyb2xsZXI6YSxzdGFydENhbGw6bCxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6aSxhY3Rpb246ZSxzdHJlYW1JZDpzLGRhdGE6dCxkZXNpcmVkU2l6ZTphLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gbC5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10ucHVsbENhbGw9dDtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTppLHN0cmVhbTpUZixzdHJlYW1JZDpzLGRlc2lyZWRTaXplOmUuZGVzaXJlZFNpemV9KTtyZXR1cm4gdC5wcm9taXNlfSxjYW5jZWw6ZT0+e2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImNhbmNlbCBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10uaXNDbG9zZWQ9ITA7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6aSxzdHJlYW06QWYsc3RyZWFtSWQ6cyxyZWFzb246d3JhcFJlYXNvbihlKX0pO3JldHVybiB0LnByb21pc2V9fSxhKX0jS3QoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGE9dGhpcy5zb3VyY2VOYW1lLG49ZS5zb3VyY2VOYW1lLHM9dGhpcy5jb21PYmoscj10aGlzLGk9dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXSxvPXtlbnF1ZXVlKGUscj0xLGkpe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IG89dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1yO2lmKG8+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1zLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpJZixzdHJlYW1JZDp0LGNodW5rOmV9LGkpfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOkNmLHN0cmVhbUlkOnR9KTtkZWxldGUgci5zdHJlYW1TaW5rc1t0XX19LGVycm9yKGUpe2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImVycm9yIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOkZmLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OlByb21pc2Uud2l0aFJlc29sdmVycygpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZTt0aGlzLnN0cmVhbVNpbmtzW3RdPW87UHJvbWlzZS50cnkoaSxlLmRhdGEsbykudGhlbihmdW5jdGlvbigpe3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOlJmLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSxmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpSZixzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KX0jV3QoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGE9dGhpcy5zb3VyY2VOYW1lLG49ZS5zb3VyY2VOYW1lLHM9dGhpcy5jb21PYmoscj10aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdLGk9dGhpcy5zdHJlYW1TaW5rc1t0XTtzd2l0Y2goZS5zdHJlYW0pe2Nhc2UgUmY6ZS5zdWNjZXNzP3Iuc3RhcnRDYWxsLnJlc29sdmUoKTpyLnN0YXJ0Q2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO2JyZWFrO2Nhc2UgT2Y6ZS5zdWNjZXNzP3IucHVsbENhbGwucmVzb2x2ZSgpOnIucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIFRmOmlmKCFpKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpPZixzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KTticmVha31pLmRlc2lyZWRTaXplPD0wJiZlLmRlc2lyZWRTaXplPjAmJmkuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO2kuZGVzaXJlZFNpemU9ZS5kZXNpcmVkU2l6ZTtQcm9taXNlLnRyeShpLm9uUHVsbHx8b25GbikudGhlbihmdW5jdGlvbigpe3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOk9mLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSxmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpPZixzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KTticmVhaztjYXNlIElmOmFzc2VydChyLCJlbnF1ZXVlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYoci5pc0Nsb3NlZClicmVhaztyLmNvbnRyb2xsZXIuZW5xdWV1ZShlLmNodW5rKTticmVhaztjYXNlIENmOmFzc2VydChyLCJjbG9zZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2lmKHIuaXNDbG9zZWQpYnJlYWs7ci5pc0Nsb3NlZD0hMDtyLmNvbnRyb2xsZXIuY2xvc2UoKTt0aGlzLiNHdChyLHQpO2JyZWFrO2Nhc2UgRmY6YXNzZXJ0KHIsImVycm9yIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7ci5jb250cm9sbGVyLmVycm9yKHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiNHdChyLHQpO2JyZWFrO2Nhc2UgeGY6ZS5zdWNjZXNzP3IuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6ci5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy4jR3Qocix0KTticmVhaztjYXNlIEFmOmlmKCFpKWJyZWFrO2NvbnN0IG89d3JhcFJlYXNvbihlLnJlYXNvbik7UHJvbWlzZS50cnkoaS5vbkNhbmNlbHx8b25GbixvKS50aGVuKGZ1bmN0aW9uKCl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06eGYsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9LGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOnhmLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pO2kuc2lua0NhcGFiaWxpdHkucmVqZWN0KG8pO2kuaXNDYW5jZWxsZWQ9ITA7ZGVsZXRlIHRoaXMuc3RyZWFtU2lua3NbdF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2UiKX19YXN5bmMjR3QoZSx0KXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsPy5wcm9taXNlLGUucHVsbENhbGw/LnByb21pc2UsZS5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF19ZGVzdHJveSgpe3RoaXMuI1V0Py5hYm9ydCgpO3RoaXMuI1V0PW51bGx9fWFzeW5jIGZ1bmN0aW9uIHdyaXRlT2JqZWN0KGUsdCxhLHtlbmNyeXB0Om49bnVsbCxlbmNyeXB0UmVmOnM9bnVsbH0pe2NvbnN0IHI9biYmcyE9PWU/bi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZS5udW0sZS5nZW4pOm51bGw7YS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO2F3YWl0IHdyaXRlVmFsdWUodCxhLHIpO2EucHVzaCgiXG5lbmRvYmpcbiIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlRGljdChlLHQsYSl7dC5wdXNoKCI8PCIpO2Zvcihjb25zdFtuLHNdb2YgZS5nZXRSYXdFbnRyaWVzKCkpe3QucHVzaChgIC8ke2VzY2FwZVBERk5hbWUobil9IGApO2F3YWl0IHdyaXRlVmFsdWUocyx0LGEpfXQucHVzaCgiPj4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVZhbHVlKGUsdCxhKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0LnB1c2goYC8ke2VzY2FwZVBERk5hbWUoZS5uYW1lKX1gKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBSZWYpdC5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBSYCk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpfHxBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpYXdhaXQgYXN5bmMgZnVuY3Rpb24gd3JpdGVBcnJheShlLHQsYSl7dC5wdXNoKCJbIik7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXthd2FpdCB3cml0ZVZhbHVlKGVbbl0sdCxhKTtuPHMtMSYmdC5wdXNoKCIgIil9dC5wdXNoKCJdIil9KGUsdCxhKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl7YSYmKGU9YS5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgke2VzY2FwZVN0cmluZyhlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2goZS50b0ZpeGVkKDEwKS5yZXBsYWNlKC9cLj8wKyQvLCIiKSk6ImJvb2xlYW4iPT10eXBlb2YgZT90LnB1c2goZS50b1N0cmluZygpKTplIGluc3RhbmNlb2YgRGljdD9hd2FpdCB3cml0ZURpY3QoZSx0LGEpOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2F3YWl0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlU3RyZWFtKGUsdCxhKXsoZT1lLmdldE9yaWdpbmFsU3RyZWFtKCkpLnJlc2V0KCk7bGV0IG49ZS5nZXRCeXRlcygpO2NvbnN0e2RpY3Q6c309ZSxbcixpXT1hd2FpdCBQcm9taXNlLmFsbChbcy5nZXRBc3luYygiRmlsdGVyIikscy5nZXRBc3luYygiRGVjb2RlUGFybXMiKV0pLG89aXNOYW1lKEFycmF5LmlzQXJyYXkocik/YXdhaXQgcy54cmVmLmZldGNoSWZSZWZBc3luYyhyWzBdKTpyLCJGbGF0ZURlY29kZSIpO2lmKG4ubGVuZ3RoPj0yNTYmJiFvKXRyeXtjb25zdCBlPW5ldyBDb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLHQ9ZS53cml0YWJsZS5nZXRXcml0ZXIoKTthd2FpdCB0LnJlYWR5O3Qud3JpdGUobikudGhlbihhc3luYygpPT57YXdhaXQgdC5yZWFkeTthd2FpdCB0LmNsb3NlKCl9KS5jYXRjaCgoKT0+e30pO249YXdhaXQgbmV3IFJlc3BvbnNlKGUucmVhZGFibGUpLmJ5dGVzKCk7bGV0IGEsbDtpZihyKXtpZighbyl7YT1BcnJheS5pc0FycmF5KHIpP1tOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSwuLi5yXTpbTmFtZS5nZXQoIkZsYXRlRGVjb2RlIikscl07aSYmKGw9QXJyYXkuaXNBcnJheShpKT9bbnVsbCwuLi5pXTpbbnVsbCxpXSl9fWVsc2UgYT1OYW1lLmdldCgiRmxhdGVEZWNvZGUiKTthJiZzLnNldCgiRmlsdGVyIixhKTtsJiZzLnNldCgiRGVjb2RlUGFybXMiLGwpfWNhdGNoKGUpe2luZm8oYHdyaXRlU3RyZWFtIC0gY2Fubm90IGNvbXByZXNzIGRhdGE6ICIke2V9Ii5gKX1sZXQgbD1ieXRlc1RvU3RyaW5nKG4pO2EmJihsPWEuZW5jcnlwdFN0cmluZyhsKSk7cy5zZXQoIkxlbmd0aCIsbC5sZW5ndGgpO2F3YWl0IHdyaXRlRGljdChzLHQsYSk7dC5wdXNoKCIgc3RyZWFtXG4iLGwsIlxuZW5kc3RyZWFtIil9KGUsdCxhKTpudWxsPT09ZT90LnB1c2goIm51bGwiKTp3YXJuKGBVbmhhbmRsZWQgdmFsdWUgaW4gd3JpdGVyOiAke3R5cGVvZiBlfSwgcGxlYXNlIGZpbGUgYSBidWcuYCl9ZnVuY3Rpb24gd3JpdGVJbnQoZSx0LGEsbil7Zm9yKGxldCBzPXQrYS0xO3M+YS0xO3MtLSl7bltzXT0yNTUmZTtlPj49OH1yZXR1cm4gYSt0fWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGUsdCxhKXtjb25zdCBuPWUubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjtzKyspYVt0K3NdPTI1NSZlLmNoYXJDb2RlQXQocyk7cmV0dXJuIHQrbn1mdW5jdGlvbiB1cGRhdGVYRkEoe3hmYURhdGE6ZSx4ZmFEYXRhc2V0c1JlZjp0LGNoYW5nZXM6YSx4cmVmOm59KXtpZihudWxsPT09ZSl7ZT1mdW5jdGlvbiB3cml0ZVhGQURhdGFGb3JBY3JvZm9ybShlLHQpe2NvbnN0IGE9bmV3IFNpbXBsZVhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTtmb3IoY29uc3R7eGZhOmV9b2YgdCl7aWYoIWUpY29udGludWU7Y29uc3R7cGF0aDp0LHZhbHVlOm59PWU7aWYoIXQpY29udGludWU7Y29uc3Qgcz1wYXJzZVhGQVBhdGgodCk7bGV0IHI9YS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShzLDApOyFyJiZzLmxlbmd0aD4xJiYocj1hLmRvY3VtZW50RWxlbWVudC5zZWFyY2hOb2RlKFtzLmF0KC0xKV0sMCkpO3I/ci5jaGlsZE5vZGVzPUFycmF5LmlzQXJyYXkobik/bi5tYXAoZT0+bmV3IFNpbXBsZURPTU5vZGUoInZhbHVlIixlKSk6W25ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsbildOndhcm4oYE5vZGUgbm90IGZvdW5kIGZvciBwYXRoOiAke3R9YCl9Y29uc3Qgbj1bXTthLmRvY3VtZW50RWxlbWVudC5kdW1wKG4pO3JldHVybiBuLmpvaW4oIiIpfShuLmZldGNoSWZSZWYodCkuZ2V0U3RyaW5nKCksYSl9Y29uc3Qgcz1uZXcgU3RyaW5nU3RyZWFtKGUpO3MuZGljdD1uZXcgRGljdChuKTtzLmRpY3Quc2V0SWZOYW1lKCJUeXBlIiwiRW1iZWRkZWRGaWxlIik7YS5wdXQodCx7ZGF0YTpzfSl9ZnVuY3Rpb24gZ2V0SW5kZXhlcyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdHtyZWY6YX1vZiBlKWEubnVtPT09dC5hdCgtMikrdC5hdCgtMSk/dFt0Lmxlbmd0aC0xXSs9MTp0LnB1c2goYS5udW0sMSk7cmV0dXJuIHR9ZnVuY3Rpb24gY29tcHV0ZUlEcyhlLHQsYSl7aWYoQXJyYXkuaXNBcnJheSh0LmZpbGVJZHMpJiZ0LmZpbGVJZHMubGVuZ3RoPjApe2NvbnN0IG49ZnVuY3Rpb24gY29tcHV0ZU1ENShlLHQpe2NvbnN0IGE9TWF0aC5mbG9vcihEYXRlLm5vdygpLzFlMyksbj10LmZpbGVuYW1lfHwiIixzPVthLnRvU3RyaW5nKCksbixlLnRvU3RyaW5nKCksLi4udC5pbmZvTWFwLnZhbHVlcygpXSxyPU1hdGguc3VtUHJlY2lzZShzLm1hcChlPT5lLmxlbmd0aCkpLGk9bmV3IFVpbnQ4QXJyYXkocik7bGV0IG89MDtmb3IoY29uc3QgZSBvZiBzKW89d3JpdGVTdHJpbmcoZSxvLGkpO3JldHVybiBieXRlc1RvU3RyaW5nKGNhbGN1bGF0ZU1ENShpLDAsaS5sZW5ndGgpKX0oZSx0KTthLnNldCgiSUQiLFt0LmZpbGVJZHNbMF18fG4sbl0pfX1hc3luYyBmdW5jdGlvbiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOmUseHJlZkluZm86dCxjaGFuZ2VzOmEseHJlZjpuPW51bGwsaGFzWGZhOnM9ITEseGZhRGF0YXNldHNSZWY6cj1udWxsLGhhc1hmYURhdGFzZXRzRW50cnk6aT0hMSxuZWVkQXBwZWFyYW5jZXM6byxhY3JvRm9ybVJlZjpsPW51bGwsYWNyb0Zvcm06Zj1udWxsLHhmYURhdGE6Yz1udWxsLHVzZVhyZWZTdHJlYW06aD0hMX0pe2F3YWl0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFjcm9mb3JtKHt4cmVmOmUsYWNyb0Zvcm06dCxhY3JvRm9ybVJlZjphLGhhc1hmYTpuLGhhc1hmYURhdGFzZXRzRW50cnk6cyx4ZmFEYXRhc2V0c1JlZjpyLG5lZWRBcHBlYXJhbmNlczppLGNoYW5nZXM6b30peyFufHxzfHxyfHx3YXJuKCJYRkEgLSBDYW5ub3Qgc2F2ZSBpdCIpO2lmKCFpJiYoIW58fCFyfHxzKSlyZXR1cm47Y29uc3QgbD10LmNsb25lKCk7aWYobiYmIXMpe2NvbnN0IGU9dC5nZXQoIlhGQSIpLnNsaWNlKCk7ZS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Uuc3BsaWNlKDMsMCxyKTtsLnNldCgiWEZBIixlKX1pJiZsLnNldCgiTmVlZEFwcGVhcmFuY2VzIiwhMCk7by5wdXQoYSx7ZGF0YTpsfSl9KHt4cmVmOm4sYWNyb0Zvcm06ZixhY3JvRm9ybVJlZjpsLGhhc1hmYTpzLGhhc1hmYURhdGFzZXRzRW50cnk6aSx4ZmFEYXRhc2V0c1JlZjpyLG5lZWRBcHBlYXJhbmNlczpvLGNoYW5nZXM6YX0pO3MmJnVwZGF0ZVhGQSh7eGZhRGF0YTpjLHhmYURhdGFzZXRzUmVmOnIsY2hhbmdlczphLHhyZWY6bn0pO2NvbnN0IHU9ZnVuY3Rpb24gZ2V0VHJhaWxlckRpY3QoZSx0LGEpe2NvbnN0IG49bmV3IERpY3QobnVsbCk7bi5zZXRJZkRlZmluZWQoIlByZXYiLGU/LnN0YXJ0WFJlZik7Y29uc3Qgcz1lLm5ld1JlZjtpZihhKXt0LnB1dChzLHtkYXRhOiIifSk7bi5zZXQoIlNpemUiLHMubnVtKzEpO24uc2V0SWZOYW1lKCJUeXBlIiwiWFJlZiIpfWVsc2Ugbi5zZXQoIlNpemUiLHMubnVtKTtuLnNldElmRGVmaW5lZCgiUm9vdCIsZT8ucm9vdFJlZik7bi5zZXRJZkRlZmluZWQoIkluZm8iLGU/LmluZm9SZWYpO24uc2V0SWZEZWZpbmVkKCJFbmNyeXB0IixlPy5lbmNyeXB0UmVmKTtyZXR1cm4gbn0odCxhLGgpLG09W10scD1hd2FpdCBhc3luYyBmdW5jdGlvbiB3cml0ZUNoYW5nZXMoZSx0LGE9W10pe2NvbnN0IG49W107Zm9yKGNvbnN0W3Mse2RhdGE6cixvYmpTdHJlYW1SZWY6aSxpbmRleDpvfV1vZiBlLml0ZW1zKCkpaWYoaSluLnB1c2goe3JlZjpzLGRhdGE6cixvYmpTdHJlYW1SZWY6aSxpbmRleDpvfSk7ZWxzZSBpZihudWxsIT09ciYmInN0cmluZyIhPXR5cGVvZiByKXthd2FpdCB3cml0ZU9iamVjdChzLHIsYSx0KTtuLnB1c2goe3JlZjpzLGRhdGE6YS5qb2luKCIiKX0pO2EubGVuZ3RoPTB9ZWxzZSBuLnB1c2goe3JlZjpzLGRhdGE6cn0pO3JldHVybiBuLnNvcnQoKGUsdCk9PmUucmVmLm51bS10LnJlZi5udW0pfShhLG4sbSk7bGV0IGQ9ZS5sZW5ndGg7Y29uc3QgZz1lLmF0KC0xKTtpZigxMCE9PWcmJjEzIT09Zyl7bS5wdXNoKCJcbiIpO2QrPTF9Zm9yKGNvbnN0e2RhdGE6ZX1vZiBwKW51bGwhPT1lJiZtLnB1c2goZSk7YXdhaXQoaD9hc3luYyBmdW5jdGlvbiBnZXRYUmVmU3RyZWFtVGFibGUoZSx0LGEsbixzKXtjb25zdCByPVtdO2xldCBpPTAsbz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOm4sb2JqU3RyZWFtUmVmOnMsaW5kZXg6bH1vZiBhKXtsZXQgYTtpPU1hdGgubWF4KGksdCk7aWYocyl7YT1sO3IucHVzaChbMixzLm51bSxhXSl9ZWxzZSBpZihudWxsIT09bil7YT1NYXRoLm1pbihlLmdlbiw2NTUzNSk7ci5wdXNoKFsxLHQsYV0pO3QrPW4ubGVuZ3RofWVsc2V7YT1NYXRoLm1pbihlLmdlbisxLDY1NTM1KTtyLnB1c2goWzAsMCxhXSl9bz1NYXRoLm1heChvLGEpfW4uc2V0KCJJbmRleCIsZ2V0SW5kZXhlcyhhKSk7Y29uc3QgbD1bMSxnZXRTaXplSW5CeXRlcyhpKSxnZXRTaXplSW5CeXRlcyhvKV07bi5zZXQoIlciLGwpO2NvbXB1dGVJRHModCxlLG4pO2NvbnN0IGY9TWF0aC5zdW1QcmVjaXNlKGwpLGM9bmV3IFVpbnQ4QXJyYXkoZipyLmxlbmd0aCksaD1uZXcgU3RyZWFtKGMpO2guZGljdD1uO2xldCB1PTA7Zm9yKGNvbnN0W2UsdCxhXW9mIHIpe3U9d3JpdGVJbnQoZSxsWzBdLHUsYyk7dT13cml0ZUludCh0LGxbMV0sdSxjKTt1PXdyaXRlSW50KGEsbFsyXSx1LGMpfWF3YWl0IHdyaXRlT2JqZWN0KGUubmV3UmVmLGgscyx7fSk7cy5wdXNoKCJzdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCxkLHAsdSxtKTphc3luYyBmdW5jdGlvbiBnZXRYUmVmVGFibGUoZSx0LGEsbixzKXtzLnB1c2goInhyZWZcbiIpO2NvbnN0IHI9Z2V0SW5kZXhlcyhhKTtsZXQgaT0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOm59b2YgYSl7aWYoZS5udW09PT1yW2ldKXtzLnB1c2goYCR7cltpXX0gJHtyW2krMV19XG5gKTtpKz0yfWlmKG51bGwhPT1uKXtzLnB1c2goYCR7dC50b1N0cmluZygpLnBhZFN0YXJ0KDEwLCIwIil9ICR7TWF0aC5taW4oZS5nZW4sNjU1MzUpLnRvU3RyaW5nKCkucGFkU3RhcnQoNSwiMCIpfSBuXHJcbmApO3QrPW4ubGVuZ3RofWVsc2Ugcy5wdXNoKGAwMDAwMDAwMDAwICR7TWF0aC5taW4oZS5nZW4rMSw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IGZcclxuYCl9Y29tcHV0ZUlEcyh0LGUsbik7cy5wdXNoKCJ0cmFpbGVyXG4iKTthd2FpdCB3cml0ZURpY3QobixzLG51bGwpO3MucHVzaCgiXG5zdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCxkLHAsdSxtKSk7Y29uc3QgYj1lLmxlbmd0aCtNYXRoLnN1bVByZWNpc2UobS5tYXAoZT0+ZS5sZW5ndGgpKSx3PW5ldyBVaW50OEFycmF5KGIpO3cuc2V0KGUpO2xldCBqPWUubGVuZ3RoO2Zvcihjb25zdCBlIG9mIG0paj13cml0ZVN0cmluZyhlLGosdyk7cmV0dXJuIHd9Y2xhc3MgUGFnZURhdGF7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBhZ2U9ZTt0aGlzLmRvY3VtZW50RGF0YT10O3RoaXMuYW5ub3RhdGlvbnM9bnVsbDt0aGlzLnBvaW50aW5nTmFtZWREZXN0aW5hdGlvbnM9bnVsbDt0LnBhZ2VzTWFwLnB1dChlLnJlZix0aGlzKX19Y2xhc3MgRG9jdW1lbnREYXRhe2NvbnN0cnVjdG9yKGUpe3RoaXMuZG9jdW1lbnQ9ZTt0aGlzLmRlc3RpbmF0aW9ucz1udWxsO3RoaXMucGFnZUxhYmVscz1udWxsO3RoaXMucGFnZXNNYXA9bmV3IFJlZlNldENhY2hlO3RoaXMub2xkUmVmTWFwcGluZz1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5kZWR1cE5hbWVkRGVzdGluYXRpb25zPW5ldyBNYXA7dGhpcy51c2VkTmFtZWREZXN0aW5hdGlvbnM9bmV3IFNldDt0aGlzLnBvc3Rwb25lZFJlZkNvcGllcz1uZXcgUmVmU2V0Q2FjaGU7dGhpcy51c2VkU3RydWN0UGFyZW50cz1uZXcgU2V0O3RoaXMub2xkU3RydWN0UGFyZW50TWFwcGluZz1uZXcgTWFwO3RoaXMuc3RydWN0VHJlZVJvb3Q9bnVsbDt0aGlzLnBhcmVudFRyZWU9bnVsbDt0aGlzLmlkVHJlZT1udWxsO3RoaXMucm9sZU1hcD1udWxsO3RoaXMuY2xhc3NNYXA9bnVsbDt0aGlzLm5hbWVzcGFjZXM9bnVsbDt0aGlzLnN0cnVjdFRyZWVBRj1udWxsO3RoaXMuc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uPVtdO3RoaXMuYWNyb0Zvcm09bnVsbDt0aGlzLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2U9IiI7dGhpcy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXM9bnVsbDt0aGlzLmFjcm9Gb3JtUT0wO3RoaXMuaGFzU2lnbmF0dXJlQW5ub3RhdGlvbnM9ITE7dGhpcy5maWVsZFRvUGFyZW50PW5ldyBSZWZTZXRDYWNoZTt0aGlzLm91dGxpbmU9bnVsbDt0aGlzLmVtYmVkZGVkRmlsZXM9bnVsbH19Y2xhc3MgWFJlZldyYXBwZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmVudHJpZXM9ZTt0aGlzLl9nZXROZXdSZWY9dH1mZXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmVudHJpZXNbZS5udW1dOmV9ZmV0Y2hJZlJlZkFzeW5jKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5mZXRjaChlKSl9ZmV0Y2hJZlJlZihlKXtyZXR1cm4gdGhpcy5mZXRjaChlKX1mZXRjaEFzeW5jKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5mZXRjaChlKSl9Z2V0TmV3VGVtcG9yYXJ5UmVmKCl7cmV0dXJuIHRoaXMuX2dldE5ld1JlZigpfX1jbGFzcyBQREZFZGl0b3J7aGFzU2luZ2xlRmlsZT0hMTtpc1NpbmdsZUZpbGU9ITE7I1Z0PW51bGw7Y3VycmVudERvY3VtZW50PW51bGw7b2xkUGFnZXM9W107bmV3UGFnZXM9W107eHJlZj1bbnVsbF07eHJlZldyYXBwZXI9bmV3IFhSZWZXcmFwcGVyKHRoaXMueHJlZiwoKT0+dGhpcy5uZXdSZWYpO25ld1JlZkNvdW50PTE7bmFtZXNEaWN0PW51bGw7dmVyc2lvbj0iMS43IjtwYWdlTGFiZWxzPW51bGw7bmFtZWREZXN0aW5hdGlvbnM9bmV3IE1hcDtwYXJlbnRUcmVlPW5ldyBNYXA7c3RydWN0VHJlZUtpZHM9W107aWRUcmVlPW5ldyBNYXA7Y2xhc3NNYXA9bmV3IERpY3Q7cm9sZU1hcD1uZXcgRGljdDtuYW1lc3BhY2VzPW5ldyBNYXA7c3RydWN0VHJlZUFGPVtdO3N0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbj1bXTtmaWVsZHM9W107YWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZT0iIjthY3JvRm9ybURlZmF1bHRSZXNvdXJjZXM9bnVsbDthY3JvRm9ybU5lZWRBcHBlYXJhbmNlcz0hMTthY3JvRm9ybVNpZ0ZsYWdzPTA7YWNyb0Zvcm1DYWxjdWxhdGlvbk9yZGVyPW51bGw7YWNyb0Zvcm1RPTA7b3V0bGluZUl0ZW1zPW51bGw7ZW1iZWRkZWRGaWxlcz1uZXcgTWFwO2NvbnN0cnVjdG9yKHt1c2VPYmplY3RTdHJlYW1zOmU9ITAsdGl0bGU6dD0iIixhdXRob3I6YT0iIn09e30pe1t0aGlzLnJvb3RSZWYsdGhpcy5yb290RGljdF09dGhpcy5uZXdEaWN0O1t0aGlzLmluZm9SZWYsdGhpcy5pbmZvRGljdF09dGhpcy5uZXdEaWN0O1t0aGlzLnBhZ2VzUmVmLHRoaXMucGFnZXNEaWN0XT10aGlzLm5ld0RpY3Q7dGhpcy51c2VPYmplY3RTdHJlYW1zPWU7dGhpcy5vYmpTdHJlYW1SZWZzPWU/bmV3IFNldDpudWxsO3RoaXMudGl0bGU9dDt0aGlzLmF1dGhvcj1hfWdldCBuZXdSZWYoKXtyZXR1cm4gUmVmLmdldCh0aGlzLm5ld1JlZkNvdW50KyssMCl9Z2V0IG5ld0RpY3QoKXtjb25zdCBlPXRoaXMubmV3UmVmO3JldHVybltlLHRoaXMueHJlZltlLm51bV09bmV3IERpY3RdfWFzeW5jIyR0KGUsdCl7Y29uc3QgYT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbYS5udW1dPWF3YWl0IHRoaXMuI1l0KGUsITAsdCk7cmV0dXJuIGF9Y2xvbmVEaWN0KGUpe2NvbnN0IHQ9ZS5jbG9uZSgpO3QueHJlZj10aGlzLnhyZWZXcmFwcGVyO3JldHVybiB0fWFzeW5jI1l0KGUsdCxhKXtpZihlIGluc3RhbmNlb2YgUmVmKXtjb25zdHtjdXJyZW50RG9jdW1lbnQ6e29sZFJlZk1hcHBpbmc6dH19PXRoaXM7bGV0IG49dC5nZXQoZSk7aWYobilyZXR1cm4gbjtjb25zdCBzPWU7aWYoIm51bWJlciI9PXR5cGVvZihlPWF3YWl0IGEuZmV0Y2hBc3luYyhzKSkpcmV0dXJuIGU7bj10aGlzLm5ld1JlZjt0LnB1dChzLG4pO3RoaXMueHJlZltuLm51bV09YXdhaXQgdGhpcy4jWXQoZSwhMCxhKTtyZXR1cm4gbn1jb25zdCBuPVtdLHtjdXJyZW50RG9jdW1lbnQ6e3Bvc3Rwb25lZFJlZkNvcGllczpzfX09dGhpcztpZihBcnJheS5pc0FycmF5KGUpKXt0JiYoZT1lLnNsaWNlKCkpO2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1lW3RdaW5zdGFuY2VvZiBSZWYmJnMuZ2V0KGVbdF0pO3I/ci5wdXNoKGE9PmVbdF09YSk6bi5wdXNoKHRoaXMuI1l0KGVbdF0sITAsYSkudGhlbihhPT5lW3RdPWEpKX1hd2FpdCBQcm9taXNlLmFsbChuKTtyZXR1cm4gZX1sZXQgcjtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7KHtkaWN0OnJ9PWU9ZS5nZXRPcmlnaW5hbFN0cmVhbSgpLmNsb25lKCkpO3IueHJlZj10aGlzLnhyZWZXcmFwcGVyfWVsc2UgaWYoZSBpbnN0YW5jZW9mIERpY3Qpe3QmJigoZT1lLmNsb25lKCkpLnhyZWY9dGhpcy54cmVmV3JhcHBlcik7cj1lfWlmKHIpe2Zvcihjb25zdFtlLHRdb2Ygci5nZXRSYXdFbnRyaWVzKCkpe2NvbnN0IGk9dCBpbnN0YW5jZW9mIFJlZiYmcy5nZXQodCk7aT9pLnB1c2godD0+ci5zZXQoZSx0KSk6bi5wdXNoKHRoaXMuI1l0KHQsITAsYSkudGhlbih0PT5yLnNldChlLHQpKSl9YXdhaXQgUHJvbWlzZS5hbGwobil9cmV0dXJuIGV9YXN5bmMjSnQoZSx0LGEsbixzLHIsaSxvPW5ldyBSZWZTZXQpe2NvbnN0e2N1cnJlbnREb2N1bWVudDp7cGFnZXNNYXA6bCxvbGRSZWZNYXBwaW5nOmZ9fT10aGlzLGM9dC5nZXRSYXcoIlBnIik7aWYoYyBpbnN0YW5jZW9mIFJlZiYmIWwuaGFzKGMpKXJldHVybiBudWxsO2xldCBoO2NvbnN0IHU9aD10LmdldFJhdygiSyIpO2lmKHUgaW5zdGFuY2VvZiBSZWYpe2lmKG8uaGFzKHUpKXJldHVybiBudWxsO2g9YXdhaXQgYS5mZXRjaEFzeW5jKHUpO0FycmF5LmlzQXJyYXkoaCl8fChoPVt1XSl9aD1BcnJheS5pc0FycmF5KGgpP2g6W2hdO2NvbnN0IG09W10scD1bXTtmb3IobGV0IHQgb2YgaCl7Y29uc3QgYz10IGluc3RhbmNlb2YgUmVmP3Q6bnVsbDtpZihjKXtpZihvLmhhcyhjKSljb250aW51ZTtvLnB1dChjKTt0PWF3YWl0IGEuZmV0Y2hBc3luYyhjKX1pZigibnVtYmVyIj09dHlwZW9mIHQpe20ucHVzaCh0KTtjb250aW51ZX1pZighKHQgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCBoPXQuZ2V0UmF3KCJQZyIpO2lmKGggaW5zdGFuY2VvZiBSZWYmJiFsLmhhcyhoKSljb250aW51ZTtjb25zdCB1PXQuZ2V0KCJUeXBlIik7aWYoIXV8fGlzTmFtZSh1LCJTdHJ1Y3RFbGVtIikpe2xldCBlPSExO2lmKGMmJm4uaGFzKGMpKXtpZighaXNOYW1lKHQuZ2V0KCJTIiksIkxpbmsiKSljb250aW51ZTtlPSEwfWNvbnN0IGw9YXdhaXQgdGhpcy4jSnQoYyx0LGEsbixzLHIsaSxvKTtpZihsKXtwLnB1c2gobS5sZW5ndGgpO20ucHVzaChsKTtjJiZmLnB1dChjLGwpO2UmJnRoaXMueHJlZltsLm51bV0uc2V0SWZOYW1lKCJTIiwiU3BhbiIpfWNvbnRpbnVlfWlmKGlzTmFtZSh1LCJPQkpSIikpe2lmKCFjKWNvbnRpbnVlO2NvbnN0IHQ9Zi5nZXQoYyk7aWYoIXQpY29udGludWU7Y29uc3QgYT10aGlzLnhyZWZbdC5udW1dLmdldFJhdygiT2JqIik7aWYoYSBpbnN0YW5jZW9mIFJlZil7Y29uc3QgdD10aGlzLnhyZWZbYS5udW1dO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYhdC5oYXMoIlN0cnVjdFBhcmVudCIpJiZlKXtjb25zdCBhPXRoaXMucGFyZW50VHJlZS5zaXplO3RoaXMucGFyZW50VHJlZS5zZXQoYSxbZixlXSk7dC5zZXQoIlN0cnVjdFBhcmVudCIsYSl9fW0ucHVzaCh0KTtjb250aW51ZX1pZihpc05hbWUodSwiTUNSIikpe2NvbnN0IGU9YXdhaXQgdGhpcy4jWXQoY3x8dCwhMCxhKTttLnB1c2goZSk7Y29udGludWV9aWYoYyl7Y29uc3QgZT1hd2FpdCB0aGlzLiNZdChjLCEwLGEpO20ucHVzaChlKX19aWYoMCE9PWgubGVuZ3RoJiYwPT09bS5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgZD10aGlzLm5ld1JlZixnPXRoaXMueHJlZltkLm51bV09dGhpcy5jbG9uZURpY3QodCk7Zy5kZWxldGUoIklEIik7Zy5kZWxldGUoIkMiKTtnLmRlbGV0ZSgiSyIpO2cuZGVsZXRlKCJQIik7Zy5kZWxldGUoIlMiKTthd2FpdCB0aGlzLiNZdChnLCExLGEpO2NvbnN0IGI9dC5nZXQoIkMiKTtpZihiIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgZT1yLmdldChiLm5hbWUpO2U/Zy5zZXQoIkMiLE5hbWUuZ2V0KGUpKTpnLnNldCgiQyIsYil9ZWxzZSBpZihBcnJheS5pc0FycmF5KGIpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGIpaWYodCBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IGE9ci5nZXQodC5uYW1lKTthP2UucHVzaChOYW1lLmdldChhKSk6ZS5wdXNoKHQpfWcuc2V0KCJDIixlKX1jb25zdCB3PXQuZ2V0KCJTIik7aWYodyBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IGU9aS5nZXQody5uYW1lKTtlP2cuc2V0KCJTIixOYW1lLmdldChlKSk6Zy5zZXQoIlMiLHcpfWNvbnN0IGo9dC5nZXQoIklEIik7aWYoInN0cmluZyI9PXR5cGVvZiBqKXtjb25zdCBlPXN0cmluZ1RvUERGU3RyaW5nKGosITEpLHQ9cy5nZXQoZSk7dD9nLnNldCgiSUQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUodCkpOmcuc2V0KCJJRCIsail9bGV0IGs9Zy5nZXQoIkEiKTtpZihrKXtBcnJheS5pc0FycmF5KGspfHwoaz1ba10pO2ZvcihsZXQgZSBvZiBrKXtlPXRoaXMueHJlZldyYXBwZXIuZmV0Y2goZSk7aWYoaXNOYW1lKGUuZ2V0KCJPIiksIlRhYmxlIikmJmUuaGFzKCJIZWFkZXJzIikpe2NvbnN0IHQ9dGhpcy54cmVmV3JhcHBlci5mZXRjaChlLmdldFJhdygiSGVhZGVycyIpKTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl7Y29uc3QgYT1zLmdldChzdHJpbmdUb1BERlN0cmluZyh0W2VdLCExKSk7YSYmKHRbZV09YSl9fX19Zm9yKGNvbnN0IGUgb2YgcCl7Y29uc3QgdD1tW2VdO3RoaXMueHJlZlt0Lm51bV0uc2V0KCJQIixkKX0xPT09bS5sZW5ndGg/Zy5zZXQoIksiLG1bMF0pOm0ubGVuZ3RoPjEmJmcuc2V0KCJLIixtKTtyZXR1cm4gZH0jUXQoe2RvY3VtZW50OmUsaW5jbHVkZVBhZ2VzOnQsZXhjbHVkZVBhZ2VzOmF9KXtpZighZSlyZXR1cm5bXTtsZXQgbixzLHIsaTtmb3IoY29uc3QgZSBvZiB0fHxbXSlBcnJheS5pc0FycmF5KGUpPyhzfHw9W10pLnB1c2goZSk6KG58fD1uZXcgU2V0KS5hZGQoZSk7Zm9yKGNvbnN0IGUgb2YgYXx8W10pQXJyYXkuaXNBcnJheShlKT8oaXx8PVtdKS5wdXNoKGUpOihyfHw9bmV3IFNldCkuYWRkKGUpO2NvbnN0IG89W107Zm9yKGxldCB0PTAsYT1lLm51bVBhZ2VzO3Q8YTt0Kyspe2lmKHI/Lmhhcyh0KSljb250aW51ZTtpZihpKXtsZXQgZT0hMTtmb3IoY29uc3RbYSxuXW9mIGkpaWYodD49YSYmdDw9bil7ZT0hMDticmVha31pZihlKWNvbnRpbnVlfWxldCBlPSExO24mJihlPW4uaGFzKHQpKTtpZighZSYmcylmb3IoY29uc3RbYSxuXW9mIHMpaWYodD49YSYmdDw9bil7ZT0hMDticmVha31lfHxufHxzfHwoZT0hMCk7ZSYmby5wdXNoKHQpfXJldHVybiBvfSNadChlKXtjb25zdCB0PVtdLGE9W107Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IHM9ZVtuXTtpZighcy5kb2N1bWVudHx8cy5wYWdlSW5kaWNlcyljb250aW51ZTtjb25zdCByPXRoaXMuI1F0KHMpLmxlbmd0aDtpZih2b2lkIDA9PT1zLmluc2VydEFmdGVyKWZvcihsZXQgZT0wO2U8cjtlKyspdC5wdXNoKG4pO2Vsc2UgYS5wdXNoKHtpOm4saW5zZXJ0QWZ0ZXI6cy5pbnNlcnRBZnRlcixjb3VudDpyfSl9YS5zb3J0KChlLHQpPT5lLmluc2VydEFmdGVyLXQuaW5zZXJ0QWZ0ZXIpO2lmKGEubGVuZ3RoPjApZm9yKGNvbnN0IHQgb2YgZSl7aWYoIXQuZG9jdW1lbnR8fCF0LnBhZ2VJbmRpY2VzKWNvbnRpbnVlO2NvbnN0IGU9dGhpcy4jUXQodCkubGVuZ3RoO2lmKHQucGFnZUluZGljZXMubGVuZ3RoPGUpdGhyb3cgbmV3IEVycm9yKCJleHRyYWN0UGFnZXM6IHBhcnRpYWwgcGFnZUluZGljZXMgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggaW5zZXJ0QWZ0ZXIgZW50cmllcy4iKX1jb25zdCBuPWEubGVuZ3RoPjAmJmUuc29tZShlPT5lLmRvY3VtZW50JiZlLnBhZ2VJbmRpY2VzKTtpZigwPT09dC5sZW5ndGgmJm4pe2NvbnN0IHQ9ZS5zbGljZSgpO2xldCBuPS0xO2Zvcihjb25zdCB0IG9mIGUpaWYodC5kb2N1bWVudCYmdC5wYWdlSW5kaWNlcylmb3IoY29uc3QgZSBvZiB0LnBhZ2VJbmRpY2VzKWU+biYmKG49ZSk7bGV0IHM9MDtmb3IoY29uc3R7aTplLGluc2VydEFmdGVyOnIsY291bnQ6aX1vZiBhKXtjb25zdCBhPU1hdGgubWluKE1hdGgubWF4KHIsLTEpK3Msbik7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXTtuLmRvY3VtZW50JiZuLnBhZ2VJbmRpY2VzJiYhbi5wYWdlSW5kaWNlcy5ldmVyeShlPT5lPD1hKSYmKHRbZV09ey4uLm4scGFnZUluZGljZXM6bi5wYWdlSW5kaWNlcy5tYXAoZT0+ZT5hP2UraTplKX0pfWNvbnN0IG89W107Zm9yKGxldCBlPTA7ZTxpO2UrKylvLnB1c2goYSsxK2UpO2NvbnN0IGw9ey4uLnRbZV0scGFnZUluZGljZXM6b307ZGVsZXRlIGwuaW5zZXJ0QWZ0ZXI7dFtlXT1sO3MrPWk7bis9aX1yZXR1cm4gdH1sZXQgcz0wO2Zvcihjb25zdHtpOmUsaW5zZXJ0QWZ0ZXI6bixjb3VudDpyfW9mIGEpe2NvbnN0IGE9bisxK3M7dC5zcGxpY2UoYSwwLC4uLm5ldyBBcnJheShyKS5maWxsKGUpKTtzKz1yfWNvbnN0IHI9bmV3IEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3QgYT10W2VdOyhyW2FdfHw9W10pLnB1c2goZSl9cmV0dXJuIGUubWFwKChlLHQpPT57aWYoIWUuZG9jdW1lbnR8fGUucGFnZUluZGljZXMpcmV0dXJuIGU7Y29uc3QgYT17Li4uZSxwYWdlSW5kaWNlczpyW3RdfHxbXX07ZGVsZXRlIGEuaW5zZXJ0QWZ0ZXI7cmV0dXJuIGF9KX1hc3luYyBleHRyYWN0UGFnZXMoZSx0LGEsbil7ZS5zb21lKGU9PnZvaWQgMCE9PWUuaW5zZXJ0QWZ0ZXIpJiYoZT10aGlzLiNadChlKSk7Y29uc3Qgcz1bXTtsZXQgcj0wO3RoaXMuaXNTaW5nbGVGaWxlPTE9PT1lLmxlbmd0aHx8ZS5ldmVyeSh0PT50LmRvY3VtZW50PT09ZVswXS5kb2N1bWVudCk7dGhpcy5oYXNTaW5nbGVGaWxlPTE9PT1lLmxlbmd0aDtjb25zdCBpPVtdO3QmJih0aGlzLiNWdD17aGFuZGxlcjphLHRhc2s6bixuZXdBbm5vdGF0aW9uc0J5UGFnZTpnZXROZXdBbm5vdGF0aW9uc01hcCh0KSxpbWFnZXNQcm9taXNlczpBbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyh0LnZhbHVlcygpLHRoaXMueHJlZldyYXBwZXIsITApfSk7Zm9yKGNvbnN0e2RvY3VtZW50OnQsaW5jbHVkZVBhZ2VzOmEsZXhjbHVkZVBhZ2VzOm4scGFnZUluZGljZXM6b31vZiBlKXtpZighdCljb250aW51ZTtvJiYocj0tMSk7Y29uc3QgZT1uZXcgRG9jdW1lbnREYXRhKHQpO2kucHVzaChlKTtzLnB1c2godGhpcy4jZWEoZSkpO2xldCBsPTA7Zm9yKGNvbnN0IGkgb2YgdGhpcy4jUXQoe2RvY3VtZW50OnQsaW5jbHVkZVBhZ2VzOmEsZXhjbHVkZVBhZ2VzOm59KSl7bGV0IGE7byYmKGE9b1tsKytdKTtpZih2b2lkIDA9PT1hKWlmKC0xIT09cilhPXIrKztlbHNlIGZvcihhPTA7dm9pZCAwIT09dGhpcy5vbGRQYWdlc1thXTthKyspO3RoaXMub2xkUGFnZXNbYV09bnVsbDtzLnB1c2godC5nZXRQYWdlKGkpLnRoZW4odD0+e3RoaXMub2xkUGFnZXNbYV09bmV3IFBhZ2VEYXRhKHQsZSl9KSl9fWF3YWl0IFByb21pc2UuYWxsKHMpO3MubGVuZ3RoPTA7dGhpcy4jdGEoaSk7dGhpcy4jYWEoaSk7dGhpcy4jbmEoKTtmb3IoY29uc3QgZSBvZiB0aGlzLm9sZFBhZ2VzKXMucHVzaCh0aGlzLiNzYShlKSk7YXdhaXQgUHJvbWlzZS5hbGwocyk7dGhpcy4jcmEoKTt0aGlzLiNpYShpKTtmb3IobGV0IGU9MCx0PXRoaXMub2xkUGFnZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5uZXdQYWdlc1tlXT1hd2FpdCB0aGlzLiNvYShlLG51bGwpO3RoaXMuI2xhKGkpO2F3YWl0IHRoaXMuI2ZhKGkpO2F3YWl0IHRoaXMuI2NhKGkpO3RoaXMuI2hhKGkpO2F3YWl0IHRoaXMuI3VhKGkpO3JldHVybiB0aGlzLndyaXRlUERGKCl9YXN5bmMjZWEoZSl7Y29uc3R7ZG9jdW1lbnQ6e3BkZk1hbmFnZXI6dCx4cmVmOmF9fT1lO2F3YWl0IFByb21pc2UuYWxsKFt0LmVuc3VyZUNhdGFsb2coImRlc3RpbmF0aW9ucyIpLnRoZW4odD0+ZS5kZXN0aW5hdGlvbnM9dCksdC5lbnN1cmVDYXRhbG9nKCJyYXdQYWdlTGFiZWxzIikudGhlbih0PT5lLnBhZ2VMYWJlbHM9dCksdC5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpLnRoZW4odD0+ZS5zdHJ1Y3RUcmVlUm9vdD10KSx0LmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIikudGhlbih0PT5lLmFjcm9Gb3JtPXQpLHQuZW5zdXJlQ2F0YWxvZygiZG9jdW1lbnRPdXRsaW5lRm9yRWRpdG9yIikudGhlbih0PT5lLm91dGxpbmU9dCksdC5lbnN1cmVDYXRhbG9nKCJyYXdFbWJlZGRlZEZpbGVzIikudGhlbih0PT5lLmVtYmVkZGVkRmlsZXM9dCldKTtjb25zdCBuPWUuc3RydWN0VHJlZVJvb3Q7aWYobil7Y29uc3QgdD1uLmRpY3Qscz10LmdldCgiUGFyZW50VHJlZSIpO2lmKHMpe2NvbnN0IHQ9bmV3IE51bWJlclRyZWUocyxhKTtlLnBhcmVudFRyZWU9dC5nZXRBbGwoITApfWNvbnN0IHI9dC5nZXQoIklEVHJlZSIpO2lmKHIpe2NvbnN0IHQ9bmV3IE5hbWVUcmVlKHIsYSk7ZS5pZFRyZWU9dC5nZXRBbGwoITApfWUucm9sZU1hcD10LmdldCgiUm9sZU1hcCIpfHxudWxsO2UuY2xhc3NNYXA9dC5nZXQoIkNsYXNzTWFwIil8fG51bGw7bGV0IGk9dC5nZXQoIk5hbWVzcGFjZXMiKXx8bnVsbDtpJiYhQXJyYXkuaXNBcnJheShpKSYmKGk9W2ldKTtlLm5hbWVzcGFjZXM9aTtlLnN0cnVjdFRyZWVBRj10LmdldCgiQUYiKXx8bnVsbDtlLnN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbj10LmdldCgiUHJvbnVuY2lhdGlvbkxleGljb24iKXx8bnVsbH19YXN5bmMjc2EoZSl7Y29uc3R7cGFnZTp7eHJlZjp0LGFubm90YXRpb25zOmF9LGRvY3VtZW50RGF0YTp7cGFnZXNNYXA6bixkZXN0aW5hdGlvbnM6cyx1c2VkTmFtZWREZXN0aW5hdGlvbnM6cixmaWVsZFRvUGFyZW50Oml9fT1lO2lmKCFhKXJldHVybjtjb25zdCBvPVtdO2xldCBsPVtdLGY9MCx7aGFzU2lnbmF0dXJlQW5ub3RhdGlvbnM6Y309ZS5kb2N1bWVudERhdGE7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgYT1mKys7by5wdXNoKHQuZmV0Y2hJZlJlZkFzeW5jKGUpLnRoZW4oYXN5bmMgdD0+e2lmKCFpc05hbWUodC5nZXQoIlN1YnR5cGUiKSwiTGluayIpKXtpZihpc05hbWUodC5nZXQoIlN1YnR5cGUiKSwiV2lkZ2V0Iikpe2N8fD1pc05hbWUodC5nZXQoIkZUIiksIlNpZyIpO2NvbnN0IGE9dC5nZXQoIlBhcmVudCIpfHxudWxsO3QuZGVsZXRlKCJQYXJlbnQiKTtpLnB1dChlLGEpfWxbYV09ZTtyZXR1cm59Y29uc3Qgbz10LmdldCgiQSIpLGY9byBpbnN0YW5jZW9mIERpY3Q/by5nZXQoIkQiKTp0LmdldCgiRGVzdCIpO2lmKGYmJighQXJyYXkuaXNBcnJheShmKXx8ZlswXWluc3RhbmNlb2YgUmVmJiYhbi5oYXMoZlswXSkpKXtpZigic3RyaW5nIj09dHlwZW9mIGYpe2NvbnN0IHQ9c3RyaW5nVG9QREZTdHJpbmcoZiwhMCk7aWYocy5oYXModCkpe2xbYV09ZTtyLmFkZCh0KX19fWVsc2UgbFthXT1lfSkpfWF3YWl0IFByb21pc2UuYWxsKG8pO2w9bC5maWx0ZXIoZT0+ISFlKTtlLmFubm90YXRpb25zPWwubGVuZ3RoPjA/bDpudWxsO2UuZG9jdW1lbnREYXRhLmhhc1NpZ25hdHVyZUFubm90YXRpb25zfHw9Y30jaWEoZSl7Zm9yKGNvbnN0e3Bvc3Rwb25lZFJlZkNvcGllczp0LHBhZ2VzTWFwOmF9b2YgZSlmb3IoY29uc3QgZSBvZiBhLmtleXMoKSl0LnB1dChlLFtdKX0jbGEoZSl7Zm9yKGNvbnN0e3Bvc3Rwb25lZFJlZkNvcGllczp0LG9sZFJlZk1hcHBpbmc6YX1vZiBlKXtmb3IoY29uc3RbZSxuXW9mIHQuaXRlbXMoKSl7Y29uc3QgdD1hLmdldChlKTtmb3IoY29uc3QgZSBvZiBuKWUodCl9dC5jbGVhcigpfX0jbWEoZSx0LGE9bmV3IFJlZlNldCl7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoIWEuaGFzKGUpKXthLnB1dChlKTt0aGlzLiNtYSh0aGlzLnhyZWZbZS5udW1dLHQsYSl9cmV0dXJufWlmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcihjb25zdCBuIG9mIGUpdGhpcy4jbWEobix0LGEpO3JldHVybn1sZXQgbjtlIGluc3RhbmNlb2YgQmFzZVN0cmVhbT8oe2RpY3Q6bn09ZSk6ZSBpbnN0YW5jZW9mIERpY3QmJihuPWUpO2lmKG4pe3Qobik7Zm9yKGNvbnN0IGUgb2Ygbi5nZXRSYXdWYWx1ZXMoKSl0aGlzLiNtYShlLHQsYSl9fWFzeW5jI2ZhKGUpe2xldCB0PTA7Y29uc3R7cGFyZW50VHJlZTphfT10aGlzO2ZvcihsZXQgZT0wLG49dGhpcy5uZXdQYWdlcy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3R7ZG9jdW1lbnREYXRhOntwYXJlbnRUcmVlOm4sb2xkUmVmTWFwcGluZzpzLG9sZFN0cnVjdFBhcmVudE1hcHBpbmc6cix1c2VkU3RydWN0UGFyZW50czppLGRvY3VtZW50Ont4cmVmOm99fX09dGhpcy5vbGRQYWdlc1tlXTtpZighbiljb250aW51ZTtjb25zdCBsPXRoaXMubmV3UGFnZXNbZV0sZj10aGlzLnhyZWZbbC5udW1dLGM9bmV3IFJlZlNldDtjLnB1dChsKTt0aGlzLiNtYShmLGU9Pntjb25zdCBsPWUuZ2V0KCJTdHJ1Y3RQYXJlbnQiKT8/ZS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZigibnVtYmVyIiE9dHlwZW9mIGwpcmV0dXJuO2kuYWRkKGwpO2xldCBmPW4uZ2V0KGwpO2NvbnN0IGM9ZiBpbnN0YW5jZW9mIFJlZj9mOm51bGw7aWYoYyl7Y29uc3QgZT1vLmZldGNoKGMpO0FycmF5LmlzQXJyYXkoZSkmJihmPWUpfUFycmF5LmlzQXJyYXkoZikmJmYuZXZlcnkoZT0+bnVsbD09PWUpJiYoZj1udWxsKTtpZighZil7ZS5oYXMoIlN0cnVjdFBhcmVudCIpP2UuZGVsZXRlKCJTdHJ1Y3RQYXJlbnQiKTplLmRlbGV0ZSgiU3RydWN0UGFyZW50cyIpO3JldHVybn1sZXQgaD1yLmdldChsKTtpZih2b2lkIDA9PT1oKXtoPXQrKztyLnNldChsLGgpO2Euc2V0KGgsW3MsZl0pfWUuaGFzKCJTdHJ1Y3RQYXJlbnQiKT9lLnNldCgiU3RydWN0UGFyZW50IixoKTplLnNldCgiU3RydWN0UGFyZW50cyIsaCl9LGMpfWNvbnN0e3N0cnVjdFRyZWVLaWRzOm4saWRUcmVlOnMsY2xhc3NNYXA6cixyb2xlTWFwOmksbmFtZXNwYWNlczpvLHN0cnVjdFRyZWVBRjpsLHN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbjpmfT10aGlzO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0e2RvY3VtZW50Ont4cmVmOmV9LG9sZFJlZk1hcHBpbmc6YSxwYXJlbnRUcmVlOmMsdXNlZFN0cnVjdFBhcmVudHM6aCxzdHJ1Y3RUcmVlUm9vdDp1LGlkVHJlZTptLGNsYXNzTWFwOnAscm9sZU1hcDpkLG5hbWVzcGFjZXM6ZyxzdHJ1Y3RUcmVlQUY6YixzdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb246d309dDtpZighdSljb250aW51ZTt0aGlzLmN1cnJlbnREb2N1bWVudD10O2NvbnN0IGo9bmV3IFJlZlNldDtmb3IoY29uc3RbZSx0XW9mIGN8fFtdKSFoLmhhcyhlKSYmdCBpbnN0YW5jZW9mIFJlZiYmai5wdXQodCk7Y29uc3Qgaz1uZXcgTWFwO2Zvcihjb25zdFtlLHRdb2YgbXx8W10pe2xldCBhPWU7aWYocy5oYXMoZSkpZm9yKGxldCB0PTE7O3QrKyl7Y29uc3Qgbj1gJHtlfV8ke3R9YDtpZighcy5oYXMobikpe2suc2V0KGUsbik7YT1uO2JyZWFrfX1zLnNldChhLHQpfWNvbnN0IHk9bmV3IE1hcDtpZihwPy5zaXplPjApZm9yKGxldFt0LGFdb2YgcCl7YT1hd2FpdCB0aGlzLiNZdChhLCEwLGUpO2lmKHIuaGFzKHQpKWZvcihsZXQgZT0xOztlKyspe2NvbnN0IGE9YCR7dH1fJHtlfWA7aWYoIXIuaGFzKGEpKXt5LnNldCh0LGEpO3Q9YTticmVha319ci5zZXQodCxhKX1jb25zdCBxPW5ldyBNYXA7aWYoZD8uc2l6ZT4wKWZvcihjb25zdFtlLHRdb2YgZCl7Y29uc3QgYT1pLmdldChlKTtpZihhKXtpZihhIT09dClmb3IobGV0IGE9MTs7YSsrKXtjb25zdCBuPWAke2V9XyR7YX1gO2lmKCFpLmhhcyhuKSl7cS5zZXQoZSxuKTtpLnNldChuLHQpO2JyZWFrfX19ZWxzZSBpLnNldChlLHQpfWlmKGc/Lmxlbmd0aD4wKWZvcihjb25zdCB0IG9mIGcpe2NvbnN0IGE9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7bGV0IG49YS5nZXQoIk5TIik7aWYoIW58fG8uaGFzKG4pKWNvbnRpbnVlO249c3RyaW5nVG9QREZTdHJpbmcobiwhMSk7Y29uc3Qgcz1hd2FpdCB0aGlzLiNZdChhLCEwLGUpO28uc2V0KG4scyl9aWYoYilmb3IoY29uc3QgdCBvZiBiKWwucHVzaChhd2FpdCB0aGlzLiNZdCh0LCEwLGUpKTtpZih3KWZvcihjb25zdCB0IG9mIHcpZi5wdXNoKGF3YWl0IHRoaXMuI1l0KHQsITAsZSkpO2xldCB2PXUuZGljdC5nZXQoIksiKTtpZih2KXt2PUFycmF5LmlzQXJyYXkodik/djpbdl07Zm9yKGxldCB0IG9mIHYpe2NvbnN0IGE9dCBpbnN0YW5jZW9mIFJlZj90Om51bGw7aWYoYSYmai5oYXMoYSkpY29udGludWU7dD1hd2FpdCBlLmZldGNoSWZSZWZBc3luYyh0KTtjb25zdCBzPWF3YWl0IHRoaXMuI0p0KGEsdCxlLGosayx5LHEpO3MmJm4ucHVzaChzKX1mb3IoY29uc3RbZSx0XW9mIG18fFtdKXtjb25zdCBuPXQgaW5zdGFuY2VvZiBSZWYmJmEuZ2V0KHQpLHI9ay5nZXQoZSl8fGU7bj9zLnNldChyLG4pOnMuZGVsZXRlKHIpfX19Zm9yKGNvbnN0W2UsW3Qsbl1db2YgYSl7aWYoIW4pe2EuZGVsZXRlKGUpO2NvbnRpbnVlfWlmKCFBcnJheS5pc0FycmF5KG4pKXtjb25zdCBzPXQuZ2V0KG4pO3ZvaWQgMD09PXM/YS5kZWxldGUoZSk6YS5zZXQoZSxzKTtjb250aW51ZX1jb25zdCBzPW4ubWFwKGU9PmUgaW5zdGFuY2VvZiBSZWYmJnQuZ2V0KGUpfHxudWxsKTswPT09cy5sZW5ndGh8fHMuZXZlcnkoZT0+bnVsbD09PWUpP2EuZGVsZXRlKGUpOmEuc2V0KGUscyl9dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbH0jdGEoZSl7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoIXQuZGVzdGluYXRpb25zKWNvbnRpbnVlO2NvbnN0e2Rlc3RpbmF0aW9uczplLHBhZ2VzTWFwOmF9PXQsbj10LmRlc3RpbmF0aW9ucz1uZXcgTWFwO2Zvcihjb25zdFt0LHNdb2YgT2JqZWN0LmVudHJpZXMoZSkpe2NvbnN0IGU9c1swXSxyPWUgaW5zdGFuY2VvZiBSZWYmJmEuZ2V0KGUpO2lmKHIpeyhyLnBvaW50aW5nTmFtZWREZXN0aW5hdGlvbnN8fD1uZXcgU2V0KS5hZGQodCk7bi5zZXQodCxzKX19fX0jcmEoKXtjb25zdHtuYW1lZERlc3RpbmF0aW9uczplfT10aGlzLGdldFVuaXF1ZURlc3RpbmF0aW9uTmFtZT10PT57aWYoIWUuaGFzKHQpKXJldHVybiB0O2ZvcihsZXQgYT0xOzthKyspe2NvbnN0IG49YCR7dH1fJHthfWA7aWYoIWUuaGFzKG4pKXJldHVybiBufX07Zm9yKGxldCB0PTAsYT10aGlzLm9sZFBhZ2VzLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPXRoaXMub2xkUGFnZXNbdF0se2RvY3VtZW50RGF0YTp7ZGVzdGluYXRpb25zOm4sZGVkdXBOYW1lZERlc3RpbmF0aW9uczpzLHVzZWROYW1lZERlc3RpbmF0aW9uczpyfX09YTtsZXR7cG9pbnRpbmdOYW1lZERlc3RpbmF0aW9uczppfT1hO2lmKGkpe2EucG9pbnRpbmdOYW1lZERlc3RpbmF0aW9ucz1pPWkuaW50ZXJzZWN0aW9uKHIpO2Zvcihjb25zdCBhIG9mIGkpe2lmKCFyLmhhcyhhKSljb250aW51ZTtjb25zdCBpPW4uZ2V0KGEpLnNsaWNlKCk7aWYoIWUuaGFzKGEpKXtlLnNldChhLGkpO2NvbnRpbnVlfWNvbnN0IG89Z2V0VW5pcXVlRGVzdGluYXRpb25OYW1lKGAke2F9X3Ake3QrMX1gKTtzLnNldChhLG8pO2Uuc2V0KG8saSl9fX19I3BhKGUsdCl7aWYoMD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgZml4RGVzdGluYXRpb249KGUsYSxuKT0+eyJzdHJpbmciPT10eXBlb2YgbiYmZS5zZXQoYSx0LmdldChzdHJpbmdUb1BERlN0cmluZyhuLCEwKSl8fG4pfTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXRoaXMueHJlZlt0Lm51bV07aWYoIWlzTmFtZShlLmdldCgiU3VidHlwZSIpLCJMaW5rIikpY29udGludWU7Y29uc3QgYT1lLmdldCgiQSIpO2lmKGEgaW5zdGFuY2VvZiBEaWN0JiZhLmhhcygiRCIpKXtjb25zdCBlPWEuZ2V0KCJEIik7Zml4RGVzdGluYXRpb24oYSwiRCIsZSk7Y29udGludWV9Y29uc3Qgbj1lLmdldCgiRGVzdCIpO2ZpeERlc3RpbmF0aW9uKGUsIkRlc3QiLG4pfX0jYWEoZSl7Y29uc3QgY29sbGVjdD0oZSx0LGEpPT57Zm9yKGNvbnN0IG4gb2YgZSl7InN0cmluZyI9PXR5cGVvZiBuLmRlc3QmJnQ/LmhhcyhuLmRlc3QpJiZhLmFkZChuLmRlc3QpO24uaXRlbXMubGVuZ3RoPjAmJmNvbGxlY3Qobi5pdGVtcyx0LGEpfX07Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3R7b3V0bGluZTplLGRlc3RpbmF0aW9uczphLHVzZWROYW1lZERlc3RpbmF0aW9uczpufT10O2U/Lmxlbmd0aCYmY29sbGVjdChlLGEsbil9fSNkYShlLHQpe2NvbnN0e2Rlc3Q6YSxhY3Rpb246bix1cmw6cyx1bnNhZmVVcmw6cixhdHRhY2htZW50Omksc2V0T0NHU3RhdGU6b309ZTtpZihufHxzfHxyfHxpfHxvKXJldHVybiEwO2lmKCFhKXJldHVybiExO2lmKCJzdHJpbmciPT10eXBlb2YgYSl7Y29uc3QgZT10LmRlZHVwTmFtZWREZXN0aW5hdGlvbnMuZ2V0KGEpfHxhO3JldHVybiB0aGlzLm5hbWVkRGVzdGluYXRpb25zLmhhcyhlKX1yZXR1cm4hIShBcnJheS5pc0FycmF5KGEpJiZhWzBdaW5zdGFuY2VvZiBSZWYpJiYhIXQub2xkUmVmTWFwcGluZy5nZXQoYVswXSl9I2dhKGUsdCl7Y29uc3QgYT1bXTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPXRoaXMuI2dhKG4uaXRlbXMsdCkscz10aGlzLiNkYShuLHQpOyhzfHxlLmxlbmd0aD4wKSYmYS5wdXNoKHsuLi5uLGRlc3Q6cz9uLmRlc3Q6bnVsbCxyYXdEaWN0OnM/bi5yYXdEaWN0Om51bGwsaXRlbXM6ZSxfZG9jdW1lbnREYXRhOnR9KX1yZXR1cm4gYX0jaGEoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgYSBvZiBlKXtjb25zdHtvdXRsaW5lOmV9PWE7ZT8ubGVuZ3RoJiZ0LnB1c2goLi4udGhpcy4jZ2EoZSxhKSl9dGhpcy5vdXRsaW5lSXRlbXM9dC5sZW5ndGg+MD90Om51bGx9YXN5bmMjYmEoZSx0KXtjb25zdHtkZXN0OmEscmF3RGljdDpufT10LHM9dC5fZG9jdW1lbnREYXRhO2lmKGEpe2lmKCJzdHJpbmciPT10eXBlb2YgYSl7Y29uc3QgdD1zLmRlZHVwTmFtZWREZXN0aW5hdGlvbnMuZ2V0KGEpfHxhO2Uuc2V0KCJEZXN0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHQpKX1lbHNlIGlmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IHQ9YS5zbGljZSgpO3RbMF1pbnN0YW5jZW9mIFJlZiYmKHRbMF09cy5vbGRSZWZNYXBwaW5nLmdldCh0WzBdKXx8dFswXSk7ZS5zZXQoIkRlc3QiLHQpfXJldHVybn1jb25zdCByPW4/LmdldCgiQSIpO2lmKHIgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmN1cnJlbnREb2N1bWVudD1zO2NvbnN0IHQ9YXdhaXQgdGhpcy4jJHQocixzLmRvY3VtZW50LnhyZWYpO3RoaXMuY3VycmVudERvY3VtZW50PW51bGw7ZS5zZXQoIkEiLHQpfX1hc3luYyN3YSgpe2NvbnN0e291dGxpbmVJdGVtczplfT10aGlzO2lmKCFlPy5sZW5ndGgpcmV0dXJuO2NvbnN0W3QsYV09dGhpcy5uZXdEaWN0O2Euc2V0SWZOYW1lKCJUeXBlIiwiT3V0bGluZXMiKTtjb25zdCBhc3NpZ25SZWZzPWU9Pntmb3IoY29uc3QgdCBvZiBlKXtbdC5fcmVmXT10aGlzLm5ld0RpY3Q7dC5pdGVtcy5sZW5ndGg+MCYmYXNzaWduUmVmcyh0Lml0ZW1zKX19O2Fzc2lnblJlZnMoZSk7Y29uc3QgZmlsbEl0ZW1zPWFzeW5jKGUsdCk9PntsZXQgYT0wO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCBzPWVbbl0scj10aGlzLnhyZWZbcy5fcmVmLm51bV07ci5zZXQoIlRpdGxlIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHMudGl0bGUpKTtyLnNldCgiUGFyZW50Iix0KTtuPjAmJnIuc2V0KCJQcmV2IixlW24tMV0uX3JlZik7bjxlLmxlbmd0aC0xJiZyLnNldCgiTmV4dCIsZVtuKzFdLl9yZWYpO2lmKHMuaXRlbXMubGVuZ3RoPjApe3Iuc2V0KCJGaXJzdCIscy5pdGVtc1swXS5fcmVmKTtyLnNldCgiTGFzdCIscy5pdGVtcy5hdCgtMSkuX3JlZik7Y29uc3QgZT1hd2FpdCBmaWxsSXRlbXMocy5pdGVtcyxzLl9yZWYpO3ZvaWQgMCE9PXMuY291bnQmJnIuc2V0KCJDb3VudCIscy5jb3VudDwwPy1lOmUpO2ErPXZvaWQgMCE9PXMuY291bnQmJnMuY291bnQ8MD8xOmUrMX1lbHNlIGErPTE7YXdhaXQgdGhpcy4jYmEocixzKTtjb25zdCBpPShzLmJvbGQ/MjowKXwocy5pdGFsaWM/MTowKTswIT09aSYmci5zZXQoIkYiLGkpOyFzLmNvbG9yfHwwPT09cy5jb2xvclswXSYmMD09PXMuY29sb3JbMV0mJjA9PT1zLmNvbG9yWzJdfHxyLnNldCgiQyIsW3MuY29sb3JbMF0vMjU1LHMuY29sb3JbMV0vMjU1LHMuY29sb3JbMl0vMjU1XSl9cmV0dXJuIGF9LG49YXdhaXQgZmlsbEl0ZW1zKGUsdCk7YS5zZXQoIkZpcnN0IixlWzBdLl9yZWYpO2Euc2V0KCJMYXN0IixlLmF0KC0xKS5fcmVmKTthLnNldCgiQ291bnQiLG4pO3RoaXMucm9vdERpY3Quc2V0KCJPdXRsaW5lcyIsdCl9YXN5bmMjY2EoZSl7dGhpcy4jamEoZSk7dGhpcy4ja2EoZSk7dGhpcy4jeWEoZSk7YXdhaXQgdGhpcy4jcWEoZSk7Y29uc3QgdD10aGlzLmZpZWxkcztmb3IoY29uc3QgYSBvZiBlKXtsZXQgZT1hLmFjcm9Gb3JtPy5nZXQoIkZpZWxkcyIpfHxudWxsOyFlJiZhLmZpZWxkVG9QYXJlbnQuc2l6ZT4wJiYoZT10aGlzLiN2YShhLmZpZWxkVG9QYXJlbnQsYS5kb2N1bWVudC54cmVmKSk7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpcy5jdXJyZW50RG9jdW1lbnQ9YTthd2FpdCB0aGlzLiNTYSh0LGUpO3RoaXMuY3VycmVudERvY3VtZW50PW51bGx9fXRoaXMuI0FhKGUpfSN5YShlKXtsZXQgdD0wLGE9bnVsbDtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPW4uYWNyb0Zvcm0/LmdldCgiUSIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSYmMCE9PWUpaWYoYT8uYWNyb0Zvcm1RPjApbi5hY3JvRm9ybVE9ZTtlbHNlIGlmKDAhPT10KXtpZihlIT09dCl7YS5hY3JvRm9ybVF8fD10O24uYWNyb0Zvcm1RPWU7dD0wfX1lbHNle3Q9ZTthPW59fXQ+MCYmKHRoaXMuYWNyb0Zvcm1RPXQpfSNqYShlKXtsZXQgdD0wLGE9ITE7Zm9yKGNvbnN0IG4gb2YgZSl7aWYoIW4uYWNyb0Zvcm0pY29udGludWU7Y29uc3QgZT1uLmFjcm9Gb3JtLmdldCgiU2lnRmxhZ3MiKTsibnVtYmVyIj09dHlwZW9mIGUmJm4uaGFzU2lnbmF0dXJlQW5ub3RhdGlvbnMmJih0fD1lKTshMD09PW4uYWNyb0Zvcm0uZ2V0KCJOZWVkQXBwZWFyYW5jZXMiKSYmKGE9ITApfXRoaXMuYWNyb0Zvcm1TaWdGbGFncz10O3RoaXMuYWNyb0Zvcm1OZWVkQXBwZWFyYW5jZXM9YX0jQWEoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWEuYWNyb0Zvcm0/LmdldCgiQ08iKXx8bnVsbDtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtjb25zdHtvbGRSZWZNYXBwaW5nOm59PWE7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1hIGluc3RhbmNlb2YgUmVmJiZuLmdldChhKTtlJiZ0LnB1c2goZSl9fXRoaXMuYWNyb0Zvcm1DYWxjdWxhdGlvbk9yZGVyPXQubGVuZ3RoPjA/dDpudWxsfSNrYShlKXtsZXQgdD1udWxsLGE9bnVsbDtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPW4uYWNyb0Zvcm0/LmdldCgiREEiKXx8bnVsbDtpZihlJiYic3RyaW5nIj09dHlwZW9mIGUpaWYoYT8uYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZSluLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2U9ZTtlbHNlIGlmKHQpe2lmKGUhPT10KXthLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2V8fD10O24uYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZT1lO3Q9bnVsbH19ZWxzZXt0PWU7YT1ufX10JiYodGhpcy5hY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlPXQpfWFzeW5jI3FhKGUpe2xldCB0PW51bGwsYT1udWxsLG49bnVsbDtmb3IoY29uc3QgcyBvZiBlKXtjb25zdCBlPXMuYWNyb0Zvcm0/LmdldCgiRFIiKXx8bnVsbDtpZihlJiZlIGluc3RhbmNlb2YgRGljdClpZihuPy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXMpcy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXM9ZTtlbHNlIGlmKHQpe2lmKCFkZWVwQ29tcGFyZSh0LGUpKXtuLmFjcm9Gb3JtRGVmYXVsdFJlc291cmNlc3x8PXQ7cy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXM9ZTt0PW51bGw7YT1udWxsfX1lbHNle3Q9ZTthPXMuYWNyb0Zvcm0uZ2V0UmF3KCJEUiIpO249c319aWYodCl7dGhpcy5jdXJyZW50RG9jdW1lbnQ9bjt0aGlzLmFjcm9Gb3JtRGVmYXVsdFJlc291cmNlcz1hd2FpdCB0aGlzLiNZdChhLCEwLG4uZG9jdW1lbnQueHJlZik7dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbH19I3ZhKGUsdCl7Y29uc3QgYT1bXSxuPW5ldyBSZWZTZXQ7Zm9yKGNvbnN0W3Mscl1vZiBlKXtpZighcil7YS5wdXNoKHMpO2NvbnRpbnVlfWxldCBlPXIsaT1yO2Zvcig7Oyl7ZT10LmZldGNoSWZSZWYoZSk/LmdldFJhdygiUGFyZW50Iil8fG51bGw7aWYoIWUpYnJlYWs7aT1lfWlmKGkgaW5zdGFuY2VvZiBSZWYmJiFuLmhhcyhpKSl7YS5wdXNoKGkpO24ucHV0KGkpfX1yZXR1cm4gYX1hc3luYyNTYShlLHQpe2NvbnN0IGE9bmV3IFJlZlNldCxuPVt7a2lkczp0LG5ld0tpZHM6ZSxwb3M6MCxvbGRQYXJlbnRSZWY6bnVsbCxwYXJlbnRSZWY6bnVsbCxwYXJlbnQ6bnVsbH1dLHtkb2N1bWVudDp7eHJlZjpzfSxvbGRSZWZNYXBwaW5nOnIsZmllbGRUb1BhcmVudDppLGFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2U6byxhY3JvRm9ybURlZmF1bHRSZXNvdXJjZXM6bCxhY3JvRm9ybVE6Zn09dGhpcy5jdXJyZW50RG9jdW1lbnQsYz1bXSxoPVtdO2Zvcig7bi5sZW5ndGg+MDspe2NvbnN0IGU9bi5hdCgtMSkse2tpZHM6dCxuZXdLaWRzOnUscGFyZW50Om0scG9zOnB9PWU7aWYocD09PXQubGVuZ3RoKXtuLnBvcCgpO2lmKDA9PT11Lmxlbmd0aHx8IW0pY29udGludWU7Y29uc3QgdD10aGlzLnhyZWZbZS5wYXJlbnRSZWYubnVtXT10aGlzLmNsb25lRGljdChtKTt0LmRlbGV0ZSgiUGFyZW50Iik7dC5kZWxldGUoIktpZHMiKTthd2FpdCB0aGlzLiNZdCh0LCExLHMpO3Quc2V0KCJLaWRzIix1KTtpZihuLmxlbmd0aD4wKXtjb25zdCBhPW4uYXQoLTEpO2lmKCFhLnBhcmVudFJlZiYmYS5vbGRQYXJlbnRSZWYpe2NvbnN0IGU9YS5wYXJlbnRSZWY9dGhpcy5uZXdSZWY7dC5zZXQoIlBhcmVudCIsZSk7ci5wdXQoYS5vbGRQYXJlbnRSZWYsZSl9YS5uZXdLaWRzLnB1c2goZS5wYXJlbnRSZWYpfWNvbnRpbnVlfWNvbnN0IGQ9dFtlLnBvcysrXTtpZighKGQgaW5zdGFuY2VvZiBSZWYpfHxhLmhhcyhkKSljb250aW51ZTthLnB1dChkKTtjb25zdCBnPXMuZmV0Y2hJZlJlZihkKTtpZihnLmhhcygiS2lkcyIpKXtjb25zdCBlPWcuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7bi5wdXNoKHtraWRzOmUsbmV3S2lkczpbXSxwb3M6MCxvbGRQYXJlbnRSZWY6ZCxwYXJlbnRSZWY6bnVsbCxwYXJlbnQ6Z30pO2NvbnRpbnVlfWlmKCFpLmhhcyhkKSljb250aW51ZTtjb25zdCBiPXIuZ2V0KGQpO2lmKCFiKWNvbnRpbnVlO3UucHVzaChiKTtpZighZS5wYXJlbnRSZWYmJmUub2xkUGFyZW50UmVmKXtlLnBhcmVudFJlZj10aGlzLm5ld1JlZjtyLnB1dChlLm9sZFBhcmVudFJlZixlLnBhcmVudFJlZil9Y29uc3Qgdz10aGlzLnhyZWZbYi5udW1dO2UucGFyZW50UmVmJiZ3LnNldCgiUGFyZW50IixlLnBhcmVudFJlZik7byYmaXNOYW1lKHcuZ2V0KCJGVCIpLCJUeCIpJiYhdy5oYXMoIkRBIikmJmMucHVzaCh3KTtsJiYhdy5oYXMoIktpZHMiKSYmdy5nZXQoIkFQIilpbnN0YW5jZW9mIERpY3QmJmgucHVzaCh3KTtmJiYhdy5oYXMoIlEiKSYmdy5zZXQoIlEiLGYpfWZvcihjb25zdCBlIG9mIGMpe2dldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZSxrZXk6IkRBIn0pfHxlLnNldCgiREEiLG8pfWNvbnN0IHU9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiBoKXtjb25zdCB0PWUuZ2V0KCJBUCIpO2Zvcihjb25zdFssZV1vZiB0KXtpZighKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSljb250aW51ZTtsZXQgdD1lLmRpY3QuZ2V0UmF3KCJSZXNvdXJjZXMiKTtpZighdCl7Y29uc3QgdD1hd2FpdCB1LmdldE9ySW5zZXJ0Q29tcHV0ZWQobCwoKT0+dGhpcy4jJHQobCxzKSk7ZS5kaWN0LnNldCgiUmVzb3VyY2VzIix0KTtjb250aW51ZX10PXMuZmV0Y2hJZlJlZih0KTtmb3IoY29uc3RbZSxhXW9mIGwuZ2V0UmF3RW50cmllcygpKWlmKCF0LmhhcyhlKSl7bGV0IG49YTthIGluc3RhbmNlb2YgUmVmP249YXdhaXQgdGhpcy4jWXQoYSwhMCxzKTooYSBpbnN0YW5jZW9mIERpY3R8fGEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGEpKSYmKG49YXdhaXQgdS5nZXRPckluc2VydENvbXB1dGVkKGEsKCk9PnRoaXMuIyR0KGEscykpKTt0LnNldChlLG4pfX19fWFzeW5jI25hKCl7aWYoIXRoaXMuaGFzU2luZ2xlRmlsZSlyZXR1cm47Y29uc3R7ZG9jdW1lbnREYXRhOntkb2N1bWVudDplLHBhZ2VMYWJlbHM6dH19PXRoaXMub2xkUGFnZXNbMF07aWYoIXQpcmV0dXJuO2NvbnN0IGE9ZS5udW1QYWdlcyxuPVtdLHM9bmV3IFNldCh0aGlzLm9sZFBhZ2VzLm1hcCgoe3BhZ2U6e3BhZ2VJbmRleDplfX0pPT5lKSk7bGV0IHI9bnVsbCxpPS0xO2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGE9dC5nZXQoZSk7aWYoYSl7cj1hO2k9ci5oYXMoIlN0Iik/ZTotMX1pZihzLmhhcyhlKSl7aWYoLTEhPT1pKXtjb25zdCB0PXIuZ2V0KCJTdCIpO3I9dGhpcy5jbG9uZURpY3Qocik7ci5zZXQoIlN0Iix0KyhlLWkpKTtpPS0xfW4ucHVzaChyKX19cj1uWzBdO2xldCBvPTA7Y29uc3QgbD10aGlzLnBhZ2VMYWJlbHM9W1swLHJdXTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9bltlXTtpZih0IT09cil7bz1lO3I9dDtsLnB1c2goW28scl0pfX19YXN5bmMjb2EoZSl7Y29uc3R7cGFnZTp0LGRvY3VtZW50RGF0YTphLGFubm90YXRpb25zOm4scG9pbnRpbmdOYW1lZERlc3RpbmF0aW9uczpzfT10aGlzLm9sZFBhZ2VzW2VdO3RoaXMuY3VycmVudERvY3VtZW50PWE7Y29uc3R7ZGVkdXBOYW1lZERlc3RpbmF0aW9uczpyLG9sZFJlZk1hcHBpbmc6aX09YSx7eHJlZjpvLHJvdGF0ZTpsLG1lZGlhQm94OmYscmVzb3VyY2VzOmMscmVmOmh9PXQsdT10aGlzLm5ld1JlZixtPXRoaXMueHJlZlt1Lm51bV09dGhpcy5jbG9uZURpY3QodC5wYWdlRGljdCk7aS5wdXQoaCx1KTtpZihzKWZvcihjb25zdCBlIG9mIHMpe2NvbnN0IHQ9ci5nZXQoZSl8fGU7dGhpcy5uYW1lZERlc3RpbmF0aW9ucy5nZXQodClbMF09dX1mb3IoY29uc3QgZSBvZlsiUm90YXRlIiwiTWVkaWFCb3giLCJDcm9wQm94IiwiQmxlZWRCb3giLCJUcmltQm94IiwiQXJ0Qm94IiwiUmVzb3VyY2VzIiwiQW5ub3RzIiwiUGFyZW50IiwiVXNlclVuaXQiXSltLmRlbGV0ZShlKTtjb25zdCBwPXRoaXMubmV3UmVmQ291bnQ7YXdhaXQgdGhpcy4jWXQobSwhMSxvKTttLnNldCgiUm90YXRlIixsKTttLnNldCgiTWVkaWFCb3giLGYpO2Zvcihjb25zdCBlIG9mWyJDcm9wQm94IiwiQmxlZWRCb3giLCJUcmltQm94IiwiQXJ0Qm94Il0pe2NvbnN0IGE9dC5nZXRCb3VuZGluZ0JveChlKTthPy5zb21lKChlLHQpPT5lIT09Zlt0XSkmJm0uc2V0KGUsYSl9Y29uc3QgZD10LnVzZXJVbml0OzEhPT1kJiZtLnNldCgiVXNlclVuaXQiLGQpO20uc2V0SWZEaWN0KCJSZXNvdXJjZXMiLGF3YWl0IHRoaXMuI1l0KGMsITAsbykpO2xldCBnPW51bGw7aWYobil7Y29uc3QgZT1hd2FpdCB0aGlzLiNZdChuLCEwLG8pO3RoaXMuI3BhKGUscik7QXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCYmKGc9ZSl9Y29uc3QgYj10aGlzLiNWdD8ubmV3QW5ub3RhdGlvbnNCeVBhZ2U/LmdldChlKTtpZihiKXtjb25zdHtoYW5kbGVyOmUsdGFzazphLGltYWdlc1Byb21pc2VzOm59PXRoaXMuI1Z0LHM9bmV3IFJlZlNldENhY2hlLHI9YXdhaXQgQW5ub3RhdGlvbkZhY3Rvcnkuc2F2ZU5ld0Fubm90YXRpb25zKHQuY3JlYXRlQW5ub3RhdGlvbkV2YWx1YXRvcihlKSx0aGlzLnhyZWZXcmFwcGVyLGEsYixuLHMpO2Zvcihjb25zdFtlLHtkYXRhOnR9XW9mIHMuaXRlbXMoKSl0aGlzLnhyZWZbZS5udW1dPXQ7Z3x8PVtdO2Zvcihjb25zdHtyZWY6ZX1vZiByLmFubm90YXRpb25zKWcucHVzaChlKX1tLnNldElmQXJyYXkoIkFubm90cyIsZyk7aWYodGhpcy51c2VPYmplY3RTdHJlYW1zKXtjb25zdCBlPXRoaXMubmV3UmVmQ291bnQsdD1bXTtmb3IobGV0IGE9cDthPGU7YSsrKXt0aGlzLnhyZWZbYV1pbnN0YW5jZW9mIEJhc2VTdHJlYW18fHQucHVzaChSZWYuZ2V0KGEsMCkpfWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9NjU1MzUpe2NvbnN0IGE9dGhpcy5uZXdSZWY7dGhpcy5vYmpTdHJlYW1SZWZzLmFkZChhLm51bSk7dGhpcy54cmVmW2EubnVtXT10LnNsaWNlKGUsZSs2NTUzNSl9fXRoaXMuY3VycmVudERvY3VtZW50PW51bGw7cmV0dXJuIHV9I3hhKCl7Y29uc3R7bmV3UGFnZXM6ZSxyb290RGljdDp0LHBhZ2VzUmVmOmEscGFnZXNEaWN0Om59PXRoaXM7dC5zZXQoIlBhZ2VzIixhKTtuLnNldElmTmFtZSgiVHlwZSIsIlBhZ2VzIik7bi5zZXQoIkNvdW50IixlLmxlbmd0aCk7Y29uc3Qgcz1be2RpY3Q6bixraWRzOmUscGFyZW50UmVmOmF9XTtmb3IoO3MubGVuZ3RoPjA7KXtjb25zdHtkaWN0OmUsa2lkczp0LHBhcmVudFJlZjphfT1zLnBvcCgpO2lmKHQubGVuZ3RoPD0xNil7ZS5zZXQoIktpZHMiLHQpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy54cmVmW2UubnVtXS5zZXQoIlBhcmVudCIsYSk7Y29udGludWV9Y29uc3Qgbj1NYXRoLm1heCgxNixNYXRoLmNlaWwodC5sZW5ndGgvMTYpKSxyPVtdO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9bilyLnB1c2godC5zbGljZShlLGUrbikpO2NvbnN0IGk9W107ZS5zZXQoIktpZHMiLGkpO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0W3Qsbl09dGhpcy5uZXdEaWN0O2kucHVzaCh0KTtuLnNldElmTmFtZSgiVHlwZSIsIlBhZ2VzIik7bi5zZXQoIlBhcmVudCIsYSk7bi5zZXQoIkNvdW50IixlLmxlbmd0aCk7cy5wdXNoKHtkaWN0Om4sa2lkczplLHBhcmVudFJlZjp0fSl9fX0jQ2EoZSx0KXtjb25zdCBhPWUuc29ydCh0PyhbZV0sW3RdKT0+ZS5sb2NhbGVDb21wYXJlKHQpOihbZV0sW3RdKT0+ZS10KSxbbixzXT10aGlzLm5ld0RpY3Qscj1be2RpY3Q6cyxlbnRyaWVzOmEsaXNSb290OiEwfV0saT10PyJOYW1lcyI6Ik51bXMiO2Zvcig7ci5sZW5ndGg+MDspe2NvbnN0e2RpY3Q6ZSxlbnRyaWVzOnQsaXNSb290OmF9PXIucG9wKCk7aWYodC5sZW5ndGg8PTY0KXthfHxlLnNldCgiTGltaXRzIixbdFswXVswXSx0LmF0KC0xKVswXV0pO2Uuc2V0KGksdC5mbGF0KCkpO2NvbnRpbnVlfWNvbnN0IG49W10scz1NYXRoLm1heCg2NCxNYXRoLmNlaWwodC5sZW5ndGgvNjQpKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPXMpbi5wdXNoKHQuc2xpY2UoZSxlK3MpKTtjb25zdCBvPVtdO2Uuc2V0KCJLaWRzIixvKTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdFt0LGFdPXRoaXMubmV3RGljdDtvLnB1c2godCk7YS5zZXQoIkxpbWl0cyIsW2VbMF1bMF0sZS5hdCgtMSlbMF1dKTtyLnB1c2goe2RpY3Q6YSxlbnRyaWVzOmV9KX19cmV0dXJuIG59I0lhKCl7Y29uc3R7cGFnZUxhYmVsczplfT10aGlzO2lmKCFlfHwwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0e3Jvb3REaWN0OnR9PXRoaXMsYT10aGlzLiNDYSh0aGlzLnBhZ2VMYWJlbHMsITEpO3Quc2V0KCJQYWdlTGFiZWxzIixhKX1hc3luYyN1YShlKXtjb25zdHtlbWJlZGRlZEZpbGVzOnR9PXRoaXM7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3R7ZW1iZWRkZWRGaWxlczplLGRvY3VtZW50Ont4cmVmOm59fT1hO2lmKGU/LnNpemUpe3RoaXMuY3VycmVudERvY3VtZW50PWE7Zm9yKGNvbnN0W2Esc11vZiBlKXtsZXQgZT1hO2lmKHQuaGFzKGUpKXtjb25zdCBuPXN0cmluZ1RvUERGU3RyaW5nKGEsITApO2ZvcihsZXQgYT0xOzthKyspe2NvbnN0IHM9YCR7bn1fJHthfWA7aWYoIXQuaGFzKHMpKXtlPXM7YnJlYWt9fX10LnNldChlLGF3YWl0IHRoaXMuI1l0KHMsITAsbikpfXRoaXMuY3VycmVudERvY3VtZW50PW51bGx9fX0jRmEoKXtjb25zdHtlbWJlZGRlZEZpbGVzOmV9PXRoaXM7aWYoMCE9PWUuc2l6ZSl7aWYoIXRoaXMubmFtZXNEaWN0KXtbdGhpcy5uYW1lc1JlZix0aGlzLm5hbWVzRGljdF09dGhpcy5uZXdEaWN0O3RoaXMucm9vdERpY3Quc2V0KCJOYW1lcyIsdGhpcy5uYW1lc1JlZil9dGhpcy5uYW1lc0RpY3Quc2V0KCJFbWJlZGRlZEZpbGVzIix0aGlzLiNDYShBcnJheS5mcm9tKGUuZW50cmllcygpKSwhMCkpfX0jVGEoKXtjb25zdHtuYW1lZERlc3RpbmF0aW9uczplfT10aGlzO2lmKDAhPT1lLnNpemUpe2lmKCF0aGlzLm5hbWVzRGljdCl7W3RoaXMubmFtZXNSZWYsdGhpcy5uYW1lc0RpY3RdPXRoaXMubmV3RGljdDt0aGlzLnJvb3REaWN0LnNldCgiTmFtZXMiLHRoaXMubmFtZXNSZWYpfXRoaXMubmFtZXNEaWN0LnNldCgiRGVzdHMiLHRoaXMuI0NhKEFycmF5LmZyb20oZS5lbnRyaWVzKCkpLCEwKSl9fSNPYSgpe2NvbnN0e3N0cnVjdFRyZWVLaWRzOmV9PXRoaXM7aWYoIWV8fDA9PT1lLmxlbmd0aClyZXR1cm47Y29uc3R7cm9vdERpY3Q6dH09dGhpcyxhPXRoaXMubmV3UmVmLG49dGhpcy54cmVmW2EubnVtXT1uZXcgRGljdDtuLnNldElmTmFtZSgiVHlwZSIsIlN0cnVjdFRyZWVSb290Iik7bi5zZXRJZkFycmF5KCJLIixlKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXRoaXMueHJlZlt0Lm51bV0sbj1lLmdldCgiVHlwZSIpO24mJiFpc05hbWUobiwiU3RydWN0RWxlbSIpfHxlLnNldCgiUCIsYSl9aWYodGhpcy5wYXJlbnRUcmVlLnNpemU+MCl7Y29uc3QgZT10aGlzLiNDYShBcnJheS5mcm9tKHRoaXMucGFyZW50VHJlZS5lbnRyaWVzKCkpLCExKTt0aGlzLnhyZWZbZS5udW1dLnNldElmTmFtZSgiVHlwZSIsIlBhcmVudFRyZWUiKTtuLnNldCgiUGFyZW50VHJlZSIsZSk7bi5zZXQoIlBhcmVudFRyZWVOZXh0S2V5Iix0aGlzLnBhcmVudFRyZWUuc2l6ZSl9aWYodGhpcy5pZFRyZWUuc2l6ZT4wKXtjb25zdCBlPXRoaXMuI0NhKEFycmF5LmZyb20odGhpcy5pZFRyZWUuZW50cmllcygpKSwhMCk7dGhpcy54cmVmW2UubnVtXS5zZXRJZk5hbWUoIlR5cGUiLCJJRFRyZWUiKTtuLnNldCgiSURUcmVlIixlKX1pZih0aGlzLmNsYXNzTWFwLnNpemU+MCl7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPXRoaXMuY2xhc3NNYXA7bi5zZXQoIkNsYXNzTWFwIixlKX1pZih0aGlzLnJvbGVNYXAuc2l6ZT4wKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09dGhpcy5yb2xlTWFwO24uc2V0KCJSb2xlTWFwIixlKX1pZih0aGlzLm5hbWVzcGFjZXMuc2l6ZT4wKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09QXJyYXkuZnJvbSh0aGlzLm5hbWVzcGFjZXMudmFsdWVzKCkpO24uc2V0KCJOYW1lc3BhY2VzIixlKX1pZih0aGlzLnN0cnVjdFRyZWVBRi5sZW5ndGg+MCl7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPXRoaXMuc3RydWN0VHJlZUFGO24uc2V0KCJBRiIsZSl9aWYodGhpcy5zdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb24ubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2UubnVtXT10aGlzLnN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbjtuLnNldCgiUHJvbnVuY2lhdGlvbkxleGljb24iLGUpfXQuc2V0KCJTdHJ1Y3RUcmVlUm9vdCIsYSl9I1JhKCl7aWYoMD09PXRoaXMuZmllbGRzLmxlbmd0aClyZXR1cm47Y29uc3R7cm9vdERpY3Q6ZX09dGhpcyx0PXRoaXMubmV3UmVmLGE9dGhpcy54cmVmW3QubnVtXT1uZXcgRGljdDtlLnNldCgiQWNyb0Zvcm0iLHQpO2Euc2V0KCJGaWVsZHMiLHRoaXMuZmllbGRzKTt0aGlzLmFjcm9Gb3JtTmVlZEFwcGVhcmFuY2VzJiZhLnNldCgiTmVlZEFwcGVhcmFuY2VzIiwhMCk7dGhpcy5hY3JvRm9ybVNpZ0ZsYWdzPjAmJmEuc2V0KCJTaWdGbGFncyIsdGhpcy5hY3JvRm9ybVNpZ0ZsYWdzKTthLnNldElmQXJyYXkoIkNPIix0aGlzLmFjcm9Gb3JtQ2FsY3VsYXRpb25PcmRlcik7YS5zZXRJZkRpY3QoIkRSIix0aGlzLmFjcm9Gb3JtRGVmYXVsdFJlc291cmNlcyk7dGhpcy5hY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlJiZhLnNldCgiREEiLHRoaXMuYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZSk7dGhpcy5hY3JvRm9ybVE+MCYmYS5zZXQoIlEiLHRoaXMuYWNyb0Zvcm1RKX1hc3luYyNIYSgpe2NvbnN0e3Jvb3REaWN0OmV9PXRoaXM7ZS5zZXRJZk5hbWUoIlR5cGUiLCJDYXRhbG9nIik7ZS5zZXRJZk5hbWUoIlZlcnNpb24iLHRoaXMudmVyc2lvbik7dGhpcy4jUmEoKTt0aGlzLiN4YSgpO3RoaXMuI0lhKCk7dGhpcy4jRmEoKTt0aGlzLiNUYSgpO3RoaXMuI09hKCk7YXdhaXQgdGhpcy4jd2EoKX0jQmEoKXtjb25zdCBlPW5ldyBNYXA7aWYodGhpcy5pc1NpbmdsZUZpbGUpe2NvbnN0e3hyZWY6e3RyYWlsZXI6dH19PXRoaXMub2xkUGFnZXNbMF0uZG9jdW1lbnREYXRhLmRvY3VtZW50LGE9dC5nZXQoIkluZm8iKTtmb3IoY29uc3RbdCxuXW9mIGF8fFtdKSJzdHJpbmciPT10eXBlb2YgbiYmZS5zZXQodCxzdHJpbmdUb1BERlN0cmluZyhuKSl9ZS5kZWxldGUoIk1vZERhdGUiKTtlLnNldCgiQ3JlYXRpb25EYXRlIixnZXRNb2RpZmljYXRpb25EYXRlKCkpO2Uuc2V0KCJDcmVhdG9yIiwiUERGLmpzIik7ZS5zZXQoIlByb2R1Y2VyIiwiRmlyZWZveCIpO3RoaXMuYXV0aG9yJiZlLnNldCgiQXV0aG9yIix0aGlzLmF1dGhvcik7dGhpcy50aXRsZSYmZS5zZXQoIlRpdGxlIix0aGlzLnRpdGxlKTtmb3IoY29uc3RbdCxhXW9mIGUpdGhpcy5pbmZvRGljdC5zZXQodCxzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGEpKTtyZXR1cm4gZX1hc3luYyNEYSgpe2lmKCF0aGlzLmlzU2luZ2xlRmlsZSlyZXR1cm5bbnVsbCxudWxsLG51bGxdO2NvbnN0e2RvY3VtZW50RGF0YTplfT10aGlzLm9sZFBhZ2VzWzBdLHtkb2N1bWVudDp7eHJlZjp7dHJhaWxlcjp0LGVuY3J5cHQ6YX19fT1lO2lmKCF0LmhhcygiRW5jcnlwdCIpKXJldHVybltudWxsLG51bGwsbnVsbF07Y29uc3Qgbj10LmdldCgiRW5jcnlwdCIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXJldHVybltudWxsLG51bGwsbnVsbF07dGhpcy5jdXJyZW50RG9jdW1lbnQ9ZTtjb25zdCBzPVthd2FpdCB0aGlzLiMkdChuLHQueHJlZiksYSx0LmdldCgiSUQiKV07dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbDtyZXR1cm4gc31hc3luYyNNYSgpe2NvbnN0IGU9bmV3IFJlZlNldENhY2hlO2UucHV0KFJlZi5nZXQoMCw2NTUzNSkse2RhdGE6bnVsbH0pO2ZvcihsZXQgdD0xLGE9dGhpcy54cmVmLmxlbmd0aDt0PGE7dCsrKXRoaXMub2JqU3RyZWFtUmVmcz8uaGFzKHQpP2F3YWl0IHRoaXMuI05hKFJlZi5nZXQodCwwKSx0aGlzLnhyZWZbdF0sZSk6ZS5wdXQoUmVmLmdldCh0LDApLHtkYXRhOnRoaXMueHJlZlt0XX0pO3JldHVybltlLHRoaXMubmV3UmVmXX1hc3luYyNOYShlLHQsYSl7Y29uc3Qgbj1bIiJdLHM9W107bGV0IHI9MDtjb25zdCBpPVtdO2ZvcihsZXQgbz0wLGw9dC5sZW5ndGg7bzxsO28rKyl7Y29uc3QgbD10W29dO2EucHV0KGwse2RhdGE6bnVsbCxvYmpTdHJlYW1SZWY6ZSxpbmRleDpvfSk7cy5wdXNoKGAke2wubnVtfSAke3J9YCk7Y29uc3QgZj10aGlzLnhyZWZbbC5udW1dO2F3YWl0IHdyaXRlVmFsdWUoZixpLG51bGwpO2NvbnN0IGM9aS5qb2luKCIiKTtpLmxlbmd0aD0wO24ucHVzaChjKTtyKz1jLmxlbmd0aCsxfW5bMF09cy5qb2luKCJcbiIpO2NvbnN0IG89bmV3IFN0cmluZ1N0cmVhbShuLmpvaW4oIlxuIikpLGw9by5kaWN0PW5ldyBEaWN0O2wuc2V0SWZOYW1lKCJUeXBlIiwiT2JqU3RtIik7bC5zZXQoIk4iLHQubGVuZ3RoKTtsLnNldCgiRmlyc3QiLG5bMF0ubGVuZ3RoKzEpO2EucHV0KGUse2RhdGE6b30pfWFzeW5jIHdyaXRlUERGKCl7YXdhaXQgdGhpcy4jSGEoKTtjb25zdCBlPXRoaXMuI0JhKCksW3QsYSxuXT1hd2FpdCB0aGlzLiNEYSgpLFtzLHJdPWF3YWl0IHRoaXMuI01hKCk7cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6c3RyaW5nVG9CeXRlcyhgJVBERi0ke3RoaXMudmVyc2lvbn1cbiXDusOew7rDjmApLGNoYW5nZXM6cyx4cmVmSW5mbzp7c3RhcnRYUmVmOm51bGwscm9vdFJlZjp0aGlzLnJvb3RSZWYsaW5mb1JlZjp0aGlzLmluZm9SZWYsZW5jcnlwdFJlZjp0LG5ld1JlZjpyLGZpbGVJZHM6bnx8W251bGwsbnVsbF0saW5mb01hcDplfSx1c2VYcmVmU3RyZWFtOnRoaXMudXNlT2JqZWN0U3RyZWFtcyx4cmVmOntlbmNyeXB0OmEsZW5jcnlwdFJlZjp0fX0pfX1jbGFzcyBCYXNlUERGU3RyZWFteyNQYT1udWxsOyNFYT1udWxsO19mdWxsUmVhZGVyPW51bGw7X3JhbmdlUmVhZGVycz1uZXcgU2V0O19zb3VyY2U9bnVsbDtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5fc291cmNlPWU7dGhpcy4jUGE9dDt0aGlzLiNFYT1hfWdldCBfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2Z1bGxSZWFkZXI/Ll9sb2FkZWQ/PzB9Z2V0RnVsbFJlYWRlcigpe2Fzc2VydCghdGhpcy5fZnVsbFJlYWRlciwiQmFzZVBERlN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3JldHVybiB0aGlzLl9mdWxsUmVhZGVyPW5ldyB0aGlzLiNQYSh0aGlzKX1nZXRSYW5nZVJlYWRlcihlLHQpe2lmKHQ8PXRoaXMuX3Byb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyB0aGlzLiNFYSh0aGlzLGUsdCk7dGhpcy5fcmFuZ2VSZWFkZXJzLmFkZChhKTtyZXR1cm4gYX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVhZGVyPy5jYW5jZWwoZSk7Zm9yKGNvbnN0IHQgb2YgbmV3IFNldCh0aGlzLl9yYW5nZVJlYWRlcnMpKXQuY2FuY2VsKGUpfX1jbGFzcyBCYXNlUERGU3RyZWFtUmVhZGVye29uUHJvZ3Jlc3M9bnVsbDtfY29udGVudExlbmd0aD0wO19maWxlbmFtZT1udWxsO19oZWFkZXJzQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTtfaXNSYW5nZVN1cHBvcnRlZD0hMTtfaXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ITE7X2xvYWRlZD0wO19zdHJlYW09bnVsbDtjb25zdHJ1Y3RvcihlKXt0aGlzLl9zdHJlYW09ZX1fY2FsbE9uUHJvZ3Jlc3MoKXt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZWFkYCBjYWxsZWQiKX1jYW5jZWwoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgY2FuY2VsYCBjYWxsZWQiKX19Y2xhc3MgQmFzZVBERlN0cmVhbVJhbmdlUmVhZGVye19zdHJlYW09bnVsbDtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5fc3RyZWFtPWV9YXN5bmMgcmVhZCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlYWRgIGNhbGxlZCIpfWNhbmNlbChlKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBjYW5jZWxgIGNhbGxlZCIpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW0gZXh0ZW5kcyBCYXNlUERGU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsUERGV29ya2VyU3RyZWFtUmVhZGVyLFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVyKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmVhZGVyIGV4dGVuZHMgQmFzZVBERlN0cmVhbVJlYWRlcntfcmVhZGVyPW51bGw7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7bXNnSGFuZGxlcjp0fT1lLl9zb3VyY2UsYT10LnNlbmRXaXRoU3RyZWFtKCJHZXRSZWFkZXIiKTt0aGlzLl9yZWFkZXI9YS5nZXRSZWFkZXIoKTt0LnNlbmRXaXRoUHJvbWlzZSgiUmVhZGVySGVhZGVyc1JlYWR5IikudGhlbihlPT57dGhpcy5fY29udGVudExlbmd0aD1lLmNvbnRlbnRMZW5ndGg7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZXNvbHZlKCl9LHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCl9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SYW5nZVJlYWRlciBleHRlbmRzIEJhc2VQREZTdHJlYW1SYW5nZVJlYWRlcntfcmVhZGVyPW51bGw7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGUsdCxhKTtjb25zdHttc2dIYW5kbGVyOm59PWUuX3NvdXJjZSxzPW4uc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46dCxlbmQ6YX0pO3RoaXMuX3JlYWRlcj1zLmdldFJlYWRlcigpfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgV29ya2VyVGFza3tjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZTt0aGlzLnRlcm1pbmF0ZWQ9ITE7dGhpcy5fY2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljeyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93JiYhZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYiZnVuY3Rpb24iPT10eXBlb2Ygc2VsZi5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBzZWxmJiZ0aGlzLmluaXRpYWxpemVGcm9tUG9ydChzZWxmKX1zdGF0aWMgc2V0dXAoZSx0KXtsZXQgYT0hMTtlLm9uKCJ0ZXN0Iix0PT57aWYoIWEpe2E9ITA7ZS5zZW5kKCJ0ZXN0Iix0IGluc3RhbmNlb2YgVWludDhBcnJheSl9fSk7ZS5vbigiY29uZmlndXJlIixlPT57IWZ1bmN0aW9uIHNldFZlcmJvc2l0eUxldmVsKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0YT1lKX0oZS52ZXJib3NpdHkpfSk7ZS5vbigiR2V0RG9jUmVxdWVzdCIsZT0+dGhpcy5jcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KSl9c3RhdGljIGNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpe2xldCBhLG49ITEscz1udWxsO2NvbnN0IHI9bmV3IFNldCxpPWdldFZlcmJvc2l0eUxldmVsKCkse2RvY0lkOm8sYXBpVmVyc2lvbjpsfT1lLGY9IjUuNy4yODQiO2lmKGwhPT1mKXRocm93IG5ldyBFcnJvcihgVGhlIEFQSSB2ZXJzaW9uICIke2x9IiBkb2VzIG5vdCBtYXRjaCB0aGUgV29ya2VyIHZlcnNpb24gIiR7Zn0iLmApO2NvbnN0IGJ1aWxkTXNnPShlLHQpPT5gVGhlIFxgJHtlfS5wcm90b3R5cGVcYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydHkgIiR7dH0iLCB0aHVzIGJyZWFraW5nIGUuZy4gXGBmb3IuLi5pblxgIGl0ZXJhdGlvbiBvZiAke2V9cy5gO2Zvcihjb25zdCBlIGlue30pdGhyb3cgbmV3IEVycm9yKGJ1aWxkTXNnKCJPYmplY3QiLGUpKTtmb3IoY29uc3QgZSBpbltdKXRocm93IG5ldyBFcnJvcihidWlsZE1zZygiQXJyYXkiLGUpKTtjb25zdCBjPW8rIl93b3JrZXIiO2xldCBoPW5ldyBNZXNzYWdlSGFuZGxlcihjLG8sdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKG4pdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7ci5hZGQoZSl9ZnVuY3Rpb24gZmluaXNoV29ya2VyVGFzayhlKXtlLmZpbmlzaCgpO3IuZGVsZXRlKGUpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2UiLFtlXSk7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrRmlyc3RQYWdlIixbZV0pO2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0xhc3RQYWdlIixbZV0pO2NvbnN0IHQ9YXdhaXQgYS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IFdvcmtlclRhc2soImxvYWRYZmFSZXNvdXJjZXMiKTtzdGFydFdvcmtlclRhc2soZSk7YXdhaXQgYS5lbnN1cmVEb2MoImxvYWRYZmFSZXNvdXJjZXMiLFtoLGVdKTtmaW5pc2hXb3JrZXJUYXNrKGUpfWNvbnN0W24sc109YXdhaXQgUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJudW1QYWdlcyIpLGEuZW5zdXJlRG9jKCJmaW5nZXJwcmludHMiKV0pO3JldHVybntudW1QYWdlczpuLGZpbmdlcnByaW50czpzLGh0bWxGb3JYZmE6dD9hd2FpdCBhLmVuc3VyZURvYygiaHRtbEZvclhmYSIpOm51bGx9fWZ1bmN0aW9uIHNldHVwRG9jKGUpe2Z1bmN0aW9uIG9uU3VjY2VzcyhlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aC5zZW5kKCJHZXREb2MiLHtwZGZJbmZvOmV9KX1mdW5jdGlvbiBvbkZhaWx1cmUoZSl7aWYoIW4paWYoZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9uKXtjb25zdCB0PW5ldyBXb3JrZXJUYXNrKGBQYXNzd29yZEV4Y2VwdGlvbjogcmVzcG9uc2UgJHtlLmNvZGV9YCk7c3RhcnRXb3JrZXJUYXNrKHQpO2guc2VuZFdpdGhQcm9taXNlKCJQYXNzd29yZFJlcXVlc3QiLGUpLnRoZW4oZnVuY3Rpb24oe3Bhc3N3b3JkOmV9KXtmaW5pc2hXb3JrZXJUYXNrKHQpO2EudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KS5jYXRjaChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2sodCk7aC5zZW5kKCJEb2NFeGNlcHRpb24iLGUpfSl9ZWxzZSBoLnNlbmQoIkRvY0V4Y2VwdGlvbiIsd3JhcFJlYXNvbihlKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsZnVuY3Rpb24oZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2UgaW5zdGFuY2VvZiBYUmVmUGFyc2VFeGNlcHRpb24/YS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbihmdW5jdGlvbigpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITApLnRoZW4ob25TdWNjZXNzLG9uRmFpbHVyZSl9KTpvbkZhaWx1cmUoZSl9KX1lbnN1cmVOb3RUZXJtaW5hdGVkKCk7KGFzeW5jIGZ1bmN0aW9uIGdldFBkZk1hbmFnZXIoe2RhdGE6ZSxwYXNzd29yZDp0LGRpc2FibGVBdXRvRmV0Y2g6YSxyYW5nZUNodW5rU2l6ZTpuLGRvY0Jhc2VVcmw6cixlbmFibGVYZmE6aSxldmFsdWF0b3JPcHRpb25zOmx9KXtjb25zdCBmPXtzb3VyY2U6bnVsbCxkaXNhYmxlQXV0b0ZldGNoOmEsZG9jQmFzZVVybDpyLGRvY0lkOm8sZW5hYmxlWGZhOmksZXZhbHVhdG9yT3B0aW9uczpsLGhhbmRsZXI6aCxsZW5ndGg6MCxwYXNzd29yZDp0LHJhbmdlQ2h1bmtTaXplOm59O2lmKGUpe2Yuc291cmNlPWU7cmV0dXJuIG5ldyBMb2NhbFBkZk1hbmFnZXIoZil9Y29uc3QgYz1uZXcgUERGV29ya2VyU3RyZWFtKHttc2dIYW5kbGVyOmh9KSx1PWMuZ2V0RnVsbFJlYWRlcigpLHtwcm9taXNlOm0scmVzb2x2ZTpwLHJlamVjdDpkfT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTtsZXQgZyxiPVtdO3M9ZT0+Yy5jYW5jZWxBbGxSZXF1ZXN0cyhlKTt1LmhlYWRlcnNSZWFkeS50aGVuKCgpPT57aWYodS5pc1JhbmdlU3VwcG9ydGVkKXtmLnNvdXJjZT1jO2YubGVuZ3RoPXUuY29udGVudExlbmd0aDtmLmRpc2FibGVBdXRvRmV0Y2h8fD11LmlzU3RyZWFtaW5nU3VwcG9ydGVkO2c9bmV3IE5ldHdvcmtQZGZNYW5hZ2VyKGYpO2Zvcihjb25zdCBlIG9mIGIpZy5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpO2I9bnVsbDtwKGcpO3M9bnVsbH19KS5jYXRjaChlPT57ZChlKTtzPW51bGx9KTsoYXN5bmMgZnVuY3Rpb24gcmVhZERhdGEoKXtsZXQgZT0wO2Zvcig7Oyl7Y29uc3R7dmFsdWU6dCxkb25lOmF9PWF3YWl0IHUucmVhZCgpO2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihhKWJyZWFrO2UrPXQuYnl0ZUxlbmd0aDt1LmlzU3RyZWFtaW5nU3VwcG9ydGVkfHxoLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOmUsdG90YWw6dS5jb250ZW50TGVuZ3RofSk7Zz9nLnNlbmRQcm9ncmVzc2l2ZURhdGEodCk6Yi5wdXNoKHQpfWlmKCFnKXtmLnNvdXJjZT1hcnJheUJ1ZmZlcnNUb0J5dGVzKGIpO2I9bnVsbDtnPW5ldyBMb2NhbFBkZk1hbmFnZXIoZik7cChnKX1zPW51bGx9KSgpLmNhdGNoKGU9PntkKGUpO3M9bnVsbH0pO3JldHVybiBtfSkoZSkudGhlbihmdW5jdGlvbihlKXtpZihuKXtlLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7dGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1hPWU7YS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCEwKS50aGVuKGU9PntoLnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9KX0pLnRoZW4ocGRmTWFuYWdlclJlYWR5LG9uRmFpbHVyZSl9aC5vbigiR2V0UGFnZSIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlKGUsInJvdGF0ZSIpLGEuZW5zdXJlKGUsInJlZiIpLGEuZW5zdXJlKGUsInVzZXJVbml0IiksYS5lbnN1cmUoZSwidmlldyIpXSkudGhlbihmdW5jdGlvbihbZSx0LGEsbl0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCxyZWZTdHI6dD8udG9TdHJpbmcoKT8/bnVsbCx1c2VyVW5pdDphLHZpZXc6bn19KX0pfSk7aC5vbigiR2V0UGFnZUluZGV4IixmdW5jdGlvbihlKXtjb25zdCB0PVJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pO2gub24oIkdldERlc3RpbmF0aW9ucyIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIil9KTtoLm9uKCJHZXREZXN0aW5hdGlvbiIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZ2V0RGVzdGluYXRpb24iLFtlLmlkXSl9KTtoLm9uKCJHZXRQYWdlTGFiZWxzIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KTtoLm9uKCJHZXRQYWdlTGF5b3V0IixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KTtoLm9uKCJHZXRQYWdlTW9kZSIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygicGFnZU1vZGUiKX0pO2gub24oIkdldFZpZXdlclByZWZlcmVuY2VzIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSk7aC5vbigiR2V0T3BlbkFjdGlvbiIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3BlbkFjdGlvbiIpfSk7aC5vbigiR2V0QXR0YWNobWVudHMiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIil9KTtoLm9uKCJHZXREb2NKU0FjdGlvbnMiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpfSk7aC5vbigiR2V0UGFnZUpTQWN0aW9ucyIsZnVuY3Rpb24oe3BhZ2VJbmRleDplfSl7cmV0dXJuIGEuZ2V0UGFnZShlKS50aGVuKGU9PmEuZW5zdXJlKGUsImpzQWN0aW9ucyIpKX0pO2gub24oIkdldEFubm90YXRpb25zQnlUeXBlIixhc3luYyBmdW5jdGlvbih7dHlwZXM6ZSxwYWdlSW5kZXhlc1RvU2tpcDp0fSl7Y29uc3RbbixzXT1hd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksYS5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIildKTtpZighcylyZXR1cm4gbnVsbDtjb25zdCByPVtdLGk9W107bGV0IG89bnVsbDt0cnl7Zm9yKGxldCBsPTAsZj1uO2w8ZjtsKyspaWYoIXQ/LmhhcyhsKSl7aWYoIW8pe289bmV3IFdvcmtlclRhc2soIkdldEFubm90YXRpb25zQnlUeXBlIik7c3RhcnRXb3JrZXJUYXNrKG8pfXIucHVzaChhLmdldFBhZ2UobCkudGhlbihhc3luYyB0PT50JiZ0LmNvbGxlY3RBbm5vdGF0aW9uc0J5VHlwZShoLG8sZSxpLHMpfHxbXSkpfWF3YWl0IFByb21pc2UuYWxsKHIpO3JldHVybihhd2FpdCBQcm9taXNlLmFsbChpKSkuZmlsdGVyKGU9PiEhZSl9ZmluYWxseXtvJiZmaW5pc2hXb3JrZXJUYXNrKG8pfX0pO2gub24oIkdldE91dGxpbmUiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImRvY3VtZW50T3V0bGluZSIpfSk7aC5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJvcHRpb25hbENvbnRlbnRDb25maWciKX0pO2gub24oIkdldFBlcm1pc3Npb25zIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwZXJtaXNzaW9ucyIpfSk7aC5vbigiR2V0TWV0YWRhdGEiLGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoImRvY3VtZW50SW5mbyIpLGEuZW5zdXJlQ2F0YWxvZygibWV0YWRhdGEiKSxhLmVuc3VyZUNhdGFsb2coImhhc1N0cnVjdFRyZWUiKV0pfSk7aC5vbigiR2V0TWFya0luZm8iLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coIm1hcmtJbmZvIil9KTtoLm9uKCJHZXREYXRhIixmdW5jdGlvbihlKXtyZXR1cm4gYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbihlPT5lLmJ5dGVzKX0pO2gub24oIkdldEFubm90YXRpb25zIixmdW5jdGlvbih7cGFnZUluZGV4OmUsaW50ZW50OnR9KXtyZXR1cm4gYS5nZXRQYWdlKGUpLnRoZW4oZnVuY3Rpb24oYSl7Y29uc3Qgbj1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhuKTtyZXR1cm4gYS5nZXRBbm5vdGF0aW9uc0RhdGEoaCxuLHQpLnRoZW4oZT0+e2ZpbmlzaFdvcmtlclRhc2sobik7cmV0dXJuIGV9LGU9PntmaW5pc2hXb3JrZXJUYXNrKG4pO3Rocm93IGV9KX0pfSk7aC5vbigiR2V0RmllbGRPYmplY3RzIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpLnRoZW4oZT0+ZT8uYWxsRmllbGRzfHxudWxsKX0pO2gub24oIkhhc0pTQWN0aW9ucyIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJoYXNKU0FjdGlvbnMiKX0pO2gub24oIkdldENhbGN1bGF0aW9uT3JkZXJJZHMiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSk7aC5vbigiRXh0cmFjdFBhZ2VzIixhc3luYyBmdW5jdGlvbih7cGFnZUluZm9zOmUsYW5ub3RhdGlvblN0b3JhZ2U6dH0pe2lmKCFlKXt3YXJuKCJleHRyYWN0UGFnZXM6IG5vdGhpbmcgdG8gZXh0cmFjdC4iKTtyZXR1cm4gbnVsbH1BcnJheS5pc0FycmF5KGUpfHwoZT1bZV0pO2xldCBuLHM9MDtmb3IoY29uc3QgdCBvZiBlKWlmKG51bGw9PT10LmRvY3VtZW50KXQuZG9jdW1lbnQ9YS5wZGZEb2N1bWVudDtlbHNlIGlmKEFycmF5QnVmZmVyLmlzVmlldyh0LmRvY3VtZW50KSl7Y29uc3QgZT1uZXcgTG9jYWxQZGZNYW5hZ2VyKHtzb3VyY2U6dC5kb2N1bWVudCxkb2NJZDpgJHtvfV9leHRyYWN0UGFnZXNfJHtzKyt9YCxoYW5kbGVyOmgscGFzc3dvcmQ6dC5wYXNzd29yZD8/bnVsbCxldmFsdWF0b3JPcHRpb25zOk9iamVjdC5hc3NpZ24oe30sYS5ldmFsdWF0b3JPcHRpb25zKX0pO2xldCBuPSExLHI9ITA7Zm9yKDs7KXRyeXthd2FpdCBlLnJlcXVlc3RMb2FkZWRTdHJlYW0oKTthd2FpdCBlLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBlLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBlLmVuc3VyZURvYygicGFyc2UiLFtuXSk7YnJlYWt9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIFhSZWZQYXJzZUV4Y2VwdGlvbil7aWYoITE9PT1uKXtuPSEwO2NvbnRpbnVlfXI9ITE7d2FybigiZXh0cmFjdFBhZ2VzOiBYUmVmUGFyc2VFeGNlcHRpb24uIil9ZWxzZSBpZih0IGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IGE9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke3QuY29kZX1gKTtzdGFydFdvcmtlclRhc2soYSk7dHJ5e2NvbnN0e3Bhc3N3b3JkOmF9PWF3YWl0IGguc2VuZFdpdGhQcm9taXNlKCJQYXNzd29yZFJlcXVlc3QiLHQpO2UudXBkYXRlUGFzc3dvcmQoYSl9Y2F0Y2h7cj0hMTt3YXJuKCJleHRyYWN0UGFnZXM6IGludmFsaWQgcGFzc3dvcmQuIil9ZmluYWxseXtmaW5pc2hXb3JrZXJUYXNrKGEpfX1lbHNle3I9ITE7d2FybigiZXh0cmFjdFBhZ2VzOiBpbnZhbGlkIGRvY3VtZW50LiIpfWlmKCFyKWJyZWFrfXJ8fCh0LmRvY3VtZW50PW51bGwpO2lmKGF3YWl0IGUuZW5zdXJlRG9jKCJpc1B1cmVYZmEiKSl7dC5kb2N1bWVudD1udWxsO3dhcm4oImV4dHJhY3RQYWdlcyBkb2VzIG5vdCBzdXBwb3J0IHB1cmUgWEZBIGRvY3VtZW50cy4iKX1lbHNlIHQuZG9jdW1lbnQ9ZS5wZGZEb2N1bWVudH1lbHNlIHdhcm4oImV4dHJhY3RQYWdlczogaW52YWxpZCBkb2N1bWVudC4iKTt0cnl7Y29uc3QgYT1uZXcgUERGRWRpdG9yO249bmV3IFdvcmtlclRhc2soYEV4dHJhY3RQYWdlczogJHtlLmxlbmd0aH0gcGFnZShzKWApO3N0YXJ0V29ya2VyVGFzayhuKTtyZXR1cm4gYXdhaXQgYS5leHRyYWN0UGFnZXMoZSx0LGgsbil9Y2F0Y2goZSl7d2FybihgZXh0cmFjdFBhZ2VzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9ZmluYWxseXtuJiZmaW5pc2hXb3JrZXJUYXNrKG4pfX0pO2gub24oIlNhdmVEb2N1bWVudCIsYXN5bmMgZnVuY3Rpb24oe2lzUHVyZVhmYTplLG51bVBhZ2VzOnQsYW5ub3RhdGlvblN0b3JhZ2U6bixmaWxlbmFtZTpzfSl7Y29uc3Qgcj1bYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCksYS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGEuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm1SZWYiKSxhLmVuc3VyZURvYygic3RhcnRYUmVmIiksYS5lbnN1cmVEb2MoInhyZWYiKSxhLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IildLGk9bmV3IFJlZlNldENhY2hlLG89W10sbD1lP251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAobiksW2YsYyx1LG0scCxkXT1hd2FpdCBQcm9taXNlLmFsbChyKSxnPXAudHJhaWxlci5nZXRSYXcoIlJvb3QiKXx8bnVsbDtsZXQgYjtpZihsKXtkP2F3YWl0IGQuY2FuVXBkYXRlU3RydWN0VHJlZSh7cGRmTWFuYWdlcjphLG5ld0Fubm90YXRpb25zQnlQYWdlOmx9KSYmKGI9ZCk6YXdhaXQgU3RydWN0VHJlZVJvb3QuY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjpnLHBkZk1hbmFnZXI6YSxuZXdBbm5vdGF0aW9uc0J5UGFnZTpsfSkmJihiPW51bGwpO2NvbnN0IGU9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMobi52YWx1ZXMoKSxwLGEuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCksdD12b2lkIDA9PT1iP286W107Zm9yKGNvbnN0W24sc11vZiBsKXQucHVzaChhLmdldFBhZ2UobikudGhlbih0PT57Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke259YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiB0LnNhdmVOZXdBbm5vdGF0aW9ucyhoLGEscyxlLGkpLmZpbmFsbHkoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGEpfSl9KSk7bnVsbD09PWI/by5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IFN0cnVjdFRyZWVSb290LmNyZWF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmwseHJlZjpwLGNhdGFsb2dSZWY6ZyxwZGZNYW5hZ2VyOmEsY2hhbmdlczppfSl9KSk6YiYmby5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IGIudXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6bCxwZGZNYW5hZ2VyOmEsY2hhbmdlczppfSl9KSl9aWYoZSlvLnB1c2goYS5lbnN1cmVEb2MoInNlcmlhbGl6ZVhmYURhdGEiLFtuXSkpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0O2UrKylvLnB1c2goYS5nZXRQYWdlKGUpLnRoZW4oZnVuY3Rpb24odCl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZTogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiB0LnNhdmUoaCxhLG4saSkuZmluYWxseShmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soYSl9KX0pKTtjb25zdCB3PWF3YWl0IFByb21pc2UuYWxsKG8pO2xldCBqPW51bGw7aWYoZSl7aj13WzBdO2lmKCFqKXJldHVybiBmLmJ5dGVzfWVsc2UgaWYoMD09PWkuc2l6ZSlyZXR1cm4gZi5ieXRlcztjb25zdCBrPXUmJmMgaW5zdGFuY2VvZiBEaWN0JiZpLnZhbHVlcygpLnNvbWUoZT0+ZS5uZWVkQXBwZWFyYW5jZXMpLHk9YyBpbnN0YW5jZW9mIERpY3QmJmMuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgcT1udWxsLHY9ITE7aWYoQXJyYXkuaXNBcnJheSh5KSl7Zm9yKGxldCBlPTAsdD15Lmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09eVtlXSl7cT15W2UrMV07dj0hMH1udWxsPT09cSYmKHE9cC5nZXROZXdUZW1wb3JhcnlSZWYoKSl9ZWxzZSB5JiZ3YXJuKCJVbnN1cHBvcnRlZCBYRkEgdHlwZS4iKTtsZXQgUz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHAudHJhaWxlcil7Y29uc3QgZT1uZXcgTWFwLHQ9cC50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO2lmKHQgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFthLG5db2YgdCkic3RyaW5nIj09dHlwZW9mIG4mJmUuc2V0KGEsc3RyaW5nVG9QREZTdHJpbmcobikpO1M9e3Jvb3RSZWY6ZyxlbmNyeXB0UmVmOnAudHJhaWxlci5nZXRSYXcoIkVuY3J5cHQiKXx8bnVsbCxuZXdSZWY6cC5nZXROZXdUZW1wb3JhcnlSZWYoKSxpbmZvUmVmOnAudHJhaWxlci5nZXRSYXcoIkluZm8iKXx8bnVsbCxpbmZvTWFwOmUsZmlsZUlkczpwLnRyYWlsZXIuZ2V0KCJJRCIpfHxudWxsLHN0YXJ0WFJlZjptLGZpbGVuYW1lOnN9fXJldHVybiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOmYuYnl0ZXMseHJlZkluZm86UyxjaGFuZ2VzOmkseHJlZjpwLGhhc1hmYTohIXkseGZhRGF0YXNldHNSZWY6cSxoYXNYZmFEYXRhc2V0c0VudHJ5OnYsbmVlZEFwcGVhcmFuY2VzOmssYWNyb0Zvcm1SZWY6dSxhY3JvRm9ybTpjLHhmYURhdGE6aix1c2VYcmVmU3RyZWFtOmlzRGljdChwLnRvcERpY3QsIlhSZWYiKX0pLmZpbmFsbHkoKCk9PntwLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KX0pO2gub24oIkdldE9wZXJhdG9yTGlzdCIsZnVuY3Rpb24oZSx0KXtjb25zdHtwYWdlSWQ6bixwYWdlSW5kZXg6c309ZTthLmdldFBhZ2UobikudGhlbihmdW5jdGlvbihhKXtjb25zdCBuPW5ldyBXb3JrZXJUYXNrKGBHZXRPcGVyYXRvckxpc3Q6IHBhZ2UgJHtzfWApO3N0YXJ0V29ya2VyVGFzayhuKTtjb25zdCByPWk+PWNlP0RhdGUubm93KCk6MDthLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjpoLHNpbms6dCx0YXNrOm4saW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZSxtb2RpZmllZElkczplLm1vZGlmaWVkSWRzLHBhZ2VJbmRleDpzfSkudGhlbihmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKG4pO3ImJmluZm8oYHBhZ2U9JHtzKzF9IC0gZ2V0T3BlcmF0b3JMaXN0OiB0aW1lPSR7RGF0ZS5ub3coKS1yfW1zLCBsZW49JHtlLmxlbmd0aH1gKTt0LmNsb3NlKCl9LGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2sobik7bi50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSl9KX0pO2gub24oIkdldFRleHRDb250ZW50IixmdW5jdGlvbihlLHQpe2NvbnN0e3BhZ2VJZDpuLHBhZ2VJbmRleDpzLGluY2x1ZGVNYXJrZWRDb250ZW50OnIsZGlzYWJsZU5vcm1hbGl6YXRpb246b309ZTthLmdldFBhZ2UobikudGhlbihmdW5jdGlvbihlKXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKCJHZXRUZXh0Q29udGVudDogcGFnZSAiK3MpO3N0YXJ0V29ya2VyVGFzayhhKTtjb25zdCBuPWk+PWNlP0RhdGUubm93KCk6MDtlLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjpoLHRhc2s6YSxzaW5rOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6cixkaXNhYmxlTm9ybWFsaXphdGlvbjpvfSkudGhlbihmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soYSk7biYmaW5mbyhgcGFnZT0ke3MrMX0gLSBnZXRUZXh0Q29udGVudDogdGltZT1gKyhEYXRlLm5vdygpLW4pKyJtcyIpO3QuY2xvc2UoKX0sZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhhKTthLnRlcm1pbmF0ZWR8fHQuZXJyb3IoZSl9KX0pfSk7aC5vbigiR2V0U3RydWN0VHJlZSIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbihlPT5hLmVuc3VyZShlLCJnZXRTdHJ1Y3RUcmVlIikpfSk7aC5vbigiRm9udEZhbGxiYWNrIixmdW5jdGlvbihlKXtyZXR1cm4gYS5mb250RmFsbGJhY2soZS5pZCxoKX0pO2gub24oIkNsZWFudXAiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmNsZWFudXAoITApfSk7aC5vbigiVGVybWluYXRlIixhc3luYyBmdW5jdGlvbihlKXtuPSEwO2NvbnN0IHQ9W107aWYoYSl7YS50ZXJtaW5hdGUobmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2NvbnN0IGU9YS5jbGVhbnVwKCk7dC5wdXNoKGUpO2E9bnVsbH1lbHNlIGNsZWFyR2xvYmFsQ2FjaGVzKCk7cz8uKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtmb3IoY29uc3QgZSBvZiByKXt0LnB1c2goZS5maW5pc2hlZCk7ZS50ZXJtaW5hdGUoKX1hd2FpdCBQcm9taXNlLmFsbCh0KTtoLmRlc3Ryb3koKTtoPW51bGx9KTtoLm9uKCJSZWFkeSIsZnVuY3Rpb24odCl7c2V0dXBEb2MoZSk7ZT1udWxsfSk7cmV0dXJuIGN9c3RhdGljIGluaXRpYWxpemVGcm9tUG9ydChlKXtjb25zdCB0PW5ldyBNZXNzYWdlSGFuZGxlcigid29ya2VyIiwibWFpbiIsZSk7dGhpcy5zZXR1cCh0LGUpO3Quc2VuZCgicmVhZHkiLG51bGwpfX1nbG9iYWxUaGlzLnBkZmpzV29ya2VyPXtXb3JrZXJNZXNzYWdlSGFuZGxlcn07ZXhwb3J0e1dvcmtlck1lc3NhZ2VIYW5kbGVyfTs=`,``+{}.url).toString();async function Jm(e){let t=await(0,$c.createWorker)([`fra`,`ara`,`eng`]),n;n=e instanceof File||e instanceof Blob?URL.createObjectURL(e):e instanceof URL?e.toString():e;let r=await Tp(n).promise,i=``;for(let e=1;e<=r.numPages;e++){let n=await r.getPage(e),a=n.getViewport({scale:2}),o=document.createElement(`canvas`),s=o.getContext(`2d`);if(!s)throw Error(`Failed to get 2d canvas context`);o.width=a.width,o.height=a.height,await n.render({canvas:o,canvasContext:s,viewport:a}).promise;let{data:{text:c}}=await t.recognize(o);i+=c+`
92
+ `}return await t.terminate(),i}async function Ym(e){let t;t=e instanceof File||e instanceof Blob?URL.createObjectURL(e):e instanceof URL?e.toString():e;let n=await Tp(t).promise,r=``;for(let e=1;e<=n.numPages;e++){let t=(await(await n.getPage(e)).getTextContent()).items.filter(e=>`str`in e&&`transform`in e).map(e=>e.str).join(` `);r+=t+`
93
+ `}return r}exports.PDFViewer=E,exports.default=E,exports.generateWatermarkedPdf=_,exports.imageToPdf=uc,exports.pdfJsOcr=Ym,exports.tesseractOcr=Jm;
93
94
  //# sourceMappingURL=index.cjs.map