@brandbrigade/ott-bb-player 1.0.44 → 1.0.46

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/OTTPlayer.js CHANGED
@@ -1,6 +1,4 @@
1
- (function(O,D){typeof exports=="object"&&typeof module<"u"?module.exports=D():typeof define=="function"&&define.amd?define(D):(O=typeof globalThis<"u"?globalThis:O||self,O.OTTPlayer=D())})(this,function(){"use strict";var wy=Object.defineProperty;var By=(O,D,be)=>D in O?wy(O,D,{enumerable:!0,configurable:!0,writable:!0,value:be}):O[D]=be;var g=(O,D,be)=>By(O,typeof D!="symbol"?D+"":D,be);const O=`
2
- precision highp float;
3
-
1
+ (function(bV,Dl){typeof exports=="object"&&typeof module<"u"?module.exports=Dl():typeof define=="function"&&define.amd?define(Dl):(bV=typeof globalThis<"u"?globalThis:bV||self,bV.OTTPlayer=Dl())})(this,function(){"use strict";var cx=Object.defineProperty;var ix=(bV,Dl,cW)=>Dl in bV?cx(bV,Dl,{enumerable:!0,configurable:!0,writable:!0,value:cW}):bV[Dl]=cW;var O=(bV,Dl,cW)=>ix(bV,typeof Dl!="symbol"?Dl+"":Dl,cW);const bV=`
4
2
  uniform vec2 u_resolution;
5
3
  attribute vec2 a_position;
6
4
  attribute vec2 a_uv;
@@ -15,8 +13,13 @@ void main() {
15
13
 
16
14
  gl_Position = vec4(clipSpace, 0.0, 1.0);
17
15
  }
18
- `,D=`
16
+ `,Dl=`
17
+ #ifdef GL_FRAGMENT_PRECISION_HIGH
19
18
  precision highp float;
19
+ #else
20
+ precision mediump float;
21
+ #endif
22
+
20
23
 
21
24
  uniform vec2 u_resolution;
22
25
  uniform sampler2D ad0;
@@ -82,7 +85,7 @@ void main() {
82
85
  BlendWithLogo(ad1, u_matrix1);
83
86
  }
84
87
  }
85
- `,be=`
88
+ `,cW=`
86
89
 
87
90
  //High precision mode
88
91
  precision highp float;
@@ -112,7 +115,7 @@ void main() {
112
115
  // The GPU will interpolate this value between points.
113
116
  v_texCoord = a_uv;
114
117
  }
115
- `,Sl=`
118
+ `,ym=`
116
119
 
117
120
  //High precision mode
118
121
  precision highp float;
@@ -255,18 +258,44 @@ void main()
255
258
  }
256
259
  `;/* @license twgl.js 5.5.4 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
257
260
  Available via the MIT license.
258
- see: http://github.com/greggman/twgl.js for details */const vi={};{const e=vi;e[5120]=Int8Array,e[5121]=Uint8Array,e[5122]=Int16Array,e[5123]=Uint16Array,e[5124]=Int32Array,e[5125]=Uint32Array,e[5126]=Float32Array,e[32819]=Uint16Array,e[32820]=Uint16Array,e[33635]=Uint16Array,e[5131]=Uint16Array,e[33640]=Uint32Array,e[35899]=Uint32Array,e[35902]=Uint32Array,e[36269]=Uint32Array,e[34042]=Uint32Array}function gi(...e){console.error(...e)}const Fi=function(){const e={},t={};function n(l){const a=l.constructor.name;if(!e[a]){for(const c in l)if(typeof l[c]=="number"){const i=t[l[c]];t[l[c]]=i?`${i} | ${c}`:c}e[a]=!0}}return function(a,c){return n(a),t[c]||(typeof c=="number"?`0x${c.toString(16)}`:c)}}(),Ci=6406,Il=6407,zl=6408,xi=6409,Si=6410,Ii=6402,zi=34041,Mi=33319,Ji=33320,Ni=6403,ki=36244,Ki=36248,Ti=36249,Hi={};{const e=Hi;e[Ci]={numColorComponents:1},e[xi]={numColorComponents:1},e[Si]={numColorComponents:2},e[Il]={numColorComponents:3},e[zl]={numColorComponents:4},e[Ni]={numColorComponents:1},e[ki]={numColorComponents:1},e[Mi]={numColorComponents:2},e[Ji]={numColorComponents:2},e[Il]={numColorComponents:3},e[Ki]={numColorComponents:3},e[zl]={numColorComponents:4},e[Ti]={numColorComponents:4},e[Ii]={numColorComponents:1},e[zi]={numColorComponents:2}}const yn=gi;function Ui(e){return typeof document<"u"&&document.getElementById?document.getElementById(e):null}const wi=35713,Bi=35714,Qi=35632,Pi=35633,Ei=35981,Di=/ERROR:\s*\d+:(\d+)/gi;function ji(e,t="",n=0){const l=[...t.matchAll(Di)],a=new Map(l.map((c,i)=>{const r=parseInt(c[1]),d=l[i+1],s=d?d.index:t.length,o=t.substring(c.index,s);return[r-1,o]}));return e.split(`
259
- `).map((c,i)=>{const r=a.get(i);return`${i+1+n}: ${c}${r?`
260
-
261
- ^^^ ${r}`:""}`}).join(`
262
- `)}const Ml=/^[ \t]*\n/;function Jl(e){let t=0;return Ml.test(e)&&(t=1,e=e.replace(Ml,"")),{lineOffset:t,shaderSource:e}}function Oi(e,t,n,l){if(l=l||yn,!e.getShaderParameter(n,wi)){const c=e.getShaderInfoLog(n),{lineOffset:i,shaderSource:r}=Jl(e.getShaderSource(n)),d=`${ji(r,c,i)}
263
- Error compiling ${Fi(e,t)}: ${c}`;return l(d),d}return""}function Nl(e,t,n){let l,a,c;if(typeof t=="function"&&(n=t,t=void 0),typeof e=="function")n=e,e=void 0;else if(e&&!Array.isArray(e)){const s=e;n=s.errorCallback,e=s.attribLocations,l=s.transformFeedbackVaryings,a=s.transformFeedbackMode,c=s.callback}const i=n||yn,r=[],d={errorCallback(s,...o){r.push(s),i(s,...o)},transformFeedbackVaryings:l,transformFeedbackMode:a,callback:c,errors:r};{let s={};Array.isArray(e)?e.forEach(function(o,u){s[o]=t?t[u]:u}):s=e||{},d.attribLocations=s}return d}const Ai=["VERTEX_SHADER","FRAGMENT_SHADER"];function _i(e,t){if(t.indexOf("frag")>=0)return Qi;if(t.indexOf("vert")>=0)return Pi}function $i(e,t,n){const l=e.getAttachedShaders(t);for(const a of l)n.has(a)&&e.deleteShader(a);e.deleteProgram(t)}const qi=(e=0)=>new Promise(t=>setTimeout(t,e));function er(e,t,n){const l=e.createProgram(),{attribLocations:a,transformFeedbackVaryings:c,transformFeedbackMode:i}=Nl(n);for(let r=0;r<t.length;++r){let d=t[r];if(typeof d=="string"){const s=Ui(d),o=s?s.text:d;let u=e[Ai[r]];s&&s.type&&(u=_i(e,s.type)||u),d=e.createShader(u),e.shaderSource(d,Jl(o).shaderSource),e.compileShader(d),e.attachShader(l,d)}}Object.entries(a).forEach(([r,d])=>e.bindAttribLocation(l,d,r));{let r=c;r&&(r.attribs&&(r=r.attribs),Array.isArray(r)||(r=Object.keys(r)),e.transformFeedbackVaryings(l,r,i||Ei))}return e.linkProgram(l),l}function tr(e,t,n,l,a){const c=Nl(n,l,a),i=new Set(t),r=er(e,t,c);function d(s,o){const u=lr(s,o,c.errorCallback);return u&&$i(s,o,i),u}if(c.callback){nr(e,r).then(()=>{const s=d(e,r);c.callback(s,s?void 0:r)});return}return d(e,r)?void 0:r}async function nr(e,t){const n=e.getExtension("KHR_parallel_shader_compile"),l=n?(c,i)=>c.getProgramParameter(i,n.COMPLETION_STATUS_KHR):()=>!0;let a=0;do await qi(a),a=1e3/60;while(!l(e,t))}function lr(e,t,n){if(n=n||yn,!e.getProgramParameter(t,Bi)){const a=e.getProgramInfoLog(t);n(`Error in program linking: ${a}`);const i=e.getAttachedShaders(t).map(r=>Oi(e,e.getShaderParameter(r,e.SHADER_TYPE),r,n));return`${a}
264
- ${i.filter(r=>r).join(`
265
- `)}`}}function kl(e,t,n,l,a){return tr(e,t,n,l,a)}const ze=(()=>{const e=()=>{const m=navigator.userAgent;return/windows/i.test(m)?"Windows":/android/i.test(m)?"Android":/iphone|ipad|ipod/i.test(m)?"iOS":/mac/i.test(m)?"Mac":/ipad/i.test(m)?"iPad":"Something else"},t=()=>e()=="Mac",n=()=>e()=="iPad",l=()=>e()=="iOS",a=()=>{let m=e();return m=="iOS"||m=="Mac"||m=="iPad"},c=()=>e()=="Windows",i=()=>e()=="Android",r=()=>{let m=e();return m=="Windows"?"a Windows PC":m=="Android"?"an Android phone":m=="iOS"?"an iPhone":m=="Mac"?"a Mac":m=="iPad"?"an iPad":"an Unknown device"},d=()=>({options:[],header:[navigator.platform,navigator.userAgent,navigator.appVersion,navigator.vendor,window.opera],dataos:[{name:"Windows Phone",value:"Windows Phone",version:"OS"},{name:"Windows",value:"Win",version:"NT"},{name:"iPhone",value:"iPhone",version:"OS"},{name:"iPad",value:"iPad",version:"OS"},{name:"Kindle",value:"Silk",version:"Silk"},{name:"Android",value:"Android",version:"Android"},{name:"PlayBook",value:"PlayBook",version:"OS"},{name:"BlackBerry",value:"BlackBerry",version:"/"},{name:"Macintosh",value:"Mac",version:"OS X"},{name:"Linux",value:"Linux",version:"rv"},{name:"Palm",value:"Palm",version:"PalmOS"}],databrowser:[{name:"Chrome",value:"Chrome",version:"Chrome"},{name:"Firefox",value:"Firefox",version:"Firefox"},{name:"Safari",value:"Safari",version:"Version"},{name:"Internet Explorer",value:"MSIE",version:"MSIE"},{name:"Opera",value:"Opera",version:"Opera"},{name:"BlackBerry",value:"CLDC",version:"CLDC"},{name:"Mozilla",value:"Mozilla",version:"Mozilla"}],init:function(){let h=this.header.join(" "),R=this.matchItem(h,this.dataos),y=this.matchItem(h,this.databrowser);return{os:R,browser:y}},matchItem:function(h,R){let y=0,V=0,L,G,W,X,b;for(y=0;y<R.length;y+=1)if(L=new RegExp(R[y].value,"i"),W=L.test(h),W){if(G=new RegExp(R[y].version+"[- /:;]([\\d._]+)","i"),X=h.match(G),b="",X&&X[1]&&(X=X[1]),X)for(X=X.split(/[._]+/),V=0;V<X.length;V+=1)V===0?b+=X[V]+".":b+=X[V];else b="0";return{name:R[y].name,version:parseFloat(b)}}return{name:"unknown",version:0}}}).init().os.name,s=()=>{const m=navigator.userAgent;return m.indexOf("Chrome")>-1&&m.indexOf("Edge")===-1?"Chrome":m.indexOf("Safari")>-1&&m.indexOf("Chrome")===-1?"Safari":m.indexOf("Firefox")>-1?"Firefox":m.indexOf("MSIE")>-1||m.indexOf("Trident")>-1?"Internet Explorer":m.indexOf("Edge")>-1?"Edge":"Unknown"};return{getDeviceName:d,getCurrentPlatform:e,isApple:a,isWindows:c,isAndroid:i,isMac:t,isiPhone:l,isiPad:n,getDeviceDescription:r,getBrowserName:s,isSafariMac:()=>t()&&s()=="Safari",isChromeMac:()=>t()&&s()=="Chrome",isChromeWin:()=>c()&&s()=="Chrome"}})(),Vt=e=>e.toString().padStart(2,"0"),Xn=":",M=(e,t,n)=>{let l="";return Array.isArray(e)?(l=[Vt(e[0]),Vt(e[1]),Vt(e[2]),Vt(e[3])].join(":"),n==!0?e[4]==1&&(t===void 0||t)?l+=".2":l+=".1":e[4]==1&&(t===void 0||t)&&(l+=".1")):(l=("0"+e.h).slice(-2)+Xn+("0"+e.m).slice(-2)+Xn+("0"+e.s).slice(-2)+Xn+("0"+e.f).slice(-2),t&&(l+="."+(e.field?"1":"2"))),l},Kl=e=>{let t=e.split(":");if(t.length!=4)return console.error("timeCodeStr2TimeCodeArray: Failed to parse "+e),[0,0,0,0,0];let n=[parseInt(t[0]),parseInt(t[1]),parseInt(t[2])];if(t[3].indexOf(".")>=0){let l=t[3].split(".");n.push(parseInt(l[0])),n.push(parseInt(l[1]))}else n.push(parseInt(t[3])),n.push(0);return n},Vn=(e,t,n)=>{let l=60,a=0;Math.floor(t)==60?(l=60,a=0):Math.floor(t)==59?(l=60,a=4):Math.floor(t)==30?(l=30,a=0):Math.floor(t)==29&&(l=30,a=2);let c=0,r=Math.floor(t*60*10)*6,d=e[0],s=e[1],o=e[2],u=e[3],Z=e[4];return c+=d*r,c+=s*(l*60),c+=o*l,n?c+=u*2+Z:c+=u,c-=a*s,c+=a*Math.floor(s/10),c},J=(e,t,n)=>{let l=60,a=0;Math.floor(t)==60?(l=60,a=0):Math.floor(t)==59?(l=60,a=4):Math.floor(t)==30?(l=30,a=0):Math.floor(t)==29&&(l=30,a=2);let c=Math.floor(t*60),i=Math.floor(t*60*10),r=i*6,d=e,s=Math.floor(d/r);d-=s*r;let o=Math.floor(d/i);d-=o*i,d>=l*60&&(d+=a*(Math.floor((d-l*60)/c)+1));let u=Math.floor(d/(l*60));d-=u*(l*60);let Z=Math.floor(d/l);d-=Z*l;let m=d;u+=o*10;let p=0;return n&&(p=m%2,m=Math.floor(m/2)),[s,u,Z,m,p]},Wt=(e,t,n)=>{let l=n>30,a=Vn(e,n,l);return a+=t,J(a,n,l)},Tl=e=>({h:e[0],m:e[1],s:e[2],f:e[3],field:e[4]}),Hl=(e,t)=>(Ul(e,t),M(tcFromMessage,!0)),Ul=(e,t)=>{let n="";ze.isApple()?n=e:n=e.toISOString();let a=n.split("T")[1].split(":"),c=parseInt(a[0]),i=parseInt(a[1]),r=a[2].split("."),d=parseInt(r[0]),s=parseInt(r[1].substring(0,3));if(t>59){let o=Math.round((s/1e3+d+i*60+c*60*60)*t);return J(o,t,!0)}else{let o=Math.round((s/1e3+d+i*60+c*60*60)*t);return J(o,t,!1)}},wl=e=>(e&e-1)==0;class ar{constructor(t){g(this,"adTexture",null);g(this,"place2AdTexture",{});g(this,"place2ad",{});g(this,"ad2place",{});g(this,"currentAds2BoundingRect",[]);g(this,"lastTimeReportedIncomingTC",0);g(this,"autoAddIndex",null);g(this,"digitImg",{});g(this,"sourceFPS",6e4/1001);g(this,"metadataArr",[]);g(this,"metadataMap",{});g(this,"videoStarted",!1);g(this,"advertisementMap",{});g(this,"ad2Url",{});g(this,"videoCopier",null);g(this,"autoAddIndex",null);if(t.renderTimecodes)for(let n=0;n<10;++n){let l=n+".1",a=n+".2";this.digitImg[l]=this.createDigitImg(l),this.digitImg[a]=this.createDigitImg(a)}this.options=Object.assign({adLoopTime:5e3,isAdLoop:!1},t||{})}onUserClickOnCanvas(t){console.log("fix me")}texUnitForGenericAd(){return 0}texUnitForAdInPlace(t){let n=Object.keys(this.place2ad);for(let l=0;l<n.length;++l)if(t==n[l])return l+1;return 0}texUnitForPlaceHolder(t){let n=Object.keys(this.place2ad);for(let l=0;l<n.length;++l){let a=n[l];if(t.name.indexOf(a)>=0)return l}return 0}adNameForPlaceHolder(t){let n=Object.keys(this.place2ad);for(let l=0;l<n.length;++l){let a=n[l];if(t.name.indexOf(a)>=0&&this.place2AdTexture&&this.place2AdTexture[a]&&this.place2AdTexture[a].name)return this.place2AdTexture[a].name}return this.lastAdName}texUnitBaseForAlpha(){return 1+Object.keys(this.place2ad).length}initGL(){const t=this.options.maskMP4?[O,D]:[be,Sl];this.program=kl(this.ctx,t),this.ctx.useProgram(this.program),this.counter=0,this.cleanGL()}cleanGL(){this.ctx.clearColor(0,0,0,0),this.ctx.clear(this.ctx.COLOR_BUFFER_BIT)}generateTexture(t,n,l,a,c,i,r,d=!1){r?this.ctx.pixelStorei(this.ctx.UNPACK_ALIGNMENT,1):this.ctx.pixelStorei(this.ctx.UNPACK_ALIGNMENT,4),this.ctx.pixelStorei(this.ctx.UNPACK_FLIP_Y_WEBGL,d);const s=this.ctx.createTexture();this.ctx.activeTexture(this.ctx.TEXTURE0+n),this.ctx.bindTexture(this.ctx.TEXTURE_2D,s);try{c&&i?this.ctx.texImage2D(this.ctx.TEXTURE_2D,0,a??this.ctx.RGBA,c,i,0,a??this.ctx.RGBA,this.ctx.UNSIGNED_BYTE,t):this.ctx.texImage2D(this.ctx.TEXTURE_2D,0,a??this.ctx.RGBA,this.ctx.RGBA,this.ctx.UNSIGNED_BYTE,t)}catch(u){return console.error(u),null}if(this.webGLVersion==1){let u=c||t.width,Z=i||t.height;u&&wl(u)&&Z&&wl(Z)?this.ctx.generateMipmap(this.ctx.TEXTURE_2D):(this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_S,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_T,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_MIN_FILTER,this.ctx.LINEAR))}else this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_S,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_T,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_MIN_FILTER,this.ctx.LINEAR),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_MAG_FILTER,this.ctx.LINEAR);let o=this.ctx.getUniformLocation(this.program,l);return o&&this.ctx.uniform1i(o,n),s}_nextAdvertisement(){this.autoAddIndex=setTimeout(()=>{const t=Object.keys(this.advertisementMap);t.length&&(this.selectAd(t[Math.floor(Math.random()*t.length)]),this._nextAdvertisement())},this.options.adLoopTime)}makeSureAdPerPlace(){if(this.place2ad){let t=Object.keys(this.place2ad);for(let n=0;n<t.length;++n){let l=t[n];!this.place2AdTexture[l]&&this.place2ad[l].length>0&&(console.log("MakeSureAdPerPlace: Set default image "+this.place2ad[l][0]+" for place "+l),this.selectAd("#"+this.place2ad[l][0]))}}}selectAd(t){console.log("composer::SelectAd: selected ad is "+t);let n=this.advertisementMap[t];if(!n)console.error("SelectAd: Failed to find image '"+t+"'");else if(this.ad2place&&this.ad2place[t]){let l=this.ad2place[t];console.log("composer::SelectAd: The selected ad should be in place "+l);let a=this.texUnitForAdInPlace(l),c="ad"+(a-1);this.place2AdTexture[l]&&this.ctx.deleteTexture(this.place2AdTexture[l].tex),this.place2AdTexture[l]={tex:this.generateTexture(n,a,c),texUnitId:a,texName:c,name:t}}else this.adTexture&&this.ctx.deleteTexture(this.adTexture),this.adTexture=this.generateTexture(n,this.texUnitForGenericAd(),"ad0"),this.lastAd=n,this.lastAdName=t}onMetaData(t){this.metadataMap[t.timecode]=t,this.metadataArr.push(t.timecode)}renderFrame(){let t=this.ctx.getAttribLocation(this.program,"a_position"),n=this.ctx.getAttribLocation(this.program,"a_uv"),l=this.ctx.getUniformLocation(this.program,"u_resolution");this.ctx.uniform2f(l,this.ctx.canvas.width,this.ctx.canvas.height),l=this.ctx.getUniformLocation(this.program,"u_resolution2"),this.ctx.uniform2f(l,this.ctx.canvas.width,this.ctx.canvas.height);let a=this.ctx.createBuffer();this.ctx.enableVertexAttribArray(t),this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,a);let c=2,i=this.ctx.FLOAT,r=!1,d=0,s=0;this.ctx.vertexAttribPointer(t,c,i,r,d,s);let o=this.ctx.createBuffer();this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,o),this.ctx.bufferData(this.ctx.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),this.ctx.STATIC_DRAW),this.ctx.enableVertexAttribArray(n),c=2,i=this.ctx.FLOAT,r=!1,d=0,s=0,this.ctx.vertexAttribPointer(n,c,i,r,d,s),this.ctx.viewport(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.clearColor(0,0,0,0),this.ctx.clear(this.ctx.COLOR_BUFFER_BIT|this.ctx.DEPTH_BUFFER_BIT),this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,a),this.setRectangle(0,0,this.canvas.width,this.canvas.height);let u=this.ctx.TRIANGLES;this.ctx.drawArrays(u,s,6)}setRectangle(t,n,l,a){let c=t,i=t+l,r=n,d=n+a;this.ctx.bufferData(this.ctx.ARRAY_BUFFER,new Float32Array([c,r,i,r,c,d,c,d,i,r,i,d]),this.ctx.STATIC_DRAW)}renderAugmentation(t){this.canvas.width=1280,this.canvas.height=720,this.options.maskMP4?this.renderAugmentationMP4(t):this.renderAugmentationOld(t)}renderAugmentationMP4(t){let n=Kl(t),l=Wt(n,1,this.sourceFPS),a=Wt(n,2,this.sourceFPS),c=M(l),i=M(a);this.videoStarted=!0,performance.now();let r=null,d=[];if(this.metadataMap[t]){r=this.metadataMap[t],this.metadataMap[c]&&d.push({nextVideo:this.metadataMap[c],nextTimeCode:c}),this.metadataMap[i]&&d.push({nextVideo:this.metadataMap[i],nextTimeCode:i});const Z=this.metadataArr.indexOf(t);Z>-5&&this.metadataArr.splice(0,Z-4).forEach(m=>{delete this.metadataMap[m]})}else this.counter++,this.counter>60&&(this.counter=0,console.error("Missing meta data at time code "+t));let s=[],o=0;if(this.currentAds2BoundingRect=[],r!=null&&r.alphaMask){let Z=this.texUnitBaseForAlpha();const m=this.generateTexture(r.alphaMask,Z,"u_alphaMask",this.ctx.RGBA,null,null,!1,!0);s.push(m);for(const p in r.placeholders){const h=r.placeholders[p];let R="hasLogo"+o,y=this.ctx.getUniformLocation(this.program,R);this.ctx.uniform1i(y,1);let V="adForLogo"+o,L=this.ctx.getUniformLocation(this.program,V);this.ctx.uniform1i(L,this.texUnitForPlaceHolder(h));let G="u_matrix"+o,W=this.ctx.getUniformLocation(this.program,G);this.ctx.uniformMatrix3fv(W,!1,h.tranform);let X={l:-1,t:-1,r:-1,b:-1};for(let b of h.corners)(b.x<X.l||X.l==-1)&&(X.l=b.x),(b.x>X.r||X.r==-1)&&(X.r=b.x),(b.y<X.t||X.t==-1)&&(X.t=b.y),(b.y>X.b||X.b==-1)&&(X.b=b.y);X.l/=r.canvasSize.width,X.r/=r.canvasSize.width,X.t/=r.canvasSize.height,X.b/=r.canvasSize.height,this.currentAds2BoundingRect.push({name:this.adNameForPlaceHolder(h),rect:X}),o++}}const u=4;for(;o<u;++o){let Z="hasLogo"+o,m=this.ctx.getUniformLocation(this.program,Z);this.ctx.uniform1i(m,0)}this.renderTimecodes(t),this.renderFrame();for(const Z of s)this.ctx.deleteTexture(Z)}renderAugmentationOld(t){let n=Kl(t),l=Wt(n,1,this.sourceFPS),a=Wt(n,2,this.sourceFPS),c=M(l),i=M(a);this.videoStarted=!0,performance.now();let r=null,d=[];if(this.metadataMap[t]){r=this.metadataMap[t],this.metadataMap[c]&&d.push({nextVideo:this.metadataMap[c],nextTimeCode:c}),this.metadataMap[i]&&d.push({nextVideo:this.metadataMap[i],nextTimeCode:i});const Z=this.metadataArr.indexOf(t);Z>-5&&this.metadataArr.splice(0,Z-4).forEach(m=>{delete this.metadataMap[m]})}else this.counter++,this.counter>60&&(this.counter=0,console.error("Missing meta data at time code "+t));let s=[],o=0;this.currentAds2BoundingRect=[];for(const Z in r==null?void 0:r.placeholders){const m=r.placeholders[Z];if(!m.alphaAsUint8Array)continue;let p="alpha"+o,h=this.texUnitBaseForAlpha()+o;if(m.alphaTex=this.generateTexture(m.alphaAsUint8Array,h,p,this.ctx.ALPHA,m.width,m.height,!0),m.alphaAsUint8Array=null,!m.alphaTex){console.error("Failed to create alpha texture");continue}s.push(m.alphaTex);let R="hasLogo"+o,y=this.ctx.getUniformLocation(this.program,R);this.ctx.uniform1i(y,1);let V="adForLogo"+o,L=this.ctx.getUniformLocation(this.program,V),G=!1;m.name.indexOf("blur")>=0?(this.ctx.uniform1i(L,99),G=!0):this.ctx.uniform1i(L,this.texUnitForPlaceHolder(m));let W="u_alpha"+o+"TopLeft",X=this.ctx.getUniformLocation(this.program,W);this.ctx.uniform2fv(X,[m.maskX,m.maskY]);let b="u_alpha"+o+"Size",f=this.ctx.getUniformLocation(this.program,b);this.ctx.uniform2fv(f,[m.width,m.height]);let v="u_matrix"+o,C=this.ctx.getUniformLocation(this.program,v);if(this.ctx.uniformMatrix3fv(C,!1,m.tranform),!G){let Y={l:-1,t:-1,r:-1,b:-1};for(let F of m.corners)(F.x<Y.l||Y.l==-1)&&(Y.l=F.x),(F.x>Y.r||Y.r==-1)&&(Y.r=F.x),(F.y<Y.t||Y.t==-1)&&(Y.t=F.y),(F.y>Y.b||Y.b==-1)&&(Y.b=F.y);Y.l/=r.canvasSize.width,Y.r/=r.canvasSize.width,Y.t/=r.canvasSize.height,Y.b/=r.canvasSize.height,this.currentAds2BoundingRect.push({name:this.adNameForPlaceHolder(m),rect:Y})}o++}const u=4;for(;o<u;++o){let Z="hasLogo"+o,m=this.ctx.getUniformLocation(this.program,Z);this.ctx.uniform1i(m,0)}this.renderTimecodes(t),this.renderFrame();for(const Z of s)this.ctx.deleteTexture(Z)}renderTimecodes(t){if(this.options.renderTimecodes){let n=t.split(":")[3],l=n.indexOf(".")>=0?2:1,c=parseInt(n.split(".")[0])%10+"."+l,i=this.texUnitBaseForAlpha()+5;console.log(c,this.digitImg,i,"digitTex");let r=this.generateTexture(this.digitImg[c],i,"digitTex");texturesForThisFrame.push(r);let s=this.ctx.getUniformLocation(this.program,"hasDigit");this.ctx.uniform1i(s,1);let u=this.ctx.getUniformLocation(this.program,"u_digitTopLeft");this.ctx.uniform2fv(u,[0,0]);let m=this.ctx.getUniformLocation(this.program,"u_digitSize");this.ctx.uniform2fv(m,[200,200])}else{let l=this.ctx.getUniformLocation(this.program,"hasDigit");this.ctx.uniform1i(l,0)}}toggleFullscreen(){(this.requestFullscreen||this.webkitRequestFullscreen).call(this).catch(t=>{console.error(t)})}}class cr extends ar{constructor(t,n){super(t),this.canvas=document.createElement("canvas"),this.ctx=this.canvas.getContext("webgl",{premultipliedAlpha:!1,antialias:!1});let l=n.getElementsByTagName("video")[0];this.canvas.style.top=0,this.canvas.style.left=0,this.canvas.style.width="100%",this.canvas.style.zIndex=1e5,this.canvas.width=n.clientWidth,this.canvas.height=n.clientHeight,this.canvas.style.position="absolute",this.canvas.width=1280,this.canvas.height=720;let a=l.nextSibling;a?n.insertBefore(this.canvas,a):n.appendChild(this.canvas),this.canvas.style["pointer-events"]="none",l.addEventListener("click",c=>{this.onUserClickOnCanvas(c)}),this.canvas.addEventListener("dblclick",this.ToggleFullscreen),this.initGL()}initGL(){const t=this.options.maskMP4?[O,D]:[be,Sl];this.program=kl(this.ctx,t),this.ctx.useProgram(this.program),this.counter=0,this.cleanGL()}createDigitImg(t){let n=document.createElement("canvas");n.width=50,n.height=50;let l=n.getContext("2d");l.fillStyle="black",l.fillRect(0,0,n.width,n.height),l.font="30px Arial",l.fillStyle="white",l.fillText(t,10,35);let a=n.toDataURL(),c=document.createElement("img");return c.src=a,c}cleanGL(){super.cleanGL()}getCanvas(){return this.canvas}addAdvertisement(t,n,l=null){if(t.indexOf(".json")>-1){fetch(n).then(async c=>{this.place2ad=await c.json(),this.ad2place={};let i=Object.keys(this.place2ad);for(let r=0;r<i.length;++r){let d=i[r];if(d=="urls"){this.ad2Url=this.place2ad[d],delete this.place2ad[d];continue}let s=this.place2ad[d];for(let o=0;o<s.length;++o){let u=s[o];this.ad2place["#"+u]=d}}Object.keys(this.place2ad).length>0&&(console.log("composer::AddAdvertisement: place-to-ads mapping: ",this.place2ad),console.log("composer::AddAdvertisement: ads-to-place mapping: ",this.ad2place),setTimeout(()=>{this.makeSureAdPerPlace()},3e3))}),l&&l();return}const a=new Image;return a.crossOrigin="Anonymous",a.onload=()=>{let c=Object.keys(this.advertisementMap).length===0;this.advertisementMap[t]=a,console.log("composer::AddAdvertisement",t),c&&(this.selectAd(t),this.options.isAdLoop&&(clearTimeout(this.autoAddIndex),this._nextAdvertisement())),l&&l()},a.onerror=()=>{alert(`( Security ) We cant reach ${n} .`)},a.src=n,a}}const Bl="dmFyIER0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgTnQ9KHYsXyxDKT0+XyBpbiB2P0R0KHYsXyx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Q30pOnZbX109Qzt2YXIgcD0odixfLEMpPT5OdCh2LHR5cGVvZiBfIT0ic3ltYm9sIj9fKyIiOl8sQyk7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IHY9YApwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Cgp1bmlmb3JtIHZlYzIgdV9yZXNvbHV0aW9uOwphdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOwphdHRyaWJ1dGUgdmVjMiBhX3V2OwoKdmFyeWluZyB2ZWMyIHZfdXY7Cgp2b2lkIG1haW4oKSB7CiAgdl91diA9IGFfdXY7CgogIC8vIGNvbnZlcnQgdGhlIHJlY3RhbmdsZSBmcm9tIHBpeGVscyB0byAwLjAgdG8gMS4wCiAgdmVjMiBjbGlwU3BhY2UgPSAyLjAgKiAoYV9wb3NpdGlvbiAvIHVfcmVzb2x1dGlvbikgLSAxLjA7CgogIGdsX1Bvc2l0aW9uID0gdmVjNChjbGlwU3BhY2UsIDAuMCwgMS4wKTsKfQpgLF89YApwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Cgp1bmlmb3JtIHZlYzIgdV9yZXNvbHV0aW9uOwp1bmlmb3JtIHNhbXBsZXIyRCBhZDA7CnVuaWZvcm0gc2FtcGxlcjJEIGFkMTsKdW5pZm9ybSBzYW1wbGVyMkQgdV9hbHBoYU1hc2s7Cgp2YXJ5aW5nIHZlYzIgdl91djsKCnVuaWZvcm0gaW50IGhhc0xvZ28wOwp1bmlmb3JtIG1hdDMgdV9tYXRyaXgwOwoKdW5pZm9ybSBpbnQgaGFzTG9nbzE7CnVuaWZvcm0gbWF0MyB1X21hdHJpeDE7Ly90aGUgcmV2ZXJzZSBob21vZ3JhcGh5Cgpjb25zdCBmbG9hdCBEaXJlY3Rpb25zID0gMTYuMDsgLy8gQkxVUiBESVJFQ1RJT05TIChEZWZhdWx0IDE2LjAgLSBNb3JlIGlzIGJldHRlciBidXQgc2xvd2VyKQpjb25zdCBmbG9hdCBRdWFsaXR5QWQgPSAzLjA7IC8vIEJMVVIgUVVBTElUWSAoRGVmYXVsdCAzLjAgLSBNb3JlIGlzIGJldHRlciBidXQgc2xvd2VyKQpjb25zdCBmbG9hdCBRdWFsaXR5QWxwaGEgPSA1LjA7IC8vIEJMVVIgUVVBTElUWSAoRGVmYXVsdCAzLjAgLSBNb3JlIGlzIGJldHRlciBidXQgc2xvd2VyKQpjb25zdCBmbG9hdCBCbHVyUmFkaXVzQWQgPSAxMC4wOwpjb25zdCBmbG9hdCBCbHVyUmFkaXVzQWxwaGEgPSAxMC4wOwpjb25zdCBmbG9hdCBQaSA9IDYuMjgzMTg1MzA3MTg7IC8vIFBpKjIKCnZlYzQgQmx1ckFkKHNhbXBsZXIyRCBhZFRleHR1cmUsIHZlYzIgYWRUZXhDb29yZCkgewogIHZlYzIgUmFkaXVzID0gQmx1clJhZGl1c0FkL3VfcmVzb2x1dGlvbi54eTsKICB2ZWM0IHJlcyA9IHRleHR1cmUyRChhZFRleHR1cmUsIGFkVGV4Q29vcmQpOwogICAKICBmb3IoIGZsb2F0IGQ9MC4wOyBkPFBpOyBkKz1QaS9EaXJlY3Rpb25zKSB7CgkJZm9yKGZsb2F0IGk9MS4wL1F1YWxpdHlBZDsgaTw9MS4wOyBpKz0xLjAvUXVhbGl0eUFkKSB7CgkJCXJlcyArPSB0ZXh0dXJlMkQoYWRUZXh0dXJlLCBhZFRleENvb3JkK3ZlYzIoY29zKGQpLHNpbihkKSkqUmFkaXVzKmkpOwogICAgfQogIH0KCiAgcmVzIC89IFF1YWxpdHlBZCAqIERpcmVjdGlvbnMgLSA1LjA7CgogIHJldHVybiByZXM7Cn0KCnZvaWQgQmxlbmRXaXRoTG9nbyhzYW1wbGVyMkQgYWQsIG1hdDMgbWF0cml4KSB7CiAgdmVjMiBjdXJDb29yZCA9IGdsX0ZyYWdDb29yZC54eTsKICBjdXJDb29yZC55ID0gdV9yZXNvbHV0aW9uWzFdIC0gY3VyQ29vcmQueTsKCiAgdmVjMiB0ZXhDb29yZDsKICB0ZXhDb29yZC54ID0gKG1hdHJpeFswXVswXSpjdXJDb29yZC54ICsgbWF0cml4WzBdWzFdKmN1ckNvb3JkLnkgKyBtYXRyaXhbMF1bMl0pIC8gKG1hdHJpeFsyXVswXSpjdXJDb29yZC54ICsgbWF0cml4WzJdWzFdKmN1ckNvb3JkLnkgKyAxLjApOwogIHRleENvb3JkLnkgPSAobWF0cml4WzFdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMV1bMV0qY3VyQ29vcmQueSArIG1hdHJpeFsxXVsyXSkgLyAobWF0cml4WzJdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMl1bMV0qY3VyQ29vcmQueSArIDEuMCk7CiAgdGV4Q29vcmQgLz0gdV9yZXNvbHV0aW9uOwoKICB2ZWM0IG1hc2tBbHBoYSA9IHRleHR1cmUyRCh1X2FscGhhTWFzaywgdl91dik7CiAgdmVjNCBhZENvbG9yID0gQmx1ckFkKGFkLCB0ZXhDb29yZCk7CiAgZmxvYXQgYWRBbHBoYSA9IHRleHR1cmUyRChhZDAsIHRleENvb3JkKS5hOwoKICBmbG9hdCBmaW5hbEFscGhhID0gbWFza0FscGhhLnI7CiAgaWYgKGZpbmFsQWxwaGEgPCAwLjMpIAogICAgZmluYWxBbHBoYSA9IDAuMDsKICBmaW5hbEFscGhhICo9IGFkQ29sb3IuYTsKICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGFkQ29sb3IucmdiLCBmaW5hbEFscGhhKTsKICBnbF9GcmFnQ29sb3IucmdiICo9IGZpbmFsQWxwaGE7Cn0KCnZvaWQgbWFpbigpIHsgCiAgaWYgKGhhc0xvZ28wID09IDEpIHsKICAgIEJsZW5kV2l0aExvZ28oYWQwLCB1X21hdHJpeDApOwogIH0gCiAgaWYgKGhhc0xvZ28xID09IDEpIHsKICAgIEJsZW5kV2l0aExvZ28oYWQxLCAgdV9tYXRyaXgxKTsKICB9IAp9CmAsQz1gCgovL0hpZ2ggcHJlY2lzaW9uIG1vZGUKcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwoKLy8gYW4gYXR0cmlidXRlIGlzIGFuIGlucHV0IChpbikgdG8gYSB2ZXJ0ZXggc2hhZGVyLgovLyBJdCB3aWxsIHJlY2VpdmUgdmVydGV4IGRhdGEgZnJvbSB0aGUgYnVmZmVyCmF0dHJpYnV0ZSB2ZWMyIGFfcG9zaXRpb247CmF0dHJpYnV0ZSB2ZWMyIGFfdXY7CnVuaWZvcm0gdmVjMiB1X3Jlc29sdXRpb247CnZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwoKCi8vIE1haW4gdmVydGV4IHNoYWRlcgp2b2lkIG1haW4oKSB7CiAgLy8gY29udmVydCB0aGUgcmVjdGFuZ2xlIGZyb20gcGl4ZWxzIHRvIDAuMCB0byAxLjAKICAgdmVjMiB6ZXJvVG9PbmUgPSBhX3Bvc2l0aW9uIC8gdV9yZXNvbHV0aW9uOwoKICAgLy8gY29udmVydCBmcm9tIDAtPjEgdG8gMC0+MgogICB2ZWMyIHplcm9Ub1R3byA9IHplcm9Ub09uZSAqIDIuMDsKCiAgIC8vIGNvbnZlcnQgZnJvbSAwLT4yIHRvIC0xLT4rMSAoY2xpcHNwYWNlKQogICB2ZWMyIGNsaXBTcGFjZSA9IHplcm9Ub1R3byAtIDEuMDsKCiAgIGdsX1Bvc2l0aW9uID0gdmVjNChjbGlwU3BhY2UgKiB2ZWMyKDEsIC0xKSwgMCwgMSk7CgogICAvLyBwYXNzIHRoZSB0ZXhDb29yZCB0byB0aGUgZnJhZ21lbnQgc2hhZGVyCiAgIC8vIFRoZSBHUFUgd2lsbCBpbnRlcnBvbGF0ZSB0aGlzIHZhbHVlIGJldHdlZW4gcG9pbnRzLgogICB2X3RleENvb3JkID0gYV91djsKfQpgLHo9YAoKLy9IaWdoIHByZWNpc2lvbiBtb2RlCnByZWNpc2lvbiBoaWdocCBmbG9hdDsKCi8vVGhlIHRleHR1cmVzCnVuaWZvcm0gc2FtcGxlcjJEIHVfaW1hZ2U7Ly92aWRlbyBmcmFtZSdzIHRleHR1cmUyRAp1bmlmb3JtIHNhbXBsZXIyRCBhZDA7Ly90aGUgYWQgdGV4dHVyZTJECnVuaWZvcm0gc2FtcGxlcjJEIGFkMTsvL3RoZSBhZCB0ZXh0dXJlMkQKdW5pZm9ybSBzYW1wbGVyMkQgYWQyOy8vdGhlIGFkIHRleHR1cmUyRAp1bmlmb3JtIHNhbXBsZXIyRCBhZDM7Ly90aGUgYWQgdGV4dHVyZTJECgp1bmlmb3JtIHZlYzIgdV9yZXNvbHV0aW9uMjsvL3Jlc29sdXRpb24gb2YgdGhlIGNhbnZhcwoKLy92X3RleENvb3JkIGZyb20gdGhlIHZlcnRleCBzaGFkZXIKdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CgovL0xvZ29zJyBzdGFmZgp1bmlmb3JtIGludCBoYXNMb2dvMDsvL2hhcyBsb2dvID8KdW5pZm9ybSBpbnQgYWRGb3JMb2dvMDsKdW5pZm9ybSBzYW1wbGVyMkQgYWxwaGEwOy8vdGhlIGFscGhhJ3MgbWF0ZQp1bmlmb3JtIG1hdDMgdV9tYXRyaXgwOy8vdGhlIHJldmVyc2UgaG9tb2dyYXBoeQp1bmlmb3JtIHZlYzIgdV9hbHBoYTBUb3BMZWZ0Oy8vdGhlIGFscGhhIG1hdGUncyB0b3AtbGVmdAp1bmlmb3JtIHZlYzIgdV9hbHBoYTBTaXplOy8vdGhlIGFscGhhIG1hdGUncyBzaXplCgp1bmlmb3JtIGludCBoYXNMb2dvMTsvL2hhcyBsb2dvID8KdW5pZm9ybSBpbnQgYWRGb3JMb2dvMTsKdW5pZm9ybSBzYW1wbGVyMkQgYWxwaGExOy8vdGhlIGFscGhhJ3MgbWF0ZQp1bmlmb3JtIG1hdDMgdV9tYXRyaXgxOy8vdGhlIHJldmVyc2UgaG9tb2dyYXBoeQp1bmlmb3JtIHZlYzIgdV9hbHBoYTFUb3BMZWZ0Oy8vdGhlIGFscGhhIG1hdGUncyB0b3AtbGVmdAp1bmlmb3JtIHZlYzIgdV9hbHBoYTFTaXplOy8vdGhlIGFscGhhIG1hdGUncyBzaXplCgp1bmlmb3JtIGludCBoYXNMb2dvMjsvL2hhcyBsb2dvID8KdW5pZm9ybSBpbnQgYWRGb3JMb2dvMjsKdW5pZm9ybSBzYW1wbGVyMkQgYWxwaGEyOy8vdGhlIGFscGhhJ3MgbWF0ZQp1bmlmb3JtIG1hdDMgdV9tYXRyaXgyOy8vdGhlIHJldmVyc2UgaG9tb2dyYXBoeQp1bmlmb3JtIHZlYzIgdV9hbHBoYTJUb3BMZWZ0Oy8vdGhlIGFscGhhIG1hdGUncyB0b3AtbGVmdAp1bmlmb3JtIHZlYzIgdV9hbHBoYTJTaXplOy8vdGhlIGFscGhhIG1hdGUncyBzaXplCgp1bmlmb3JtIGludCBoYXNMb2dvMzsvL2hhcyBsb2dvID8KdW5pZm9ybSBpbnQgYWRGb3JMb2dvMzsKdW5pZm9ybSBzYW1wbGVyMkQgYWxwaGEzOy8vdGhlIGFscGhhJ3MgbWF0ZQp1bmlmb3JtIG1hdDMgdV9tYXRyaXgzOy8vdGhlIHJldmVyc2UgaG9tb2dyYXBoeQp1bmlmb3JtIHZlYzIgdV9hbHBoYTNUb3BMZWZ0Oy8vdGhlIGFscGhhIG1hdGUncyB0b3AtbGVmdAp1bmlmb3JtIHZlYzIgdV9hbHBoYTNTaXplOy8vdGhlIGFscGhhIG1hdGUncyBzaXplCgpjb25zdCBmbG9hdCBEaXJlY3Rpb25zID0gMTYuMDsgLy8gQkxVUiBESVJFQ1RJT05TIChEZWZhdWx0IDE2LjAgLSBNb3JlIGlzIGJldHRlciBidXQgc2xvd2VyKQpjb25zdCBmbG9hdCBRdWFsaXR5QWQgPSAzLjA7IC8vIEJMVVIgUVVBTElUWSAoRGVmYXVsdCAzLjAgLSBNb3JlIGlzIGJldHRlciBidXQgc2xvd2VyKQpjb25zdCBmbG9hdCBRdWFsaXR5QWxwaGEgPSA1LjA7IC8vIEJMVVIgUVVBTElUWSAoRGVmYXVsdCAzLjAgLSBNb3JlIGlzIGJldHRlciBidXQgc2xvd2VyKQpjb25zdCBmbG9hdCBCbHVyUmFkaXVzQWQgPSAxMC4wOwpjb25zdCBmbG9hdCBCbHVyUmFkaXVzQWxwaGEgPSAxMC4wOwpjb25zdCBmbG9hdCBQaSA9IDYuMjgzMTg1MzA3MTg7IC8vIFBpKjIKCmZsb2F0IEJsdXJBbHBoYShzYW1wbGVyMkQgYWxwaGFUZXh0dXJlLCB2ZWMyIGFscGhhQ29vcmQpIHsKCWZsb2F0IHJlcyA9IHRleHR1cmUyRChhbHBoYVRleHR1cmUsIGFscGhhQ29vcmQpLmE7CiAgdmVjMiBSYWRpdXMgPSBCbHVyUmFkaXVzQWxwaGEvdV9yZXNvbHV0aW9uMi54eTsKICAgCiAgZm9yKCBmbG9hdCBkPTAuMDsgZDxQaTsgZCs9UGkvRGlyZWN0aW9ucykgewoJCWZvcihmbG9hdCBpPTEuMC9RdWFsaXR5QWxwaGE7IGk8PTEuMDsgaSs9MS4wL1F1YWxpdHlBbHBoYSkgewoJCQlyZXMgKz0gdGV4dHVyZTJEKGFscGhhVGV4dHVyZSwgYWxwaGFDb29yZCt2ZWMyKGNvcyhkKSxzaW4oZCkpKlJhZGl1cyppKS5hOwogICAgfQogIH0KCiAgcmVzIC89IFF1YWxpdHlBbHBoYSAqIERpcmVjdGlvbnMgLSAxNS4wOwoKICByZXR1cm4gcmVzOwp9Cgp2ZWM0IEJsdXJBZChzYW1wbGVyMkQgYWRUZXh0dXJlLCB2ZWMyIGFkVGV4Q29vcmQpIHsKICB2ZWMyIFJhZGl1cyA9IEJsdXJSYWRpdXNBZC91X3Jlc29sdXRpb24yLnh5OwogIHZlYzQgcmVzID0gdGV4dHVyZTJEKGFkVGV4dHVyZSwgYWRUZXhDb29yZCk7CiAgIAogIGZvciggZmxvYXQgZD0wLjA7IGQ8UGk7IGQrPVBpL0RpcmVjdGlvbnMpIHsKCQlmb3IoZmxvYXQgaT0xLjAvUXVhbGl0eUFkOyBpPD0xLjA7IGkrPTEuMC9RdWFsaXR5QWQpIHsKCQkJcmVzICs9IHRleHR1cmUyRChhZFRleHR1cmUsIGFkVGV4Q29vcmQrdmVjMihjb3MoZCksc2luKGQpKSpSYWRpdXMqaSk7CiAgICB9CiAgfQoKICByZXMgLz0gUXVhbGl0eUFkICogRGlyZWN0aW9ucyAtIDUuMDsKCiAgcmV0dXJuIHJlczsKfQoKYm9vbCBCbGVuZFdpdGhMb2dvKGludCBhZFVuaXQsIHNhbXBsZXIyRCBhbHBoYVRleHR1cmUsIG1hdDMgbWF0cml4LCB2ZWMyIGN1ckNvb3JkLCB2ZWMyIGFscGhhVG9wTGVmdCwgdmVjMiBhbHBoYVNpemUsIHZlYzQgdmlkZW9JbWFnZVBpeCkgewoKICB2ZWMyIHRleENvb3JkOwogIHRleENvb3JkLnggPSAobWF0cml4WzBdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMF1bMV0qY3VyQ29vcmQueSArIG1hdHJpeFswXVsyXSkgLyAobWF0cml4WzJdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMl1bMV0qY3VyQ29vcmQueSArIDEuMCk7CiAgdGV4Q29vcmQueSA9IChtYXRyaXhbMV1bMF0qY3VyQ29vcmQueCArIG1hdHJpeFsxXVsxXSpjdXJDb29yZC55ICsgbWF0cml4WzFdWzJdKSAvIChtYXRyaXhbMl1bMF0qY3VyQ29vcmQueCArIG1hdHJpeFsyXVsxXSpjdXJDb29yZC55ICsgMS4wKTsKICB0ZXhDb29yZCAvPSB1X3Jlc29sdXRpb24yOwoKICAvL2lmIHdlJ3JlIGluIHRoZSBib3VuZGluZyByZWN0IG9mIHRoZSBsb2dvCiAgaWYgKHRleENvb3JkLnggPj0gMC4wICYmIHRleENvb3JkLnkgPj0gMC4wICYmIHRleENvb3JkLnggPD0gMS4wICYmIHRleENvb3JkLnkgPD0gMS4wKSB7CgkJZmxvYXQgbWFza0FscGhhID0gMS4wOwogICAgdmVjMiBhbHBoYUNvb3JkID0gKGN1ckNvb3JkIC0gYWxwaGFUb3BMZWZ0KS9hbHBoYVNpemU7Ly9nZXQgdGhlIGNvb3JkaW5hdGUgb24gdGhlIGFscGhhIG1hdGUKICAgIGlmIChhbHBoYUNvb3JkLnggPj0gMC4wICYmIGFscGhhQ29vcmQueSA+PSAwLjAgJiYgYWxwaGFDb29yZC54IDw9IDEuMCAmJiBhbHBoYUNvb3JkLnkgPD0gMS4wKSB7CiAgICAgIC8vIG1hc2tBbHBoYSA9IEJsdXJBbHBoYShhbHBoYVRleHR1cmUsIGFscGhhQ29vcmQpOwogICAgICBtYXNrQWxwaGEgPSB0ZXh0dXJlMkQoYWxwaGFUZXh0dXJlLCBhbHBoYUNvb3JkKS5hOwogICAgfQoKICAgIHZlYzQgYWRDb2xvciA9IAogICAgICBhZFVuaXQgPT0gMCA/IEJsdXJBZChhZDAsIHRleENvb3JkKSA6CiAgICAgIGFkVW5pdCA9PSAxID8gQmx1ckFkKGFkMSwgdGV4Q29vcmQpIDoKICAgICAgYWRVbml0ID09IDIgPyBCbHVyQWQoYWQyLCB0ZXhDb29yZCkgOgoJCQkJCSAgICAgICAgICBCbHVyQWQoYWQzLCB0ZXhDb29yZCk7IC8vZ2V0IHRoZSBsb2dvJ3MgdGV4ZWwKCiAgICBmbG9hdCBhZEFscGhhID0gCiAgICAgIGFkVW5pdCA9PSAwID8gdGV4dHVyZTJEKGFkMCwgdGV4Q29vcmQpLmEgOgogICAgICBhZFVuaXQgPT0gMSA/IHRleHR1cmUyRChhZDEsIHRleENvb3JkKS5hIDoKICAgICAgYWRVbml0ID09IDIgPyB0ZXh0dXJlMkQoYWQyLCB0ZXhDb29yZCkuYSA6CiAgICAgICAgICAgICAgICAgICAgdGV4dHVyZTJEKGFkMywgdGV4Q29vcmQpLmE7IC8vZ2V0IHRoZSBsb2dvJ3MgdGV4ZWwgICAgICAgICAgICAgCgogICAgZmxvYXQgZmluYWxBbHBoYSA9IG1hc2tBbHBoYSAqIGFkQ29sb3IuYTsKICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYWRDb2xvci5yZ2IsIGZpbmFsQWxwaGEpOwogICAgZ2xfRnJhZ0NvbG9yLnJnYiAqPSBmaW5hbEFscGhhOwogICAgcmV0dXJuIHRydWU7CiAgfSBlbHNlIHsKICAgIHJldHVybiBmYWxzZTsKICB9Cn0Kdm9pZCBtYWluKCkKewogIC8vY2FsY3VsYXRlIGN1ci1jb29yZCAod2l0aCBwaXhlbHMgdW5pdHMpCiAgdmVjMiBjdXJDb29yZCA9IGdsX0ZyYWdDb29yZC54eTsKICBjdXJDb29yZC55ID0gdV9yZXNvbHV0aW9uMlsxXSAtIGN1ckNvb3JkLnk7CgogIHZlYzQgdmlkZW9JbWFnZVBpeCA9IHRleHR1cmUyRCh1X2ltYWdlLCB2X3RleENvb3JkKTsKCiAgaWYgKGhhc0xvZ28wID09IDEpIHsKICAgIEJsZW5kV2l0aExvZ28oYWRGb3JMb2dvMCxhbHBoYTAsIHVfbWF0cml4MCwgY3VyQ29vcmQsdV9hbHBoYTBUb3BMZWZ0LCB1X2FscGhhMFNpemUsIHZpZGVvSW1hZ2VQaXgpOwogICAgcmV0dXJuOwogIH0gZWxzZSBpZiAoaGFzTG9nbzEgPT0gMSkgewogICAgQmxlbmRXaXRoTG9nbyhhZEZvckxvZ28xLCBhbHBoYTEsIHVfbWF0cml4MSwgY3VyQ29vcmQsdV9hbHBoYTFUb3BMZWZ0LCB1X2FscGhhMVNpemUsIHZpZGVvSW1hZ2VQaXgpOwogICAgcmV0dXJuOwogIH0gZWxzZSBpZiAoaGFzTG9nbzIgPT0gMSkgewogICAgQmxlbmRXaXRoTG9nbyhhZEZvckxvZ28yLCBhbHBoYTIsIHVfbWF0cml4MiwgY3VyQ29vcmQsdV9hbHBoYTJUb3BMZWZ0LCB1X2FscGhhMlNpemUsIHZpZGVvSW1hZ2VQaXgpOwogICAgcmV0dXJuOwogIH0gZWxzZSBpZiAoaGFzTG9nbzMgPT0gMSkgewogICAgQmxlbmRXaXRoTG9nbyhhZEZvckxvZ28zLCBhbHBoYTMsIHVfbWF0cml4MywgY3VyQ29vcmQsdV9hbHBoYTNUb3BMZWZ0LCB1X2FscGhhM1NpemUsIHZpZGVvSW1hZ2VQaXgpOwogICAgcmV0dXJuOwogIH0KfQpgOy8qIEBsaWNlbnNlIHR3Z2wuanMgNS41LjQgQ29weXJpZ2h0IChjKSAyMDE1LCBHcmVnZyBUYXZhcmVzIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCkF2YWlsYWJsZSB2aWEgdGhlIE1JVCBsaWNlbnNlLgpzZWU6IGh0dHA6Ly9naXRodWIuY29tL2dyZWdnbWFuL3R3Z2wuanMgZm9yIGRldGFpbHMgKi9jb25zdCBWPXt9O3tjb25zdCB0PVY7dFs1MTIwXT1JbnQ4QXJyYXksdFs1MTIxXT1VaW50OEFycmF5LHRbNTEyMl09SW50MTZBcnJheSx0WzUxMjNdPVVpbnQxNkFycmF5LHRbNTEyNF09SW50MzJBcnJheSx0WzUxMjVdPVVpbnQzMkFycmF5LHRbNTEyNl09RmxvYXQzMkFycmF5LHRbMzI4MTldPVVpbnQxNkFycmF5LHRbMzI4MjBdPVVpbnQxNkFycmF5LHRbMzM2MzVdPVVpbnQxNkFycmF5LHRbNTEzMV09VWludDE2QXJyYXksdFszMzY0MF09VWludDMyQXJyYXksdFszNTg5OV09VWludDMyQXJyYXksdFszNTkwMl09VWludDMyQXJyYXksdFszNjI2OV09VWludDMyQXJyYXksdFszNDA0Ml09VWludDMyQXJyYXl9ZnVuY3Rpb24gWCguLi50KXtjb25zb2xlLmVycm9yKC4uLnQpfWNvbnN0IGo9ZnVuY3Rpb24oKXtjb25zdCB0PXt9LGU9e307ZnVuY3Rpb24gbyhyKXtjb25zdCBpPXIuY29uc3RydWN0b3IubmFtZTtpZighdFtpXSl7Zm9yKGNvbnN0IHMgaW4gcilpZih0eXBlb2YgcltzXT09Im51bWJlciIpe2NvbnN0IGM9ZVtyW3NdXTtlW3Jbc11dPWM/YCR7Y30gfCAke3N9YDpzfXRbaV09ITB9fXJldHVybiBmdW5jdGlvbihpLHMpe3JldHVybiBvKGkpLGVbc118fCh0eXBlb2Ygcz09Im51bWJlciI/YDB4JHtzLnRvU3RyaW5nKDE2KX1gOnMpfX0oKSxXPTY0MDYsQj02NDA3LE89NjQwOCxZPTY0MDksUT02NDEwLEs9NjQwMixxPTM0MDQxLFo9MzMzMTksSj0zMzMyMCx0dD02NDAzLGV0PTM2MjQ0LHJ0PTM2MjQ4LG90PTM2MjQ5LGF0PXt9O3tjb25zdCB0PWF0O3RbV109e251bUNvbG9yQ29tcG9uZW50czoxfSx0W1ldPXtudW1Db2xvckNvbXBvbmVudHM6MX0sdFtRXT17bnVtQ29sb3JDb21wb25lbnRzOjJ9LHRbQl09e251bUNvbG9yQ29tcG9uZW50czozfSx0W09dPXtudW1Db2xvckNvbXBvbmVudHM6NH0sdFt0dF09e251bUNvbG9yQ29tcG9uZW50czoxfSx0W2V0XT17bnVtQ29sb3JDb21wb25lbnRzOjF9LHRbWl09e251bUNvbG9yQ29tcG9uZW50czoyfSx0W0pdPXtudW1Db2xvckNvbXBvbmVudHM6Mn0sdFtCXT17bnVtQ29sb3JDb21wb25lbnRzOjN9LHRbcnRdPXtudW1Db2xvckNvbXBvbmVudHM6M30sdFtPXT17bnVtQ29sb3JDb21wb25lbnRzOjR9LHRbb3RdPXtudW1Db2xvckNvbXBvbmVudHM6NH0sdFtLXT17bnVtQ29sb3JDb21wb25lbnRzOjF9LHRbcV09e251bUNvbG9yQ29tcG9uZW50czoyfX1jb25zdCBEPVg7ZnVuY3Rpb24gaXQodCl7cmV0dXJuIHR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmdldEVsZW1lbnRCeUlkP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpOm51bGx9Y29uc3Qgc3Q9MzU3MTMsbnQ9MzU3MTQsbHQ9MzU2MzIsY3Q9MzU2MzMsaHQ9MzU5ODEsZHQ9L0VSUk9SOlxzKlxkKzooXGQrKS9naTtmdW5jdGlvbiB1dCh0LGU9IiIsbz0wKXtjb25zdCByPVsuLi5lLm1hdGNoQWxsKGR0KV0saT1uZXcgTWFwKHIubWFwKChzLGMpPT57Y29uc3QgYT1wYXJzZUludChzWzFdKSxuPXJbYysxXSxsPW4/bi5pbmRleDplLmxlbmd0aCxoPWUuc3Vic3RyaW5nKHMuaW5kZXgsbCk7cmV0dXJuW2EtMSxoXX0pKTtyZXR1cm4gdC5zcGxpdChgCmApLm1hcCgocyxjKT0+e2NvbnN0IGE9aS5nZXQoYyk7cmV0dXJuYCR7YysxK299OiAke3N9JHthP2AKCl5eXiAke2F9YDoiIn1gfSkuam9pbihgCmApfWNvbnN0IGs9L15bIFx0XSpcbi87ZnVuY3Rpb24gRyh0KXtsZXQgZT0wO3JldHVybiBrLnRlc3QodCkmJihlPTEsdD10LnJlcGxhY2UoaywiIikpLHtsaW5lT2Zmc2V0OmUsc2hhZGVyU291cmNlOnR9fWZ1bmN0aW9uIG10KHQsZSxvLHIpe2lmKHI9cnx8RCwhdC5nZXRTaGFkZXJQYXJhbWV0ZXIobyxzdCkpe2NvbnN0IHM9dC5nZXRTaGFkZXJJbmZvTG9nKG8pLHtsaW5lT2Zmc2V0OmMsc2hhZGVyU291cmNlOmF9PUcodC5nZXRTaGFkZXJTb3VyY2UobykpLG49YCR7dXQoYSxzLGMpfQpFcnJvciBjb21waWxpbmcgJHtqKHQsZSl9OiAke3N9YDtyZXR1cm4gcihuKSxufXJldHVybiIifWZ1bmN0aW9uIHcodCxlLG8pe2xldCByLGkscztpZih0eXBlb2YgZT09ImZ1bmN0aW9uIiYmKG89ZSxlPXZvaWQgMCksdHlwZW9mIHQ9PSJmdW5jdGlvbiIpbz10LHQ9dm9pZCAwO2Vsc2UgaWYodCYmIUFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGw9dDtvPWwuZXJyb3JDYWxsYmFjayx0PWwuYXR0cmliTG9jYXRpb25zLHI9bC50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLGk9bC50cmFuc2Zvcm1GZWVkYmFja01vZGUscz1sLmNhbGxiYWNrfWNvbnN0IGM9b3x8RCxhPVtdLG49e2Vycm9yQ2FsbGJhY2sobCwuLi5oKXthLnB1c2gobCksYyhsLC4uLmgpfSx0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOnIsdHJhbnNmb3JtRmVlZGJhY2tNb2RlOmksY2FsbGJhY2s6cyxlcnJvcnM6YX07e2xldCBsPXt9O0FycmF5LmlzQXJyYXkodCk/dC5mb3JFYWNoKGZ1bmN0aW9uKGgsdSl7bFtoXT1lP2VbdV06dX0pOmw9dHx8e30sbi5hdHRyaWJMb2NhdGlvbnM9bH1yZXR1cm4gbn1jb25zdCBmdD1bIlZFUlRFWF9TSEFERVIiLCJGUkFHTUVOVF9TSEFERVIiXTtmdW5jdGlvbiB4dCh0LGUpe2lmKGUuaW5kZXhPZigiZnJhZyIpPj0wKXJldHVybiBsdDtpZihlLmluZGV4T2YoInZlcnQiKT49MClyZXR1cm4gY3R9ZnVuY3Rpb24gcHQodCxlLG8pe2NvbnN0IHI9dC5nZXRBdHRhY2hlZFNoYWRlcnMoZSk7Zm9yKGNvbnN0IGkgb2YgcilvLmhhcyhpKSYmdC5kZWxldGVTaGFkZXIoaSk7dC5kZWxldGVQcm9ncmFtKGUpfWNvbnN0IGd0PSh0PTApPT5uZXcgUHJvbWlzZShlPT5zZXRUaW1lb3V0KGUsdCkpO2Z1bmN0aW9uIEF0KHQsZSxvKXtjb25zdCByPXQuY3JlYXRlUHJvZ3JhbSgpLHthdHRyaWJMb2NhdGlvbnM6aSx0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOnMsdHJhbnNmb3JtRmVlZGJhY2tNb2RlOmN9PXcobyk7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDsrK2Epe2xldCBuPWVbYV07aWYodHlwZW9mIG49PSJzdHJpbmciKXtjb25zdCBsPWl0KG4pLGg9bD9sLnRleHQ6bjtsZXQgdT10W2Z0W2FdXTtsJiZsLnR5cGUmJih1PXh0KHQsbC50eXBlKXx8dSksbj10LmNyZWF0ZVNoYWRlcih1KSx0LnNoYWRlclNvdXJjZShuLEcoaCkuc2hhZGVyU291cmNlKSx0LmNvbXBpbGVTaGFkZXIobiksdC5hdHRhY2hTaGFkZXIocixuKX19T2JqZWN0LmVudHJpZXMoaSkuZm9yRWFjaCgoW2Esbl0pPT50LmJpbmRBdHRyaWJMb2NhdGlvbihyLG4sYSkpO3tsZXQgYT1zO2EmJihhLmF0dHJpYnMmJihhPWEuYXR0cmlicyksQXJyYXkuaXNBcnJheShhKXx8KGE9T2JqZWN0LmtleXMoYSkpLHQudHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhyLGEsY3x8aHQpKX1yZXR1cm4gdC5saW5rUHJvZ3JhbShyKSxyfWZ1bmN0aW9uIFR0KHQsZSxvLHIsaSl7Y29uc3Qgcz13KG8scixpKSxjPW5ldyBTZXQoZSksYT1BdCh0LGUscyk7ZnVuY3Rpb24gbihsLGgpe2NvbnN0IHU9THQobCxoLHMuZXJyb3JDYWxsYmFjayk7cmV0dXJuIHUmJnB0KGwsaCxjKSx1fWlmKHMuY2FsbGJhY2spe190KHQsYSkudGhlbigoKT0+e2NvbnN0IGw9bih0LGEpO3MuY2FsbGJhY2sobCxsP3ZvaWQgMDphKX0pO3JldHVybn1yZXR1cm4gbih0LGEpP3ZvaWQgMDphfWFzeW5jIGZ1bmN0aW9uIF90KHQsZSl7Y29uc3Qgbz10LmdldEV4dGVuc2lvbigiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIikscj1vPyhzLGMpPT5zLmdldFByb2dyYW1QYXJhbWV0ZXIoYyxvLkNPTVBMRVRJT05fU1RBVFVTX0tIUik6KCk9PiEwO2xldCBpPTA7ZG8gYXdhaXQgZ3QoaSksaT0xZTMvNjA7d2hpbGUoIXIodCxlKSl9ZnVuY3Rpb24gTHQodCxlLG8pe2lmKG89b3x8RCwhdC5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsbnQpKXtjb25zdCBpPXQuZ2V0UHJvZ3JhbUluZm9Mb2coZSk7byhgRXJyb3IgaW4gcHJvZ3JhbSBsaW5raW5nOiAke2l9YCk7Y29uc3QgYz10LmdldEF0dGFjaGVkU2hhZGVycyhlKS5tYXAoYT0+bXQodCx0LmdldFNoYWRlclBhcmFtZXRlcihhLHQuU0hBREVSX1RZUEUpLGEsbykpO3JldHVybmAke2l9CiR7Yy5maWx0ZXIoYT0+YSkuam9pbihgCmApfWB9fWZ1bmN0aW9uIEV0KHQsZSxvLHIsaSl7cmV0dXJuIFR0KHQsZSxvLHIsaSl9Y29uc3QgUz10PT50LnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLE49IjoiLFU9KHQsZSxvKT0+e2xldCByPSIiO3JldHVybiBBcnJheS5pc0FycmF5KHQpPyhyPVtTKHRbMF0pLFModFsxXSksUyh0WzJdKSxTKHRbM10pXS5qb2luKCI6IiksdFs0XT09MSYmZT09PXZvaWQgMCYmKHIrPSIuMSIpKTpyPSgiMCIrdC5oKS5zbGljZSgtMikrTisoIjAiK3QubSkuc2xpY2UoLTIpK04rKCIwIit0LnMpLnNsaWNlKC0yKStOKygiMCIrdC5mKS5zbGljZSgtMikscn0sJD10PT57bGV0IGU9dC5zcGxpdCgiOiIpO2lmKGUubGVuZ3RoIT00KXJldHVybiBjb25zb2xlLmVycm9yKCJ0aW1lQ29kZVN0cjJUaW1lQ29kZUFycmF5OiBGYWlsZWQgdG8gcGFyc2UgIit0KSxbMCwwLDAsMCwwXTtsZXQgbz1bcGFyc2VJbnQoZVswXSkscGFyc2VJbnQoZVsxXSkscGFyc2VJbnQoZVsyXSldO2lmKGVbM10uaW5kZXhPZigiLiIpPj0wKXtsZXQgcj1lWzNdLnNwbGl0KCIuIik7by5wdXNoKHBhcnNlSW50KHJbMF0pKSxvLnB1c2gocGFyc2VJbnQoclsxXSkpfWVsc2Ugby5wdXNoKHBhcnNlSW50KGVbM10pKSxvLnB1c2goMCk7cmV0dXJuIG99LHZ0PSh0LGUsbyk9PntsZXQgcj02MCxpPTA7TWF0aC5mbG9vcihlKT09NjA/KHI9NjAsaT0wKTpNYXRoLmZsb29yKGUpPT01OT8ocj02MCxpPTQpOk1hdGguZmxvb3IoZSk9PTMwPyhyPTMwLGk9MCk6TWF0aC5mbG9vcihlKT09MjkmJihyPTMwLGk9Mik7bGV0IHM9MCxhPU1hdGguZmxvb3IoZSo2MCoxMCkqNixuPXRbMF0sbD10WzFdLGg9dFsyXSx1PXRbM10sbT10WzRdO3JldHVybiBzKz1uKmEscys9bCoocio2MCkscys9aCpyLG8/cys9dSoyK206cys9dSxzLT1pKmwscys9aSpNYXRoLmZsb29yKGwvMTApLHN9LEN0PSh0LGUsbyk9PntsZXQgcj02MCxpPTA7TWF0aC5mbG9vcihlKT09NjA/KHI9NjAsaT0wKTpNYXRoLmZsb29yKGUpPT01OT8ocj02MCxpPTQpOk1hdGguZmxvb3IoZSk9PTMwPyhyPTMwLGk9MCk6TWF0aC5mbG9vcihlKT09MjkmJihyPTMwLGk9Mik7bGV0IHM9TWF0aC5mbG9vcihlKjYwKSxjPU1hdGguZmxvb3IoZSo2MCoxMCksYT1jKjYsbj10LGw9TWF0aC5mbG9vcihuL2EpO24tPWwqYTtsZXQgaD1NYXRoLmZsb29yKG4vYyk7bi09aCpjLG4+PXIqNjAmJihuKz1pKihNYXRoLmZsb29yKChuLXIqNjApL3MpKzEpKTtsZXQgdT1NYXRoLmZsb29yKG4vKHIqNjApKTtuLT11KihyKjYwKTtsZXQgbT1NYXRoLmZsb29yKG4vcik7bi09bSpyO2xldCBkPW47dSs9aCoxMDtsZXQgQT0wO3JldHVybiBvJiYoQT1kJTIsZD1NYXRoLmZsb29yKGQvMikpLFtsLHUsbSxkLEFdfSx5PSh0LGUsbyk9PntsZXQgcj1vPjMwLGk9dnQodCxvLHIpO3JldHVybiBpKz1lLEN0KGksbyxyKX0sSD10PT4odCZ0LTEpPT0wO2NsYXNzIFN0e2NvbnN0cnVjdG9yKGUpe3AodGhpcywiYWRUZXh0dXJlIixudWxsKTtwKHRoaXMsInBsYWNlMkFkVGV4dHVyZSIse30pO3AodGhpcywicGxhY2UyYWQiLHt9KTtwKHRoaXMsImFkMnBsYWNlIix7fSk7cCh0aGlzLCJjdXJyZW50QWRzMkJvdW5kaW5nUmVjdCIsW10pO3AodGhpcywibGFzdFRpbWVSZXBvcnRlZEluY29taW5nVEMiLDApO3AodGhpcywiYXV0b0FkZEluZGV4IixudWxsKTtwKHRoaXMsImRpZ2l0SW1nIix7fSk7cCh0aGlzLCJzb3VyY2VGUFMiLDZlNC8xMDAxKTtwKHRoaXMsIm1ldGFkYXRhQXJyIixbXSk7cCh0aGlzLCJtZXRhZGF0YU1hcCIse30pO3AodGhpcywidmlkZW9TdGFydGVkIiwhMSk7cCh0aGlzLCJhZHZlcnRpc2VtZW50TWFwIix7fSk7cCh0aGlzLCJhZDJVcmwiLHt9KTtwKHRoaXMsInZpZGVvQ29waWVyIixudWxsKTtwKHRoaXMsImF1dG9BZGRJbmRleCIsbnVsbCk7aWYoZS5yZW5kZXJUaW1lY29kZXMpZm9yKGxldCBvPTA7bzwxMDsrK28pe2xldCByPW8rIi4xIixpPW8rIi4yIjt0aGlzLmRpZ2l0SW1nW3JdPXRoaXMuY3JlYXRlRGlnaXRJbWcociksdGhpcy5kaWdpdEltZ1tpXT10aGlzLmNyZWF0ZURpZ2l0SW1nKGkpfXRoaXMub3B0aW9ucz1PYmplY3QuYXNzaWduKHthZExvb3BUaW1lOjVlMyxpc0FkTG9vcDohMX0sZXx8e30pfW9uVXNlckNsaWNrT25DYW52YXMoZSl7Y29uc29sZS5sb2coImZpeCBtZSIpfXRleFVuaXRGb3JHZW5lcmljQWQoKXtyZXR1cm4gMH10ZXhVbml0Rm9yQWRJblBsYWNlKGUpe2xldCBvPU9iamVjdC5rZXlzKHRoaXMucGxhY2UyYWQpO2ZvcihsZXQgcj0wO3I8by5sZW5ndGg7KytyKWlmKGU9PW9bcl0pcmV0dXJuIHIrMTtyZXR1cm4gMH10ZXhVbml0Rm9yUGxhY2VIb2xkZXIoZSl7bGV0IG89T2JqZWN0LmtleXModGhpcy5wbGFjZTJhZCk7Zm9yKGxldCByPTA7cjxvLmxlbmd0aDsrK3Ipe2xldCBpPW9bcl07aWYoZS5uYW1lLmluZGV4T2YoaSk+PTApcmV0dXJuIHJ9cmV0dXJuIDB9YWROYW1lRm9yUGxhY2VIb2xkZXIoZSl7bGV0IG89T2JqZWN0LmtleXModGhpcy5wbGFjZTJhZCk7Zm9yKGxldCByPTA7cjxvLmxlbmd0aDsrK3Ipe2xldCBpPW9bcl07aWYoZS5uYW1lLmluZGV4T2YoaSk+PTAmJnRoaXMucGxhY2UyQWRUZXh0dXJlJiZ0aGlzLnBsYWNlMkFkVGV4dHVyZVtpXSYmdGhpcy5wbGFjZTJBZFRleHR1cmVbaV0ubmFtZSlyZXR1cm4gdGhpcy5wbGFjZTJBZFRleHR1cmVbaV0ubmFtZX1yZXR1cm4gdGhpcy5sYXN0QWROYW1lfXRleFVuaXRCYXNlRm9yQWxwaGEoKXtyZXR1cm4gMStPYmplY3Qua2V5cyh0aGlzLnBsYWNlMmFkKS5sZW5ndGh9aW5pdEdMKCl7Y29uc3QgZT10aGlzLm9wdGlvbnMubWFza01QND9bdixfXTpbQyx6XTt0aGlzLnByb2dyYW09RXQodGhpcy5jdHgsZSksdGhpcy5jdHgudXNlUHJvZ3JhbSh0aGlzLnByb2dyYW0pLHRoaXMuY291bnRlcj0wLHRoaXMuY2xlYW5HTCgpfWNsZWFuR0woKXt0aGlzLmN0eC5jbGVhckNvbG9yKDAsMCwwLDApLHRoaXMuY3R4LmNsZWFyKHRoaXMuY3R4LkNPTE9SX0JVRkZFUl9CSVQpfWdlbmVyYXRlVGV4dHVyZShlLG8scixpLHMsYyxhLG49ITEpe2E/dGhpcy5jdHgucGl4ZWxTdG9yZWkodGhpcy5jdHguVU5QQUNLX0FMSUdOTUVOVCwxKTp0aGlzLmN0eC5waXhlbFN0b3JlaSh0aGlzLmN0eC5VTlBBQ0tfQUxJR05NRU5ULDQpLHRoaXMuY3R4LnBpeGVsU3RvcmVpKHRoaXMuY3R4LlVOUEFDS19GTElQX1lfV0VCR0wsbik7Y29uc3QgbD10aGlzLmN0eC5jcmVhdGVUZXh0dXJlKCk7dGhpcy5jdHguYWN0aXZlVGV4dHVyZSh0aGlzLmN0eC5URVhUVVJFMCtvKSx0aGlzLmN0eC5iaW5kVGV4dHVyZSh0aGlzLmN0eC5URVhUVVJFXzJELGwpO3RyeXtzJiZjP3RoaXMuY3R4LnRleEltYWdlMkQodGhpcy5jdHguVEVYVFVSRV8yRCwwLGk/P3RoaXMuY3R4LlJHQkEscyxjLDAsaT8/dGhpcy5jdHguUkdCQSx0aGlzLmN0eC5VTlNJR05FRF9CWVRFLGUpOnRoaXMuY3R4LnRleEltYWdlMkQodGhpcy5jdHguVEVYVFVSRV8yRCwwLGk/P3RoaXMuY3R4LlJHQkEsdGhpcy5jdHguUkdCQSx0aGlzLmN0eC5VTlNJR05FRF9CWVRFLGUpfWNhdGNoKHUpe3JldHVybiBjb25zb2xlLmVycm9yKHUpLG51bGx9aWYodGhpcy53ZWJHTFZlcnNpb249PTEpe2xldCB1PXN8fGUud2lkdGgsbT1jfHxlLmhlaWdodDt1JiZIKHUpJiZtJiZIKG0pP3RoaXMuY3R4LmdlbmVyYXRlTWlwbWFwKHRoaXMuY3R4LlRFWFRVUkVfMkQpOih0aGlzLmN0eC50ZXhQYXJhbWV0ZXJpKHRoaXMuY3R4LlRFWFRVUkVfMkQsdGhpcy5jdHguVEVYVFVSRV9XUkFQX1MsdGhpcy5jdHguQ0xBTVBfVE9fRURHRSksdGhpcy5jdHgudGV4UGFyYW1ldGVyaSh0aGlzLmN0eC5URVhUVVJFXzJELHRoaXMuY3R4LlRFWFRVUkVfV1JBUF9ULHRoaXMuY3R4LkNMQU1QX1RPX0VER0UpLHRoaXMuY3R4LnRleFBhcmFtZXRlcmkodGhpcy5jdHguVEVYVFVSRV8yRCx0aGlzLmN0eC5URVhUVVJFX01JTl9GSUxURVIsdGhpcy5jdHguTElORUFSKSl9ZWxzZSB0aGlzLmN0eC50ZXhQYXJhbWV0ZXJpKHRoaXMuY3R4LlRFWFRVUkVfMkQsdGhpcy5jdHguVEVYVFVSRV9XUkFQX1MsdGhpcy5jdHguQ0xBTVBfVE9fRURHRSksdGhpcy5jdHgudGV4UGFyYW1ldGVyaSh0aGlzLmN0eC5URVhUVVJFXzJELHRoaXMuY3R4LlRFWFRVUkVfV1JBUF9ULHRoaXMuY3R4LkNMQU1QX1RPX0VER0UpLHRoaXMuY3R4LnRleFBhcmFtZXRlcmkodGhpcy5jdHguVEVYVFVSRV8yRCx0aGlzLmN0eC5URVhUVVJFX01JTl9GSUxURVIsdGhpcy5jdHguTElORUFSKSx0aGlzLmN0eC50ZXhQYXJhbWV0ZXJpKHRoaXMuY3R4LlRFWFRVUkVfMkQsdGhpcy5jdHguVEVYVFVSRV9NQUdfRklMVEVSLHRoaXMuY3R4LkxJTkVBUik7bGV0IGg9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSxyKTtyZXR1cm4gaCYmdGhpcy5jdHgudW5pZm9ybTFpKGgsbyksbH1fbmV4dEFkdmVydGlzZW1lbnQoKXt0aGlzLmF1dG9BZGRJbmRleD1zZXRUaW1lb3V0KCgpPT57Y29uc3QgZT1PYmplY3Qua2V5cyh0aGlzLmFkdmVydGlzZW1lbnRNYXApO2UubGVuZ3RoJiYodGhpcy5zZWxlY3RBZChlW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSplLmxlbmd0aCldKSx0aGlzLl9uZXh0QWR2ZXJ0aXNlbWVudCgpKX0sdGhpcy5vcHRpb25zLmFkTG9vcFRpbWUpfW1ha2VTdXJlQWRQZXJQbGFjZSgpe2lmKHRoaXMucGxhY2UyYWQpe2xldCBlPU9iamVjdC5rZXlzKHRoaXMucGxhY2UyYWQpO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7KytvKXtsZXQgcj1lW29dOyF0aGlzLnBsYWNlMkFkVGV4dHVyZVtyXSYmdGhpcy5wbGFjZTJhZFtyXS5sZW5ndGg+MCYmKGNvbnNvbGUubG9nKCJNYWtlU3VyZUFkUGVyUGxhY2U6IFNldCBkZWZhdWx0IGltYWdlICIrdGhpcy5wbGFjZTJhZFtyXVswXSsiIGZvciBwbGFjZSAiK3IpLHRoaXMuc2VsZWN0QWQoIiMiK3RoaXMucGxhY2UyYWRbcl1bMF0pKX19fXNlbGVjdEFkKGUpe2NvbnNvbGUubG9nKCJjb21wb3Nlcjo6U2VsZWN0QWQ6IHNlbGVjdGVkIGFkIGlzICIrZSk7bGV0IG89dGhpcy5hZHZlcnRpc2VtZW50TWFwW2VdO2lmKCFvKWNvbnNvbGUuZXJyb3IoIlNlbGVjdEFkOiBGYWlsZWQgdG8gZmluZCBpbWFnZSAnIitlKyInIik7ZWxzZSBpZih0aGlzLmFkMnBsYWNlJiZ0aGlzLmFkMnBsYWNlW2VdKXtsZXQgcj10aGlzLmFkMnBsYWNlW2VdO2NvbnNvbGUubG9nKCJjb21wb3Nlcjo6U2VsZWN0QWQ6IFRoZSBzZWxlY3RlZCBhZCBzaG91bGQgYmUgaW4gcGxhY2UgIityKTtsZXQgaT10aGlzLnRleFVuaXRGb3JBZEluUGxhY2Uocikscz0iYWQiKyhpLTEpO3RoaXMucGxhY2UyQWRUZXh0dXJlW3JdJiZ0aGlzLmN0eC5kZWxldGVUZXh0dXJlKHRoaXMucGxhY2UyQWRUZXh0dXJlW3JdLnRleCksdGhpcy5wbGFjZTJBZFRleHR1cmVbcl09e3RleDp0aGlzLmdlbmVyYXRlVGV4dHVyZShvLGkscyksdGV4VW5pdElkOmksdGV4TmFtZTpzLG5hbWU6ZX19ZWxzZSB0aGlzLmFkVGV4dHVyZSYmdGhpcy5jdHguZGVsZXRlVGV4dHVyZSh0aGlzLmFkVGV4dHVyZSksdGhpcy5hZFRleHR1cmU9dGhpcy5nZW5lcmF0ZVRleHR1cmUobyx0aGlzLnRleFVuaXRGb3JHZW5lcmljQWQoKSwiYWQwIiksdGhpcy5sYXN0QWQ9byx0aGlzLmxhc3RBZE5hbWU9ZX1vbk1ldGFEYXRhKGUpe3RoaXMubWV0YWRhdGFNYXBbZS50aW1lY29kZV09ZSx0aGlzLm1ldGFkYXRhQXJyLnB1c2goZS50aW1lY29kZSl9cmVuZGVyRnJhbWUoKXtsZXQgZT10aGlzLmN0eC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLnByb2dyYW0sImFfcG9zaXRpb24iKSxvPXRoaXMuY3R4LmdldEF0dHJpYkxvY2F0aW9uKHRoaXMucHJvZ3JhbSwiYV91diIpLHI9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwidV9yZXNvbHV0aW9uIik7dGhpcy5jdHgudW5pZm9ybTJmKHIsdGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpLHI9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwidV9yZXNvbHV0aW9uMiIpLHRoaXMuY3R4LnVuaWZvcm0yZihyLHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KTtsZXQgaT10aGlzLmN0eC5jcmVhdGVCdWZmZXIoKTt0aGlzLmN0eC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShlKSx0aGlzLmN0eC5iaW5kQnVmZmVyKHRoaXMuY3R4LkFSUkFZX0JVRkZFUixpKTtsZXQgcz0yLGM9dGhpcy5jdHguRkxPQVQsYT0hMSxuPTAsbD0wO3RoaXMuY3R4LnZlcnRleEF0dHJpYlBvaW50ZXIoZSxzLGMsYSxuLGwpO2xldCBoPXRoaXMuY3R4LmNyZWF0ZUJ1ZmZlcigpO3RoaXMuY3R4LmJpbmRCdWZmZXIodGhpcy5jdHguQVJSQVlfQlVGRkVSLGgpLHRoaXMuY3R4LmJ1ZmZlckRhdGEodGhpcy5jdHguQVJSQVlfQlVGRkVSLG5ldyBGbG9hdDMyQXJyYXkoWzAsMCwxLDAsMCwxLDAsMSwxLDAsMSwxXSksdGhpcy5jdHguU1RBVElDX0RSQVcpLHRoaXMuY3R4LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG8pLHM9MixjPXRoaXMuY3R4LkZMT0FULGE9ITEsbj0wLGw9MCx0aGlzLmN0eC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG8scyxjLGEsbixsKSx0aGlzLmN0eC52aWV3cG9ydCgwLDAsdGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpLHRoaXMuY3R4LmNsZWFyQ29sb3IoMCwwLDAsMCksdGhpcy5jdHguY2xlYXIodGhpcy5jdHguQ09MT1JfQlVGRkVSX0JJVHx0aGlzLmN0eC5ERVBUSF9CVUZGRVJfQklUKSx0aGlzLmN0eC5iaW5kQnVmZmVyKHRoaXMuY3R4LkFSUkFZX0JVRkZFUixpKSx0aGlzLnNldFJlY3RhbmdsZSgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KTtsZXQgdT10aGlzLmN0eC5UUklBTkdMRVM7dGhpcy5jdHguZHJhd0FycmF5cyh1LGwsNil9c2V0UmVjdGFuZ2xlKGUsbyxyLGkpe2xldCBzPWUsYz1lK3IsYT1vLG49bytpO3RoaXMuY3R4LmJ1ZmZlckRhdGEodGhpcy5jdHguQVJSQVlfQlVGRkVSLG5ldyBGbG9hdDMyQXJyYXkoW3MsYSxjLGEscyxuLHMsbixjLGEsYyxuXSksdGhpcy5jdHguU1RBVElDX0RSQVcpfXJlbmRlckF1Z21lbnRhdGlvbihlKXt0aGlzLmNhbnZhcy53aWR0aD0xMjgwLHRoaXMuY2FudmFzLmhlaWdodD03MjAsdGhpcy5vcHRpb25zLm1hc2tNUDQ/dGhpcy5yZW5kZXJBdWdtZW50YXRpb25NUDQoZSk6dGhpcy5yZW5kZXJBdWdtZW50YXRpb25PbGQoZSl9cmVuZGVyQXVnbWVudGF0aW9uTVA0KGUpe2xldCBvPSQoZSkscj15KG8sMSx0aGlzLnNvdXJjZUZQUyksaT15KG8sMix0aGlzLnNvdXJjZUZQUykscz1VKHIpLGM9VShpKTt0aGlzLnZpZGVvU3RhcnRlZD0hMCxwZXJmb3JtYW5jZS5ub3coKTtsZXQgYT1udWxsLG49W107aWYodGhpcy5tZXRhZGF0YU1hcFtlXSl7YT10aGlzLm1ldGFkYXRhTWFwW2VdLHRoaXMubWV0YWRhdGFNYXBbc10mJm4ucHVzaCh7bmV4dFZpZGVvOnRoaXMubWV0YWRhdGFNYXBbc10sbmV4dFRpbWVDb2RlOnN9KSx0aGlzLm1ldGFkYXRhTWFwW2NdJiZuLnB1c2goe25leHRWaWRlbzp0aGlzLm1ldGFkYXRhTWFwW2NdLG5leHRUaW1lQ29kZTpjfSk7Y29uc3QgbT10aGlzLm1ldGFkYXRhQXJyLmluZGV4T2YoZSk7bT4tNSYmdGhpcy5tZXRhZGF0YUFyci5zcGxpY2UoMCxtLTQpLmZvckVhY2goZD0+e2RlbGV0ZSB0aGlzLm1ldGFkYXRhTWFwW2RdfSl9ZWxzZSB0aGlzLmNvdW50ZXIrKyx0aGlzLmNvdW50ZXI+NjAmJih0aGlzLmNvdW50ZXI9MCxjb25zb2xlLmVycm9yKCJNaXNzaW5nIG1ldGEgZGF0YSBhdCB0aW1lIGNvZGUgIitlKSk7bGV0IGw9W10saD0wO2lmKHRoaXMuY3VycmVudEFkczJCb3VuZGluZ1JlY3Q9W10sYSE9bnVsbCYmYS5hbHBoYU1hc2spe2xldCBtPXRoaXMudGV4VW5pdEJhc2VGb3JBbHBoYSgpO2NvbnN0IGQ9dGhpcy5nZW5lcmF0ZVRleHR1cmUoYS5hbHBoYU1hc2ssbSwidV9hbHBoYU1hc2siLHRoaXMuY3R4LlJHQkEsbnVsbCxudWxsLCExLCEwKTtsLnB1c2goZCk7Zm9yKGNvbnN0IEEgaW4gYS5wbGFjZWhvbGRlcnMpe2NvbnN0IEw9YS5wbGFjZWhvbGRlcnNbQV07bGV0IEY9Imhhc0xvZ28iK2gsUD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLEYpO3RoaXMuY3R4LnVuaWZvcm0xaShQLDEpO2xldCBiPSJhZEZvckxvZ28iK2gsUj10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLGIpO3RoaXMuY3R4LnVuaWZvcm0xaShSLHRoaXMudGV4VW5pdEZvclBsYWNlSG9sZGVyKEwpKTtsZXQgST0idV9tYXRyaXgiK2gsTT10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLEkpO3RoaXMuY3R4LnVuaWZvcm1NYXRyaXgzZnYoTSwhMSxMLnRyYW5mb3JtKTtsZXQgZj17bDotMSx0Oi0xLHI6LTEsYjotMX07Zm9yKGxldCBUIG9mIEwuY29ybmVycykoVC54PGYubHx8Zi5sPT0tMSkmJihmLmw9VC54KSwoVC54PmYucnx8Zi5yPT0tMSkmJihmLnI9VC54KSwoVC55PGYudHx8Zi50PT0tMSkmJihmLnQ9VC55KSwoVC55PmYuYnx8Zi5iPT0tMSkmJihmLmI9VC55KTtmLmwvPWEuY2FudmFzU2l6ZS53aWR0aCxmLnIvPWEuY2FudmFzU2l6ZS53aWR0aCxmLnQvPWEuY2FudmFzU2l6ZS5oZWlnaHQsZi5iLz1hLmNhbnZhc1NpemUuaGVpZ2h0LHRoaXMuY3VycmVudEFkczJCb3VuZGluZ1JlY3QucHVzaCh7bmFtZTp0aGlzLmFkTmFtZUZvclBsYWNlSG9sZGVyKEwpLHJlY3Q6Zn0pLGgrK319Y29uc3QgdT00O2Zvcig7aDx1OysraCl7bGV0IG09Imhhc0xvZ28iK2gsZD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLG0pO3RoaXMuY3R4LnVuaWZvcm0xaShkLDApfXRoaXMucmVuZGVyVGltZWNvZGVzKGUpLHRoaXMucmVuZGVyRnJhbWUoKTtmb3IoY29uc3QgbSBvZiBsKXRoaXMuY3R4LmRlbGV0ZVRleHR1cmUobSl9cmVuZGVyQXVnbWVudGF0aW9uT2xkKGUpe2xldCBvPSQoZSkscj15KG8sMSx0aGlzLnNvdXJjZUZQUyksaT15KG8sMix0aGlzLnNvdXJjZUZQUykscz1VKHIpLGM9VShpKTt0aGlzLnZpZGVvU3RhcnRlZD0hMCxwZXJmb3JtYW5jZS5ub3coKTtsZXQgYT1udWxsLG49W107aWYodGhpcy5tZXRhZGF0YU1hcFtlXSl7YT10aGlzLm1ldGFkYXRhTWFwW2VdLHRoaXMubWV0YWRhdGFNYXBbc10mJm4ucHVzaCh7bmV4dFZpZGVvOnRoaXMubWV0YWRhdGFNYXBbc10sbmV4dFRpbWVDb2RlOnN9KSx0aGlzLm1ldGFkYXRhTWFwW2NdJiZuLnB1c2goe25leHRWaWRlbzp0aGlzLm1ldGFkYXRhTWFwW2NdLG5leHRUaW1lQ29kZTpjfSk7Y29uc3QgbT10aGlzLm1ldGFkYXRhQXJyLmluZGV4T2YoZSk7bT4tNSYmdGhpcy5tZXRhZGF0YUFyci5zcGxpY2UoMCxtLTQpLmZvckVhY2goZD0+e2RlbGV0ZSB0aGlzLm1ldGFkYXRhTWFwW2RdfSl9ZWxzZSB0aGlzLmNvdW50ZXIrKyx0aGlzLmNvdW50ZXI+NjAmJih0aGlzLmNvdW50ZXI9MCxjb25zb2xlLmVycm9yKCJNaXNzaW5nIG1ldGEgZGF0YSBhdCB0aW1lIGNvZGUgIitlKSk7bGV0IGw9W10saD0wO3RoaXMuY3VycmVudEFkczJCb3VuZGluZ1JlY3Q9W107Zm9yKGNvbnN0IG0gaW4gYT09bnVsbD92b2lkIDA6YS5wbGFjZWhvbGRlcnMpe2NvbnN0IGQ9YS5wbGFjZWhvbGRlcnNbbV07aWYoIWQuYWxwaGFBc1VpbnQ4QXJyYXkpY29udGludWU7bGV0IEE9ImFscGhhIitoLEw9dGhpcy50ZXhVbml0QmFzZUZvckFscGhhKCkraDtpZihkLmFscGhhVGV4PXRoaXMuZ2VuZXJhdGVUZXh0dXJlKGQuYWxwaGFBc1VpbnQ4QXJyYXksTCxBLHRoaXMuY3R4LkFMUEhBLGQud2lkdGgsZC5oZWlnaHQsITApLGQuYWxwaGFBc1VpbnQ4QXJyYXk9bnVsbCwhZC5hbHBoYVRleCl7Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBhbHBoYSB0ZXh0dXJlIik7Y29udGludWV9bC5wdXNoKGQuYWxwaGFUZXgpO2xldCBGPSJoYXNMb2dvIitoLFA9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSxGKTt0aGlzLmN0eC51bmlmb3JtMWkoUCwxKTtsZXQgYj0iYWRGb3JMb2dvIitoLFI9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSxiKSxJPSExO2QubmFtZS5pbmRleE9mKCJibHVyIik+PTA/KHRoaXMuY3R4LnVuaWZvcm0xaShSLDk5KSxJPSEwKTp0aGlzLmN0eC51bmlmb3JtMWkoUix0aGlzLnRleFVuaXRGb3JQbGFjZUhvbGRlcihkKSk7bGV0IE09InVfYWxwaGEiK2grIlRvcExlZnQiLGY9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSxNKTt0aGlzLmN0eC51bmlmb3JtMmZ2KGYsW2QubWFza1gsZC5tYXNrWV0pO2xldCBUPSJ1X2FscGhhIitoKyJTaXplIix5dD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLFQpO3RoaXMuY3R4LnVuaWZvcm0yZnYoeXQsW2Qud2lkdGgsZC5oZWlnaHRdKTtsZXQgUnQ9InVfbWF0cml4IitoLEl0PXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sUnQpO2lmKHRoaXMuY3R4LnVuaWZvcm1NYXRyaXgzZnYoSXQsITEsZC50cmFuZm9ybSksIUkpe2xldCB4PXtsOi0xLHQ6LTEscjotMSxiOi0xfTtmb3IobGV0IEUgb2YgZC5jb3JuZXJzKShFLng8eC5sfHx4Lmw9PS0xKSYmKHgubD1FLngpLChFLng+eC5yfHx4LnI9PS0xKSYmKHgucj1FLngpLChFLnk8eC50fHx4LnQ9PS0xKSYmKHgudD1FLnkpLChFLnk+eC5ifHx4LmI9PS0xKSYmKHguYj1FLnkpO3gubC89YS5jYW52YXNTaXplLndpZHRoLHguci89YS5jYW52YXNTaXplLndpZHRoLHgudC89YS5jYW52YXNTaXplLmhlaWdodCx4LmIvPWEuY2FudmFzU2l6ZS5oZWlnaHQsdGhpcy5jdXJyZW50QWRzMkJvdW5kaW5nUmVjdC5wdXNoKHtuYW1lOnRoaXMuYWROYW1lRm9yUGxhY2VIb2xkZXIoZCkscmVjdDp4fSl9aCsrfWNvbnN0IHU9NDtmb3IoO2g8dTsrK2gpe2xldCBtPSJoYXNMb2dvIitoLGQ9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSxtKTt0aGlzLmN0eC51bmlmb3JtMWkoZCwwKX10aGlzLnJlbmRlclRpbWVjb2RlcyhlKSx0aGlzLnJlbmRlckZyYW1lKCk7Zm9yKGNvbnN0IG0gb2YgbCl0aGlzLmN0eC5kZWxldGVUZXh0dXJlKG0pfXJlbmRlclRpbWVjb2RlcyhlKXtpZih0aGlzLm9wdGlvbnMucmVuZGVyVGltZWNvZGVzKXtsZXQgbz1lLnNwbGl0KCI6IilbM10scj1vLmluZGV4T2YoIi4iKT49MD8yOjEscz1wYXJzZUludChvLnNwbGl0KCIuIilbMF0pJTEwKyIuIityLGM9dGhpcy50ZXhVbml0QmFzZUZvckFscGhhKCkrNTtjb25zb2xlLmxvZyhzLHRoaXMuZGlnaXRJbWcsYywiZGlnaXRUZXgiKTtsZXQgYT10aGlzLmdlbmVyYXRlVGV4dHVyZSh0aGlzLmRpZ2l0SW1nW3NdLGMsImRpZ2l0VGV4Iik7dGV4dHVyZXNGb3JUaGlzRnJhbWUucHVzaChhKTtsZXQgbD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLCJoYXNEaWdpdCIpO3RoaXMuY3R4LnVuaWZvcm0xaShsLDEpO2xldCB1PXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sInVfZGlnaXRUb3BMZWZ0Iik7dGhpcy5jdHgudW5pZm9ybTJmdih1LFswLDBdKTtsZXQgZD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLCJ1X2RpZ2l0U2l6ZSIpO3RoaXMuY3R4LnVuaWZvcm0yZnYoZCxbMjAwLDIwMF0pfWVsc2V7bGV0IHI9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwiaGFzRGlnaXQiKTt0aGlzLmN0eC51bmlmb3JtMWkociwwKX19dG9nZ2xlRnVsbHNjcmVlbigpeyh0aGlzLnJlcXVlc3RGdWxsc2NyZWVufHx0aGlzLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKS5jYWxsKHRoaXMpLmNhdGNoKGU9Pntjb25zb2xlLmVycm9yKGUpfSl9fWNsYXNzIFV0IGV4dGVuZHMgU3R7Y29uc3RydWN0b3IoZSxvKXtzdXBlcihlKSx0aGlzLmNhbnZhcz1vLHRoaXMuY3R4PXRoaXMuY2FudmFzLmdldENvbnRleHQoIndlYmdsIix7cHJlbXVsdGlwbGllZEFscGhhOiExLGFudGlhbGlhczohMX0pLHRoaXMuaW5pdEdMKCl9YXN5bmMgY3JlYXRlRGlnaXRJbWcoZSl7bGV0IG89bmV3IE9mZnNjcmVlbkNhbnZhcyg1MCw1MCkscj1vLmdldENvbnRleHQoIjJkIik7cmV0dXJuIHIuZmlsbFN0eWxlPSJibGFjayIsci5maWxsUmVjdCgwLDAsby53aWR0aCxvLmhlaWdodCksci5mb250PSIzMHB4IEFyaWFsIixyLmZpbGxTdHlsZT0id2hpdGUiLHIuZmlsbFRleHQoZSwxMCwzNSksYXdhaXQgby50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX1hc3luYyBhZGRBZHZlcnRpc2VtZW50KGUpe2xldHtuYW1lOm8scGF0aDpyLGlzU2VsZWN0ZWQ6aX09ZTtpZihvLmluZGV4T2YoIi5qc29uIik+LTEpe2ZldGNoKHIpLnRoZW4oYXN5bmMgbD0+e3RoaXMucGxhY2UyYWQ9YXdhaXQgbC5qc29uKCksdGhpcy5hZDJwbGFjZT17fTtsZXQgaD1PYmplY3Qua2V5cyh0aGlzLnBsYWNlMmFkKTtmb3IobGV0IHU9MDt1PGgubGVuZ3RoOysrdSl7bGV0IG09aFt1XTtpZihtPT0idXJscyIpe3RoaXMuYWQyVXJsPXRoaXMucGxhY2UyYWRbbV0sZGVsZXRlIHRoaXMucGxhY2UyYWRbbV07Y29udGludWV9bGV0IGQ9dGhpcy5wbGFjZTJhZFttXTtmb3IobGV0IEE9MDtBPGQubGVuZ3RoOysrQSl7bGV0IEw9ZFtBXTt0aGlzLmFkMnBsYWNlWyIjIitMXT1tfX1PYmplY3Qua2V5cyh0aGlzLnBsYWNlMmFkKS5sZW5ndGg+MCYmKGNvbnNvbGUubG9nKCJjb21wb3Nlcjo6QWRkQWR2ZXJ0aXNlbWVudDogcGxhY2UtdG8tYWRzIG1hcHBpbmc6ICIsdGhpcy5wbGFjZTJhZCksY29uc29sZS5sb2coImNvbXBvc2VyOjpBZGRBZHZlcnRpc2VtZW50OiBhZHMtdG8tcGxhY2UgbWFwcGluZzogIix0aGlzLmFkMnBsYWNlKSxzZXRUaW1lb3V0KCgpPT57dGhpcy5tYWtlU3VyZUFkUGVyUGxhY2UoKX0sM2UzKSksaSYmdGhpcy5zZWxlY3RBZChvKX0pO3JldHVybn1jb25zdCBjPWF3YWl0KGF3YWl0IGZldGNoKHIpKS5ibG9iKCksYT1hd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChjKTtsZXQgbj1PYmplY3Qua2V5cyh0aGlzLmFkdmVydGlzZW1lbnRNYXApLmxlbmd0aD09PTA7dGhpcy5hZHZlcnRpc2VtZW50TWFwW29dPWEsbiYmKHRoaXMuc2VsZWN0QWQobyksdGhpcy5vcHRpb25zLmlzQWRMb29wJiYoY2xlYXJUaW1lb3V0KHRoaXMuYXV0b0FkZEluZGV4KSx0aGlzLl9uZXh0QWR2ZXJ0aXNlbWVudCgpKSl9fWxldCBnPW51bGw7b25tZXNzYWdlPXQ9Pntzd2l0Y2godC5kYXRhLm1ldGhvZCl7Y2FzZSJvblVzZXJDbGlja09uQ2FudmFzIjpnJiZnLm9uVXNlckNsaWNrT25DYW52YXModC5kYXRhLmRhdGEpO2JyZWFrO2Nhc2UiY2xlYW5HTCI6ZyYmZy5jbGVhbkdMKCk7YnJlYWs7Y2FzZSJhZGRBZHZlcnRpc2VtZW50IjpnJiZnLmFkZEFkdmVydGlzZW1lbnQodC5kYXRhLmRhdGEpO2JyZWFrO2Nhc2Uic2VsZWN0QWQiOmcmJmcuc2VsZWN0QWQodC5kYXRhLmRhdGEpO2JyZWFrO2Nhc2Uib25NZXRhRGF0YSI6ZyYmZy5vbk1ldGFEYXRhKHQuZGF0YS5kYXRhKTticmVhaztjYXNlInJlbmRlckF1Z21lbnRhdGlvbiI6ZyYmZy5yZW5kZXJBdWdtZW50YXRpb24odC5kYXRhLmRhdGEpO2JyZWFrO2Nhc2UiY29uc3RydWN0b3IiOmc9bmV3IFV0KHQuZGF0YS5vcHRpb25zLHQuZGF0YS5jYW52YXMpO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiV3JvbmcgVGhyZWFkIE1lc3NhZ2UiKX19fSkoKTsK",ir=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),Ql=typeof self<"u"&&self.Blob&&new Blob([ir(Bl)],{type:"text/javascript;charset=utf-8"});function rr(e){let t;try{if(t=Ql&&(self.URL||self.webkitURL).createObjectURL(Ql),!t)throw"";const n=new Worker(t,{name:e==null?void 0:e.name});return n.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch{return new Worker("data:text/javascript;base64,"+Bl,{name:e==null?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}class sr{constructor(t,n){this.canvas=t,this.worker=new rr,this.worker.onmessage=i=>{const{action:r,url:d}=i.data;r==="open-uri"&&d&&window.open(d,"_blank")};const l=t.transferControlToOffscreen();let a=6e4/1001,c=n.renderTimecode;this.worker.postMessage({method:"constructor",canvas:l,options:{sourceFPS:a,renderTimecodes:c,maskMP4:n.maskMP4}},[l])}onUserClickOnCanvas(t,n,l){this.worker.postMessage({method:"onUserClickOnCanvas",data:{clientX:t,clientY:n,rect:l}})}cleanGL(){this.worker.postMessage({method:"cleanGL",data:""})}renderAugmentation(t){this.worker.postMessage({method:"renderAugmentation",data:t})}addAdvertisement(t){this.worker.postMessage({method:"addAdvertisement",data:t})}getCanvas(){return this.canvas}selectAd(t){this.worker.postMessage({method:"selectAd",data:t})}onMetaData(t){this.worker.postMessage({method:"onMetaData",data:t})}}const Me={RenderDigits:Symbol("RenderDigits"),RenderTimecode:Symbol("RenderTimecode"),Augment:Symbol("Augment")};var Rt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Pl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function or(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function l(){return this instanceof l?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(l){var a=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(n,l,a.get?a:{enumerable:!0,get:function(){return e[l]}})}),n}var Wn={exports:{}},dr=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,ur=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],mr=function(t){var n=t,l=t.indexOf("["),a=t.indexOf("]");l!=-1&&a!=-1&&(t=t.substring(0,l)+t.substring(l,a).replace(/:/g,";")+t.substring(a,t.length));for(var c=dr.exec(t||""),i={},r=14;r--;)i[ur[r]]=c[r]||"";return l!=-1&&a!=-1&&(i.source=n,i.host=i.host.substring(1,i.host.length-1).replace(/;/g,":"),i.authority=i.authority.replace("[","").replace("]","").replace(/;/g,":"),i.ipv6uri=!0),i},Rn={exports:{}},fn,El;function Zr(){if(El)return fn;El=1;var e=1e3,t=e*60,n=t*60,l=n*24,a=l*7,c=l*365.25;fn=function(o,u){u=u||{};var Z=typeof o;if(Z==="string"&&o.length>0)return i(o);if(Z==="number"&&isFinite(o))return u.long?d(o):r(o);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(o))};function i(o){if(o=String(o),!(o.length>100)){var u=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(o);if(u){var Z=parseFloat(u[1]),m=(u[2]||"ms").toLowerCase();switch(m){case"years":case"year":case"yrs":case"yr":case"y":return Z*c;case"weeks":case"week":case"w":return Z*a;case"days":case"day":case"d":return Z*l;case"hours":case"hour":case"hrs":case"hr":case"h":return Z*n;case"minutes":case"minute":case"mins":case"min":case"m":return Z*t;case"seconds":case"second":case"secs":case"sec":case"s":return Z*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return Z;default:return}}}}function r(o){var u=Math.abs(o);return u>=l?Math.round(o/l)+"d":u>=n?Math.round(o/n)+"h":u>=t?Math.round(o/t)+"m":u>=e?Math.round(o/e)+"s":o+"ms"}function d(o){var u=Math.abs(o);return u>=l?s(o,u,l,"day"):u>=n?s(o,u,n,"hour"):u>=t?s(o,u,t,"minute"):u>=e?s(o,u,e,"second"):o+" ms"}function s(o,u,Z,m){var p=u>=Z*1.5;return Math.round(o/Z)+" "+m+(p?"s":"")}return fn}function hr(e){n.debug=n,n.default=n,n.coerce=s,n.disable=i,n.enable=c,n.enabled=r,n.humanize=Zr(),Object.keys(e).forEach(o=>{n[o]=e[o]}),n.instances=[],n.names=[],n.skips=[],n.formatters={};function t(o){let u=0;for(let Z=0;Z<o.length;Z++)u=(u<<5)-u+o.charCodeAt(Z),u|=0;return n.colors[Math.abs(u)%n.colors.length]}n.selectColor=t;function n(o){let u;function Z(...m){if(!Z.enabled)return;const p=Z,h=Number(new Date),R=h-(u||h);p.diff=R,p.prev=u,p.curr=h,u=h,m[0]=n.coerce(m[0]),typeof m[0]!="string"&&m.unshift("%O");let y=0;m[0]=m[0].replace(/%([a-zA-Z%])/g,(L,G)=>{if(L==="%%")return L;y++;const W=n.formatters[G];if(typeof W=="function"){const X=m[y];L=W.call(p,X),m.splice(y,1),y--}return L}),n.formatArgs.call(p,m),(p.log||n.log).apply(p,m)}return Z.namespace=o,Z.enabled=n.enabled(o),Z.useColors=n.useColors(),Z.color=t(o),Z.destroy=l,Z.extend=a,typeof n.init=="function"&&n.init(Z),n.instances.push(Z),Z}function l(){const o=n.instances.indexOf(this);return o!==-1?(n.instances.splice(o,1),!0):!1}function a(o,u){const Z=n(this.namespace+(typeof u>"u"?":":u)+o);return Z.log=this.log,Z}function c(o){n.save(o),n.names=[],n.skips=[];let u;const Z=(typeof o=="string"?o:"").split(/[\s,]+/),m=Z.length;for(u=0;u<m;u++)Z[u]&&(o=Z[u].replace(/\*/g,".*?"),o[0]==="-"?n.skips.push(new RegExp("^"+o.substr(1)+"$")):n.names.push(new RegExp("^"+o+"$")));for(u=0;u<n.instances.length;u++){const p=n.instances[u];p.enabled=n.enabled(p.namespace)}}function i(){const o=[...n.names.map(d),...n.skips.map(d).map(u=>"-"+u)].join(",");return n.enable(""),o}function r(o){if(o[o.length-1]==="*")return!0;let u,Z;for(u=0,Z=n.skips.length;u<Z;u++)if(n.skips[u].test(o))return!1;for(u=0,Z=n.names.length;u<Z;u++)if(n.names[u].test(o))return!0;return!1}function d(o){return o.toString().substring(2,o.toString().length-2).replace(/\.\*\?$/,"*")}function s(o){return o instanceof Error?o.stack||o.message:o}return n.enable(n.load()),n}var br=hr;(function(e,t){t.log=a,t.formatArgs=l,t.save=c,t.load=i,t.useColors=n,t.storage=r(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function l(s){if(s[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+s[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const o="color: "+this.color;s.splice(1,0,o,"color: inherit");let u=0,Z=0;s[0].replace(/%[a-zA-Z%]/g,m=>{m!=="%%"&&(u++,m==="%c"&&(Z=u))}),s.splice(Z,0,o)}function a(...s){return typeof console=="object"&&console.log&&console.log(...s)}function c(s){try{s?t.storage.setItem("debug",s):t.storage.removeItem("debug")}catch{}}function i(){let s;try{s=t.storage.getItem("debug")}catch{}return!s&&typeof process<"u"&&"env"in process&&(s=process.env.DEBUG),s}function r(){try{return localStorage}catch{}}e.exports=br(t);const{formatters:d}=e.exports;d.j=function(s){try{return JSON.stringify(s)}catch(o){return"[UnexpectedJSONParseError]: "+o.message}}})(Rn,Rn.exports);var ft=Rn.exports,pr=mr,Dl=ft("socket.io-client:url"),Gr=yr;function yr(e,t){var n=e;t=t||typeof location<"u"&&location,e==null&&(e=t.protocol+"//"+t.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=t.protocol+e:e=t.host+e),/^(https?|wss?):\/\//.test(e)||(Dl("protocol-less url %s",e),typeof t<"u"?e=t.protocol+"//"+e:e="https://"+e),Dl("parse %s",e),n=pr(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";var l=n.host.indexOf(":")!==-1,a=l?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+a+":"+n.port,n.href=n.protocol+"://"+a+(t&&t.port===n.port?"":":"+n.port),n}var Lt={},Ln={exports:{}},Yn={exports:{}},et=1e3,tt=et*60,nt=tt*60,lt=nt*24,Xr=lt*365.25,Vr=function(e,t){t=t||{};var n=typeof e;if(n==="string"&&e.length>0)return Wr(e);if(n==="number"&&isNaN(e)===!1)return t.long?fr(e):Rr(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function Wr(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]),l=(t[2]||"ms").toLowerCase();switch(l){case"years":case"year":case"yrs":case"yr":case"y":return n*Xr;case"days":case"day":case"d":return n*lt;case"hours":case"hour":case"hrs":case"hr":case"h":return n*nt;case"minutes":case"minute":case"mins":case"min":case"m":return n*tt;case"seconds":case"second":case"secs":case"sec":case"s":return n*et;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function Rr(e){return e>=lt?Math.round(e/lt)+"d":e>=nt?Math.round(e/nt)+"h":e>=tt?Math.round(e/tt)+"m":e>=et?Math.round(e/et)+"s":e+"ms"}function fr(e){return Yt(e,lt,"day")||Yt(e,nt,"hour")||Yt(e,tt,"minute")||Yt(e,et,"second")||e+" ms"}function Yt(e,t,n){if(!(e<t))return e<t*1.5?Math.floor(e/t)+" "+n:Math.ceil(e/t)+" "+n+"s"}(function(e,t){t=e.exports=l.debug=l.default=l,t.coerce=d,t.disable=i,t.enable=c,t.enabled=r,t.humanize=Vr,t.instances=[],t.names=[],t.skips=[],t.formatters={};function n(s){var o=0,u;for(u in s)o=(o<<5)-o+s.charCodeAt(u),o|=0;return t.colors[Math.abs(o)%t.colors.length]}function l(s){var o;function u(){if(u.enabled){var Z=u,m=+new Date,p=m-(o||m);Z.diff=p,Z.prev=o,Z.curr=m,o=m;for(var h=new Array(arguments.length),R=0;R<h.length;R++)h[R]=arguments[R];h[0]=t.coerce(h[0]),typeof h[0]!="string"&&h.unshift("%O");var y=0;h[0]=h[0].replace(/%([a-zA-Z%])/g,function(L,G){if(L==="%%")return L;y++;var W=t.formatters[G];if(typeof W=="function"){var X=h[y];L=W.call(Z,X),h.splice(y,1),y--}return L}),t.formatArgs.call(Z,h);var V=u.log||t.log||console.log.bind(console);V.apply(Z,h)}}return u.namespace=s,u.enabled=t.enabled(s),u.useColors=t.useColors(),u.color=n(s),u.destroy=a,typeof t.init=="function"&&t.init(u),t.instances.push(u),u}function a(){var s=t.instances.indexOf(this);return s!==-1?(t.instances.splice(s,1),!0):!1}function c(s){t.save(s),t.names=[],t.skips=[];var o,u=(typeof s=="string"?s:"").split(/[\s,]+/),Z=u.length;for(o=0;o<Z;o++)u[o]&&(s=u[o].replace(/\*/g,".*?"),s[0]==="-"?t.skips.push(new RegExp("^"+s.substr(1)+"$")):t.names.push(new RegExp("^"+s+"$")));for(o=0;o<t.instances.length;o++){var m=t.instances[o];m.enabled=t.enabled(m.namespace)}}function i(){t.enable("")}function r(s){if(s[s.length-1]==="*")return!0;var o,u;for(o=0,u=t.skips.length;o<u;o++)if(t.skips[o].test(s))return!1;for(o=0,u=t.names.length;o<u;o++)if(t.names[o].test(s))return!0;return!1}function d(s){return s instanceof Error?s.stack||s.message:s}})(Yn,Yn.exports);var Lr=Yn.exports;(function(e,t){t=e.exports=Lr,t.log=a,t.formatArgs=l,t.save=c,t.load=i,t.useColors=n,t.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:r(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}t.formatters.j=function(d){try{return JSON.stringify(d)}catch(s){return"[UnexpectedJSONParseError]: "+s.message}};function l(d){var s=this.useColors;if(d[0]=(s?"%c":"")+this.namespace+(s?" %c":" ")+d[0]+(s?"%c ":" ")+"+"+t.humanize(this.diff),!!s){var o="color: "+this.color;d.splice(1,0,o,"color: inherit");var u=0,Z=0;d[0].replace(/%[a-zA-Z%]/g,function(m){m!=="%%"&&(u++,m==="%c"&&(Z=u))}),d.splice(Z,0,o)}}function a(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function c(d){try{d==null?t.storage.removeItem("debug"):t.storage.debug=d}catch{}}function i(){var d;try{d=t.storage.debug}catch{}return!d&&typeof process<"u"&&"env"in process&&(d=process.env.DEBUG),d}t.enable(i());function r(){try{return window.localStorage}catch{}}})(Ln,Ln.exports);var Yr=Ln.exports,jl={exports:{}};(function(e){e.exports=t;function t(l){if(l)return n(l)}function n(l){for(var a in t.prototype)l[a]=t.prototype[a];return l}t.prototype.on=t.prototype.addEventListener=function(l,a){return this._callbacks=this._callbacks||{},(this._callbacks["$"+l]=this._callbacks["$"+l]||[]).push(a),this},t.prototype.once=function(l,a){function c(){this.off(l,c),a.apply(this,arguments)}return c.fn=a,this.on(l,c),this},t.prototype.off=t.prototype.removeListener=t.prototype.removeAllListeners=t.prototype.removeEventListener=function(l,a){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var c=this._callbacks["$"+l];if(!c)return this;if(arguments.length==1)return delete this._callbacks["$"+l],this;for(var i,r=0;r<c.length;r++)if(i=c[r],i===a||i.fn===a){c.splice(r,1);break}return c.length===0&&delete this._callbacks["$"+l],this},t.prototype.emit=function(l){this._callbacks=this._callbacks||{};for(var a=new Array(arguments.length-1),c=this._callbacks["$"+l],i=1;i<arguments.length;i++)a[i-1]=arguments[i];if(c){c=c.slice(0);for(var i=0,r=c.length;i<r;++i)c[i].apply(this,a)}return this},t.prototype.listeners=function(l){return this._callbacks=this._callbacks||{},this._callbacks["$"+l]||[]},t.prototype.hasListeners=function(l){return!!this.listeners(l).length}})(jl);var vr=jl.exports,vt={},gr={}.toString,vn=Array.isArray||function(e){return gr.call(e)=="[object Array]"},Ol=Sr,Fr=typeof Buffer=="function"&&typeof Buffer.isBuffer=="function",Cr=typeof ArrayBuffer=="function",xr=function(e){return typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer};function Sr(e){return Fr&&Buffer.isBuffer(e)||Cr&&(e instanceof ArrayBuffer||xr(e))}var gn=vn,Al=Ol,_l=Object.prototype.toString,Ir=typeof Blob=="function"||typeof Blob<"u"&&_l.call(Blob)==="[object BlobConstructor]",zr=typeof File=="function"||typeof File<"u"&&_l.call(File)==="[object FileConstructor]";vt.deconstructPacket=function(e){var t=[],n=e.data,l=e;return l.data=Fn(n,t),l.attachments=t.length,{packet:l,buffers:t}};function Fn(e,t){if(!e)return e;if(Al(e)){var n={_placeholder:!0,num:t.length};return t.push(e),n}else if(gn(e)){for(var l=new Array(e.length),a=0;a<e.length;a++)l[a]=Fn(e[a],t);return l}else if(typeof e=="object"&&!(e instanceof Date)){var l={};for(var c in e)l[c]=Fn(e[c],t);return l}return e}vt.reconstructPacket=function(e,t){return e.data=Cn(e.data,t),e.attachments=void 0,e};function Cn(e,t){if(!e)return e;if(e&&e._placeholder===!0){var n=typeof e.num=="number"&&e.num>=0&&e.num<t.length;if(n)return t[e.num];throw new Error("illegal attachments")}else if(gn(e))for(var l=0;l<e.length;l++)e[l]=Cn(e[l],t);else if(typeof e=="object")for(var a in e)e[a]=Cn(e[a],t);return e}vt.removeBlobs=function(e,t){function n(c,i,r){if(!c)return c;if(Ir&&c instanceof Blob||zr&&c instanceof File){l++;var d=new FileReader;d.onload=function(){r?r[i]=this.result:a=this.result,--l||t(a)},d.readAsArrayBuffer(c)}else if(gn(c))for(var s=0;s<c.length;s++)n(c[s],s,c);else if(typeof c=="object"&&!Al(c))for(var o in c)n(c[o],o,c)}var l=0,a=e;n(a),l||t(a)},function(e){var t=Yr("socket.io-parser"),n=vr,l=vt,a=vn,c=Ol;e.protocol=4,e.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],e.CONNECT=0,e.DISCONNECT=1,e.EVENT=2,e.ACK=3,e.ERROR=4,e.BINARY_EVENT=5,e.BINARY_ACK=6,e.Encoder=i,e.Decoder=u;function i(){}var r=e.ERROR+'"encode error"';i.prototype.encode=function(y,V){if(t("encoding packet %j",y),e.BINARY_EVENT===y.type||e.BINARY_ACK===y.type)o(y,V);else{var L=d(y);V([L])}};function d(y){var V=""+y.type;if((e.BINARY_EVENT===y.type||e.BINARY_ACK===y.type)&&(V+=y.attachments+"-"),y.nsp&&y.nsp!=="/"&&(V+=y.nsp+","),y.id!=null&&(V+=y.id),y.data!=null){var L=s(y.data);if(L!==!1)V+=L;else return r}return t("encoded %j as %s",y,V),V}function s(y){try{return JSON.stringify(y)}catch{return!1}}function o(y,V){function L(G){var W=l.deconstructPacket(G),X=d(W.packet),b=W.buffers;b.unshift(X),V(b)}l.removeBlobs(y,L)}function u(){this.reconstructor=null}n(u.prototype),u.prototype.add=function(y){var V;if(typeof y=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");V=m(y),e.BINARY_EVENT===V.type||e.BINARY_ACK===V.type?(this.reconstructor=new h(V),this.reconstructor.reconPack.attachments===0&&this.emit("decoded",V)):this.emit("decoded",V)}else if(c(y)||y.base64)if(this.reconstructor)V=this.reconstructor.takeBinaryData(y),V&&(this.reconstructor=null,this.emit("decoded",V));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+y)};function Z(y,V){switch(y){case 0:return typeof V=="object";case 1:return V===void 0;case 4:return typeof V=="string"||typeof V=="object";case 2:case 5:return a(V)&&(typeof V[0]=="string"||typeof V[0]=="number");case 3:case 6:return a(V)}}function m(y){var V=0,L={type:Number(y.charAt(0))};if(e.types[L.type]==null)return R("unknown packet type "+L.type);if(e.BINARY_EVENT===L.type||e.BINARY_ACK===L.type){for(var G=V+1;y.charAt(++V)!=="-"&&V!=y.length;);var W=y.substring(G,V);if(W!=Number(W)||y.charAt(V)!=="-")throw new Error("Illegal attachments");L.attachments=Number(W)}if(y.charAt(V+1)==="/"){for(var G=V+1;++V;){var X=y.charAt(V);if(X===","||V===y.length)break}L.nsp=y.substring(G,V)}else L.nsp="/";var b=y.charAt(V+1);if(b!==""&&Number(b)==b){for(var G=V+1;++V;){var X=y.charAt(V);if(X==null||Number(X)!=X){--V;break}if(V===y.length)break}L.id=Number(y.substring(G,V+1))}if(y.charAt(++V)){var f=p(y.substr(V));if(Z(L.type,f))L.data=f;else throw new Error("invalid payload")}return t("decoded %s as %j",y,L),L}function p(y){try{return JSON.parse(y)}catch{return!1}}u.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()};function h(y){this.reconPack=y,this.buffers=[]}h.prototype.takeBinaryData=function(y){if(this.buffers.push(y),this.buffers.length===this.reconPack.attachments){var V=l.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),V}return null},h.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]};function R(y){return{type:e.ERROR,data:"parser error: "+y}}}(Lt);var xn={exports:{}},gt={},Sn={exports:{}};try{Sn.exports=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{Sn.exports=!1}var Mr=Sn.exports,In=function(){return typeof self<"u"?self:typeof window<"u"?window:Function("return this")()}(),Jr=Mr,Nr=In,zn=function(e){var t=e.xdomain,n=e.xscheme,l=e.enablesXDR;try{if(typeof XMLHttpRequest<"u"&&(!t||Jr))return new XMLHttpRequest}catch{}try{if(typeof XDomainRequest<"u"&&!n&&l)return new XDomainRequest}catch{}if(!t)try{return new Nr[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}},Mn={exports:{}},pe={},kr=Object.keys||function(t){var n=[],l=Object.prototype.hasOwnProperty;for(var a in t)l.call(t,a)&&n.push(a);return n},Kr=vn,$l=Object.prototype.toString,Tr=typeof Blob=="function"||typeof Blob<"u"&&$l.call(Blob)==="[object BlobConstructor]",Hr=typeof File=="function"||typeof File<"u"&&$l.call(File)==="[object FileConstructor]",ql=Ft;function Ft(e){if(!e||typeof e!="object")return!1;if(Kr(e)){for(var t=0,n=e.length;t<n;t++)if(Ft(e[t]))return!0;return!1}if(typeof Buffer=="function"&&Buffer.isBuffer&&Buffer.isBuffer(e)||typeof ArrayBuffer=="function"&&e instanceof ArrayBuffer||Tr&&e instanceof Blob||Hr&&e instanceof File)return!0;if(e.toJSON&&typeof e.toJSON=="function"&&arguments.length===1)return Ft(e.toJSON(),!0);for(var l in e)if(Object.prototype.hasOwnProperty.call(e,l)&&Ft(e[l]))return!0;return!1}var Ur=function(e,t,n){var l=e.byteLength;if(t=t||0,n=n||l,e.slice)return e.slice(t,n);if(t<0&&(t+=l),n<0&&(n+=l),n>l&&(n=l),t>=l||t>=n||l===0)return new ArrayBuffer(0);for(var a=new Uint8Array(e),c=new Uint8Array(n-t),i=t,r=0;i<n;i++,r++)c[r]=a[i];return c.buffer},wr=Br;function Br(e,t,n){var l=!1;return n=n||Qr,a.count=e,e===0?t():a;function a(c,i){if(a.count<=0)throw new Error("after called too many times");--a.count,c?(l=!0,t(c),t=n):a.count===0&&!l&&t(null,i)}}function Qr(){}/*! https://mths.be/utf8js v2.1.2 by @mathias */var re=String.fromCharCode;function ea(e){for(var t=[],n=0,l=e.length,a,c;n<l;)a=e.charCodeAt(n++),a>=55296&&a<=56319&&n<l?(c=e.charCodeAt(n++),(c&64512)==56320?t.push(((a&1023)<<10)+(c&1023)+65536):(t.push(a),n--)):t.push(a);return t}function Pr(e){for(var t=e.length,n=-1,l,a="";++n<t;)l=e[n],l>65535&&(l-=65536,a+=re(l>>>10&1023|55296),l=56320|l&1023),a+=re(l);return a}function ta(e,t){if(e>=55296&&e<=57343){if(t)throw Error("Lone surrogate U+"+e.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function Jn(e,t){return re(e>>t&63|128)}function Er(e,t){if(!(e&4294967168))return re(e);var n="";return e&4294965248?e&4294901760?e&4292870144||(n=re(e>>18&7|240),n+=Jn(e,12),n+=Jn(e,6)):(ta(e,t)||(e=65533),n=re(e>>12&15|224),n+=Jn(e,6)):n=re(e>>6&31|192),n+=re(e&63|128),n}function Dr(e,t){t=t||{};for(var n=t.strict!==!1,l=ea(e),a=l.length,c=-1,i,r="";++c<a;)i=l[c],r+=Er(i,n);return r}function Je(){if(se>=xt)throw Error("Invalid byte index");var e=Ct[se]&255;if(se++,(e&192)==128)return e&63;throw Error("Invalid continuation byte")}function jr(e){var t,n,l,a,c;if(se>xt)throw Error("Invalid byte index");if(se==xt)return!1;if(t=Ct[se]&255,se++,!(t&128))return t;if((t&224)==192){if(n=Je(),c=(t&31)<<6|n,c>=128)return c;throw Error("Invalid continuation byte")}if((t&240)==224){if(n=Je(),l=Je(),c=(t&15)<<12|n<<6|l,c>=2048)return ta(c,e)?c:65533;throw Error("Invalid continuation byte")}if((t&248)==240&&(n=Je(),l=Je(),a=Je(),c=(t&7)<<18|n<<12|l<<6|a,c>=65536&&c<=1114111))return c;throw Error("Invalid UTF-8 detected")}var Ct,xt,se;function Or(e,t){t=t||{};var n=t.strict!==!1;Ct=ea(e),xt=Ct.length,se=0;for(var l=[],a;(a=jr(n))!==!1;)l.push(a);return Pr(l)}var Ar={version:"2.1.2",encode:Dr,decode:Or},St={},na;function _r(){return na||(na=1,function(e){St.encode=function(t){var n=new Uint8Array(t),l,a=n.length,c="";for(l=0;l<a;l+=3)c+=e[n[l]>>2],c+=e[(n[l]&3)<<4|n[l+1]>>4],c+=e[(n[l+1]&15)<<2|n[l+2]>>6],c+=e[n[l+2]&63];return a%3===2?c=c.substring(0,c.length-1)+"=":a%3===1&&(c=c.substring(0,c.length-2)+"=="),c},St.decode=function(t){var n=t.length*.75,l=t.length,a,c=0,i,r,d,s;t[t.length-1]==="="&&(n--,t[t.length-2]==="="&&n--);var o=new ArrayBuffer(n),u=new Uint8Array(o);for(a=0;a<l;a+=4)i=e.indexOf(t[a]),r=e.indexOf(t[a+1]),d=e.indexOf(t[a+2]),s=e.indexOf(t[a+3]),u[c++]=i<<2|r>>4,u[c++]=(r&15)<<4|d>>2,u[c++]=(d&3)<<6|s&63;return o}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")),St}var Nn,la;function $r(){if(la)return Nn;la=1;var e=typeof e<"u"?e:typeof WebKitBlobBuilder<"u"?WebKitBlobBuilder:typeof MSBlobBuilder<"u"?MSBlobBuilder:typeof MozBlobBuilder<"u"?MozBlobBuilder:!1,t=function(){try{var r=new Blob(["hi"]);return r.size===2}catch{return!1}}(),n=t&&function(){try{var r=new Blob([new Uint8Array([1,2])]);return r.size===2}catch{return!1}}(),l=e&&e.prototype.append&&e.prototype.getBlob;function a(r){return r.map(function(d){if(d.buffer instanceof ArrayBuffer){var s=d.buffer;if(d.byteLength!==s.byteLength){var o=new Uint8Array(d.byteLength);o.set(new Uint8Array(s,d.byteOffset,d.byteLength)),s=o.buffer}return s}return d})}function c(r,d){d=d||{};var s=new e;return a(r).forEach(function(o){s.append(o)}),d.type?s.getBlob(d.type):s.getBlob()}function i(r,d){return new Blob(a(r),d||{})}return typeof Blob<"u"&&(c.prototype=Blob.prototype,i.prototype=Blob.prototype),Nn=function(){return t?n?Blob:i:l?c:void 0}(),Nn}(function(e){var t=kr,n=ql,l=Ur,a=wr,c=Ar,i;typeof ArrayBuffer<"u"&&(i=_r());var r=typeof navigator<"u"&&/Android/i.test(navigator.userAgent),d=typeof navigator<"u"&&/PhantomJS/i.test(navigator.userAgent),s=r||d;e.protocol=3;var o=e.packets={open:0,close:1,ping:2,pong:3,message:4,upgrade:5,noop:6},u=t(o),Z={type:"error",data:"parser error"},m=$r();e.encodePacket=function(G,W,X,b){typeof W=="function"&&(b=W,W=!1),typeof X=="function"&&(b=X,X=null);var f=G.data===void 0?void 0:G.data.buffer||G.data;if(typeof ArrayBuffer<"u"&&f instanceof ArrayBuffer)return h(G,W,b);if(typeof m<"u"&&f instanceof m)return y(G,W,b);if(f&&f.base64)return p(G,b);var v=o[G.type];return G.data!==void 0&&(v+=X?c.encode(String(G.data),{strict:!1}):String(G.data)),b(""+v)};function p(G,W){var X="b"+e.packets[G.type]+G.data.data;return W(X)}function h(G,W,X){if(!W)return e.encodeBase64Packet(G,X);var b=G.data,f=new Uint8Array(b),v=new Uint8Array(1+b.byteLength);v[0]=o[G.type];for(var C=0;C<f.length;C++)v[C+1]=f[C];return X(v.buffer)}function R(G,W,X){if(!W)return e.encodeBase64Packet(G,X);var b=new FileReader;return b.onload=function(){e.encodePacket({type:G.type,data:b.result},W,!0,X)},b.readAsArrayBuffer(G.data)}function y(G,W,X){if(!W)return e.encodeBase64Packet(G,X);if(s)return R(G,W,X);var b=new Uint8Array(1);b[0]=o[G.type];var f=new m([b.buffer,G.data]);return X(f)}e.encodeBase64Packet=function(G,W){var X="b"+e.packets[G.type];if(typeof m<"u"&&G.data instanceof m){var b=new FileReader;return b.onload=function(){var F=b.result.split(",")[1];W(X+F)},b.readAsDataURL(G.data)}var f;try{f=String.fromCharCode.apply(null,new Uint8Array(G.data))}catch{for(var v=new Uint8Array(G.data),C=new Array(v.length),Y=0;Y<v.length;Y++)C[Y]=v[Y];f=String.fromCharCode.apply(null,C)}return X+=btoa(f),W(X)},e.decodePacket=function(G,W,X){if(G===void 0)return Z;if(typeof G=="string"){if(G.charAt(0)==="b")return e.decodeBase64Packet(G.substr(1),W);if(X&&(G=V(G),G===!1))return Z;var f=G.charAt(0);return Number(f)!=f||!u[f]?Z:G.length>1?{type:u[f],data:G.substring(1)}:{type:u[f]}}var b=new Uint8Array(G),f=b[0],v=l(G,1);return m&&W==="blob"&&(v=new m([v])),{type:u[f],data:v}};function V(G){try{G=c.decode(G,{strict:!1})}catch{return!1}return G}e.decodeBase64Packet=function(G,W){var X=u[G.charAt(0)];if(!i)return{type:X,data:{base64:!0,data:G.substr(1)}};var b=i.decode(G.substr(1));return W==="blob"&&m&&(b=new m([b])),{type:X,data:b}},e.encodePayload=function(G,W,X){typeof W=="function"&&(X=W,W=null);var b=n(G);if(W&&b)return m&&!s?e.encodePayloadAsBlob(G,X):e.encodePayloadAsArrayBuffer(G,X);if(!G.length)return X("0:");function f(C){return C.length+":"+C}function v(C,Y){e.encodePacket(C,b?W:!1,!1,function(F){Y(null,f(F))})}L(G,v,function(C,Y){return X(Y.join(""))})};function L(G,W,X){for(var b=new Array(G.length),f=a(G.length,X),v=function(Y,F,T){W(F,function(H,U){b[Y]=U,T(H,b)})},C=0;C<G.length;C++)v(C,G[C],f)}e.decodePayload=function(G,W,X){if(typeof G!="string")return e.decodePayloadAsBinary(G,W,X);typeof W=="function"&&(X=W,W=null);var b;if(G==="")return X(Z,0,1);for(var f="",v,C,Y=0,F=G.length;Y<F;Y++){var T=G.charAt(Y);if(T!==":"){f+=T;continue}if(f===""||f!=(v=Number(f))||(C=G.substr(Y+1,v),f!=C.length))return X(Z,0,1);if(C.length){if(b=e.decodePacket(C,W,!1),Z.type===b.type&&Z.data===b.data)return X(Z,0,1);var H=X(b,Y+v,F);if(H===!1)return}Y+=v,f=""}if(f!=="")return X(Z,0,1)},e.encodePayloadAsArrayBuffer=function(G,W){if(!G.length)return W(new ArrayBuffer(0));function X(b,f){e.encodePacket(b,!0,!0,function(v){return f(null,v)})}L(G,X,function(b,f){var v=f.reduce(function(F,T){var H;return typeof T=="string"?H=T.length:H=T.byteLength,F+H.toString().length+H+2},0),C=new Uint8Array(v),Y=0;return f.forEach(function(F){var T=typeof F=="string",H=F;if(T){for(var Ie=new Uint8Array(F.length),U=0;U<F.length;U++)Ie[U]=F.charCodeAt(U);H=Ie.buffer}T?C[Y++]=0:C[Y++]=1;for(var Se=H.byteLength.toString(),U=0;U<Se.length;U++)C[Y++]=parseInt(Se[U]);C[Y++]=255;for(var Ie=new Uint8Array(H),U=0;U<Ie.length;U++)C[Y++]=Ie[U]}),W(C.buffer)})},e.encodePayloadAsBlob=function(G,W){function X(b,f){e.encodePacket(b,!0,!0,function(v){var C=new Uint8Array(1);if(C[0]=1,typeof v=="string"){for(var Y=new Uint8Array(v.length),F=0;F<v.length;F++)Y[F]=v.charCodeAt(F);v=Y.buffer,C[0]=0}for(var T=v instanceof ArrayBuffer?v.byteLength:v.size,H=T.toString(),U=new Uint8Array(H.length+1),F=0;F<H.length;F++)U[F]=parseInt(H[F]);if(U[H.length]=255,m){var Se=new m([C.buffer,U.buffer,v]);f(null,Se)}})}L(G,X,function(b,f){return W(new m(f))})},e.decodePayloadAsBinary=function(G,W,X){typeof W=="function"&&(X=W,W=null);for(var b=G,f=[];b.byteLength>0;){for(var v=new Uint8Array(b),C=v[0]===0,Y="",F=1;v[F]!==255;F++){if(Y.length>310)return X(Z,0,1);Y+=v[F]}b=l(b,2+Y.length),Y=parseInt(Y);var T=l(b,0,Y);if(C)try{T=String.fromCharCode.apply(null,new Uint8Array(T))}catch{var H=new Uint8Array(T);T="";for(var F=0;F<H.length;F++)T+=String.fromCharCode(H[F])}f.push(T),b=l(b,Y)}var U=f.length;f.forEach(function(Se,Ie){X(e.decodePacket(Se,W,!0),Ie,U)})}})(pe);var aa={exports:{}};(function(e){e.exports=t;function t(l){if(l)return n(l)}function n(l){for(var a in t.prototype)l[a]=t.prototype[a];return l}t.prototype.on=t.prototype.addEventListener=function(l,a){return this._callbacks=this._callbacks||{},(this._callbacks["$"+l]=this._callbacks["$"+l]||[]).push(a),this},t.prototype.once=function(l,a){function c(){this.off(l,c),a.apply(this,arguments)}return c.fn=a,this.on(l,c),this},t.prototype.off=t.prototype.removeListener=t.prototype.removeAllListeners=t.prototype.removeEventListener=function(l,a){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var c=this._callbacks["$"+l];if(!c)return this;if(arguments.length==1)return delete this._callbacks["$"+l],this;for(var i,r=0;r<c.length;r++)if(i=c[r],i===a||i.fn===a){c.splice(r,1);break}return c.length===0&&delete this._callbacks["$"+l],this},t.prototype.emit=function(l){this._callbacks=this._callbacks||{};for(var a=new Array(arguments.length-1),c=this._callbacks["$"+l],i=1;i<arguments.length;i++)a[i-1]=arguments[i];if(c){c=c.slice(0);for(var i=0,r=c.length;i<r;++i)c[i].apply(this,a)}return this},t.prototype.listeners=function(l){return this._callbacks=this._callbacks||{},this._callbacks["$"+l]||[]},t.prototype.hasListeners=function(l){return!!this.listeners(l).length}})(aa);var kn=aa.exports,Kn,ca;function Tn(){if(ca)return Kn;ca=1;var e=pe,t=kn;Kn=n;function n(l){this.path=l.path,this.hostname=l.hostname,this.port=l.port,this.secure=l.secure,this.query=l.query,this.timestampParam=l.timestampParam,this.timestampRequests=l.timestampRequests,this.readyState="",this.agent=l.agent||!1,this.socket=l.socket,this.enablesXDR=l.enablesXDR,this.withCredentials=l.withCredentials,this.pfx=l.pfx,this.key=l.key,this.passphrase=l.passphrase,this.cert=l.cert,this.ca=l.ca,this.ciphers=l.ciphers,this.rejectUnauthorized=l.rejectUnauthorized,this.forceNode=l.forceNode,this.isReactNative=l.isReactNative,this.extraHeaders=l.extraHeaders,this.localAddress=l.localAddress}return t(n.prototype),n.prototype.onError=function(l,a){var c=new Error(l);return c.type="TransportError",c.description=a,this.emit("error",c),this},n.prototype.open=function(){return(this.readyState==="closed"||this.readyState==="")&&(this.readyState="opening",this.doOpen()),this},n.prototype.close=function(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this},n.prototype.send=function(l){if(this.readyState==="open")this.write(l);else throw new Error("Transport not open")},n.prototype.onOpen=function(){this.readyState="open",this.writable=!0,this.emit("open")},n.prototype.onData=function(l){var a=e.decodePacket(l,this.socket.binaryType);this.onPacket(a)},n.prototype.onPacket=function(l){this.emit("packet",l)},n.prototype.onClose=function(){this.readyState="closed",this.emit("close")},Kn}var at={};at.encode=function(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t},at.decode=function(e){for(var t={},n=e.split("&"),l=0,a=n.length;l<a;l++){var c=n[l].split("=");t[decodeURIComponent(c[0])]=decodeURIComponent(c[1])}return t};var It=function(e,t){var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e},ia="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),zt=64,ra={},sa=0,oe=0,oa;function Hn(e){var t="";do t=ia[e%zt]+t,e=Math.floor(e/zt);while(e>0);return t}function qr(e){var t=0;for(oe=0;oe<e.length;oe++)t=t*zt+ra[e.charAt(oe)];return t}function Un(){var e=Hn(+new Date);return e!==oa?(sa=0,oa=e):e+"."+Hn(sa++)}for(;oe<zt;oe++)ra[ia[oe]]=oe;Un.encode=Hn,Un.decode=qr;var da=Un,wn={exports:{}},Bn={exports:{}},ct=1e3,it=ct*60,rt=it*60,st=rt*24,es=st*365.25,ts=function(e,t){t=t||{};var n=typeof e;if(n==="string"&&e.length>0)return ns(e);if(n==="number"&&isNaN(e)===!1)return t.long?as(e):ls(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function ns(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]),l=(t[2]||"ms").toLowerCase();switch(l){case"years":case"year":case"yrs":case"yr":case"y":return n*es;case"days":case"day":case"d":return n*st;case"hours":case"hour":case"hrs":case"hr":case"h":return n*rt;case"minutes":case"minute":case"mins":case"min":case"m":return n*it;case"seconds":case"second":case"secs":case"sec":case"s":return n*ct;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function ls(e){return e>=st?Math.round(e/st)+"d":e>=rt?Math.round(e/rt)+"h":e>=it?Math.round(e/it)+"m":e>=ct?Math.round(e/ct)+"s":e+"ms"}function as(e){return Mt(e,st,"day")||Mt(e,rt,"hour")||Mt(e,it,"minute")||Mt(e,ct,"second")||e+" ms"}function Mt(e,t,n){if(!(e<t))return e<t*1.5?Math.floor(e/t)+" "+n:Math.ceil(e/t)+" "+n+"s"}(function(e,t){t=e.exports=l.debug=l.default=l,t.coerce=d,t.disable=i,t.enable=c,t.enabled=r,t.humanize=ts,t.instances=[],t.names=[],t.skips=[],t.formatters={};function n(s){var o=0,u;for(u in s)o=(o<<5)-o+s.charCodeAt(u),o|=0;return t.colors[Math.abs(o)%t.colors.length]}function l(s){var o;function u(){if(u.enabled){var Z=u,m=+new Date,p=m-(o||m);Z.diff=p,Z.prev=o,Z.curr=m,o=m;for(var h=new Array(arguments.length),R=0;R<h.length;R++)h[R]=arguments[R];h[0]=t.coerce(h[0]),typeof h[0]!="string"&&h.unshift("%O");var y=0;h[0]=h[0].replace(/%([a-zA-Z%])/g,function(L,G){if(L==="%%")return L;y++;var W=t.formatters[G];if(typeof W=="function"){var X=h[y];L=W.call(Z,X),h.splice(y,1),y--}return L}),t.formatArgs.call(Z,h);var V=u.log||t.log||console.log.bind(console);V.apply(Z,h)}}return u.namespace=s,u.enabled=t.enabled(s),u.useColors=t.useColors(),u.color=n(s),u.destroy=a,typeof t.init=="function"&&t.init(u),t.instances.push(u),u}function a(){var s=t.instances.indexOf(this);return s!==-1?(t.instances.splice(s,1),!0):!1}function c(s){t.save(s),t.names=[],t.skips=[];var o,u=(typeof s=="string"?s:"").split(/[\s,]+/),Z=u.length;for(o=0;o<Z;o++)u[o]&&(s=u[o].replace(/\*/g,".*?"),s[0]==="-"?t.skips.push(new RegExp("^"+s.substr(1)+"$")):t.names.push(new RegExp("^"+s+"$")));for(o=0;o<t.instances.length;o++){var m=t.instances[o];m.enabled=t.enabled(m.namespace)}}function i(){t.enable("")}function r(s){if(s[s.length-1]==="*")return!0;var o,u;for(o=0,u=t.skips.length;o<u;o++)if(t.skips[o].test(s))return!1;for(o=0,u=t.names.length;o<u;o++)if(t.names[o].test(s))return!0;return!1}function d(s){return s instanceof Error?s.stack||s.message:s}})(Bn,Bn.exports);var cs=Bn.exports;(function(e,t){t=e.exports=cs,t.log=a,t.formatArgs=l,t.save=c,t.load=i,t.useColors=n,t.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:r(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}t.formatters.j=function(d){try{return JSON.stringify(d)}catch(s){return"[UnexpectedJSONParseError]: "+s.message}};function l(d){var s=this.useColors;if(d[0]=(s?"%c":"")+this.namespace+(s?" %c":" ")+d[0]+(s?"%c ":" ")+"+"+t.humanize(this.diff),!!s){var o="color: "+this.color;d.splice(1,0,o,"color: inherit");var u=0,Z=0;d[0].replace(/%[a-zA-Z%]/g,function(m){m!=="%%"&&(u++,m==="%c"&&(Z=u))}),d.splice(Z,0,o)}}function a(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function c(d){try{d==null?t.storage.removeItem("debug"):t.storage.debug=d}catch{}}function i(){var d;try{d=t.storage.debug}catch{}return!d&&typeof process<"u"&&"env"in process&&(d=process.env.DEBUG),d}t.enable(i());function r(){try{return window.localStorage}catch{}}})(wn,wn.exports);var Jt=wn.exports,ua=Tn(),is=at,ma=pe,rs=It,ss=da,_=Jt("engine.io-client:polling"),Za=te,os=function(){var e=zn,t=new e({xdomain:!1});return t.responseType!=null}();function te(e){var t=e&&e.forceBase64;(!os||t)&&(this.supportsBinary=!1),ua.call(this,e)}rs(te,ua),te.prototype.name="polling",te.prototype.doOpen=function(){this.poll()},te.prototype.pause=function(e){var t=this;this.readyState="pausing";function n(){_("paused"),t.readyState="paused",e()}if(this.polling||!this.writable){var l=0;this.polling&&(_("we are currently polling - waiting to pause"),l++,this.once("pollComplete",function(){_("pre-pause polling complete"),--l||n()})),this.writable||(_("we are currently writing - waiting to pause"),l++,this.once("drain",function(){_("pre-pause writing complete"),--l||n()}))}else n()},te.prototype.poll=function(){_("polling"),this.polling=!0,this.doPoll(),this.emit("poll")},te.prototype.onData=function(e){var t=this;_("polling got data %s",e);var n=function(l,a,c){if(t.readyState==="opening"&&t.onOpen(),l.type==="close")return t.onClose(),!1;t.onPacket(l)};ma.decodePayload(e,this.socket.binaryType,n),this.readyState!=="closed"&&(this.polling=!1,this.emit("pollComplete"),this.readyState==="open"?this.poll():_('ignoring poll - transport state "%s"',this.readyState))},te.prototype.doClose=function(){var e=this;function t(){_("writing close packet"),e.write([{type:"close"}])}this.readyState==="open"?(_("transport open - closing"),t()):(_("transport not open - deferring close"),this.once("open",t))},te.prototype.write=function(e){var t=this;this.writable=!1;var n=function(){t.writable=!0,t.emit("drain")};ma.encodePayload(e,this.supportsBinary,function(l){t.doWrite(l,n)})},te.prototype.uri=function(){var e=this.query||{},t=this.secure?"https":"http",n="";this.timestampRequests!==!1&&(e[this.timestampParam]=ss()),!this.supportsBinary&&!e.sid&&(e.b64=1),e=is.encode(e),this.port&&(t==="https"&&Number(this.port)!==443||t==="http"&&Number(this.port)!==80)&&(n=":"+this.port),e.length&&(e="?"+e);var l=this.hostname.indexOf(":")!==-1;return t+"://"+(l?"["+this.hostname+"]":this.hostname)+n+this.path+e};var ds=zn,ha=Za,us=kn,ms=It,Qn=Jt("engine.io-client:polling-xhr"),Zs=In;Mn.exports=Ne,Mn.exports.Request=w;function ba(){}function Ne(e){if(ha.call(this,e),this.requestTimeout=e.requestTimeout,this.extraHeaders=e.extraHeaders,typeof location<"u"){var t=location.protocol==="https:",n=location.port;n||(n=t?443:80),this.xd=typeof location<"u"&&e.hostname!==location.hostname||n!==e.port,this.xs=e.secure!==t}}ms(Ne,ha),Ne.prototype.supportsBinary=!0,Ne.prototype.request=function(e){return e=e||{},e.uri=this.uri(),e.xd=this.xd,e.xs=this.xs,e.agent=this.agent||!1,e.supportsBinary=this.supportsBinary,e.enablesXDR=this.enablesXDR,e.withCredentials=this.withCredentials,e.pfx=this.pfx,e.key=this.key,e.passphrase=this.passphrase,e.cert=this.cert,e.ca=this.ca,e.ciphers=this.ciphers,e.rejectUnauthorized=this.rejectUnauthorized,e.requestTimeout=this.requestTimeout,e.extraHeaders=this.extraHeaders,new w(e)},Ne.prototype.doWrite=function(e,t){var n=typeof e!="string"&&e!==void 0,l=this.request({method:"POST",data:e,isBinary:n}),a=this;l.on("success",t),l.on("error",function(c){a.onError("xhr post error",c)}),this.sendXhr=l},Ne.prototype.doPoll=function(){Qn("xhr poll");var e=this.request(),t=this;e.on("data",function(n){t.onData(n)}),e.on("error",function(n){t.onError("xhr poll error",n)}),this.pollXhr=e};function w(e){this.method=e.method||"GET",this.uri=e.uri,this.xd=!!e.xd,this.xs=!!e.xs,this.async=e.async!==!1,this.data=e.data!==void 0?e.data:null,this.agent=e.agent,this.isBinary=e.isBinary,this.supportsBinary=e.supportsBinary,this.enablesXDR=e.enablesXDR,this.withCredentials=e.withCredentials,this.requestTimeout=e.requestTimeout,this.pfx=e.pfx,this.key=e.key,this.passphrase=e.passphrase,this.cert=e.cert,this.ca=e.ca,this.ciphers=e.ciphers,this.rejectUnauthorized=e.rejectUnauthorized,this.extraHeaders=e.extraHeaders,this.create()}if(us(w.prototype),w.prototype.create=function(){var e={agent:this.agent,xdomain:this.xd,xscheme:this.xs,enablesXDR:this.enablesXDR};e.pfx=this.pfx,e.key=this.key,e.passphrase=this.passphrase,e.cert=this.cert,e.ca=this.ca,e.ciphers=this.ciphers,e.rejectUnauthorized=this.rejectUnauthorized;var t=this.xhr=new ds(e),n=this;try{Qn("xhr open %s: %s",this.method,this.uri),t.open(this.method,this.uri,this.async);try{if(this.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(var l in this.extraHeaders)this.extraHeaders.hasOwnProperty(l)&&t.setRequestHeader(l,this.extraHeaders[l])}}catch{}if(this.method==="POST")try{this.isBinary?t.setRequestHeader("Content-type","application/octet-stream"):t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{t.setRequestHeader("Accept","*/*")}catch{}"withCredentials"in t&&(t.withCredentials=this.withCredentials),this.requestTimeout&&(t.timeout=this.requestTimeout),this.hasXDR()?(t.onload=function(){n.onLoad()},t.onerror=function(){n.onError(t.responseText)}):t.onreadystatechange=function(){if(t.readyState===2)try{var a=t.getResponseHeader("Content-Type");(n.supportsBinary&&a==="application/octet-stream"||a==="application/octet-stream; charset=UTF-8")&&(t.responseType="arraybuffer")}catch{}t.readyState===4&&(t.status===200||t.status===1223?n.onLoad():setTimeout(function(){n.onError(typeof t.status=="number"?t.status:0)},0))},Qn("xhr data %s",this.data),t.send(this.data)}catch(a){setTimeout(function(){n.onError(a)},0);return}typeof document<"u"&&(this.index=w.requestsCount++,w.requests[this.index]=this)},w.prototype.onSuccess=function(){this.emit("success"),this.cleanup()},w.prototype.onData=function(e){this.emit("data",e),this.onSuccess()},w.prototype.onError=function(e){this.emit("error",e),this.cleanup(!0)},w.prototype.cleanup=function(e){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.hasXDR()?this.xhr.onload=this.xhr.onerror=ba:this.xhr.onreadystatechange=ba,e)try{this.xhr.abort()}catch{}typeof document<"u"&&delete w.requests[this.index],this.xhr=null}},w.prototype.onLoad=function(){var e;try{var t;try{t=this.xhr.getResponseHeader("Content-Type")}catch{}t==="application/octet-stream"||t==="application/octet-stream; charset=UTF-8"?e=this.xhr.response||this.xhr.responseText:e=this.xhr.responseText}catch(n){this.onError(n)}e!=null&&this.onData(e)},w.prototype.hasXDR=function(){return typeof XDomainRequest<"u"&&!this.xs&&this.enablesXDR},w.prototype.abort=function(){this.cleanup()},w.requestsCount=0,w.requests={},typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",pa);else if(typeof addEventListener=="function"){var hs="onpagehide"in Zs?"pagehide":"unload";addEventListener(hs,pa,!1)}}function pa(){for(var e in w.requests)w.requests.hasOwnProperty(e)&&w.requests[e].abort()}var bs=Mn.exports,Pn=Za,ps=It,Ga=In,Gs=ke,ys=/\n/g,Xs=/\\n/g,Nt;function Vs(){}function ke(e){Pn.call(this,e),this.query=this.query||{},Nt||(Nt=Ga.___eio=Ga.___eio||[]),this.index=Nt.length;var t=this;Nt.push(function(n){t.onData(n)}),this.query.j=this.index,typeof addEventListener=="function"&&addEventListener("beforeunload",function(){t.script&&(t.script.onerror=Vs)},!1)}ps(ke,Pn),ke.prototype.supportsBinary=!1,ke.prototype.doClose=function(){this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),Pn.prototype.doClose.call(this)},ke.prototype.doPoll=function(){var e=this,t=document.createElement("script");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),t.async=!0,t.src=this.uri(),t.onerror=function(a){e.onError("jsonp poll error",a)};var n=document.getElementsByTagName("script")[0];n?n.parentNode.insertBefore(t,n):(document.head||document.body).appendChild(t),this.script=t;var l=typeof navigator<"u"&&/gecko/i.test(navigator.userAgent);l&&setTimeout(function(){var a=document.createElement("iframe");document.body.appendChild(a),document.body.removeChild(a)},100)},ke.prototype.doWrite=function(e,t){var n=this;if(!this.form){var l=document.createElement("form"),a=document.createElement("textarea"),c=this.iframeId="eio_iframe_"+this.index,i;l.className="socketio",l.style.position="absolute",l.style.top="-1000px",l.style.left="-1000px",l.target=c,l.method="POST",l.setAttribute("accept-charset","utf-8"),a.name="d",l.appendChild(a),document.body.appendChild(l),this.form=l,this.area=a}this.form.action=this.uri();function r(){d(),t()}function d(){if(n.iframe)try{n.form.removeChild(n.iframe)}catch(o){n.onError("jsonp polling iframe removal error",o)}try{var s='<iframe src="javascript:0" name="'+n.iframeId+'">';i=document.createElement(s)}catch{i=document.createElement("iframe"),i.name=n.iframeId,i.src="javascript:0"}i.id=n.iframeId,n.form.appendChild(i),n.iframe=i}d(),e=e.replace(Xs,`\\
266
- `),this.area.value=e.replace(ys,"\\n");try{this.form.submit()}catch{}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){n.iframe.readyState==="complete"&&r()}:this.iframe.onload=r};const Ws=or(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var En=Tn(),Rs=pe,fs=at,Ls=It,Ys=da,vs=Jt("engine.io-client:websocket"),kt,Dn;if(typeof WebSocket<"u"?kt=WebSocket:typeof self<"u"&&(kt=self.WebSocket||self.MozWebSocket),typeof window>"u")try{Dn=Ws}catch{}var Ke=kt||Dn,gs=A;function A(e){var t=e&&e.forceBase64;t&&(this.supportsBinary=!1),this.perMessageDeflate=e.perMessageDeflate,this.usingBrowserWebSocket=kt&&!e.forceNode,this.protocols=e.protocols,this.usingBrowserWebSocket||(Ke=Dn),En.call(this,e)}Ls(A,En),A.prototype.name="websocket",A.prototype.supportsBinary=!0,A.prototype.doOpen=function(){if(this.check()){var e=this.uri(),t=this.protocols,n={};this.isReactNative||(n.agent=this.agent,n.perMessageDeflate=this.perMessageDeflate,n.pfx=this.pfx,n.key=this.key,n.passphrase=this.passphrase,n.cert=this.cert,n.ca=this.ca,n.ciphers=this.ciphers,n.rejectUnauthorized=this.rejectUnauthorized),this.extraHeaders&&(n.headers=this.extraHeaders),this.localAddress&&(n.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket&&!this.isReactNative?t?new Ke(e,t):new Ke(e):new Ke(e,t,n)}catch(l){return this.emit("error",l)}this.ws.binaryType===void 0&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},A.prototype.addEventListeners=function(){var e=this;this.ws.onopen=function(){e.onOpen()},this.ws.onclose=function(){e.onClose()},this.ws.onmessage=function(t){e.onData(t.data)},this.ws.onerror=function(t){e.onError("websocket error",t)}},A.prototype.write=function(e){var t=this;this.writable=!1;for(var n=e.length,l=0,a=n;l<a;l++)(function(i){Rs.encodePacket(i,t.supportsBinary,function(r){if(!t.usingBrowserWebSocket){var d={};if(i.options&&(d.compress=i.options.compress),t.perMessageDeflate){var s=typeof r=="string"?Buffer.byteLength(r):r.length;s<t.perMessageDeflate.threshold&&(d.compress=!1)}}try{t.usingBrowserWebSocket?t.ws.send(r):t.ws.send(r,d)}catch{vs("websocket closed before onclose event")}--n||c()})})(e[l]);function c(){t.emit("flush"),setTimeout(function(){t.writable=!0,t.emit("drain")},0)}},A.prototype.onClose=function(){En.prototype.onClose.call(this)},A.prototype.doClose=function(){typeof this.ws<"u"&&this.ws.close()},A.prototype.uri=function(){var e=this.query||{},t=this.secure?"wss":"ws",n="";this.port&&(t==="wss"&&Number(this.port)!==443||t==="ws"&&Number(this.port)!==80)&&(n=":"+this.port),this.timestampRequests&&(e[this.timestampParam]=Ys()),this.supportsBinary||(e.b64=1),e=fs.encode(e),e.length&&(e="?"+e);var l=this.hostname.indexOf(":")!==-1;return t+"://"+(l?"["+this.hostname+"]":this.hostname)+n+this.path+e},A.prototype.check=function(){return!!Ke&&!("__initialize"in Ke&&this.name===A.prototype.name)};var Fs=zn,Cs=bs,xs=Gs,Ss=gs;gt.polling=Is,gt.websocket=Ss;function Is(e){var t,n=!1,l=!1,a=e.jsonp!==!1;if(typeof location<"u"){var c=location.protocol==="https:",i=location.port;i||(i=c?443:80),n=e.hostname!==location.hostname||i!==e.port,l=e.secure!==c}if(e.xdomain=n,e.xscheme=l,t=new Fs(e),"open"in t&&!e.forceJSONP)return new Cs(e);if(!a)throw new Error("JSONP disabled");return new xs(e)}var zs=[].indexOf,ya=function(e,t){if(zs)return e.indexOf(t);for(var n=0;n<e.length;++n)if(e[n]===t)return n;return-1},Ms=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Js=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],Ns=function(t){var n=t,l=t.indexOf("["),a=t.indexOf("]");l!=-1&&a!=-1&&(t=t.substring(0,l)+t.substring(l,a).replace(/:/g,";")+t.substring(a,t.length));for(var c=Ms.exec(t||""),i={},r=14;r--;)i[Js[r]]=c[r]||"";return l!=-1&&a!=-1&&(i.source=n,i.host=i.host.substring(1,i.host.length-1).replace(/;/g,":"),i.authority=i.authority.replace("[","").replace("]","").replace(/;/g,":"),i.ipv6uri=!0),i.pathNames=ks(i,i.path),i.queryKey=Ks(i,i.query),i};function ks(e,t){var n=/\/{2,9}/g,l=t.replace(n,"/").split("/");return(t.substr(0,1)=="/"||t.length===0)&&l.splice(0,1),t.substr(t.length-1,1)=="/"&&l.splice(l.length-1,1),l}function Ks(e,t){var n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(l,a,c){a&&(n[a]=c)}),n}var Ts=gt,Hs=kn,k=Jt("engine.io-client:socket"),Us=ya,Xa=pe,Va=Ns,ws=at,Bs=S;function S(e,t){if(!(this instanceof S))return new S(e,t);t=t||{},e&&typeof e=="object"&&(t=e,e=null),e?(e=Va(e),t.hostname=e.host,t.secure=e.protocol==="https"||e.protocol==="wss",t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=Va(t.host).host),this.secure=t.secure!=null?t.secure:typeof location<"u"&&location.protocol==="https:",t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.agent=t.agent||!1,this.hostname=t.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=t.port||(typeof location<"u"&&location.port?location.port:this.secure?443:80),this.query=t.query||{},typeof this.query=="string"&&(this.query=ws.decode(this.query)),this.upgrade=t.upgrade!==!1,this.path=(t.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!t.forceJSONP,this.jsonp=t.jsonp!==!1,this.forceBase64=!!t.forceBase64,this.enablesXDR=!!t.enablesXDR,this.withCredentials=t.withCredentials!==!1,this.timestampParam=t.timestampParam||"t",this.timestampRequests=t.timestampRequests,this.transports=t.transports||["polling","websocket"],this.transportOptions=t.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=t.policyPort||843,this.rememberUpgrade=t.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=t.onlyBinaryUpgrades,this.perMessageDeflate=t.perMessageDeflate!==!1?t.perMessageDeflate||{}:!1,this.perMessageDeflate===!0&&(this.perMessageDeflate={}),this.perMessageDeflate&&this.perMessageDeflate.threshold==null&&(this.perMessageDeflate.threshold=1024),this.pfx=t.pfx||null,this.key=t.key||null,this.passphrase=t.passphrase||null,this.cert=t.cert||null,this.ca=t.ca||null,this.ciphers=t.ciphers||null,this.rejectUnauthorized=t.rejectUnauthorized===void 0?!0:t.rejectUnauthorized,this.forceNode=!!t.forceNode,this.isReactNative=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative",(typeof self>"u"||this.isReactNative)&&(t.extraHeaders&&Object.keys(t.extraHeaders).length>0&&(this.extraHeaders=t.extraHeaders),t.localAddress&&(this.localAddress=t.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,this.open()}S.priorWebsocketSuccess=!1,Hs(S.prototype),S.protocol=Xa.protocol,S.Socket=S,S.Transport=Tn(),S.transports=gt,S.parser=pe,S.prototype.createTransport=function(e){k('creating transport "%s"',e);var t=Qs(this.query);t.EIO=Xa.protocol,t.transport=e;var n=this.transportOptions[e]||{};this.id&&(t.sid=this.id);var l=new Ts[e]({query:t,socket:this,agent:n.agent||this.agent,hostname:n.hostname||this.hostname,port:n.port||this.port,secure:n.secure||this.secure,path:n.path||this.path,forceJSONP:n.forceJSONP||this.forceJSONP,jsonp:n.jsonp||this.jsonp,forceBase64:n.forceBase64||this.forceBase64,enablesXDR:n.enablesXDR||this.enablesXDR,withCredentials:n.withCredentials||this.withCredentials,timestampRequests:n.timestampRequests||this.timestampRequests,timestampParam:n.timestampParam||this.timestampParam,policyPort:n.policyPort||this.policyPort,pfx:n.pfx||this.pfx,key:n.key||this.key,passphrase:n.passphrase||this.passphrase,cert:n.cert||this.cert,ca:n.ca||this.ca,ciphers:n.ciphers||this.ciphers,rejectUnauthorized:n.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:n.perMessageDeflate||this.perMessageDeflate,extraHeaders:n.extraHeaders||this.extraHeaders,forceNode:n.forceNode||this.forceNode,localAddress:n.localAddress||this.localAddress,requestTimeout:n.requestTimeout||this.requestTimeout,protocols:n.protocols||void 0,isReactNative:this.isReactNative});return l};function Qs(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}S.prototype.open=function(){var e;if(this.rememberUpgrade&&S.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)e="websocket";else if(this.transports.length===0){var t=this;setTimeout(function(){t.emit("error","No transports available")},0);return}else e=this.transports[0];this.readyState="opening";try{e=this.createTransport(e)}catch{this.transports.shift(),this.open();return}e.open(),this.setTransport(e)},S.prototype.setTransport=function(e){k("setting transport %s",e.name);var t=this;this.transport&&(k("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=e,e.on("drain",function(){t.onDrain()}).on("packet",function(n){t.onPacket(n)}).on("error",function(n){t.onError(n)}).on("close",function(){t.onClose("transport close")})},S.prototype.probe=function(e){k('probing transport "%s"',e);var t=this.createTransport(e,{probe:1}),n=!1,l=this;S.priorWebsocketSuccess=!1;function a(){if(l.onlyBinaryUpgrades){var u=!this.supportsBinary&&l.transport.supportsBinary;n=n||u}n||(k('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",function(Z){if(!n)if(Z.type==="pong"&&Z.data==="probe"){if(k('probe transport "%s" pong',e),l.upgrading=!0,l.emit("upgrading",t),!t)return;S.priorWebsocketSuccess=t.name==="websocket",k('pausing current transport "%s"',l.transport.name),l.transport.pause(function(){n||l.readyState!=="closed"&&(k("changing transport and sending upgrade packet"),o(),l.setTransport(t),t.send([{type:"upgrade"}]),l.emit("upgrade",t),t=null,l.upgrading=!1,l.flush())})}else{k('probe transport "%s" failed',e);var m=new Error("probe error");m.transport=t.name,l.emit("upgradeError",m)}}))}function c(){n||(n=!0,o(),t.close(),t=null)}function i(u){var Z=new Error("probe error: "+u);Z.transport=t.name,c(),k('probe transport "%s" failed because of error: %s',e,u),l.emit("upgradeError",Z)}function r(){i("transport closed")}function d(){i("socket closed")}function s(u){t&&u.name!==t.name&&(k('"%s" works - aborting "%s"',u.name,t.name),c())}function o(){t.removeListener("open",a),t.removeListener("error",i),t.removeListener("close",r),l.removeListener("close",d),l.removeListener("upgrading",s)}t.once("open",a),t.once("error",i),t.once("close",r),this.once("close",d),this.once("upgrading",s),t.open()},S.prototype.onOpen=function(){if(k("socket open"),this.readyState="open",S.priorWebsocketSuccess=this.transport.name==="websocket",this.emit("open"),this.flush(),this.readyState==="open"&&this.upgrade&&this.transport.pause){k("starting upgrade probes");for(var e=0,t=this.upgrades.length;e<t;e++)this.probe(this.upgrades[e])}},S.prototype.onPacket=function(e){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(k('socket receive: type "%s", data "%s"',e.type,e.data),this.emit("packet",e),this.emit("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"pong":this.setPing(),this.emit("pong");break;case"error":var t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emit("data",e.data),this.emit("message",e.data);break}else k('packet received with socket readyState "%s"',this.readyState)},S.prototype.onHandshake=function(e){this.emit("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.onOpen(),this.readyState!=="closed"&&(this.setPing(),this.removeListener("heartbeat",this.onHeartbeat),this.on("heartbeat",this.onHeartbeat))},S.prototype.onHeartbeat=function(e){clearTimeout(this.pingTimeoutTimer);var t=this;t.pingTimeoutTimer=setTimeout(function(){t.readyState!=="closed"&&t.onClose("ping timeout")},e||t.pingInterval+t.pingTimeout)},S.prototype.setPing=function(){var e=this;clearTimeout(e.pingIntervalTimer),e.pingIntervalTimer=setTimeout(function(){k("writing ping packet - expecting pong within %sms",e.pingTimeout),e.ping(),e.onHeartbeat(e.pingTimeout)},e.pingInterval)},S.prototype.ping=function(){var e=this;this.sendPacket("ping",function(){e.emit("ping")})},S.prototype.onDrain=function(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emit("drain"):this.flush()},S.prototype.flush=function(){this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(k("flushing %d packets in socket",this.writeBuffer.length),this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emit("flush"))},S.prototype.write=S.prototype.send=function(e,t,n){return this.sendPacket("message",e,t,n),this},S.prototype.sendPacket=function(e,t,n,l){if(typeof t=="function"&&(l=t,t=void 0),typeof n=="function"&&(l=n,n=null),!(this.readyState==="closing"||this.readyState==="closed")){n=n||{},n.compress=n.compress!==!1;var a={type:e,data:t,options:n};this.emit("packetCreate",a),this.writeBuffer.push(a),l&&this.once("flush",l),this.flush()}},S.prototype.close=function(){if(this.readyState==="opening"||this.readyState==="open"){this.readyState="closing";var e=this;this.writeBuffer.length?this.once("drain",function(){this.upgrading?l():t()}):this.upgrading?l():t()}function t(){e.onClose("forced close"),k("socket closing - telling transport to close"),e.transport.close()}function n(){e.removeListener("upgrade",n),e.removeListener("upgradeError",n),t()}function l(){e.once("upgrade",n),e.once("upgradeError",n)}return this},S.prototype.onError=function(e){k("socket error %j",e),S.priorWebsocketSuccess=!1,this.emit("error",e),this.onClose("transport error",e)},S.prototype.onClose=function(e,t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){k('socket close with reason: "%s"',e);var n=this;clearTimeout(this.pingIntervalTimer),clearTimeout(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),this.readyState="closed",this.id=null,this.emit("close",e,t),n.writeBuffer=[],n.prevBufferLen=0}},S.prototype.filterUpgrades=function(e){for(var t=[],n=0,l=e.length;n<l;n++)~Us(this.transports,e[n])&&t.push(e[n]);return t},xn.exports=Bs,xn.exports.parser=pe;var Ps=xn.exports,Wa={exports:{}},Ra={exports:{}};(function(e){e.exports=t;function t(l){if(l)return n(l)}function n(l){for(var a in t.prototype)l[a]=t.prototype[a];return l}t.prototype.on=t.prototype.addEventListener=function(l,a){return this._callbacks=this._callbacks||{},(this._callbacks["$"+l]=this._callbacks["$"+l]||[]).push(a),this},t.prototype.once=function(l,a){function c(){this.off(l,c),a.apply(this,arguments)}return c.fn=a,this.on(l,c),this},t.prototype.off=t.prototype.removeListener=t.prototype.removeAllListeners=t.prototype.removeEventListener=function(l,a){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var c=this._callbacks["$"+l];if(!c)return this;if(arguments.length==1)return delete this._callbacks["$"+l],this;for(var i,r=0;r<c.length;r++)if(i=c[r],i===a||i.fn===a){c.splice(r,1);break}return this},t.prototype.emit=function(l){this._callbacks=this._callbacks||{};var a=[].slice.call(arguments,1),c=this._callbacks["$"+l];if(c){c=c.slice(0);for(var i=0,r=c.length;i<r;++i)c[i].apply(this,a)}return this},t.prototype.listeners=function(l){return this._callbacks=this._callbacks||{},this._callbacks["$"+l]||[]},t.prototype.hasListeners=function(l){return!!this.listeners(l).length}})(Ra);var fa=Ra.exports,Es=Ds;function Ds(e,t){var n=[];t=t||0;for(var l=t||0;l<e.length;l++)n[l-t]=e[l];return n}var La=js;function js(e,t,n){return e.on(t,n),{destroy:function(){e.removeListener(t,n)}}}var Ya=[].slice,va=function(e,t){if(typeof t=="string"&&(t=e[t]),typeof t!="function")throw new Error("bind() requires a function");var n=Ya.call(arguments,2);return function(){return t.apply(e,n.concat(Ya.call(arguments)))}},jn={};jn.encode=function(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t},jn.decode=function(e){for(var t={},n=e.split("&"),l=0,a=n.length;l<a;l++){var c=n[l].split("=");t[decodeURIComponent(c[0])]=decodeURIComponent(c[1])}return t},function(e,t){var n=Lt,l=fa,a=Es,c=La,i=va,r=ft("socket.io-client:socket"),d=jn,s=ql;e.exports=Z;var o={connect:1,connect_error:1,connect_timeout:1,connecting:1,disconnect:1,error:1,reconnect:1,reconnect_attempt:1,reconnect_failed:1,reconnect_error:1,reconnecting:1,ping:1,pong:1},u=l.prototype.emit;function Z(m,p,h){this.io=m,this.nsp=p,this.json=this,this.ids=0,this.acks={},this.receiveBuffer=[],this.sendBuffer=[],this.connected=!1,this.disconnected=!0,this.flags={},h&&h.query&&(this.query=h.query),this.io.autoConnect&&this.open()}l(Z.prototype),Z.prototype.subEvents=function(){if(!this.subs){var m=this.io;this.subs=[c(m,"open",i(this,"onopen")),c(m,"packet",i(this,"onpacket")),c(m,"close",i(this,"onclose"))]}},Z.prototype.open=Z.prototype.connect=function(){return this.connected?this:(this.subEvents(),this.io.open(),this.io.readyState==="open"&&this.onopen(),this.emit("connecting"),this)},Z.prototype.send=function(){var m=a(arguments);return m.unshift("message"),this.emit.apply(this,m),this},Z.prototype.emit=function(m){if(o.hasOwnProperty(m))return u.apply(this,arguments),this;var p=a(arguments),h={type:(this.flags.binary!==void 0?this.flags.binary:s(p))?n.BINARY_EVENT:n.EVENT,data:p};return h.options={},h.options.compress=!this.flags||this.flags.compress!==!1,typeof p[p.length-1]=="function"&&(r("emitting packet with ack id %d",this.ids),this.acks[this.ids]=p.pop(),h.id=this.ids++),this.connected?this.packet(h):this.sendBuffer.push(h),this.flags={},this},Z.prototype.packet=function(m){m.nsp=this.nsp,this.io.packet(m)},Z.prototype.onopen=function(){if(r("transport is open - connecting"),this.nsp!=="/")if(this.query){var m=typeof this.query=="object"?d.encode(this.query):this.query;r("sending connect packet with query %s",m),this.packet({type:n.CONNECT,query:m})}else this.packet({type:n.CONNECT})},Z.prototype.onclose=function(m){r("close (%s)",m),this.connected=!1,this.disconnected=!0,delete this.id,this.emit("disconnect",m)},Z.prototype.onpacket=function(m){var p=m.nsp===this.nsp,h=m.type===n.ERROR&&m.nsp==="/";if(!(!p&&!h))switch(m.type){case n.CONNECT:this.onconnect();break;case n.EVENT:this.onevent(m);break;case n.BINARY_EVENT:this.onevent(m);break;case n.ACK:this.onack(m);break;case n.BINARY_ACK:this.onack(m);break;case n.DISCONNECT:this.ondisconnect();break;case n.ERROR:this.emit("error",m.data);break}},Z.prototype.onevent=function(m){var p=m.data||[];r("emitting event %j",p),m.id!=null&&(r("attaching ack callback to event"),p.push(this.ack(m.id))),this.connected?u.apply(this,p):this.receiveBuffer.push(p)},Z.prototype.ack=function(m){var p=this,h=!1;return function(){if(!h){h=!0;var R=a(arguments);r("sending ack %j",R),p.packet({type:s(R)?n.BINARY_ACK:n.ACK,id:m,data:R})}}},Z.prototype.onack=function(m){var p=this.acks[m.id];typeof p=="function"?(r("calling ack %s with %j",m.id,m.data),p.apply(this,m.data),delete this.acks[m.id]):r("bad ack %s",m.id)},Z.prototype.onconnect=function(){this.connected=!0,this.disconnected=!1,this.emit("connect"),this.emitBuffered()},Z.prototype.emitBuffered=function(){var m;for(m=0;m<this.receiveBuffer.length;m++)u.apply(this,this.receiveBuffer[m]);for(this.receiveBuffer=[],m=0;m<this.sendBuffer.length;m++)this.packet(this.sendBuffer[m]);this.sendBuffer=[]},Z.prototype.ondisconnect=function(){r("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")},Z.prototype.destroy=function(){if(this.subs){for(var m=0;m<this.subs.length;m++)this.subs[m].destroy();this.subs=null}this.io.destroy(this)},Z.prototype.close=Z.prototype.disconnect=function(){return this.connected&&(r("performing disconnect (%s)",this.nsp),this.packet({type:n.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this},Z.prototype.compress=function(m){return this.flags.compress=m,this},Z.prototype.binary=function(m){return this.flags.binary=m,this}}(Wa);var ga=Wa.exports,Os=Te;function Te(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Te.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+n:e-n}return Math.min(e,this.max)|0},Te.prototype.reset=function(){this.attempts=0},Te.prototype.setMin=function(e){this.ms=e},Te.prototype.setMax=function(e){this.max=e},Te.prototype.setJitter=function(e){this.jitter=e};var As=Ps,_s=ga,$s=fa,qs=Lt,de=La,He=va,E=ft("socket.io-client:manager"),Fa=ya,eo=Os,Ca=Object.prototype.hasOwnProperty,xa=I;function I(e,t){if(!(this instanceof I))return new I(e,t);e&&typeof e=="object"&&(t=e,e=void 0),t=t||{},t.path=t.path||"/socket.io",this.nsps={},this.subs=[],this.opts=t,this.reconnection(t.reconnection!==!1),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(t.randomizationFactor||.5),this.backoff=new eo({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(t.timeout==null?2e4:t.timeout),this.readyState="closed",this.uri=e,this.connecting=[],this.lastPing=null,this.encoding=!1,this.packetBuffer=[];var n=t.parser||qs;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this.autoConnect=t.autoConnect!==!1,this.autoConnect&&this.open()}I.prototype.emitAll=function(){this.emit.apply(this,arguments);for(var e in this.nsps)Ca.call(this.nsps,e)&&this.nsps[e].emit.apply(this.nsps[e],arguments)},I.prototype.updateSocketIds=function(){for(var e in this.nsps)Ca.call(this.nsps,e)&&(this.nsps[e].id=this.generateId(e))},I.prototype.generateId=function(e){return(e==="/"?"":e+"#")+this.engine.id},$s(I.prototype),I.prototype.reconnection=function(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection},I.prototype.reconnectionAttempts=function(e){return arguments.length?(this._reconnectionAttempts=e,this):this._reconnectionAttempts},I.prototype.reconnectionDelay=function(e){return arguments.length?(this._reconnectionDelay=e,this.backoff&&this.backoff.setMin(e),this):this._reconnectionDelay},I.prototype.randomizationFactor=function(e){return arguments.length?(this._randomizationFactor=e,this.backoff&&this.backoff.setJitter(e),this):this._randomizationFactor},I.prototype.reconnectionDelayMax=function(e){return arguments.length?(this._reconnectionDelayMax=e,this.backoff&&this.backoff.setMax(e),this):this._reconnectionDelayMax},I.prototype.timeout=function(e){return arguments.length?(this._timeout=e,this):this._timeout},I.prototype.maybeReconnectOnOpen=function(){!this.reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()},I.prototype.open=I.prototype.connect=function(e,t){if(E("readyState %s",this.readyState),~this.readyState.indexOf("open"))return this;E("opening %s",this.uri),this.engine=As(this.uri,this.opts);var n=this.engine,l=this;this.readyState="opening",this.skipReconnect=!1;var a=de(n,"open",function(){l.onopen(),e&&e()}),c=de(n,"error",function(d){if(E("connect_error"),l.cleanup(),l.readyState="closed",l.emitAll("connect_error",d),e){var s=new Error("Connection error");s.data=d,e(s)}else l.maybeReconnectOnOpen()});if(this._timeout!==!1){var i=this._timeout;E("connect attempt will timeout after %d",i);var r=setTimeout(function(){E("connect attempt timed out after %d",i),a.destroy(),n.close(),n.emit("error","timeout"),l.emitAll("connect_timeout",i)},i);this.subs.push({destroy:function(){clearTimeout(r)}})}return this.subs.push(a),this.subs.push(c),this},I.prototype.onopen=function(){E("open"),this.cleanup(),this.readyState="open",this.emit("open");var e=this.engine;this.subs.push(de(e,"data",He(this,"ondata"))),this.subs.push(de(e,"ping",He(this,"onping"))),this.subs.push(de(e,"pong",He(this,"onpong"))),this.subs.push(de(e,"error",He(this,"onerror"))),this.subs.push(de(e,"close",He(this,"onclose"))),this.subs.push(de(this.decoder,"decoded",He(this,"ondecoded")))},I.prototype.onping=function(){this.lastPing=new Date,this.emitAll("ping")},I.prototype.onpong=function(){this.emitAll("pong",new Date-this.lastPing)},I.prototype.ondata=function(e){this.decoder.add(e)},I.prototype.ondecoded=function(e){this.emit("packet",e)},I.prototype.onerror=function(e){E("error",e),this.emitAll("error",e)},I.prototype.socket=function(e,t){var n=this.nsps[e];if(!n){n=new _s(this,e,t),this.nsps[e]=n;var l=this;n.on("connecting",a),n.on("connect",function(){n.id=l.generateId(e)}),this.autoConnect&&a()}function a(){~Fa(l.connecting,n)||l.connecting.push(n)}return n},I.prototype.destroy=function(e){var t=Fa(this.connecting,e);~t&&this.connecting.splice(t,1),!this.connecting.length&&this.close()},I.prototype.packet=function(e){E("writing packet %j",e);var t=this;e.query&&e.type===0&&(e.nsp+="?"+e.query),t.encoding?t.packetBuffer.push(e):(t.encoding=!0,this.encoder.encode(e,function(n){for(var l=0;l<n.length;l++)t.engine.write(n[l],e.options);t.encoding=!1,t.processPacketQueue()}))},I.prototype.processPacketQueue=function(){if(this.packetBuffer.length>0&&!this.encoding){var e=this.packetBuffer.shift();this.packet(e)}},I.prototype.cleanup=function(){E("cleanup");for(var e=this.subs.length,t=0;t<e;t++){var n=this.subs.shift();n.destroy()}this.packetBuffer=[],this.encoding=!1,this.lastPing=null,this.decoder.destroy()},I.prototype.close=I.prototype.disconnect=function(){E("disconnect"),this.skipReconnect=!0,this.reconnecting=!1,this.readyState==="opening"&&this.cleanup(),this.backoff.reset(),this.readyState="closed",this.engine&&this.engine.close()},I.prototype.onclose=function(e){E("onclose"),this.cleanup(),this.backoff.reset(),this.readyState="closed",this.emit("close",e),this._reconnection&&!this.skipReconnect&&this.reconnect()},I.prototype.reconnect=function(){if(this.reconnecting||this.skipReconnect)return this;var e=this;if(this.backoff.attempts>=this._reconnectionAttempts)E("reconnect failed"),this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var t=this.backoff.duration();E("will wait %dms before reconnect attempt",t),this.reconnecting=!0;var n=setTimeout(function(){e.skipReconnect||(E("attempting reconnect"),e.emitAll("reconnect_attempt",e.backoff.attempts),e.emitAll("reconnecting",e.backoff.attempts),!e.skipReconnect&&e.open(function(l){l?(E("reconnect attempt error"),e.reconnecting=!1,e.reconnect(),e.emitAll("reconnect_error",l.data)):(E("reconnect success"),e.onreconnect())}))},t);this.subs.push({destroy:function(){clearTimeout(n)}})}},I.prototype.onreconnect=function(){var e=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",e)},function(e,t){var n=Gr,l=Lt,a=xa,c=ft("socket.io-client");e.exports=t=r;var i=t.managers={};function r(d,s){typeof d=="object"&&(s=d,d=void 0),s=s||{};var o=n(d),u=o.source,Z=o.id,m=o.path,p=i[Z]&&m in i[Z].nsps,h=s.forceNew||s["force new connection"]||s.multiplex===!1||p,R;return h?(c("ignoring socket cache for %s",u),R=a(u,s)):(i[Z]||(c("new io instance for %s",u),i[Z]=a(u,s)),R=i[Z]),o.query&&!s.query&&(s.query=o.query),R.socket(o.path,s)}t.protocol=l.protocol,t.connect=r,t.Manager=xa,t.Socket=ga}(Wn,Wn.exports);var to=Wn.exports;const no=Pl(to);class lo{constructor(t){this.isConnected=!1,this.folderName="",this.callback=t,this.name=""}connect(t){if(this.isConnected)return;this.isConnected=!0;const n=no("https://www.virtualott.com",{reconnect:!0});n.on("connect",()=>{console.log("socket connected"),n.emit("setinfo",{device:ze.getDeviceName()},l=>{this.name=l.name,n.emit("join",t,a=>{console.log(`join ${t} room`),this.callback("join",a)})})}),n.on("error",l=>{console.error(`error::${l}`)}),n.on("disconnect",l=>{console.error(`disconnect from signaling::${l}`)}),n.on("messageroom",l=>{this.callback("messageroom",l),console.log("messageroom: ",l)}),n.on("ads",l=>{this.callback("ads",l),console.log("ads:",l)})}}class Sa{constructor(t,n){let l=[];const a=new lo((c,i)=>{switch(c){case"roommembers":console.log("roommembers message: ",i);break;case"join":const r=document.getElementById("name");r&&(r.textContent=a.name);break;case"messageroom":if(i.player===a.name)if(i.url){const d="#external";window.BB.RENDER_IN_WORKER?t.addAdvertisement({name:d,path:i.url,isSelected:!0}):t.addAdvertisement(d,i.url,()=>{t.selectAd(d)})}else l=i.ads,l.length&&t.selectAd(l[0]);break;case"ads":l=i,l.length&&t.selectAd(l[0]);break}});a.connect(n.augmentation.channelName),n.augmentation.logoURL?window.BB.RENDER_IN_WORKER?t.addAdvertisement({name:"#ad",path:n.augmentation.logoURL,isSelected:!1}):t.addAdvertisement("#ad",n.augmentation.logoURL):fetch("https://www.virtualott.com/ads/"+n.augmentation.channelName).then(async c=>{(await c.json()).forEach(r=>{window.BB.RENDER_IN_WORKER?t.addAdvertisement({name:`#${r.name}`,path:r.url,isSelected:!0}):t.addAdvertisement(`#${r.name}`,r.url)})})}}const Ia="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEsoRSl7cmV0dXJuIEUmJkUuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEUsImRlZmF1bHQiKT9FLmRlZmF1bHQ6RX12YXIgTz17fTsoZnVuY3Rpb24oRSl7dmFyIGg9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRGF0ZSxlPTQsaT0zLHM9MixuPTEsZj1lLGQ9e3NldExvZ0xldmVsOmZ1bmN0aW9uKGMpe2M9PXRoaXMuZGVidWc/Zj1uOmM9PXRoaXMuaW5mbz9mPXM6Yz09dGhpcy53YXJuP2Y9aTooYz09dGhpcy5lcnJvcixmPWUpfSxkZWJ1ZzpmdW5jdGlvbihjLG0pe2NvbnNvbGUuZGVidWc9PT12b2lkIDAmJihjb25zb2xlLmRlYnVnPWNvbnNvbGUubG9nKSxuPj1mJiZjb25zb2xlLmRlYnVnKCJbIitoLmdldER1cmF0aW9uU3RyaW5nKG5ldyBEYXRlLXQsMWUzKSsiXSIsIlsiK2MrIl0iLG0pfSxsb2c6ZnVuY3Rpb24oYyxtKXt0aGlzLmRlYnVnKGMubXNnKX0saW5mbzpmdW5jdGlvbihjLG0pe3M+PWYmJmNvbnNvbGUuaW5mbygiWyIraC5nZXREdXJhdGlvblN0cmluZyhuZXcgRGF0ZS10LDFlMykrIl0iLCJbIitjKyJdIixtKX0sd2FybjpmdW5jdGlvbihjLG0pe2k+PWYmJmNvbnNvbGUud2FybigiWyIraC5nZXREdXJhdGlvblN0cmluZyhuZXcgRGF0ZS10LDFlMykrIl0iLCJbIitjKyJdIixtKX0sZXJyb3I6ZnVuY3Rpb24oYyxtKXtlPj1mJiZjb25zb2xlLmVycm9yKCJbIitoLmdldER1cmF0aW9uU3RyaW5nKG5ldyBEYXRlLXQsMWUzKSsiXSIsIlsiK2MrIl0iLG0pfX07cmV0dXJuIGR9KCk7aC5nZXREdXJhdGlvblN0cmluZz1mdW5jdGlvbih0LGUpe3ZhciBpO2Z1bmN0aW9uIHMoeCxVKXtmb3IodmFyIGI9IiIreCx3PWIuc3BsaXQoIi4iKTt3WzBdLmxlbmd0aDxVOyl3WzBdPSIwIit3WzBdO3JldHVybiB3LmpvaW4oIi4iKX10PDA/KGk9ITAsdD0tdCk6aT0hMTt2YXIgbj1lfHwxLGY9dC9uLGQ9TWF0aC5mbG9vcihmLzM2MDApO2YtPWQqMzYwMDt2YXIgYz1NYXRoLmZsb29yKGYvNjApO2YtPWMqNjA7dmFyIG09ZioxZTM7cmV0dXJuIGY9TWF0aC5mbG9vcihmKSxtLT1mKjFlMyxtPU1hdGguZmxvb3IobSksKGk/Ii0iOiIiKStkKyI6IitzKGMsMikrIjoiK3MoZiwyKSsiLiIrcyhtLDMpfSxoLnByaW50UmFuZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoO2lmKGU+MCl7Zm9yKHZhciBpPSIiLHM9MDtzPGU7cysrKXM+MCYmKGkrPSIsIiksaSs9IlsiK2guZ2V0RHVyYXRpb25TdHJpbmcodC5zdGFydChzKSkrIiwiK2guZ2V0RHVyYXRpb25TdHJpbmcodC5lbmQocykpKyJdIjtyZXR1cm4gaX1lbHNlIHJldHVybiIoZW1wdHkpIn0sRS5Mb2c9aDt2YXIgbz1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpdGhpcy5idWZmZXI9dCx0aGlzLmRhdGF2aWV3PW5ldyBEYXRhVmlldyh0KTtlbHNlIHRocm93Ik5lZWRzIGFuIGFycmF5IGJ1ZmZlciI7dGhpcy5wb3NpdGlvbj0wfTtvLnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSxvLnByb3RvdHlwZS5nZXRFbmRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RofSxvLnByb3RvdHlwZS5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aH0sby5wcm90b3R5cGUuc2Vlaz1mdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgsdCkpO3JldHVybiB0aGlzLnBvc2l0aW9uPWlzTmFOKGUpfHwhaXNGaW5pdGUoZSk/MDplLCEwfSxvLnByb3RvdHlwZS5pc0Vvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFBvc2l0aW9uKCk+PXRoaXMuZ2V0RW5kUG9zaXRpb24oKX0sby5wcm90b3R5cGUucmVhZEFueUludD1mdW5jdGlvbih0LGUpe3ZhciBpPTA7aWYodGhpcy5wb3NpdGlvbit0PD10aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKXtzd2l0Y2godCl7Y2FzZSAxOmU/aT10aGlzLmRhdGF2aWV3LmdldEludDgodGhpcy5wb3NpdGlvbik6aT10aGlzLmRhdGF2aWV3LmdldFVpbnQ4KHRoaXMucG9zaXRpb24pO2JyZWFrO2Nhc2UgMjplP2k9dGhpcy5kYXRhdmlldy5nZXRJbnQxNih0aGlzLnBvc2l0aW9uKTppPXRoaXMuZGF0YXZpZXcuZ2V0VWludDE2KHRoaXMucG9zaXRpb24pO2JyZWFrO2Nhc2UgMzppZihlKXRocm93Ik5vIG1ldGhvZCBmb3IgcmVhZGluZyBzaWduZWQgMjQgYml0cyB2YWx1ZXMiO2k9dGhpcy5kYXRhdmlldy5nZXRVaW50OCh0aGlzLnBvc2l0aW9uKTw8MTYsaXw9dGhpcy5kYXRhdmlldy5nZXRVaW50OCh0aGlzLnBvc2l0aW9uKzEpPDw4LGl8PXRoaXMuZGF0YXZpZXcuZ2V0VWludDgodGhpcy5wb3NpdGlvbisyKTticmVhaztjYXNlIDQ6ZT9pPXRoaXMuZGF0YXZpZXcuZ2V0SW50MzIodGhpcy5wb3NpdGlvbik6aT10aGlzLmRhdGF2aWV3LmdldFVpbnQzMih0aGlzLnBvc2l0aW9uKTticmVhaztjYXNlIDg6aWYoZSl0aHJvdyJObyBtZXRob2QgZm9yIHJlYWRpbmcgc2lnbmVkIDY0IGJpdHMgdmFsdWVzIjtpPXRoaXMuZGF0YXZpZXcuZ2V0VWludDMyKHRoaXMucG9zaXRpb24pPDwzMixpfD10aGlzLmRhdGF2aWV3LmdldFVpbnQzMih0aGlzLnBvc2l0aW9uKzQpO2JyZWFrO2RlZmF1bHQ6dGhyb3cicmVhZEludCBtZXRob2Qgbm90IGltcGxlbWVudGVkIGZvciBzaXplOiAiK3R9cmV0dXJuIHRoaXMucG9zaXRpb24rPXQsaX1lbHNlIHRocm93Ik5vdCBlbm91Z2ggYnl0ZXMgaW4gYnVmZmVyIn0sby5wcm90b3R5cGUucmVhZFVpbnQ4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCgxLCExKX0sby5wcm90b3R5cGUucmVhZFVpbnQxNj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRBbnlJbnQoMiwhMSl9LG8ucHJvdG90eXBlLnJlYWRVaW50MjQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkQW55SW50KDMsITEpfSxvLnByb3RvdHlwZS5yZWFkVWludDMyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCg0LCExKX0sby5wcm90b3R5cGUucmVhZFVpbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRBbnlJbnQoOCwhMSl9LG8ucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24odCl7aWYodGhpcy5wb3NpdGlvbit0PD10aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKXtmb3IodmFyIGU9IiIsaT0wO2k8dDtpKyspZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLnJlYWRVaW50OCgpKTtyZXR1cm4gZX1lbHNlIHRocm93Ik5vdCBlbm91Z2ggYnl0ZXMgaW4gYnVmZmVyIn0sby5wcm90b3R5cGUucmVhZENTdHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W107Oyl7dmFyIGU9dGhpcy5yZWFkVWludDgoKTtpZihlIT09MCl0LnB1c2goZSk7ZWxzZSBicmVha31yZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHQpfSxvLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRBbnlJbnQoMSwhMCl9LG8ucHJvdG90eXBlLnJlYWRJbnQxNj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRBbnlJbnQoMiwhMCl9LG8ucHJvdG90eXBlLnJlYWRJbnQzMj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRBbnlJbnQoNCwhMCl9LG8ucHJvdG90eXBlLnJlYWRJbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRBbnlJbnQoOCwhMSl9LG8ucHJvdG90eXBlLnJlYWRVaW50OEFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgVWludDhBcnJheSh0KSxpPTA7aTx0O2krKyllW2ldPXRoaXMucmVhZFVpbnQ4KCk7cmV0dXJuIGV9LG8ucHJvdG90eXBlLnJlYWRJbnQxNkFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgSW50MTZBcnJheSh0KSxpPTA7aTx0O2krKyllW2ldPXRoaXMucmVhZEludDE2KCk7cmV0dXJuIGV9LG8ucHJvdG90eXBlLnJlYWRVaW50MTZBcnJheT1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEludDE2QXJyYXkodCksaT0wO2k8dDtpKyspZVtpXT10aGlzLnJlYWRVaW50MTYoKTtyZXR1cm4gZX0sby5wcm90b3R5cGUucmVhZFVpbnQzMkFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgVWludDMyQXJyYXkodCksaT0wO2k8dDtpKyspZVtpXT10aGlzLnJlYWRVaW50MzIoKTtyZXR1cm4gZX0sby5wcm90b3R5cGUucmVhZEludDMyQXJyYXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBJbnQzMkFycmF5KHQpLGk9MDtpPHQ7aSsrKWVbaV09dGhpcy5yZWFkSW50MzIoKTtyZXR1cm4gZX0sRS5NUDRCb3hTdHJlYW09bzt2YXIgYT1mdW5jdGlvbih0LGUsaSl7dGhpcy5fYnl0ZU9mZnNldD1lfHwwLHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj90aGlzLmJ1ZmZlcj10OnR5cGVvZiB0PT0ib2JqZWN0Ij8odGhpcy5kYXRhVmlldz10LGUmJih0aGlzLl9ieXRlT2Zmc2V0Kz1lKSk6dGhpcy5idWZmZXI9bmV3IEFycmF5QnVmZmVyKHR8fDApLHRoaXMucG9zaXRpb249MCx0aGlzLmVuZGlhbm5lc3M9aT8/YS5MSVRUTEVfRU5ESUFOfTthLnByb3RvdHlwZT17fSxhLnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSxhLnByb3RvdHlwZS5fcmVhbGxvYz1mdW5jdGlvbih0KXtpZih0aGlzLl9keW5hbWljU2l6ZSl7dmFyIGU9dGhpcy5fYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uK3QsaT10aGlzLl9idWZmZXIuYnl0ZUxlbmd0aDtpZihlPD1pKXtlPnRoaXMuX2J5dGVMZW5ndGgmJih0aGlzLl9ieXRlTGVuZ3RoPWUpO3JldHVybn1mb3IoaTwxJiYoaT0xKTtlPmk7KWkqPTI7dmFyIHM9bmV3IEFycmF5QnVmZmVyKGkpLG49bmV3IFVpbnQ4QXJyYXkodGhpcy5fYnVmZmVyKSxmPW5ldyBVaW50OEFycmF5KHMsMCxuLmxlbmd0aCk7Zi5zZXQobiksdGhpcy5idWZmZXI9cyx0aGlzLl9ieXRlTGVuZ3RoPWV9fSxhLnByb3RvdHlwZS5fdHJpbUFsbG9jPWZ1bmN0aW9uKCl7aWYodGhpcy5fYnl0ZUxlbmd0aCE9dGhpcy5fYnVmZmVyLmJ5dGVMZW5ndGgpe3ZhciB0PW5ldyBBcnJheUJ1ZmZlcih0aGlzLl9ieXRlTGVuZ3RoKSxlPW5ldyBVaW50OEFycmF5KHQpLGk9bmV3IFVpbnQ4QXJyYXkodGhpcy5fYnVmZmVyLDAsZS5sZW5ndGgpO2Uuc2V0KGkpLHRoaXMuYnVmZmVyPXR9fSxhLkJJR19FTkRJQU49ITEsYS5MSVRUTEVfRU5ESUFOPSEwLGEucHJvdG90eXBlLl9ieXRlTGVuZ3RoPTAsT2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLCJieXRlTGVuZ3RoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J5dGVMZW5ndGgtdGhpcy5fYnl0ZU9mZnNldH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsImJ1ZmZlciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmltQWxsb2MoKSx0aGlzLl9idWZmZXJ9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9idWZmZXI9dCx0aGlzLl9kYXRhVmlldz1uZXcgRGF0YVZpZXcodGhpcy5fYnVmZmVyLHRoaXMuX2J5dGVPZmZzZXQpLHRoaXMuX2J5dGVMZW5ndGg9dGhpcy5fYnVmZmVyLmJ5dGVMZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLCJieXRlT2Zmc2V0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J5dGVPZmZzZXR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9ieXRlT2Zmc2V0PXQsdGhpcy5fZGF0YVZpZXc9bmV3IERhdGFWaWV3KHRoaXMuX2J1ZmZlcix0aGlzLl9ieXRlT2Zmc2V0KSx0aGlzLl9ieXRlTGVuZ3RoPXRoaXMuX2J1ZmZlci5ieXRlTGVuZ3RofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSwiZGF0YVZpZXciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YVZpZXd9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9ieXRlT2Zmc2V0PXQuYnl0ZU9mZnNldCx0aGlzLl9idWZmZXI9dC5idWZmZXIsdGhpcy5fZGF0YVZpZXc9bmV3IERhdGFWaWV3KHRoaXMuX2J1ZmZlcix0aGlzLl9ieXRlT2Zmc2V0KSx0aGlzLl9ieXRlTGVuZ3RoPXRoaXMuX2J5dGVPZmZzZXQrdC5ieXRlTGVuZ3RofX0pLGEucHJvdG90eXBlLnNlZWs9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5tYXgoMCxNYXRoLm1pbih0aGlzLmJ5dGVMZW5ndGgsdCkpO3RoaXMucG9zaXRpb249aXNOYU4oZSl8fCFpc0Zpbml0ZShlKT8wOmV9LGEucHJvdG90eXBlLmlzRW9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zaXRpb24+PXRoaXMuX2J5dGVMZW5ndGh9LGEucHJvdG90eXBlLm1hcFVpbnQ4QXJyYXk9ZnVuY3Rpb24odCl7dGhpcy5fcmVhbGxvYyh0KjEpO3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbix0KTtyZXR1cm4gdGhpcy5wb3NpdGlvbis9dCoxLGV9LGEucHJvdG90eXBlLnJlYWRJbnQzMkFycmF5PWZ1bmN0aW9uKHQsZSl7dD10Pz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbi80O3ZhciBpPW5ldyBJbnQzMkFycmF5KHQpO3JldHVybiBhLm1lbWNweShpLmJ1ZmZlciwwLHRoaXMuYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLHQqaS5CWVRFU19QRVJfRUxFTUVOVCksYS5hcnJheVRvTmF0aXZlKGksZT8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz1pLmJ5dGVMZW5ndGgsaX0sYS5wcm90b3R5cGUucmVhZEludDE2QXJyYXk9ZnVuY3Rpb24odCxlKXt0PXQ/P3RoaXMuYnl0ZUxlbmd0aC10aGlzLnBvc2l0aW9uLzI7dmFyIGk9bmV3IEludDE2QXJyYXkodCk7cmV0dXJuIGEubWVtY3B5KGkuYnVmZmVyLDAsdGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sdCppLkJZVEVTX1BFUl9FTEVNRU5UKSxhLmFycmF5VG9OYXRpdmUoaSxlPz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWkuYnl0ZUxlbmd0aCxpfSxhLnByb3RvdHlwZS5yZWFkSW50OEFycmF5PWZ1bmN0aW9uKHQpe3Q9dD8/dGhpcy5ieXRlTGVuZ3RoLXRoaXMucG9zaXRpb247dmFyIGU9bmV3IEludDhBcnJheSh0KTtyZXR1cm4gYS5tZW1jcHkoZS5idWZmZXIsMCx0aGlzLmJ1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbix0KmUuQllURVNfUEVSX0VMRU1FTlQpLHRoaXMucG9zaXRpb24rPWUuYnl0ZUxlbmd0aCxlfSxhLnByb3RvdHlwZS5yZWFkVWludDMyQXJyYXk9ZnVuY3Rpb24odCxlKXt0PXQ/P3RoaXMuYnl0ZUxlbmd0aC10aGlzLnBvc2l0aW9uLzQ7dmFyIGk9bmV3IFVpbnQzMkFycmF5KHQpO3JldHVybiBhLm1lbWNweShpLmJ1ZmZlciwwLHRoaXMuYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLHQqaS5CWVRFU19QRVJfRUxFTUVOVCksYS5hcnJheVRvTmF0aXZlKGksZT8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz1pLmJ5dGVMZW5ndGgsaX0sYS5wcm90b3R5cGUucmVhZFVpbnQxNkFycmF5PWZ1bmN0aW9uKHQsZSl7dD10Pz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbi8yO3ZhciBpPW5ldyBVaW50MTZBcnJheSh0KTtyZXR1cm4gYS5tZW1jcHkoaS5idWZmZXIsMCx0aGlzLmJ1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbix0KmkuQllURVNfUEVSX0VMRU1FTlQpLGEuYXJyYXlUb05hdGl2ZShpLGU/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9aS5ieXRlTGVuZ3RoLGl9LGEucHJvdG90eXBlLnJlYWRVaW50OEFycmF5PWZ1bmN0aW9uKHQpe3Q9dD8/dGhpcy5ieXRlTGVuZ3RoLXRoaXMucG9zaXRpb247dmFyIGU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIGEubWVtY3B5KGUuYnVmZmVyLDAsdGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sdCplLkJZVEVTX1BFUl9FTEVNRU5UKSx0aGlzLnBvc2l0aW9uKz1lLmJ5dGVMZW5ndGgsZX0sYS5wcm90b3R5cGUucmVhZEZsb2F0NjRBcnJheT1mdW5jdGlvbih0LGUpe3Q9dD8/dGhpcy5ieXRlTGVuZ3RoLXRoaXMucG9zaXRpb24vODt2YXIgaT1uZXcgRmxvYXQ2NEFycmF5KHQpO3JldHVybiBhLm1lbWNweShpLmJ1ZmZlciwwLHRoaXMuYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLHQqaS5CWVRFU19QRVJfRUxFTUVOVCksYS5hcnJheVRvTmF0aXZlKGksZT8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz1pLmJ5dGVMZW5ndGgsaX0sYS5wcm90b3R5cGUucmVhZEZsb2F0MzJBcnJheT1mdW5jdGlvbih0LGUpe3Q9dD8/dGhpcy5ieXRlTGVuZ3RoLXRoaXMucG9zaXRpb24vNDt2YXIgaT1uZXcgRmxvYXQzMkFycmF5KHQpO3JldHVybiBhLm1lbWNweShpLmJ1ZmZlciwwLHRoaXMuYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLHQqaS5CWVRFU19QRVJfRUxFTUVOVCksYS5hcnJheVRvTmF0aXZlKGksZT8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz1pLmJ5dGVMZW5ndGgsaX0sYS5wcm90b3R5cGUucmVhZEludDMyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2RhdGFWaWV3LmdldEludDMyKHRoaXMucG9zaXRpb24sdD8/dGhpcy5lbmRpYW5uZXNzKTtyZXR1cm4gdGhpcy5wb3NpdGlvbis9NCxlfSxhLnByb3RvdHlwZS5yZWFkSW50MTY9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZGF0YVZpZXcuZ2V0SW50MTYodGhpcy5wb3NpdGlvbix0Pz90aGlzLmVuZGlhbm5lc3MpO3JldHVybiB0aGlzLnBvc2l0aW9uKz0yLGV9LGEucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YVZpZXcuZ2V0SW50OCh0aGlzLnBvc2l0aW9uKTtyZXR1cm4gdGhpcy5wb3NpdGlvbis9MSx0fSxhLnByb3RvdHlwZS5yZWFkVWludDMyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2RhdGFWaWV3LmdldFVpbnQzMih0aGlzLnBvc2l0aW9uLHQ/P3RoaXMuZW5kaWFubmVzcyk7cmV0dXJuIHRoaXMucG9zaXRpb24rPTQsZX0sYS5wcm90b3R5cGUucmVhZFVpbnQxNj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9kYXRhVmlldy5nZXRVaW50MTYodGhpcy5wb3NpdGlvbix0Pz90aGlzLmVuZGlhbm5lc3MpO3JldHVybiB0aGlzLnBvc2l0aW9uKz0yLGV9LGEucHJvdG90eXBlLnJlYWRVaW50OD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGFWaWV3LmdldFVpbnQ4KHRoaXMucG9zaXRpb24pO3JldHVybiB0aGlzLnBvc2l0aW9uKz0xLHR9LGEucHJvdG90eXBlLnJlYWRGbG9hdDMyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2RhdGFWaWV3LmdldEZsb2F0MzIodGhpcy5wb3NpdGlvbix0Pz90aGlzLmVuZGlhbm5lc3MpO3JldHVybiB0aGlzLnBvc2l0aW9uKz00LGV9LGEucHJvdG90eXBlLnJlYWRGbG9hdDY0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2RhdGFWaWV3LmdldEZsb2F0NjQodGhpcy5wb3NpdGlvbix0Pz90aGlzLmVuZGlhbm5lc3MpO3JldHVybiB0aGlzLnBvc2l0aW9uKz04LGV9LGEuZW5kaWFubmVzcz1uZXcgSW50OEFycmF5KG5ldyBJbnQxNkFycmF5KFsxXSkuYnVmZmVyKVswXT4wLGEubWVtY3B5PWZ1bmN0aW9uKHQsZSxpLHMsbil7dmFyIGY9bmV3IFVpbnQ4QXJyYXkodCxlLG4pLGQ9bmV3IFVpbnQ4QXJyYXkoaSxzLG4pO2Yuc2V0KGQpfSxhLmFycmF5VG9OYXRpdmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT09dGhpcy5lbmRpYW5uZXNzP3Q6dGhpcy5mbGlwQXJyYXlFbmRpYW5uZXNzKHQpfSxhLm5hdGl2ZVRvRW5kaWFuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZW5kaWFubmVzcz09ZT90OnRoaXMuZmxpcEFycmF5RW5kaWFubmVzcyh0KX0sYS5mbGlwQXJyYXlFbmRpYW5uZXNzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKSxpPTA7aTx0LmJ5dGVMZW5ndGg7aSs9dC5CWVRFU19QRVJfRUxFTUVOVClmb3IodmFyIHM9aSt0LkJZVEVTX1BFUl9FTEVNRU5ULTEsbj1pO3M+bjtzLS0sbisrKXt2YXIgZj1lW25dO2Vbbl09ZVtzXSxlW3NdPWZ9cmV0dXJuIHR9LGEucHJvdG90eXBlLmZhaWx1cmVQb3NpdGlvbj0wLFN0cmluZy5mcm9tQ2hhckNvZGVVaW50OD1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10saT0wO2k8dC5sZW5ndGg7aSsrKWVbaV09dFtpXTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUpfSxhLnByb3RvdHlwZS5yZWFkU3RyaW5nPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9PW51bGx8fGU9PSJBU0NJSSI/U3RyaW5nLmZyb21DaGFyQ29kZVVpbnQ4LmFwcGx5KG51bGwsW3RoaXMubWFwVWludDhBcnJheSh0Pz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbildKTpuZXcgVGV4dERlY29kZXIoZSkuZGVjb2RlKHRoaXMubWFwVWludDhBcnJheSh0KSl9LGEucHJvdG90eXBlLnJlYWRDU3RyaW5nPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYnl0ZUxlbmd0aC10aGlzLnBvc2l0aW9uLGk9bmV3IFVpbnQ4QXJyYXkodGhpcy5fYnVmZmVyLHRoaXMuX2J5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbikscz1lO3QhPW51bGwmJihzPU1hdGgubWluKHQsZSkpO2Zvcih2YXIgbj0wO248cyYmaVtuXSE9PTA7bisrKTt2YXIgZj1TdHJpbmcuZnJvbUNoYXJDb2RlVWludDguYXBwbHkobnVsbCxbdGhpcy5tYXBVaW50OEFycmF5KG4pXSk7cmV0dXJuIHQhPW51bGw/dGhpcy5wb3NpdGlvbis9cy1uOm4hPWUmJih0aGlzLnBvc2l0aW9uKz0xKSxmfTt2YXIgcD1NYXRoLnBvdygyLDMyKTthLnByb3RvdHlwZS5yZWFkSW50NjQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkSW50MzIoKSpwK3RoaXMucmVhZFVpbnQzMigpfSxhLnByb3RvdHlwZS5yZWFkVWludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFVpbnQzMigpKnArdGhpcy5yZWFkVWludDMyKCl9LGEucHJvdG90eXBlLnJlYWRJbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRVaW50MzIoKSpwK3RoaXMucmVhZFVpbnQzMigpfSxhLnByb3RvdHlwZS5yZWFkVWludDI0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVhZFVpbnQ4KCk8PDE2KSsodGhpcy5yZWFkVWludDgoKTw8OCkrdGhpcy5yZWFkVWludDgoKX0sRS5EYXRhU3RyZWFtPWEsYS5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbih0KXt2YXIgZT1uZXcgQmxvYihbdGhpcy5idWZmZXJdKTtpZih3aW5kb3cuVVJMJiZVUkwuY3JlYXRlT2JqZWN0VVJMKXt2YXIgaT13aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChlKSxzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHMpLHMuc2V0QXR0cmlidXRlKCJocmVmIixpKSxzLnNldEF0dHJpYnV0ZSgiZG93bmxvYWQiLHQpLHMuc2V0QXR0cmlidXRlKCJ0YXJnZXQiLCJfc2VsZiIpLHMuY2xpY2soKSx3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChpKX1lbHNlIHRocm93IkRhdGFTdHJlYW0uc2F2ZTogQ2FuJ3QgY3JlYXRlIG9iamVjdCBVUkwuIn0sYS5wcm90b3R5cGUuX2R5bmFtaWNTaXplPSEwLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSwiZHluYW1pY1NpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHluYW1pY1NpemV9LHNldDpmdW5jdGlvbih0KXt0fHx0aGlzLl90cmltQWxsb2MoKSx0aGlzLl9keW5hbWljU2l6ZT10fX0pLGEucHJvdG90eXBlLnNoaWZ0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBBcnJheUJ1ZmZlcih0aGlzLl9ieXRlTGVuZ3RoLXQpLGk9bmV3IFVpbnQ4QXJyYXkoZSkscz1uZXcgVWludDhBcnJheSh0aGlzLl9idWZmZXIsdCxpLmxlbmd0aCk7aS5zZXQocyksdGhpcy5idWZmZXI9ZSx0aGlzLnBvc2l0aW9uLT10fSxhLnByb3RvdHlwZS53cml0ZUludDMyQXJyYXk9ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9yZWFsbG9jKHQubGVuZ3RoKjQpLHQgaW5zdGFuY2VvZiBJbnQzMkFycmF5JiZ0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbiV0LkJZVEVTX1BFUl9FTEVNRU5UPT09MClhLm1lbWNweSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sdC5idWZmZXIsMCx0LmJ5dGVMZW5ndGgpLHRoaXMubWFwSW50MzJBcnJheSh0Lmxlbmd0aCxlKTtlbHNlIGZvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRoaXMud3JpdGVJbnQzMih0W2ldLGUpfSxhLnByb3RvdHlwZS53cml0ZUludDE2QXJyYXk9ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9yZWFsbG9jKHQubGVuZ3RoKjIpLHQgaW5zdGFuY2VvZiBJbnQxNkFycmF5JiZ0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbiV0LkJZVEVTX1BFUl9FTEVNRU5UPT09MClhLm1lbWNweSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sdC5idWZmZXIsMCx0LmJ5dGVMZW5ndGgpLHRoaXMubWFwSW50MTZBcnJheSh0Lmxlbmd0aCxlKTtlbHNlIGZvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRoaXMud3JpdGVJbnQxNih0W2ldLGUpfSxhLnByb3RvdHlwZS53cml0ZUludDhBcnJheT1mdW5jdGlvbih0KXtpZih0aGlzLl9yZWFsbG9jKHQubGVuZ3RoKjEpLHQgaW5zdGFuY2VvZiBJbnQ4QXJyYXkmJnRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uJXQuQllURVNfUEVSX0VMRU1FTlQ9PT0wKWEubWVtY3B5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbix0LmJ1ZmZlciwwLHQuYnl0ZUxlbmd0aCksdGhpcy5tYXBJbnQ4QXJyYXkodC5sZW5ndGgpO2Vsc2UgZm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy53cml0ZUludDgodFtlXSl9LGEucHJvdG90eXBlLndyaXRlVWludDMyQXJyYXk9ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9yZWFsbG9jKHQubGVuZ3RoKjQpLHQgaW5zdGFuY2VvZiBVaW50MzJBcnJheSYmdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24ldC5CWVRFU19QRVJfRUxFTUVOVD09PTApYS5tZW1jcHkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLHQuYnVmZmVyLDAsdC5ieXRlTGVuZ3RoKSx0aGlzLm1hcFVpbnQzMkFycmF5KHQubGVuZ3RoLGUpO2Vsc2UgZm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspdGhpcy53cml0ZVVpbnQzMih0W2ldLGUpfSxhLnByb3RvdHlwZS53cml0ZVVpbnQxNkFycmF5PWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5fcmVhbGxvYyh0Lmxlbmd0aCoyKSx0IGluc3RhbmNlb2YgVWludDE2QXJyYXkmJnRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uJXQuQllURVNfUEVSX0VMRU1FTlQ9PT0wKWEubWVtY3B5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbix0LmJ1ZmZlciwwLHQuYnl0ZUxlbmd0aCksdGhpcy5tYXBVaW50MTZBcnJheSh0Lmxlbmd0aCxlKTtlbHNlIGZvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRoaXMud3JpdGVVaW50MTYodFtpXSxlKX0sYS5wcm90b3R5cGUud3JpdGVVaW50OEFycmF5PWZ1bmN0aW9uKHQpe2lmKHRoaXMuX3JlYWxsb2ModC5sZW5ndGgqMSksdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJnRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uJXQuQllURVNfUEVSX0VMRU1FTlQ9PT0wKWEubWVtY3B5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbix0LmJ1ZmZlciwwLHQuYnl0ZUxlbmd0aCksdGhpcy5tYXBVaW50OEFycmF5KHQubGVuZ3RoKTtlbHNlIGZvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMud3JpdGVVaW50OCh0W2VdKX0sYS5wcm90b3R5cGUud3JpdGVGbG9hdDY0QXJyYXk9ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9yZWFsbG9jKHQubGVuZ3RoKjgpLHQgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkmJnRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uJXQuQllURVNfUEVSX0VMRU1FTlQ9PT0wKWEubWVtY3B5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbix0LmJ1ZmZlciwwLHQuYnl0ZUxlbmd0aCksdGhpcy5tYXBGbG9hdDY0QXJyYXkodC5sZW5ndGgsZSk7ZWxzZSBmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl0aGlzLndyaXRlRmxvYXQ2NCh0W2ldLGUpfSxhLnByb3RvdHlwZS53cml0ZUZsb2F0MzJBcnJheT1mdW5jdGlvbih0LGUpe2lmKHRoaXMuX3JlYWxsb2ModC5sZW5ndGgqNCksdCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSYmdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24ldC5CWVRFU19QRVJfRUxFTUVOVD09PTApYS5tZW1jcHkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLHQuYnVmZmVyLDAsdC5ieXRlTGVuZ3RoKSx0aGlzLm1hcEZsb2F0MzJBcnJheSh0Lmxlbmd0aCxlKTtlbHNlIGZvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRoaXMud3JpdGVGbG9hdDMyKHRbaV0sZSl9LGEucHJvdG90eXBlLndyaXRlSW50MzI9ZnVuY3Rpb24odCxlKXt0aGlzLl9yZWFsbG9jKDQpLHRoaXMuX2RhdGFWaWV3LnNldEludDMyKHRoaXMucG9zaXRpb24sdCxlPz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPTR9LGEucHJvdG90eXBlLndyaXRlSW50MTY9ZnVuY3Rpb24odCxlKXt0aGlzLl9yZWFsbG9jKDIpLHRoaXMuX2RhdGFWaWV3LnNldEludDE2KHRoaXMucG9zaXRpb24sdCxlPz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPTJ9LGEucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbih0KXt0aGlzLl9yZWFsbG9jKDEpLHRoaXMuX2RhdGFWaWV3LnNldEludDgodGhpcy5wb3NpdGlvbix0KSx0aGlzLnBvc2l0aW9uKz0xfSxhLnByb3RvdHlwZS53cml0ZVVpbnQzMj1mdW5jdGlvbih0LGUpe3RoaXMuX3JlYWxsb2MoNCksdGhpcy5fZGF0YVZpZXcuc2V0VWludDMyKHRoaXMucG9zaXRpb24sdCxlPz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPTR9LGEucHJvdG90eXBlLndyaXRlVWludDE2PWZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVhbGxvYygyKSx0aGlzLl9kYXRhVmlldy5zZXRVaW50MTYodGhpcy5wb3NpdGlvbix0LGU/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9Mn0sYS5wcm90b3R5cGUud3JpdGVVaW50OD1mdW5jdGlvbih0KXt0aGlzLl9yZWFsbG9jKDEpLHRoaXMuX2RhdGFWaWV3LnNldFVpbnQ4KHRoaXMucG9zaXRpb24sdCksdGhpcy5wb3NpdGlvbis9MX0sYS5wcm90b3R5cGUud3JpdGVGbG9hdDMyPWZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVhbGxvYyg0KSx0aGlzLl9kYXRhVmlldy5zZXRGbG9hdDMyKHRoaXMucG9zaXRpb24sdCxlPz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPTR9LGEucHJvdG90eXBlLndyaXRlRmxvYXQ2ND1mdW5jdGlvbih0LGUpe3RoaXMuX3JlYWxsb2MoOCksdGhpcy5fZGF0YVZpZXcuc2V0RmxvYXQ2NCh0aGlzLnBvc2l0aW9uLHQsZT8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz04fSxhLnByb3RvdHlwZS53cml0ZVVDUzJTdHJpbmc9ZnVuY3Rpb24odCxlLGkpe2k9PW51bGwmJihpPXQubGVuZ3RoKTtmb3IodmFyIHM9MDtzPHQubGVuZ3RoJiZzPGk7cysrKXRoaXMud3JpdGVVaW50MTYodC5jaGFyQ29kZUF0KHMpLGUpO2Zvcig7czxpO3MrKyl0aGlzLndyaXRlVWludDE2KDApfSxhLnByb3RvdHlwZS53cml0ZVN0cmluZz1mdW5jdGlvbih0LGUsaSl7dmFyIHM9MDtpZihlPT1udWxsfHxlPT0iQVNDSUkiKWlmKGkhPW51bGwpe3ZhciBuPU1hdGgubWluKHQubGVuZ3RoLGkpO2ZvcihzPTA7czxuO3MrKyl0aGlzLndyaXRlVWludDgodC5jaGFyQ29kZUF0KHMpKTtmb3IoO3M8aTtzKyspdGhpcy53cml0ZVVpbnQ4KDApfWVsc2UgZm9yKHM9MDtzPHQubGVuZ3RoO3MrKyl0aGlzLndyaXRlVWludDgodC5jaGFyQ29kZUF0KHMpKTtlbHNlIHRoaXMud3JpdGVVaW50OEFycmF5KG5ldyBUZXh0RW5jb2RlcihlKS5lbmNvZGUodC5zdWJzdHJpbmcoMCxpKSkpfSxhLnByb3RvdHlwZS53cml0ZUNTdHJpbmc9ZnVuY3Rpb24odCxlKXt2YXIgaT0wO2lmKGUhPW51bGwpe3ZhciBzPU1hdGgubWluKHQubGVuZ3RoLGUpO2ZvcihpPTA7aTxzO2krKyl0aGlzLndyaXRlVWludDgodC5jaGFyQ29kZUF0KGkpKTtmb3IoO2k8ZTtpKyspdGhpcy53cml0ZVVpbnQ4KDApfWVsc2V7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl0aGlzLndyaXRlVWludDgodC5jaGFyQ29kZUF0KGkpKTt0aGlzLndyaXRlVWludDgoMCl9fSxhLnByb3RvdHlwZS53cml0ZVN0cnVjdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSs9Mil7dmFyIHM9dFtpKzFdO3RoaXMud3JpdGVUeXBlKHMsZVt0W2ldXSxlKX19LGEucHJvdG90eXBlLndyaXRlVHlwZT1mdW5jdGlvbih0LGUsaSl7dmFyIHM7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpcmV0dXJuIHQodGhpcyxlKTtpZih0eXBlb2YgdD09Im9iamVjdCImJiEodCBpbnN0YW5jZW9mIEFycmF5KSlyZXR1cm4gdC5zZXQodGhpcyxlLGkpO3ZhciBuPW51bGwsZj0iQVNDSUkiLGQ9dGhpcy5wb3NpdGlvbjtzd2l0Y2godHlwZW9mIHQ9PSJzdHJpbmciJiYvOi8udGVzdCh0KSYmKHM9dC5zcGxpdCgiOiIpLHQ9c1swXSxuPXBhcnNlSW50KHNbMV0pKSx0eXBlb2YgdD09InN0cmluZyImJi8sLy50ZXN0KHQpJiYocz10LnNwbGl0KCIsIiksdD1zWzBdLGY9cGFyc2VJbnQoc1sxXSkpLHQpe2Nhc2UidWludDgiOnRoaXMud3JpdGVVaW50OChlKTticmVhaztjYXNlImludDgiOnRoaXMud3JpdGVJbnQ4KGUpO2JyZWFrO2Nhc2UidWludDE2Ijp0aGlzLndyaXRlVWludDE2KGUsdGhpcy5lbmRpYW5uZXNzKTticmVhaztjYXNlImludDE2Ijp0aGlzLndyaXRlSW50MTYoZSx0aGlzLmVuZGlhbm5lc3MpO2JyZWFrO2Nhc2UidWludDMyIjp0aGlzLndyaXRlVWludDMyKGUsdGhpcy5lbmRpYW5uZXNzKTticmVhaztjYXNlImludDMyIjp0aGlzLndyaXRlSW50MzIoZSx0aGlzLmVuZGlhbm5lc3MpO2JyZWFrO2Nhc2UiZmxvYXQzMiI6dGhpcy53cml0ZUZsb2F0MzIoZSx0aGlzLmVuZGlhbm5lc3MpO2JyZWFrO2Nhc2UiZmxvYXQ2NCI6dGhpcy53cml0ZUZsb2F0NjQoZSx0aGlzLmVuZGlhbm5lc3MpO2JyZWFrO2Nhc2UidWludDE2YmUiOnRoaXMud3JpdGVVaW50MTYoZSxhLkJJR19FTkRJQU4pO2JyZWFrO2Nhc2UiaW50MTZiZSI6dGhpcy53cml0ZUludDE2KGUsYS5CSUdfRU5ESUFOKTticmVhaztjYXNlInVpbnQzMmJlIjp0aGlzLndyaXRlVWludDMyKGUsYS5CSUdfRU5ESUFOKTticmVhaztjYXNlImludDMyYmUiOnRoaXMud3JpdGVJbnQzMihlLGEuQklHX0VORElBTik7YnJlYWs7Y2FzZSJmbG9hdDMyYmUiOnRoaXMud3JpdGVGbG9hdDMyKGUsYS5CSUdfRU5ESUFOKTticmVhaztjYXNlImZsb2F0NjRiZSI6dGhpcy53cml0ZUZsb2F0NjQoZSxhLkJJR19FTkRJQU4pO2JyZWFrO2Nhc2UidWludDE2bGUiOnRoaXMud3JpdGVVaW50MTYoZSxhLkxJVFRMRV9FTkRJQU4pO2JyZWFrO2Nhc2UiaW50MTZsZSI6dGhpcy53cml0ZUludDE2KGUsYS5MSVRUTEVfRU5ESUFOKTticmVhaztjYXNlInVpbnQzMmxlIjp0aGlzLndyaXRlVWludDMyKGUsYS5MSVRUTEVfRU5ESUFOKTticmVhaztjYXNlImludDMybGUiOnRoaXMud3JpdGVJbnQzMihlLGEuTElUVExFX0VORElBTik7YnJlYWs7Y2FzZSJmbG9hdDMybGUiOnRoaXMud3JpdGVGbG9hdDMyKGUsYS5MSVRUTEVfRU5ESUFOKTticmVhaztjYXNlImZsb2F0NjRsZSI6dGhpcy53cml0ZUZsb2F0NjQoZSxhLkxJVFRMRV9FTkRJQU4pO2JyZWFrO2Nhc2UiY3N0cmluZyI6dGhpcy53cml0ZUNTdHJpbmcoZSxuKTticmVhaztjYXNlInN0cmluZyI6dGhpcy53cml0ZVN0cmluZyhlLGYsbik7YnJlYWs7Y2FzZSJ1MTZzdHJpbmciOnRoaXMud3JpdGVVQ1MyU3RyaW5nKGUsdGhpcy5lbmRpYW5uZXNzLG4pO2JyZWFrO2Nhc2UidTE2c3RyaW5nbGUiOnRoaXMud3JpdGVVQ1MyU3RyaW5nKGUsYS5MSVRUTEVfRU5ESUFOLG4pO2JyZWFrO2Nhc2UidTE2c3RyaW5nYmUiOnRoaXMud3JpdGVVQ1MyU3RyaW5nKGUsYS5CSUdfRU5ESUFOLG4pO2JyZWFrO2RlZmF1bHQ6aWYodC5sZW5ndGg9PTMpe2Zvcih2YXIgYz10WzFdLG09MDttPGUubGVuZ3RoO20rKyl0aGlzLndyaXRlVHlwZShjLGVbbV0pO2JyZWFrfWVsc2V7dGhpcy53cml0ZVN0cnVjdCh0LGUpO2JyZWFrfX1uIT1udWxsJiYodGhpcy5wb3NpdGlvbj1kLHRoaXMuX3JlYWxsb2MobiksdGhpcy5wb3NpdGlvbj1kK24pfSxhLnByb3RvdHlwZS53cml0ZVVpbnQ2ND1mdW5jdGlvbih0KXt2YXIgZT1NYXRoLmZsb29yKHQvcCk7dGhpcy53cml0ZVVpbnQzMihlKSx0aGlzLndyaXRlVWludDMyKHQmNDI5NDk2NzI5NSl9LGEucHJvdG90eXBlLndyaXRlVWludDI0PWZ1bmN0aW9uKHQpe3RoaXMud3JpdGVVaW50OCgodCYxNjcxMTY4MCk+PjE2KSx0aGlzLndyaXRlVWludDgoKHQmNjUyODApPj44KSx0aGlzLndyaXRlVWludDgodCYyNTUpfSxhLnByb3RvdHlwZS5hZGp1c3RVaW50MzI9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnBvc2l0aW9uO3RoaXMuc2Vlayh0KSx0aGlzLndyaXRlVWludDMyKGUpLHRoaXMuc2VlayhpKX0sYS5wcm90b3R5cGUubWFwSW50MzJBcnJheT1mdW5jdGlvbih0LGUpe3RoaXMuX3JlYWxsb2ModCo0KTt2YXIgaT1uZXcgSW50MzJBcnJheSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sdCk7cmV0dXJuIGEuYXJyYXlUb05hdGl2ZShpLGU/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9dCo0LGl9LGEucHJvdG90eXBlLm1hcEludDE2QXJyYXk9ZnVuY3Rpb24odCxlKXt0aGlzLl9yZWFsbG9jKHQqMik7dmFyIGk9bmV3IEludDE2QXJyYXkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLHQpO3JldHVybiBhLmFycmF5VG9OYXRpdmUoaSxlPz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPXQqMixpfSxhLnByb3RvdHlwZS5tYXBJbnQ4QXJyYXk9ZnVuY3Rpb24odCl7dGhpcy5fcmVhbGxvYyh0KjEpO3ZhciBlPW5ldyBJbnQ4QXJyYXkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLHQpO3JldHVybiB0aGlzLnBvc2l0aW9uKz10KjEsZX0sYS5wcm90b3R5cGUubWFwVWludDMyQXJyYXk9ZnVuY3Rpb24odCxlKXt0aGlzLl9yZWFsbG9jKHQqNCk7dmFyIGk9bmV3IFVpbnQzMkFycmF5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbix0KTtyZXR1cm4gYS5hcnJheVRvTmF0aXZlKGksZT8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz10KjQsaX0sYS5wcm90b3R5cGUubWFwVWludDE2QXJyYXk9ZnVuY3Rpb24odCxlKXt0aGlzLl9yZWFsbG9jKHQqMik7dmFyIGk9bmV3IFVpbnQxNkFycmF5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbix0KTtyZXR1cm4gYS5hcnJheVRvTmF0aXZlKGksZT8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz10KjIsaX0sYS5wcm90b3R5cGUubWFwRmxvYXQ2NEFycmF5PWZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVhbGxvYyh0KjgpO3ZhciBpPW5ldyBGbG9hdDY0QXJyYXkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLHQpO3JldHVybiBhLmFycmF5VG9OYXRpdmUoaSxlPz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPXQqOCxpfSxhLnByb3RvdHlwZS5tYXBGbG9hdDMyQXJyYXk9ZnVuY3Rpb24odCxlKXt0aGlzLl9yZWFsbG9jKHQqNCk7dmFyIGk9bmV3IEZsb2F0MzJBcnJheSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sdCk7cmV0dXJuIGEuYXJyYXlUb05hdGl2ZShpLGU/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9dCo0LGl9O3ZhciBsPWZ1bmN0aW9uKHQpe3RoaXMuYnVmZmVycz1bXSx0aGlzLmJ1ZmZlckluZGV4PS0xLHQmJih0aGlzLmluc2VydEJ1ZmZlcih0KSx0aGlzLmJ1ZmZlckluZGV4PTApfTtsLnByb3RvdHlwZT1uZXcgYShuZXcgQXJyYXlCdWZmZXIsMCxhLkJJR19FTkRJQU4pLGwucHJvdG90eXBlLmluaXRpYWxpemVkPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIHRoaXMuYnVmZmVySW5kZXg+LTE/ITA6dGhpcy5idWZmZXJzLmxlbmd0aD4wPyh0PXRoaXMuYnVmZmVyc1swXSx0LmZpbGVTdGFydD09PTA/KHRoaXMuYnVmZmVyPXQsdGhpcy5idWZmZXJJbmRleD0wLGguZGVidWcoIk11bHRpQnVmZmVyU3RyZWFtIiwiU3RyZWFtIHJlYWR5IGZvciBwYXJzaW5nIiksITApOihoLndhcm4oIk11bHRpQnVmZmVyU3RyZWFtIiwiVGhlIGZpcnN0IGJ1ZmZlciBzaG91bGQgaGF2ZSBhIGZpbGVTdGFydCBvZiAwIiksdGhpcy5sb2dCdWZmZXJMZXZlbCgpLCExKSk6KGgud2FybigiTXVsdGlCdWZmZXJTdHJlYW0iLCJObyBidWZmZXIgdG8gc3RhcnQgcGFyc2luZyBmcm9tIiksdGhpcy5sb2dCdWZmZXJMZXZlbCgpLCExKX0sQXJyYXlCdWZmZXIuY29uY2F0PWZ1bmN0aW9uKHQsZSl7aC5kZWJ1ZygiQXJyYXlCdWZmZXIiLCJUcnlpbmcgdG8gY3JlYXRlIGEgbmV3IGJ1ZmZlciBvZiBzaXplOiAiKyh0LmJ5dGVMZW5ndGgrZS5ieXRlTGVuZ3RoKSk7dmFyIGk9bmV3IFVpbnQ4QXJyYXkodC5ieXRlTGVuZ3RoK2UuYnl0ZUxlbmd0aCk7cmV0dXJuIGkuc2V0KG5ldyBVaW50OEFycmF5KHQpLDApLGkuc2V0KG5ldyBVaW50OEFycmF5KGUpLHQuYnl0ZUxlbmd0aCksaS5idWZmZXJ9LGwucHJvdG90eXBlLnJlZHVjZUJ1ZmZlcj1mdW5jdGlvbih0LGUsaSl7dmFyIHM7cmV0dXJuIHM9bmV3IFVpbnQ4QXJyYXkoaSkscy5zZXQobmV3IFVpbnQ4QXJyYXkodCxlLGkpKSxzLmJ1ZmZlci5maWxlU3RhcnQ9dC5maWxlU3RhcnQrZSxzLmJ1ZmZlci51c2VkQnl0ZXM9MCxzLmJ1ZmZlcn0sbC5wcm90b3R5cGUuaW5zZXJ0QnVmZmVyPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0hMCxpPTA7aTx0aGlzLmJ1ZmZlcnMubGVuZ3RoO2krKyl7dmFyIHM9dGhpcy5idWZmZXJzW2ldO2lmKHQuZmlsZVN0YXJ0PD1zLmZpbGVTdGFydCl7aWYodC5maWxlU3RhcnQ9PT1zLmZpbGVTdGFydClpZih0LmJ5dGVMZW5ndGg+cy5ieXRlTGVuZ3RoKXt0aGlzLmJ1ZmZlcnMuc3BsaWNlKGksMSksaS0tO2NvbnRpbnVlfWVsc2UgaC53YXJuKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIkJ1ZmZlciAoZmlsZVN0YXJ0OiAiK3QuZmlsZVN0YXJ0KyIgLSBMZW5ndGg6ICIrdC5ieXRlTGVuZ3RoKyIpIGFscmVhZHkgYXBwZW5kZWQsIGlnbm9yaW5nIik7ZWxzZSB0LmZpbGVTdGFydCt0LmJ5dGVMZW5ndGg8PXMuZmlsZVN0YXJ0fHwodD10aGlzLnJlZHVjZUJ1ZmZlcih0LDAscy5maWxlU3RhcnQtdC5maWxlU3RhcnQpKSxoLmRlYnVnKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIkFwcGVuZGluZyBuZXcgYnVmZmVyIChmaWxlU3RhcnQ6ICIrdC5maWxlU3RhcnQrIiAtIExlbmd0aDogIit0LmJ5dGVMZW5ndGgrIikiKSx0aGlzLmJ1ZmZlcnMuc3BsaWNlKGksMCx0KSxpPT09MCYmKHRoaXMuYnVmZmVyPXQpO2U9ITE7YnJlYWt9ZWxzZSBpZih0LmZpbGVTdGFydDxzLmZpbGVTdGFydCtzLmJ5dGVMZW5ndGgpe3ZhciBuPXMuZmlsZVN0YXJ0K3MuYnl0ZUxlbmd0aC10LmZpbGVTdGFydCxmPXQuYnl0ZUxlbmd0aC1uO2lmKGY+MCl0PXRoaXMucmVkdWNlQnVmZmVyKHQsbixmKTtlbHNle2U9ITE7YnJlYWt9fX1lJiYoaC5kZWJ1ZygiTXVsdGlCdWZmZXJTdHJlYW0iLCJBcHBlbmRpbmcgbmV3IGJ1ZmZlciAoZmlsZVN0YXJ0OiAiK3QuZmlsZVN0YXJ0KyIgLSBMZW5ndGg6ICIrdC5ieXRlTGVuZ3RoKyIpIiksdGhpcy5idWZmZXJzLnB1c2godCksaT09PTAmJih0aGlzLmJ1ZmZlcj10KSl9LGwucHJvdG90eXBlLmxvZ0J1ZmZlckxldmVsPWZ1bmN0aW9uKHQpe3ZhciBlLGkscyxuLGY9W10sZCxjPSIiO2ZvcihzPTAsbj0wLGU9MDtlPHRoaXMuYnVmZmVycy5sZW5ndGg7ZSsrKWk9dGhpcy5idWZmZXJzW2VdLGU9PT0wPyhkPXt9LGYucHVzaChkKSxkLnN0YXJ0PWkuZmlsZVN0YXJ0LGQuZW5kPWkuZmlsZVN0YXJ0K2kuYnl0ZUxlbmd0aCxjKz0iWyIrZC5zdGFydCsiLSIpOmQuZW5kPT09aS5maWxlU3RhcnQ/ZC5lbmQ9aS5maWxlU3RhcnQraS5ieXRlTGVuZ3RoOihkPXt9LGQuc3RhcnQ9aS5maWxlU3RhcnQsYys9ZltmLmxlbmd0aC0xXS5lbmQtMSsiXSwgWyIrZC5zdGFydCsiLSIsZC5lbmQ9aS5maWxlU3RhcnQraS5ieXRlTGVuZ3RoLGYucHVzaChkKSkscys9aS51c2VkQnl0ZXMsbis9aS5ieXRlTGVuZ3RoO2YubGVuZ3RoPjAmJihjKz1kLmVuZC0xKyJdIik7dmFyIG09dD9oLmluZm86aC5kZWJ1Zzt0aGlzLmJ1ZmZlcnMubGVuZ3RoPT09MD9tKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIk5vIG1vcmUgYnVmZmVyIGluIG1lbW9yeSIpOm0oIk11bHRpQnVmZmVyU3RyZWFtIiwiIit0aGlzLmJ1ZmZlcnMubGVuZ3RoKyIgc3RvcmVkIGJ1ZmZlcihzKSAoIitzKyIvIituKyIgYnl0ZXMpLCBjb250aW51b3VzIHJhbmdlczogIitjKX0sbC5wcm90b3R5cGUuY2xlYW5CdWZmZXJzPWZ1bmN0aW9uKCl7dmFyIHQsZTtmb3IodD0wO3Q8dGhpcy5idWZmZXJzLmxlbmd0aDt0KyspZT10aGlzLmJ1ZmZlcnNbdF0sZS51c2VkQnl0ZXM9PT1lLmJ5dGVMZW5ndGgmJihoLmRlYnVnKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIlJlbW92aW5nIGJ1ZmZlciAjIit0KSx0aGlzLmJ1ZmZlcnMuc3BsaWNlKHQsMSksdC0tKX0sbC5wcm90b3R5cGUubWVyZ2VOZXh0QnVmZmVyPWZ1bmN0aW9uKCl7dmFyIHQ7aWYodGhpcy5idWZmZXJJbmRleCsxPHRoaXMuYnVmZmVycy5sZW5ndGgpaWYodD10aGlzLmJ1ZmZlcnNbdGhpcy5idWZmZXJJbmRleCsxXSx0LmZpbGVTdGFydD09PXRoaXMuYnVmZmVyLmZpbGVTdGFydCt0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKXt2YXIgZT10aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoLGk9dGhpcy5idWZmZXIudXNlZEJ5dGVzLHM9dGhpcy5idWZmZXIuZmlsZVN0YXJ0O3JldHVybiB0aGlzLmJ1ZmZlcnNbdGhpcy5idWZmZXJJbmRleF09QXJyYXlCdWZmZXIuY29uY2F0KHRoaXMuYnVmZmVyLHQpLHRoaXMuYnVmZmVyPXRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XSx0aGlzLmJ1ZmZlcnMuc3BsaWNlKHRoaXMuYnVmZmVySW5kZXgrMSwxKSx0aGlzLmJ1ZmZlci51c2VkQnl0ZXM9aSx0aGlzLmJ1ZmZlci5maWxlU3RhcnQ9cyxoLmRlYnVnKCJJU09GaWxlIiwiQ29uY2F0ZW5hdGluZyBidWZmZXIgZm9yIGJveCBwYXJzaW5nIChsZW5ndGg6ICIrZSsiLT4iK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgrIikiKSwhMH1lbHNlIHJldHVybiExO2Vsc2UgcmV0dXJuITF9LGwucHJvdG90eXBlLmZpbmRQb3NpdGlvbj1mdW5jdGlvbih0LGUsaSl7dmFyIHMsbj1udWxsLGY9LTE7Zm9yKHQ9PT0hMD9zPTA6cz10aGlzLmJ1ZmZlckluZGV4O3M8dGhpcy5idWZmZXJzLmxlbmd0aCYmKG49dGhpcy5idWZmZXJzW3NdLG4uZmlsZVN0YXJ0PD1lKTspe2Y9cyxpJiYobi5maWxlU3RhcnQrbi5ieXRlTGVuZ3RoPD1lP24udXNlZEJ5dGVzPW4uYnl0ZUxlbmd0aDpuLnVzZWRCeXRlcz1lLW4uZmlsZVN0YXJ0LHRoaXMubG9nQnVmZmVyTGV2ZWwoKSk7cysrfXJldHVybiBmIT09LTE/KG49dGhpcy5idWZmZXJzW2ZdLG4uZmlsZVN0YXJ0K24uYnl0ZUxlbmd0aD49ZT8oaC5kZWJ1ZygiTXVsdGlCdWZmZXJTdHJlYW0iLCJGb3VuZCBwb3NpdGlvbiBpbiBleGlzdGluZyBidWZmZXIgIyIrZiksZik6LTEpOi0xfSxsLnByb3RvdHlwZS5maW5kRW5kQ29udGlndW91c0J1Zj1mdW5jdGlvbih0KXt2YXIgZSxpLHMsbj10IT09dm9pZCAwP3Q6dGhpcy5idWZmZXJJbmRleDtpZihpPXRoaXMuYnVmZmVyc1tuXSx0aGlzLmJ1ZmZlcnMubGVuZ3RoPm4rMSlmb3IoZT1uKzE7ZTx0aGlzLmJ1ZmZlcnMubGVuZ3RoJiYocz10aGlzLmJ1ZmZlcnNbZV0scy5maWxlU3RhcnQ9PT1pLmZpbGVTdGFydCtpLmJ5dGVMZW5ndGgpO2UrKylpPXM7cmV0dXJuIGkuZmlsZVN0YXJ0K2kuYnl0ZUxlbmd0aH0sbC5wcm90b3R5cGUuZ2V0RW5kRmlsZVBvc2l0aW9uQWZ0ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5maW5kUG9zaXRpb24oITAsdCwhMSk7cmV0dXJuIGUhPT0tMT90aGlzLmZpbmRFbmRDb250aWd1b3VzQnVmKGUpOnR9LGwucHJvdG90eXBlLmFkZFVzZWRCeXRlcz1mdW5jdGlvbih0KXt0aGlzLmJ1ZmZlci51c2VkQnl0ZXMrPXQsdGhpcy5sb2dCdWZmZXJMZXZlbCgpfSxsLnByb3RvdHlwZS5zZXRBbGxVc2VkQnl0ZXM9ZnVuY3Rpb24oKXt0aGlzLmJ1ZmZlci51c2VkQnl0ZXM9dGhpcy5idWZmZXIuYnl0ZUxlbmd0aCx0aGlzLmxvZ0J1ZmZlckxldmVsKCl9LGwucHJvdG90eXBlLnNlZWs9ZnVuY3Rpb24odCxlLGkpe3ZhciBzO3JldHVybiBzPXRoaXMuZmluZFBvc2l0aW9uKGUsdCxpKSxzIT09LTE/KHRoaXMuYnVmZmVyPXRoaXMuYnVmZmVyc1tzXSx0aGlzLmJ1ZmZlckluZGV4PXMsdGhpcy5wb3NpdGlvbj10LXRoaXMuYnVmZmVyLmZpbGVTdGFydCxoLmRlYnVnKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIlJlcG9zaXRpb25pbmcgcGFyc2VyIGF0IGJ1ZmZlciBwb3NpdGlvbjogIit0aGlzLnBvc2l0aW9uKSwhMCk6KGguZGVidWcoIk11bHRpQnVmZmVyU3RyZWFtIiwiUG9zaXRpb24gIit0KyIgbm90IGZvdW5kIGluIGJ1ZmZlcmVkIGRhdGEiKSwhMSl9LGwucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy5idWZmZXJJbmRleD09PS0xfHx0aGlzLmJ1ZmZlcnNbdGhpcy5idWZmZXJJbmRleF09PT1udWxsKXRocm93IkVycm9yIGFjY2Vzc2luZyBwb3NpdGlvbiBpbiB0aGUgTXVsdGlCdWZmZXJTdHJlYW0iO3JldHVybiB0aGlzLmJ1ZmZlcnNbdGhpcy5idWZmZXJJbmRleF0uZmlsZVN0YXJ0K3RoaXMucG9zaXRpb259LGwucHJvdG90eXBlLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ5dGVMZW5ndGh9LGwucHJvdG90eXBlLmdldEVuZFBvc2l0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy5idWZmZXJJbmRleD09PS0xfHx0aGlzLmJ1ZmZlcnNbdGhpcy5idWZmZXJJbmRleF09PT1udWxsKXRocm93IkVycm9yIGFjY2Vzc2luZyBwb3NpdGlvbiBpbiB0aGUgTXVsdGlCdWZmZXJTdHJlYW0iO3JldHVybiB0aGlzLmJ1ZmZlcnNbdGhpcy5idWZmZXJJbmRleF0uZmlsZVN0YXJ0K3RoaXMuYnl0ZUxlbmd0aH0sRS5NdWx0aUJ1ZmZlclN0cmVhbT1sO3ZhciBfPWZ1bmN0aW9uKCl7dmFyIHQ9MyxlPTQsaT01LHM9NixuPVtdO25bdF09IkVTX0Rlc2NyaXB0b3IiLG5bZV09IkRlY29kZXJDb25maWdEZXNjcmlwdG9yIixuW2ldPSJEZWNvZGVyU3BlY2lmaWNJbmZvIixuW3NdPSJTTENvbmZpZ0Rlc2NyaXB0b3IiLHRoaXMuZ2V0RGVzY3JpcHRvck5hbWU9ZnVuY3Rpb24oYyl7cmV0dXJuIG5bY119O3ZhciBmPXRoaXMsZD17fTtyZXR1cm4gdGhpcy5wYXJzZU9uZURlc2NyaXB0b3I9ZnVuY3Rpb24oYyl7dmFyIG09MCx4LFUsYjtmb3IoeD1jLnJlYWRVaW50OCgpLGI9Yy5yZWFkVWludDgoKTtiJjEyODspbT0oYiYxMjcpPDw3LGI9Yy5yZWFkVWludDgoKTtyZXR1cm4gbSs9YiYxMjcsaC5kZWJ1ZygiTVBFRzREZXNjcmlwdG9yUGFyc2VyIiwiRm91bmQgIisoblt4XXx8IkRlc2NyaXB0b3IgIit4KSsiLCBzaXplICIrbSsiIGF0IHBvc2l0aW9uICIrYy5nZXRQb3NpdGlvbigpKSxuW3hdP1U9bmV3IGRbblt4XV0obSk6VT1uZXcgZC5EZXNjcmlwdG9yKG0pLFUucGFyc2UoYyksVX0sZC5EZXNjcmlwdG9yPWZ1bmN0aW9uKGMsbSl7dGhpcy50YWc9Yyx0aGlzLnNpemU9bSx0aGlzLmRlc2NzPVtdfSxkLkRlc2NyaXB0b3IucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKGMpe3RoaXMuZGF0YT1jLnJlYWRVaW50OEFycmF5KHRoaXMuc2l6ZSl9LGQuRGVzY3JpcHRvci5wcm90b3R5cGUuZmluZERlc2NyaXB0b3I9ZnVuY3Rpb24oYyl7Zm9yKHZhciBtPTA7bTx0aGlzLmRlc2NzLmxlbmd0aDttKyspaWYodGhpcy5kZXNjc1ttXS50YWc9PWMpcmV0dXJuIHRoaXMuZGVzY3NbbV07cmV0dXJuIG51bGx9LGQuRGVzY3JpcHRvci5wcm90b3R5cGUucGFyc2VSZW1haW5pbmdEZXNjcmlwdG9ycz1mdW5jdGlvbihjKXtmb3IodmFyIG09Yy5wb3NpdGlvbjtjLnBvc2l0aW9uPG0rdGhpcy5zaXplOyl7dmFyIHg9Zi5wYXJzZU9uZURlc2NyaXB0b3IoYyk7dGhpcy5kZXNjcy5wdXNoKHgpfX0sZC5FU19EZXNjcmlwdG9yPWZ1bmN0aW9uKGMpe2QuRGVzY3JpcHRvci5jYWxsKHRoaXMsdCxjKX0sZC5FU19EZXNjcmlwdG9yLnByb3RvdHlwZT1uZXcgZC5EZXNjcmlwdG9yLGQuRVNfRGVzY3JpcHRvci5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oYyl7aWYodGhpcy5FU19JRD1jLnJlYWRVaW50MTYoKSx0aGlzLmZsYWdzPWMucmVhZFVpbnQ4KCksdGhpcy5zaXplLT0zLHRoaXMuZmxhZ3MmMTI4Pyh0aGlzLmRlcGVuZHNPbl9FU19JRD1jLnJlYWRVaW50MTYoKSx0aGlzLnNpemUtPTIpOnRoaXMuZGVwZW5kc09uX0VTX0lEPTAsdGhpcy5mbGFncyY2NCl7dmFyIG09Yy5yZWFkVWludDgoKTt0aGlzLlVSTD1jLnJlYWRTdHJpbmcobSksdGhpcy5zaXplLT1tKzF9ZWxzZSB0aGlzLlVSTD0iIjt0aGlzLmZsYWdzJjMyPyh0aGlzLk9DUl9FU19JRD1jLnJlYWRVaW50MTYoKSx0aGlzLnNpemUtPTIpOnRoaXMuT0NSX0VTX0lEPTAsdGhpcy5wYXJzZVJlbWFpbmluZ0Rlc2NyaXB0b3JzKGMpfSxkLkVTX0Rlc2NyaXB0b3IucHJvdG90eXBlLmdldE9UST1mdW5jdGlvbihjKXt2YXIgbT10aGlzLmZpbmREZXNjcmlwdG9yKGUpO3JldHVybiBtP20ub3RpOjB9LGQuRVNfRGVzY3JpcHRvci5wcm90b3R5cGUuZ2V0QXVkaW9Db25maWc9ZnVuY3Rpb24oYyl7dmFyIG09dGhpcy5maW5kRGVzY3JpcHRvcihlKTtpZighbSlyZXR1cm4gbnVsbDt2YXIgeD1tLmZpbmREZXNjcmlwdG9yKGkpO2lmKHgmJnguZGF0YSl7dmFyIFU9KHguZGF0YVswXSYyNDgpPj4zO3JldHVybiBVPT09MzEmJnguZGF0YS5sZW5ndGg+PTImJihVPTMyKygoeC5kYXRhWzBdJjcpPDwzKSsoKHguZGF0YVsxXSYyMjQpPj41KSksVX1lbHNlIHJldHVybiBudWxsfSxkLkRlY29kZXJDb25maWdEZXNjcmlwdG9yPWZ1bmN0aW9uKGMpe2QuRGVzY3JpcHRvci5jYWxsKHRoaXMsZSxjKX0sZC5EZWNvZGVyQ29uZmlnRGVzY3JpcHRvci5wcm90b3R5cGU9bmV3IGQuRGVzY3JpcHRvcixkLkRlY29kZXJDb25maWdEZXNjcmlwdG9yLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihjKXt0aGlzLm90aT1jLnJlYWRVaW50OCgpLHRoaXMuc3RyZWFtVHlwZT1jLnJlYWRVaW50OCgpLHRoaXMuYnVmZmVyU2l6ZT1jLnJlYWRVaW50MjQoKSx0aGlzLm1heEJpdHJhdGU9Yy5yZWFkVWludDMyKCksdGhpcy5hdmdCaXRyYXRlPWMucmVhZFVpbnQzMigpLHRoaXMuc2l6ZS09MTMsdGhpcy5wYXJzZVJlbWFpbmluZ0Rlc2NyaXB0b3JzKGMpfSxkLkRlY29kZXJTcGVjaWZpY0luZm89ZnVuY3Rpb24oYyl7ZC5EZXNjcmlwdG9yLmNhbGwodGhpcyxpLGMpfSxkLkRlY29kZXJTcGVjaWZpY0luZm8ucHJvdG90eXBlPW5ldyBkLkRlc2NyaXB0b3IsZC5TTENvbmZpZ0Rlc2NyaXB0b3I9ZnVuY3Rpb24oYyl7ZC5EZXNjcmlwdG9yLmNhbGwodGhpcyxzLGMpfSxkLlNMQ29uZmlnRGVzY3JpcHRvci5wcm90b3R5cGU9bmV3IGQuRGVzY3JpcHRvcix0aGlzfTtFLk1QRUc0RGVzY3JpcHRvclBhcnNlcj1fO3ZhciByPXtFUlJfSU5WQUxJRF9EQVRBOi0xLEVSUl9OT1RfRU5PVUdIX0RBVEE6MCxPSzoxLEJBU0lDX0JPWEVTOlsibWRhdCIsImlkYXQiLCJmcmVlIiwic2tpcCIsIm1lY28iLCJzdHJrIl0sRlVMTF9CT1hFUzpbImhtaGQiLCJubWhkIiwiaW9kcyIsInhtbCAiLCJieG1sIiwiaXBybyIsIm1lcmUiXSxDT05UQUlORVJfQk9YRVM6W1sibW9vdiIsWyJ0cmFrIiwicHNzaCJdXSxbInRyYWsiXSxbImVkdHMiXSxbIm1kaWEiXSxbIm1pbmYiXSxbImRpbmYiXSxbInN0YmwiLFsic2dwZCIsInNiZ3AiXV0sWyJtdmV4IixbInRyZXgiXV0sWyJtb29mIixbInRyYWYiXV0sWyJ0cmFmIixbInRydW4iLCJzZ3BkIiwic2JncCJdXSxbInZ0dGMiXSxbInRyZWYiXSxbImlyZWYiXSxbIm1mcmEiLFsidGZyYSJdXSxbIm1lY28iXSxbImhudGkiXSxbImhpbmYiXSxbInN0cmsiXSxbInN0cmQiXSxbInNpbmYiXSxbInJpbmYiXSxbInNjaGkiXSxbInRyZ3IiXSxbInVkdGEiLFsia2luZCJdXSxbImlwcnAiLFsiaXBtYSJdXSxbImlwY28iXV0sYm94Q29kZXM6W10sZnVsbEJveENvZGVzOltdLGNvbnRhaW5lckJveENvZGVzOltdLHNhbXBsZUVudHJ5Q29kZXM6e30sc2FtcGxlR3JvdXBFbnRyeUNvZGVzOltdLHRyYWNrR3JvdXBUeXBlczpbXSxVVUlEQm94ZXM6e30sVVVJRHM6W10saW5pdGlhbGl6ZTpmdW5jdGlvbigpe3IuRnVsbEJveC5wcm90b3R5cGU9bmV3IHIuQm94LHIuQ29udGFpbmVyQm94LnByb3RvdHlwZT1uZXcgci5Cb3gsci5TYW1wbGVFbnRyeS5wcm90b3R5cGU9bmV3IHIuQm94LHIuVHJhY2tHcm91cFR5cGVCb3gucHJvdG90eXBlPW5ldyByLkZ1bGxCb3gsci5CQVNJQ19CT1hFUy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IuY3JlYXRlQm94Q3Rvcih0KX0pLHIuRlVMTF9CT1hFUy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IuY3JlYXRlRnVsbEJveEN0b3IodCl9KSxyLkNPTlRBSU5FUl9CT1hFUy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IuY3JlYXRlQ29udGFpbmVyQm94Q3Rvcih0WzBdLG51bGwsdFsxXSl9KX0sQm94OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnR5cGU9dCx0aGlzLnNpemU9ZSx0aGlzLnV1aWQ9aX0sRnVsbEJveDpmdW5jdGlvbih0LGUsaSl7ci5Cb3guY2FsbCh0aGlzLHQsZSxpKSx0aGlzLmZsYWdzPTAsdGhpcy52ZXJzaW9uPTB9LENvbnRhaW5lckJveDpmdW5jdGlvbih0LGUsaSl7ci5Cb3guY2FsbCh0aGlzLHQsZSxpKSx0aGlzLmJveGVzPVtdfSxTYW1wbGVFbnRyeTpmdW5jdGlvbih0LGUsaSxzKXtyLkNvbnRhaW5lckJveC5jYWxsKHRoaXMsdCxlKSx0aGlzLmhkcl9zaXplPWksdGhpcy5zdGFydD1zfSxTYW1wbGVHcm91cEVudHJ5OmZ1bmN0aW9uKHQpe3RoaXMuZ3JvdXBpbmdfdHlwZT10fSxUcmFja0dyb3VwVHlwZUJveDpmdW5jdGlvbih0LGUpe3IuRnVsbEJveC5jYWxsKHRoaXMsdCxlKX0sY3JlYXRlQm94Q3RvcjpmdW5jdGlvbih0LGUpe3IuYm94Q29kZXMucHVzaCh0KSxyW3QrIkJveCJdPWZ1bmN0aW9uKGkpe3IuQm94LmNhbGwodGhpcyx0LGkpfSxyW3QrIkJveCJdLnByb3RvdHlwZT1uZXcgci5Cb3gsZSYmKHJbdCsiQm94Il0ucHJvdG90eXBlLnBhcnNlPWUpfSxjcmVhdGVGdWxsQm94Q3RvcjpmdW5jdGlvbih0LGUpe3JbdCsiQm94Il09ZnVuY3Rpb24oaSl7ci5GdWxsQm94LmNhbGwodGhpcyx0LGkpfSxyW3QrIkJveCJdLnByb3RvdHlwZT1uZXcgci5GdWxsQm94LHJbdCsiQm94Il0ucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKGkpe3RoaXMucGFyc2VGdWxsSGVhZGVyKGkpLGUmJmUuY2FsbCh0aGlzLGkpfX0sYWRkU3ViQm94QXJyYXlzOmZ1bmN0aW9uKHQpe2lmKHQpe3RoaXMuc3ViQm94TmFtZXM9dDtmb3IodmFyIGU9dC5sZW5ndGgsaT0wO2k8ZTtpKyspdGhpc1t0W2ldKyJzIl09W119fSxjcmVhdGVDb250YWluZXJCb3hDdG9yOmZ1bmN0aW9uKHQsZSxpKXtyW3QrIkJveCJdPWZ1bmN0aW9uKHMpe3IuQ29udGFpbmVyQm94LmNhbGwodGhpcyx0LHMpLHIuYWRkU3ViQm94QXJyYXlzLmNhbGwodGhpcyxpKX0sclt0KyJCb3giXS5wcm90b3R5cGU9bmV3IHIuQ29udGFpbmVyQm94LGUmJihyW3QrIkJveCJdLnByb3RvdHlwZS5wYXJzZT1lKX0sY3JlYXRlTWVkaWFTYW1wbGVFbnRyeUN0b3I6ZnVuY3Rpb24odCxlLGkpe3Iuc2FtcGxlRW50cnlDb2Rlc1t0XT1bXSxyW3QrIlNhbXBsZUVudHJ5Il09ZnVuY3Rpb24ocyxuKXtyLlNhbXBsZUVudHJ5LmNhbGwodGhpcyxzLG4pLHIuYWRkU3ViQm94QXJyYXlzLmNhbGwodGhpcyxpKX0sclt0KyJTYW1wbGVFbnRyeSJdLnByb3RvdHlwZT1uZXcgci5TYW1wbGVFbnRyeSxlJiYoclt0KyJTYW1wbGVFbnRyeSJdLnByb3RvdHlwZS5wYXJzZT1lKX0sY3JlYXRlU2FtcGxlRW50cnlDdG9yOmZ1bmN0aW9uKHQsZSxpLHMpe3Iuc2FtcGxlRW50cnlDb2Rlc1t0XS5wdXNoKGUpLHJbZSsiU2FtcGxlRW50cnkiXT1mdW5jdGlvbihuKXtyW3QrIlNhbXBsZUVudHJ5Il0uY2FsbCh0aGlzLGUsbiksci5hZGRTdWJCb3hBcnJheXMuY2FsbCh0aGlzLHMpfSxyW2UrIlNhbXBsZUVudHJ5Il0ucHJvdG90eXBlPW5ldyByW3QrIlNhbXBsZUVudHJ5Il0saSYmKHJbZSsiU2FtcGxlRW50cnkiXS5wcm90b3R5cGUucGFyc2U9aSl9LGNyZWF0ZUVuY3J5cHRlZFNhbXBsZUVudHJ5Q3RvcjpmdW5jdGlvbih0LGUsaSl7ci5jcmVhdGVTYW1wbGVFbnRyeUN0b3IuY2FsbCh0aGlzLHQsZSxpLFsic2luZiJdKX0sY3JlYXRlU2FtcGxlR3JvdXBDdG9yOmZ1bmN0aW9uKHQsZSl7clt0KyJTYW1wbGVHcm91cEVudHJ5Il09ZnVuY3Rpb24oaSl7ci5TYW1wbGVHcm91cEVudHJ5LmNhbGwodGhpcyx0LGkpfSxyW3QrIlNhbXBsZUdyb3VwRW50cnkiXS5wcm90b3R5cGU9bmV3IHIuU2FtcGxlR3JvdXBFbnRyeSxlJiYoclt0KyJTYW1wbGVHcm91cEVudHJ5Il0ucHJvdG90eXBlLnBhcnNlPWUpfSxjcmVhdGVUcmFja0dyb3VwQ3RvcjpmdW5jdGlvbih0LGUpe3JbdCsiVHJhY2tHcm91cFR5cGVCb3giXT1mdW5jdGlvbihpKXtyLlRyYWNrR3JvdXBUeXBlQm94LmNhbGwodGhpcyx0LGkpfSxyW3QrIlRyYWNrR3JvdXBUeXBlQm94Il0ucHJvdG90eXBlPW5ldyByLlRyYWNrR3JvdXBUeXBlQm94LGUmJihyW3QrIlRyYWNrR3JvdXBUeXBlQm94Il0ucHJvdG90eXBlLnBhcnNlPWUpfSxjcmVhdGVVVUlEQm94OmZ1bmN0aW9uKHQsZSxpLHMpe3IuVVVJRHMucHVzaCh0KSxyLlVVSURCb3hlc1t0XT1mdW5jdGlvbihuKXtlP3IuRnVsbEJveC5jYWxsKHRoaXMsInV1aWQiLG4sdCk6aT9yLkNvbnRhaW5lckJveC5jYWxsKHRoaXMsInV1aWQiLG4sdCk6ci5Cb3guY2FsbCh0aGlzLCJ1dWlkIixuLHQpfSxyLlVVSURCb3hlc1t0XS5wcm90b3R5cGU9ZT9uZXcgci5GdWxsQm94Omk/bmV3IHIuQ29udGFpbmVyQm94Om5ldyByLkJveCxzJiYoZT9yLlVVSURCb3hlc1t0XS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24obil7dGhpcy5wYXJzZUZ1bGxIZWFkZXIobikscyYmcy5jYWxsKHRoaXMsbil9OnIuVVVJREJveGVzW3RdLnByb3RvdHlwZS5wYXJzZT1zKX19O3IuaW5pdGlhbGl6ZSgpLHIuVEtIRF9GTEFHX0VOQUJMRUQ9MSxyLlRLSERfRkxBR19JTl9NT1ZJRT0yLHIuVEtIRF9GTEFHX0lOX1BSRVZJRVc9NCxyLlRGSERfRkxBR19CQVNFX0RBVEFfT0ZGU0VUPTEsci5URkhEX0ZMQUdfU0FNUExFX0RFU0M9MixyLlRGSERfRkxBR19TQU1QTEVfRFVSPTgsci5URkhEX0ZMQUdfU0FNUExFX1NJWkU9MTYsci5URkhEX0ZMQUdfU0FNUExFX0ZMQUdTPTMyLHIuVEZIRF9GTEFHX0RVUl9FTVBUWT02NTUzNixyLlRGSERfRkxBR19ERUZBVUxUX0JBU0VfSVNfTU9PRj0xMzEwNzIsci5UUlVOX0ZMQUdTX0RBVEFfT0ZGU0VUPTEsci5UUlVOX0ZMQUdTX0ZJUlNUX0ZMQUc9NCxyLlRSVU5fRkxBR1NfRFVSQVRJT049MjU2LHIuVFJVTl9GTEFHU19TSVpFPTUxMixyLlRSVU5fRkxBR1NfRkxBR1M9MTAyNCxyLlRSVU5fRkxBR1NfQ1RTX09GRlNFVD0yMDQ4LHIuQm94LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWRkQm94KG5ldyByW3QrIkJveCJdKX0sci5Cb3gucHJvdG90eXBlLmFkZEJveD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ib3hlcy5wdXNoKHQpLHRoaXNbdC50eXBlKyJzIl0/dGhpc1t0LnR5cGUrInMiXS5wdXNoKHQpOnRoaXNbdC50eXBlXT10LHR9LHIuQm94LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1t0XT1lLHRoaXN9LHIuQm94LnByb3RvdHlwZS5hZGRFbnRyeT1mdW5jdGlvbih0LGUpe3ZhciBpPWV8fCJlbnRyaWVzIjtyZXR1cm4gdGhpc1tpXXx8KHRoaXNbaV09W10pLHRoaXNbaV0ucHVzaCh0KSx0aGlzfSxFLkJveFBhcnNlcj1yLHIucGFyc2VVVUlEPWZ1bmN0aW9uKHQpe3JldHVybiByLnBhcnNlSGV4MTYodCl9LHIucGFyc2VIZXgxNj1mdW5jdGlvbih0KXtmb3IodmFyIGU9IiIsaT0wO2k8MTY7aSsrKXt2YXIgcz10LnJlYWRVaW50OCgpLnRvU3RyaW5nKDE2KTtlKz1zLmxlbmd0aD09PTE/IjAiK3M6c31yZXR1cm4gZX0sci5wYXJzZU9uZUJveD1mdW5jdGlvbih0LGUsaSl7dmFyIHMsbj10LmdldFBvc2l0aW9uKCksZj0wLGQsYztpZih0LmdldEVuZFBvc2l0aW9uKCktbjw4KXJldHVybiBoLmRlYnVnKCJCb3hQYXJzZXIiLCJOb3QgZW5vdWdoIGRhdGEgaW4gc3RyZWFtIHRvIHBhcnNlIHRoZSB0eXBlIGFuZCBzaXplIG9mIHRoZSBib3giKSx7Y29kZTpyLkVSUl9OT1RfRU5PVUdIX0RBVEF9O2lmKGkmJmk8OClyZXR1cm4gaC5kZWJ1ZygiQm94UGFyc2VyIiwiTm90IGVub3VnaCBieXRlcyBsZWZ0IGluIHRoZSBwYXJlbnQgYm94IHRvIHBhcnNlIGEgbmV3IGJveCIpLHtjb2RlOnIuRVJSX05PVF9FTk9VR0hfREFUQX07dmFyIG09dC5yZWFkVWludDMyKCkseD10LnJlYWRTdHJpbmcoNCksVT14O2lmKGguZGVidWcoIkJveFBhcnNlciIsIkZvdW5kIGJveCBvZiB0eXBlICciK3grIicgYW5kIHNpemUgIittKyIgYXQgcG9zaXRpb24gIituKSxmPTgseD09InV1aWQiKXtpZih0LmdldEVuZFBvc2l0aW9uKCktdC5nZXRQb3NpdGlvbigpPDE2fHxpLWY8MTYpcmV0dXJuIHQuc2VlayhuKSxoLmRlYnVnKCJCb3hQYXJzZXIiLCJOb3QgZW5vdWdoIGJ5dGVzIGxlZnQgaW4gdGhlIHBhcmVudCBib3ggdG8gcGFyc2UgYSBVVUlEIGJveCIpLHtjb2RlOnIuRVJSX05PVF9FTk9VR0hfREFUQX07Yz1yLnBhcnNlVVVJRCh0KSxmKz0xNixVPWN9aWYobT09MSl7aWYodC5nZXRFbmRQb3NpdGlvbigpLXQuZ2V0UG9zaXRpb24oKTw4fHxpJiZpLWY8OClyZXR1cm4gdC5zZWVrKG4pLGgud2FybigiQm94UGFyc2VyIiwnTm90IGVub3VnaCBkYXRhIGluIHN0cmVhbSB0byBwYXJzZSB0aGUgZXh0ZW5kZWQgc2l6ZSBvZiB0aGUgIicreCsnIiBib3gnKSx7Y29kZTpyLkVSUl9OT1RfRU5PVUdIX0RBVEF9O209dC5yZWFkVWludDY0KCksZis9OH1lbHNlIGlmKG09PT0wKXtpZihpKW09aTtlbHNlIGlmKHghPT0ibWRhdCIpcmV0dXJuIGguZXJyb3IoIkJveFBhcnNlciIsIlVubGltaXRlZCBib3ggc2l6ZSBub3Qgc3VwcG9ydGVkIGZvciB0eXBlOiAnIit4KyInIikscz1uZXcgci5Cb3goeCxtKSx7Y29kZTpyLk9LLGJveDpzLHNpemU6cy5zaXplfX1yZXR1cm4gbSE9PTAmJm08Zj8oaC5lcnJvcigiQm94UGFyc2VyIiwiQm94IG9mIHR5cGUgIit4KyIgaGFzIGFuIGludmFsaWQgc2l6ZSAiK20rIiAodG9vIHNtYWxsIHRvIGJlIGEgYm94KSIpLHtjb2RlOnIuRVJSX05PVF9FTk9VR0hfREFUQSx0eXBlOngsc2l6ZTptLGhkcl9zaXplOmYsc3RhcnQ6bn0pOm0hPT0wJiZpJiZtPmk/KGguZXJyb3IoIkJveFBhcnNlciIsIkJveCBvZiB0eXBlICciK3grIicgaGFzIGEgc2l6ZSAiK20rIiBncmVhdGVyIHRoYW4gaXRzIGNvbnRhaW5lciBzaXplICIraSkse2NvZGU6ci5FUlJfTk9UX0VOT1VHSF9EQVRBLHR5cGU6eCxzaXplOm0saGRyX3NpemU6ZixzdGFydDpufSk6bSE9PTAmJm4rbT50LmdldEVuZFBvc2l0aW9uKCk/KHQuc2VlayhuKSxoLmluZm8oIkJveFBhcnNlciIsIk5vdCBlbm91Z2ggZGF0YSBpbiBzdHJlYW0gdG8gcGFyc2UgdGhlIGVudGlyZSAnIit4KyInIGJveCIpLHtjb2RlOnIuRVJSX05PVF9FTk9VR0hfREFUQSx0eXBlOngsc2l6ZTptLGhkcl9zaXplOmYsc3RhcnQ6bn0pOmU/e2NvZGU6ci5PSyx0eXBlOngsc2l6ZTptLGhkcl9zaXplOmYsc3RhcnQ6bn06KHJbeCsiQm94Il0/cz1uZXcgclt4KyJCb3giXShtKTp4IT09InV1aWQiPyhoLndhcm4oIkJveFBhcnNlciIsIlVua25vd24gYm94IHR5cGU6ICciK3grIiciKSxzPW5ldyByLkJveCh4LG0pLHMuaGFzX3VucGFyc2VkX2RhdGE9ITApOnIuVVVJREJveGVzW2NdP3M9bmV3IHIuVVVJREJveGVzW2NdKG0pOihoLndhcm4oIkJveFBhcnNlciIsIlVua25vd24gdXVpZCB0eXBlOiAnIitjKyInIikscz1uZXcgci5Cb3goeCxtKSxzLnV1aWQ9YyxzLmhhc191bnBhcnNlZF9kYXRhPSEwKSxzLmhkcl9zaXplPWYscy5zdGFydD1uLHMud3JpdGU9PT1yLkJveC5wcm90b3R5cGUud3JpdGUmJnMudHlwZSE9PSJtZGF0IiYmKGguaW5mbygiQm94UGFyc2VyIiwiJyIrVSsiJyBib3ggd3JpdGluZyBub3QgeWV0IGltcGxlbWVudGVkLCBrZWVwaW5nIHVucGFyc2VkIGRhdGEgaW4gbWVtb3J5IGZvciBsYXRlciB3cml0ZSIpLHMucGFyc2VEYXRhQW5kUmV3aW5kKHQpKSxzLnBhcnNlKHQpLGQ9dC5nZXRQb3NpdGlvbigpLShzLnN0YXJ0K3Muc2l6ZSksZDwwPyhoLndhcm4oIkJveFBhcnNlciIsIlBhcnNpbmcgb2YgYm94ICciK1UrIicgZGlkIG5vdCByZWFkIHRoZSBlbnRpcmUgaW5kaWNhdGVkIGJveCBkYXRhIHNpemUgKG1pc3NpbmcgIistZCsiIGJ5dGVzKSwgc2Vla2luZyBmb3J3YXJkIiksdC5zZWVrKHMuc3RhcnQrcy5zaXplKSk6ZD4wJiYoaC5lcnJvcigiQm94UGFyc2VyIiwiUGFyc2luZyBvZiBib3ggJyIrVSsiJyByZWFkICIrZCsiIG1vcmUgYnl0ZXMgdGhhbiB0aGUgaW5kaWNhdGVkIGJveCBkYXRhIHNpemUsIHNlZWtpbmcgYmFja3dhcmRzIikscy5zaXplIT09MCYmdC5zZWVrKHMuc3RhcnQrcy5zaXplKSkse2NvZGU6ci5PSyxib3g6cyxzaXplOnMuc2l6ZX0pfSxyLkJveC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7dGhpcy50eXBlIT0ibWRhdCI/dGhpcy5kYXRhPXQucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLXRoaXMuaGRyX3NpemUpOnRoaXMuc2l6ZT09PTA/dC5zZWVrKHQuZ2V0RW5kUG9zaXRpb24oKSk6dC5zZWVrKHRoaXMuc3RhcnQrdGhpcy5zaXplKX0sci5Cb3gucHJvdG90eXBlLnBhcnNlRGF0YUFuZFJld2luZD1mdW5jdGlvbih0KXt0aGlzLmRhdGE9dC5yZWFkVWludDhBcnJheSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSksdC5wb3NpdGlvbi09dGhpcy5zaXplLXRoaXMuaGRyX3NpemV9LHIuRnVsbEJveC5wcm90b3R5cGUucGFyc2VEYXRhQW5kUmV3aW5kPWZ1bmN0aW9uKHQpe3RoaXMucGFyc2VGdWxsSGVhZGVyKHQpLHRoaXMuZGF0YT10LnJlYWRVaW50OEFycmF5KHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKSx0aGlzLmhkcl9zaXplLT00LHQucG9zaXRpb24tPXRoaXMuc2l6ZS10aGlzLmhkcl9zaXplfSxyLkZ1bGxCb3gucHJvdG90eXBlLnBhcnNlRnVsbEhlYWRlcj1mdW5jdGlvbih0KXt0aGlzLnZlcnNpb249dC5yZWFkVWludDgoKSx0aGlzLmZsYWdzPXQucmVhZFVpbnQyNCgpLHRoaXMuaGRyX3NpemUrPTR9LHIuRnVsbEJveC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7dGhpcy5wYXJzZUZ1bGxIZWFkZXIodCksdGhpcy5kYXRhPXQucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLXRoaXMuaGRyX3NpemUpfSxyLkNvbnRhaW5lckJveC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGk7dC5nZXRQb3NpdGlvbigpPHRoaXMuc3RhcnQrdGhpcy5zaXplOylpZihlPXIucGFyc2VPbmVCb3godCwhMSx0aGlzLnNpemUtKHQuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSksZS5jb2RlPT09ci5PSylpZihpPWUuYm94LHRoaXMuYm94ZXMucHVzaChpKSx0aGlzLnN1YkJveE5hbWVzJiZ0aGlzLnN1YkJveE5hbWVzLmluZGV4T2YoaS50eXBlKSE9LTEpdGhpc1t0aGlzLnN1YkJveE5hbWVzW3RoaXMuc3ViQm94TmFtZXMuaW5kZXhPZihpLnR5cGUpXSsicyJdLnB1c2goaSk7ZWxzZXt2YXIgcz1pLnR5cGUhPT0idXVpZCI/aS50eXBlOmkudXVpZDt0aGlzW3NdP2gud2FybigiQm94IG9mIHR5cGUgIitzKyIgYWxyZWFkeSBzdG9yZWQgaW4gZmllbGQgb2YgdGhpcyB0eXBlIik6dGhpc1tzXT1pfWVsc2UgcmV0dXJufSxyLkJveC5wcm90b3R5cGUucGFyc2VMYW5ndWFnZT1mdW5jdGlvbih0KXt0aGlzLmxhbmd1YWdlPXQucmVhZFVpbnQxNigpO3ZhciBlPVtdO2VbMF09dGhpcy5sYW5ndWFnZT4+MTAmMzEsZVsxXT10aGlzLmxhbmd1YWdlPj41JjMxLGVbMl09dGhpcy5sYW5ndWFnZSYzMSx0aGlzLmxhbmd1YWdlU3RyaW5nPVN0cmluZy5mcm9tQ2hhckNvZGUoZVswXSs5NixlWzFdKzk2LGVbMl0rOTYpfSxyLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTD0iVmlzdWFsIixyLlNBTVBMRV9FTlRSWV9UWVBFX0FVRElPPSJBdWRpbyIsci5TQU1QTEVfRU5UUllfVFlQRV9ISU5UPSJIaW50IixyLlNBTVBMRV9FTlRSWV9UWVBFX01FVEFEQVRBPSJNZXRhZGF0YSIsci5TQU1QTEVfRU5UUllfVFlQRV9TVUJUSVRMRT0iU3VidGl0bGUiLHIuU0FNUExFX0VOVFJZX1RZUEVfU1lTVEVNPSJTeXN0ZW0iLHIuU0FNUExFX0VOVFJZX1RZUEVfVEVYVD0iVGV4dCIsci5TYW1wbGVFbnRyeS5wcm90b3R5cGUucGFyc2VIZWFkZXI9ZnVuY3Rpb24odCl7dC5yZWFkVWludDhBcnJheSg2KSx0aGlzLmRhdGFfcmVmZXJlbmNlX2luZGV4PXQucmVhZFVpbnQxNigpLHRoaXMuaGRyX3NpemUrPTh9LHIuU2FtcGxlRW50cnkucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3RoaXMucGFyc2VIZWFkZXIodCksdGhpcy5kYXRhPXQucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLXRoaXMuaGRyX3NpemUpfSxyLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5wYXJzZURhdGFBbmRSZXdpbmQ9ZnVuY3Rpb24odCl7dGhpcy5wYXJzZUhlYWRlcih0KSx0aGlzLmRhdGE9dC5yZWFkVWludDhBcnJheSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSksdGhpcy5oZHJfc2l6ZS09OCx0LnBvc2l0aW9uLT10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZX0sci5TYW1wbGVFbnRyeS5wcm90b3R5cGUucGFyc2VGb290ZXI9ZnVuY3Rpb24odCl7ci5Db250YWluZXJCb3gucHJvdG90eXBlLnBhcnNlLmNhbGwodGhpcyx0KX0sci5jcmVhdGVNZWRpYVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX0hJTlQpLHIuY3JlYXRlTWVkaWFTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9NRVRBREFUQSksci5jcmVhdGVNZWRpYVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1NVQlRJVExFKSxyLmNyZWF0ZU1lZGlhU2FtcGxlRW50cnlDdG9yKHIuU0FNUExFX0VOVFJZX1RZUEVfU1lTVEVNKSxyLmNyZWF0ZU1lZGlhU2FtcGxlRW50cnlDdG9yKHIuU0FNUExFX0VOVFJZX1RZUEVfVEVYVCksci5jcmVhdGVNZWRpYVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCxmdW5jdGlvbih0KXt2YXIgZTt0aGlzLnBhcnNlSGVhZGVyKHQpLHQucmVhZFVpbnQxNigpLHQucmVhZFVpbnQxNigpLHQucmVhZFVpbnQzMkFycmF5KDMpLHRoaXMud2lkdGg9dC5yZWFkVWludDE2KCksdGhpcy5oZWlnaHQ9dC5yZWFkVWludDE2KCksdGhpcy5ob3JpenJlc29sdXRpb249dC5yZWFkVWludDMyKCksdGhpcy52ZXJ0cmVzb2x1dGlvbj10LnJlYWRVaW50MzIoKSx0LnJlYWRVaW50MzIoKSx0aGlzLmZyYW1lX2NvdW50PXQucmVhZFVpbnQxNigpLGU9TWF0aC5taW4oMzEsdC5yZWFkVWludDgoKSksdGhpcy5jb21wcmVzc29ybmFtZT10LnJlYWRTdHJpbmcoZSksZTwzMSYmdC5yZWFkU3RyaW5nKDMxLWUpLHRoaXMuZGVwdGg9dC5yZWFkVWludDE2KCksdC5yZWFkVWludDE2KCksdGhpcy5wYXJzZUZvb3Rlcih0KX0pLHIuY3JlYXRlTWVkaWFTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9BVURJTyxmdW5jdGlvbih0KXt0aGlzLnBhcnNlSGVhZGVyKHQpLHQucmVhZFVpbnQzMkFycmF5KDIpLHRoaXMuY2hhbm5lbF9jb3VudD10LnJlYWRVaW50MTYoKSx0aGlzLnNhbXBsZXNpemU9dC5yZWFkVWludDE2KCksdC5yZWFkVWludDE2KCksdC5yZWFkVWludDE2KCksdGhpcy5zYW1wbGVyYXRlPXQucmVhZFVpbnQzMigpLzY1NTM2LHRoaXMucGFyc2VGb290ZXIodCl9KSxyLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwiYXZjMSIpLHIuY3JlYXRlU2FtcGxlRW50cnlDdG9yKHIuU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJhdmMyIiksci5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsImF2YzMiKSxyLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwiYXZjNCIpLHIuY3JlYXRlU2FtcGxlRW50cnlDdG9yKHIuU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJhdjAxIiksci5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsImh2YzEiKSxyLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwiaGV2MSIpLHIuY3JlYXRlU2FtcGxlRW50cnlDdG9yKHIuU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJ2dmMxIiksci5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsInZ2aTEiKSxyLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwidnZzMSIpLHIuY3JlYXRlU2FtcGxlRW50cnlDdG9yKHIuU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJ2dmNOIiksci5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsInZwMDgiKSxyLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwidnAwOSIpLHIuY3JlYXRlU2FtcGxlRW50cnlDdG9yKHIuU0FNUExFX0VOVFJZX1RZUEVfQVVESU8sIm1wNGEiKSxyLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX0FVRElPLCJhYy0zIiksci5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9BVURJTywiZWMtMyIpLHIuY3JlYXRlU2FtcGxlRW50cnlDdG9yKHIuU0FNUExFX0VOVFJZX1RZUEVfQVVESU8sIk9wdXMiKSxyLmNyZWF0ZUVuY3J5cHRlZFNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwiZW5jdiIpLHIuY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yKHIuU0FNUExFX0VOVFJZX1RZUEVfQVVESU8sImVuY2EiKSxyLmNyZWF0ZUVuY3J5cHRlZFNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1NVQlRJVExFLCJlbmN1Iiksci5jcmVhdGVFbmNyeXB0ZWRTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9TWVNURU0sImVuY3MiKSxyLmNyZWF0ZUVuY3J5cHRlZFNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1RFWFQsImVuY3QiKSxyLmNyZWF0ZUVuY3J5cHRlZFNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX01FVEFEQVRBLCJlbmNtIiksci5jcmVhdGVCb3hDdG9yKCJhMWx4IixmdW5jdGlvbih0KXt2YXIgZT10LnJlYWRVaW50OCgpJjEsaT0oKGUmMSkrMSkqMTY7dGhpcy5sYXllcl9zaXplPVtdO2Zvcih2YXIgcz0wO3M8MztzKyspaT09MTY/dGhpcy5sYXllcl9zaXplW3NdPXQucmVhZFVpbnQxNigpOnRoaXMubGF5ZXJfc2l6ZVtzXT10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlQm94Q3RvcigiYTFvcCIsZnVuY3Rpb24odCl7dGhpcy5vcF9pbmRleD10LnJlYWRVaW50OCgpfSksci5jcmVhdGVGdWxsQm94Q3RvcigiYXV4QyIsZnVuY3Rpb24odCl7dGhpcy5hdXhfdHlwZT10LnJlYWRDU3RyaW5nKCk7dmFyIGU9dGhpcy5zaXplLXRoaXMuaGRyX3NpemUtKHRoaXMuYXV4X3R5cGUubGVuZ3RoKzEpO3RoaXMuYXV4X3N1YnR5cGU9dC5yZWFkVWludDhBcnJheShlKX0pLHIuY3JlYXRlQm94Q3RvcigiYXYxQyIsZnVuY3Rpb24odCl7dmFyIGU9dC5yZWFkVWludDgoKTtpZihlPj43JiExKXtoLmVycm9yKCJhdjFDIG1hcmtlciBwcm9ibGVtIik7cmV0dXJufWlmKHRoaXMudmVyc2lvbj1lJjEyNyx0aGlzLnZlcnNpb24hPT0xKXtoLmVycm9yKCJhdjFDIHZlcnNpb24gIit0aGlzLnZlcnNpb24rIiBub3Qgc3VwcG9ydGVkIik7cmV0dXJufWlmKGU9dC5yZWFkVWludDgoKSx0aGlzLnNlcV9wcm9maWxlPWU+PjUmNyx0aGlzLnNlcV9sZXZlbF9pZHhfMD1lJjMxLGU9dC5yZWFkVWludDgoKSx0aGlzLnNlcV90aWVyXzA9ZT4+NyYxLHRoaXMuaGlnaF9iaXRkZXB0aD1lPj42JjEsdGhpcy50d2VsdmVfYml0PWU+PjUmMSx0aGlzLm1vbm9jaHJvbWU9ZT4+NCYxLHRoaXMuY2hyb21hX3N1YnNhbXBsaW5nX3g9ZT4+MyYxLHRoaXMuY2hyb21hX3N1YnNhbXBsaW5nX3k9ZT4+MiYxLHRoaXMuY2hyb21hX3NhbXBsZV9wb3NpdGlvbj1lJjMsZT10LnJlYWRVaW50OCgpLHRoaXMucmVzZXJ2ZWRfMT1lPj41JjcsdGhpcy5yZXNlcnZlZF8xIT09MCl7aC5lcnJvcigiYXYxQyByZXNlcnZlZF8xIHBhcnNpbmcgcHJvYmxlbSIpO3JldHVybn1pZih0aGlzLmluaXRpYWxfcHJlc2VudGF0aW9uX2RlbGF5X3ByZXNlbnQ9ZT4+NCYxLHRoaXMuaW5pdGlhbF9wcmVzZW50YXRpb25fZGVsYXlfcHJlc2VudD09PTEpdGhpcy5pbml0aWFsX3ByZXNlbnRhdGlvbl9kZWxheV9taW51c19vbmU9ZSYxNTtlbHNlIGlmKHRoaXMucmVzZXJ2ZWRfMj1lJjE1LHRoaXMucmVzZXJ2ZWRfMiE9PTApe2guZXJyb3IoImF2MUMgcmVzZXJ2ZWRfMiBwYXJzaW5nIHByb2JsZW0iKTtyZXR1cm59dmFyIGk9dGhpcy5zaXplLXRoaXMuaGRyX3NpemUtNDt0aGlzLmNvbmZpZ09CVXM9dC5yZWFkVWludDhBcnJheShpKX0pLHIuY3JlYXRlQm94Q3RvcigiYXZjQyIsZnVuY3Rpb24odCl7dmFyIGUsaTtmb3IodGhpcy5jb25maWd1cmF0aW9uVmVyc2lvbj10LnJlYWRVaW50OCgpLHRoaXMuQVZDUHJvZmlsZUluZGljYXRpb249dC5yZWFkVWludDgoKSx0aGlzLnByb2ZpbGVfY29tcGF0aWJpbGl0eT10LnJlYWRVaW50OCgpLHRoaXMuQVZDTGV2ZWxJbmRpY2F0aW9uPXQucmVhZFVpbnQ4KCksdGhpcy5sZW5ndGhTaXplTWludXNPbmU9dC5yZWFkVWludDgoKSYzLHRoaXMubmJfU1BTX25hbHVzPXQucmVhZFVpbnQ4KCkmMzEsaT10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS02LHRoaXMuU1BTPVtdLGU9MDtlPHRoaXMubmJfU1BTX25hbHVzO2UrKyl0aGlzLlNQU1tlXT17fSx0aGlzLlNQU1tlXS5sZW5ndGg9dC5yZWFkVWludDE2KCksdGhpcy5TUFNbZV0ubmFsdT10LnJlYWRVaW50OEFycmF5KHRoaXMuU1BTW2VdLmxlbmd0aCksaS09Mit0aGlzLlNQU1tlXS5sZW5ndGg7Zm9yKHRoaXMubmJfUFBTX25hbHVzPXQucmVhZFVpbnQ4KCksaS0tLHRoaXMuUFBTPVtdLGU9MDtlPHRoaXMubmJfUFBTX25hbHVzO2UrKyl0aGlzLlBQU1tlXT17fSx0aGlzLlBQU1tlXS5sZW5ndGg9dC5yZWFkVWludDE2KCksdGhpcy5QUFNbZV0ubmFsdT10LnJlYWRVaW50OEFycmF5KHRoaXMuUFBTW2VdLmxlbmd0aCksaS09Mit0aGlzLlBQU1tlXS5sZW5ndGg7aT4wJiYodGhpcy5leHQ9dC5yZWFkVWludDhBcnJheShpKSl9KSxyLmNyZWF0ZUJveEN0b3IoImJ0cnQiLGZ1bmN0aW9uKHQpe3RoaXMuYnVmZmVyU2l6ZURCPXQucmVhZFVpbnQzMigpLHRoaXMubWF4Qml0cmF0ZT10LnJlYWRVaW50MzIoKSx0aGlzLmF2Z0JpdHJhdGU9dC5yZWFkVWludDMyKCl9KSxyLmNyZWF0ZUJveEN0b3IoImNsYXAiLGZ1bmN0aW9uKHQpe3RoaXMuY2xlYW5BcGVydHVyZVdpZHRoTj10LnJlYWRVaW50MzIoKSx0aGlzLmNsZWFuQXBlcnR1cmVXaWR0aEQ9dC5yZWFkVWludDMyKCksdGhpcy5jbGVhbkFwZXJ0dXJlSGVpZ2h0Tj10LnJlYWRVaW50MzIoKSx0aGlzLmNsZWFuQXBlcnR1cmVIZWlnaHREPXQucmVhZFVpbnQzMigpLHRoaXMuaG9yaXpPZmZOPXQucmVhZFVpbnQzMigpLHRoaXMuaG9yaXpPZmZEPXQucmVhZFVpbnQzMigpLHRoaXMudmVydE9mZk49dC5yZWFkVWludDMyKCksdGhpcy52ZXJ0T2ZmRD10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlQm94Q3RvcigiY2xsaSIsZnVuY3Rpb24odCl7dGhpcy5tYXhfY29udGVudF9saWdodF9sZXZlbD10LnJlYWRVaW50MTYoKSx0aGlzLm1heF9waWNfYXZlcmFnZV9saWdodF9sZXZlbD10LnJlYWRVaW50MTYoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoImNvNjQiLGZ1bmN0aW9uKHQpe3ZhciBlLGk7aWYoZT10LnJlYWRVaW50MzIoKSx0aGlzLmNodW5rX29mZnNldHM9W10sdGhpcy52ZXJzaW9uPT09MClmb3IoaT0wO2k8ZTtpKyspdGhpcy5jaHVua19vZmZzZXRzLnB1c2godC5yZWFkVWludDY0KCkpfSksci5jcmVhdGVGdWxsQm94Q3RvcigiQ29MTCIsZnVuY3Rpb24odCl7dGhpcy5tYXhDTEw9dC5yZWFkVWludDE2KCksdGhpcy5tYXhGQUxMPXQucmVhZFVpbnQxNigpfSksci5jcmVhdGVCb3hDdG9yKCJjb2xyIixmdW5jdGlvbih0KXtpZih0aGlzLmNvbG91cl90eXBlPXQucmVhZFN0cmluZyg0KSx0aGlzLmNvbG91cl90eXBlPT09Im5jbHgiKXt0aGlzLmNvbG91cl9wcmltYXJpZXM9dC5yZWFkVWludDE2KCksdGhpcy50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3M9dC5yZWFkVWludDE2KCksdGhpcy5tYXRyaXhfY29lZmZpY2llbnRzPXQucmVhZFVpbnQxNigpO3ZhciBlPXQucmVhZFVpbnQ4KCk7dGhpcy5mdWxsX3JhbmdlX2ZsYWc9ZT4+N31lbHNlIHRoaXMuY29sb3VyX3R5cGU9PT0icklDQyI/dGhpcy5JQ0NfcHJvZmlsZT10LnJlYWRVaW50OEFycmF5KHRoaXMuc2l6ZS00KTp0aGlzLmNvbG91cl90eXBlPT09InByb2YiJiYodGhpcy5JQ0NfcHJvZmlsZT10LnJlYWRVaW50OEFycmF5KHRoaXMuc2l6ZS00KSl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJjcHJ0IixmdW5jdGlvbih0KXt0aGlzLnBhcnNlTGFuZ3VhZ2UodCksdGhpcy5ub3RpY2U9dC5yZWFkQ1N0cmluZygpfSksci5jcmVhdGVGdWxsQm94Q3RvcigiY3NsZyIsZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPT09MCYmKHRoaXMuY29tcG9zaXRpb25Ub0RUU1NoaWZ0PXQucmVhZEludDMyKCksdGhpcy5sZWFzdERlY29kZVRvRGlzcGxheURlbHRhPXQucmVhZEludDMyKCksdGhpcy5ncmVhdGVzdERlY29kZVRvRGlzcGxheURlbHRhPXQucmVhZEludDMyKCksdGhpcy5jb21wb3NpdGlvblN0YXJ0VGltZT10LnJlYWRJbnQzMigpLHRoaXMuY29tcG9zaXRpb25FbmRUaW1lPXQucmVhZEludDMyKCkpfSksci5jcmVhdGVGdWxsQm94Q3RvcigiY3R0cyIsZnVuY3Rpb24odCl7dmFyIGUsaTtpZihlPXQucmVhZFVpbnQzMigpLHRoaXMuc2FtcGxlX2NvdW50cz1bXSx0aGlzLnNhbXBsZV9vZmZzZXRzPVtdLHRoaXMudmVyc2lvbj09PTApZm9yKGk9MDtpPGU7aSsrKXt0aGlzLnNhbXBsZV9jb3VudHMucHVzaCh0LnJlYWRVaW50MzIoKSk7dmFyIHM9dC5yZWFkSW50MzIoKTtzPDAmJmgud2FybigiQm94UGFyc2VyIiwiY3R0cyBib3ggdXNlcyBuZWdhdGl2ZSB2YWx1ZXMgd2l0aG91dCB1c2luZyB2ZXJzaW9uIDEiKSx0aGlzLnNhbXBsZV9vZmZzZXRzLnB1c2gocyl9ZWxzZSBpZih0aGlzLnZlcnNpb249PTEpZm9yKGk9MDtpPGU7aSsrKXRoaXMuc2FtcGxlX2NvdW50cy5wdXNoKHQucmVhZFVpbnQzMigpKSx0aGlzLnNhbXBsZV9vZmZzZXRzLnB1c2godC5yZWFkSW50MzIoKSl9KSxyLmNyZWF0ZUJveEN0b3IoImRhYzMiLGZ1bmN0aW9uKHQpe3ZhciBlPXQucmVhZFVpbnQ4KCksaT10LnJlYWRVaW50OCgpLHM9dC5yZWFkVWludDgoKTt0aGlzLmZzY29kPWU+PjYsdGhpcy5ic2lkPWU+PjEmMzEsdGhpcy5ic21vZD0oZSYxKTw8MnxpPj42JjMsdGhpcy5hY21vZD1pPj4zJjcsdGhpcy5sZmVvbj1pPj4yJjEsdGhpcy5iaXRfcmF0ZV9jb2RlPWkmM3xzPj41Jjd9KSxyLmNyZWF0ZUJveEN0b3IoImRlYzMiLGZ1bmN0aW9uKHQpe3ZhciBlPXQucmVhZFVpbnQxNigpO3RoaXMuZGF0YV9yYXRlPWU+PjMsdGhpcy5udW1faW5kX3N1Yj1lJjcsdGhpcy5pbmRfc3Vicz1bXTtmb3IodmFyIGk9MDtpPHRoaXMubnVtX2luZF9zdWIrMTtpKyspe3ZhciBzPXt9O3RoaXMuaW5kX3N1YnMucHVzaChzKTt2YXIgbj10LnJlYWRVaW50OCgpLGY9dC5yZWFkVWludDgoKSxkPXQucmVhZFVpbnQ4KCk7cy5mc2NvZD1uPj42LHMuYnNpZD1uPj4xJjMxLHMuYnNtb2Q9KG4mMSk8PDR8Zj4+NCYxNSxzLmFjbW9kPWY+PjEmNyxzLmxmZW9uPWYmMSxzLm51bV9kZXBfc3ViPWQ+PjEmMTUscy5udW1fZGVwX3N1Yj4wJiYocy5jaGFuX2xvYz0oZCYxKTw8OHx0LnJlYWRVaW50OCgpKX19KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJkZkxhIixmdW5jdGlvbih0KXt2YXIgZT0xMjcsaT0xMjgscz1bXSxuPVsiU1RSRUFNSU5GTyIsIlBBRERJTkciLCJBUFBMSUNBVElPTiIsIlNFRUtUQUJMRSIsIlZPUkJJU19DT01NRU5UIiwiQ1VFU0hFRVQiLCJQSUNUVVJFIiwiUkVTRVJWRUQiXTt0aGlzLnBhcnNlRnVsbEhlYWRlcih0KTtkb3t2YXIgZj10LnJlYWRVaW50OCgpLGQ9TWF0aC5taW4oZiZlLG4ubGVuZ3RoLTEpO2lmKGQ/dC5yZWFkVWludDhBcnJheSh0LnJlYWRVaW50MjQoKSk6KHQucmVhZFVpbnQ4QXJyYXkoMTMpLHRoaXMuc2FtcGxlcmF0ZT10LnJlYWRVaW50MzIoKT4+MTIsdC5yZWFkVWludDhBcnJheSgyMCkpLHMucHVzaChuW2RdKSxmJmkpYnJlYWt9d2hpbGUoITApO3RoaXMubnVtTWV0YWRhdGFCbG9ja3M9cy5sZW5ndGgrIiAoIitzLmpvaW4oIiwgIikrIikifSksci5jcmVhdGVCb3hDdG9yKCJkaW1tIixmdW5jdGlvbih0KXt0aGlzLmJ5dGVzc2VudD10LnJlYWRVaW50NjQoKX0pLHIuY3JlYXRlQm94Q3RvcigiZG1heCIsZnVuY3Rpb24odCl7dGhpcy50aW1lPXQucmVhZFVpbnQzMigpfSksci5jcmVhdGVCb3hDdG9yKCJkbWVkIixmdW5jdGlvbih0KXt0aGlzLmJ5dGVzc2VudD10LnJlYWRVaW50NjQoKX0pLHIuY3JlYXRlQm94Q3RvcigiZE9wcyIsZnVuY3Rpb24odCl7aWYodGhpcy5WZXJzaW9uPXQucmVhZFVpbnQ4KCksdGhpcy5PdXRwdXRDaGFubmVsQ291bnQ9dC5yZWFkVWludDgoKSx0aGlzLlByZVNraXA9dC5yZWFkVWludDE2KCksdGhpcy5JbnB1dFNhbXBsZVJhdGU9dC5yZWFkVWludDMyKCksdGhpcy5PdXRwdXRHYWluPXQucmVhZEludDE2KCksdGhpcy5DaGFubmVsTWFwcGluZ0ZhbWlseT10LnJlYWRVaW50OCgpLHRoaXMuQ2hhbm5lbE1hcHBpbmdGYW1pbHkhPT0wKXt0aGlzLlN0cmVhbUNvdW50PXQucmVhZFVpbnQ4KCksdGhpcy5Db3VwbGVkQ291bnQ9dC5yZWFkVWludDgoKSx0aGlzLkNoYW5uZWxNYXBwaW5nPVtdO2Zvcih2YXIgZT0wO2U8dGhpcy5PdXRwdXRDaGFubmVsQ291bnQ7ZSsrKXRoaXMuQ2hhbm5lbE1hcHBpbmdbZV09dC5yZWFkVWludDgoKX19KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJkcmVmIixmdW5jdGlvbih0KXt2YXIgZSxpO3RoaXMuZW50cmllcz1bXTtmb3IodmFyIHM9dC5yZWFkVWludDMyKCksbj0wO248cztuKyspaWYoZT1yLnBhcnNlT25lQm94KHQsITEsdGhpcy5zaXplLSh0LmdldFBvc2l0aW9uKCktdGhpcy5zdGFydCkpLGUuY29kZT09PXIuT0spaT1lLmJveCx0aGlzLmVudHJpZXMucHVzaChpKTtlbHNlIHJldHVybn0pLHIuY3JlYXRlQm94Q3RvcigiZHJlcCIsZnVuY3Rpb24odCl7dGhpcy5ieXRlc3NlbnQ9dC5yZWFkVWludDY0KCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJlbG5nIixmdW5jdGlvbih0KXt0aGlzLmV4dGVuZGVkX2xhbmd1YWdlPXQucmVhZFN0cmluZyh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJlbHN0IixmdW5jdGlvbih0KXt0aGlzLmVudHJpZXM9W107Zm9yKHZhciBlPXQucmVhZFVpbnQzMigpLGk9MDtpPGU7aSsrKXt2YXIgcz17fTt0aGlzLmVudHJpZXMucHVzaChzKSx0aGlzLnZlcnNpb249PT0xPyhzLnNlZ21lbnRfZHVyYXRpb249dC5yZWFkVWludDY0KCkscy5tZWRpYV90aW1lPXQucmVhZEludDY0KCkpOihzLnNlZ21lbnRfZHVyYXRpb249dC5yZWFkVWludDMyKCkscy5tZWRpYV90aW1lPXQucmVhZEludDMyKCkpLHMubWVkaWFfcmF0ZV9pbnRlZ2VyPXQucmVhZEludDE2KCkscy5tZWRpYV9yYXRlX2ZyYWN0aW9uPXQucmVhZEludDE2KCl9fSksci5jcmVhdGVGdWxsQm94Q3RvcigiZW1zZyIsZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPT0xPyh0aGlzLnRpbWVzY2FsZT10LnJlYWRVaW50MzIoKSx0aGlzLnByZXNlbnRhdGlvbl90aW1lPXQucmVhZFVpbnQ2NCgpLHRoaXMuZXZlbnRfZHVyYXRpb249dC5yZWFkVWludDMyKCksdGhpcy5pZD10LnJlYWRVaW50MzIoKSx0aGlzLnNjaGVtZV9pZF91cmk9dC5yZWFkQ1N0cmluZygpLHRoaXMudmFsdWU9dC5yZWFkQ1N0cmluZygpKToodGhpcy5zY2hlbWVfaWRfdXJpPXQucmVhZENTdHJpbmcoKSx0aGlzLnZhbHVlPXQucmVhZENTdHJpbmcoKSx0aGlzLnRpbWVzY2FsZT10LnJlYWRVaW50MzIoKSx0aGlzLnByZXNlbnRhdGlvbl90aW1lX2RlbHRhPXQucmVhZFVpbnQzMigpLHRoaXMuZXZlbnRfZHVyYXRpb249dC5yZWFkVWludDMyKCksdGhpcy5pZD10LnJlYWRVaW50MzIoKSk7dmFyIGU9dGhpcy5zaXplLXRoaXMuaGRyX3NpemUtKDQqNCsodGhpcy5zY2hlbWVfaWRfdXJpLmxlbmd0aCsxKSsodGhpcy52YWx1ZS5sZW5ndGgrMSkpO3RoaXMudmVyc2lvbj09MSYmKGUtPTQpLHRoaXMubWVzc2FnZV9kYXRhPXQucmVhZFVpbnQ4QXJyYXkoZSl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJlc2RzIixmdW5jdGlvbih0KXt2YXIgZT10LnJlYWRVaW50OEFycmF5KHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKTtpZih0eXBlb2YgXzwidSIpe3ZhciBpPW5ldyBfO3RoaXMuZXNkPWkucGFyc2VPbmVEZXNjcmlwdG9yKG5ldyBhKGUuYnVmZmVyLDAsYS5CSUdfRU5ESUFOKSl9fSksci5jcmVhdGVCb3hDdG9yKCJmaWVsIixmdW5jdGlvbih0KXt0aGlzLmZpZWxkQ291bnQ9dC5yZWFkVWludDgoKSx0aGlzLmZpZWxkT3JkZXJpbmc9dC5yZWFkVWludDgoKX0pLHIuY3JlYXRlQm94Q3RvcigiZnJtYSIsZnVuY3Rpb24odCl7dGhpcy5kYXRhX2Zvcm1hdD10LnJlYWRTdHJpbmcoNCl9KSxyLmNyZWF0ZUJveEN0b3IoImZ0eXAiLGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2l6ZS10aGlzLmhkcl9zaXplO3RoaXMubWFqb3JfYnJhbmQ9dC5yZWFkU3RyaW5nKDQpLHRoaXMubWlub3JfdmVyc2lvbj10LnJlYWRVaW50MzIoKSxlLT04LHRoaXMuY29tcGF0aWJsZV9icmFuZHM9W107Zm9yKHZhciBpPTA7ZT49NDspdGhpcy5jb21wYXRpYmxlX2JyYW5kc1tpXT10LnJlYWRTdHJpbmcoNCksZS09NCxpKyt9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJoZGxyIixmdW5jdGlvbih0KXt0aGlzLnZlcnNpb249PT0wJiYodC5yZWFkVWludDMyKCksdGhpcy5oYW5kbGVyPXQucmVhZFN0cmluZyg0KSx0LnJlYWRVaW50MzJBcnJheSgzKSx0aGlzLm5hbWU9dC5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplLTIwKSx0aGlzLm5hbWVbdGhpcy5uYW1lLmxlbmd0aC0xXT09PSJcMCImJih0aGlzLm5hbWU9dGhpcy5uYW1lLnNsaWNlKDAsLTEpKSl9KSxyLmNyZWF0ZUJveEN0b3IoImh2Y0MiLGZ1bmN0aW9uKHQpe3ZhciBlLGkscyxuO3RoaXMuY29uZmlndXJhdGlvblZlcnNpb249dC5yZWFkVWludDgoKSxuPXQucmVhZFVpbnQ4KCksdGhpcy5nZW5lcmFsX3Byb2ZpbGVfc3BhY2U9bj4+Nix0aGlzLmdlbmVyYWxfdGllcl9mbGFnPShuJjMyKT4+NSx0aGlzLmdlbmVyYWxfcHJvZmlsZV9pZGM9biYzMSx0aGlzLmdlbmVyYWxfcHJvZmlsZV9jb21wYXRpYmlsaXR5PXQucmVhZFVpbnQzMigpLHRoaXMuZ2VuZXJhbF9jb25zdHJhaW50X2luZGljYXRvcj10LnJlYWRVaW50OEFycmF5KDYpLHRoaXMuZ2VuZXJhbF9sZXZlbF9pZGM9dC5yZWFkVWludDgoKSx0aGlzLm1pbl9zcGF0aWFsX3NlZ21lbnRhdGlvbl9pZGM9dC5yZWFkVWludDE2KCkmNDA5NSx0aGlzLnBhcmFsbGVsaXNtVHlwZT10LnJlYWRVaW50OCgpJjMsdGhpcy5jaHJvbWFfZm9ybWF0X2lkYz10LnJlYWRVaW50OCgpJjMsdGhpcy5iaXRfZGVwdGhfbHVtYV9taW51czg9dC5yZWFkVWludDgoKSY3LHRoaXMuYml0X2RlcHRoX2Nocm9tYV9taW51czg9dC5yZWFkVWludDgoKSY3LHRoaXMuYXZnRnJhbWVSYXRlPXQucmVhZFVpbnQxNigpLG49dC5yZWFkVWludDgoKSx0aGlzLmNvbnN0YW50RnJhbWVSYXRlPW4+PjYsdGhpcy5udW1UZW1wb3JhbExheWVycz0obiYxMyk+PjMsdGhpcy50ZW1wb3JhbElkTmVzdGVkPShuJjQpPj4yLHRoaXMubGVuZ3RoU2l6ZU1pbnVzT25lPW4mMyx0aGlzLm5hbHVfYXJyYXlzPVtdO3ZhciBmPXQucmVhZFVpbnQ4KCk7Zm9yKGU9MDtlPGY7ZSsrKXt2YXIgZD1bXTt0aGlzLm5hbHVfYXJyYXlzLnB1c2goZCksbj10LnJlYWRVaW50OCgpLGQuY29tcGxldGVuZXNzPShuJjEyOCk+PjcsZC5uYWx1X3R5cGU9biY2Mzt2YXIgYz10LnJlYWRVaW50MTYoKTtmb3IoaT0wO2k8YztpKyspe3ZhciBtPXt9O2QucHVzaChtKSxzPXQucmVhZFVpbnQxNigpLG0uZGF0YT10LnJlYWRVaW50OEFycmF5KHMpfX19KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJpaW5mIixmdW5jdGlvbih0KXt2YXIgZTt0aGlzLnZlcnNpb249PT0wP3RoaXMuZW50cnlfY291bnQ9dC5yZWFkVWludDE2KCk6dGhpcy5lbnRyeV9jb3VudD10LnJlYWRVaW50MzIoKSx0aGlzLml0ZW1faW5mb3M9W107Zm9yKHZhciBpPTA7aTx0aGlzLmVudHJ5X2NvdW50O2krKylpZihlPXIucGFyc2VPbmVCb3godCwhMSx0aGlzLnNpemUtKHQuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSksZS5jb2RlPT09ci5PSyllLmJveC50eXBlIT09ImluZmUiJiZoLmVycm9yKCJCb3hQYXJzZXIiLCJFeHBlY3RlZCAnaW5mZScgYm94LCBnb3QgIitlLmJveC50eXBlKSx0aGlzLml0ZW1faW5mb3NbaV09ZS5ib3g7ZWxzZSByZXR1cm59KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJpbG9jIixmdW5jdGlvbih0KXt2YXIgZTtlPXQucmVhZFVpbnQ4KCksdGhpcy5vZmZzZXRfc2l6ZT1lPj40JjE1LHRoaXMubGVuZ3RoX3NpemU9ZSYxNSxlPXQucmVhZFVpbnQ4KCksdGhpcy5iYXNlX29mZnNldF9zaXplPWU+PjQmMTUsdGhpcy52ZXJzaW9uPT09MXx8dGhpcy52ZXJzaW9uPT09Mj90aGlzLmluZGV4X3NpemU9ZSYxNTp0aGlzLmluZGV4X3NpemU9MCx0aGlzLml0ZW1zPVtdO3ZhciBpPTA7aWYodGhpcy52ZXJzaW9uPDIpaT10LnJlYWRVaW50MTYoKTtlbHNlIGlmKHRoaXMudmVyc2lvbj09PTIpaT10LnJlYWRVaW50MzIoKTtlbHNlIHRocm93InZlcnNpb24gb2YgaWxvYyBib3ggbm90IHN1cHBvcnRlZCI7Zm9yKHZhciBzPTA7czxpO3MrKyl7dmFyIG49e307aWYodGhpcy5pdGVtcy5wdXNoKG4pLHRoaXMudmVyc2lvbjwyKW4uaXRlbV9JRD10LnJlYWRVaW50MTYoKTtlbHNlIGlmKHRoaXMudmVyc2lvbj09PTIpbi5pdGVtX0lEPXQucmVhZFVpbnQxNigpO2Vsc2UgdGhyb3cidmVyc2lvbiBvZiBpbG9jIGJveCBub3Qgc3VwcG9ydGVkIjtzd2l0Y2godGhpcy52ZXJzaW9uPT09MXx8dGhpcy52ZXJzaW9uPT09Mj9uLmNvbnN0cnVjdGlvbl9tZXRob2Q9dC5yZWFkVWludDE2KCkmMTU6bi5jb25zdHJ1Y3Rpb25fbWV0aG9kPTAsbi5kYXRhX3JlZmVyZW5jZV9pbmRleD10LnJlYWRVaW50MTYoKSx0aGlzLmJhc2Vfb2Zmc2V0X3NpemUpe2Nhc2UgMDpuLmJhc2Vfb2Zmc2V0PTA7YnJlYWs7Y2FzZSA0Om4uYmFzZV9vZmZzZXQ9dC5yZWFkVWludDMyKCk7YnJlYWs7Y2FzZSA4Om4uYmFzZV9vZmZzZXQ9dC5yZWFkVWludDY0KCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJFcnJvciByZWFkaW5nIGJhc2Ugb2Zmc2V0IHNpemUifXZhciBmPXQucmVhZFVpbnQxNigpO24uZXh0ZW50cz1bXTtmb3IodmFyIGQ9MDtkPGY7ZCsrKXt2YXIgYz17fTtpZihuLmV4dGVudHMucHVzaChjKSx0aGlzLnZlcnNpb249PT0xfHx0aGlzLnZlcnNpb249PT0yKXN3aXRjaCh0aGlzLmluZGV4X3NpemUpe2Nhc2UgMDpjLmV4dGVudF9pbmRleD0wO2JyZWFrO2Nhc2UgNDpjLmV4dGVudF9pbmRleD10LnJlYWRVaW50MzIoKTticmVhaztjYXNlIDg6Yy5leHRlbnRfaW5kZXg9dC5yZWFkVWludDY0KCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJFcnJvciByZWFkaW5nIGV4dGVudCBpbmRleCJ9c3dpdGNoKHRoaXMub2Zmc2V0X3NpemUpe2Nhc2UgMDpjLmV4dGVudF9vZmZzZXQ9MDticmVhaztjYXNlIDQ6Yy5leHRlbnRfb2Zmc2V0PXQucmVhZFVpbnQzMigpO2JyZWFrO2Nhc2UgODpjLmV4dGVudF9vZmZzZXQ9dC5yZWFkVWludDY0KCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJFcnJvciByZWFkaW5nIGV4dGVudCBpbmRleCJ9c3dpdGNoKHRoaXMubGVuZ3RoX3NpemUpe2Nhc2UgMDpjLmV4dGVudF9sZW5ndGg9MDticmVhaztjYXNlIDQ6Yy5leHRlbnRfbGVuZ3RoPXQucmVhZFVpbnQzMigpO2JyZWFrO2Nhc2UgODpjLmV4dGVudF9sZW5ndGg9dC5yZWFkVWludDY0KCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJFcnJvciByZWFkaW5nIGV4dGVudCBpbmRleCJ9fX19KSxyLmNyZWF0ZUJveEN0b3IoImltaXIiLGZ1bmN0aW9uKHQpe3ZhciBlPXQucmVhZFVpbnQ4KCk7dGhpcy5yZXNlcnZlZD1lPj43LHRoaXMuYXhpcz1lJjF9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJpbmZlIixmdW5jdGlvbih0KXtpZigodGhpcy52ZXJzaW9uPT09MHx8dGhpcy52ZXJzaW9uPT09MSkmJih0aGlzLml0ZW1fSUQ9dC5yZWFkVWludDE2KCksdGhpcy5pdGVtX3Byb3RlY3Rpb25faW5kZXg9dC5yZWFkVWludDE2KCksdGhpcy5pdGVtX25hbWU9dC5yZWFkQ1N0cmluZygpLHRoaXMuY29udGVudF90eXBlPXQucmVhZENTdHJpbmcoKSx0aGlzLmNvbnRlbnRfZW5jb2Rpbmc9dC5yZWFkQ1N0cmluZygpKSx0aGlzLnZlcnNpb249PT0xKXt0aGlzLmV4dGVuc2lvbl90eXBlPXQucmVhZFN0cmluZyg0KSxoLndhcm4oIkJveFBhcnNlciIsIkNhbm5vdCBwYXJzZSBleHRlbnNpb24gdHlwZSIpLHQuc2Vlayh0aGlzLnN0YXJ0K3RoaXMuc2l6ZSk7cmV0dXJufXRoaXMudmVyc2lvbj49MiYmKHRoaXMudmVyc2lvbj09PTI/dGhpcy5pdGVtX0lEPXQucmVhZFVpbnQxNigpOnRoaXMudmVyc2lvbj09PTMmJih0aGlzLml0ZW1fSUQ9dC5yZWFkVWludDMyKCkpLHRoaXMuaXRlbV9wcm90ZWN0aW9uX2luZGV4PXQucmVhZFVpbnQxNigpLHRoaXMuaXRlbV90eXBlPXQucmVhZFN0cmluZyg0KSx0aGlzLml0ZW1fbmFtZT10LnJlYWRDU3RyaW5nKCksdGhpcy5pdGVtX3R5cGU9PT0ibWltZSI/KHRoaXMuY29udGVudF90eXBlPXQucmVhZENTdHJpbmcoKSx0aGlzLmNvbnRlbnRfZW5jb2Rpbmc9dC5yZWFkQ1N0cmluZygpKTp0aGlzLml0ZW1fdHlwZT09PSJ1cmkgIiYmKHRoaXMuaXRlbV91cmlfdHlwZT10LnJlYWRDU3RyaW5nKCkpKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoImlwbWEiLGZ1bmN0aW9uKHQpe3ZhciBlLGk7Zm9yKGVudHJ5X2NvdW50PXQucmVhZFVpbnQzMigpLHRoaXMuYXNzb2NpYXRpb25zPVtdLGU9MDtlPGVudHJ5X2NvdW50O2UrKyl7dmFyIHM9e307dGhpcy5hc3NvY2lhdGlvbnMucHVzaChzKSx0aGlzLnZlcnNpb248MT9zLmlkPXQucmVhZFVpbnQxNigpOnMuaWQ9dC5yZWFkVWludDMyKCk7dmFyIG49dC5yZWFkVWludDgoKTtmb3Iocy5wcm9wcz1bXSxpPTA7aTxuO2krKyl7dmFyIGY9dC5yZWFkVWludDgoKSxkPXt9O3MucHJvcHMucHVzaChkKSxkLmVzc2VudGlhbD0oZiYxMjgpPj43PT09MSx0aGlzLmZsYWdzJjE/ZC5wcm9wZXJ0eV9pbmRleD0oZiYxMjcpPDw4fHQucmVhZFVpbnQ4KCk6ZC5wcm9wZXJ0eV9pbmRleD1mJjEyN319fSksci5jcmVhdGVGdWxsQm94Q3RvcigiaXJlZiIsZnVuY3Rpb24odCl7dmFyIGUsaTtmb3IodGhpcy5yZWZlcmVuY2VzPVtdO3QuZ2V0UG9zaXRpb24oKTx0aGlzLnN0YXJ0K3RoaXMuc2l6ZTspaWYoZT1yLnBhcnNlT25lQm94KHQsITAsdGhpcy5zaXplLSh0LmdldFBvc2l0aW9uKCktdGhpcy5zdGFydCkpLGUuY29kZT09PXIuT0spdGhpcy52ZXJzaW9uPT09MD9pPW5ldyByLlNpbmdsZUl0ZW1UeXBlUmVmZXJlbmNlQm94KGUudHlwZSxlLnNpemUsZS5oZHJfc2l6ZSxlLnN0YXJ0KTppPW5ldyByLlNpbmdsZUl0ZW1UeXBlUmVmZXJlbmNlQm94TGFyZ2UoZS50eXBlLGUuc2l6ZSxlLmhkcl9zaXplLGUuc3RhcnQpLGkud3JpdGU9PT1yLkJveC5wcm90b3R5cGUud3JpdGUmJmkudHlwZSE9PSJtZGF0IiYmKGgud2FybigiQm94UGFyc2VyIixpLnR5cGUrIiBib3ggd3JpdGluZyBub3QgeWV0IGltcGxlbWVudGVkLCBrZWVwaW5nIHVucGFyc2VkIGRhdGEgaW4gbWVtb3J5IGZvciBsYXRlciB3cml0ZSIpLGkucGFyc2VEYXRhQW5kUmV3aW5kKHQpKSxpLnBhcnNlKHQpLHRoaXMucmVmZXJlbmNlcy5wdXNoKGkpO2Vsc2UgcmV0dXJufSksci5jcmVhdGVCb3hDdG9yKCJpcm90IixmdW5jdGlvbih0KXt0aGlzLmFuZ2xlPXQucmVhZFVpbnQ4KCkmM30pLHIuY3JlYXRlRnVsbEJveEN0b3IoImlzcGUiLGZ1bmN0aW9uKHQpe3RoaXMuaW1hZ2Vfd2lkdGg9dC5yZWFkVWludDMyKCksdGhpcy5pbWFnZV9oZWlnaHQ9dC5yZWFkVWludDMyKCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJraW5kIixmdW5jdGlvbih0KXt0aGlzLnNjaGVtZVVSST10LnJlYWRDU3RyaW5nKCksdGhpcy52YWx1ZT10LnJlYWRDU3RyaW5nKCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJsZXZhIixmdW5jdGlvbih0KXt2YXIgZT10LnJlYWRVaW50OCgpO3RoaXMubGV2ZWxzPVtdO2Zvcih2YXIgaT0wO2k8ZTtpKyspe3ZhciBzPXt9O3RoaXMubGV2ZWxzW2ldPXMscy50cmFja19JRD10LnJlYWRVaW50MzIoKTt2YXIgbj10LnJlYWRVaW50OCgpO3N3aXRjaChzLnBhZGRpbmdfZmxhZz1uPj43LHMuYXNzaWdubWVudF90eXBlPW4mMTI3LHMuYXNzaWdubWVudF90eXBlKXtjYXNlIDA6cy5ncm91cGluZ190eXBlPXQucmVhZFN0cmluZyg0KTticmVhaztjYXNlIDE6cy5ncm91cGluZ190eXBlPXQucmVhZFN0cmluZyg0KSxzLmdyb3VwaW5nX3R5cGVfcGFyYW1ldGVyPXQucmVhZFVpbnQzMigpO2JyZWFrO2Nhc2UgMjpicmVhaztjYXNlIDM6YnJlYWs7Y2FzZSA0OnMuc3ViX3RyYWNrX2lkPXQucmVhZFVpbnQzMigpO2JyZWFrO2RlZmF1bHQ6aC53YXJuKCJCb3hQYXJzZXIiLCJVbmtub3duIGxldmEgYXNzaWduZW1lbnQgdHlwZSIpfX19KSxyLmNyZWF0ZUJveEN0b3IoImxzZWwiLGZ1bmN0aW9uKHQpe3RoaXMubGF5ZXJfaWQ9dC5yZWFkVWludDE2KCl9KSxyLmNyZWF0ZUJveEN0b3IoIm1heHIiLGZ1bmN0aW9uKHQpe3RoaXMucGVyaW9kPXQucmVhZFVpbnQzMigpLHRoaXMuYnl0ZXM9dC5yZWFkVWludDMyKCl9KSxyLmNyZWF0ZUJveEN0b3IoIm1kY3YiLGZ1bmN0aW9uKHQpe3RoaXMuZGlzcGxheV9wcmltYXJpZXM9W10sdGhpcy5kaXNwbGF5X3ByaW1hcmllc1swXT17fSx0aGlzLmRpc3BsYXlfcHJpbWFyaWVzWzBdLng9dC5yZWFkVWludDE2KCksdGhpcy5kaXNwbGF5X3ByaW1hcmllc1swXS55PXQucmVhZFVpbnQxNigpLHRoaXMuZGlzcGxheV9wcmltYXJpZXNbMV09e30sdGhpcy5kaXNwbGF5X3ByaW1hcmllc1sxXS54PXQucmVhZFVpbnQxNigpLHRoaXMuZGlzcGxheV9wcmltYXJpZXNbMV0ueT10LnJlYWRVaW50MTYoKSx0aGlzLmRpc3BsYXlfcHJpbWFyaWVzWzJdPXt9LHRoaXMuZGlzcGxheV9wcmltYXJpZXNbMl0ueD10LnJlYWRVaW50MTYoKSx0aGlzLmRpc3BsYXlfcHJpbWFyaWVzWzJdLnk9dC5yZWFkVWludDE2KCksdGhpcy53aGl0ZV9wb2ludD17fSx0aGlzLndoaXRlX3BvaW50Lng9dC5yZWFkVWludDE2KCksdGhpcy53aGl0ZV9wb2ludC55PXQucmVhZFVpbnQxNigpLHRoaXMubWF4X2Rpc3BsYXlfbWFzdGVyaW5nX2x1bWluYW5jZT10LnJlYWRVaW50MzIoKSx0aGlzLm1pbl9kaXNwbGF5X21hc3RlcmluZ19sdW1pbmFuY2U9dC5yZWFkVWludDMyKCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJtZGhkIixmdW5jdGlvbih0KXt0aGlzLnZlcnNpb249PTE/KHRoaXMuY3JlYXRpb25fdGltZT10LnJlYWRVaW50NjQoKSx0aGlzLm1vZGlmaWNhdGlvbl90aW1lPXQucmVhZFVpbnQ2NCgpLHRoaXMudGltZXNjYWxlPXQucmVhZFVpbnQzMigpLHRoaXMuZHVyYXRpb249dC5yZWFkVWludDY0KCkpOih0aGlzLmNyZWF0aW9uX3RpbWU9dC5yZWFkVWludDMyKCksdGhpcy5tb2RpZmljYXRpb25fdGltZT10LnJlYWRVaW50MzIoKSx0aGlzLnRpbWVzY2FsZT10LnJlYWRVaW50MzIoKSx0aGlzLmR1cmF0aW9uPXQucmVhZFVpbnQzMigpKSx0aGlzLnBhcnNlTGFuZ3VhZ2UodCksdC5yZWFkVWludDE2KCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJtZWhkIixmdW5jdGlvbih0KXt0aGlzLmZsYWdzJjEmJihoLndhcm4oIkJveFBhcnNlciIsIm1laGQgYm94IGluY29ycmVjdGx5IHVzZXMgZmxhZ3Mgc2V0IHRvIDEsIGNvbnZlcnRpbmcgdmVyc2lvbiB0byAxIiksdGhpcy52ZXJzaW9uPTEpLHRoaXMudmVyc2lvbj09MT90aGlzLmZyYWdtZW50X2R1cmF0aW9uPXQucmVhZFVpbnQ2NCgpOnRoaXMuZnJhZ21lbnRfZHVyYXRpb249dC5yZWFkVWludDMyKCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJtZXRhIixmdW5jdGlvbih0KXt0aGlzLmJveGVzPVtdLHIuQ29udGFpbmVyQm94LnByb3RvdHlwZS5wYXJzZS5jYWxsKHRoaXMsdCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJtZmhkIixmdW5jdGlvbih0KXt0aGlzLnNlcXVlbmNlX251bWJlcj10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoIm1mcm8iLGZ1bmN0aW9uKHQpe3RoaXMuX3NpemU9dC5yZWFkVWludDMyKCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJtdmhkIixmdW5jdGlvbih0KXt0aGlzLnZlcnNpb249PTE/KHRoaXMuY3JlYXRpb25fdGltZT10LnJlYWRVaW50NjQoKSx0aGlzLm1vZGlmaWNhdGlvbl90aW1lPXQucmVhZFVpbnQ2NCgpLHRoaXMudGltZXNjYWxlPXQucmVhZFVpbnQzMigpLHRoaXMuZHVyYXRpb249dC5yZWFkVWludDY0KCkpOih0aGlzLmNyZWF0aW9uX3RpbWU9dC5yZWFkVWludDMyKCksdGhpcy5tb2RpZmljYXRpb25fdGltZT10LnJlYWRVaW50MzIoKSx0aGlzLnRpbWVzY2FsZT10LnJlYWRVaW50MzIoKSx0aGlzLmR1cmF0aW9uPXQucmVhZFVpbnQzMigpKSx0aGlzLnJhdGU9dC5yZWFkVWludDMyKCksdGhpcy52b2x1bWU9dC5yZWFkVWludDE2KCk+PjgsdC5yZWFkVWludDE2KCksdC5yZWFkVWludDMyQXJyYXkoMiksdGhpcy5tYXRyaXg9dC5yZWFkVWludDMyQXJyYXkoOSksdC5yZWFkVWludDMyQXJyYXkoNiksdGhpcy5uZXh0X3RyYWNrX2lkPXQucmVhZFVpbnQzMigpfSksci5jcmVhdGVCb3hDdG9yKCJucGNrIixmdW5jdGlvbih0KXt0aGlzLnBhY2tldHNzZW50PXQucmVhZFVpbnQzMigpfSksci5jcmVhdGVCb3hDdG9yKCJudW1wIixmdW5jdGlvbih0KXt0aGlzLnBhY2tldHNzZW50PXQucmVhZFVpbnQ2NCgpfSksci5jcmVhdGVGdWxsQm94Q3RvcigicGFkYiIsZnVuY3Rpb24odCl7dmFyIGU9dC5yZWFkVWludDMyKCk7dGhpcy5wYWRiaXRzPVtdO2Zvcih2YXIgaT0wO2k8TWF0aC5mbG9vcigoZSsxKS8yKTtpKyspdGhpcy5wYWRiaXRzPXQucmVhZFVpbnQ4KCl9KSxyLmNyZWF0ZUJveEN0b3IoInBhc3AiLGZ1bmN0aW9uKHQpe3RoaXMuaFNwYWNpbmc9dC5yZWFkVWludDMyKCksdGhpcy52U3BhY2luZz10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlQm94Q3RvcigicGF5bCIsZnVuY3Rpb24odCl7dGhpcy50ZXh0PXQucmVhZFN0cmluZyh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSl9KSxyLmNyZWF0ZUJveEN0b3IoInBheXQiLGZ1bmN0aW9uKHQpe3RoaXMucGF5bG9hZElEPXQucmVhZFVpbnQzMigpO3ZhciBlPXQucmVhZFVpbnQ4KCk7dGhpcy5ydHBtYXBfc3RyaW5nPXQucmVhZFN0cmluZyhlKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInBkaW4iLGZ1bmN0aW9uKHQpe3ZhciBlPSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSkvODt0aGlzLnJhdGU9W10sdGhpcy5pbml0aWFsX2RlbGF5PVtdO2Zvcih2YXIgaT0wO2k8ZTtpKyspdGhpcy5yYXRlW2ldPXQucmVhZFVpbnQzMigpLHRoaXMuaW5pdGlhbF9kZWxheVtpXT10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInBpdG0iLGZ1bmN0aW9uKHQpe3RoaXMudmVyc2lvbj09PTA/dGhpcy5pdGVtX2lkPXQucmVhZFVpbnQxNigpOnRoaXMuaXRlbV9pZD10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInBpeGkiLGZ1bmN0aW9uKHQpe3ZhciBlO2Zvcih0aGlzLm51bV9jaGFubmVscz10LnJlYWRVaW50OCgpLHRoaXMuYml0c19wZXJfY2hhbm5lbHM9W10sZT0wO2U8dGhpcy5udW1fY2hhbm5lbHM7ZSsrKXRoaXMuYml0c19wZXJfY2hhbm5lbHNbZV09dC5yZWFkVWludDgoKX0pLHIuY3JlYXRlQm94Q3RvcigicG1heCIsZnVuY3Rpb24odCl7dGhpcy5ieXRlcz10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInByZnQiLGZ1bmN0aW9uKHQpe3RoaXMucmVmX3RyYWNrX2lkPXQucmVhZFVpbnQzMigpLHRoaXMubnRwX3RpbWVzdGFtcD10LnJlYWRVaW50NjQoKSx0aGlzLnZlcnNpb249PT0wP3RoaXMubWVkaWFfdGltZT10LnJlYWRVaW50MzIoKTp0aGlzLm1lZGlhX3RpbWU9dC5yZWFkVWludDY0KCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJwc3NoIixmdW5jdGlvbih0KXtpZih0aGlzLnN5c3RlbV9pZD1yLnBhcnNlSGV4MTYodCksdGhpcy52ZXJzaW9uPjApe3ZhciBlPXQucmVhZFVpbnQzMigpO3RoaXMua2lkPVtdO2Zvcih2YXIgaT0wO2k8ZTtpKyspdGhpcy5raWRbaV09ci5wYXJzZUhleDE2KHQpfXZhciBzPXQucmVhZFVpbnQzMigpO3M+MCYmKHRoaXMuZGF0YT10LnJlYWRVaW50OEFycmF5KHMpKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoImNsZWYiLGZ1bmN0aW9uKHQpe3RoaXMud2lkdGg9dC5yZWFkVWludDMyKCksdGhpcy5oZWlnaHQ9dC5yZWFkVWludDMyKCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJlbm9mIixmdW5jdGlvbih0KXt0aGlzLndpZHRoPXQucmVhZFVpbnQzMigpLHRoaXMuaGVpZ2h0PXQucmVhZFVpbnQzMigpfSksci5jcmVhdGVGdWxsQm94Q3RvcigicHJvZiIsZnVuY3Rpb24odCl7dGhpcy53aWR0aD10LnJlYWRVaW50MzIoKSx0aGlzLmhlaWdodD10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlQ29udGFpbmVyQm94Q3RvcigidGFwdCIsbnVsbCxbImNsZWYiLCJwcm9mIiwiZW5vZiJdKSxyLmNyZWF0ZUJveEN0b3IoInJ0cCAiLGZ1bmN0aW9uKHQpe3RoaXMuZGVzY3JpcHRpb25mb3JtYXQ9dC5yZWFkU3RyaW5nKDQpLHRoaXMuc2RwdGV4dD10LnJlYWRTdHJpbmcodGhpcy5zaXplLXRoaXMuaGRyX3NpemUtNCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzYWlvIixmdW5jdGlvbih0KXt0aGlzLmZsYWdzJjEmJih0aGlzLmF1eF9pbmZvX3R5cGU9dC5yZWFkVWludDMyKCksdGhpcy5hdXhfaW5mb190eXBlX3BhcmFtZXRlcj10LnJlYWRVaW50MzIoKSk7dmFyIGU9dC5yZWFkVWludDMyKCk7dGhpcy5vZmZzZXQ9W107Zm9yKHZhciBpPTA7aTxlO2krKyl0aGlzLnZlcnNpb249PT0wP3RoaXMub2Zmc2V0W2ldPXQucmVhZFVpbnQzMigpOnRoaXMub2Zmc2V0W2ldPXQucmVhZFVpbnQ2NCgpfSksci5jcmVhdGVGdWxsQm94Q3Rvcigic2FpeiIsZnVuY3Rpb24odCl7dGhpcy5mbGFncyYxJiYodGhpcy5hdXhfaW5mb190eXBlPXQucmVhZFVpbnQzMigpLHRoaXMuYXV4X2luZm9fdHlwZV9wYXJhbWV0ZXI9dC5yZWFkVWludDMyKCkpLHRoaXMuZGVmYXVsdF9zYW1wbGVfaW5mb19zaXplPXQucmVhZFVpbnQ4KCk7dmFyIGU9dC5yZWFkVWludDMyKCk7aWYodGhpcy5zYW1wbGVfaW5mb19zaXplPVtdLHRoaXMuZGVmYXVsdF9zYW1wbGVfaW5mb19zaXplPT09MClmb3IodmFyIGk9MDtpPGU7aSsrKXRoaXMuc2FtcGxlX2luZm9fc2l6ZVtpXT10LnJlYWRVaW50OCgpfSksci5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9NRVRBREFUQSwibWV0dCIsZnVuY3Rpb24odCl7dGhpcy5wYXJzZUhlYWRlcih0KSx0aGlzLmNvbnRlbnRfZW5jb2Rpbmc9dC5yZWFkQ1N0cmluZygpLHRoaXMubWltZV9mb3JtYXQ9dC5yZWFkQ1N0cmluZygpLHRoaXMucGFyc2VGb290ZXIodCl9KSxyLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX01FVEFEQVRBLCJtZXR4IixmdW5jdGlvbih0KXt0aGlzLnBhcnNlSGVhZGVyKHQpLHRoaXMuY29udGVudF9lbmNvZGluZz10LnJlYWRDU3RyaW5nKCksdGhpcy5uYW1lc3BhY2U9dC5yZWFkQ1N0cmluZygpLHRoaXMuc2NoZW1hX2xvY2F0aW9uPXQucmVhZENTdHJpbmcoKSx0aGlzLnBhcnNlRm9vdGVyKHQpfSksci5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9TVUJUSVRMRSwic2J0dCIsZnVuY3Rpb24odCl7dGhpcy5wYXJzZUhlYWRlcih0KSx0aGlzLmNvbnRlbnRfZW5jb2Rpbmc9dC5yZWFkQ1N0cmluZygpLHRoaXMubWltZV9mb3JtYXQ9dC5yZWFkQ1N0cmluZygpLHRoaXMucGFyc2VGb290ZXIodCl9KSxyLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihyLlNBTVBMRV9FTlRSWV9UWVBFX1NVQlRJVExFLCJzdHBwIixmdW5jdGlvbih0KXt0aGlzLnBhcnNlSGVhZGVyKHQpLHRoaXMubmFtZXNwYWNlPXQucmVhZENTdHJpbmcoKSx0aGlzLnNjaGVtYV9sb2NhdGlvbj10LnJlYWRDU3RyaW5nKCksdGhpcy5hdXhpbGlhcnlfbWltZV90eXBlcz10LnJlYWRDU3RyaW5nKCksdGhpcy5wYXJzZUZvb3Rlcih0KX0pLHIuY3JlYXRlU2FtcGxlRW50cnlDdG9yKHIuU0FNUExFX0VOVFJZX1RZUEVfU1VCVElUTEUsInN0eHQiLGZ1bmN0aW9uKHQpe3RoaXMucGFyc2VIZWFkZXIodCksdGhpcy5jb250ZW50X2VuY29kaW5nPXQucmVhZENTdHJpbmcoKSx0aGlzLm1pbWVfZm9ybWF0PXQucmVhZENTdHJpbmcoKSx0aGlzLnBhcnNlRm9vdGVyKHQpfSksci5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9TVUJUSVRMRSwidHgzZyIsZnVuY3Rpb24odCl7dGhpcy5wYXJzZUhlYWRlcih0KSx0aGlzLmRpc3BsYXlGbGFncz10LnJlYWRVaW50MzIoKSx0aGlzLmhvcml6b250YWxfanVzdGlmaWNhdGlvbj10LnJlYWRJbnQ4KCksdGhpcy52ZXJ0aWNhbF9qdXN0aWZpY2F0aW9uPXQucmVhZEludDgoKSx0aGlzLmJnX2NvbG9yX3JnYmE9dC5yZWFkVWludDhBcnJheSg0KSx0aGlzLmJveF9yZWNvcmQ9dC5yZWFkSW50MTZBcnJheSg0KSx0aGlzLnN0eWxlX3JlY29yZD10LnJlYWRVaW50OEFycmF5KDEyKSx0aGlzLnBhcnNlRm9vdGVyKHQpfSksci5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioci5TQU1QTEVfRU5UUllfVFlQRV9NRVRBREFUQSwid3Z0dCIsZnVuY3Rpb24odCl7dGhpcy5wYXJzZUhlYWRlcih0KSx0aGlzLnBhcnNlRm9vdGVyKHQpfSksci5jcmVhdGVTYW1wbGVHcm91cEN0b3IoImFsc3QiLGZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5yZWFkVWludDE2KCk7Zm9yKHRoaXMuZmlyc3Rfb3V0cHV0X3NhbXBsZT10LnJlYWRVaW50MTYoKSx0aGlzLnNhbXBsZV9vZmZzZXQ9W10sZT0wO2U8aTtlKyspdGhpcy5zYW1wbGVfb2Zmc2V0W2VdPXQucmVhZFVpbnQzMigpO3ZhciBzPXRoaXMuZGVzY3JpcHRpb25fbGVuZ3RoLTQtNCppO2Zvcih0aGlzLm51bV9vdXRwdXRfc2FtcGxlcz1bXSx0aGlzLm51bV90b3RhbF9zYW1wbGVzPVtdLGU9MDtlPHMvNDtlKyspdGhpcy5udW1fb3V0cHV0X3NhbXBsZXNbZV09dC5yZWFkVWludDE2KCksdGhpcy5udW1fdG90YWxfc2FtcGxlc1tlXT10LnJlYWRVaW50MTYoKX0pLHIuY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJhdmxsIixmdW5jdGlvbih0KXt0aGlzLmxheWVyTnVtYmVyPXQucmVhZFVpbnQ4KCksdGhpcy5hY2N1cmF0ZVN0YXRpc3RpY3NGbGFnPXQucmVhZFVpbnQ4KCksdGhpcy5hdmdCaXRSYXRlPXQucmVhZFVpbnQxNigpLHRoaXMuYXZnRnJhbWVSYXRlPXQucmVhZFVpbnQxNigpfSksci5jcmVhdGVTYW1wbGVHcm91cEN0b3IoImF2c3MiLGZ1bmN0aW9uKHQpe3RoaXMuc3ViU2VxdWVuY2VJZGVudGlmaWVyPXQucmVhZFVpbnQxNigpLHRoaXMubGF5ZXJOdW1iZXI9dC5yZWFkVWludDgoKTt2YXIgZT10LnJlYWRVaW50OCgpO3RoaXMuZHVyYXRpb25GbGFnPWU+PjcsdGhpcy5hdmdSYXRlRmxhZz1lPj42JjEsdGhpcy5kdXJhdGlvbkZsYWcmJih0aGlzLmR1cmF0aW9uPXQucmVhZFVpbnQzMigpKSx0aGlzLmF2Z1JhdGVGbGFnJiYodGhpcy5hY2N1cmF0ZVN0YXRpc3RpY3NGbGFnPXQucmVhZFVpbnQ4KCksdGhpcy5hdmdCaXRSYXRlPXQucmVhZFVpbnQxNigpLHRoaXMuYXZnRnJhbWVSYXRlPXQucmVhZFVpbnQxNigpKSx0aGlzLmRlcGVuZGVuY3k9W107Zm9yKHZhciBpPXQucmVhZFVpbnQ4KCkscz0wO3M8aTtzKyspe3ZhciBuPXt9O3RoaXMuZGVwZW5kZW5jeS5wdXNoKG4pLG4uc3ViU2VxRGlyZWN0aW9uRmxhZz10LnJlYWRVaW50OCgpLG4ubGF5ZXJOdW1iZXI9dC5yZWFkVWludDgoKSxuLnN1YlNlcXVlbmNlSWRlbnRpZmllcj10LnJlYWRVaW50MTYoKX19KSxyLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigiZHRydCIsZnVuY3Rpb24odCl7aC53YXJuKCJCb3hQYXJzZXIiLCJTYW1wbGUgR3JvdXAgdHlwZTogIit0aGlzLmdyb3VwaW5nX3R5cGUrIiBub3QgZnVsbHkgcGFyc2VkIil9KSxyLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigibXZpZiIsZnVuY3Rpb24odCl7aC53YXJuKCJCb3hQYXJzZXIiLCJTYW1wbGUgR3JvdXAgdHlwZTogIit0aGlzLmdyb3VwaW5nX3R5cGUrIiBub3QgZnVsbHkgcGFyc2VkIil9KSxyLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigicHJvbCIsZnVuY3Rpb24odCl7dGhpcy5yb2xsX2Rpc3RhbmNlPXQucmVhZEludDE2KCl9KSxyLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigicmFwICIsZnVuY3Rpb24odCl7dmFyIGU9dC5yZWFkVWludDgoKTt0aGlzLm51bV9sZWFkaW5nX3NhbXBsZXNfa25vd249ZT4+Nyx0aGlzLm51bV9sZWFkaW5nX3NhbXBsZXM9ZSYxMjd9KSxyLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigicmFzaCIsZnVuY3Rpb24odCl7aWYodGhpcy5vcGVyYXRpb25fcG9pbnRfY291bnQ9dC5yZWFkVWludDE2KCksdGhpcy5kZXNjcmlwdGlvbl9sZW5ndGghPT0yKyh0aGlzLm9wZXJhdGlvbl9wb2ludF9jb3VudD09PTE/Mjp0aGlzLm9wZXJhdGlvbl9wb2ludF9jb3VudCo2KSs5KWgud2FybigiQm94UGFyc2VyIiwiTWlzbWF0Y2ggaW4gIit0aGlzLmdyb3VwaW5nX3R5cGUrIiBzYW1wbGUgZ3JvdXAgbGVuZ3RoIiksdGhpcy5kYXRhPXQucmVhZFVpbnQ4QXJyYXkodGhpcy5kZXNjcmlwdGlvbl9sZW5ndGgtMik7ZWxzZXtpZih0aGlzLm9wZXJhdGlvbl9wb2ludF9jb3VudD09PTEpdGhpcy50YXJnZXRfcmF0ZV9zaGFyZT10LnJlYWRVaW50MTYoKTtlbHNle3RoaXMudGFyZ2V0X3JhdGVfc2hhcmU9W10sdGhpcy5hdmFpbGFibGVfYml0cmF0ZT1bXTtmb3IodmFyIGU9MDtlPHRoaXMub3BlcmF0aW9uX3BvaW50X2NvdW50O2UrKyl0aGlzLmF2YWlsYWJsZV9iaXRyYXRlW2VdPXQucmVhZFVpbnQzMigpLHRoaXMudGFyZ2V0X3JhdGVfc2hhcmVbZV09dC5yZWFkVWludDE2KCl9dGhpcy5tYXhpbXVtX2JpdHJhdGU9dC5yZWFkVWludDMyKCksdGhpcy5taW5pbXVtX2JpdHJhdGU9dC5yZWFkVWludDMyKCksdGhpcy5kaXNjYXJkX3ByaW9yaXR5PXQucmVhZFVpbnQ4KCl9fSksci5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInJvbGwiLGZ1bmN0aW9uKHQpe3RoaXMucm9sbF9kaXN0YW5jZT10LnJlYWRJbnQxNigpfSksci5TYW1wbGVHcm91cEVudHJ5LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0KXtoLndhcm4oIkJveFBhcnNlciIsIlVua25vd24gU2FtcGxlIEdyb3VwIHR5cGU6ICIrdGhpcy5ncm91cGluZ190eXBlKSx0aGlzLmRhdGE9dC5yZWFkVWludDhBcnJheSh0aGlzLmRlc2NyaXB0aW9uX2xlbmd0aCl9LHIuY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJzY2lmIixmdW5jdGlvbih0KXtoLndhcm4oIkJveFBhcnNlciIsIlNhbXBsZSBHcm91cCB0eXBlOiAiK3RoaXMuZ3JvdXBpbmdfdHlwZSsiIG5vdCBmdWxseSBwYXJzZWQiKX0pLHIuY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJzY25tIixmdW5jdGlvbih0KXtoLndhcm4oIkJveFBhcnNlciIsIlNhbXBsZSBHcm91cCB0eXBlOiAiK3RoaXMuZ3JvdXBpbmdfdHlwZSsiIG5vdCBmdWxseSBwYXJzZWQiKX0pLHIuY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJzZWlnIixmdW5jdGlvbih0KXt0aGlzLnJlc2VydmVkPXQucmVhZFVpbnQ4KCk7dmFyIGU9dC5yZWFkVWludDgoKTt0aGlzLmNyeXB0X2J5dGVfYmxvY2s9ZT4+NCx0aGlzLnNraXBfYnl0ZV9ibG9jaz1lJjE1LHRoaXMuaXNQcm90ZWN0ZWQ9dC5yZWFkVWludDgoKSx0aGlzLlBlcl9TYW1wbGVfSVZfU2l6ZT10LnJlYWRVaW50OCgpLHRoaXMuS0lEPXIucGFyc2VIZXgxNih0KSx0aGlzLmNvbnN0YW50X0lWX3NpemU9MCx0aGlzLmNvbnN0YW50X0lWPTAsdGhpcy5pc1Byb3RlY3RlZD09PTEmJnRoaXMuUGVyX1NhbXBsZV9JVl9TaXplPT09MCYmKHRoaXMuY29uc3RhbnRfSVZfc2l6ZT10LnJlYWRVaW50OCgpLHRoaXMuY29uc3RhbnRfSVY9dC5yZWFkVWludDhBcnJheSh0aGlzLmNvbnN0YW50X0lWX3NpemUpKX0pLHIuY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJzdHNhIixmdW5jdGlvbih0KXtoLndhcm4oIkJveFBhcnNlciIsIlNhbXBsZSBHcm91cCB0eXBlOiAiK3RoaXMuZ3JvdXBpbmdfdHlwZSsiIG5vdCBmdWxseSBwYXJzZWQiKX0pLHIuY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJzeW5jIixmdW5jdGlvbih0KXt2YXIgZT10LnJlYWRVaW50OCgpO3RoaXMuTkFMX3VuaXRfdHlwZT1lJjYzfSksci5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInRlbGUiLGZ1bmN0aW9uKHQpe3ZhciBlPXQucmVhZFVpbnQ4KCk7dGhpcy5sZXZlbF9pbmRlcGVuZGVudGx5X2RlY29kYWJsZT1lPj43fSksci5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInRzYXMiLGZ1bmN0aW9uKHQpe2gud2FybigiQm94UGFyc2VyIiwiU2FtcGxlIEdyb3VwIHR5cGU6ICIrdGhpcy5ncm91cGluZ190eXBlKyIgbm90IGZ1bGx5IHBhcnNlZCIpfSksci5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInRzY2wiLGZ1bmN0aW9uKHQpe2gud2FybigiQm94UGFyc2VyIiwiU2FtcGxlIEdyb3VwIHR5cGU6ICIrdGhpcy5ncm91cGluZ190eXBlKyIgbm90IGZ1bGx5IHBhcnNlZCIpfSksci5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInZpcHIiLGZ1bmN0aW9uKHQpe2gud2FybigiQm94UGFyc2VyIiwiU2FtcGxlIEdyb3VwIHR5cGU6ICIrdGhpcy5ncm91cGluZ190eXBlKyIgbm90IGZ1bGx5IHBhcnNlZCIpfSksci5jcmVhdGVGdWxsQm94Q3Rvcigic2JncCIsZnVuY3Rpb24odCl7dGhpcy5ncm91cGluZ190eXBlPXQucmVhZFN0cmluZyg0KSx0aGlzLnZlcnNpb249PT0xP3RoaXMuZ3JvdXBpbmdfdHlwZV9wYXJhbWV0ZXI9dC5yZWFkVWludDMyKCk6dGhpcy5ncm91cGluZ190eXBlX3BhcmFtZXRlcj0wLHRoaXMuZW50cmllcz1bXTtmb3IodmFyIGU9dC5yZWFkVWludDMyKCksaT0wO2k8ZTtpKyspe3ZhciBzPXt9O3RoaXMuZW50cmllcy5wdXNoKHMpLHMuc2FtcGxlX2NvdW50PXQucmVhZEludDMyKCkscy5ncm91cF9kZXNjcmlwdGlvbl9pbmRleD10LnJlYWRJbnQzMigpfX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInNjaG0iLGZ1bmN0aW9uKHQpe3RoaXMuc2NoZW1lX3R5cGU9dC5yZWFkU3RyaW5nKDQpLHRoaXMuc2NoZW1lX3ZlcnNpb249dC5yZWFkVWludDMyKCksdGhpcy5mbGFncyYxJiYodGhpcy5zY2hlbWVfdXJpPXQucmVhZFN0cmluZyh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS04KSl9KSxyLmNyZWF0ZUJveEN0b3IoInNkcCAiLGZ1bmN0aW9uKHQpe3RoaXMuc2RwdGV4dD10LnJlYWRTdHJpbmcodGhpcy5zaXplLXRoaXMuaGRyX3NpemUpfSksci5jcmVhdGVGdWxsQm94Q3Rvcigic2R0cCIsZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZTt0aGlzLmlzX2xlYWRpbmc9W10sdGhpcy5zYW1wbGVfZGVwZW5kc19vbj1bXSx0aGlzLnNhbXBsZV9pc19kZXBlbmRlZF9vbj1bXSx0aGlzLnNhbXBsZV9oYXNfcmVkdW5kYW5jeT1bXTtmb3IodmFyIHM9MDtzPGk7cysrKWU9dC5yZWFkVWludDgoKSx0aGlzLmlzX2xlYWRpbmdbc109ZT4+Nix0aGlzLnNhbXBsZV9kZXBlbmRzX29uW3NdPWU+PjQmMyx0aGlzLnNhbXBsZV9pc19kZXBlbmRlZF9vbltzXT1lPj4yJjMsdGhpcy5zYW1wbGVfaGFzX3JlZHVuZGFuY3lbc109ZSYzfSksci5jcmVhdGVGdWxsQm94Q3Rvcigic2VuYyIpLHIuY3JlYXRlRnVsbEJveEN0b3IoInNncGQiLGZ1bmN0aW9uKHQpe3RoaXMuZ3JvdXBpbmdfdHlwZT10LnJlYWRTdHJpbmcoNCksaC5kZWJ1ZygiQm94UGFyc2VyIiwiRm91bmQgU2FtcGxlIEdyb3VwcyBvZiB0eXBlICIrdGhpcy5ncm91cGluZ190eXBlKSx0aGlzLnZlcnNpb249PT0xP3RoaXMuZGVmYXVsdF9sZW5ndGg9dC5yZWFkVWludDMyKCk6dGhpcy5kZWZhdWx0X2xlbmd0aD0wLHRoaXMudmVyc2lvbj49MiYmKHRoaXMuZGVmYXVsdF9ncm91cF9kZXNjcmlwdGlvbl9pbmRleD10LnJlYWRVaW50MzIoKSksdGhpcy5lbnRyaWVzPVtdO2Zvcih2YXIgZT10LnJlYWRVaW50MzIoKSxpPTA7aTxlO2krKyl7dmFyIHM7clt0aGlzLmdyb3VwaW5nX3R5cGUrIlNhbXBsZUdyb3VwRW50cnkiXT9zPW5ldyByW3RoaXMuZ3JvdXBpbmdfdHlwZSsiU2FtcGxlR3JvdXBFbnRyeSJdKHRoaXMuZ3JvdXBpbmdfdHlwZSk6cz1uZXcgci5TYW1wbGVHcm91cEVudHJ5KHRoaXMuZ3JvdXBpbmdfdHlwZSksdGhpcy5lbnRyaWVzLnB1c2gocyksdGhpcy52ZXJzaW9uPT09MT90aGlzLmRlZmF1bHRfbGVuZ3RoPT09MD9zLmRlc2NyaXB0aW9uX2xlbmd0aD10LnJlYWRVaW50MzIoKTpzLmRlc2NyaXB0aW9uX2xlbmd0aD10aGlzLmRlZmF1bHRfbGVuZ3RoOnMuZGVzY3JpcHRpb25fbGVuZ3RoPXRoaXMuZGVmYXVsdF9sZW5ndGgscy53cml0ZT09PXIuU2FtcGxlR3JvdXBFbnRyeS5wcm90b3R5cGUud3JpdGUmJihoLmluZm8oIkJveFBhcnNlciIsIlNhbXBsZUdyb3VwIGZvciB0eXBlICIrdGhpcy5ncm91cGluZ190eXBlKyIgd3JpdGluZyBub3QgeWV0IGltcGxlbWVudGVkLCBrZWVwaW5nIHVucGFyc2VkIGRhdGEgaW4gbWVtb3J5IGZvciBsYXRlciB3cml0ZSIpLHMuZGF0YT10LnJlYWRVaW50OEFycmF5KHMuZGVzY3JpcHRpb25fbGVuZ3RoKSx0LnBvc2l0aW9uLT1zLmRlc2NyaXB0aW9uX2xlbmd0aCkscy5wYXJzZSh0KX19KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzaWR4IixmdW5jdGlvbih0KXt0aGlzLnJlZmVyZW5jZV9JRD10LnJlYWRVaW50MzIoKSx0aGlzLnRpbWVzY2FsZT10LnJlYWRVaW50MzIoKSx0aGlzLnZlcnNpb249PT0wPyh0aGlzLmVhcmxpZXN0X3ByZXNlbnRhdGlvbl90aW1lPXQucmVhZFVpbnQzMigpLHRoaXMuZmlyc3Rfb2Zmc2V0PXQucmVhZFVpbnQzMigpKToodGhpcy5lYXJsaWVzdF9wcmVzZW50YXRpb25fdGltZT10LnJlYWRVaW50NjQoKSx0aGlzLmZpcnN0X29mZnNldD10LnJlYWRVaW50NjQoKSksdC5yZWFkVWludDE2KCksdGhpcy5yZWZlcmVuY2VzPVtdO2Zvcih2YXIgZT10LnJlYWRVaW50MTYoKSxpPTA7aTxlO2krKyl7dmFyIHM9e307dGhpcy5yZWZlcmVuY2VzLnB1c2gocyk7dmFyIG49dC5yZWFkVWludDMyKCk7cy5yZWZlcmVuY2VfdHlwZT1uPj4zMSYxLHMucmVmZXJlbmNlZF9zaXplPW4mMjE0NzQ4MzY0NyxzLnN1YnNlZ21lbnRfZHVyYXRpb249dC5yZWFkVWludDMyKCksbj10LnJlYWRVaW50MzIoKSxzLnN0YXJ0c193aXRoX1NBUD1uPj4zMSYxLHMuU0FQX3R5cGU9bj4+MjgmNyxzLlNBUF9kZWx0YV90aW1lPW4mMjY4NDM1NDU1fX0pLHIuU2luZ2xlSXRlbVR5cGVSZWZlcmVuY2VCb3g9ZnVuY3Rpb24odCxlLGkscyl7ci5Cb3guY2FsbCh0aGlzLHQsZSksdGhpcy5oZHJfc2l6ZT1pLHRoaXMuc3RhcnQ9c30sci5TaW5nbGVJdGVtVHlwZVJlZmVyZW5jZUJveC5wcm90b3R5cGU9bmV3IHIuQm94LHIuU2luZ2xlSXRlbVR5cGVSZWZlcmVuY2VCb3gucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3RoaXMuZnJvbV9pdGVtX0lEPXQucmVhZFVpbnQxNigpO3ZhciBlPXQucmVhZFVpbnQxNigpO3RoaXMucmVmZXJlbmNlcz1bXTtmb3IodmFyIGk9MDtpPGU7aSsrKXRoaXMucmVmZXJlbmNlc1tpXT10LnJlYWRVaW50MTYoKX0sci5TaW5nbGVJdGVtVHlwZVJlZmVyZW5jZUJveExhcmdlPWZ1bmN0aW9uKHQsZSxpLHMpe3IuQm94LmNhbGwodGhpcyx0LGUpLHRoaXMuaGRyX3NpemU9aSx0aGlzLnN0YXJ0PXN9LHIuU2luZ2xlSXRlbVR5cGVSZWZlcmVuY2VCb3hMYXJnZS5wcm90b3R5cGU9bmV3IHIuQm94LHIuU2luZ2xlSXRlbVR5cGVSZWZlcmVuY2VCb3hMYXJnZS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7dGhpcy5mcm9tX2l0ZW1fSUQ9dC5yZWFkVWludDMyKCk7dmFyIGU9dC5yZWFkVWludDE2KCk7dGhpcy5yZWZlcmVuY2VzPVtdO2Zvcih2YXIgaT0wO2k8ZTtpKyspdGhpcy5yZWZlcmVuY2VzW2ldPXQucmVhZFVpbnQzMigpfSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJTbURtIixmdW5jdGlvbih0KXt0aGlzLnByaW1hcnlSQ2hyb21hdGljaXR5X3g9dC5yZWFkVWludDE2KCksdGhpcy5wcmltYXJ5UkNocm9tYXRpY2l0eV95PXQucmVhZFVpbnQxNigpLHRoaXMucHJpbWFyeUdDaHJvbWF0aWNpdHlfeD10LnJlYWRVaW50MTYoKSx0aGlzLnByaW1hcnlHQ2hyb21hdGljaXR5X3k9dC5yZWFkVWludDE2KCksdGhpcy5wcmltYXJ5QkNocm9tYXRpY2l0eV94PXQucmVhZFVpbnQxNigpLHRoaXMucHJpbWFyeUJDaHJvbWF0aWNpdHlfeT10LnJlYWRVaW50MTYoKSx0aGlzLndoaXRlUG9pbnRDaHJvbWF0aWNpdHlfeD10LnJlYWRVaW50MTYoKSx0aGlzLndoaXRlUG9pbnRDaHJvbWF0aWNpdHlfeT10LnJlYWRVaW50MTYoKSx0aGlzLmx1bWluYW5jZU1heD10LnJlYWRVaW50MzIoKSx0aGlzLmx1bWluYW5jZU1pbj10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInNtaGQiLGZ1bmN0aW9uKHQpe3RoaXMuYmFsYW5jZT10LnJlYWRVaW50MTYoKSx0LnJlYWRVaW50MTYoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInNzaXgiLGZ1bmN0aW9uKHQpe3RoaXMuc3Vic2VnbWVudHM9W107Zm9yKHZhciBlPXQucmVhZFVpbnQzMigpLGk9MDtpPGU7aSsrKXt2YXIgcz17fTt0aGlzLnN1YnNlZ21lbnRzLnB1c2gocykscy5yYW5nZXM9W107Zm9yKHZhciBuPXQucmVhZFVpbnQzMigpLGY9MDtmPG47ZisrKXt2YXIgZD17fTtzLnJhbmdlcy5wdXNoKGQpLGQubGV2ZWw9dC5yZWFkVWludDgoKSxkLnJhbmdlX3NpemU9dC5yZWFkVWludDI0KCl9fX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInN0Y28iLGZ1bmN0aW9uKHQpe3ZhciBlO2lmKGU9dC5yZWFkVWludDMyKCksdGhpcy5jaHVua19vZmZzZXRzPVtdLHRoaXMudmVyc2lvbj09PTApZm9yKHZhciBpPTA7aTxlO2krKyl0aGlzLmNodW5rX29mZnNldHMucHVzaCh0LnJlYWRVaW50MzIoKSl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzdGRwIixmdW5jdGlvbih0KXt2YXIgZT0odGhpcy5zaXplLXRoaXMuaGRyX3NpemUpLzI7dGhpcy5wcmlvcml0eT1bXTtmb3IodmFyIGk9MDtpPGU7aSsrKXRoaXMucHJpb3JpdHlbaV09dC5yZWFkVWludDE2KCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzdGhkIiksci5jcmVhdGVGdWxsQm94Q3Rvcigic3RyaSIsZnVuY3Rpb24odCl7dGhpcy5zd2l0Y2hfZ3JvdXA9dC5yZWFkVWludDE2KCksdGhpcy5hbHRlcm5hdGVfZ3JvdXA9dC5yZWFkVWludDE2KCksdGhpcy5zdWJfdHJhY2tfaWQ9dC5yZWFkVWludDMyKCk7dmFyIGU9KHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplLTgpLzQ7dGhpcy5hdHRyaWJ1dGVfbGlzdD1bXTtmb3IodmFyIGk9MDtpPGU7aSsrKXRoaXMuYXR0cmlidXRlX2xpc3RbaV09dC5yZWFkVWludDMyKCl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzdHNjIixmdW5jdGlvbih0KXt2YXIgZSxpO2lmKGU9dC5yZWFkVWludDMyKCksdGhpcy5maXJzdF9jaHVuaz1bXSx0aGlzLnNhbXBsZXNfcGVyX2NodW5rPVtdLHRoaXMuc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4PVtdLHRoaXMudmVyc2lvbj09PTApZm9yKGk9MDtpPGU7aSsrKXRoaXMuZmlyc3RfY2h1bmsucHVzaCh0LnJlYWRVaW50MzIoKSksdGhpcy5zYW1wbGVzX3Blcl9jaHVuay5wdXNoKHQucmVhZFVpbnQzMigpKSx0aGlzLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleC5wdXNoKHQucmVhZFVpbnQzMigpKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInN0c2QiLGZ1bmN0aW9uKHQpe3ZhciBlLGkscyxuO2Zvcih0aGlzLmVudHJpZXM9W10scz10LnJlYWRVaW50MzIoKSxlPTE7ZTw9cztlKyspaWYoaT1yLnBhcnNlT25lQm94KHQsITAsdGhpcy5zaXplLSh0LmdldFBvc2l0aW9uKCktdGhpcy5zdGFydCkpLGkuY29kZT09PXIuT0spcltpLnR5cGUrIlNhbXBsZUVudHJ5Il0/KG49bmV3IHJbaS50eXBlKyJTYW1wbGVFbnRyeSJdKGkuc2l6ZSksbi5oZHJfc2l6ZT1pLmhkcl9zaXplLG4uc3RhcnQ9aS5zdGFydCk6KGgud2FybigiQm94UGFyc2VyIiwiVW5rbm93biBzYW1wbGUgZW50cnkgdHlwZTogIitpLnR5cGUpLG49bmV3IHIuU2FtcGxlRW50cnkoaS50eXBlLGkuc2l6ZSxpLmhkcl9zaXplLGkuc3RhcnQpKSxuLndyaXRlPT09ci5TYW1wbGVFbnRyeS5wcm90b3R5cGUud3JpdGUmJihoLmluZm8oIkJveFBhcnNlciIsIlNhbXBsZUVudHJ5ICIrbi50eXBlKyIgYm94IHdyaXRpbmcgbm90IHlldCBpbXBsZW1lbnRlZCwga2VlcGluZyB1bnBhcnNlZCBkYXRhIGluIG1lbW9yeSBmb3IgbGF0ZXIgd3JpdGUiKSxuLnBhcnNlRGF0YUFuZFJld2luZCh0KSksbi5wYXJzZSh0KSx0aGlzLmVudHJpZXMucHVzaChuKTtlbHNlIHJldHVybn0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInN0c2ciLGZ1bmN0aW9uKHQpe3RoaXMuZ3JvdXBpbmdfdHlwZT10LnJlYWRVaW50MzIoKTt2YXIgZT10LnJlYWRVaW50MTYoKTt0aGlzLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PVtdO2Zvcih2YXIgaT0wO2k8ZTtpKyspdGhpcy5ncm91cF9kZXNjcmlwdGlvbl9pbmRleFtpXT10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInN0c2giLGZ1bmN0aW9uKHQpe3ZhciBlLGk7aWYoZT10LnJlYWRVaW50MzIoKSx0aGlzLnNoYWRvd2VkX3NhbXBsZV9udW1iZXJzPVtdLHRoaXMuc3luY19zYW1wbGVfbnVtYmVycz1bXSx0aGlzLnZlcnNpb249PT0wKWZvcihpPTA7aTxlO2krKyl0aGlzLnNoYWRvd2VkX3NhbXBsZV9udW1iZXJzLnB1c2godC5yZWFkVWludDMyKCkpLHRoaXMuc3luY19zYW1wbGVfbnVtYmVycy5wdXNoKHQucmVhZFVpbnQzMigpKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInN0c3MiLGZ1bmN0aW9uKHQpe3ZhciBlLGk7aWYoaT10LnJlYWRVaW50MzIoKSx0aGlzLnZlcnNpb249PT0wKWZvcih0aGlzLnNhbXBsZV9udW1iZXJzPVtdLGU9MDtlPGk7ZSsrKXRoaXMuc2FtcGxlX251bWJlcnMucHVzaCh0LnJlYWRVaW50MzIoKSl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzdHN6IixmdW5jdGlvbih0KXt2YXIgZTtpZih0aGlzLnNhbXBsZV9zaXplcz1bXSx0aGlzLnZlcnNpb249PT0wKWZvcih0aGlzLnNhbXBsZV9zaXplPXQucmVhZFVpbnQzMigpLHRoaXMuc2FtcGxlX2NvdW50PXQucmVhZFVpbnQzMigpLGU9MDtlPHRoaXMuc2FtcGxlX2NvdW50O2UrKyl0aGlzLnNhbXBsZV9zaXplPT09MD90aGlzLnNhbXBsZV9zaXplcy5wdXNoKHQucmVhZFVpbnQzMigpKTp0aGlzLnNhbXBsZV9zaXplc1tlXT10aGlzLnNhbXBsZV9zaXplfSksci5jcmVhdGVGdWxsQm94Q3Rvcigic3R0cyIsZnVuY3Rpb24odCl7dmFyIGUsaSxzO2lmKGU9dC5yZWFkVWludDMyKCksdGhpcy5zYW1wbGVfY291bnRzPVtdLHRoaXMuc2FtcGxlX2RlbHRhcz1bXSx0aGlzLnZlcnNpb249PT0wKWZvcihpPTA7aTxlO2krKyl0aGlzLnNhbXBsZV9jb3VudHMucHVzaCh0LnJlYWRVaW50MzIoKSkscz10LnJlYWRJbnQzMigpLHM8MCYmKGgud2FybigiQm94UGFyc2VyIiwiRmlsZSB1c2VzIG5lZ2F0aXZlIHN0dHMgc2FtcGxlIGRlbHRhLCB1c2luZyB2YWx1ZSAxIGluc3RlYWQsIHN5bmMgbWF5IGJlIGxvc3QhIikscz0xKSx0aGlzLnNhbXBsZV9kZWx0YXMucHVzaChzKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInN0dmkiLGZ1bmN0aW9uKHQpe3ZhciBlPXQucmVhZFVpbnQzMigpO3RoaXMuc2luZ2xlX3ZpZXdfYWxsb3dlZD1lJjMsdGhpcy5zdGVyZW9fc2NoZW1lPXQucmVhZFVpbnQzMigpO3ZhciBpPXQucmVhZFVpbnQzMigpO3RoaXMuc3RlcmVvX2luZGljYXRpb25fdHlwZT10LnJlYWRTdHJpbmcoaSk7dmFyIHMsbjtmb3IodGhpcy5ib3hlcz1bXTt0LmdldFBvc2l0aW9uKCk8dGhpcy5zdGFydCt0aGlzLnNpemU7KWlmKHM9ci5wYXJzZU9uZUJveCh0LCExLHRoaXMuc2l6ZS0odC5nZXRQb3NpdGlvbigpLXRoaXMuc3RhcnQpKSxzLmNvZGU9PT1yLk9LKW49cy5ib3gsdGhpcy5ib3hlcy5wdXNoKG4pLHRoaXNbbi50eXBlXT1uO2Vsc2UgcmV0dXJufSksci5jcmVhdGVCb3hDdG9yKCJzdHlwIixmdW5jdGlvbih0KXtyLmZ0eXBCb3gucHJvdG90eXBlLnBhcnNlLmNhbGwodGhpcyx0KX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInN0ejIiLGZ1bmN0aW9uKHQpe3ZhciBlLGk7aWYodGhpcy5zYW1wbGVfc2l6ZXM9W10sdGhpcy52ZXJzaW9uPT09MClpZih0aGlzLnJlc2VydmVkPXQucmVhZFVpbnQyNCgpLHRoaXMuZmllbGRfc2l6ZT10LnJlYWRVaW50OCgpLGk9dC5yZWFkVWludDMyKCksdGhpcy5maWVsZF9zaXplPT09NClmb3IoZT0wO2U8aTtlKz0yKXt2YXIgcz10LnJlYWRVaW50OCgpO3RoaXMuc2FtcGxlX3NpemVzW2VdPXM+PjQmMTUsdGhpcy5zYW1wbGVfc2l6ZXNbZSsxXT1zJjE1fWVsc2UgaWYodGhpcy5maWVsZF9zaXplPT09OClmb3IoZT0wO2U8aTtlKyspdGhpcy5zYW1wbGVfc2l6ZXNbZV09dC5yZWFkVWludDgoKTtlbHNlIGlmKHRoaXMuZmllbGRfc2l6ZT09PTE2KWZvcihlPTA7ZTxpO2UrKyl0aGlzLnNhbXBsZV9zaXplc1tlXT10LnJlYWRVaW50MTYoKTtlbHNlIGguZXJyb3IoIkJveFBhcnNlciIsIkVycm9yIGluIGxlbmd0aCBmaWVsZCBpbiBzdHoyIGJveCIpfSksci5jcmVhdGVGdWxsQm94Q3Rvcigic3VicyIsZnVuY3Rpb24odCl7dmFyIGUsaSxzLG47Zm9yKHM9dC5yZWFkVWludDMyKCksdGhpcy5lbnRyaWVzPVtdLGU9MDtlPHM7ZSsrKXt2YXIgZj17fTtpZih0aGlzLmVudHJpZXNbZV09ZixmLnNhbXBsZV9kZWx0YT10LnJlYWRVaW50MzIoKSxmLnN1YnNhbXBsZXM9W10sbj10LnJlYWRVaW50MTYoKSxuPjApZm9yKGk9MDtpPG47aSsrKXt2YXIgZD17fTtmLnN1YnNhbXBsZXMucHVzaChkKSx0aGlzLnZlcnNpb249PTE/ZC5zaXplPXQucmVhZFVpbnQzMigpOmQuc2l6ZT10LnJlYWRVaW50MTYoKSxkLnByaW9yaXR5PXQucmVhZFVpbnQ4KCksZC5kaXNjYXJkYWJsZT10LnJlYWRVaW50OCgpLGQuY29kZWNfc3BlY2lmaWNfcGFyYW1ldGVycz10LnJlYWRVaW50MzIoKX19fSksci5jcmVhdGVGdWxsQm94Q3RvcigidGVuYyIsZnVuY3Rpb24odCl7aWYodC5yZWFkVWludDgoKSx0aGlzLnZlcnNpb249PT0wKXQucmVhZFVpbnQ4KCk7ZWxzZXt2YXIgZT10LnJlYWRVaW50OCgpO3RoaXMuZGVmYXVsdF9jcnlwdF9ieXRlX2Jsb2NrPWU+PjQmMTUsdGhpcy5kZWZhdWx0X3NraXBfYnl0ZV9ibG9jaz1lJjE1fXRoaXMuZGVmYXVsdF9pc1Byb3RlY3RlZD10LnJlYWRVaW50OCgpLHRoaXMuZGVmYXVsdF9QZXJfU2FtcGxlX0lWX1NpemU9dC5yZWFkVWludDgoKSx0aGlzLmRlZmF1bHRfS0lEPXIucGFyc2VIZXgxNih0KSx0aGlzLmRlZmF1bHRfaXNQcm90ZWN0ZWQ9PT0xJiZ0aGlzLmRlZmF1bHRfUGVyX1NhbXBsZV9JVl9TaXplPT09MCYmKHRoaXMuZGVmYXVsdF9jb25zdGFudF9JVl9zaXplPXQucmVhZFVpbnQ4KCksdGhpcy5kZWZhdWx0X2NvbnN0YW50X0lWPXQucmVhZFVpbnQ4QXJyYXkodGhpcy5kZWZhdWx0X2NvbnN0YW50X0lWX3NpemUpKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInRmZHQiLGZ1bmN0aW9uKHQpe3RoaXMudmVyc2lvbj09MT90aGlzLmJhc2VNZWRpYURlY29kZVRpbWU9dC5yZWFkVWludDY0KCk6dGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lPXQucmVhZFVpbnQzMigpfSksci5jcmVhdGVGdWxsQm94Q3RvcigidGZoZCIsZnVuY3Rpb24odCl7dmFyIGU9MDt0aGlzLnRyYWNrX2lkPXQucmVhZFVpbnQzMigpLHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplPmUmJnRoaXMuZmxhZ3Mmci5URkhEX0ZMQUdfQkFTRV9EQVRBX09GRlNFVD8odGhpcy5iYXNlX2RhdGFfb2Zmc2V0PXQucmVhZFVpbnQ2NCgpLGUrPTgpOnRoaXMuYmFzZV9kYXRhX29mZnNldD0wLHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplPmUmJnRoaXMuZmxhZ3Mmci5URkhEX0ZMQUdfU0FNUExFX0RFU0M/KHRoaXMuZGVmYXVsdF9zYW1wbGVfZGVzY3JpcHRpb25faW5kZXg9dC5yZWFkVWludDMyKCksZSs9NCk6dGhpcy5kZWZhdWx0X3NhbXBsZV9kZXNjcmlwdGlvbl9pbmRleD0wLHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplPmUmJnRoaXMuZmxhZ3Mmci5URkhEX0ZMQUdfU0FNUExFX0RVUj8odGhpcy5kZWZhdWx0X3NhbXBsZV9kdXJhdGlvbj10LnJlYWRVaW50MzIoKSxlKz00KTp0aGlzLmRlZmF1bHRfc2FtcGxlX2R1cmF0aW9uPTAsdGhpcy5zaXplLXRoaXMuaGRyX3NpemU+ZSYmdGhpcy5mbGFncyZyLlRGSERfRkxBR19TQU1QTEVfU0laRT8odGhpcy5kZWZhdWx0X3NhbXBsZV9zaXplPXQucmVhZFVpbnQzMigpLGUrPTQpOnRoaXMuZGVmYXVsdF9zYW1wbGVfc2l6ZT0wLHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplPmUmJnRoaXMuZmxhZ3Mmci5URkhEX0ZMQUdfU0FNUExFX0ZMQUdTPyh0aGlzLmRlZmF1bHRfc2FtcGxlX2ZsYWdzPXQucmVhZFVpbnQzMigpLGUrPTQpOnRoaXMuZGVmYXVsdF9zYW1wbGVfZmxhZ3M9MH0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInRmcmEiLGZ1bmN0aW9uKHQpe3RoaXMudHJhY2tfSUQ9dC5yZWFkVWludDMyKCksdC5yZWFkVWludDI0KCk7dmFyIGU9dC5yZWFkVWludDgoKTt0aGlzLmxlbmd0aF9zaXplX29mX3RyYWZfbnVtPWU+PjQmMyx0aGlzLmxlbmd0aF9zaXplX29mX3RydW5fbnVtPWU+PjImMyx0aGlzLmxlbmd0aF9zaXplX29mX3NhbXBsZV9udW09ZSYzLHRoaXMuZW50cmllcz1bXTtmb3IodmFyIGk9dC5yZWFkVWludDMyKCkscz0wO3M8aTtzKyspdGhpcy52ZXJzaW9uPT09MT8odGhpcy50aW1lPXQucmVhZFVpbnQ2NCgpLHRoaXMubW9vZl9vZmZzZXQ9dC5yZWFkVWludDY0KCkpOih0aGlzLnRpbWU9dC5yZWFkVWludDMyKCksdGhpcy5tb29mX29mZnNldD10LnJlYWRVaW50MzIoKSksdGhpcy50cmFmX251bWJlcj10WyJyZWFkVWludCIrOCoodGhpcy5sZW5ndGhfc2l6ZV9vZl90cmFmX251bSsxKV0oKSx0aGlzLnRydW5fbnVtYmVyPXRbInJlYWRVaW50Iis4Kih0aGlzLmxlbmd0aF9zaXplX29mX3RydW5fbnVtKzEpXSgpLHRoaXMuc2FtcGxlX251bWJlcj10WyJyZWFkVWludCIrOCoodGhpcy5sZW5ndGhfc2l6ZV9vZl9zYW1wbGVfbnVtKzEpXSgpfSksci5jcmVhdGVGdWxsQm94Q3RvcigidGtoZCIsZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPT0xPyh0aGlzLmNyZWF0aW9uX3RpbWU9dC5yZWFkVWludDY0KCksdGhpcy5tb2RpZmljYXRpb25fdGltZT10LnJlYWRVaW50NjQoKSx0aGlzLnRyYWNrX2lkPXQucmVhZFVpbnQzMigpLHQucmVhZFVpbnQzMigpLHRoaXMuZHVyYXRpb249dC5yZWFkVWludDY0KCkpOih0aGlzLmNyZWF0aW9uX3RpbWU9dC5yZWFkVWludDMyKCksdGhpcy5tb2RpZmljYXRpb25fdGltZT10LnJlYWRVaW50MzIoKSx0aGlzLnRyYWNrX2lkPXQucmVhZFVpbnQzMigpLHQucmVhZFVpbnQzMigpLHRoaXMuZHVyYXRpb249dC5yZWFkVWludDMyKCkpLHQucmVhZFVpbnQzMkFycmF5KDIpLHRoaXMubGF5ZXI9dC5yZWFkSW50MTYoKSx0aGlzLmFsdGVybmF0ZV9ncm91cD10LnJlYWRJbnQxNigpLHRoaXMudm9sdW1lPXQucmVhZEludDE2KCk+PjgsdC5yZWFkVWludDE2KCksdGhpcy5tYXRyaXg9dC5yZWFkSW50MzJBcnJheSg5KSx0aGlzLndpZHRoPXQucmVhZFVpbnQzMigpLHRoaXMuaGVpZ2h0PXQucmVhZFVpbnQzMigpfSksci5jcmVhdGVCb3hDdG9yKCJ0bWF4IixmdW5jdGlvbih0KXt0aGlzLnRpbWU9dC5yZWFkVWludDMyKCl9KSxyLmNyZWF0ZUJveEN0b3IoInRtaW4iLGZ1bmN0aW9uKHQpe3RoaXMudGltZT10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlQm94Q3RvcigidG90bCIsZnVuY3Rpb24odCl7dGhpcy5ieXRlc3NlbnQ9dC5yZWFkVWludDMyKCl9KSxyLmNyZWF0ZUJveEN0b3IoInRwYXkiLGZ1bmN0aW9uKHQpe3RoaXMuYnl0ZXNzZW50PXQucmVhZFVpbnQzMigpfSksci5jcmVhdGVCb3hDdG9yKCJ0cHlsIixmdW5jdGlvbih0KXt0aGlzLmJ5dGVzc2VudD10LnJlYWRVaW50NjQoKX0pLHIuVHJhY2tHcm91cFR5cGVCb3gucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3RoaXMucGFyc2VGdWxsSGVhZGVyKHQpLHRoaXMudHJhY2tfZ3JvdXBfaWQ9dC5yZWFkVWludDMyKCl9LHIuY3JlYXRlVHJhY2tHcm91cEN0b3IoIm1zcmMiKSxyLlRyYWNrUmVmZXJlbmNlVHlwZUJveD1mdW5jdGlvbih0LGUsaSxzKXtyLkJveC5jYWxsKHRoaXMsdCxlKSx0aGlzLmhkcl9zaXplPWksdGhpcy5zdGFydD1zfSxyLlRyYWNrUmVmZXJlbmNlVHlwZUJveC5wcm90b3R5cGU9bmV3IHIuQm94LHIuVHJhY2tSZWZlcmVuY2VUeXBlQm94LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0KXt0aGlzLnRyYWNrX2lkcz10LnJlYWRVaW50MzJBcnJheSgodGhpcy5zaXplLXRoaXMuaGRyX3NpemUpLzQpfSxyLnRyZWZCb3gucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpO3QuZ2V0UG9zaXRpb24oKTx0aGlzLnN0YXJ0K3RoaXMuc2l6ZTspaWYoZT1yLnBhcnNlT25lQm94KHQsITAsdGhpcy5zaXplLSh0LmdldFBvc2l0aW9uKCktdGhpcy5zdGFydCkpLGUuY29kZT09PXIuT0spaT1uZXcgci5UcmFja1JlZmVyZW5jZVR5cGVCb3goZS50eXBlLGUuc2l6ZSxlLmhkcl9zaXplLGUuc3RhcnQpLGkud3JpdGU9PT1yLkJveC5wcm90b3R5cGUud3JpdGUmJmkudHlwZSE9PSJtZGF0IiYmKGguaW5mbygiQm94UGFyc2VyIiwiVHJhY2tSZWZlcmVuY2UgIitpLnR5cGUrIiBib3ggd3JpdGluZyBub3QgeWV0IGltcGxlbWVudGVkLCBrZWVwaW5nIHVucGFyc2VkIGRhdGEgaW4gbWVtb3J5IGZvciBsYXRlciB3cml0ZSIpLGkucGFyc2VEYXRhQW5kUmV3aW5kKHQpKSxpLnBhcnNlKHQpLHRoaXMuYm94ZXMucHVzaChpKTtlbHNlIHJldHVybn0sci5jcmVhdGVGdWxsQm94Q3RvcigidHJlcCIsZnVuY3Rpb24odCl7Zm9yKHRoaXMudHJhY2tfSUQ9dC5yZWFkVWludDMyKCksdGhpcy5ib3hlcz1bXTt0LmdldFBvc2l0aW9uKCk8dGhpcy5zdGFydCt0aGlzLnNpemU7KWlmKHJldD1yLnBhcnNlT25lQm94KHQsITEsdGhpcy5zaXplLSh0LmdldFBvc2l0aW9uKCktdGhpcy5zdGFydCkpLHJldC5jb2RlPT09ci5PSylib3g9cmV0LmJveCx0aGlzLmJveGVzLnB1c2goYm94KTtlbHNlIHJldHVybn0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInRyZXgiLGZ1bmN0aW9uKHQpe3RoaXMudHJhY2tfaWQ9dC5yZWFkVWludDMyKCksdGhpcy5kZWZhdWx0X3NhbXBsZV9kZXNjcmlwdGlvbl9pbmRleD10LnJlYWRVaW50MzIoKSx0aGlzLmRlZmF1bHRfc2FtcGxlX2R1cmF0aW9uPXQucmVhZFVpbnQzMigpLHRoaXMuZGVmYXVsdF9zYW1wbGVfc2l6ZT10LnJlYWRVaW50MzIoKSx0aGlzLmRlZmF1bHRfc2FtcGxlX2ZsYWdzPXQucmVhZFVpbnQzMigpfSksci5jcmVhdGVCb3hDdG9yKCJ0cnB5IixmdW5jdGlvbih0KXt0aGlzLmJ5dGVzc2VudD10LnJlYWRVaW50NjQoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInRydW4iLGZ1bmN0aW9uKHQpe3ZhciBlPTA7aWYodGhpcy5zYW1wbGVfY291bnQ9dC5yZWFkVWludDMyKCksZSs9NCx0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZT5lJiZ0aGlzLmZsYWdzJnIuVFJVTl9GTEFHU19EQVRBX09GRlNFVD8odGhpcy5kYXRhX29mZnNldD10LnJlYWRJbnQzMigpLGUrPTQpOnRoaXMuZGF0YV9vZmZzZXQ9MCx0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZT5lJiZ0aGlzLmZsYWdzJnIuVFJVTl9GTEFHU19GSVJTVF9GTEFHPyh0aGlzLmZpcnN0X3NhbXBsZV9mbGFncz10LnJlYWRVaW50MzIoKSxlKz00KTp0aGlzLmZpcnN0X3NhbXBsZV9mbGFncz0wLHRoaXMuc2FtcGxlX2R1cmF0aW9uPVtdLHRoaXMuc2FtcGxlX3NpemU9W10sdGhpcy5zYW1wbGVfZmxhZ3M9W10sdGhpcy5zYW1wbGVfY29tcG9zaXRpb25fdGltZV9vZmZzZXQ9W10sdGhpcy5zaXplLXRoaXMuaGRyX3NpemU+ZSlmb3IodmFyIGk9MDtpPHRoaXMuc2FtcGxlX2NvdW50O2krKyl0aGlzLmZsYWdzJnIuVFJVTl9GTEFHU19EVVJBVElPTiYmKHRoaXMuc2FtcGxlX2R1cmF0aW9uW2ldPXQucmVhZFVpbnQzMigpKSx0aGlzLmZsYWdzJnIuVFJVTl9GTEFHU19TSVpFJiYodGhpcy5zYW1wbGVfc2l6ZVtpXT10LnJlYWRVaW50MzIoKSksdGhpcy5mbGFncyZyLlRSVU5fRkxBR1NfRkxBR1MmJih0aGlzLnNhbXBsZV9mbGFnc1tpXT10LnJlYWRVaW50MzIoKSksdGhpcy5mbGFncyZyLlRSVU5fRkxBR1NfQ1RTX09GRlNFVCYmKHRoaXMudmVyc2lvbj09PTA/dGhpcy5zYW1wbGVfY29tcG9zaXRpb25fdGltZV9vZmZzZXRbaV09dC5yZWFkVWludDMyKCk6dGhpcy5zYW1wbGVfY29tcG9zaXRpb25fdGltZV9vZmZzZXRbaV09dC5yZWFkSW50MzIoKSl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ0c2VsIixmdW5jdGlvbih0KXt0aGlzLnN3aXRjaF9ncm91cD10LnJlYWRVaW50MzIoKTt2YXIgZT0odGhpcy5zaXplLXRoaXMuaGRyX3NpemUtNCkvNDt0aGlzLmF0dHJpYnV0ZV9saXN0PVtdO2Zvcih2YXIgaT0wO2k8ZTtpKyspdGhpcy5hdHRyaWJ1dGVfbGlzdFtpXT10LnJlYWRVaW50MzIoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInR4dEMiLGZ1bmN0aW9uKHQpe3RoaXMuY29uZmlnPXQucmVhZENTdHJpbmcoKX0pLHIuY3JlYXRlRnVsbEJveEN0b3IoInVybCAiLGZ1bmN0aW9uKHQpe3RoaXMuZmxhZ3MhPT0xJiYodGhpcy5sb2NhdGlvbj10LnJlYWRDU3RyaW5nKCkpfSksci5jcmVhdGVGdWxsQm94Q3RvcigidXJuICIsZnVuY3Rpb24odCl7dGhpcy5uYW1lPXQucmVhZENTdHJpbmcoKSx0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS10aGlzLm5hbWUubGVuZ3RoLTE+MCYmKHRoaXMubG9jYXRpb249dC5yZWFkQ1N0cmluZygpKX0pLHIuY3JlYXRlVVVJREJveCgiYTVkNDBiMzBlODE0MTFkZGJhMmYwODAwMjAwYzlhNjYiLCEwLCExLGZ1bmN0aW9uKHQpe3RoaXMuTGl2ZVNlcnZlck1hbmlmZXN0PXQucmVhZFN0cmluZyh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSkucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzAzOTsiKX0pLHIuY3JlYXRlVVVJREJveCgiZDA4YTRmMTgxMGYzNGE4MmI2YzgzMmQ4YWJhMTgzZDMiLCEwLCExLGZ1bmN0aW9uKHQpe3RoaXMuc3lzdGVtX2lkPXIucGFyc2VIZXgxNih0KTt2YXIgZT10LnJlYWRVaW50MzIoKTtlPjAmJih0aGlzLmRhdGE9dC5yZWFkVWludDhBcnJheShlKSl9KSxyLmNyZWF0ZVVVSURCb3goImEyMzk0ZjUyNWE5YjRmMTRhMjQ0NmM0MjdjNjQ4ZGY0IiwhMCwhMSksci5jcmVhdGVVVUlEQm94KCI4OTc0ZGJjZTdiZTc0YzUxODRmOTcxNDhmOTg4MjU1NCIsITAsITEsZnVuY3Rpb24odCl7dGhpcy5kZWZhdWx0X0FsZ29yaXRobUlEPXQucmVhZFVpbnQyNCgpLHRoaXMuZGVmYXVsdF9JVl9zaXplPXQucmVhZFVpbnQ4KCksdGhpcy5kZWZhdWx0X0tJRD1yLnBhcnNlSGV4MTYodCl9KSxyLmNyZWF0ZVVVSURCb3goImQ0ODA3ZWYyY2EzOTQ2OTU4ZTU0MjZjYjllNDZhNzlmIiwhMCwhMSxmdW5jdGlvbih0KXt0aGlzLmZyYWdtZW50X2NvdW50PXQucmVhZFVpbnQ4KCksdGhpcy5lbnRyaWVzPVtdO2Zvcih2YXIgZT0wO2U8dGhpcy5mcmFnbWVudF9jb3VudDtlKyspe3ZhciBpPXt9LHM9MCxuPTA7dGhpcy52ZXJzaW9uPT09MT8ocz10LnJlYWRVaW50NjQoKSxuPXQucmVhZFVpbnQ2NCgpKToocz10LnJlYWRVaW50MzIoKSxuPXQucmVhZFVpbnQzMigpKSxpLmFic29sdXRlX3RpbWU9cyxpLmFic29sdXRlX2R1cmF0aW9uPW4sdGhpcy5lbnRyaWVzLnB1c2goaSl9fSksci5jcmVhdGVVVUlEQm94KCI2ZDFkOWIwNTQyZDU0NGU2ODBlMjE0MWRhZmY3NTdiMiIsITAsITEsZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPT09MT8odGhpcy5hYnNvbHV0ZV90aW1lPXQucmVhZFVpbnQ2NCgpLHRoaXMuZHVyYXRpb249dC5yZWFkVWludDY0KCkpOih0aGlzLmFic29sdXRlX3RpbWU9dC5yZWFkVWludDMyKCksdGhpcy5kdXJhdGlvbj10LnJlYWRVaW50MzIoKSl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ2bWhkIixmdW5jdGlvbih0KXt0aGlzLmdyYXBoaWNzbW9kZT10LnJlYWRVaW50MTYoKSx0aGlzLm9wY29sb3I9dC5yZWFkVWludDE2QXJyYXkoMyl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ2cGNDIixmdW5jdGlvbih0KXt2YXIgZTt0aGlzLnZlcnNpb249PT0xPyh0aGlzLnByb2ZpbGU9dC5yZWFkVWludDgoKSx0aGlzLmxldmVsPXQucmVhZFVpbnQ4KCksZT10LnJlYWRVaW50OCgpLHRoaXMuYml0RGVwdGg9ZT4+NCx0aGlzLmNocm9tYVN1YnNhbXBsaW5nPWU+PjEmNyx0aGlzLnZpZGVvRnVsbFJhbmdlRmxhZz1lJjEsdGhpcy5jb2xvdXJQcmltYXJpZXM9dC5yZWFkVWludDgoKSx0aGlzLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzPXQucmVhZFVpbnQ4KCksdGhpcy5tYXRyaXhDb2VmZmljaWVudHM9dC5yZWFkVWludDgoKSx0aGlzLmNvZGVjSW50aWFsaXphdGlvbkRhdGFTaXplPXQucmVhZFVpbnQxNigpLHRoaXMuY29kZWNJbnRpYWxpemF0aW9uRGF0YT10LnJlYWRVaW50OEFycmF5KHRoaXMuY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemUpKToodGhpcy5wcm9maWxlPXQucmVhZFVpbnQ4KCksdGhpcy5sZXZlbD10LnJlYWRVaW50OCgpLGU9dC5yZWFkVWludDgoKSx0aGlzLmJpdERlcHRoPWU+PjQmMTUsdGhpcy5jb2xvclNwYWNlPWUmMTUsZT10LnJlYWRVaW50OCgpLHRoaXMuY2hyb21hU3Vic2FtcGxpbmc9ZT4+NCYxNSx0aGlzLnRyYW5zZmVyRnVuY3Rpb249ZT4+MSY3LHRoaXMudmlkZW9GdWxsUmFuZ2VGbGFnPWUmMSx0aGlzLmNvZGVjSW50aWFsaXphdGlvbkRhdGFTaXplPXQucmVhZFVpbnQxNigpLHRoaXMuY29kZWNJbnRpYWxpemF0aW9uRGF0YT10LnJlYWRVaW50OEFycmF5KHRoaXMuY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemUpKX0pLHIuY3JlYXRlQm94Q3RvcigidnR0QyIsZnVuY3Rpb24odCl7dGhpcy50ZXh0PXQucmVhZFN0cmluZyh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSl9KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ2dmNDIixmdW5jdGlvbih0KXt2YXIgZSxpLHM9e2hlbGRfYml0czp2b2lkIDAsbnVtX2hlbGRfYml0czowLHN0cmVhbV9yZWFkXzFfYnl0ZXM6ZnVuY3Rpb24oUyl7dGhpcy5oZWxkX2JpdHM9Uy5yZWFkVWludDgoKSx0aGlzLm51bV9oZWxkX2JpdHM9OH0sc3RyZWFtX3JlYWRfMl9ieXRlczpmdW5jdGlvbihTKXt0aGlzLmhlbGRfYml0cz1TLnJlYWRVaW50MTYoKSx0aGlzLm51bV9oZWxkX2JpdHM9MTZ9LGV4dHJhY3RfYml0czpmdW5jdGlvbihTKXt2YXIgRj10aGlzLmhlbGRfYml0cz4+dGhpcy5udW1faGVsZF9iaXRzLVMmKDE8PFMpLTE7cmV0dXJuIHRoaXMubnVtX2hlbGRfYml0cy09UyxGfX07aWYocy5zdHJlYW1fcmVhZF8xX2J5dGVzKHQpLHMuZXh0cmFjdF9iaXRzKDUpLHRoaXMubGVuZ3RoU2l6ZU1pbnVzT25lPXMuZXh0cmFjdF9iaXRzKDIpLHRoaXMucHRsX3ByZXNlbnRfZmxhZz1zLmV4dHJhY3RfYml0cygxKSx0aGlzLnB0bF9wcmVzZW50X2ZsYWcpe3Muc3RyZWFtX3JlYWRfMl9ieXRlcyh0KSx0aGlzLm9sc19pZHg9cy5leHRyYWN0X2JpdHMoOSksdGhpcy5udW1fc3VibGF5ZXJzPXMuZXh0cmFjdF9iaXRzKDMpLHRoaXMuY29uc3RhbnRfZnJhbWVfcmF0ZT1zLmV4dHJhY3RfYml0cygyKSx0aGlzLmNocm9tYV9mb3JtYXRfaWRjPXMuZXh0cmFjdF9iaXRzKDIpLHMuc3RyZWFtX3JlYWRfMV9ieXRlcyh0KSx0aGlzLmJpdF9kZXB0aF9taW51czg9cy5leHRyYWN0X2JpdHMoMykscy5leHRyYWN0X2JpdHMoNSk7e2lmKHMuc3RyZWFtX3JlYWRfMl9ieXRlcyh0KSxzLmV4dHJhY3RfYml0cygyKSx0aGlzLm51bV9ieXRlc19jb25zdHJhaW50X2luZm89cy5leHRyYWN0X2JpdHMoNiksdGhpcy5nZW5lcmFsX3Byb2ZpbGVfaWRjPXMuZXh0cmFjdF9iaXRzKDcpLHRoaXMuZ2VuZXJhbF90aWVyX2ZsYWc9cy5leHRyYWN0X2JpdHMoMSksdGhpcy5nZW5lcmFsX2xldmVsX2lkYz10LnJlYWRVaW50OCgpLHMuc3RyZWFtX3JlYWRfMV9ieXRlcyh0KSx0aGlzLnB0bF9mcmFtZV9vbmx5X2NvbnN0cmFpbnRfZmxhZz1zLmV4dHJhY3RfYml0cygxKSx0aGlzLnB0bF9tdWx0aWxheWVyX2VuYWJsZWRfZmxhZz1zLmV4dHJhY3RfYml0cygxKSx0aGlzLmdlbmVyYWxfY29uc3RyYWludF9pbmZvPW5ldyBVaW50OEFycmF5KHRoaXMubnVtX2J5dGVzX2NvbnN0cmFpbnRfaW5mbyksdGhpcy5udW1fYnl0ZXNfY29uc3RyYWludF9pbmZvKXtmb3IoZT0wO2U8dGhpcy5udW1fYnl0ZXNfY29uc3RyYWludF9pbmZvLTE7ZSsrKXt2YXIgbj1zLmV4dHJhY3RfYml0cyg2KTtzLnN0cmVhbV9yZWFkXzFfYnl0ZXModCk7dmFyIGY9cy5leHRyYWN0X2JpdHMoMik7dGhpcy5nZW5lcmFsX2NvbnN0cmFpbnRfaW5mb1tlXT1uPDwyfGZ9dGhpcy5nZW5lcmFsX2NvbnN0cmFpbnRfaW5mb1t0aGlzLm51bV9ieXRlc19jb25zdHJhaW50X2luZm8tMV09cy5leHRyYWN0X2JpdHMoNil9ZWxzZSBzLmV4dHJhY3RfYml0cyg2KTtmb3Iocy5zdHJlYW1fcmVhZF8xX2J5dGVzKHQpLHRoaXMucHRsX3N1YmxheWVyX3ByZXNlbnRfbWFzaz0wLGk9dGhpcy5udW1fc3VibGF5ZXJzLTI7aT49MDstLWkpe3ZhciBkPXMuZXh0cmFjdF9iaXRzKDEpO3RoaXMucHRsX3N1YmxheWVyX3ByZXNlbnRfbWFza3w9ZDw8aX1mb3IoaT10aGlzLm51bV9zdWJsYXllcnM7aTw9OCYmdGhpcy5udW1fc3VibGF5ZXJzPjE7KytpKXMuZXh0cmFjdF9iaXRzKDEpO2ZvcihpPXRoaXMubnVtX3N1YmxheWVycy0yO2k+PTA7LS1pKXRoaXMucHRsX3N1YmxheWVyX3ByZXNlbnRfbWFzayYxPDxpJiYodGhpcy5zdWJsYXllcl9sZXZlbF9pZGNbaV09dC5yZWFkVWludDgoKSk7aWYodGhpcy5wdGxfbnVtX3N1Yl9wcm9maWxlcz10LnJlYWRVaW50OCgpLHRoaXMuZ2VuZXJhbF9zdWJfcHJvZmlsZV9pZGM9W10sdGhpcy5wdGxfbnVtX3N1Yl9wcm9maWxlcylmb3IoZT0wO2U8dGhpcy5wdGxfbnVtX3N1Yl9wcm9maWxlcztlKyspdGhpcy5nZW5lcmFsX3N1Yl9wcm9maWxlX2lkYy5wdXNoKHQucmVhZFVpbnQzMigpKX10aGlzLm1heF9waWN0dXJlX3dpZHRoPXQucmVhZFVpbnQxNigpLHRoaXMubWF4X3BpY3R1cmVfaGVpZ2h0PXQucmVhZFVpbnQxNigpLHRoaXMuYXZnX2ZyYW1lX3JhdGU9dC5yZWFkVWludDE2KCl9dmFyIGM9MTIsbT0xMzt0aGlzLm5hbHVfYXJyYXlzPVtdO3ZhciB4PXQucmVhZFVpbnQ4KCk7Zm9yKGU9MDtlPHg7ZSsrKXt2YXIgVT1bXTt0aGlzLm5hbHVfYXJyYXlzLnB1c2goVSkscy5zdHJlYW1fcmVhZF8xX2J5dGVzKHQpLFUuY29tcGxldGVuZXNzPXMuZXh0cmFjdF9iaXRzKDEpLHMuZXh0cmFjdF9iaXRzKDIpLFUubmFsdV90eXBlPXMuZXh0cmFjdF9iaXRzKDUpO3ZhciBiPTE7Zm9yKFUubmFsdV90eXBlIT1tJiZVLm5hbHVfdHlwZSE9YyYmKGI9dC5yZWFkVWludDE2KCkpLGk9MDtpPGI7aSsrKXt2YXIgdz10LnJlYWRVaW50MTYoKTtVLnB1c2goe2RhdGE6dC5yZWFkVWludDhBcnJheSh3KSxsZW5ndGg6d30pfX19KSxyLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ2dm5DIixmdW5jdGlvbih0KXt2YXIgZT1zdHJtLnJlYWRVaW50OCgpO3RoaXMubGVuZ3RoU2l6ZU1pbnVzT25lPWUmM30pLHIuU2FtcGxlRW50cnkucHJvdG90eXBlLmlzVmlkZW89ZnVuY3Rpb24oKXtyZXR1cm4hMX0sci5TYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNBdWRpbz1mdW5jdGlvbigpe3JldHVybiExfSxyLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5pc1N1YnRpdGxlPWZ1bmN0aW9uKCl7cmV0dXJuITF9LHIuU2FtcGxlRW50cnkucHJvdG90eXBlLmlzTWV0YWRhdGE9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sci5TYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNIaW50PWZ1bmN0aW9uKCl7cmV0dXJuITF9LHIuU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHlwZS5yZXBsYWNlKCIuIiwiIil9LHIuU2FtcGxlRW50cnkucHJvdG90eXBlLmdldFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LHIuU2FtcGxlRW50cnkucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiIifSxyLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDaGFubmVsQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sci5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0U2FtcGxlUmF0ZT1mdW5jdGlvbigpe3JldHVybiIifSxyLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRTYW1wbGVTaXplPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LHIuVmlzdWFsU2FtcGxlRW50cnkucHJvdG90eXBlLmlzVmlkZW89ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5WaXN1YWxTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53aWR0aH0sci5WaXN1YWxTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGVpZ2h0fSxyLkF1ZGlvU2FtcGxlRW50cnkucHJvdG90eXBlLmlzQXVkaW89ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5BdWRpb1NhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDaGFubmVsQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGFubmVsX2NvdW50fSxyLkF1ZGlvU2FtcGxlRW50cnkucHJvdG90eXBlLmdldFNhbXBsZVJhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zYW1wbGVyYXRlfSxyLkF1ZGlvU2FtcGxlRW50cnkucHJvdG90eXBlLmdldFNhbXBsZVNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zYW1wbGVzaXplfSxyLlN1YnRpdGxlU2FtcGxlRW50cnkucHJvdG90eXBlLmlzU3VidGl0bGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5NZXRhZGF0YVNhbXBsZUVudHJ5LnByb3RvdHlwZS5pc01ldGFkYXRhPWZ1bmN0aW9uKCl7cmV0dXJuITB9LHIuZGVjaW1hbFRvSGV4PWZ1bmN0aW9uKHQsZSl7dmFyIGk9TnVtYmVyKHQpLnRvU3RyaW5nKDE2KTtmb3IoZT10eXBlb2YgZT4idSJ8fGU9PT1udWxsP2U9MjplO2kubGVuZ3RoPGU7KWk9IjAiK2k7cmV0dXJuIGl9LHIuYXZjMVNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1yLmF2YzJTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ci5hdmMzU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPXIuYXZjNFNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1mdW5jdGlvbigpe3ZhciB0PXIuU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjLmNhbGwodGhpcyk7cmV0dXJuIHRoaXMuYXZjQz90KyIuIityLmRlY2ltYWxUb0hleCh0aGlzLmF2Y0MuQVZDUHJvZmlsZUluZGljYXRpb24pK3IuZGVjaW1hbFRvSGV4KHRoaXMuYXZjQy5wcm9maWxlX2NvbXBhdGliaWxpdHkpK3IuZGVjaW1hbFRvSGV4KHRoaXMuYXZjQy5BVkNMZXZlbEluZGljYXRpb24pOnR9LHIuaGV2MVNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1yLmh2YzFTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ZnVuY3Rpb24oKXt2YXIgdCxlPXIuU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjLmNhbGwodGhpcyk7aWYodGhpcy5odmNDKXtzd2l0Y2goZSs9Ii4iLHRoaXMuaHZjQy5nZW5lcmFsX3Byb2ZpbGVfc3BhY2Upe2Nhc2UgMDplKz0iIjticmVhaztjYXNlIDE6ZSs9IkEiO2JyZWFrO2Nhc2UgMjplKz0iQiI7YnJlYWs7Y2FzZSAzOmUrPSJDIjticmVha31lKz10aGlzLmh2Y0MuZ2VuZXJhbF9wcm9maWxlX2lkYyxlKz0iLiI7dmFyIGk9dGhpcy5odmNDLmdlbmVyYWxfcHJvZmlsZV9jb21wYXRpYmlsaXR5LHM9MDtmb3IodD0wO3Q8MzImJihzfD1pJjEsdCE9MzEpO3QrKylzPDw9MSxpPj49MTtlKz1yLmRlY2ltYWxUb0hleChzLDApLGUrPSIuIix0aGlzLmh2Y0MuZ2VuZXJhbF90aWVyX2ZsYWc9PT0wP2UrPSJMIjplKz0iSCIsZSs9dGhpcy5odmNDLmdlbmVyYWxfbGV2ZWxfaWRjO3ZhciBuPSExLGY9IiI7Zm9yKHQ9NTt0Pj0wO3QtLSkodGhpcy5odmNDLmdlbmVyYWxfY29uc3RyYWludF9pbmRpY2F0b3JbdF18fG4pJiYoZj0iLiIrci5kZWNpbWFsVG9IZXgodGhpcy5odmNDLmdlbmVyYWxfY29uc3RyYWludF9pbmRpY2F0b3JbdF0sMCkrZixuPSEwKTtlKz1mfXJldHVybiBlfSxyLnZ2YzFTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ci52dmkxU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPWZ1bmN0aW9uKCl7dmFyIHQsZT1yLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYy5jYWxsKHRoaXMpO2lmKHRoaXMudnZjQyl7ZSs9Ii4iK3RoaXMudnZjQy5nZW5lcmFsX3Byb2ZpbGVfaWRjLHRoaXMudnZjQy5nZW5lcmFsX3RpZXJfZmxhZz9lKz0iLkgiOmUrPSIuTCIsZSs9dGhpcy52dmNDLmdlbmVyYWxfbGV2ZWxfaWRjO3ZhciBpPSIiO2lmKHRoaXMudnZjQy5nZW5lcmFsX2NvbnN0cmFpbnRfaW5mbyl7dmFyIHM9W10sbj0wO258PXRoaXMudnZjQy5wdGxfZnJhbWVfb25seV9jb25zdHJhaW50PDw3LG58PXRoaXMudnZjQy5wdGxfbXVsdGlsYXllcl9lbmFibGVkPDw2O3ZhciBmO2Zvcih0PTA7dDx0aGlzLnZ2Y0MuZ2VuZXJhbF9jb25zdHJhaW50X2luZm8ubGVuZ3RoOysrdClufD10aGlzLnZ2Y0MuZ2VuZXJhbF9jb25zdHJhaW50X2luZm9bdF0+PjImNjMscy5wdXNoKG4pLG4mJihmPXQpLG49dGhpcy52dmNDLmdlbmVyYWxfY29uc3RyYWludF9pbmZvW3RdPj4yJjM7aWYoZj09PXZvaWQgMClpPSIuQ0EiO2Vsc2V7aT0iLkMiO3ZhciBkPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjIzNDU2NyIsYz0wLG09MDtmb3IodD0wO3Q8PWY7Kyt0KWZvcihjPWM8PDh8c1t0XSxtKz04O20+PTU7KXt2YXIgeD1jPj5tLTUmMzE7aSs9ZFt4XSxtLT01LGMmPSgxPDxtKS0xfW0mJihjPDw9NS1tLGkrPWRbYyYzMV0pfX1lKz1pfXJldHVybiBlfSxyLm1wNGFTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ZnVuY3Rpb24oKXt2YXIgdD1yLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYy5jYWxsKHRoaXMpO2lmKHRoaXMuZXNkcyYmdGhpcy5lc2RzLmVzZCl7dmFyIGU9dGhpcy5lc2RzLmVzZC5nZXRPVEkoKSxpPXRoaXMuZXNkcy5lc2QuZ2V0QXVkaW9Db25maWcoKTtyZXR1cm4gdCsiLiIrci5kZWNpbWFsVG9IZXgoZSkrKGk/Ii4iK2k6IiIpfWVsc2UgcmV0dXJuIHR9LHIuc3R4dFNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1mdW5jdGlvbigpe3ZhciB0PXIuU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjLmNhbGwodGhpcyk7cmV0dXJuIHRoaXMubWltZV9mb3JtYXQ/dCsiLiIrdGhpcy5taW1lX2Zvcm1hdDp0fSxyLnZwMDhTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ci52cDA5U2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPWZ1bmN0aW9uKCl7dmFyIHQ9ci5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWMuY2FsbCh0aGlzKSxlPXRoaXMudnBjQy5sZXZlbDtlPT0wJiYoZT0iMDAiKTt2YXIgaT10aGlzLnZwY0MuYml0RGVwdGg7cmV0dXJuIGk9PTgmJihpPSIwOCIpLHQrIi4wIit0aGlzLnZwY0MucHJvZmlsZSsiLiIrZSsiLiIraX0sci5hdjAxU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPWZ1bmN0aW9uKCl7dmFyIHQ9ci5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWMuY2FsbCh0aGlzKSxlPXRoaXMuYXYxQy5zZXFfbGV2ZWxfaWR4XzA7ZTwxMCYmKGU9IjAiK2UpO3ZhciBpO3JldHVybiB0aGlzLmF2MUMuc2VxX3Byb2ZpbGU9PT0yJiZ0aGlzLmF2MUMuaGlnaF9iaXRkZXB0aD09PTE/aT10aGlzLmF2MUMudHdlbHZlX2JpdD09PTE/IjEyIjoiMTAiOnRoaXMuYXYxQy5zZXFfcHJvZmlsZTw9MiYmKGk9dGhpcy5hdjFDLmhpZ2hfYml0ZGVwdGg9PT0xPyIxMCI6IjA4IiksdCsiLiIrdGhpcy5hdjFDLnNlcV9wcm9maWxlKyIuIitlKyh0aGlzLmF2MUMuc2VxX3RpZXJfMD8iSCI6Ik0iKSsiLiIraX0sci5Cb3gucHJvdG90eXBlLndyaXRlSGVhZGVyPWZ1bmN0aW9uKHQsZSl7dGhpcy5zaXplKz04LHRoaXMuc2l6ZT5wJiYodGhpcy5zaXplKz04KSx0aGlzLnR5cGU9PT0idXVpZCImJih0aGlzLnNpemUrPTE2KSxoLmRlYnVnKCJCb3hXcml0ZXIiLCJXcml0aW5nIGJveCAiK3RoaXMudHlwZSsiIG9mIHNpemU6ICIrdGhpcy5zaXplKyIgYXQgcG9zaXRpb24gIit0LmdldFBvc2l0aW9uKCkrKGV8fCIiKSksdGhpcy5zaXplPnA/dC53cml0ZVVpbnQzMigxKToodGhpcy5zaXplUG9zaXRpb249dC5nZXRQb3NpdGlvbigpLHQud3JpdGVVaW50MzIodGhpcy5zaXplKSksdC53cml0ZVN0cmluZyh0aGlzLnR5cGUsbnVsbCw0KSx0aGlzLnR5cGU9PT0idXVpZCImJnQud3JpdGVVaW50OEFycmF5KHRoaXMudXVpZCksdGhpcy5zaXplPnAmJnQud3JpdGVVaW50NjQodGhpcy5zaXplKX0sci5GdWxsQm94LnByb3RvdHlwZS53cml0ZUhlYWRlcj1mdW5jdGlvbih0KXt0aGlzLnNpemUrPTQsci5Cb3gucHJvdG90eXBlLndyaXRlSGVhZGVyLmNhbGwodGhpcyx0LCIgdj0iK3RoaXMudmVyc2lvbisiIGY9Iit0aGlzLmZsYWdzKSx0LndyaXRlVWludDgodGhpcy52ZXJzaW9uKSx0LndyaXRlVWludDI0KHRoaXMuZmxhZ3MpfSxyLkJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy50eXBlPT09Im1kYXQiP3RoaXMuZGF0YSYmKHRoaXMuc2l6ZT10aGlzLmRhdGEubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQ4QXJyYXkodGhpcy5kYXRhKSk6KHRoaXMuc2l6ZT10aGlzLmRhdGE/dGhpcy5kYXRhLmxlbmd0aDowLHRoaXMud3JpdGVIZWFkZXIodCksdGhpcy5kYXRhJiZ0LndyaXRlVWludDhBcnJheSh0aGlzLmRhdGEpKX0sci5Db250YWluZXJCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3RoaXMuc2l6ZT0wLHRoaXMud3JpdGVIZWFkZXIodCk7Zm9yKHZhciBlPTA7ZTx0aGlzLmJveGVzLmxlbmd0aDtlKyspdGhpcy5ib3hlc1tlXSYmKHRoaXMuYm94ZXNbZV0ud3JpdGUodCksdGhpcy5zaXplKz10aGlzLmJveGVzW2VdLnNpemUpO2guZGVidWcoIkJveFdyaXRlciIsIkFkanVzdGluZyBib3ggIit0aGlzLnR5cGUrIiB3aXRoIG5ldyBzaXplICIrdGhpcy5zaXplKSx0LmFkanVzdFVpbnQzMih0aGlzLnNpemVQb3NpdGlvbix0aGlzLnNpemUpfSxyLlRyYWNrUmVmZXJlbmNlVHlwZUJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy5zaXplPXRoaXMudHJhY2tfaWRzLmxlbmd0aCo0LHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQzMkFycmF5KHRoaXMudHJhY2tfaWRzKX0sci5hdmNDQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt2YXIgZTtmb3IodGhpcy5zaXplPTcsZT0wO2U8dGhpcy5TUFMubGVuZ3RoO2UrKyl0aGlzLnNpemUrPTIrdGhpcy5TUFNbZV0ubGVuZ3RoO2ZvcihlPTA7ZTx0aGlzLlBQUy5sZW5ndGg7ZSsrKXRoaXMuc2l6ZSs9Mit0aGlzLlBQU1tlXS5sZW5ndGg7Zm9yKHRoaXMuZXh0JiYodGhpcy5zaXplKz10aGlzLmV4dC5sZW5ndGgpLHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQ4KHRoaXMuY29uZmlndXJhdGlvblZlcnNpb24pLHQud3JpdGVVaW50OCh0aGlzLkFWQ1Byb2ZpbGVJbmRpY2F0aW9uKSx0LndyaXRlVWludDgodGhpcy5wcm9maWxlX2NvbXBhdGliaWxpdHkpLHQud3JpdGVVaW50OCh0aGlzLkFWQ0xldmVsSW5kaWNhdGlvbiksdC53cml0ZVVpbnQ4KHRoaXMubGVuZ3RoU2l6ZU1pbnVzT25lKzI1MiksdC53cml0ZVVpbnQ4KHRoaXMuU1BTLmxlbmd0aCsyMjQpLGU9MDtlPHRoaXMuU1BTLmxlbmd0aDtlKyspdC53cml0ZVVpbnQxNih0aGlzLlNQU1tlXS5sZW5ndGgpLHQud3JpdGVVaW50OEFycmF5KHRoaXMuU1BTW2VdLm5hbHUpO2Zvcih0LndyaXRlVWludDgodGhpcy5QUFMubGVuZ3RoKSxlPTA7ZTx0aGlzLlBQUy5sZW5ndGg7ZSsrKXQud3JpdGVVaW50MTYodGhpcy5QUFNbZV0ubGVuZ3RoKSx0LndyaXRlVWludDhBcnJheSh0aGlzLlBQU1tlXS5uYWx1KTt0aGlzLmV4dCYmdC53cml0ZVVpbnQ4QXJyYXkodGhpcy5leHQpfSxyLmNvNjRCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3ZhciBlO2Zvcih0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQrOCp0aGlzLmNodW5rX29mZnNldHMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQzMih0aGlzLmNodW5rX29mZnNldHMubGVuZ3RoKSxlPTA7ZTx0aGlzLmNodW5rX29mZnNldHMubGVuZ3RoO2UrKyl0LndyaXRlVWludDY0KHRoaXMuY2h1bmtfb2Zmc2V0c1tlXSl9LHIuY3NsZ0JveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT00KjUsdGhpcy53cml0ZUhlYWRlcih0KSx0LndyaXRlSW50MzIodGhpcy5jb21wb3NpdGlvblRvRFRTU2hpZnQpLHQud3JpdGVJbnQzMih0aGlzLmxlYXN0RGVjb2RlVG9EaXNwbGF5RGVsdGEpLHQud3JpdGVJbnQzMih0aGlzLmdyZWF0ZXN0RGVjb2RlVG9EaXNwbGF5RGVsdGEpLHQud3JpdGVJbnQzMih0aGlzLmNvbXBvc2l0aW9uU3RhcnRUaW1lKSx0LndyaXRlSW50MzIodGhpcy5jb21wb3NpdGlvbkVuZFRpbWUpfSxyLmN0dHNCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3ZhciBlO2Zvcih0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQrOCp0aGlzLnNhbXBsZV9jb3VudHMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9jb3VudHMubGVuZ3RoKSxlPTA7ZTx0aGlzLnNhbXBsZV9jb3VudHMubGVuZ3RoO2UrKyl0LndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2NvdW50c1tlXSksdGhpcy52ZXJzaW9uPT09MT90LndyaXRlSW50MzIodGhpcy5zYW1wbGVfb2Zmc2V0c1tlXSk6dC53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9vZmZzZXRzW2VdKX0sci5kcmVmQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQsdGhpcy53cml0ZUhlYWRlcih0KSx0LndyaXRlVWludDMyKHRoaXMuZW50cmllcy5sZW5ndGgpO2Zvcih2YXIgZT0wO2U8dGhpcy5lbnRyaWVzLmxlbmd0aDtlKyspdGhpcy5lbnRyaWVzW2VdLndyaXRlKHQpLHRoaXMuc2l6ZSs9dGhpcy5lbnRyaWVzW2VdLnNpemU7aC5kZWJ1ZygiQm94V3JpdGVyIiwiQWRqdXN0aW5nIGJveCAiK3RoaXMudHlwZSsiIHdpdGggbmV3IHNpemUgIit0aGlzLnNpemUpLHQuYWRqdXN0VWludDMyKHRoaXMuc2l6ZVBvc2l0aW9uLHRoaXMuc2l6ZSl9LHIuZWxuZ0JveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT10aGlzLmV4dGVuZGVkX2xhbmd1YWdlLmxlbmd0aCx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVTdHJpbmcodGhpcy5leHRlbmRlZF9sYW5ndWFnZSl9LHIuZWxzdEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT00KzEyKnRoaXMuZW50cmllcy5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcih0KSx0LndyaXRlVWludDMyKHRoaXMuZW50cmllcy5sZW5ndGgpO2Zvcih2YXIgZT0wO2U8dGhpcy5lbnRyaWVzLmxlbmd0aDtlKyspe3ZhciBpPXRoaXMuZW50cmllc1tlXTt0LndyaXRlVWludDMyKGkuc2VnbWVudF9kdXJhdGlvbiksdC53cml0ZUludDMyKGkubWVkaWFfdGltZSksdC53cml0ZUludDE2KGkubWVkaWFfcmF0ZV9pbnRlZ2VyKSx0LndyaXRlSW50MTYoaS5tZWRpYV9yYXRlX2ZyYWN0aW9uKX19LHIuZW1zZ0JveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT00KjQrdGhpcy5tZXNzYWdlX2RhdGEubGVuZ3RoKyh0aGlzLnNjaGVtZV9pZF91cmkubGVuZ3RoKzEpKyh0aGlzLnZhbHVlLmxlbmd0aCsxKSx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVDU3RyaW5nKHRoaXMuc2NoZW1lX2lkX3VyaSksdC53cml0ZUNTdHJpbmcodGhpcy52YWx1ZSksdC53cml0ZVVpbnQzMih0aGlzLnRpbWVzY2FsZSksdC53cml0ZVVpbnQzMih0aGlzLnByZXNlbnRhdGlvbl90aW1lX2RlbHRhKSx0LndyaXRlVWludDMyKHRoaXMuZXZlbnRfZHVyYXRpb24pLHQud3JpdGVVaW50MzIodGhpcy5pZCksdC53cml0ZVVpbnQ4QXJyYXkodGhpcy5tZXNzYWdlX2RhdGEpfSxyLmZ0eXBCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3RoaXMuc2l6ZT04KzQqdGhpcy5jb21wYXRpYmxlX2JyYW5kcy5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcih0KSx0LndyaXRlU3RyaW5nKHRoaXMubWFqb3JfYnJhbmQsbnVsbCw0KSx0LndyaXRlVWludDMyKHRoaXMubWlub3JfdmVyc2lvbik7Zm9yKHZhciBlPTA7ZTx0aGlzLmNvbXBhdGlibGVfYnJhbmRzLmxlbmd0aDtlKyspdC53cml0ZVN0cmluZyh0aGlzLmNvbXBhdGlibGVfYnJhbmRzW2VdLG51bGwsNCl9LHIuaGRsckJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy5zaXplPTUqNCt0aGlzLm5hbWUubGVuZ3RoKzEsdGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQzMigwKSx0LndyaXRlU3RyaW5nKHRoaXMuaGFuZGxlcixudWxsLDQpLHQud3JpdGVVaW50MzIoMCksdC53cml0ZVVpbnQzMigwKSx0LndyaXRlVWludDMyKDApLHQud3JpdGVDU3RyaW5nKHRoaXMubmFtZSl9LHIua2luZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT10aGlzLnNjaGVtZVVSSS5sZW5ndGgrMSsodGhpcy52YWx1ZS5sZW5ndGgrMSksdGhpcy53cml0ZUhlYWRlcih0KSx0LndyaXRlQ1N0cmluZyh0aGlzLnNjaGVtZVVSSSksdC53cml0ZUNTdHJpbmcodGhpcy52YWx1ZSl9LHIubWRoZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy5zaXplPTQqNCsyKjIsdGhpcy5mbGFncz0wLHRoaXMudmVyc2lvbj0wLHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQzMih0aGlzLmNyZWF0aW9uX3RpbWUpLHQud3JpdGVVaW50MzIodGhpcy5tb2RpZmljYXRpb25fdGltZSksdC53cml0ZVVpbnQzMih0aGlzLnRpbWVzY2FsZSksdC53cml0ZVVpbnQzMih0aGlzLmR1cmF0aW9uKSx0LndyaXRlVWludDE2KHRoaXMubGFuZ3VhZ2UpLHQud3JpdGVVaW50MTYoMCl9LHIubWVoZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT00LHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQzMih0aGlzLmZyYWdtZW50X2R1cmF0aW9uKX0sci5tZmhkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQsdGhpcy53cml0ZUhlYWRlcih0KSx0LndyaXRlVWludDMyKHRoaXMuc2VxdWVuY2VfbnVtYmVyKX0sci5tdmhkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTIzKjQrMioyLHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQzMih0aGlzLmNyZWF0aW9uX3RpbWUpLHQud3JpdGVVaW50MzIodGhpcy5tb2RpZmljYXRpb25fdGltZSksdC53cml0ZVVpbnQzMih0aGlzLnRpbWVzY2FsZSksdC53cml0ZVVpbnQzMih0aGlzLmR1cmF0aW9uKSx0LndyaXRlVWludDMyKHRoaXMucmF0ZSksdC53cml0ZVVpbnQxNih0aGlzLnZvbHVtZTw8OCksdC53cml0ZVVpbnQxNigwKSx0LndyaXRlVWludDMyKDApLHQud3JpdGVVaW50MzIoMCksdC53cml0ZVVpbnQzMkFycmF5KHRoaXMubWF0cml4KSx0LndyaXRlVWludDMyKDApLHQud3JpdGVVaW50MzIoMCksdC53cml0ZVVpbnQzMigwKSx0LndyaXRlVWludDMyKDApLHQud3JpdGVVaW50MzIoMCksdC53cml0ZVVpbnQzMigwKSx0LndyaXRlVWludDMyKHRoaXMubmV4dF90cmFja19pZCl9LHIuU2FtcGxlRW50cnkucHJvdG90eXBlLndyaXRlSGVhZGVyPWZ1bmN0aW9uKHQpe3RoaXMuc2l6ZT04LHIuQm94LnByb3RvdHlwZS53cml0ZUhlYWRlci5jYWxsKHRoaXMsdCksdC53cml0ZVVpbnQ4KDApLHQud3JpdGVVaW50OCgwKSx0LndyaXRlVWludDgoMCksdC53cml0ZVVpbnQ4KDApLHQud3JpdGVVaW50OCgwKSx0LndyaXRlVWludDgoMCksdC53cml0ZVVpbnQxNih0aGlzLmRhdGFfcmVmZXJlbmNlX2luZGV4KX0sci5TYW1wbGVFbnRyeS5wcm90b3R5cGUud3JpdGVGb290ZXI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmJveGVzLmxlbmd0aDtlKyspdGhpcy5ib3hlc1tlXS53cml0ZSh0KSx0aGlzLnNpemUrPXRoaXMuYm94ZXNbZV0uc2l6ZTtoLmRlYnVnKCJCb3hXcml0ZXIiLCJBZGp1c3RpbmcgYm94ICIrdGhpcy50eXBlKyIgd2l0aCBuZXcgc2l6ZSAiK3RoaXMuc2l6ZSksdC5hZGp1c3RVaW50MzIodGhpcy5zaXplUG9zaXRpb24sdGhpcy5zaXplKX0sci5TYW1wbGVFbnRyeS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy53cml0ZUhlYWRlcih0KSx0LndyaXRlVWludDhBcnJheSh0aGlzLmRhdGEpLHRoaXMuc2l6ZSs9dGhpcy5kYXRhLmxlbmd0aCxoLmRlYnVnKCJCb3hXcml0ZXIiLCJBZGp1c3RpbmcgYm94ICIrdGhpcy50eXBlKyIgd2l0aCBuZXcgc2l6ZSAiK3RoaXMuc2l6ZSksdC5hZGp1c3RVaW50MzIodGhpcy5zaXplUG9zaXRpb24sdGhpcy5zaXplKX0sci5WaXN1YWxTYW1wbGVFbnRyeS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy53cml0ZUhlYWRlcih0KSx0aGlzLnNpemUrPTIqNys2KjQrMzIsdC53cml0ZVVpbnQxNigwKSx0LndyaXRlVWludDE2KDApLHQud3JpdGVVaW50MzIoMCksdC53cml0ZVVpbnQzMigwKSx0LndyaXRlVWludDMyKDApLHQud3JpdGVVaW50MTYodGhpcy53aWR0aCksdC53cml0ZVVpbnQxNih0aGlzLmhlaWdodCksdC53cml0ZVVpbnQzMih0aGlzLmhvcml6cmVzb2x1dGlvbiksdC53cml0ZVVpbnQzMih0aGlzLnZlcnRyZXNvbHV0aW9uKSx0LndyaXRlVWludDMyKDApLHQud3JpdGVVaW50MTYodGhpcy5mcmFtZV9jb3VudCksdC53cml0ZVVpbnQ4KE1hdGgubWluKDMxLHRoaXMuY29tcHJlc3Nvcm5hbWUubGVuZ3RoKSksdC53cml0ZVN0cmluZyh0aGlzLmNvbXByZXNzb3JuYW1lLG51bGwsMzEpLHQud3JpdGVVaW50MTYodGhpcy5kZXB0aCksdC53cml0ZUludDE2KC0xKSx0aGlzLndyaXRlRm9vdGVyKHQpfSxyLkF1ZGlvU2FtcGxlRW50cnkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3RoaXMud3JpdGVIZWFkZXIodCksdGhpcy5zaXplKz0yKjQrMyo0LHQud3JpdGVVaW50MzIoMCksdC53cml0ZVVpbnQzMigwKSx0LndyaXRlVWludDE2KHRoaXMuY2hhbm5lbF9jb3VudCksdC53cml0ZVVpbnQxNih0aGlzLnNhbXBsZXNpemUpLHQud3JpdGVVaW50MTYoMCksdC53cml0ZVVpbnQxNigwKSx0LndyaXRlVWludDMyKHRoaXMuc2FtcGxlcmF0ZTw8MTYpLHRoaXMud3JpdGVGb290ZXIodCl9LHIuc3RwcFNhbXBsZUVudHJ5LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt0aGlzLndyaXRlSGVhZGVyKHQpLHRoaXMuc2l6ZSs9dGhpcy5uYW1lc3BhY2UubGVuZ3RoKzErdGhpcy5zY2hlbWFfbG9jYXRpb24ubGVuZ3RoKzErdGhpcy5hdXhpbGlhcnlfbWltZV90eXBlcy5sZW5ndGgrMSx0LndyaXRlQ1N0cmluZyh0aGlzLm5hbWVzcGFjZSksdC53cml0ZUNTdHJpbmcodGhpcy5zY2hlbWFfbG9jYXRpb24pLHQud3JpdGVDU3RyaW5nKHRoaXMuYXV4aWxpYXJ5X21pbWVfdHlwZXMpLHRoaXMud3JpdGVGb290ZXIodCl9LHIuU2FtcGxlR3JvdXBFbnRyeS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dC53cml0ZVVpbnQ4QXJyYXkodGhpcy5kYXRhKX0sci5zYmdwQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt0aGlzLnZlcnNpb249MSx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTEyKzgqdGhpcy5lbnRyaWVzLmxlbmd0aCx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVTdHJpbmcodGhpcy5ncm91cGluZ190eXBlLG51bGwsNCksdC53cml0ZVVpbnQzMih0aGlzLmdyb3VwaW5nX3R5cGVfcGFyYW1ldGVyKSx0LndyaXRlVWludDMyKHRoaXMuZW50cmllcy5sZW5ndGgpO2Zvcih2YXIgZT0wO2U8dGhpcy5lbnRyaWVzLmxlbmd0aDtlKyspe3ZhciBpPXRoaXMuZW50cmllc1tlXTt0LndyaXRlSW50MzIoaS5zYW1wbGVfY291bnQpLHQud3JpdGVJbnQzMihpLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4KX19LHIuc2dwZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dmFyIGUsaTtmb3IodGhpcy5mbGFncz0wLHRoaXMuc2l6ZT0xMixlPTA7ZTx0aGlzLmVudHJpZXMubGVuZ3RoO2UrKylpPXRoaXMuZW50cmllc1tlXSx0aGlzLnZlcnNpb249PT0xJiYodGhpcy5kZWZhdWx0X2xlbmd0aD09PTAmJih0aGlzLnNpemUrPTQpLHRoaXMuc2l6ZSs9aS5kYXRhLmxlbmd0aCk7Zm9yKHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVN0cmluZyh0aGlzLmdyb3VwaW5nX3R5cGUsbnVsbCw0KSx0aGlzLnZlcnNpb249PT0xJiZ0LndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9sZW5ndGgpLHRoaXMudmVyc2lvbj49MiYmdC53cml0ZVVpbnQzMih0aGlzLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4KSx0LndyaXRlVWludDMyKHRoaXMuZW50cmllcy5sZW5ndGgpLGU9MDtlPHRoaXMuZW50cmllcy5sZW5ndGg7ZSsrKWk9dGhpcy5lbnRyaWVzW2VdLHRoaXMudmVyc2lvbj09PTEmJnRoaXMuZGVmYXVsdF9sZW5ndGg9PT0wJiZ0LndyaXRlVWludDMyKGkuZGVzY3JpcHRpb25fbGVuZ3RoKSxpLndyaXRlKHQpfSxyLnNpZHhCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCo0KzIrMisxMip0aGlzLnJlZmVyZW5jZXMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQzMih0aGlzLnJlZmVyZW5jZV9JRCksdC53cml0ZVVpbnQzMih0aGlzLnRpbWVzY2FsZSksdC53cml0ZVVpbnQzMih0aGlzLmVhcmxpZXN0X3ByZXNlbnRhdGlvbl90aW1lKSx0LndyaXRlVWludDMyKHRoaXMuZmlyc3Rfb2Zmc2V0KSx0LndyaXRlVWludDE2KDApLHQud3JpdGVVaW50MTYodGhpcy5yZWZlcmVuY2VzLmxlbmd0aCk7Zm9yKHZhciBlPTA7ZTx0aGlzLnJlZmVyZW5jZXMubGVuZ3RoO2UrKyl7dmFyIGk9dGhpcy5yZWZlcmVuY2VzW2VdO3Qud3JpdGVVaW50MzIoaS5yZWZlcmVuY2VfdHlwZTw8MzF8aS5yZWZlcmVuY2VkX3NpemUpLHQud3JpdGVVaW50MzIoaS5zdWJzZWdtZW50X2R1cmF0aW9uKSx0LndyaXRlVWludDMyKGkuc3RhcnRzX3dpdGhfU0FQPDwzMXxpLlNBUF90eXBlPDwyOHxpLlNBUF9kZWx0YV90aW1lKX19LHIuc21oZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0xLHRoaXMuc2l6ZT00LHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQxNih0aGlzLmJhbGFuY2UpLHQud3JpdGVVaW50MTYoMCl9LHIuc3Rjb0JveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT00KzQqdGhpcy5jaHVua19vZmZzZXRzLmxlbmd0aCx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVVaW50MzIodGhpcy5jaHVua19vZmZzZXRzLmxlbmd0aCksdC53cml0ZVVpbnQzMkFycmF5KHRoaXMuY2h1bmtfb2Zmc2V0cyl9LHIuc3RzY0JveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCsxMip0aGlzLmZpcnN0X2NodW5rLmxlbmd0aCx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVVaW50MzIodGhpcy5maXJzdF9jaHVuay5sZW5ndGgpLGU9MDtlPHRoaXMuZmlyc3RfY2h1bmsubGVuZ3RoO2UrKyl0LndyaXRlVWludDMyKHRoaXMuZmlyc3RfY2h1bmtbZV0pLHQud3JpdGVVaW50MzIodGhpcy5zYW1wbGVzX3Blcl9jaHVua1tlXSksdC53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleFtlXSl9LHIuc3RzZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9MCx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVVaW50MzIodGhpcy5lbnRyaWVzLmxlbmd0aCksdGhpcy5zaXplKz00LGU9MDtlPHRoaXMuZW50cmllcy5sZW5ndGg7ZSsrKXRoaXMuZW50cmllc1tlXS53cml0ZSh0KSx0aGlzLnNpemUrPXRoaXMuZW50cmllc1tlXS5zaXplO2guZGVidWcoIkJveFdyaXRlciIsIkFkanVzdGluZyBib3ggIit0aGlzLnR5cGUrIiB3aXRoIG5ldyBzaXplICIrdGhpcy5zaXplKSx0LmFkanVzdFVpbnQzMih0aGlzLnNpemVQb3NpdGlvbix0aGlzLnNpemUpfSxyLnN0c2hCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3ZhciBlO2Zvcih0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQrOCp0aGlzLnNoYWRvd2VkX3NhbXBsZV9udW1iZXJzLmxlbmd0aCx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVVaW50MzIodGhpcy5zaGFkb3dlZF9zYW1wbGVfbnVtYmVycy5sZW5ndGgpLGU9MDtlPHRoaXMuc2hhZG93ZWRfc2FtcGxlX251bWJlcnMubGVuZ3RoO2UrKyl0LndyaXRlVWludDMyKHRoaXMuc2hhZG93ZWRfc2FtcGxlX251bWJlcnNbZV0pLHQud3JpdGVVaW50MzIodGhpcy5zeW5jX3NhbXBsZV9udW1iZXJzW2VdKX0sci5zdHNzQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQrNCp0aGlzLnNhbXBsZV9udW1iZXJzLmxlbmd0aCx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVVaW50MzIodGhpcy5zYW1wbGVfbnVtYmVycy5sZW5ndGgpLHQud3JpdGVVaW50MzJBcnJheSh0aGlzLnNhbXBsZV9udW1iZXJzKX0sci5zdHN6Qm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt2YXIgZSxpPSEwO2lmKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNhbXBsZV9zaXplcy5sZW5ndGg+MClmb3IoZT0wO2UrMTx0aGlzLnNhbXBsZV9zaXplcy5sZW5ndGg7KWlmKHRoaXMuc2FtcGxlX3NpemVzW2UrMV0hPT10aGlzLnNhbXBsZV9zaXplc1swXSl7aT0hMTticmVha31lbHNlIGUrKztlbHNlIGk9ITE7dGhpcy5zaXplPTgsaXx8KHRoaXMuc2l6ZSs9NCp0aGlzLnNhbXBsZV9zaXplcy5sZW5ndGgpLHRoaXMud3JpdGVIZWFkZXIodCksaT90LndyaXRlVWludDMyKHRoaXMuc2FtcGxlX3NpemVzWzBdKTp0LndyaXRlVWludDMyKDApLHQud3JpdGVVaW50MzIodGhpcy5zYW1wbGVfc2l6ZXMubGVuZ3RoKSxpfHx0LndyaXRlVWludDMyQXJyYXkodGhpcy5zYW1wbGVfc2l6ZXMpfSxyLnN0dHNCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3ZhciBlO2Zvcih0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQrOCp0aGlzLnNhbXBsZV9jb3VudHMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIodCksdC53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9jb3VudHMubGVuZ3RoKSxlPTA7ZTx0aGlzLnNhbXBsZV9jb3VudHMubGVuZ3RoO2UrKyl0LndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2NvdW50c1tlXSksdC53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9kZWx0YXNbZV0pfSxyLnRmZHRCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgucG93KDIsMzIpLTE7dGhpcy52ZXJzaW9uPXRoaXMuYmFzZU1lZGlhRGVjb2RlVGltZT5lPzE6MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQsdGhpcy52ZXJzaW9uPT09MSYmKHRoaXMuc2l6ZSs9NCksdGhpcy53cml0ZUhlYWRlcih0KSx0aGlzLnZlcnNpb249PT0xP3Qud3JpdGVVaW50NjQodGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lKTp0LndyaXRlVWludDMyKHRoaXMuYmFzZU1lZGlhRGVjb2RlVGltZSl9LHIudGZoZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5zaXplPTQsdGhpcy5mbGFncyZyLlRGSERfRkxBR19CQVNFX0RBVEFfT0ZGU0VUJiYodGhpcy5zaXplKz04KSx0aGlzLmZsYWdzJnIuVEZIRF9GTEFHX1NBTVBMRV9ERVNDJiYodGhpcy5zaXplKz00KSx0aGlzLmZsYWdzJnIuVEZIRF9GTEFHX1NBTVBMRV9EVVImJih0aGlzLnNpemUrPTQpLHRoaXMuZmxhZ3Mmci5URkhEX0ZMQUdfU0FNUExFX1NJWkUmJih0aGlzLnNpemUrPTQpLHRoaXMuZmxhZ3Mmci5URkhEX0ZMQUdfU0FNUExFX0ZMQUdTJiYodGhpcy5zaXplKz00KSx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVVaW50MzIodGhpcy50cmFja19pZCksdGhpcy5mbGFncyZyLlRGSERfRkxBR19CQVNFX0RBVEFfT0ZGU0VUJiZ0LndyaXRlVWludDY0KHRoaXMuYmFzZV9kYXRhX29mZnNldCksdGhpcy5mbGFncyZyLlRGSERfRkxBR19TQU1QTEVfREVTQyYmdC53cml0ZVVpbnQzMih0aGlzLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4KSx0aGlzLmZsYWdzJnIuVEZIRF9GTEFHX1NBTVBMRV9EVVImJnQud3JpdGVVaW50MzIodGhpcy5kZWZhdWx0X3NhbXBsZV9kdXJhdGlvbiksdGhpcy5mbGFncyZyLlRGSERfRkxBR19TQU1QTEVfU0laRSYmdC53cml0ZVVpbnQzMih0aGlzLmRlZmF1bHRfc2FtcGxlX3NpemUpLHRoaXMuZmxhZ3Mmci5URkhEX0ZMQUdfU0FNUExFX0ZMQUdTJiZ0LndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfZmxhZ3MpfSxyLnRraGRCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3RoaXMudmVyc2lvbj0wLHRoaXMuc2l6ZT00KjE4KzIqNCx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVVaW50MzIodGhpcy5jcmVhdGlvbl90aW1lKSx0LndyaXRlVWludDMyKHRoaXMubW9kaWZpY2F0aW9uX3RpbWUpLHQud3JpdGVVaW50MzIodGhpcy50cmFja19pZCksdC53cml0ZVVpbnQzMigwKSx0LndyaXRlVWludDMyKHRoaXMuZHVyYXRpb24pLHQud3JpdGVVaW50MzIoMCksdC53cml0ZVVpbnQzMigwKSx0LndyaXRlSW50MTYodGhpcy5sYXllciksdC53cml0ZUludDE2KHRoaXMuYWx0ZXJuYXRlX2dyb3VwKSx0LndyaXRlSW50MTYodGhpcy52b2x1bWU8PDgpLHQud3JpdGVVaW50MTYoMCksdC53cml0ZUludDMyQXJyYXkodGhpcy5tYXRyaXgpLHQud3JpdGVVaW50MzIodGhpcy53aWR0aCksdC53cml0ZVVpbnQzMih0aGlzLmhlaWdodCl9LHIudHJleEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT00KjUsdGhpcy53cml0ZUhlYWRlcih0KSx0LndyaXRlVWludDMyKHRoaXMudHJhY2tfaWQpLHQud3JpdGVVaW50MzIodGhpcy5kZWZhdWx0X3NhbXBsZV9kZXNjcmlwdGlvbl9pbmRleCksdC53cml0ZVVpbnQzMih0aGlzLmRlZmF1bHRfc2FtcGxlX2R1cmF0aW9uKSx0LndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfc2l6ZSksdC53cml0ZVVpbnQzMih0aGlzLmRlZmF1bHRfc2FtcGxlX2ZsYWdzKX0sci50cnVuQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt0aGlzLnZlcnNpb249MCx0aGlzLnNpemU9NCx0aGlzLmZsYWdzJnIuVFJVTl9GTEFHU19EQVRBX09GRlNFVCYmKHRoaXMuc2l6ZSs9NCksdGhpcy5mbGFncyZyLlRSVU5fRkxBR1NfRklSU1RfRkxBRyYmKHRoaXMuc2l6ZSs9NCksdGhpcy5mbGFncyZyLlRSVU5fRkxBR1NfRFVSQVRJT04mJih0aGlzLnNpemUrPTQqdGhpcy5zYW1wbGVfZHVyYXRpb24ubGVuZ3RoKSx0aGlzLmZsYWdzJnIuVFJVTl9GTEFHU19TSVpFJiYodGhpcy5zaXplKz00KnRoaXMuc2FtcGxlX3NpemUubGVuZ3RoKSx0aGlzLmZsYWdzJnIuVFJVTl9GTEFHU19GTEFHUyYmKHRoaXMuc2l6ZSs9NCp0aGlzLnNhbXBsZV9mbGFncy5sZW5ndGgpLHRoaXMuZmxhZ3Mmci5UUlVOX0ZMQUdTX0NUU19PRkZTRVQmJih0aGlzLnNpemUrPTQqdGhpcy5zYW1wbGVfY29tcG9zaXRpb25fdGltZV9vZmZzZXQubGVuZ3RoKSx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVVaW50MzIodGhpcy5zYW1wbGVfY291bnQpLHRoaXMuZmxhZ3Mmci5UUlVOX0ZMQUdTX0RBVEFfT0ZGU0VUJiYodGhpcy5kYXRhX29mZnNldF9wb3NpdGlvbj10LmdldFBvc2l0aW9uKCksdC53cml0ZUludDMyKHRoaXMuZGF0YV9vZmZzZXQpKSx0aGlzLmZsYWdzJnIuVFJVTl9GTEFHU19GSVJTVF9GTEFHJiZ0LndyaXRlVWludDMyKHRoaXMuZmlyc3Rfc2FtcGxlX2ZsYWdzKTtmb3IodmFyIGU9MDtlPHRoaXMuc2FtcGxlX2NvdW50O2UrKyl0aGlzLmZsYWdzJnIuVFJVTl9GTEFHU19EVVJBVElPTiYmdC53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9kdXJhdGlvbltlXSksdGhpcy5mbGFncyZyLlRSVU5fRkxBR1NfU0laRSYmdC53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9zaXplW2VdKSx0aGlzLmZsYWdzJnIuVFJVTl9GTEFHU19GTEFHUyYmdC53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9mbGFnc1tlXSksdGhpcy5mbGFncyZyLlRSVU5fRkxBR1NfQ1RTX09GRlNFVCYmKHRoaXMudmVyc2lvbj09PTA/dC53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldFtlXSk6dC53cml0ZUludDMyKHRoaXMuc2FtcGxlX2NvbXBvc2l0aW9uX3RpbWVfb2Zmc2V0W2VdKSl9LHJbInVybCBCb3giXS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy52ZXJzaW9uPTAsdGhpcy5sb2NhdGlvbj8odGhpcy5mbGFncz0wLHRoaXMuc2l6ZT10aGlzLmxvY2F0aW9uLmxlbmd0aCsxKToodGhpcy5mbGFncz0xLHRoaXMuc2l6ZT0wKSx0aGlzLndyaXRlSGVhZGVyKHQpLHRoaXMubG9jYXRpb24mJnQud3JpdGVDU3RyaW5nKHRoaXMubG9jYXRpb24pfSxyWyJ1cm4gQm94Il0ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9dGhpcy5uYW1lLmxlbmd0aCsxKyh0aGlzLmxvY2F0aW9uP3RoaXMubG9jYXRpb24ubGVuZ3RoKzE6MCksdGhpcy53cml0ZUhlYWRlcih0KSx0LndyaXRlQ1N0cmluZyh0aGlzLm5hbWUpLHRoaXMubG9jYXRpb24mJnQud3JpdGVDU3RyaW5nKHRoaXMubG9jYXRpb24pfSxyLnZtaGRCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MSx0aGlzLnNpemU9OCx0aGlzLndyaXRlSGVhZGVyKHQpLHQud3JpdGVVaW50MTYodGhpcy5ncmFwaGljc21vZGUpLHQud3JpdGVVaW50MTZBcnJheSh0aGlzLm9wY29sb3IpfSxyLmN0dHNCb3gucHJvdG90eXBlLnVucGFjaz1mdW5jdGlvbih0KXt2YXIgZSxpLHM7Zm9yKHM9MCxlPTA7ZTx0aGlzLnNhbXBsZV9jb3VudHMubGVuZ3RoO2UrKylmb3IoaT0wO2k8dGhpcy5zYW1wbGVfY291bnRzW2VdO2krKyl0W3NdLnB0cz10W3NdLmR0cyt0aGlzLnNhbXBsZV9vZmZzZXRzW2VdLHMrK30sci5zdHRzQm94LnByb3RvdHlwZS51bnBhY2s9ZnVuY3Rpb24odCl7dmFyIGUsaSxzO2ZvcihzPTAsZT0wO2U8dGhpcy5zYW1wbGVfY291bnRzLmxlbmd0aDtlKyspZm9yKGk9MDtpPHRoaXMuc2FtcGxlX2NvdW50c1tlXTtpKyspcz09PTA/dFtzXS5kdHM9MDp0W3NdLmR0cz10W3MtMV0uZHRzK3RoaXMuc2FtcGxlX2RlbHRhc1tlXSxzKyt9LHIuc3Rjb0JveC5wcm90b3R5cGUudW5wYWNrPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPTA7ZTx0aGlzLmNodW5rX29mZnNldHMubGVuZ3RoO2UrKyl0W2VdLm9mZnNldD10aGlzLmNodW5rX29mZnNldHNbZV19LHIuc3RzY0JveC5wcm90b3R5cGUudW5wYWNrPWZ1bmN0aW9uKHQpe3ZhciBlLGkscyxuLGY7Zm9yKG49MCxmPTAsZT0wO2U8dGhpcy5maXJzdF9jaHVuay5sZW5ndGg7ZSsrKWZvcihpPTA7aTwoZSsxPHRoaXMuZmlyc3RfY2h1bmsubGVuZ3RoP3RoaXMuZmlyc3RfY2h1bmtbZSsxXToxLzApO2krKylmb3IoZisrLHM9MDtzPHRoaXMuc2FtcGxlc19wZXJfY2h1bmtbZV07cysrKXtpZih0W25dKXRbbl0uZGVzY3JpcHRpb25faW5kZXg9dGhpcy5zYW1wbGVfZGVzY3JpcHRpb25faW5kZXhbZV0sdFtuXS5jaHVua19pbmRleD1mO2Vsc2UgcmV0dXJuO24rK319LHIuc3RzekJveC5wcm90b3R5cGUudW5wYWNrPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPTA7ZTx0aGlzLnNhbXBsZV9zaXplcy5sZW5ndGg7ZSsrKXRbZV0uc2l6ZT10aGlzLnNhbXBsZV9zaXplc1tlXX0sci5ESUZGX0JPWEVTX1BST1BfTkFNRVM9WyJib3hlcyIsImVudHJpZXMiLCJyZWZlcmVuY2VzIiwic3Vic2FtcGxlcyIsIml0ZW1zIiwiaXRlbV9pbmZvcyIsImV4dGVudHMiLCJhc3NvY2lhdGlvbnMiLCJzdWJzZWdtZW50cyIsInJhbmdlcyIsInNlZWtMaXN0cyIsInNlZWtQb2ludHMiLCJlc2QiLCJsZXZlbHMiXSxyLkRJRkZfUFJJTUlUSVZFX0FSUkFZX1BST1BfTkFNRVM9WyJjb21wYXRpYmxlX2JyYW5kcyIsIm1hdHJpeCIsIm9wY29sb3IiLCJzYW1wbGVfY291bnRzIiwic2FtcGxlX2NvdW50cyIsInNhbXBsZV9kZWx0YXMiLCJmaXJzdF9jaHVuayIsInNhbXBsZXNfcGVyX2NodW5rIiwic2FtcGxlX3NpemVzIiwiY2h1bmtfb2Zmc2V0cyIsInNhbXBsZV9vZmZzZXRzIiwic2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4Iiwic2FtcGxlX2R1cmF0aW9uIl0sci5ib3hFcXVhbEZpZWxkcz1mdW5jdGlvbih0LGUpe2lmKHQmJiFlKXJldHVybiExO3ZhciBpO2ZvcihpIGluIHQpaWYoIShyLkRJRkZfQk9YRVNfUFJPUF9OQU1FUy5pbmRleE9mKGkpPi0xKSl7aWYodFtpXWluc3RhbmNlb2Ygci5Cb3h8fGVbaV1pbnN0YW5jZW9mIHIuQm94KWNvbnRpbnVlO2lmKHR5cGVvZiB0W2ldPiJ1Inx8dHlwZW9mIGVbaV0+InUiKWNvbnRpbnVlO2lmKHR5cGVvZiB0W2ldPT0iZnVuY3Rpb24ifHx0eXBlb2YgZVtpXT09ImZ1bmN0aW9uIiljb250aW51ZTtpZih0LnN1YkJveE5hbWVzJiZ0LnN1YkJveE5hbWVzLmluZGV4T2YoaS5zbGljZSgwLDQpKT4tMXx8ZS5zdWJCb3hOYW1lcyYmZS5zdWJCb3hOYW1lcy5pbmRleE9mKGkuc2xpY2UoMCw0KSk+LTEpY29udGludWU7aWYoaT09PSJkYXRhInx8aT09PSJzdGFydCJ8fGk9PT0ic2l6ZSJ8fGk9PT0iY3JlYXRpb25fdGltZSJ8fGk9PT0ibW9kaWZpY2F0aW9uX3RpbWUiKWNvbnRpbnVlO2lmKHIuRElGRl9QUklNSVRJVkVfQVJSQVlfUFJPUF9OQU1FUy5pbmRleE9mKGkpPi0xKWNvbnRpbnVlO2lmKHRbaV0hPT1lW2ldKXJldHVybiExfXJldHVybiEwfSxyLmJveEVxdWFsPWZ1bmN0aW9uKHQsZSl7aWYoIXIuYm94RXF1YWxGaWVsZHModCxlKSlyZXR1cm4hMTtmb3IodmFyIGk9MDtpPHIuRElGRl9CT1hFU19QUk9QX05BTUVTLmxlbmd0aDtpKyspe3ZhciBzPXIuRElGRl9CT1hFU19QUk9QX05BTUVTW2ldO2lmKHRbc10mJmVbc10mJiFyLmJveEVxdWFsKHRbc10sZVtzXSkpcmV0dXJuITF9cmV0dXJuITB9O3ZhciB5PWZ1bmN0aW9uKCl7fTt5LnByb3RvdHlwZS5wYXJzZVNhbXBsZT1mdW5jdGlvbih0KXt2YXIgZT17fSxpO2UucmVzb3VyY2VzPVtdO3ZhciBzPW5ldyBvKHQuZGF0YS5idWZmZXIpO2lmKCF0LnN1YnNhbXBsZXN8fHQuc3Vic2FtcGxlcy5sZW5ndGg9PT0wKWUuZG9jdW1lbnRTdHJpbmc9cy5yZWFkU3RyaW5nKHQuZGF0YS5sZW5ndGgpO2Vsc2UgaWYoZS5kb2N1bWVudFN0cmluZz1zLnJlYWRTdHJpbmcodC5zdWJzYW1wbGVzWzBdLnNpemUpLHQuc3Vic2FtcGxlcy5sZW5ndGg+MSlmb3IoaT0xO2k8dC5zdWJzYW1wbGVzLmxlbmd0aDtpKyspZS5yZXNvdXJjZXNbaV09cy5yZWFkVWludDhBcnJheSh0LnN1YnNhbXBsZXNbaV0uc2l6ZSk7cmV0dXJuIHR5cGVvZiBET01QYXJzZXI8InUiJiYoZS5kb2N1bWVudD1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGUuZG9jdW1lbnRTdHJpbmcsImFwcGxpY2F0aW9uL3htbCIpKSxlfTt2YXIgdj1mdW5jdGlvbigpe307di5wcm90b3R5cGUucGFyc2VTYW1wbGU9ZnVuY3Rpb24odCl7dmFyIGUsaT1uZXcgbyh0LmRhdGEuYnVmZmVyKTtyZXR1cm4gZT1pLnJlYWRTdHJpbmcodC5kYXRhLmxlbmd0aCksZX0sdi5wcm90b3R5cGUucGFyc2VDb25maWc9ZnVuY3Rpb24odCl7dmFyIGUsaT1uZXcgbyh0LmJ1ZmZlcik7cmV0dXJuIGkucmVhZFVpbnQzMigpLGU9aS5yZWFkQ1N0cmluZygpLGV9LEUuWE1MU3VidGl0bGVpbjRQYXJzZXI9eSxFLlRleHRpbjRQYXJzZXI9djt2YXIgdT1mdW5jdGlvbih0KXt0aGlzLnN0cmVhbT10fHxuZXcgbCx0aGlzLmJveGVzPVtdLHRoaXMubWRhdHM9W10sdGhpcy5tb29mcz1bXSx0aGlzLmlzUHJvZ3Jlc3NpdmU9ITEsdGhpcy5tb292U3RhcnRGb3VuZD0hMSx0aGlzLm9uTW9vdlN0YXJ0PW51bGwsdGhpcy5tb292U3RhcnRTZW50PSExLHRoaXMub25SZWFkeT1udWxsLHRoaXMucmVhZHlTZW50PSExLHRoaXMub25TZWdtZW50PW51bGwsdGhpcy5vblNhbXBsZXM9bnVsbCx0aGlzLm9uRXJyb3I9bnVsbCx0aGlzLnNhbXBsZUxpc3RCdWlsdD0hMSx0aGlzLmZyYWdtZW50ZWRUcmFja3M9W10sdGhpcy5leHRyYWN0ZWRUcmFja3M9W10sdGhpcy5pc0ZyYWdtZW50YXRpb25Jbml0aWFsaXplZD0hMSx0aGlzLnNhbXBsZVByb2Nlc3NpbmdTdGFydGVkPSExLHRoaXMubmV4dE1vb2ZOdW1iZXI9MCx0aGlzLml0ZW1MaXN0QnVpbHQ9ITEsdGhpcy5vblNpZHg9bnVsbCx0aGlzLnNpZHhTZW50PSExfTt1LnByb3RvdHlwZS5zZXRTZWdtZW50T3B0aW9ucz1mdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy5nZXRUcmFja0J5SWQodCk7aWYocyl7dmFyIG49e307dGhpcy5mcmFnbWVudGVkVHJhY2tzLnB1c2gobiksbi5pZD10LG4udXNlcj1lLG4udHJhaz1zLHMubmV4dFNhbXBsZT0wLG4uc2VnbWVudFN0cmVhbT1udWxsLG4ubmJfc2FtcGxlcz0xZTMsbi5yYXBBbGlnbmVtZW50PSEwLGkmJihpLm5iU2FtcGxlcyYmKG4ubmJfc2FtcGxlcz1pLm5iU2FtcGxlcyksaS5yYXBBbGlnbmVtZW50JiYobi5yYXBBbGlnbmVtZW50PWkucmFwQWxpZ25lbWVudCkpfX0sdS5wcm90b3R5cGUudW5zZXRTZWdtZW50T3B0aW9ucz1mdW5jdGlvbih0KXtmb3IodmFyIGU9LTEsaT0wO2k8dGhpcy5mcmFnbWVudGVkVHJhY2tzLmxlbmd0aDtpKyspe3ZhciBzPXRoaXMuZnJhZ21lbnRlZFRyYWNrc1tpXTtzLmlkPT10JiYoZT1pKX1lPi0xJiZ0aGlzLmZyYWdtZW50ZWRUcmFja3Muc3BsaWNlKGUsMSl9LHUucHJvdG90eXBlLnNldEV4dHJhY3Rpb25PcHRpb25zPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLmdldFRyYWNrQnlJZCh0KTtpZihzKXt2YXIgbj17fTt0aGlzLmV4dHJhY3RlZFRyYWNrcy5wdXNoKG4pLG4uaWQ9dCxuLnVzZXI9ZSxuLnRyYWs9cyxzLm5leHRTYW1wbGU9MCxuLm5iX3NhbXBsZXM9MWUzLG4uc2FtcGxlcz1bXSxpJiZpLm5iU2FtcGxlcyYmKG4ubmJfc2FtcGxlcz1pLm5iU2FtcGxlcyl9fSx1LnByb3RvdHlwZS51bnNldEV4dHJhY3Rpb25PcHRpb25zPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0tMSxpPTA7aTx0aGlzLmV4dHJhY3RlZFRyYWNrcy5sZW5ndGg7aSsrKXt2YXIgcz10aGlzLmV4dHJhY3RlZFRyYWNrc1tpXTtzLmlkPT10JiYoZT1pKX1lPi0xJiZ0aGlzLmV4dHJhY3RlZFRyYWNrcy5zcGxpY2UoZSwxKX0sdS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oKXt2YXIgdCxlLGk9ITE7aWYoISh0aGlzLnJlc3RvcmVQYXJzZVBvc2l0aW9uJiYhdGhpcy5yZXN0b3JlUGFyc2VQb3NpdGlvbigpKSlmb3IoOzspaWYodGhpcy5oYXNJbmNvbXBsZXRlTWRhdCYmdGhpcy5oYXNJbmNvbXBsZXRlTWRhdCgpKXtpZih0aGlzLnByb2Nlc3NJbmNvbXBsZXRlTWRhdCgpKWNvbnRpbnVlO3JldHVybn1lbHNlIGlmKHRoaXMuc2F2ZVBhcnNlUG9zaXRpb24mJnRoaXMuc2F2ZVBhcnNlUG9zaXRpb24oKSx0PXIucGFyc2VPbmVCb3godGhpcy5zdHJlYW0saSksdC5jb2RlPT09ci5FUlJfTk9UX0VOT1VHSF9EQVRBKWlmKHRoaXMucHJvY2Vzc0luY29tcGxldGVCb3gpe2lmKHRoaXMucHJvY2Vzc0luY29tcGxldGVCb3godCkpY29udGludWU7cmV0dXJufWVsc2UgcmV0dXJuO2Vsc2V7dmFyIHM7c3dpdGNoKGU9dC5ib3gscz1lLnR5cGUhPT0idXVpZCI/ZS50eXBlOmUudXVpZCx0aGlzLmJveGVzLnB1c2goZSkscyl7Y2FzZSJtZGF0Ijp0aGlzLm1kYXRzLnB1c2goZSk7YnJlYWs7Y2FzZSJtb29mIjp0aGlzLm1vb2ZzLnB1c2goZSk7YnJlYWs7Y2FzZSJtb292Ijp0aGlzLm1vb3ZTdGFydEZvdW5kPSEwLHRoaXMubWRhdHMubGVuZ3RoPT09MCYmKHRoaXMuaXNQcm9ncmVzc2l2ZT0hMCk7ZGVmYXVsdDp0aGlzW3NdIT09dm9pZCAwJiZoLndhcm4oIklTT0ZpbGUiLCJEdXBsaWNhdGUgQm94IG9mIHR5cGU6ICIrcysiLCBvdmVycmlkaW5nIHByZXZpb3VzIG9jY3VycmVuY2UiKSx0aGlzW3NdPWU7YnJlYWt9dGhpcy51cGRhdGVVc2VkQnl0ZXMmJnRoaXMudXBkYXRlVXNlZEJ5dGVzKGUsdCl9fSx1LnByb3RvdHlwZS5jaGVja0J1ZmZlcj1mdW5jdGlvbih0KXtpZih0PT1udWxsKXRocm93IkJ1ZmZlciBtdXN0IGJlIGRlZmluZWQgYW5kIG5vbiBlbXB0eSI7aWYodC5maWxlU3RhcnQ9PT12b2lkIDApdGhyb3ciQnVmZmVyIG11c3QgaGF2ZSBhIGZpbGVTdGFydCBwcm9wZXJ0eSI7cmV0dXJuIHQuYnl0ZUxlbmd0aD09PTA/KGgud2FybigiSVNPRmlsZSIsIklnbm9yaW5nIGVtcHR5IGJ1ZmZlciAoZmlsZVN0YXJ0OiAiK3QuZmlsZVN0YXJ0KyIpIiksdGhpcy5zdHJlYW0ubG9nQnVmZmVyTGV2ZWwoKSwhMSk6KGguaW5mbygiSVNPRmlsZSIsIlByb2Nlc3NpbmcgYnVmZmVyIChmaWxlU3RhcnQ6ICIrdC5maWxlU3RhcnQrIikiKSx0LnVzZWRCeXRlcz0wLHRoaXMuc3RyZWFtLmluc2VydEJ1ZmZlcih0KSx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCgpLHRoaXMuc3RyZWFtLmluaXRpYWxpemVkKCk/ITA6KGgud2FybigiSVNPRmlsZSIsIk5vdCByZWFkeSB0byBzdGFydCBwYXJzaW5nIiksITEpKX0sdS5wcm90b3R5cGUuYXBwZW5kQnVmZmVyPWZ1bmN0aW9uKHQsZSl7dmFyIGk7aWYodGhpcy5jaGVja0J1ZmZlcih0KSlyZXR1cm4gdGhpcy5wYXJzZSgpLHRoaXMubW9vdlN0YXJ0Rm91bmQmJiF0aGlzLm1vb3ZTdGFydFNlbnQmJih0aGlzLm1vb3ZTdGFydFNlbnQ9ITAsdGhpcy5vbk1vb3ZTdGFydCYmdGhpcy5vbk1vb3ZTdGFydCgpKSx0aGlzLm1vb3Y/KHRoaXMuc2FtcGxlTGlzdEJ1aWx0fHwodGhpcy5idWlsZFNhbXBsZUxpc3RzKCksdGhpcy5zYW1wbGVMaXN0QnVpbHQ9ITApLHRoaXMudXBkYXRlU2FtcGxlTGlzdHMoKSx0aGlzLm9uUmVhZHkmJiF0aGlzLnJlYWR5U2VudCYmKHRoaXMucmVhZHlTZW50PSEwLHRoaXMub25SZWFkeSh0aGlzLmdldEluZm8oKSkpLHRoaXMucHJvY2Vzc1NhbXBsZXMoZSksdGhpcy5uZXh0U2Vla1Bvc2l0aW9uPyhpPXRoaXMubmV4dFNlZWtQb3NpdGlvbix0aGlzLm5leHRTZWVrUG9zaXRpb249dm9pZCAwKTppPXRoaXMubmV4dFBhcnNlUG9zaXRpb24sdGhpcy5zdHJlYW0uZ2V0RW5kRmlsZVBvc2l0aW9uQWZ0ZXImJihpPXRoaXMuc3RyZWFtLmdldEVuZEZpbGVQb3NpdGlvbkFmdGVyKGkpKSk6dGhpcy5uZXh0UGFyc2VQb3NpdGlvbj9pPXRoaXMubmV4dFBhcnNlUG9zaXRpb246aT0wLHRoaXMuc2lkeCYmdGhpcy5vblNpZHgmJiF0aGlzLnNpZHhTZW50JiYodGhpcy5vblNpZHgodGhpcy5zaWR4KSx0aGlzLnNpZHhTZW50PSEwKSx0aGlzLm1ldGEmJih0aGlzLmZsYXR0ZW5JdGVtSW5mbyYmIXRoaXMuaXRlbUxpc3RCdWlsdCYmKHRoaXMuZmxhdHRlbkl0ZW1JbmZvKCksdGhpcy5pdGVtTGlzdEJ1aWx0PSEwKSx0aGlzLnByb2Nlc3NJdGVtcyYmdGhpcy5wcm9jZXNzSXRlbXModGhpcy5vbkl0ZW0pKSx0aGlzLnN0cmVhbS5jbGVhbkJ1ZmZlcnMmJihoLmluZm8oIklTT0ZpbGUiLCJEb25lIHByb2Nlc3NpbmcgYnVmZmVyIChmaWxlU3RhcnQ6ICIrdC5maWxlU3RhcnQrIikgLSBuZXh0IGJ1ZmZlciB0byBmZXRjaCBzaG91bGQgaGF2ZSBhIGZpbGVTdGFydCBwb3NpdGlvbiBvZiAiK2kpLHRoaXMuc3RyZWFtLmxvZ0J1ZmZlckxldmVsKCksdGhpcy5zdHJlYW0uY2xlYW5CdWZmZXJzKCksdGhpcy5zdHJlYW0ubG9nQnVmZmVyTGV2ZWwoITApLGguaW5mbygiSVNPRmlsZSIsIlNhbXBsZSBkYXRhIHNpemUgaW4gbWVtb3J5OiAiK3RoaXMuZ2V0QWxsb2NhdGVkU2FtcGxlRGF0YVNpemUoKSkpLGl9LHUucHJvdG90eXBlLmdldEluZm89ZnVuY3Rpb24oKXt2YXIgdCxlLGk9e30scyxuLGYsZCxjPW5ldyBEYXRlKCIxOTA0LTAxLTAxVDAwOjAwOjAwWiIpLmdldFRpbWUoKTtpZih0aGlzLm1vb3YpZm9yKGkuaGFzTW9vdj0hMCxpLmR1cmF0aW9uPXRoaXMubW9vdi5tdmhkLmR1cmF0aW9uLGkudGltZXNjYWxlPXRoaXMubW9vdi5tdmhkLnRpbWVzY2FsZSxpLmlzRnJhZ21lbnRlZD10aGlzLm1vb3YubXZleCE9bnVsbCxpLmlzRnJhZ21lbnRlZCYmdGhpcy5tb292Lm12ZXgubWVoZCYmKGkuZnJhZ21lbnRfZHVyYXRpb249dGhpcy5tb292Lm12ZXgubWVoZC5mcmFnbWVudF9kdXJhdGlvbiksaS5pc1Byb2dyZXNzaXZlPXRoaXMuaXNQcm9ncmVzc2l2ZSxpLmhhc0lPRD10aGlzLm1vb3YuaW9kcyE9bnVsbCxpLmJyYW5kcz1bXSxpLmJyYW5kcy5wdXNoKHRoaXMuZnR5cC5tYWpvcl9icmFuZCksaS5icmFuZHM9aS5icmFuZHMuY29uY2F0KHRoaXMuZnR5cC5jb21wYXRpYmxlX2JyYW5kcyksaS5jcmVhdGVkPW5ldyBEYXRlKGMrdGhpcy5tb292Lm12aGQuY3JlYXRpb25fdGltZSoxZTMpLGkubW9kaWZpZWQ9bmV3IERhdGUoYyt0aGlzLm1vb3YubXZoZC5tb2RpZmljYXRpb25fdGltZSoxZTMpLGkudHJhY2tzPVtdLGkuYXVkaW9UcmFja3M9W10saS52aWRlb1RyYWNrcz1bXSxpLnN1YnRpdGxlVHJhY2tzPVtdLGkubWV0YWRhdGFUcmFja3M9W10saS5oaW50VHJhY2tzPVtdLGkub3RoZXJUcmFja3M9W10sdD0wO3Q8dGhpcy5tb292LnRyYWtzLmxlbmd0aDt0Kyspe2lmKHM9dGhpcy5tb292LnRyYWtzW3RdLGQ9cy5tZGlhLm1pbmYuc3RibC5zdHNkLmVudHJpZXNbMF0sbj17fSxpLnRyYWNrcy5wdXNoKG4pLG4uaWQ9cy50a2hkLnRyYWNrX2lkLG4ubmFtZT1zLm1kaWEuaGRsci5uYW1lLG4ucmVmZXJlbmNlcz1bXSxzLnRyZWYpZm9yKGU9MDtlPHMudHJlZi5ib3hlcy5sZW5ndGg7ZSsrKWY9e30sbi5yZWZlcmVuY2VzLnB1c2goZiksZi50eXBlPXMudHJlZi5ib3hlc1tlXS50eXBlLGYudHJhY2tfaWRzPXMudHJlZi5ib3hlc1tlXS50cmFja19pZHM7cy5lZHRzJiYobi5lZGl0cz1zLmVkdHMuZWxzdC5lbnRyaWVzKSxuLmNyZWF0ZWQ9bmV3IERhdGUoYytzLnRraGQuY3JlYXRpb25fdGltZSoxZTMpLG4ubW9kaWZpZWQ9bmV3IERhdGUoYytzLnRraGQubW9kaWZpY2F0aW9uX3RpbWUqMWUzKSxuLm1vdmllX2R1cmF0aW9uPXMudGtoZC5kdXJhdGlvbixuLm1vdmllX3RpbWVzY2FsZT1pLnRpbWVzY2FsZSxuLmxheWVyPXMudGtoZC5sYXllcixuLmFsdGVybmF0ZV9ncm91cD1zLnRraGQuYWx0ZXJuYXRlX2dyb3VwLG4udm9sdW1lPXMudGtoZC52b2x1bWUsbi5tYXRyaXg9cy50a2hkLm1hdHJpeCxuLnRyYWNrX3dpZHRoPXMudGtoZC53aWR0aC82NTUzNixuLnRyYWNrX2hlaWdodD1zLnRraGQuaGVpZ2h0LzY1NTM2LG4udGltZXNjYWxlPXMubWRpYS5tZGhkLnRpbWVzY2FsZSxuLmN0c19zaGlmdD1zLm1kaWEubWluZi5zdGJsLmNzbGcsbi5kdXJhdGlvbj1zLm1kaWEubWRoZC5kdXJhdGlvbixuLnNhbXBsZXNfZHVyYXRpb249cy5zYW1wbGVzX2R1cmF0aW9uLG4uY29kZWM9ZC5nZXRDb2RlYygpLG4ua2luZD1zLnVkdGEmJnMudWR0YS5raW5kcy5sZW5ndGg/cy51ZHRhLmtpbmRzWzBdOntzY2hlbWVVUkk6IiIsdmFsdWU6IiJ9LG4ubGFuZ3VhZ2U9cy5tZGlhLmVsbmc/cy5tZGlhLmVsbmcuZXh0ZW5kZWRfbGFuZ3VhZ2U6cy5tZGlhLm1kaGQubGFuZ3VhZ2VTdHJpbmcsbi5uYl9zYW1wbGVzPXMuc2FtcGxlcy5sZW5ndGgsbi5zaXplPXMuc2FtcGxlc19zaXplLG4uYml0cmF0ZT1uLnNpemUqOCpuLnRpbWVzY2FsZS9uLnNhbXBsZXNfZHVyYXRpb24sZC5pc0F1ZGlvKCk/KG4udHlwZT0iYXVkaW8iLGkuYXVkaW9UcmFja3MucHVzaChuKSxuLmF1ZGlvPXt9LG4uYXVkaW8uc2FtcGxlX3JhdGU9ZC5nZXRTYW1wbGVSYXRlKCksbi5hdWRpby5jaGFubmVsX2NvdW50PWQuZ2V0Q2hhbm5lbENvdW50KCksbi5hdWRpby5zYW1wbGVfc2l6ZT1kLmdldFNhbXBsZVNpemUoKSk6ZC5pc1ZpZGVvKCk/KG4udHlwZT0idmlkZW8iLGkudmlkZW9UcmFja3MucHVzaChuKSxuLnZpZGVvPXt9LG4udmlkZW8ud2lkdGg9ZC5nZXRXaWR0aCgpLG4udmlkZW8uaGVpZ2h0PWQuZ2V0SGVpZ2h0KCkpOmQuaXNTdWJ0aXRsZSgpPyhuLnR5cGU9InN1YnRpdGxlcyIsaS5zdWJ0aXRsZVRyYWNrcy5wdXNoKG4pKTpkLmlzSGludCgpPyhuLnR5cGU9Im1ldGFkYXRhIixpLmhpbnRUcmFja3MucHVzaChuKSk6ZC5pc01ldGFkYXRhKCk/KG4udHlwZT0ibWV0YWRhdGEiLGkubWV0YWRhdGFUcmFja3MucHVzaChuKSk6KG4udHlwZT0ibWV0YWRhdGEiLGkub3RoZXJUcmFja3MucHVzaChuKSl9ZWxzZSBpLmhhc01vb3Y9ITE7aWYoaS5taW1lPSIiLGkuaGFzTW9vdiYmaS50cmFja3Mpe2ZvcihpLnZpZGVvVHJhY2tzJiZpLnZpZGVvVHJhY2tzLmxlbmd0aD4wP2kubWltZSs9J3ZpZGVvL21wNDsgY29kZWNzPSInOmkuYXVkaW9UcmFja3MmJmkuYXVkaW9UcmFja3MubGVuZ3RoPjA/aS5taW1lKz0nYXVkaW8vbXA0OyBjb2RlY3M9Iic6aS5taW1lKz0nYXBwbGljYXRpb24vbXA0OyBjb2RlY3M9IicsdD0wO3Q8aS50cmFja3MubGVuZ3RoO3QrKyl0IT09MCYmKGkubWltZSs9IiwiKSxpLm1pbWUrPWkudHJhY2tzW3RdLmNvZGVjO2kubWltZSs9JyI7IHByb2ZpbGVzPSInLGkubWltZSs9dGhpcy5mdHlwLmNvbXBhdGlibGVfYnJhbmRzLmpvaW4oKSxpLm1pbWUrPSciJ31yZXR1cm4gaX0sdS5wcm90b3R5cGUucHJvY2Vzc1NhbXBsZXM9ZnVuY3Rpb24odCl7dmFyIGUsaTtpZih0aGlzLnNhbXBsZVByb2Nlc3NpbmdTdGFydGVkKXtpZih0aGlzLmlzRnJhZ21lbnRhdGlvbkluaXRpYWxpemVkJiZ0aGlzLm9uU2VnbWVudCE9PW51bGwpZm9yKGU9MDtlPHRoaXMuZnJhZ21lbnRlZFRyYWNrcy5sZW5ndGg7ZSsrKXt2YXIgcz10aGlzLmZyYWdtZW50ZWRUcmFja3NbZV07Zm9yKGk9cy50cmFrO2kubmV4dFNhbXBsZTxpLnNhbXBsZXMubGVuZ3RoJiZ0aGlzLnNhbXBsZVByb2Nlc3NpbmdTdGFydGVkOyl7aC5kZWJ1ZygiSVNPRmlsZSIsIkNyZWF0aW5nIG1lZGlhIGZyYWdtZW50IG9uIHRyYWNrICMiK3MuaWQrIiBmb3Igc2FtcGxlICIraS5uZXh0U2FtcGxlKTt2YXIgbj10aGlzLmNyZWF0ZUZyYWdtZW50KHMuaWQsaS5uZXh0U2FtcGxlLHMuc2VnbWVudFN0cmVhbSk7aWYobilzLnNlZ21lbnRTdHJlYW09bixpLm5leHRTYW1wbGUrKztlbHNlIGJyZWFrO2lmKChpLm5leHRTYW1wbGUlcy5uYl9zYW1wbGVzPT09MHx8dHx8aS5uZXh0U2FtcGxlPj1pLnNhbXBsZXMubGVuZ3RoKSYmKGguaW5mbygiSVNPRmlsZSIsIlNlbmRpbmcgZnJhZ21lbnRlZCBkYXRhIG9uIHRyYWNrICMiK3MuaWQrIiBmb3Igc2FtcGxlcyBbIitNYXRoLm1heCgwLGkubmV4dFNhbXBsZS1zLm5iX3NhbXBsZXMpKyIsIisoaS5uZXh0U2FtcGxlLTEpKyJdIiksaC5pbmZvKCJJU09GaWxlIiwiU2FtcGxlIGRhdGEgc2l6ZSBpbiBtZW1vcnk6ICIrdGhpcy5nZXRBbGxvY2F0ZWRTYW1wbGVEYXRhU2l6ZSgpKSx0aGlzLm9uU2VnbWVudCYmdGhpcy5vblNlZ21lbnQocy5pZCxzLnVzZXIscy5zZWdtZW50U3RyZWFtLmJ1ZmZlcixpLm5leHRTYW1wbGUsdHx8aS5uZXh0U2FtcGxlPj1pLnNhbXBsZXMubGVuZ3RoKSxzLnNlZ21lbnRTdHJlYW09bnVsbCxzIT09dGhpcy5mcmFnbWVudGVkVHJhY2tzW2VdKSlicmVha319aWYodGhpcy5vblNhbXBsZXMhPT1udWxsKWZvcihlPTA7ZTx0aGlzLmV4dHJhY3RlZFRyYWNrcy5sZW5ndGg7ZSsrKXt2YXIgZj10aGlzLmV4dHJhY3RlZFRyYWNrc1tlXTtmb3IoaT1mLnRyYWs7aS5uZXh0U2FtcGxlPGkuc2FtcGxlcy5sZW5ndGgmJnRoaXMuc2FtcGxlUHJvY2Vzc2luZ1N0YXJ0ZWQ7KXtoLmRlYnVnKCJJU09GaWxlIiwiRXhwb3J0aW5nIG9uIHRyYWNrICMiK2YuaWQrIiBzYW1wbGUgIyIraS5uZXh0U2FtcGxlKTt2YXIgZD10aGlzLmdldFNhbXBsZShpLGkubmV4dFNhbXBsZSk7aWYoZClpLm5leHRTYW1wbGUrKyxmLnNhbXBsZXMucHVzaChkKTtlbHNlIGJyZWFrO2lmKChpLm5leHRTYW1wbGUlZi5uYl9zYW1wbGVzPT09MHx8aS5uZXh0U2FtcGxlPj1pLnNhbXBsZXMubGVuZ3RoKSYmKGguZGVidWcoIklTT0ZpbGUiLCJTZW5kaW5nIHNhbXBsZXMgb24gdHJhY2sgIyIrZi5pZCsiIGZvciBzYW1wbGUgIitpLm5leHRTYW1wbGUpLHRoaXMub25TYW1wbGVzJiZ0aGlzLm9uU2FtcGxlcyhmLmlkLGYudXNlcixmLnNhbXBsZXMpLGYuc2FtcGxlcz1bXSxmIT09dGhpcy5leHRyYWN0ZWRUcmFja3NbZV0pKWJyZWFrfX19fSx1LnByb3RvdHlwZS5nZXRCb3g9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRCb3hlcyh0LCEwKTtyZXR1cm4gZS5sZW5ndGg/ZVswXTpudWxsfSx1LnByb3RvdHlwZS5nZXRCb3hlcz1mdW5jdGlvbih0LGUpe3ZhciBpPVtdO3JldHVybiB1Ll9zd2VlcC5jYWxsKHRoaXMsdCxpLGUpLGl9LHUuX3N3ZWVwPWZ1bmN0aW9uKHQsZSxpKXt0aGlzLnR5cGUmJnRoaXMudHlwZT09dCYmZS5wdXNoKHRoaXMpO2Zvcih2YXIgcyBpbiB0aGlzLmJveGVzKXtpZihlLmxlbmd0aCYmaSlyZXR1cm47dS5fc3dlZXAuY2FsbCh0aGlzLmJveGVzW3NdLHQsZSxpKX19LHUucHJvdG90eXBlLmdldFRyYWNrU2FtcGxlc0luZm89ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRUcmFja0J5SWQodCk7aWYoZSlyZXR1cm4gZS5zYW1wbGVzfSx1LnByb3RvdHlwZS5nZXRUcmFja1NhbXBsZT1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0VHJhY2tCeUlkKHQpLHM9dGhpcy5nZXRTYW1wbGUoaSxlKTtyZXR1cm4gc30sdS5wcm90b3R5cGUucmVsZWFzZVVzZWRTYW1wbGVzPWZ1bmN0aW9uKHQsZSl7dmFyIGk9MCxzPXRoaXMuZ2V0VHJhY2tCeUlkKHQpO3MubGFzdFZhbGlkU2FtcGxlfHwocy5sYXN0VmFsaWRTYW1wbGU9MCk7Zm9yKHZhciBuPXMubGFzdFZhbGlkU2FtcGxlO248ZTtuKyspaSs9dGhpcy5yZWxlYXNlU2FtcGxlKHMsbik7aC5pbmZvKCJJU09GaWxlIiwiVHJhY2sgIyIrdCsiIHJlbGVhc2VkIHNhbXBsZXMgdXAgdG8gIitlKyIgKHJlbGVhc2VkIHNpemU6ICIraSsiLCByZW1haW5pbmc6ICIrdGhpcy5zYW1wbGVzRGF0YVNpemUrIikiKSxzLmxhc3RWYWxpZFNhbXBsZT1lfSx1LnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3RoaXMuc2FtcGxlUHJvY2Vzc2luZ1N0YXJ0ZWQ9ITAsdGhpcy5wcm9jZXNzU2FtcGxlcyghMSl9LHUucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLnNhbXBsZVByb2Nlc3NpbmdTdGFydGVkPSExfSx1LnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2guaW5mbygiSVNPRmlsZSIsIkZsdXNoaW5nIHJlbWFpbmluZyBzYW1wbGVzIiksdGhpcy51cGRhdGVTYW1wbGVMaXN0cygpLHRoaXMucHJvY2Vzc1NhbXBsZXMoITApLHRoaXMuc3RyZWFtLmNsZWFuQnVmZmVycygpLHRoaXMuc3RyZWFtLmxvZ0J1ZmZlckxldmVsKCEwKX0sdS5wcm90b3R5cGUuc2Vla1RyYWNrPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcyxuLGY9MS8wLGQ9MCxjPTAsbTtpZihpLnNhbXBsZXMubGVuZ3RoPT09MClyZXR1cm4gaC5pbmZvKCJJU09GaWxlIiwiTm8gc2FtcGxlIGluIHRyYWNrLCBjYW5ub3Qgc2VlayEgVXNpbmcgdGltZSAiK2guZ2V0RHVyYXRpb25TdHJpbmcoMCwxKSsiIGFuZCBvZmZzZXQ6IDAiKSx7b2Zmc2V0OjAsdGltZTowfTtmb3Iocz0wO3M8aS5zYW1wbGVzLmxlbmd0aDtzKyspe2lmKG49aS5zYW1wbGVzW3NdLHM9PT0wKWM9MCxtPW4udGltZXNjYWxlO2Vsc2UgaWYobi5jdHM+dCpuLnRpbWVzY2FsZSl7Yz1zLTE7YnJlYWt9ZSYmbi5pc19zeW5jJiYoZD1zKX1mb3IoZSYmKGM9ZCksdD1pLnNhbXBsZXNbY10uY3RzLGkubmV4dFNhbXBsZT1jO2kuc2FtcGxlc1tjXS5hbHJlYWR5UmVhZD09PWkuc2FtcGxlc1tjXS5zaXplJiZpLnNhbXBsZXNbYysxXTspYysrO3JldHVybiBmPWkuc2FtcGxlc1tjXS5vZmZzZXQraS5zYW1wbGVzW2NdLmFscmVhZHlSZWFkLGguaW5mbygiSVNPRmlsZSIsIlNlZWtpbmcgdG8gIisoZT8iUkFQIjoiIikrIiBzYW1wbGUgIyIraS5uZXh0U2FtcGxlKyIgb24gdHJhY2sgIitpLnRraGQudHJhY2tfaWQrIiwgdGltZSAiK2guZ2V0RHVyYXRpb25TdHJpbmcodCxtKSsiIGFuZCBvZmZzZXQ6ICIrZikse29mZnNldDpmLHRpbWU6dC9tfX0sdS5wcm90b3R5cGUuc2Vlaz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMubW9vdixzLG4sZixkPXtvZmZzZXQ6MS8wLHRpbWU6MS8wfTtpZih0aGlzLm1vb3Ype2ZvcihmPTA7ZjxpLnRyYWtzLmxlbmd0aDtmKyspcz1pLnRyYWtzW2ZdLG49dGhpcy5zZWVrVHJhY2sodCxlLHMpLG4ub2Zmc2V0PGQub2Zmc2V0JiYoZC5vZmZzZXQ9bi5vZmZzZXQpLG4udGltZTxkLnRpbWUmJihkLnRpbWU9bi50aW1lKTtyZXR1cm4gaC5pbmZvKCJJU09GaWxlIiwiU2Vla2luZyBhdCB0aW1lICIraC5nZXREdXJhdGlvblN0cmluZyhkLnRpbWUsMSkrIiBuZWVkcyBhIGJ1ZmZlciB3aXRoIGEgZmlsZVN0YXJ0IHBvc2l0aW9uIG9mICIrZC5vZmZzZXQpLGQub2Zmc2V0PT09MS8wP2Q9e29mZnNldDp0aGlzLm5leHRQYXJzZVBvc2l0aW9uLHRpbWU6MH06ZC5vZmZzZXQ9dGhpcy5zdHJlYW0uZ2V0RW5kRmlsZVBvc2l0aW9uQWZ0ZXIoZC5vZmZzZXQpLGguaW5mbygiSVNPRmlsZSIsIkFkanVzdGVkIHNlZWsgcG9zaXRpb24gKGFmdGVyIGNoZWNraW5nIGRhdGEgYWxyZWFkeSBpbiBidWZmZXIpOiAiK2Qub2Zmc2V0KSxkfWVsc2UgdGhyb3ciQ2Fubm90IHNlZWs6IG1vb3Ygbm90IHJlY2VpdmVkISJ9LHUucHJvdG90eXBlLmVxdWFsPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5ib3hlcy5sZW5ndGgmJmU8dC5ib3hlcy5sZW5ndGg7KXt2YXIgaT10aGlzLmJveGVzW2VdLHM9dC5ib3hlc1tlXTtpZighci5ib3hFcXVhbChpLHMpKXJldHVybiExO2UrK31yZXR1cm4hMH0sRS5JU09GaWxlPXUsdS5wcm90b3R5cGUubGFzdEJveFN0YXJ0UG9zaXRpb249MCx1LnByb3RvdHlwZS5wYXJzaW5nTWRhdD1udWxsLHUucHJvdG90eXBlLm5leHRQYXJzZVBvc2l0aW9uPTAsdS5wcm90b3R5cGUuZGlzY2FyZE1kYXREYXRhPSExLHUucHJvdG90eXBlLnByb2Nlc3NJbmNvbXBsZXRlQm94PWZ1bmN0aW9uKHQpe3ZhciBlLGkscztyZXR1cm4gdC50eXBlPT09Im1kYXQiPyhlPW5ldyByW3QudHlwZSsiQm94Il0odC5zaXplKSx0aGlzLnBhcnNpbmdNZGF0PWUsdGhpcy5ib3hlcy5wdXNoKGUpLHRoaXMubWRhdHMucHVzaChlKSxlLnN0YXJ0PXQuc3RhcnQsZS5oZHJfc2l6ZT10Lmhkcl9zaXplLHRoaXMuc3RyZWFtLmFkZFVzZWRCeXRlcyhlLmhkcl9zaXplKSx0aGlzLmxhc3RCb3hTdGFydFBvc2l0aW9uPWUuc3RhcnQrZS5zaXplLHM9dGhpcy5zdHJlYW0uc2VlayhlLnN0YXJ0K2Uuc2l6ZSwhMSx0aGlzLmRpc2NhcmRNZGF0RGF0YSkscz8odGhpcy5wYXJzaW5nTWRhdD1udWxsLCEwKToodGhpcy5tb292U3RhcnRGb3VuZD90aGlzLm5leHRQYXJzZVBvc2l0aW9uPXRoaXMuc3RyZWFtLmZpbmRFbmRDb250aWd1b3VzQnVmKCk6dGhpcy5uZXh0UGFyc2VQb3NpdGlvbj1lLnN0YXJ0K2Uuc2l6ZSwhMSkpOih0LnR5cGU9PT0ibW9vdiImJih0aGlzLm1vb3ZTdGFydEZvdW5kPSEwLHRoaXMubWRhdHMubGVuZ3RoPT09MCYmKHRoaXMuaXNQcm9ncmVzc2l2ZT0hMCkpLGk9dGhpcy5zdHJlYW0ubWVyZ2VOZXh0QnVmZmVyP3RoaXMuc3RyZWFtLm1lcmdlTmV4dEJ1ZmZlcigpOiExLGk/KHRoaXMubmV4dFBhcnNlUG9zaXRpb249dGhpcy5zdHJlYW0uZ2V0RW5kUG9zaXRpb24oKSwhMCk6KHQudHlwZT90aGlzLm1vb3ZTdGFydEZvdW5kP3RoaXMubmV4dFBhcnNlUG9zaXRpb249dGhpcy5zdHJlYW0uZ2V0RW5kUG9zaXRpb24oKTp0aGlzLm5leHRQYXJzZVBvc2l0aW9uPXRoaXMuc3RyZWFtLmdldFBvc2l0aW9uKCkrdC5zaXplOnRoaXMubmV4dFBhcnNlUG9zaXRpb249dGhpcy5zdHJlYW0uZ2V0RW5kUG9zaXRpb24oKSwhMSkpfSx1LnByb3RvdHlwZS5oYXNJbmNvbXBsZXRlTWRhdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcnNpbmdNZGF0IT09bnVsbH0sdS5wcm90b3R5cGUucHJvY2Vzc0luY29tcGxldGVNZGF0PWZ1bmN0aW9uKCl7dmFyIHQsZTtyZXR1cm4gdD10aGlzLnBhcnNpbmdNZGF0LGU9dGhpcy5zdHJlYW0uc2Vlayh0LnN0YXJ0K3Quc2l6ZSwhMSx0aGlzLmRpc2NhcmRNZGF0RGF0YSksZT8oaC5kZWJ1ZygiSVNPRmlsZSIsIkZvdW5kICdtZGF0JyBlbmQgaW4gYnVmZmVyZWQgZGF0YSIpLHRoaXMucGFyc2luZ01kYXQ9bnVsbCwhMCk6KHRoaXMubmV4dFBhcnNlUG9zaXRpb249dGhpcy5zdHJlYW0uZmluZEVuZENvbnRpZ3VvdXNCdWYoKSwhMSl9LHUucHJvdG90eXBlLnJlc3RvcmVQYXJzZVBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyZWFtLnNlZWsodGhpcy5sYXN0Qm94U3RhcnRQb3NpdGlvbiwhMCx0aGlzLmRpc2NhcmRNZGF0RGF0YSl9LHUucHJvdG90eXBlLnNhdmVQYXJzZVBvc2l0aW9uPWZ1bmN0aW9uKCl7dGhpcy5sYXN0Qm94U3RhcnRQb3NpdGlvbj10aGlzLnN0cmVhbS5nZXRQb3NpdGlvbigpfSx1LnByb3RvdHlwZS51cGRhdGVVc2VkQnl0ZXM9ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5hZGRVc2VkQnl0ZXMmJih0LnR5cGU9PT0ibWRhdCI/KHRoaXMuc3RyZWFtLmFkZFVzZWRCeXRlcyh0Lmhkcl9zaXplKSx0aGlzLmRpc2NhcmRNZGF0RGF0YSYmdGhpcy5zdHJlYW0uYWRkVXNlZEJ5dGVzKHQuc2l6ZS10Lmhkcl9zaXplKSk6dGhpcy5zdHJlYW0uYWRkVXNlZEJ5dGVzKHQuc2l6ZSkpfSx1LnByb3RvdHlwZS5hZGQ9ci5Cb3gucHJvdG90eXBlLmFkZCx1LnByb3RvdHlwZS5hZGRCb3g9ci5Cb3gucHJvdG90eXBlLmFkZEJveCx1LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHQpe3ZhciBlPXR8fHt9O3RoaXMuYWRkKCJmdHlwIikuc2V0KCJtYWpvcl9icmFuZCIsZS5icmFuZHMmJmUuYnJhbmRzWzBdfHwiaXNvNCIpLnNldCgibWlub3JfdmVyc2lvbiIsMCkuc2V0KCJjb21wYXRpYmxlX2JyYW5kcyIsZS5icmFuZHN8fFsiaXNvNCJdKTt2YXIgaT10aGlzLmFkZCgibW9vdiIpO3JldHVybiBpLmFkZCgibXZoZCIpLnNldCgidGltZXNjYWxlIixlLnRpbWVzY2FsZXx8NjAwKS5zZXQoInJhdGUiLGUucmF0ZXx8NjU1MzYpLnNldCgiY3JlYXRpb25fdGltZSIsMCkuc2V0KCJtb2RpZmljYXRpb25fdGltZSIsMCkuc2V0KCJkdXJhdGlvbiIsZS5kdXJhdGlvbnx8MCkuc2V0KCJ2b2x1bWUiLGUud2lkdGg/MDoyNTYpLnNldCgibWF0cml4IixbNjU1MzYsMCwwLDAsNjU1MzYsMCwwLDAsMTA3Mzc0MTgyNF0pLnNldCgibmV4dF90cmFja19pZCIsMSksaS5hZGQoIm12ZXgiKSx0aGlzfSx1LnByb3RvdHlwZS5hZGRUcmFjaz1mdW5jdGlvbih0KXt0aGlzLm1vb3Z8fHRoaXMuaW5pdCh0KTt2YXIgZT10fHx7fTtlLndpZHRoPWUud2lkdGh8fDMyMCxlLmhlaWdodD1lLmhlaWdodHx8MzIwLGUuaWQ9ZS5pZHx8dGhpcy5tb292Lm12aGQubmV4dF90cmFja19pZCxlLnR5cGU9ZS50eXBlfHwiYXZjMSI7dmFyIGk9dGhpcy5tb292LmFkZCgidHJhayIpO3RoaXMubW9vdi5tdmhkLm5leHRfdHJhY2tfaWQ9ZS5pZCsxLGkuYWRkKCJ0a2hkIikuc2V0KCJmbGFncyIsci5US0hEX0ZMQUdfRU5BQkxFRHxyLlRLSERfRkxBR19JTl9NT1ZJRXxyLlRLSERfRkxBR19JTl9QUkVWSUVXKS5zZXQoImNyZWF0aW9uX3RpbWUiLDApLnNldCgibW9kaWZpY2F0aW9uX3RpbWUiLDApLnNldCgidHJhY2tfaWQiLGUuaWQpLnNldCgiZHVyYXRpb24iLGUuZHVyYXRpb258fDApLnNldCgibGF5ZXIiLGUubGF5ZXJ8fDApLnNldCgiYWx0ZXJuYXRlX2dyb3VwIiwwKS5zZXQoInZvbHVtZSIsMSkuc2V0KCJtYXRyaXgiLFswLDAsMCwwLDAsMCwwLDAsMF0pLnNldCgid2lkdGgiLGUud2lkdGg8PDE2KS5zZXQoImhlaWdodCIsZS5oZWlnaHQ8PDE2KTt2YXIgcz1pLmFkZCgibWRpYSIpO3MuYWRkKCJtZGhkIikuc2V0KCJjcmVhdGlvbl90aW1lIiwwKS5zZXQoIm1vZGlmaWNhdGlvbl90aW1lIiwwKS5zZXQoInRpbWVzY2FsZSIsZS50aW1lc2NhbGV8fDEpLnNldCgiZHVyYXRpb24iLGUubWVkaWFfZHVyYXRpb258fDApLnNldCgibGFuZ3VhZ2UiLGUubGFuZ3VhZ2V8fCJ1bmQiKSxzLmFkZCgiaGRsciIpLnNldCgiaGFuZGxlciIsZS5oZGxyfHwidmlkZSIpLnNldCgibmFtZSIsZS5uYW1lfHwiVHJhY2sgY3JlYXRlZCB3aXRoIE1QNEJveC5qcyIpLHMuYWRkKCJlbG5nIikuc2V0KCJleHRlbmRlZF9sYW5ndWFnZSIsZS5sYW5ndWFnZXx8ImZyLUZSIik7dmFyIG49cy5hZGQoIm1pbmYiKTtpZihyW2UudHlwZSsiU2FtcGxlRW50cnkiXSE9PXZvaWQgMCl7dmFyIGY9bmV3IHJbZS50eXBlKyJTYW1wbGVFbnRyeSJdO2YuZGF0YV9yZWZlcmVuY2VfaW5kZXg9MTt2YXIgZD0iIjtmb3IodmFyIGMgaW4gci5zYW1wbGVFbnRyeUNvZGVzKWZvcih2YXIgbT1yLnNhbXBsZUVudHJ5Q29kZXNbY10seD0wO3g8bS5sZW5ndGg7eCsrKWlmKG0uaW5kZXhPZihlLnR5cGUpPi0xKXtkPWM7YnJlYWt9c3dpdGNoKGQpe2Nhc2UiVmlzdWFsIjppZihuLmFkZCgidm1oZCIpLnNldCgiZ3JhcGhpY3Ntb2RlIiwwKS5zZXQoIm9wY29sb3IiLFswLDAsMF0pLGYuc2V0KCJ3aWR0aCIsZS53aWR0aCkuc2V0KCJoZWlnaHQiLGUuaGVpZ2h0KS5zZXQoImhvcml6cmVzb2x1dGlvbiIsNzI8PDE2KS5zZXQoInZlcnRyZXNvbHV0aW9uIiw3Mjw8MTYpLnNldCgiZnJhbWVfY291bnQiLDEpLnNldCgiY29tcHJlc3Nvcm5hbWUiLGUudHlwZSsiIENvbXByZXNzb3IiKS5zZXQoImRlcHRoIiwyNCksZS5hdmNEZWNvZGVyQ29uZmlnUmVjb3JkKXt2YXIgVT1uZXcgci5hdmNDQm94LGI9bmV3IG8oZS5hdmNEZWNvZGVyQ29uZmlnUmVjb3JkKTtVLnBhcnNlKGIpLGYuYWRkQm94KFUpfWJyZWFrO2Nhc2UiQXVkaW8iOm4uYWRkKCJzbWhkIikuc2V0KCJiYWxhbmNlIixlLmJhbGFuY2V8fDApLGYuc2V0KCJjaGFubmVsX2NvdW50IixlLmNoYW5uZWxfY291bnR8fDIpLnNldCgic2FtcGxlc2l6ZSIsZS5zYW1wbGVzaXplfHwxNikuc2V0KCJzYW1wbGVyYXRlIixlLnNhbXBsZXJhdGV8fDY1NTM2KTticmVhaztjYXNlIkhpbnQiOm4uYWRkKCJobWhkIik7YnJlYWs7Y2FzZSJTdWJ0aXRsZSI6c3dpdGNoKG4uYWRkKCJzdGhkIiksZS50eXBlKXtjYXNlInN0cHAiOmYuc2V0KCJuYW1lc3BhY2UiLGUubmFtZXNwYWNlfHwibm9uYW1lc3BhY2UiKS5zZXQoInNjaGVtYV9sb2NhdGlvbiIsZS5zY2hlbWFfbG9jYXRpb258fCIiKS5zZXQoImF1eGlsaWFyeV9taW1lX3R5cGVzIixlLmF1eGlsaWFyeV9taW1lX3R5cGVzfHwiIik7YnJlYWt9YnJlYWs7Y2FzZSJNZXRhZGF0YSI6bi5hZGQoIm5taGQiKTticmVhaztjYXNlIlN5c3RlbSI6bi5hZGQoIm5taGQiKTticmVhaztkZWZhdWx0Om4uYWRkKCJubWhkIik7YnJlYWt9ZS5kZXNjcmlwdGlvbiYmZi5hZGRCb3goZS5kZXNjcmlwdGlvbiksZS5kZXNjcmlwdGlvbl9ib3hlcyYmZS5kZXNjcmlwdGlvbl9ib3hlcy5mb3JFYWNoKGZ1bmN0aW9uKFMpe2YuYWRkQm94KFMpfSksbi5hZGQoImRpbmYiKS5hZGQoImRyZWYiKS5hZGRFbnRyeShuZXcgclsidXJsIEJveCJdKCkuc2V0KCJmbGFncyIsMSkpO3ZhciB3PW4uYWRkKCJzdGJsIik7cmV0dXJuIHcuYWRkKCJzdHNkIikuYWRkRW50cnkoZiksdy5hZGQoInN0dHMiKS5zZXQoInNhbXBsZV9jb3VudHMiLFtdKS5zZXQoInNhbXBsZV9kZWx0YXMiLFtdKSx3LmFkZCgic3RzYyIpLnNldCgiZmlyc3RfY2h1bmsiLFtdKS5zZXQoInNhbXBsZXNfcGVyX2NodW5rIixbXSkuc2V0KCJzYW1wbGVfZGVzY3JpcHRpb25faW5kZXgiLFtdKSx3LmFkZCgic3RjbyIpLnNldCgiY2h1bmtfb2Zmc2V0cyIsW10pLHcuYWRkKCJzdHN6Iikuc2V0KCJzYW1wbGVfc2l6ZXMiLFtdKSx0aGlzLm1vb3YubXZleC5hZGQoInRyZXgiKS5zZXQoInRyYWNrX2lkIixlLmlkKS5zZXQoImRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4IixlLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4fHwxKS5zZXQoImRlZmF1bHRfc2FtcGxlX2R1cmF0aW9uIixlLmRlZmF1bHRfc2FtcGxlX2R1cmF0aW9ufHwwKS5zZXQoImRlZmF1bHRfc2FtcGxlX3NpemUiLGUuZGVmYXVsdF9zYW1wbGVfc2l6ZXx8MCkuc2V0KCJkZWZhdWx0X3NhbXBsZV9mbGFncyIsZS5kZWZhdWx0X3NhbXBsZV9mbGFnc3x8MCksdGhpcy5idWlsZFRyYWtTYW1wbGVMaXN0cyhpKSxlLmlkfX0sci5Cb3gucHJvdG90eXBlLmNvbXB1dGVTaXplPWZ1bmN0aW9uKHQpe3ZhciBlPXR8fG5ldyBhO2UuZW5kaWFubmVzcz1hLkJJR19FTkRJQU4sdGhpcy53cml0ZShlKX0sdS5wcm90b3R5cGUuYWRkU2FtcGxlPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcz1pfHx7fSxuPXt9LGY9dGhpcy5nZXRUcmFja0J5SWQodCk7aWYoZiE9PW51bGwpe24ubnVtYmVyPWYuc2FtcGxlcy5sZW5ndGgsbi50cmFja19pZD1mLnRraGQudHJhY2tfaWQsbi50aW1lc2NhbGU9Zi5tZGlhLm1kaGQudGltZXNjYWxlLG4uZGVzY3JpcHRpb25faW5kZXg9cy5zYW1wbGVfZGVzY3JpcHRpb25faW5kZXg/cy5zYW1wbGVfZGVzY3JpcHRpb25faW5kZXgtMTowLG4uZGVzY3JpcHRpb249Zi5tZGlhLm1pbmYuc3RibC5zdHNkLmVudHJpZXNbbi5kZXNjcmlwdGlvbl9pbmRleF0sbi5kYXRhPWUsbi5zaXplPWUuYnl0ZUxlbmd0aCxuLmFscmVhZHlSZWFkPW4uc2l6ZSxuLmR1cmF0aW9uPXMuZHVyYXRpb258fDEsbi5jdHM9cy5jdHN8fDAsbi5kdHM9cy5kdHN8fDAsbi5pc19zeW5jPXMuaXNfc3luY3x8ITEsbi5pc19sZWFkaW5nPXMuaXNfbGVhZGluZ3x8MCxuLmRlcGVuZHNfb249cy5kZXBlbmRzX29ufHwwLG4uaXNfZGVwZW5kZWRfb249cy5pc19kZXBlbmRlZF9vbnx8MCxuLmhhc19yZWR1bmRhbmN5PXMuaGFzX3JlZHVuZGFuY3l8fDAsbi5kZWdyYWRhdGlvbl9wcmlvcml0eT1zLmRlZ3JhZGF0aW9uX3ByaW9yaXR5fHwwLG4ub2Zmc2V0PTAsbi5zdWJzYW1wbGVzPXMuc3Vic2FtcGxlcyxmLnNhbXBsZXMucHVzaChuKSxmLnNhbXBsZXNfc2l6ZSs9bi5zaXplLGYuc2FtcGxlc19kdXJhdGlvbis9bi5kdXJhdGlvbixmLmZpcnN0X2R0c3x8KGYuZmlyc3RfZHRzPXMuZHRzKSx0aGlzLnByb2Nlc3NTYW1wbGVzKCk7dmFyIGQ9dGhpcy5jcmVhdGVTaW5nbGVTYW1wbGVNb29mKG4pO3JldHVybiB0aGlzLmFkZEJveChkKSxkLmNvbXB1dGVTaXplKCksZC50cmFmc1swXS50cnVuc1swXS5kYXRhX29mZnNldD1kLnNpemUrOCx0aGlzLmFkZCgibWRhdCIpLmRhdGE9bmV3IFVpbnQ4QXJyYXkoZSksbn19LHUucHJvdG90eXBlLmNyZWF0ZVNpbmdsZVNhbXBsZU1vb2Y9ZnVuY3Rpb24odCl7dmFyIGU9MDt0LmlzX3N5bmM/ZT0xPDwyNTplPTY1NTM2O3ZhciBpPW5ldyByLm1vb2ZCb3g7aS5hZGQoIm1maGQiKS5zZXQoInNlcXVlbmNlX251bWJlciIsdGhpcy5uZXh0TW9vZk51bWJlciksdGhpcy5uZXh0TW9vZk51bWJlcisrO3ZhciBzPWkuYWRkKCJ0cmFmIiksbj10aGlzLmdldFRyYWNrQnlJZCh0LnRyYWNrX2lkKTtyZXR1cm4gcy5hZGQoInRmaGQiKS5zZXQoInRyYWNrX2lkIix0LnRyYWNrX2lkKS5zZXQoImZsYWdzIixyLlRGSERfRkxBR19ERUZBVUxUX0JBU0VfSVNfTU9PRikscy5hZGQoInRmZHQiKS5zZXQoImJhc2VNZWRpYURlY29kZVRpbWUiLHQuZHRzLShuLmZpcnN0X2R0c3x8MCkpLHMuYWRkKCJ0cnVuIikuc2V0KCJmbGFncyIsci5UUlVOX0ZMQUdTX0RBVEFfT0ZGU0VUfHIuVFJVTl9GTEFHU19EVVJBVElPTnxyLlRSVU5fRkxBR1NfU0laRXxyLlRSVU5fRkxBR1NfRkxBR1N8ci5UUlVOX0ZMQUdTX0NUU19PRkZTRVQpLnNldCgiZGF0YV9vZmZzZXQiLDApLnNldCgiZmlyc3Rfc2FtcGxlX2ZsYWdzIiwwKS5zZXQoInNhbXBsZV9jb3VudCIsMSkuc2V0KCJzYW1wbGVfZHVyYXRpb24iLFt0LmR1cmF0aW9uXSkuc2V0KCJzYW1wbGVfc2l6ZSIsW3Quc2l6ZV0pLnNldCgic2FtcGxlX2ZsYWdzIixbZV0pLnNldCgic2FtcGxlX2NvbXBvc2l0aW9uX3RpbWVfb2Zmc2V0IixbdC5jdHMtdC5kdHNdKSxpfSx1LnByb3RvdHlwZS5sYXN0TW9vZkluZGV4PTAsdS5wcm90b3R5cGUuc2FtcGxlc0RhdGFTaXplPTAsdS5wcm90b3R5cGUucmVzZXRUYWJsZXM9ZnVuY3Rpb24oKXt2YXIgdCxlLGkscyxuLGYsZCxjO2Zvcih0aGlzLmluaXRpYWxfZHVyYXRpb249dGhpcy5tb292Lm12aGQuZHVyYXRpb24sdGhpcy5tb292Lm12aGQuZHVyYXRpb249MCx0PTA7dDx0aGlzLm1vb3YudHJha3MubGVuZ3RoO3QrKyl7ZT10aGlzLm1vb3YudHJha3NbdF0sZS50a2hkLmR1cmF0aW9uPTAsZS5tZGlhLm1kaGQuZHVyYXRpb249MCxpPWUubWRpYS5taW5mLnN0Ymwuc3Rjb3x8ZS5tZGlhLm1pbmYuc3RibC5jbzY0LGkuY2h1bmtfb2Zmc2V0cz1bXSxzPWUubWRpYS5taW5mLnN0Ymwuc3RzYyxzLmZpcnN0X2NodW5rPVtdLHMuc2FtcGxlc19wZXJfY2h1bms9W10scy5zYW1wbGVfZGVzY3JpcHRpb25faW5kZXg9W10sbj1lLm1kaWEubWluZi5zdGJsLnN0c3p8fGUubWRpYS5taW5mLnN0Ymwuc3R6MixuLnNhbXBsZV9zaXplcz1bXSxmPWUubWRpYS5taW5mLnN0Ymwuc3R0cyxmLnNhbXBsZV9jb3VudHM9W10sZi5zYW1wbGVfZGVsdGFzPVtdLGQ9ZS5tZGlhLm1pbmYuc3RibC5jdHRzLGQmJihkLnNhbXBsZV9jb3VudHM9W10sZC5zYW1wbGVfb2Zmc2V0cz1bXSksYz1lLm1kaWEubWluZi5zdGJsLnN0c3M7dmFyIG09ZS5tZGlhLm1pbmYuc3RibC5ib3hlcy5pbmRleE9mKGMpO20hPS0xJiYoZS5tZGlhLm1pbmYuc3RibC5ib3hlc1ttXT1udWxsKX19LHUuaW5pdFNhbXBsZUdyb3Vwcz1mdW5jdGlvbih0LGUsaSxzLG4pe3ZhciBmLGQsYyxtO2Z1bmN0aW9uIHgoVSxiLHcpe3RoaXMuZ3JvdXBpbmdfdHlwZT1VLHRoaXMuZ3JvdXBpbmdfdHlwZV9wYXJhbWV0ZXI9Yix0aGlzLnNiZ3A9dyx0aGlzLmxhc3Rfc2FtcGxlX2luX3J1bj0tMSx0aGlzLmVudHJ5X2luZGV4PS0xfWZvcihlJiYoZS5zYW1wbGVfZ3JvdXBzX2luZm89W10pLHQuc2FtcGxlX2dyb3Vwc19pbmZvfHwodC5zYW1wbGVfZ3JvdXBzX2luZm89W10pLGQ9MDtkPGkubGVuZ3RoO2QrKyl7Zm9yKG09aVtkXS5ncm91cGluZ190eXBlKyIvIitpW2RdLmdyb3VwaW5nX3R5cGVfcGFyYW1ldGVyLGM9bmV3IHgoaVtkXS5ncm91cGluZ190eXBlLGlbZF0uZ3JvdXBpbmdfdHlwZV9wYXJhbWV0ZXIsaVtkXSksZSYmKGUuc2FtcGxlX2dyb3Vwc19pbmZvW21dPWMpLHQuc2FtcGxlX2dyb3Vwc19pbmZvW21dfHwodC5zYW1wbGVfZ3JvdXBzX2luZm9bbV09YyksZj0wO2Y8cy5sZW5ndGg7ZisrKXNbZl0uZ3JvdXBpbmdfdHlwZT09PWlbZF0uZ3JvdXBpbmdfdHlwZSYmKGMuZGVzY3JpcHRpb249c1tmXSxjLmRlc2NyaXB0aW9uLnVzZWQ9ITApO2lmKG4pZm9yKGY9MDtmPG4ubGVuZ3RoO2YrKyluW2ZdLmdyb3VwaW5nX3R5cGU9PT1pW2RdLmdyb3VwaW5nX3R5cGUmJihjLmZyYWdtZW50X2Rlc2NyaXB0aW9uPW5bZl0sYy5mcmFnbWVudF9kZXNjcmlwdGlvbi51c2VkPSEwLGMuaXNfZnJhZ21lbnQ9ITApfWlmKGUpe2lmKG4pZm9yKGQ9MDtkPG4ubGVuZ3RoO2QrKykhbltkXS51c2VkJiZuW2RdLnZlcnNpb24+PTImJihtPW5bZF0uZ3JvdXBpbmdfdHlwZSsiLzAiLGM9bmV3IHgobltkXS5ncm91cGluZ190eXBlLDApLGMuaXNfZnJhZ21lbnQ9ITAsZS5zYW1wbGVfZ3JvdXBzX2luZm9bbV18fChlLnNhbXBsZV9ncm91cHNfaW5mb1ttXT1jKSl9ZWxzZSBmb3IoZD0wO2Q8cy5sZW5ndGg7ZCsrKSFzW2RdLnVzZWQmJnNbZF0udmVyc2lvbj49MiYmKG09c1tkXS5ncm91cGluZ190eXBlKyIvMCIsYz1uZXcgeChzW2RdLmdyb3VwaW5nX3R5cGUsMCksdC5zYW1wbGVfZ3JvdXBzX2luZm9bbV18fCh0LnNhbXBsZV9ncm91cHNfaW5mb1ttXT1jKSl9LHUuc2V0U2FtcGxlR3JvdXBQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBuLGY7ZS5zYW1wbGVfZ3JvdXBzPVtdO2ZvcihuIGluIHMpaWYoZS5zYW1wbGVfZ3JvdXBzW25dPXt9LGUuc2FtcGxlX2dyb3Vwc1tuXS5ncm91cGluZ190eXBlPXNbbl0uZ3JvdXBpbmdfdHlwZSxlLnNhbXBsZV9ncm91cHNbbl0uZ3JvdXBpbmdfdHlwZV9wYXJhbWV0ZXI9c1tuXS5ncm91cGluZ190eXBlX3BhcmFtZXRlcixpPj1zW25dLmxhc3Rfc2FtcGxlX2luX3J1biYmKHNbbl0ubGFzdF9zYW1wbGVfaW5fcnVuPDAmJihzW25dLmxhc3Rfc2FtcGxlX2luX3J1bj0wKSxzW25dLmVudHJ5X2luZGV4Kyssc1tuXS5lbnRyeV9pbmRleDw9c1tuXS5zYmdwLmVudHJpZXMubGVuZ3RoLTEmJihzW25dLmxhc3Rfc2FtcGxlX2luX3J1bis9c1tuXS5zYmdwLmVudHJpZXNbc1tuXS5lbnRyeV9pbmRleF0uc2FtcGxlX2NvdW50KSksc1tuXS5lbnRyeV9pbmRleDw9c1tuXS5zYmdwLmVudHJpZXMubGVuZ3RoLTE/ZS5zYW1wbGVfZ3JvdXBzW25dLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PXNbbl0uc2JncC5lbnRyaWVzW3Nbbl0uZW50cnlfaW5kZXhdLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4OmUuc2FtcGxlX2dyb3Vwc1tuXS5ncm91cF9kZXNjcmlwdGlvbl9pbmRleD0tMSxlLnNhbXBsZV9ncm91cHNbbl0uZ3JvdXBfZGVzY3JpcHRpb25faW5kZXghPT0wKXt2YXIgZDtzW25dLmZyYWdtZW50X2Rlc2NyaXB0aW9uP2Q9c1tuXS5mcmFnbWVudF9kZXNjcmlwdGlvbjpkPXNbbl0uZGVzY3JpcHRpb24sZS5zYW1wbGVfZ3JvdXBzW25dLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PjA/KGUuc2FtcGxlX2dyb3Vwc1tuXS5ncm91cF9kZXNjcmlwdGlvbl9pbmRleD42NTUzNT9mPShlLnNhbXBsZV9ncm91cHNbbl0uZ3JvdXBfZGVzY3JpcHRpb25faW5kZXg+PjE2KS0xOmY9ZS5zYW1wbGVfZ3JvdXBzW25dLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4LTEsZCYmZj49MCYmKGUuc2FtcGxlX2dyb3Vwc1tuXS5kZXNjcmlwdGlvbj1kLmVudHJpZXNbZl0pKTpkJiZkLnZlcnNpb24+PTImJmQuZGVmYXVsdF9ncm91cF9kZXNjcmlwdGlvbl9pbmRleD4wJiYoZS5zYW1wbGVfZ3JvdXBzW25dLmRlc2NyaXB0aW9uPWQuZW50cmllc1tkLmRlZmF1bHRfZ3JvdXBfZGVzY3JpcHRpb25faW5kZXgtMV0pfX0sdS5wcm9jZXNzX3NkdHA9ZnVuY3Rpb24odCxlLGkpe2UmJih0PyhlLmlzX2xlYWRpbmc9dC5pc19sZWFkaW5nW2ldLGUuZGVwZW5kc19vbj10LnNhbXBsZV9kZXBlbmRzX29uW2ldLGUuaXNfZGVwZW5kZWRfb249dC5zYW1wbGVfaXNfZGVwZW5kZWRfb25baV0sZS5oYXNfcmVkdW5kYW5jeT10LnNhbXBsZV9oYXNfcmVkdW5kYW5jeVtpXSk6KGUuaXNfbGVhZGluZz0wLGUuZGVwZW5kc19vbj0wLGUuaXNfZGVwZW5kZWRfb249MCxlLmhhc19yZWR1bmRhbmN5PTApKX0sdS5wcm90b3R5cGUuYnVpbGRTYW1wbGVMaXN0cz1mdW5jdGlvbigpe3ZhciB0LGU7Zm9yKHQ9MDt0PHRoaXMubW9vdi50cmFrcy5sZW5ndGg7dCsrKWU9dGhpcy5tb292LnRyYWtzW3RdLHRoaXMuYnVpbGRUcmFrU2FtcGxlTGlzdHMoZSl9LHUucHJvdG90eXBlLmJ1aWxkVHJha1NhbXBsZUxpc3RzPWZ1bmN0aW9uKHQpe3ZhciBlLGkscyxuLGYsZCxjLG0seCxVLGIsdyxTLEYsQix6LEksVCxDLEwsUCxSLGssRDtpZih0LnNhbXBsZXM9W10sdC5zYW1wbGVzX2R1cmF0aW9uPTAsdC5zYW1wbGVzX3NpemU9MCxpPXQubWRpYS5taW5mLnN0Ymwuc3Rjb3x8dC5tZGlhLm1pbmYuc3RibC5jbzY0LHM9dC5tZGlhLm1pbmYuc3RibC5zdHNjLG49dC5tZGlhLm1pbmYuc3RibC5zdHN6fHx0Lm1kaWEubWluZi5zdGJsLnN0ejIsZj10Lm1kaWEubWluZi5zdGJsLnN0dHMsZD10Lm1kaWEubWluZi5zdGJsLmN0dHMsYz10Lm1kaWEubWluZi5zdGJsLnN0c3MsbT10Lm1kaWEubWluZi5zdGJsLnN0c2QseD10Lm1kaWEubWluZi5zdGJsLnN1YnMsdz10Lm1kaWEubWluZi5zdGJsLnN0ZHAsVT10Lm1kaWEubWluZi5zdGJsLnNiZ3BzLGI9dC5tZGlhLm1pbmYuc3RibC5zZ3BkcyxUPS0xLEM9LTEsTD0tMSxQPS0xLFI9MCxrPTAsRD0wLHUuaW5pdFNhbXBsZUdyb3Vwcyh0LG51bGwsVSxiKSwhKHR5cGVvZiBuPiJ1Iikpe2ZvcihlPTA7ZTxuLnNhbXBsZV9zaXplcy5sZW5ndGg7ZSsrKXt2YXIgQT17fTtBLm51bWJlcj1lLEEudHJhY2tfaWQ9dC50a2hkLnRyYWNrX2lkLEEudGltZXNjYWxlPXQubWRpYS5tZGhkLnRpbWVzY2FsZSxBLmFscmVhZHlSZWFkPTAsdC5zYW1wbGVzW2VdPUEsQS5zaXplPW4uc2FtcGxlX3NpemVzW2VdLHQuc2FtcGxlc19zaXplKz1BLnNpemUsZT09PTA/KEY9MSxTPTAsQS5jaHVua19pbmRleD1GLEEuY2h1bmtfcnVuX2luZGV4PVMsST1zLnNhbXBsZXNfcGVyX2NodW5rW1NdLHo9MCxTKzE8cy5maXJzdF9jaHVuay5sZW5ndGg/Qj1zLmZpcnN0X2NodW5rW1MrMV0tMTpCPTEvMCk6ZTxJPyhBLmNodW5rX2luZGV4PUYsQS5jaHVua19ydW5faW5kZXg9Uyk6KEYrKyxBLmNodW5rX2luZGV4PUYsej0wLEY8PUJ8fChTKyssUysxPHMuZmlyc3RfY2h1bmsubGVuZ3RoP0I9cy5maXJzdF9jaHVua1tTKzFdLTE6Qj0xLzApLEEuY2h1bmtfcnVuX2luZGV4PVMsSSs9cy5zYW1wbGVzX3Blcl9jaHVua1tTXSksQS5kZXNjcmlwdGlvbl9pbmRleD1zLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleFtBLmNodW5rX3J1bl9pbmRleF0tMSxBLmRlc2NyaXB0aW9uPW0uZW50cmllc1tBLmRlc2NyaXB0aW9uX2luZGV4XSxBLm9mZnNldD1pLmNodW5rX29mZnNldHNbQS5jaHVua19pbmRleC0xXSt6LHorPUEuc2l6ZSxlPlQmJihDKyssVDwwJiYoVD0wKSxUKz1mLnNhbXBsZV9jb3VudHNbQ10pLGU+MD8odC5zYW1wbGVzW2UtMV0uZHVyYXRpb249Zi5zYW1wbGVfZGVsdGFzW0NdLHQuc2FtcGxlc19kdXJhdGlvbis9dC5zYW1wbGVzW2UtMV0uZHVyYXRpb24sQS5kdHM9dC5zYW1wbGVzW2UtMV0uZHRzK3Quc2FtcGxlc1tlLTFdLmR1cmF0aW9uKTpBLmR0cz0wLGQ/KGU+PUwmJihQKyssTDwwJiYoTD0wKSxMKz1kLnNhbXBsZV9jb3VudHNbUF0pLEEuY3RzPXQuc2FtcGxlc1tlXS5kdHMrZC5zYW1wbGVfb2Zmc2V0c1tQXSk6QS5jdHM9QS5kdHMsYz8oZT09Yy5zYW1wbGVfbnVtYmVyc1tSXS0xPyhBLmlzX3N5bmM9ITAsUisrKTooQS5pc19zeW5jPSExLEEuZGVncmFkYXRpb25fcHJpb3JpdHk9MCkseCYmeC5lbnRyaWVzW2tdLnNhbXBsZV9kZWx0YStEPT1lKzEmJihBLnN1YnNhbXBsZXM9eC5lbnRyaWVzW2tdLnN1YnNhbXBsZXMsRCs9eC5lbnRyaWVzW2tdLnNhbXBsZV9kZWx0YSxrKyspKTpBLmlzX3N5bmM9ITAsdS5wcm9jZXNzX3NkdHAodC5tZGlhLm1pbmYuc3RibC5zZHRwLEEsQS5udW1iZXIpLHc/QS5kZWdyYWRhdGlvbl9wcmlvcml0eT13LnByaW9yaXR5W2VdOkEuZGVncmFkYXRpb25fcHJpb3JpdHk9MCx4JiZ4LmVudHJpZXNba10uc2FtcGxlX2RlbHRhK0Q9PWUmJihBLnN1YnNhbXBsZXM9eC5lbnRyaWVzW2tdLnN1YnNhbXBsZXMsRCs9eC5lbnRyaWVzW2tdLnNhbXBsZV9kZWx0YSksKFUubGVuZ3RoPjB8fGIubGVuZ3RoPjApJiZ1LnNldFNhbXBsZUdyb3VwUHJvcGVydGllcyh0LEEsZSx0LnNhbXBsZV9ncm91cHNfaW5mbyl9ZT4wJiYodC5zYW1wbGVzW2UtMV0uZHVyYXRpb249TWF0aC5tYXgodC5tZGlhLm1kaGQuZHVyYXRpb24tdC5zYW1wbGVzW2UtMV0uZHRzLDApLHQuc2FtcGxlc19kdXJhdGlvbis9dC5zYW1wbGVzW2UtMV0uZHVyYXRpb24pfX0sdS5wcm90b3R5cGUudXBkYXRlU2FtcGxlTGlzdHM9ZnVuY3Rpb24oKXt2YXIgdCxlLGkscyxuLGYsZCxjLG0seCxVLGIsdyxTLEY7aWYodGhpcy5tb292IT09dm9pZCAwKXtmb3IoO3RoaXMubGFzdE1vb2ZJbmRleDx0aGlzLm1vb2ZzLmxlbmd0aDspaWYobT10aGlzLm1vb2ZzW3RoaXMubGFzdE1vb2ZJbmRleF0sdGhpcy5sYXN0TW9vZkluZGV4KyssbS50eXBlPT0ibW9vZiIpZm9yKHg9bSx0PTA7dDx4LnRyYWZzLmxlbmd0aDt0Kyspe2ZvcihVPXgudHJhZnNbdF0sYj10aGlzLmdldFRyYWNrQnlJZChVLnRmaGQudHJhY2tfaWQpLHc9dGhpcy5nZXRUcmV4QnlJZChVLnRmaGQudHJhY2tfaWQpLFUudGZoZC5mbGFncyZyLlRGSERfRkxBR19TQU1QTEVfREVTQz9zPVUudGZoZC5kZWZhdWx0X3NhbXBsZV9kZXNjcmlwdGlvbl9pbmRleDpzPXc/dy5kZWZhdWx0X3NhbXBsZV9kZXNjcmlwdGlvbl9pbmRleDoxLFUudGZoZC5mbGFncyZyLlRGSERfRkxBR19TQU1QTEVfRFVSP249VS50ZmhkLmRlZmF1bHRfc2FtcGxlX2R1cmF0aW9uOm49dz93LmRlZmF1bHRfc2FtcGxlX2R1cmF0aW9uOjAsVS50ZmhkLmZsYWdzJnIuVEZIRF9GTEFHX1NBTVBMRV9TSVpFP2Y9VS50ZmhkLmRlZmF1bHRfc2FtcGxlX3NpemU6Zj13P3cuZGVmYXVsdF9zYW1wbGVfc2l6ZTowLFUudGZoZC5mbGFncyZyLlRGSERfRkxBR19TQU1QTEVfRkxBR1M/ZD1VLnRmaGQuZGVmYXVsdF9zYW1wbGVfZmxhZ3M6ZD13P3cuZGVmYXVsdF9zYW1wbGVfZmxhZ3M6MCxVLnNhbXBsZV9udW1iZXI9MCxVLnNiZ3BzLmxlbmd0aD4wJiZ1LmluaXRTYW1wbGVHcm91cHMoYixVLFUuc2JncHMsYi5tZGlhLm1pbmYuc3RibC5zZ3BkcyxVLnNncGRzKSxlPTA7ZTxVLnRydW5zLmxlbmd0aDtlKyspe3ZhciBCPVUudHJ1bnNbZV07Zm9yKGk9MDtpPEIuc2FtcGxlX2NvdW50O2krKyl7Uz17fSxTLm1vb2ZfbnVtYmVyPXRoaXMubGFzdE1vb2ZJbmRleCxTLm51bWJlcl9pbl90cmFmPVUuc2FtcGxlX251bWJlcixVLnNhbXBsZV9udW1iZXIrKyxTLm51bWJlcj1iLnNhbXBsZXMubGVuZ3RoLFUuZmlyc3Rfc2FtcGxlX2luZGV4PWIuc2FtcGxlcy5sZW5ndGgsYi5zYW1wbGVzLnB1c2goUyksUy50cmFja19pZD1iLnRraGQudHJhY2tfaWQsUy50aW1lc2NhbGU9Yi5tZGlhLm1kaGQudGltZXNjYWxlLFMuZGVzY3JpcHRpb25faW5kZXg9cy0xLFMuZGVzY3JpcHRpb249Yi5tZGlhLm1pbmYuc3RibC5zdHNkLmVudHJpZXNbUy5kZXNjcmlwdGlvbl9pbmRleF0sUy5zaXplPWYsQi5mbGFncyZyLlRSVU5fRkxBR1NfU0laRSYmKFMuc2l6ZT1CLnNhbXBsZV9zaXplW2ldKSxiLnNhbXBsZXNfc2l6ZSs9Uy5zaXplLFMuZHVyYXRpb249bixCLmZsYWdzJnIuVFJVTl9GTEFHU19EVVJBVElPTiYmKFMuZHVyYXRpb249Qi5zYW1wbGVfZHVyYXRpb25baV0pLGIuc2FtcGxlc19kdXJhdGlvbis9Uy5kdXJhdGlvbixiLmZpcnN0X3RyYWZfbWVyZ2VkfHxpPjA/Uy5kdHM9Yi5zYW1wbGVzW2Iuc2FtcGxlcy5sZW5ndGgtMl0uZHRzK2Iuc2FtcGxlc1tiLnNhbXBsZXMubGVuZ3RoLTJdLmR1cmF0aW9uOihVLnRmZHQ/Uy5kdHM9VS50ZmR0LmJhc2VNZWRpYURlY29kZVRpbWU6Uy5kdHM9MCxiLmZpcnN0X3RyYWZfbWVyZ2VkPSEwKSxTLmN0cz1TLmR0cyxCLmZsYWdzJnIuVFJVTl9GTEFHU19DVFNfT0ZGU0VUJiYoUy5jdHM9Uy5kdHMrQi5zYW1wbGVfY29tcG9zaXRpb25fdGltZV9vZmZzZXRbaV0pLEY9ZCxCLmZsYWdzJnIuVFJVTl9GTEFHU19GTEFHUz9GPUIuc2FtcGxlX2ZsYWdzW2ldOmk9PT0wJiZCLmZsYWdzJnIuVFJVTl9GTEFHU19GSVJTVF9GTEFHJiYoRj1CLmZpcnN0X3NhbXBsZV9mbGFncyksUy5pc19zeW5jPSEoRj4+MTYmMSksUy5pc19sZWFkaW5nPUY+PjI2JjMsUy5kZXBlbmRzX29uPUY+PjI0JjMsUy5pc19kZXBlbmRlZF9vbj1GPj4yMiYzLFMuaGFzX3JlZHVuZGFuY3k9Rj4+MjAmMyxTLmRlZ3JhZGF0aW9uX3ByaW9yaXR5PUYmNjU1MzU7dmFyIHo9ISEoVS50ZmhkLmZsYWdzJnIuVEZIRF9GTEFHX0JBU0VfREFUQV9PRkZTRVQpLEk9ISEoVS50ZmhkLmZsYWdzJnIuVEZIRF9GTEFHX0RFRkFVTFRfQkFTRV9JU19NT09GKSxUPSEhKEIuZmxhZ3Mmci5UUlVOX0ZMQUdTX0RBVEFfT0ZGU0VUKSxDPTA7ej9DPVUudGZoZC5iYXNlX2RhdGFfb2Zmc2V0Okl8fGU9PT0wP0M9eC5zdGFydDpDPWMsZT09PTAmJmk9PT0wP1Q/Uy5vZmZzZXQ9QytCLmRhdGFfb2Zmc2V0OlMub2Zmc2V0PUM6Uy5vZmZzZXQ9YyxjPVMub2Zmc2V0K1Muc2l6ZSwoVS5zYmdwcy5sZW5ndGg+MHx8VS5zZ3Bkcy5sZW5ndGg+MHx8Yi5tZGlhLm1pbmYuc3RibC5zYmdwcy5sZW5ndGg+MHx8Yi5tZGlhLm1pbmYuc3RibC5zZ3Bkcy5sZW5ndGg+MCkmJnUuc2V0U2FtcGxlR3JvdXBQcm9wZXJ0aWVzKGIsUyxTLm51bWJlcl9pbl90cmFmLFUuc2FtcGxlX2dyb3Vwc19pbmZvKX19aWYoVS5zdWJzKXtiLmhhc19mcmFnbWVudF9zdWJzYW1wbGVzPSEwO3ZhciBMPVUuZmlyc3Rfc2FtcGxlX2luZGV4O2ZvcihlPTA7ZTxVLnN1YnMuZW50cmllcy5sZW5ndGg7ZSsrKUwrPVUuc3Vicy5lbnRyaWVzW2VdLnNhbXBsZV9kZWx0YSxTPWIuc2FtcGxlc1tMLTFdLFMuc3Vic2FtcGxlcz1VLnN1YnMuZW50cmllc1tlXS5zdWJzYW1wbGVzfX19fSx1LnByb3RvdHlwZS5nZXRTYW1wbGU9ZnVuY3Rpb24odCxlKXt2YXIgaSxzPXQuc2FtcGxlc1tlXTtpZighdGhpcy5tb292KXJldHVybiBudWxsO2lmKCFzLmRhdGEpcy5kYXRhPW5ldyBVaW50OEFycmF5KHMuc2l6ZSkscy5hbHJlYWR5UmVhZD0wLHRoaXMuc2FtcGxlc0RhdGFTaXplKz1zLnNpemUsaC5kZWJ1ZygiSVNPRmlsZSIsIkFsbG9jYXRpbmcgc2FtcGxlICMiK2UrIiBvbiB0cmFjayAjIit0LnRraGQudHJhY2tfaWQrIiBvZiBzaXplICIrcy5zaXplKyIgKHRvdGFsOiAiK3RoaXMuc2FtcGxlc0RhdGFTaXplKyIpIik7ZWxzZSBpZihzLmFscmVhZHlSZWFkPT1zLnNpemUpcmV0dXJuIHM7Zm9yKDs7KXt2YXIgbj10aGlzLnN0cmVhbS5maW5kUG9zaXRpb24oITAscy5vZmZzZXQrcy5hbHJlYWR5UmVhZCwhMSk7aWYobj4tMSl7aT10aGlzLnN0cmVhbS5idWZmZXJzW25dO3ZhciBmPWkuYnl0ZUxlbmd0aC0ocy5vZmZzZXQrcy5hbHJlYWR5UmVhZC1pLmZpbGVTdGFydCk7aWYocy5zaXplLXMuYWxyZWFkeVJlYWQ8PWYpcmV0dXJuIGguZGVidWcoIklTT0ZpbGUiLCJHZXR0aW5nIHNhbXBsZSAjIitlKyIgZGF0YSAoYWxyZWFkeVJlYWQ6ICIrcy5hbHJlYWR5UmVhZCsiIG9mZnNldDogIisocy5vZmZzZXQrcy5hbHJlYWR5UmVhZC1pLmZpbGVTdGFydCkrIiByZWFkIHNpemU6ICIrKHMuc2l6ZS1zLmFscmVhZHlSZWFkKSsiIGZ1bGwgc2l6ZTogIitzLnNpemUrIikiKSxhLm1lbWNweShzLmRhdGEuYnVmZmVyLHMuYWxyZWFkeVJlYWQsaSxzLm9mZnNldCtzLmFscmVhZHlSZWFkLWkuZmlsZVN0YXJ0LHMuc2l6ZS1zLmFscmVhZHlSZWFkKSxpLnVzZWRCeXRlcys9cy5zaXplLXMuYWxyZWFkeVJlYWQsdGhpcy5zdHJlYW0ubG9nQnVmZmVyTGV2ZWwoKSxzLmFscmVhZHlSZWFkPXMuc2l6ZSxzO2lmKGY9PT0wKXJldHVybiBudWxsO2guZGVidWcoIklTT0ZpbGUiLCJHZXR0aW5nIHNhbXBsZSAjIitlKyIgcGFydGlhbCBkYXRhIChhbHJlYWR5UmVhZDogIitzLmFscmVhZHlSZWFkKyIgb2Zmc2V0OiAiKyhzLm9mZnNldCtzLmFscmVhZHlSZWFkLWkuZmlsZVN0YXJ0KSsiIHJlYWQgc2l6ZTogIitmKyIgZnVsbCBzaXplOiAiK3Muc2l6ZSsiKSIpLGEubWVtY3B5KHMuZGF0YS5idWZmZXIscy5hbHJlYWR5UmVhZCxpLHMub2Zmc2V0K3MuYWxyZWFkeVJlYWQtaS5maWxlU3RhcnQsZikscy5hbHJlYWR5UmVhZCs9ZixpLnVzZWRCeXRlcys9Zix0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCgpfWVsc2UgcmV0dXJuIG51bGx9fSx1LnByb3RvdHlwZS5yZWxlYXNlU2FtcGxlPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dC5zYW1wbGVzW2VdO3JldHVybiBpLmRhdGE/KHRoaXMuc2FtcGxlc0RhdGFTaXplLT1pLnNpemUsaS5kYXRhPW51bGwsaS5hbHJlYWR5UmVhZD0wLGkuc2l6ZSk6MH0sdS5wcm90b3R5cGUuZ2V0QWxsb2NhdGVkU2FtcGxlRGF0YVNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zYW1wbGVzRGF0YVNpemV9LHUucHJvdG90eXBlLmdldENvZGVjcz1mdW5jdGlvbigpe3ZhciB0LGU9IiI7Zm9yKHQ9MDt0PHRoaXMubW9vdi50cmFrcy5sZW5ndGg7dCsrKXt2YXIgaT10aGlzLm1vb3YudHJha3NbdF07dD4wJiYoZSs9IiwiKSxlKz1pLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1swXS5nZXRDb2RlYygpfXJldHVybiBlfSx1LnByb3RvdHlwZS5nZXRUcmV4QnlJZD1mdW5jdGlvbih0KXt2YXIgZTtpZighdGhpcy5tb292fHwhdGhpcy5tb292Lm12ZXgpcmV0dXJuIG51bGw7Zm9yKGU9MDtlPHRoaXMubW9vdi5tdmV4LnRyZXhzLmxlbmd0aDtlKyspe3ZhciBpPXRoaXMubW9vdi5tdmV4LnRyZXhzW2VdO2lmKGkudHJhY2tfaWQ9PXQpcmV0dXJuIGl9cmV0dXJuIG51bGx9LHUucHJvdG90eXBlLmdldFRyYWNrQnlJZD1mdW5jdGlvbih0KXtpZih0aGlzLm1vb3Y9PT12b2lkIDApcmV0dXJuIG51bGw7Zm9yKHZhciBlPTA7ZTx0aGlzLm1vb3YudHJha3MubGVuZ3RoO2UrKyl7dmFyIGk9dGhpcy5tb292LnRyYWtzW2VdO2lmKGkudGtoZC50cmFja19pZD09dClyZXR1cm4gaX1yZXR1cm4gbnVsbH0sdS5wcm90b3R5cGUuaXRlbXM9W10sdS5wcm90b3R5cGUuaXRlbXNEYXRhU2l6ZT0wLHUucHJvdG90eXBlLmZsYXR0ZW5JdGVtSW5mbz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuaXRlbXMsZSxpLHMsbj10aGlzLm1ldGE7aWYobiE9bnVsbCYmbi5oZGxyIT09dm9pZCAwJiZuLmlpbmYhPT12b2lkIDApe2ZvcihlPTA7ZTxuLmlpbmYuaXRlbV9pbmZvcy5sZW5ndGg7ZSsrKXM9e30scy5pZD1uLmlpbmYuaXRlbV9pbmZvc1tlXS5pdGVtX0lELHRbcy5pZF09cyxzLnJlZl90bz1bXSxzLm5hbWU9bi5paW5mLml0ZW1faW5mb3NbZV0uaXRlbV9uYW1lLG4uaWluZi5pdGVtX2luZm9zW2VdLnByb3RlY3Rpb25faW5kZXg+MCYmKHMucHJvdGVjdGlvbj1uLmlwcm8ucHJvdGVjdGlvbnNbbi5paW5mLml0ZW1faW5mb3NbZV0ucHJvdGVjdGlvbl9pbmRleC0xXSksbi5paW5mLml0ZW1faW5mb3NbZV0uaXRlbV90eXBlP3MudHlwZT1uLmlpbmYuaXRlbV9pbmZvc1tlXS5pdGVtX3R5cGU6cy50eXBlPSJtaW1lIixzLmNvbnRlbnRfdHlwZT1uLmlpbmYuaXRlbV9pbmZvc1tlXS5jb250ZW50X3R5cGUscy5jb250ZW50X2VuY29kaW5nPW4uaWluZi5pdGVtX2luZm9zW2VdLmNvbnRlbnRfZW5jb2Rpbmc7aWYobi5pbG9jKWZvcihlPTA7ZTxuLmlsb2MuaXRlbXMubGVuZ3RoO2UrKyl7dmFyIGY9bi5pbG9jLml0ZW1zW2VdO3N3aXRjaChzPXRbZi5pdGVtX0lEXSxmLmRhdGFfcmVmZXJlbmNlX2luZGV4IT09MCYmKGgud2FybigiSXRlbSBzdG9yYWdlIHdpdGggcmVmZXJlbmNlIHRvIG90aGVyIGZpbGVzOiBub3Qgc3VwcG9ydGVkIikscy5zb3VyY2U9bi5kaW5mLmJveGVzW2YuZGF0YV9yZWZlcmVuY2VfaW5kZXgtMV0pLGYuY29uc3RydWN0aW9uX21ldGhvZCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTpoLndhcm4oIkl0ZW0gc3RvcmFnZSB3aXRoIGNvbnN0cnVjdGlvbl9tZXRob2QgOiBub3Qgc3VwcG9ydGVkIik7YnJlYWs7Y2FzZSAyOmgud2FybigiSXRlbSBzdG9yYWdlIHdpdGggY29uc3RydWN0aW9uX21ldGhvZCA6IG5vdCBzdXBwb3J0ZWQiKTticmVha31mb3Iocy5leHRlbnRzPVtdLHMuc2l6ZT0wLGk9MDtpPGYuZXh0ZW50cy5sZW5ndGg7aSsrKXMuZXh0ZW50c1tpXT17fSxzLmV4dGVudHNbaV0ub2Zmc2V0PWYuZXh0ZW50c1tpXS5leHRlbnRfb2Zmc2V0K2YuYmFzZV9vZmZzZXQscy5leHRlbnRzW2ldLmxlbmd0aD1mLmV4dGVudHNbaV0uZXh0ZW50X2xlbmd0aCxzLmV4dGVudHNbaV0uYWxyZWFkeVJlYWQ9MCxzLnNpemUrPXMuZXh0ZW50c1tpXS5sZW5ndGh9aWYobi5waXRtJiYodFtuLnBpdG0uaXRlbV9pZF0ucHJpbWFyeT0hMCksbi5pcmVmKWZvcihlPTA7ZTxuLmlyZWYucmVmZXJlbmNlcy5sZW5ndGg7ZSsrKXt2YXIgZD1uLmlyZWYucmVmZXJlbmNlc1tlXTtmb3IoaT0wO2k8ZC5yZWZlcmVuY2VzLmxlbmd0aDtpKyspdFtkLmZyb21faXRlbV9JRF0ucmVmX3RvLnB1c2goe3R5cGU6ZC50eXBlLGlkOmQucmVmZXJlbmNlc1tpXX0pfWlmKG4uaXBycClmb3IodmFyIGM9MDtjPG4uaXBycC5pcG1hcy5sZW5ndGg7YysrKXt2YXIgbT1uLmlwcnAuaXBtYXNbY107Zm9yKGU9MDtlPG0uYXNzb2NpYXRpb25zLmxlbmd0aDtlKyspe3ZhciB4PW0uYXNzb2NpYXRpb25zW2VdO2ZvcihzPXRbeC5pZF0scy5wcm9wZXJ0aWVzPT09dm9pZCAwJiYocy5wcm9wZXJ0aWVzPXt9LHMucHJvcGVydGllcy5ib3hlcz1bXSksaT0wO2k8eC5wcm9wcy5sZW5ndGg7aSsrKXt2YXIgVT14LnByb3BzW2ldO2lmKFUucHJvcGVydHlfaW5kZXg+MCYmVS5wcm9wZXJ0eV9pbmRleC0xPG4uaXBycC5pcGNvLmJveGVzLmxlbmd0aCl7dmFyIGI9bi5pcHJwLmlwY28uYm94ZXNbVS5wcm9wZXJ0eV9pbmRleC0xXTtzLnByb3BlcnRpZXNbYi50eXBlXT1iLHMucHJvcGVydGllcy5ib3hlcy5wdXNoKGIpfX19fX19LHUucHJvdG90eXBlLmdldEl0ZW09ZnVuY3Rpb24odCl7dmFyIGUsaTtpZighdGhpcy5tZXRhKXJldHVybiBudWxsO2lmKGk9dGhpcy5pdGVtc1t0XSwhaS5kYXRhJiZpLnNpemUpaS5kYXRhPW5ldyBVaW50OEFycmF5KGkuc2l6ZSksaS5hbHJlYWR5UmVhZD0wLHRoaXMuaXRlbXNEYXRhU2l6ZSs9aS5zaXplLGguZGVidWcoIklTT0ZpbGUiLCJBbGxvY2F0aW5nIGl0ZW0gIyIrdCsiIG9mIHNpemUgIitpLnNpemUrIiAodG90YWw6ICIrdGhpcy5pdGVtc0RhdGFTaXplKyIpIik7ZWxzZSBpZihpLmFscmVhZHlSZWFkPT09aS5zaXplKXJldHVybiBpO2Zvcih2YXIgcz0wO3M8aS5leHRlbnRzLmxlbmd0aDtzKyspe3ZhciBuPWkuZXh0ZW50c1tzXTtpZihuLmFscmVhZHlSZWFkIT09bi5sZW5ndGgpe3ZhciBmPXRoaXMuc3RyZWFtLmZpbmRQb3NpdGlvbighMCxuLm9mZnNldCtuLmFscmVhZHlSZWFkLCExKTtpZihmPi0xKXtlPXRoaXMuc3RyZWFtLmJ1ZmZlcnNbZl07dmFyIGQ9ZS5ieXRlTGVuZ3RoLShuLm9mZnNldCtuLmFscmVhZHlSZWFkLWUuZmlsZVN0YXJ0KTtpZihuLmxlbmd0aC1uLmFscmVhZHlSZWFkPD1kKWguZGVidWcoIklTT0ZpbGUiLCJHZXR0aW5nIGl0ZW0gIyIrdCsiIGV4dGVudCAjIitzKyIgZGF0YSAoYWxyZWFkeVJlYWQ6ICIrbi5hbHJlYWR5UmVhZCsiIG9mZnNldDogIisobi5vZmZzZXQrbi5hbHJlYWR5UmVhZC1lLmZpbGVTdGFydCkrIiByZWFkIHNpemU6ICIrKG4ubGVuZ3RoLW4uYWxyZWFkeVJlYWQpKyIgZnVsbCBleHRlbnQgc2l6ZTogIituLmxlbmd0aCsiIGZ1bGwgaXRlbSBzaXplOiAiK2kuc2l6ZSsiKSIpLGEubWVtY3B5KGkuZGF0YS5idWZmZXIsaS5hbHJlYWR5UmVhZCxlLG4ub2Zmc2V0K24uYWxyZWFkeVJlYWQtZS5maWxlU3RhcnQsbi5sZW5ndGgtbi5hbHJlYWR5UmVhZCksZS51c2VkQnl0ZXMrPW4ubGVuZ3RoLW4uYWxyZWFkeVJlYWQsdGhpcy5zdHJlYW0ubG9nQnVmZmVyTGV2ZWwoKSxpLmFscmVhZHlSZWFkKz1uLmxlbmd0aC1uLmFscmVhZHlSZWFkLG4uYWxyZWFkeVJlYWQ9bi5sZW5ndGg7ZWxzZSByZXR1cm4gaC5kZWJ1ZygiSVNPRmlsZSIsIkdldHRpbmcgaXRlbSAjIit0KyIgZXh0ZW50ICMiK3MrIiBwYXJ0aWFsIGRhdGEgKGFscmVhZHlSZWFkOiAiK24uYWxyZWFkeVJlYWQrIiBvZmZzZXQ6ICIrKG4ub2Zmc2V0K24uYWxyZWFkeVJlYWQtZS5maWxlU3RhcnQpKyIgcmVhZCBzaXplOiAiK2QrIiBmdWxsIGV4dGVudCBzaXplOiAiK24ubGVuZ3RoKyIgZnVsbCBpdGVtIHNpemU6ICIraS5zaXplKyIpIiksYS5tZW1jcHkoaS5kYXRhLmJ1ZmZlcixpLmFscmVhZHlSZWFkLGUsbi5vZmZzZXQrbi5hbHJlYWR5UmVhZC1lLmZpbGVTdGFydCxkKSxuLmFscmVhZHlSZWFkKz1kLGkuYWxyZWFkeVJlYWQrPWQsZS51c2VkQnl0ZXMrPWQsdGhpcy5zdHJlYW0ubG9nQnVmZmVyTGV2ZWwoKSxudWxsfWVsc2UgcmV0dXJuIG51bGx9fXJldHVybiBpLmFscmVhZHlSZWFkPT09aS5zaXplP2k6bnVsbH0sdS5wcm90b3R5cGUucmVsZWFzZUl0ZW09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pdGVtc1t0XTtpZihlLmRhdGEpe3RoaXMuaXRlbXNEYXRhU2l6ZS09ZS5zaXplLGUuZGF0YT1udWxsLGUuYWxyZWFkeVJlYWQ9MDtmb3IodmFyIGk9MDtpPGUuZXh0ZW50cy5sZW5ndGg7aSsrKXt2YXIgcz1lLmV4dGVudHNbaV07cy5hbHJlYWR5UmVhZD0wfXJldHVybiBlLnNpemV9ZWxzZSByZXR1cm4gMH0sdS5wcm90b3R5cGUucHJvY2Vzc0l0ZW1zPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzLml0ZW1zKXt2YXIgaT10aGlzLml0ZW1zW2VdO3RoaXMuZ2V0SXRlbShpLmlkKSx0JiYhaS5zZW50JiYodChpKSxpLnNlbnQ9ITAsaS5kYXRhPW51bGwpfX0sdS5wcm90b3R5cGUuaGFzSXRlbT1mdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcy5pdGVtcyl7dmFyIGk9dGhpcy5pdGVtc1tlXTtpZihpLm5hbWU9PT10KXJldHVybiBpLmlkfXJldHVybi0xfSx1LnByb3RvdHlwZS5nZXRNZXRhSGFuZGxlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1ldGE/dGhpcy5tZXRhLmhkbHIuaGFuZGxlcjpudWxsfSx1LnByb3RvdHlwZS5nZXRQcmltYXJ5SXRlbT1mdW5jdGlvbigpe3JldHVybiF0aGlzLm1ldGF8fCF0aGlzLm1ldGEucGl0bT9udWxsOnRoaXMuZ2V0SXRlbSh0aGlzLm1ldGEucGl0bS5pdGVtX2lkKX0sdS5wcm90b3R5cGUuaXRlbVRvRnJhZ21lbnRlZFRyYWNrRmlsZT1mdW5jdGlvbih0KXt2YXIgZT10fHx7fSxpPW51bGw7aWYoZS5pdGVtSWQ/aT10aGlzLmdldEl0ZW0oZS5pdGVtSWQpOmk9dGhpcy5nZXRQcmltYXJ5SXRlbSgpLGk9PW51bGwpcmV0dXJuIG51bGw7dmFyIHM9bmV3IHU7cy5kaXNjYXJkTWRhdERhdGE9ITE7dmFyIG49e3R5cGU6aS50eXBlLGRlc2NyaXB0aW9uX2JveGVzOmkucHJvcGVydGllcy5ib3hlc307aS5wcm9wZXJ0aWVzLmlzcGUmJihuLndpZHRoPWkucHJvcGVydGllcy5pc3BlLmltYWdlX3dpZHRoLG4uaGVpZ2h0PWkucHJvcGVydGllcy5pc3BlLmltYWdlX2hlaWdodCk7dmFyIGY9cy5hZGRUcmFjayhuKTtyZXR1cm4gZj8ocy5hZGRTYW1wbGUoZixpLmRhdGEpLHMpOm51bGx9LHUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5ib3hlcy5sZW5ndGg7ZSsrKXRoaXMuYm94ZXNbZV0ud3JpdGUodCl9LHUucHJvdG90eXBlLmNyZWF0ZUZyYWdtZW50PWZ1bmN0aW9uKHQsZSxpKXt2YXIgcz10aGlzLmdldFRyYWNrQnlJZCh0KSxuPXRoaXMuZ2V0U2FtcGxlKHMsZSk7aWYobj09bnVsbClyZXR1cm4gbj1zLnNhbXBsZXNbZV0sdGhpcy5uZXh0U2Vla1Bvc2l0aW9uP3RoaXMubmV4dFNlZWtQb3NpdGlvbj1NYXRoLm1pbihuLm9mZnNldCtuLmFscmVhZHlSZWFkLHRoaXMubmV4dFNlZWtQb3NpdGlvbik6dGhpcy5uZXh0U2Vla1Bvc2l0aW9uPXMuc2FtcGxlc1tlXS5vZmZzZXQrbi5hbHJlYWR5UmVhZCxudWxsO3ZhciBmPWl8fG5ldyBhO2YuZW5kaWFubmVzcz1hLkJJR19FTkRJQU47dmFyIGQ9dGhpcy5jcmVhdGVTaW5nbGVTYW1wbGVNb29mKG4pO2Qud3JpdGUoZiksZC50cmFmc1swXS50cnVuc1swXS5kYXRhX29mZnNldD1kLnNpemUrOCxoLmRlYnVnKCJNUDRCb3giLCJBZGp1c3RpbmcgZGF0YV9vZmZzZXQgd2l0aCBuZXcgdmFsdWUgIitkLnRyYWZzWzBdLnRydW5zWzBdLmRhdGFfb2Zmc2V0KSxmLmFkanVzdFVpbnQzMihkLnRyYWZzWzBdLnRydW5zWzBdLmRhdGFfb2Zmc2V0X3Bvc2l0aW9uLGQudHJhZnNbMF0udHJ1bnNbMF0uZGF0YV9vZmZzZXQpO3ZhciBjPW5ldyByLm1kYXRCb3g7cmV0dXJuIGMuZGF0YT1uLmRhdGEsYy53cml0ZShmKSxmfSx1LndyaXRlSW5pdGlhbGl6YXRpb25TZWdtZW50PWZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBuO2guZGVidWcoIklTT0ZpbGUiLCJHZW5lcmF0aW5nIGluaXRpYWxpemF0aW9uIHNlZ21lbnQiKTt2YXIgZj1uZXcgYTtmLmVuZGlhbm5lc3M9YS5CSUdfRU5ESUFOLHQud3JpdGUoZik7dmFyIGQ9ZS5hZGQoIm12ZXgiKTtmb3IoaSYmZC5hZGQoIm1laGQiKS5zZXQoImZyYWdtZW50X2R1cmF0aW9uIixpKSxuPTA7bjxlLnRyYWtzLmxlbmd0aDtuKyspZC5hZGQoInRyZXgiKS5zZXQoInRyYWNrX2lkIixlLnRyYWtzW25dLnRraGQudHJhY2tfaWQpLnNldCgiZGVmYXVsdF9zYW1wbGVfZGVzY3JpcHRpb25faW5kZXgiLDEpLnNldCgiZGVmYXVsdF9zYW1wbGVfZHVyYXRpb24iLHMpLnNldCgiZGVmYXVsdF9zYW1wbGVfc2l6ZSIsMCkuc2V0KCJkZWZhdWx0X3NhbXBsZV9mbGFncyIsNjU1MzYpO3JldHVybiBlLndyaXRlKGYpLGYuYnVmZmVyfSx1LnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBhO2UuZW5kaWFubmVzcz1hLkJJR19FTkRJQU4sdGhpcy53cml0ZShlKSxlLnNhdmUodCl9LHUucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe3ZhciB0PW5ldyBhO3JldHVybiB0LmVuZGlhbm5lc3M9YS5CSUdfRU5ESUFOLHRoaXMud3JpdGUodCksdC5idWZmZXJ9LHUucHJvdG90eXBlLmluaXRpYWxpemVTZWdtZW50YXRpb249ZnVuY3Rpb24oKXt2YXIgdCxlLGkscztmb3IodGhpcy5vblNlZ21lbnQ9PT1udWxsJiZoLndhcm4oIk1QNEJveCIsIk5vIHNlZ21lbnRhdGlvbiBjYWxsYmFjayBzZXQhIiksdGhpcy5pc0ZyYWdtZW50YXRpb25Jbml0aWFsaXplZHx8KHRoaXMuaXNGcmFnbWVudGF0aW9uSW5pdGlhbGl6ZWQ9ITAsdGhpcy5uZXh0TW9vZk51bWJlcj0wLHRoaXMucmVzZXRUYWJsZXMoKSksZT1bXSx0PTA7dDx0aGlzLmZyYWdtZW50ZWRUcmFja3MubGVuZ3RoO3QrKyl7dmFyIG49bmV3IHIubW9vdkJveDtuLm12aGQ9dGhpcy5tb292Lm12aGQsbi5ib3hlcy5wdXNoKG4ubXZoZCksaT10aGlzLmdldFRyYWNrQnlJZCh0aGlzLmZyYWdtZW50ZWRUcmFja3NbdF0uaWQpLG4uYm94ZXMucHVzaChpKSxuLnRyYWtzLnB1c2goaSkscz17fSxzLmlkPWkudGtoZC50cmFja19pZCxzLnVzZXI9dGhpcy5mcmFnbWVudGVkVHJhY2tzW3RdLnVzZXIscy5idWZmZXI9dS53cml0ZUluaXRpYWxpemF0aW9uU2VnbWVudCh0aGlzLmZ0eXAsbix0aGlzLm1vb3YubXZleCYmdGhpcy5tb292Lm12ZXgubWVoZD90aGlzLm1vb3YubXZleC5tZWhkLmZyYWdtZW50X2R1cmF0aW9uOnZvaWQgMCx0aGlzLm1vb3YudHJha3NbdF0uc2FtcGxlcy5sZW5ndGg+MD90aGlzLm1vb3YudHJha3NbdF0uc2FtcGxlc1swXS5kdXJhdGlvbjowKSxlLnB1c2gocyl9cmV0dXJuIGV9LHIuQm94LnByb3RvdHlwZS5wcmludEhlYWRlcj1mdW5jdGlvbih0KXt0aGlzLnNpemUrPTgsdGhpcy5zaXplPnAmJih0aGlzLnNpemUrPTgpLHRoaXMudHlwZT09PSJ1dWlkIiYmKHRoaXMuc2l6ZSs9MTYpLHQubG9nKHQuaW5kZW50KyJzaXplOiIrdGhpcy5zaXplKSx0LmxvZyh0LmluZGVudCsidHlwZToiK3RoaXMudHlwZSl9LHIuRnVsbEJveC5wcm90b3R5cGUucHJpbnRIZWFkZXI9ZnVuY3Rpb24odCl7dGhpcy5zaXplKz00LHIuQm94LnByb3RvdHlwZS5wcmludEhlYWRlci5jYWxsKHRoaXMsdCksdC5sb2codC5pbmRlbnQrInZlcnNpb246Iit0aGlzLnZlcnNpb24pLHQubG9nKHQuaW5kZW50KyJmbGFnczoiK3RoaXMuZmxhZ3MpfSxyLkJveC5wcm90b3R5cGUucHJpbnQ9ZnVuY3Rpb24odCl7dGhpcy5wcmludEhlYWRlcih0KX0sci5Db250YWluZXJCb3gucHJvdG90eXBlLnByaW50PWZ1bmN0aW9uKHQpe3RoaXMucHJpbnRIZWFkZXIodCk7Zm9yKHZhciBlPTA7ZTx0aGlzLmJveGVzLmxlbmd0aDtlKyspaWYodGhpcy5ib3hlc1tlXSl7dmFyIGk9dC5pbmRlbnQ7dC5pbmRlbnQrPSIgIix0aGlzLmJveGVzW2VdLnByaW50KHQpLHQuaW5kZW50PWl9fSx1LnByb3RvdHlwZS5wcmludD1mdW5jdGlvbih0KXt0LmluZGVudD0iIjtmb3IodmFyIGU9MDtlPHRoaXMuYm94ZXMubGVuZ3RoO2UrKyl0aGlzLmJveGVzW2VdJiZ0aGlzLmJveGVzW2VdLnByaW50KHQpfSxyLm12aGRCb3gucHJvdG90eXBlLnByaW50PWZ1bmN0aW9uKHQpe3IuRnVsbEJveC5wcm90b3R5cGUucHJpbnRIZWFkZXIuY2FsbCh0aGlzLHQpLHQubG9nKHQuaW5kZW50KyJjcmVhdGlvbl90aW1lOiAiK3RoaXMuY3JlYXRpb25fdGltZSksdC5sb2codC5pbmRlbnQrIm1vZGlmaWNhdGlvbl90aW1lOiAiK3RoaXMubW9kaWZpY2F0aW9uX3RpbWUpLHQubG9nKHQuaW5kZW50KyJ0aW1lc2NhbGU6ICIrdGhpcy50aW1lc2NhbGUpLHQubG9nKHQuaW5kZW50KyJkdXJhdGlvbjogIit0aGlzLmR1cmF0aW9uKSx0LmxvZyh0LmluZGVudCsicmF0ZTogIit0aGlzLnJhdGUpLHQubG9nKHQuaW5kZW50KyJ2b2x1bWU6ICIrKHRoaXMudm9sdW1lPj44KSksdC5sb2codC5pbmRlbnQrIm1hdHJpeDogIit0aGlzLm1hdHJpeC5qb2luKCIsICIpKSx0LmxvZyh0LmluZGVudCsibmV4dF90cmFja19pZDogIit0aGlzLm5leHRfdHJhY2tfaWQpfSxyLnRraGRCb3gucHJvdG90eXBlLnByaW50PWZ1bmN0aW9uKHQpe3IuRnVsbEJveC5wcm90b3R5cGUucHJpbnRIZWFkZXIuY2FsbCh0aGlzLHQpLHQubG9nKHQuaW5kZW50KyJjcmVhdGlvbl90aW1lOiAiK3RoaXMuY3JlYXRpb25fdGltZSksdC5sb2codC5pbmRlbnQrIm1vZGlmaWNhdGlvbl90aW1lOiAiK3RoaXMubW9kaWZpY2F0aW9uX3RpbWUpLHQubG9nKHQuaW5kZW50KyJ0cmFja19pZDogIit0aGlzLnRyYWNrX2lkKSx0LmxvZyh0LmluZGVudCsiZHVyYXRpb246ICIrdGhpcy5kdXJhdGlvbiksdC5sb2codC5pbmRlbnQrInZvbHVtZTogIisodGhpcy52b2x1bWU+PjgpKSx0LmxvZyh0LmluZGVudCsibWF0cml4OiAiK3RoaXMubWF0cml4LmpvaW4oIiwgIikpLHQubG9nKHQuaW5kZW50KyJsYXllcjogIit0aGlzLmxheWVyKSx0LmxvZyh0LmluZGVudCsiYWx0ZXJuYXRlX2dyb3VwOiAiK3RoaXMuYWx0ZXJuYXRlX2dyb3VwKSx0LmxvZyh0LmluZGVudCsid2lkdGg6ICIrdGhpcy53aWR0aCksdC5sb2codC5pbmRlbnQrImhlaWdodDogIit0aGlzLmhlaWdodCl9O3ZhciBnPXt9O2cuY3JlYXRlRmlsZT1mdW5jdGlvbih0LGUpe3ZhciBpPXQhPT12b2lkIDA/dDohMCxzPW5ldyB1KGUpO3JldHVybiBzLmRpc2NhcmRNZGF0RGF0YT0haSxzfSxFLmNyZWF0ZUZpbGU9Zy5jcmVhdGVGaWxlfSkoTyk7dmFyIFg9SyhPKSxXPXtleHBvcnRzOnt9fTsoZnVuY3Rpb24oRSl7dmFyIGg9e307RS5leHBvcnRzPWgsaC5wYXJzZT1mdW5jdGlvbihvLGEpe2Zvcih2YXIgcD1oLmJpbi5yZWFkVXNob3J0LGw9aC5iaW4ucmVhZFVpbnQsdj0wLF89e30scj1uZXcgVWludDhBcnJheShvKSx5PXIubGVuZ3RoLTQ7bChyLHkpIT0xMDEwMTAyNTY7KXktLTt2YXIgdj15O3YrPTQsdis9NDt2YXIgdT1wKHIsdik7dis9MixwKHIsdiksdis9Mjt2YXIgZz1sKHIsdik7dis9NDt2YXIgdD1sKHIsdik7dis9NCx2PXQ7Zm9yKHZhciBlPTA7ZTx1O2UrKyl7bChyLHYpLHYrPTQsdis9NCx2Kz00LHYrPTQsbChyLHYpLHYrPTQ7dmFyIGc9bChyLHYpO3YrPTQ7dmFyIGk9bChyLHYpO3YrPTQ7dmFyIHM9cChyLHYpLG49cChyLHYrMiksZj1wKHIsdis0KTt2Kz02LHYrPTg7dmFyIGQ9bChyLHYpO3YrPTQsdis9cytuK2YsaC5fcmVhZExvY2FsKHIsZCxfLGcsaSxhKX1yZXR1cm4gX30saC5fcmVhZExvY2FsPWZ1bmN0aW9uKG8sYSxwLGwsXyxyKXt2YXIgeT1oLmJpbi5yZWFkVXNob3J0LHY9aC5iaW4ucmVhZFVpbnQ7dihvLGEpLGErPTQseShvLGEpLGErPTIseShvLGEpLGErPTI7dmFyIHU9eShvLGEpO2ErPTIsdihvLGEpLGErPTQsdihvLGEpLGErPTQsYSs9ODt2YXIgZz15KG8sYSk7YSs9Mjt2YXIgdD15KG8sYSk7YSs9Mjt2YXIgZT1oLmJpbi5yZWFkVVRGOChvLGEsZyk7aWYoYSs9ZyxhKz10LHIpe3BbZV09e3NpemU6Xyxjc2l6ZTpsfTtyZXR1cm59dmFyIGk9bmV3IFVpbnQ4QXJyYXkoby5idWZmZXIsYSk7aWYodT09MClwW2VdPW5ldyBVaW50OEFycmF5KGkuYnVmZmVyLnNsaWNlKGEsYStsKSk7ZWxzZSBpZih1PT04KXt2YXIgcz1uZXcgVWludDhBcnJheShfKTtoLmluZmxhdGVSYXcoaSxzKSxwW2VdPXN9ZWxzZSB0aHJvdyJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZDogIit1fSxoLmluZmxhdGVSYXc9ZnVuY3Rpb24obyxhKXtyZXR1cm4gaC5GLmluZmxhdGUobyxhKX0saC5pbmZsYXRlPWZ1bmN0aW9uKG8sYSl7cmV0dXJuIG9bMF0sb1sxXSxoLmluZmxhdGVSYXcobmV3IFVpbnQ4QXJyYXkoby5idWZmZXIsby5ieXRlT2Zmc2V0KzIsby5sZW5ndGgtNiksYSl9LGguZGVmbGF0ZT1mdW5jdGlvbihvLGEpe2E9PW51bGwmJihhPXtsZXZlbDo2fSk7dmFyIHA9MCxsPW5ldyBVaW50OEFycmF5KDUwK01hdGguZmxvb3Ioby5sZW5ndGgqMS4xKSk7bFtwXT0xMjAsbFtwKzFdPTE1NixwKz0yLHA9aC5GLmRlZmxhdGVSYXcobyxsLHAsYS5sZXZlbCk7dmFyIF89aC5hZGxlcihvLDAsby5sZW5ndGgpO3JldHVybiBsW3ArMF09Xz4+PjI0JjI1NSxsW3ArMV09Xz4+PjE2JjI1NSxsW3ArMl09Xz4+PjgmMjU1LGxbcCszXT1fPj4+MCYyNTUsbmV3IFVpbnQ4QXJyYXkobC5idWZmZXIsMCxwKzQpfSxoLmRlZmxhdGVSYXc9ZnVuY3Rpb24obyxhKXthPT1udWxsJiYoYT17bGV2ZWw6Nn0pO3ZhciBwPW5ldyBVaW50OEFycmF5KDUwK01hdGguZmxvb3Ioby5sZW5ndGgqMS4xKSksbD1oLkYuZGVmbGF0ZVJhdyhvLHAsbCxhLmxldmVsKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocC5idWZmZXIsMCxsKX0saC5lbmNvZGU9ZnVuY3Rpb24obyxhKXthPT1udWxsJiYoYT0hMSk7dmFyIHA9MCxsPWguYmluLndyaXRlVWludCxfPWguYmluLndyaXRlVXNob3J0LHI9e307Zm9yKHZhciB5IGluIG8pe3ZhciB2PSFoLl9ub05lZWQoeSkmJiFhLHU9b1t5XSxnPWguY3JjLmNyYyh1LDAsdS5sZW5ndGgpO3JbeV09e2Nwcjp2LHVzaXplOnUubGVuZ3RoLGNyYzpnLGZpbGU6dj9oLmRlZmxhdGVSYXcodSk6dX19Zm9yKHZhciB5IGluIHIpcCs9clt5XS5maWxlLmxlbmd0aCszMCs0NisyKmguYmluLnNpemVVVEY4KHkpO3ArPTIyO3ZhciB0PW5ldyBVaW50OEFycmF5KHApLGU9MCxpPVtdO2Zvcih2YXIgeSBpbiByKXt2YXIgcz1yW3ldO2kucHVzaChlKSxlPWguX3dyaXRlSGVhZGVyKHQsZSx5LHMsMCl9dmFyIG49MCxmPWU7Zm9yKHZhciB5IGluIHIpe3ZhciBzPXJbeV07aS5wdXNoKGUpLGU9aC5fd3JpdGVIZWFkZXIodCxlLHkscywxLGlbbisrXSl9dmFyIGQ9ZS1mO3JldHVybiBsKHQsZSwxMDEwMTAyNTYpLGUrPTQsZSs9NCxfKHQsZSxuKSxlKz0yLF8odCxlLG4pLGUrPTIsbCh0LGUsZCksZSs9NCxsKHQsZSxmKSxlKz00LGUrPTIsdC5idWZmZXJ9LGguX25vTmVlZD1mdW5jdGlvbihvKXt2YXIgYT1vLnNwbGl0KCIuIikucG9wKCkudG9Mb3dlckNhc2UoKTtyZXR1cm4icG5nLGpwZyxqcGVnLHppcCIuaW5kZXhPZihhKSE9LTF9LGguX3dyaXRlSGVhZGVyPWZ1bmN0aW9uKG8sYSxwLGwsXyxyKXt2YXIgeT1oLmJpbi53cml0ZVVpbnQsdj1oLmJpbi53cml0ZVVzaG9ydCx1PWwuZmlsZTt5KG8sYSxfPT0wPzY3MzI0NzUyOjMzNjM5MjQ4KSxhKz00LF89PTEmJihhKz0yKSx2KG8sYSwyMCksYSs9Mix2KG8sYSwwKSxhKz0yLHYobyxhLGwuY3ByPzg6MCksYSs9Mix5KG8sYSwwKSxhKz00LHkobyxhLGwuY3JjKSxhKz00LHkobyxhLHUubGVuZ3RoKSxhKz00LHkobyxhLGwudXNpemUpLGErPTQsdihvLGEsaC5iaW4uc2l6ZVVURjgocCkpLGErPTIsdihvLGEsMCksYSs9MixfPT0xJiYoYSs9MixhKz0yLGErPTYseShvLGEsciksYSs9NCk7dmFyIGc9aC5iaW4ud3JpdGVVVEY4KG8sYSxwKTtyZXR1cm4gYSs9ZyxfPT0wJiYoby5zZXQodSxhKSxhKz11Lmxlbmd0aCksYX0saC5jcmM9e3RhYmxlOmZ1bmN0aW9uKCl7Zm9yKHZhciBvPW5ldyBVaW50MzJBcnJheSgyNTYpLGE9MDthPDI1NjthKyspe2Zvcih2YXIgcD1hLGw9MDtsPDg7bCsrKXAmMT9wPTM5ODgyOTIzODRecD4+PjE6cD1wPj4+MTtvW2FdPXB9cmV0dXJuIG99KCksdXBkYXRlOmZ1bmN0aW9uKG8sYSxwLGwpe2Zvcih2YXIgXz0wO188bDtfKyspbz1oLmNyYy50YWJsZVsob15hW3ArX10pJjI1NV1ebz4+Pjg7cmV0dXJuIG99LGNyYzpmdW5jdGlvbihvLGEscCl7cmV0dXJuIGguY3JjLnVwZGF0ZSg0Mjk0OTY3Mjk1LG8sYSxwKV40Mjk0OTY3Mjk1fX0saC5hZGxlcj1mdW5jdGlvbihvLGEscCl7Zm9yKHZhciBsPTEsXz0wLHI9YSx5PWErcDtyPHk7KXtmb3IodmFyIHY9TWF0aC5taW4ocis1NTUyLHkpO3I8djspbCs9b1tyKytdLF8rPWw7bD1sJTY1NTIxLF89XyU2NTUyMX1yZXR1cm4gXzw8MTZ8bH0saC5iaW49e3JlYWRVc2hvcnQ6ZnVuY3Rpb24obyxhKXtyZXR1cm4gb1thXXxvW2ErMV08PDh9LHdyaXRlVXNob3J0OmZ1bmN0aW9uKG8sYSxwKXtvW2FdPXAmMjU1LG9bYSsxXT1wPj44JjI1NX0scmVhZFVpbnQ6ZnVuY3Rpb24obyxhKXtyZXR1cm4gb1thKzNdKigyNTYqMjU2KjI1NikrKG9bYSsyXTw8MTZ8b1thKzFdPDw4fG9bYV0pfSx3cml0ZVVpbnQ6ZnVuY3Rpb24obyxhLHApe29bYV09cCYyNTUsb1thKzFdPXA+PjgmMjU1LG9bYSsyXT1wPj4xNiYyNTUsb1thKzNdPXA+PjI0JjI1NX0scmVhZEFTQ0lJOmZ1bmN0aW9uKG8sYSxwKXtmb3IodmFyIGw9IiIsXz0wO188cDtfKyspbCs9U3RyaW5nLmZyb21DaGFyQ29kZShvW2ErX10pO3JldHVybiBsfSx3cml0ZUFTQ0lJOmZ1bmN0aW9uKG8sYSxwKXtmb3IodmFyIGw9MDtsPHAubGVuZ3RoO2wrKylvW2ErbF09cC5jaGFyQ29kZUF0KGwpfSxwYWQ6ZnVuY3Rpb24obyl7cmV0dXJuIG8ubGVuZ3RoPDI/IjAiK286b30scmVhZFVURjg6ZnVuY3Rpb24obyxhLHApe2Zvcih2YXIgbD0iIixfLHI9MDtyPHA7cisrKWwrPSIlIitoLmJpbi5wYWQob1thK3JdLnRvU3RyaW5nKDE2KSk7dHJ5e189ZGVjb2RlVVJJQ29tcG9uZW50KGwpfWNhdGNoe3JldHVybiBoLmJpbi5yZWFkQVNDSUkobyxhLHApfXJldHVybiBffSx3cml0ZVVURjg6ZnVuY3Rpb24obyxhLHApe2Zvcih2YXIgbD1wLmxlbmd0aCxfPTAscj0wO3I8bDtyKyspe3ZhciB5PXAuY2hhckNvZGVBdChyKTtpZighKHkmNDI5NDk2NzE2OCkpb1thK19dPXksXysrO2Vsc2UgaWYoISh5JjQyOTQ5NjUyNDgpKW9bYStfXT0xOTJ8eT4+NixvW2ErXysxXT0xMjh8eT4+MCY2MyxfKz0yO2Vsc2UgaWYoISh5JjQyOTQ5MDE3NjApKW9bYStfXT0yMjR8eT4+MTIsb1thK18rMV09MTI4fHk+PjYmNjMsb1thK18rMl09MTI4fHk+PjAmNjMsXys9MztlbHNlIGlmKCEoeSY0Mjk0OTY3Mjk1LSgxPDwyMSkrMSkpb1thK19dPTI0MHx5Pj4xOCxvW2ErXysxXT0xMjh8eT4+MTImNjMsb1thK18rMl09MTI4fHk+PjYmNjMsb1thK18rM109MTI4fHk+PjAmNjMsXys9NDtlbHNlIHRocm93ImUifXJldHVybiBffSxzaXplVVRGODpmdW5jdGlvbihvKXtmb3IodmFyIGE9by5sZW5ndGgscD0wLGw9MDtsPGE7bCsrKXt2YXIgXz1vLmNoYXJDb2RlQXQobCk7aWYoIShfJjQyOTQ5NjcxNjgpKXArKztlbHNlIGlmKCEoXyY0Mjk0OTY1MjQ4KSlwKz0yO2Vsc2UgaWYoIShfJjQyOTQ5MDE3NjApKXArPTM7ZWxzZSBpZighKF8mNDI5NDk2NzI5NS0oMTw8MjEpKzEpKXArPTQ7ZWxzZSB0aHJvdyJlIn1yZXR1cm4gcH19LGguRj17fSxoLkYuZGVmbGF0ZVJhdz1mdW5jdGlvbihvLGEscCxsKXt2YXIgXz1bWzAsMCwwLDAsMF0sWzQsNCw4LDQsMF0sWzQsNSwxNiw4LDBdLFs0LDYsMTYsMTYsMF0sWzQsMTAsMTYsMzIsMF0sWzgsMTYsMzIsMzIsMF0sWzgsMTYsMTI4LDEyOCwwXSxbOCwzMiwxMjgsMjU2LDBdLFszMiwxMjgsMjU4LDEwMjQsMV0sWzMyLDI1OCwyNTgsNDA5NiwxXV0scj1fW2xdLHk9aC5GLlUsdj1oLkYuX2dvb2RJbmRleDtoLkYuX2hhc2g7dmFyIHU9aC5GLl9wdXRzRSxnPTAsdD1wPDwzLGU9MCxpPW8ubGVuZ3RoO2lmKGw9PTApe2Zvcig7ZzxpOyl7dmFyIHM9TWF0aC5taW4oNjU1MzUsaS1nKTt1KGEsdCxnK3M9PWk/MTowKSx0PWguRi5fY29weUV4YWN0KG8sZyxzLGEsdCs4KSxnKz1zfXJldHVybiB0Pj4+M312YXIgbj15LmxpdHMsZj15LnN0cnQsZD15LnByZXYsYz0wLG09MCx4PTAsVT0wLGI9MCx3PTA7Zm9yKGk+MiYmKHc9aC5GLl9oYXNoKG8sMCksZlt3XT0wKSxnPTA7ZzxpO2crKyl7aWYoYj13LGcrMTxpLTIpe3c9aC5GLl9oYXNoKG8sZysxKTt2YXIgUz1nKzEmMzI3Njc7ZFtTXT1mW3ddLGZbd109U31pZihlPD1nKXsoYz4xNGUzfHxtPjI2Njk3KSYmaS1nPjEwMCYmKGU8ZyYmKG5bY109Zy1lLGMrPTIsZT1nKSx0PWguRi5fd3JpdGVCbG9jayhnPT1pLTF8fGU9PWk/MTowLG4sYyxVLG8seCxnLXgsYSx0KSxjPW09VT0wLHg9Zyk7dmFyIEY9MDtnPGktMiYmKEY9aC5GLl9iZXN0TWF0Y2gobyxnLGQsYixNYXRoLm1pbihyWzJdLGktZyksclszXSkpO3ZhciBzPUY+Pj4xNixCPUYmNjU1MzU7aWYoRiE9MCl7dmFyIHM9Rj4+PjE2LEI9RiY2NTUzNSx6PXYocyx5Lm9mMCk7eS5saHN0WzI1Nyt6XSsrO3ZhciBJPXYoQix5LmRmMCk7eS5kaHN0W0ldKyssVSs9eS5leGJbel0reS5keGJbSV0sbltjXT1zPDwyM3xnLWUsbltjKzFdPUI8PDE2fHo8PDh8SSxjKz0yLGU9ZytzfWVsc2UgeS5saHN0W29bZ11dKys7bSsrfX1mb3IoKHghPWd8fG8ubGVuZ3RoPT0wKSYmKGU8ZyYmKG5bY109Zy1lLGMrPTIsZT1nKSx0PWguRi5fd3JpdGVCbG9jaygxLG4sYyxVLG8seCxnLXgsYSx0KSxjPTAsbT0wLGM9bT1VPTAseD1nKTt0Jjc7KXQrKztyZXR1cm4gdD4+PjN9LGguRi5fYmVzdE1hdGNoPWZ1bmN0aW9uKG8sYSxwLGwsXyxyKXt2YXIgeT1hJjMyNzY3LHY9cFt5XSx1PXktdiszMjc2OCYzMjc2NztpZih2PT15fHxsIT1oLkYuX2hhc2gobyxhLXUpKXJldHVybiAwO2Zvcih2YXIgZz0wLHQ9MCxlPU1hdGgubWluKDMyNzY3LGEpO3U8PWUmJi0tciE9MCYmdiE9eTspe2lmKGc9PTB8fG9bYStnXT09b1thK2ctdV0pe3ZhciBpPWguRi5faG93TG9uZyhvLGEsdSk7aWYoaT5nKXtpZihnPWksdD11LGc+PV8pYnJlYWs7dSsyPGkmJihpPXUrMik7Zm9yKHZhciBzPTAsbj0wO248aS0yO24rKyl7dmFyIGY9YS11K24rMzI3NjgmMzI3NjcsZD1wW2ZdLGM9Zi1kKzMyNzY4JjMyNzY3O2M+cyYmKHM9Yyx2PWYpfX19eT12LHY9cFt5XSx1Kz15LXYrMzI3NjgmMzI3Njd9cmV0dXJuIGc8PDE2fHR9LGguRi5faG93TG9uZz1mdW5jdGlvbihvLGEscCl7aWYob1thXSE9b1thLXBdfHxvW2ErMV0hPW9bYSsxLXBdfHxvW2ErMl0hPW9bYSsyLXBdKXJldHVybiAwO3ZhciBsPWEsXz1NYXRoLm1pbihvLmxlbmd0aCxhKzI1OCk7Zm9yKGErPTM7YTxfJiZvW2FdPT1vW2EtcF07KWErKztyZXR1cm4gYS1sfSxoLkYuX2hhc2g9ZnVuY3Rpb24obyxhKXtyZXR1cm4ob1thXTw8OHxvW2ErMV0pKyhvW2ErMl08PDQpJjY1NTM1fSxoLnNhdmVkPTAsaC5GLl93cml0ZUJsb2NrPWZ1bmN0aW9uKG8sYSxwLGwsXyxyLHksdix1KXt2YXIgZz1oLkYuVSx0PWguRi5fcHV0c0YsZT1oLkYuX3B1dHNFLGkscyxuLGYsZCxjLG0seCxVO2cubGhzdFsyNTZdKyssaT1oLkYuZ2V0VHJlZXMoKSxzPWlbMF0sbj1pWzFdLGY9aVsyXSxkPWlbM10sYz1pWzRdLG09aVs1XSx4PWlbNl0sVT1pWzddO3ZhciBiPSh1KzMmNz84LSh1KzMmNyk6MCkrMzIrKHk8PDMpLHc9bCtoLkYuY29udFNpemUoZy5mbHRyZWUsZy5saHN0KStoLkYuY29udFNpemUoZy5mZHRyZWUsZy5kaHN0KSxTPWwraC5GLmNvbnRTaXplKGcubHRyZWUsZy5saHN0KStoLkYuY29udFNpemUoZy5kdHJlZSxnLmRoc3QpO1MrPTE0KzMqbStoLkYuY29udFNpemUoZy5pdHJlZSxnLmloc3QpKyhnLmloc3RbMTZdKjIrZy5paHN0WzE3XSozK2cuaWhzdFsxOF0qNyk7Zm9yKHZhciBGPTA7RjwyODY7RisrKWcubGhzdFtGXT0wO2Zvcih2YXIgRj0wO0Y8MzA7RisrKWcuZGhzdFtGXT0wO2Zvcih2YXIgRj0wO0Y8MTk7RisrKWcuaWhzdFtGXT0wO3ZhciBCPWI8dyYmYjxTPzA6dzxTPzE6MjtpZih0KHYsdSxvKSx0KHYsdSsxLEIpLHUrPTMsQj09MCl7Zm9yKDt1Jjc7KXUrKzt1PWguRi5fY29weUV4YWN0KF8scix5LHYsdSl9ZWxzZXt2YXIgeixJO2lmKEI9PTEmJih6PWcuZmx0cmVlLEk9Zy5mZHRyZWUpLEI9PTIpe2guRi5tYWtlQ29kZXMoZy5sdHJlZSxzKSxoLkYucmV2Q29kZXMoZy5sdHJlZSxzKSxoLkYubWFrZUNvZGVzKGcuZHRyZWUsbiksaC5GLnJldkNvZGVzKGcuZHRyZWUsbiksaC5GLm1ha2VDb2RlcyhnLml0cmVlLGYpLGguRi5yZXZDb2RlcyhnLml0cmVlLGYpLHo9Zy5sdHJlZSxJPWcuZHRyZWUsZSh2LHUsZC0yNTcpLHUrPTUsZSh2LHUsYy0xKSx1Kz01LGUodix1LG0tNCksdSs9NDtmb3IodmFyIFQ9MDtUPG07VCsrKWUodix1K1QqMyxnLml0cmVlWyhnLm9yZHJbVF08PDEpKzFdKTt1Kz0zKm0sdT1oLkYuX2NvZGVUaW55KHgsZy5pdHJlZSx2LHUpLHU9aC5GLl9jb2RlVGlueShVLGcuaXRyZWUsdix1KX1mb3IodmFyIEM9cixMPTA7TDxwO0wrPTIpe2Zvcih2YXIgUD1hW0xdLFI9UD4+PjIzLGs9QysoUCYoMTw8MjMpLTEpO0M8azspdT1oLkYuX3dyaXRlTGl0KF9bQysrXSx6LHYsdSk7aWYoUiE9MCl7dmFyIEQ9YVtMKzFdLEE9RD4+MTYsTT1EPj44JjI1NSxOPUQmMjU1O3U9aC5GLl93cml0ZUxpdCgyNTcrTSx6LHYsdSksZSh2LHUsUi1nLm9mMFtNXSksdSs9Zy5leGJbTV0sdT1oLkYuX3dyaXRlTGl0KE4sSSx2LHUpLHQodix1LEEtZy5kZjBbTl0pLHUrPWcuZHhiW05dLEMrPVJ9fXU9aC5GLl93cml0ZUxpdCgyNTYseix2LHUpfXJldHVybiB1fSxoLkYuX2NvcHlFeGFjdD1mdW5jdGlvbihvLGEscCxsLF8pe3ZhciByPV8+Pj4zO3JldHVybiBsW3JdPXAsbFtyKzFdPXA+Pj44LGxbcisyXT0yNTUtbFtyXSxsW3IrM109MjU1LWxbcisxXSxyKz00LGwuc2V0KG5ldyBVaW50OEFycmF5KG8uYnVmZmVyLGEscCksciksXysocCs0PDwzKX0saC5GLmdldFRyZWVzPWZ1bmN0aW9uKCl7Zm9yKHZhciBvPWguRi5VLGE9aC5GLl9odWZUcmVlKG8ubGhzdCxvLmx0cmVlLDE1KSxwPWguRi5faHVmVHJlZShvLmRoc3Qsby5kdHJlZSwxNSksbD1bXSxfPWguRi5fbGVuQ29kZXMoby5sdHJlZSxsKSxyPVtdLHk9aC5GLl9sZW5Db2RlcyhvLmR0cmVlLHIpLHY9MDt2PGwubGVuZ3RoO3YrPTIpby5paHN0W2xbdl1dKys7Zm9yKHZhciB2PTA7djxyLmxlbmd0aDt2Kz0yKW8uaWhzdFtyW3ZdXSsrO2Zvcih2YXIgdT1oLkYuX2h1ZlRyZWUoby5paHN0LG8uaXRyZWUsNyksZz0xOTtnPjQmJm8uaXRyZWVbKG8ub3JkcltnLTFdPDwxKSsxXT09MDspZy0tO3JldHVyblthLHAsdSxfLHksZyxsLHJdfSxoLkYuZ2V0U2Vjb25kPWZ1bmN0aW9uKG8pe2Zvcih2YXIgYT1bXSxwPTA7cDxvLmxlbmd0aDtwKz0yKWEucHVzaChvW3ArMV0pO3JldHVybiBhfSxoLkYubm9uWmVybz1mdW5jdGlvbihvKXtmb3IodmFyIGE9IiIscD0wO3A8by5sZW5ndGg7cCs9MilvW3ArMV0hPTAmJihhKz0ocD4+MSkrIiwiKTtyZXR1cm4gYX0saC5GLmNvbnRTaXplPWZ1bmN0aW9uKG8sYSl7Zm9yKHZhciBwPTAsbD0wO2w8YS5sZW5ndGg7bCsrKXArPWFbbF0qb1sobDw8MSkrMV07cmV0dXJuIHB9LGguRi5fY29kZVRpbnk9ZnVuY3Rpb24obyxhLHAsbCl7Zm9yKHZhciBfPTA7XzxvLmxlbmd0aDtfKz0yKXt2YXIgcj1vW19dLHk9b1tfKzFdO2w9aC5GLl93cml0ZUxpdChyLGEscCxsKTt2YXIgdj1yPT0xNj8yOnI9PTE3PzM6NztyPjE1JiYoaC5GLl9wdXRzRShwLGwseSx2KSxsKz12KX1yZXR1cm4gbH0saC5GLl9sZW5Db2Rlcz1mdW5jdGlvbihvLGEpe2Zvcih2YXIgcD1vLmxlbmd0aDtwIT0yJiZvW3AtMV09PTA7KXAtPTI7Zm9yKHZhciBsPTA7bDxwO2wrPTIpe3ZhciBfPW9bbCsxXSxyPWwrMzxwP29bbCszXTotMSx5PWwrNTxwP29bbCs1XTotMSx2PWw9PTA/LTE6b1tsLTFdO2lmKF89PTAmJnI9PV8mJnk9PV8pe2Zvcih2YXIgdT1sKzU7dSsyPHAmJm9bdSsyXT09XzspdSs9Mjt2YXIgZz1NYXRoLm1pbih1KzEtbD4+PjEsMTM4KTtnPDExP2EucHVzaCgxNyxnLTMpOmEucHVzaCgxOCxnLTExKSxsKz1nKjItMn1lbHNlIGlmKF89PXYmJnI9PV8mJnk9PV8pe2Zvcih2YXIgdT1sKzU7dSsyPHAmJm9bdSsyXT09XzspdSs9Mjt2YXIgZz1NYXRoLm1pbih1KzEtbD4+PjEsNik7YS5wdXNoKDE2LGctMyksbCs9ZyoyLTJ9ZWxzZSBhLnB1c2goXywwKX1yZXR1cm4gcD4+PjF9LGguRi5faHVmVHJlZT1mdW5jdGlvbihvLGEscCl7dmFyIGw9W10sXz1vLmxlbmd0aCxyPWEubGVuZ3RoLHk9MDtmb3IoeT0wO3k8cjt5Kz0yKWFbeV09MCxhW3krMV09MDtmb3IoeT0wO3k8Xzt5Kyspb1t5XSE9MCYmbC5wdXNoKHtsaXQ6eSxmOm9beV19KTt2YXIgdj1sLmxlbmd0aCx1PWwuc2xpY2UoMCk7aWYodj09MClyZXR1cm4gMDtpZih2PT0xKXt2YXIgZz1sWzBdLmxpdCx1PWc9PTA/MTowO3JldHVybiBhWyhnPDwxKSsxXT0xLGFbKHU8PDEpKzFdPTEsMX1sLnNvcnQoZnVuY3Rpb24oZCxjKXtyZXR1cm4gZC5mLWMuZn0pO3ZhciB0PWxbMF0sZT1sWzFdLGk9MCxzPTEsbj0yO2ZvcihsWzBdPXtsaXQ6LTEsZjp0LmYrZS5mLGw6dCxyOmUsZDowfTtzIT12LTE7KWkhPXMmJihuPT12fHxsW2ldLmY8bFtuXS5mKT90PWxbaSsrXTp0PWxbbisrXSxpIT1zJiYobj09dnx8bFtpXS5mPGxbbl0uZik/ZT1sW2krK106ZT1sW24rK10sbFtzKytdPXtsaXQ6LTEsZjp0LmYrZS5mLGw6dCxyOmV9O3ZhciBmPWguRi5zZXREZXB0aChsW3MtMV0sMCk7Zm9yKGY+cCYmKGguRi5yZXN0cmljdERlcHRoKHUscCxmKSxmPXApLHk9MDt5PHY7eSsrKWFbKHVbeV0ubGl0PDwxKSsxXT11W3ldLmQ7cmV0dXJuIGZ9LGguRi5zZXREZXB0aD1mdW5jdGlvbihvLGEpe3JldHVybiBvLmxpdCE9LTE/KG8uZD1hLGEpOk1hdGgubWF4KGguRi5zZXREZXB0aChvLmwsYSsxKSxoLkYuc2V0RGVwdGgoby5yLGErMSkpfSxoLkYucmVzdHJpY3REZXB0aD1mdW5jdGlvbihvLGEscCl7dmFyIGw9MCxfPTE8PHAtYSxyPTA7Zm9yKG8uc29ydChmdW5jdGlvbih2LHUpe3JldHVybiB1LmQ9PXYuZD92LmYtdS5mOnUuZC12LmR9KSxsPTA7bDxvLmxlbmd0aCYmb1tsXS5kPmE7bCsrKXt2YXIgeT1vW2xdLmQ7b1tsXS5kPWEscis9Xy0oMTw8cC15KX1mb3Iocj1yPj4+cC1hO3I+MDspe3ZhciB5PW9bbF0uZDt5PGE/KG9bbF0uZCsrLHItPTE8PGEteS0xKTpsKyt9Zm9yKDtsPj0wO2wtLSlvW2xdLmQ9PWEmJnI8MCYmKG9bbF0uZC0tLHIrKyk7ciE9MCYmY29uc29sZS5sb2coImRlYnQgbGVmdCIpfSxoLkYuX2dvb2RJbmRleD1mdW5jdGlvbihvLGEpe3ZhciBwPTA7cmV0dXJuIGFbcHwxNl08PW8mJihwfD0xNiksYVtwfDhdPD1vJiYocHw9OCksYVtwfDRdPD1vJiYocHw9NCksYVtwfDJdPD1vJiYocHw9MiksYVtwfDFdPD1vJiYocHw9MSkscH0saC5GLl93cml0ZUxpdD1mdW5jdGlvbihvLGEscCxsKXtyZXR1cm4gaC5GLl9wdXRzRihwLGwsYVtvPDwxXSksbCthWyhvPDwxKSsxXX0saC5GLmluZmxhdGU9ZnVuY3Rpb24obyxhKXt2YXIgcD1VaW50OEFycmF5O2lmKG9bMF09PTMmJm9bMV09PTApcmV0dXJuIGF8fG5ldyBwKDApO3ZhciBsPWguRixfPWwuX2JpdHNGLHI9bC5fYml0c0UseT1sLl9kZWNvZGVUaW55LHY9bC5tYWtlQ29kZXMsdT1sLmNvZGVzMm1hcCxnPWwuX2dldDE3LHQ9bC5VLGU9YT09bnVsbDtlJiYoYT1uZXcgcChvLmxlbmd0aD4+PjI8PDMpKTtmb3IodmFyIGk9MCxzPTAsbj0wLGY9MCxkPTAsYz0wLG09MCx4PTAsVT0wLGIsdztpPT0wOyl7aWYoaT1fKG8sVSwxKSxzPV8obyxVKzEsMiksVSs9MyxzPT0wKXtVJjcmJihVKz04LShVJjcpKTt2YXIgUz0oVT4+PjMpKzQsRj1vW1MtNF18b1tTLTNdPDw4O2UmJihhPWguRi5fY2hlY2soYSx4K0YpKSxhLnNldChuZXcgcChvLmJ1ZmZlcixvLmJ5dGVPZmZzZXQrUyxGKSx4KSxVPVMrRjw8Myx4Kz1GO2NvbnRpbnVlfWlmKGUmJihhPWguRi5fY2hlY2soYSx4KygxPDwxNykpKSxzPT0xJiYoYj10LmZsbWFwLHc9dC5mZG1hcCxjPTUxMSxtPTMxKSxzPT0yKXtuPXIobyxVLDUpKzI1NyxmPXIobyxVKzUsNSkrMSxkPXIobyxVKzEwLDQpKzQsVSs9MTQ7Zm9yKHZhciBCPTA7QjwzODtCKz0yKXQuaXRyZWVbQl09MCx0Lml0cmVlW0IrMV09MDtmb3IodmFyIHo9MSxCPTA7QjxkO0IrKyl7dmFyIEk9cihvLFUrQiozLDMpO3QuaXRyZWVbKHQub3JkcltCXTw8MSkrMV09SSxJPnomJih6PUkpfVUrPTMqZCx2KHQuaXRyZWUseiksdSh0Lml0cmVlLHosdC5pbWFwKSxiPXQubG1hcCx3PXQuZG1hcCxVPXkodC5pbWFwLCgxPDx6KS0xLG4rZixvLFUsdC50dHJlZSk7dmFyIFQ9bC5fY29weU91dCh0LnR0cmVlLDAsbix0Lmx0cmVlKTtjPSgxPDxUKS0xO3ZhciBDPWwuX2NvcHlPdXQodC50dHJlZSxuLGYsdC5kdHJlZSk7bT0oMTw8QyktMSx2KHQubHRyZWUsVCksdSh0Lmx0cmVlLFQsYiksdih0LmR0cmVlLEMpLHUodC5kdHJlZSxDLHcpfWZvcig7Oyl7dmFyIEw9YltnKG8sVSkmY107VSs9TCYxNTt2YXIgUD1MPj4+NDtpZighKFA+Pj44KSlhW3grK109UDtlbHNle2lmKFA9PTI1NilicmVhazt2YXIgUj14K1AtMjU0O2lmKFA+MjY0KXt2YXIgaz10LmxkZWZbUC0yNTddO1I9eCsoaz4+PjMpK3IobyxVLGsmNyksVSs9ayY3fXZhciBEPXdbZyhvLFUpJm1dO1UrPUQmMTU7dmFyIEE9RD4+PjQsTT10LmRkZWZbQV0sTj0oTT4+PjQpK18obyxVLE0mMTUpO2ZvcihVKz1NJjE1LGUmJihhPWguRi5fY2hlY2soYSx4KygxPDwxNykpKTt4PFI7KWFbeF09YVt4KystTl0sYVt4XT1hW3grKy1OXSxhW3hdPWFbeCsrLU5dLGFbeF09YVt4KystTl07eD1SfX19cmV0dXJuIGEubGVuZ3RoPT14P2E6YS5zbGljZSgwLHgpfSxoLkYuX2NoZWNrPWZ1bmN0aW9uKG8sYSl7dmFyIHA9by5sZW5ndGg7aWYoYTw9cClyZXR1cm4gbzt2YXIgbD1uZXcgVWludDhBcnJheShNYXRoLm1heChwPDwxLGEpKTtyZXR1cm4gbC5zZXQobywwKSxsfSxoLkYuX2RlY29kZVRpbnk9ZnVuY3Rpb24obyxhLHAsbCxfLHIpe2Zvcih2YXIgeT1oLkYuX2JpdHNFLHY9aC5GLl9nZXQxNyx1PTA7dTxwOyl7dmFyIGc9b1t2KGwsXykmYV07Xys9ZyYxNTt2YXIgdD1nPj4+NDtpZih0PD0xNSlyW3VdPXQsdSsrO2Vsc2V7dmFyIGU9MCxpPTA7dD09MTY/KGk9Myt5KGwsXywyKSxfKz0yLGU9clt1LTFdKTp0PT0xNz8oaT0zK3kobCxfLDMpLF8rPTMpOnQ9PTE4JiYoaT0xMSt5KGwsXyw3KSxfKz03KTtmb3IodmFyIHM9dStpO3U8czspclt1XT1lLHUrK319cmV0dXJuIF99LGguRi5fY29weU91dD1mdW5jdGlvbihvLGEscCxsKXtmb3IodmFyIF89MCxyPTAseT1sLmxlbmd0aD4+PjE7cjxwOyl7dmFyIHY9b1tyK2FdO2xbcjw8MV09MCxsWyhyPDwxKSsxXT12LHY+XyYmKF89dikscisrfWZvcig7cjx5OylsW3I8PDFdPTAsbFsocjw8MSkrMV09MCxyKys7cmV0dXJuIF99LGguRi5tYWtlQ29kZXM9ZnVuY3Rpb24obyxhKXtmb3IodmFyIHA9aC5GLlUsbD1vLmxlbmd0aCxfLHIseSx2LHUsZz1wLmJsX2NvdW50LHY9MDt2PD1hO3YrKylnW3ZdPTA7Zm9yKHY9MTt2PGw7dis9MilnW29bdl1dKys7dmFyIHQ9cC5uZXh0X2NvZGU7Zm9yKF89MCxnWzBdPTAscj0xO3I8PWE7cisrKV89XytnW3ItMV08PDEsdFtyXT1fO2Zvcih5PTA7eTxsO3krPTIpdT1vW3krMV0sdSE9MCYmKG9beV09dFt1XSx0W3VdKyspfSxoLkYuY29kZXMybWFwPWZ1bmN0aW9uKG8sYSxwKXtmb3IodmFyIGw9by5sZW5ndGgsXz1oLkYuVSxyPV8ucmV2MTUseT0wO3k8bDt5Kz0yKWlmKG9beSsxXSE9MClmb3IodmFyIHY9eT4+MSx1PW9beSsxXSxnPXY8PDR8dSx0PWEtdSxlPW9beV08PHQsaT1lKygxPDx0KTtlIT1pOyl7dmFyIHM9cltlXT4+PjE1LWE7cFtzXT1nLGUrK319LGguRi5yZXZDb2Rlcz1mdW5jdGlvbihvLGEpe2Zvcih2YXIgcD1oLkYuVS5yZXYxNSxsPTE1LWEsXz0wO188by5sZW5ndGg7Xys9Mil7dmFyIHI9b1tfXTw8YS1vW18rMV07b1tfXT1wW3JdPj4+bH19LGguRi5fcHV0c0U9ZnVuY3Rpb24obyxhLHApe3A9cDw8KGEmNyk7dmFyIGw9YT4+PjM7b1tsXXw9cCxvW2wrMV18PXA+Pj44fSxoLkYuX3B1dHNGPWZ1bmN0aW9uKG8sYSxwKXtwPXA8PChhJjcpO3ZhciBsPWE+Pj4zO29bbF18PXAsb1tsKzFdfD1wPj4+OCxvW2wrMl18PXA+Pj4xNn0saC5GLl9iaXRzRT1mdW5jdGlvbihvLGEscCl7cmV0dXJuKG9bYT4+PjNdfG9bKGE+Pj4zKSsxXTw8OCk+Pj4oYSY3KSYoMTw8cCktMX0saC5GLl9iaXRzRj1mdW5jdGlvbihvLGEscCl7cmV0dXJuKG9bYT4+PjNdfG9bKGE+Pj4zKSsxXTw8OHxvWyhhPj4+MykrMl08PDE2KT4+PihhJjcpJigxPDxwKS0xfSxoLkYuX2dldDE3PWZ1bmN0aW9uKG8sYSl7cmV0dXJuKG9bYT4+PjNdfG9bKGE+Pj4zKSsxXTw8OHxvWyhhPj4+MykrMl08PDE2KT4+PihhJjcpfSxoLkYuX2dldDI1PWZ1bmN0aW9uKG8sYSl7cmV0dXJuKG9bYT4+PjNdfG9bKGE+Pj4zKSsxXTw8OHxvWyhhPj4+MykrMl08PDE2fG9bKGE+Pj4zKSszXTw8MjQpPj4+KGEmNyl9LGguRi5VPWZ1bmN0aW9uKCl7dmFyIG89VWludDE2QXJyYXksYT1VaW50MzJBcnJheTtyZXR1cm57bmV4dF9jb2RlOm5ldyBvKDE2KSxibF9jb3VudDpuZXcgbygxNiksb3JkcjpbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0sb2YwOlszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4LDk5OSw5OTksOTk5XSxleGI6WzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMCwwLDAsMF0sbGRlZjpuZXcgbygzMiksZGYwOlsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzcsNjU1MzUsNjU1MzVdLGR4YjpbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxMywwLDBdLGRkZWY6bmV3IGEoMzIpLGZsbWFwOm5ldyBvKDUxMiksZmx0cmVlOltdLGZkbWFwOm5ldyBvKDMyKSxmZHRyZWU6W10sbG1hcDpuZXcgbygzMjc2OCksbHRyZWU6W10sdHRyZWU6W10sZG1hcDpuZXcgbygzMjc2OCksZHRyZWU6W10saW1hcDpuZXcgbyg1MTIpLGl0cmVlOltdLHJldjE1Om5ldyBvKDMyNzY4KSxsaHN0Om5ldyBhKDI4NiksZGhzdDpuZXcgYSgzMCksaWhzdDpuZXcgYSgxOSksbGl0czpuZXcgYSgxNWUzKSxzdHJ0Om5ldyBvKDY1NTM2KSxwcmV2Om5ldyBvKDMyNzY4KX19KCksZnVuY3Rpb24oKXtmb3IodmFyIG89aC5GLlUsYT0zMjc2OCxwPTA7cDxhO3ArKyl7dmFyIGw9cDtsPShsJjI4NjMzMTE1MzApPj4+MXwobCYxNDMxNjU1NzY1KTw8MSxsPShsJjM0MzU5NzM4MzYpPj4+MnwobCY4NTg5OTM0NTkpPDwyLGw9KGwmNDA0MjMyMjE2MCk+Pj40fChsJjI1MjY0NTEzNSk8PDQsbD0obCY0Mjc4MjU1MzYwKT4+Pjh8KGwmMTY3MTE5MzUpPDw4LG8ucmV2MTVbcF09KGw+Pj4xNnxsPDwxNik+Pj4xN31mdW5jdGlvbiBfKHIseSx2KXtmb3IoO3ktLSE9MDspci5wdXNoKDAsdil9Zm9yKHZhciBwPTA7cDwzMjtwKyspby5sZGVmW3BdPW8ub2YwW3BdPDwzfG8uZXhiW3BdLG8uZGRlZltwXT1vLmRmMFtwXTw8NHxvLmR4YltwXTtfKG8uZmx0cmVlLDE0NCw4KSxfKG8uZmx0cmVlLDExMiw5KSxfKG8uZmx0cmVlLDI0LDcpLF8oby5mbHRyZWUsOCw4KSxoLkYubWFrZUNvZGVzKG8uZmx0cmVlLDkpLGguRi5jb2RlczJtYXAoby5mbHRyZWUsOSxvLmZsbWFwKSxoLkYucmV2Q29kZXMoby5mbHRyZWUsOSksXyhvLmZkdHJlZSwzMiw1KSxoLkYubWFrZUNvZGVzKG8uZmR0cmVlLDUpLGguRi5jb2RlczJtYXAoby5mZHRyZWUsNSxvLmZkbWFwKSxoLkYucmV2Q29kZXMoby5mZHRyZWUsNSksXyhvLml0cmVlLDE5LDApLF8oby5sdHJlZSwyODYsMCksXyhvLmR0cmVlLDMwLDApLF8oby50dHJlZSwzMjAsMCl9KCl9KShXKTt2YXIgJD1XLmV4cG9ydHMscT1LKCQpO2NsYXNzIEp7YXN5bmMgaGFuZGxlRGF0YShoLG8pe2NvbnN0IGE9cS5wYXJzZShoKTtpZihhWyJhbHBoYS5tcDQiXXx8YVsiYWxwaGEud2VibSJdKXthd2FpdCB0aGlzLmRlY29kZUFscGhhTWFza1ZpZGVvKGEsbyk7cmV0dXJufWxldCBwPU9iamVjdC5rZXlzKGEpLnNvcnQoKTtmb3IoY29uc3QgbCBvZiBwKWlmKGwuZW5kc1dpdGgoIi5qc29uIikpe2xldCBfPVtdO2NvbnN0IHI9SlNPTi5wYXJzZShuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYVtsXSkpLHk9ci50aW1lY29kZS5yZXBsYWNlKC86L2csIl8iKTtpZihyLnBsYWNlaG9sZGVycylmb3IoY29uc3QgdiBpbiByLnBsYWNlaG9sZGVycyl7bGV0IHU9YCR7eX1fJHt2fS5hbHBoYWA7YVt1XSYmKHIucGxhY2Vob2xkZXJzW3ZdLmFscGhhQXNVaW50OEFycmF5PWFbdV0sXy5wdXNoKGFbdV0uYnVmZmVyKSl9cG9zdE1lc3NhZ2UocixfKX19Z2V0RGVzY3JpcHRpb24oaCl7Zm9yKGNvbnN0IG8gb2YgaC5tZGlhLm1pbmYuc3RibC5zdHNkLmVudHJpZXMpe2NvbnN0IGE9by5hdmNDfHxvLmh2Y0N8fG8udnBjQ3x8by5hdjFDO2lmKGEpe2NvbnN0IHA9bmV3IE8uRGF0YVN0cmVhbSh2b2lkIDAsMCxPLkRhdGFTdHJlYW0uQklHX0VORElBTik7cmV0dXJuIGEud3JpdGUocCksbmV3IFVpbnQ4QXJyYXkocC5idWZmZXIsOCl9fXJldHVybiBjb25zb2xlLmVycm9yKCJhdmNDLCBodmNDLCB2cGNDLCBvciBhdjFDIGJveCBub3QgZm91bmQgb24gIixoKSxudWxsfW51bWVyaWNGaWxlQ29tcGFyYXRvcihoLG8pe2NvbnN0IGE9L14oXGR7Mn0pXyhcZHsyfSlfKFxkezJ9KV8oXGR7Mn0pKD86XC4oXGQrKSk/XC4oLispJC8scD1oLm1hdGNoKGEpLGw9by5tYXRjaChhKTtpZighcHx8IWwpcmV0dXJuIDA7Y29uc3RbLF8scix5LHYsdT0iMCIsZ109cCxbLHQsZSxpLHMsbj0iMCIsZl09bDtyZXR1cm4gcGFyc2VJbnQoXywxMCktcGFyc2VJbnQodCwxMCl8fHBhcnNlSW50KHIsMTApLXBhcnNlSW50KGUsMTApfHxwYXJzZUludCh5LDEwKS1wYXJzZUludChpLDEwKXx8cGFyc2VJbnQodiwxMCktcGFyc2VJbnQocywxMCl8fHBhcnNlSW50KHUsMTApLXBhcnNlSW50KG4sMTApfHxnLmxvY2FsZUNvbXBhcmUoZil9YXN5bmMgZGVjb2RlQWxwaGFNYXNrVmlkZW8oaCxvKXtsZXQgYT1PYmplY3Qua2V5cyhoKS5maWx0ZXIoZz0+Zy5lbmRzV2l0aCgiLmpzb24iKSkuc29ydCh0aGlzLm51bWVyaWNGaWxlQ29tcGFyYXRvcikubWFwKGc9PkpTT04ucGFyc2UobmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGhbZ10pKSkuZmlsdGVyKGc9PmcucGxhY2Vob2xkZXJzKTtjb25zdCBwPXBlcmZvcm1hbmNlLm5vdygpLGw9YS5sZW5ndGg7Y29uc29sZS5pbmZvKCJXZSBuZWVkIHRvIGRlY29kZSAiLGwsImZyYW1lcyIpO2NvbnN0IHI9YXdhaXQgbmV3IEJsb2IoW2hbImFscGhhLm1wNCJdfHxoWyJhbHBoYS53ZWJtIl1dLHt0eXBlOmhbImFscGhhLm1wNCJdPyJ2aWRlby9tcDQiOiJ2aWRlby93ZWJtIn0pLmFycmF5QnVmZmVyKCk7ci5maWxlU3RhcnQ9MDtsZXQgeT0wO2NvbnN0IHY9bmV3IFZpZGVvRGVjb2Rlcih7b3V0cHV0Omc9PnthW3ldLmFscGhhTWFzaz1nLHBvc3RNZXNzYWdlKGFbeV0sW2ddKSxnLmNsb3NlKCkseSsrLHk+PWwmJmNvbnNvbGUubG9nKG8sIkRlY29kZWQiLHksIkZyYW1lcyBpbiIscGVyZm9ybWFuY2Uubm93KCktcCwibWlsbGlzZWNvbmRzLiIpfSxlcnJvcjpnPT5jb25zb2xlLmVycm9yKCItLURlY29kZXIgZXJyb3I6IixnKX0pLHU9WC5jcmVhdGVGaWxlKCk7dS5vbkVycm9yPWc9PmNvbnNvbGUuZXJyb3IoIk1QNCBwYXJzaW5nIGVycm9yOiIsZyksdS5vblJlYWR5PWc9Pntjb25zdCB0PWcudHJhY2tzLmZpbmQoZT0+ZS50eXBlPT09InZpZGVvIik7dCYmKHYuY29uZmlndXJlKHtjb2RlYzp0LmNvZGVjLHdpZHRoOnQudmlkZW8ud2lkdGgsaGVpZ2h0OnQudmlkZW8uaGVpZ2h0LGRlc2NyaXB0aW9uOnRoaXMuZ2V0RGVzY3JpcHRpb24odS5nZXRUcmFja0J5SWQodC5pZCkpfSksdS5zZXRFeHRyYWN0aW9uT3B0aW9ucyh0LmlkKSx1LnN0YXJ0KCkpfSx1Lm9uU2FtcGxlcz0oZyx0LGUpPT57ZS5mb3JFYWNoKGk9Pntjb25zdCBzPW5ldyBFbmNvZGVkVmlkZW9DaHVuayh7dHlwZTppLmlzX3N5bmM/ImtleSI6ImRlbHRhIix0aW1lc3RhbXA6aS5jdHMsZGF0YTpuZXcgVWludDhBcnJheShpLmRhdGEpfSk7di5kZWNvZGUocyl9KX0sdS5hcHBlbmRCdWZmZXIocil9fWNvbnN0IFY9IjoiLEc9KEUsaCk9Pntjb25zdCBvPUUuc3BsaXQoaCk7cmV0dXJue2g6cGFyc2VJbnQob1swXSksbTpwYXJzZUludChvWzFdKSxzOnBhcnNlSW50KG9bMl0pLGY6cGFyc2VJbnQob1szXSl9fSxIPUU9PigiMCIrRS5oKS5zbGljZSgtMikrVisoIjAiK0UubSkuc2xpY2UoLTIpK1YrKCIwIitFLnMpLnNsaWNlKC0yKStWKygiMCIrRS5mKS5zbGljZSgtMiksWT0oRSxoKT0+e2xldCBvPXsuLi5FfTtyZXR1cm4gby5zKz1oLG8ucz49NjAmJihvLnM9MCxvLm0rKyxvLm0+PTYwJiYoby5tPTAsby5oKyspKSxvfSxaPShFLGg9MCk9PntsZXQgbz1HKEUsIjoiKTtyZXR1cm4gaCYmKG89WShvLGgpKSxvfSxRPShFLGg9MCk9PntsZXQgbz1aKEUsaCk7cmV0dXJuIEgobyl9LGo9KEUsaCk9PkUuaD5oLmg/ITA6RS5oPGguaD8hMTpFLm0+aC5tPyEwOkUubTxoLm0/ITE6RS5zPmgucz8hMDpFLnM8aC5zPyExOkUuZj5oLmY7dHJ5e2xldCBFPSExLGg9IiIsbz0iIixhPXt9LHA9bnVsbCxsPVtdLF89e30scj0hMCx5PSExO2NvbnN0IHY9bmV3IEo7bGV0IHU7Y29uc3QgZz1pPT57ciYmKGk+MCYmaihaKGEudGMsaSksXyk/c2V0VGltZW91dCgoKT0+e2coaSl9LDEwMCk6c2V0VGltZW91dCgoKT0+e2EudGM9UShhLnRjLGkpLGUoKX0sMCkpfSx0PWk9Pntjb25zdCBzPWkudGMucmVwbGFjZUFsbCgiOiIsIl8iKTtyZXR1cm4gdT9gJHtpLnBhdGh9L21hbmlmZXN0cy81OS45NC8ke3N9LnppcGA6YCR7aS5wYXRofS8ke3N9LnppcGB9LGU9YXN5bmMoKT0+e3k9ITA7Y29uc3QgaT1hLHM9dChpKTt0cnl7Y29uc3Qgbj1wZXJmb3JtYW5jZS5ub3coKSxmPWF3YWl0IGZldGNoKHMpO2lmKGYuc3RhdHVzPj00MDApe2xldCB3PShwZXJmb3JtYW5jZS5ub3coKS1wKS8xZTM7dz40Pyhjb25zb2xlLmVycm9yKCJEaWRuJ3QgZmluZCB0aW1lY29kZSAiLGkudGMsIiwgbm93IGZvciAiK3cudG9GaXhlZCgyKSsiIHNlY29uZHMgLSBnaXZlIHVwICEiKSxnKDIpKTooY29uc29sZS5lcnJvcigiRGlkbid0IGZpbmQgdGltZWNvZGUgIixpLnRjLCIsIG5vdyBmb3IgIit3LnRvRml4ZWQoMikrIiBzZWNvbmRzIiksZygwKSkseT0hMTtyZXR1cm59bGV0IGQ9cGVyZm9ybWFuY2Uubm93KCksYz0wO2lmKHApZm9yKGM9ZC1wLGwucHVzaChjKTtsLmxlbmd0aD4xZTM7KWwuc2hpZnQoKTtwPWQ7Y29uc3QgbT1hd2FpdCBmLmFycmF5QnVmZmVyKCk7YXdhaXQgdi5oYW5kbGVEYXRhKG0saS50Yyk7Y29uc3QgeD1wZXJmb3JtYW5jZS5ub3coKX1jYXRjaChuKXtjb25zb2xlLmVycm9yKGBFcnJvciBvbiB1cmwgJHtzfWAsbil9eT0hMSxnKDIpfTthZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixpPT57aWYoIUUmJmkuZGF0YS5jbG91ZEZyb250VVJMKXtFPSEwLHU9aS5kYXRhLm1hc2tNUDQ/PyExLGg9aS5kYXRhLmNsb3VkRnJvbnRVUkwsbz1pLmRhdGEuZm9sZGVyTmFtZTtsZXQgcz1HKGkuZGF0YS50YywiOiIpO189WShPYmplY3QuYXNzaWduKHt9LHMpLDQpLHMuZj0wLHMucz1zLnMlMj09PTA/cy5zOnMucy0xLGE9e3RjOkgocykscGF0aDpgJHtofS8ke299YH0sY29uc29sZS5sb2coIk1ldGEtZGF0YSB3b3JrZXIgc3RhcnRpbmcgZnJvbSB0aGlzIHRpbWUtY29kZToiLGEudGMpLGUoKX1lbHNle2xldCBzPUcoaS5kYXRhLnRjLCI6Iik7cy5mPTAscy5zPXMucyUyPT09MD9zLnM6cy5zLTEsaihzLF8pJiYoYS50Yz1IKHMpLGNvbnNvbGUubG9nKCJNZXRhLWRhdGEgd29ya2VyIGp1bXBzIGZvcndhcmQgdG8gdGhpcyB0aW1lLWNvZGU6ICIsYS50YykpLGooRyhhLnRjLCI6IiksWShzLDQpKSYmKGEudGM9SChzKSxjb25zb2xlLmxvZygiTWV0YS1kYXRhIHdvcmtlciBqdW1wcyBiYWNrIHRvIHRoaXMgdGltZS1jb2RlOiAiLGEudGMpKSxfPVkocyw0KSwhciYmaS5kYXRhLmVuYWJsZWQ/KHI9aS5kYXRhLmVuYWJsZWQseXx8ZSgpKTpyPWkuZGF0YS5lbmFibGVkfX0pfWNhdGNoKEUpe2NvbnNvbGUuZXJyb3IoRSl9fSkoKTsK",ao=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),za=typeof self<"u"&&self.Blob&&new Blob([ao(Ia)],{type:"text/javascript;charset=utf-8"});function co(e){let t;try{if(t=za&&(self.URL||self.webkitURL).createObjectURL(za),!t)throw"";const n=new Worker(t,{name:e==null?void 0:e.name});return n.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch{return new Worker("data:text/javascript;base64,"+Ia,{name:e==null?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}class Ma{constructor(t,n){this.options=t,this.composer=n,this.sourceFPS=6e4/1001,this.folderName,this.lastFrames,this.metadataWorker=null,this.getMetaDataFolderName()}setMetaDataFolderName(t){this.folderName=t,console.log("Folder name for "+this.options.gameId+": "+this.folderName),this.lastFrames&&this.loadMetaData(this.lastFrames)}async getMetaDataFolderName(){await(await fetch(this.options.allGamesURL)).json(),this.setMetaDataFolderName(this.options.gameId)}setLastFrame(t){this.lastFrames=t,this.folderName&&this.loadMetaData(this.lastFrames)}loadMetaData(t){if(this.metadataWorker==null){const n=new co;n.onerror=function(a){console.error("Error from worker:",a)},n.addEventListener("message",a=>{a.data.time||this.composer.onMetaData(a.data)});let l=Tl(J(t,this.sourceFPS,!0));n.postMessage({cloudFrontURL:this.options.cloudFrontURL,folderName:this.folderName,tc:M(l,!1),maskMP4:this.options.maskMP4}),this.metadataWorker=n}else{let n=Tl(J(this.lastFrames,this.sourceFPS,!0));this.metadataWorker.postMessage({tc:M(n,!1),enabled:this.options.enabled})}}}class io{constructor(t,n){g(this,"metaDataFetcher",null);g(this,"composer",null);g(this,"ctxGl",null);g(this,"firstFrameTimecode",[0,0,0,0,0]);g(this,"countVid",0);g(this,"lastVidDateTime",0);g(this,"lastCalled","");g(this,"frameNumberToRender",0);g(this,"lastOffset",0);g(this,"lastOffsetShown");g(this,"countOfCorrectionsInRow",0);g(this,"deltaVidDeltaArray",[]);g(this,"deltaVidDeltaArrayCapacity",20);g(this,"countANI",0);g(this,"aniDelltaTimeArray",[]);g(this,"aniDelltaTimeArrayCapacity",60);g(this,"lastAniNow",0);g(this,"vidFiredTime",0);g(this,"correction",!1);g(this,"prevFraction",.99);g(this,"lastDblFrame",0);g(this,"lastRealFrame",0);g(this,"lastNow",0);g(this,"renderOnNextFrame",-1);g(this,"countAppleANI",0);g(this,"initializeComponents",()=>{window.BB.RENDER_IN_WORKER?this.initializeComponents_Worker():this.initializeComponents_MainThread()});g(this,"initializeComponents_MainThread",()=>{let t=this.video.parentElement;this.composer=new cr(this.options,t),this.ads=new Sa(this.composer,this.options),this.metaDataFetcher=new Ma(this.options,this.composer)});g(this,"initializeComponents_Worker",()=>{let t=this.video.parentElement;t.offsetTop,t.offsetLeft,this.canvas.style.top=0,this.canvas.style.left=0;var n=this.doCalculateBlackBars(this.video);if(this.video.readyState>=1){var n=this.doCalculateBlackBars(this.video);this.canvas.style.top=Math.round(n.top)+"px",this.canvas.style.left=Math.round(n.left)+"px"}else console.log("video element is not yet loaded. Setting up loadedmetadata event to wait until it's loaded. video.readyState="+this.video.readyState),this.video.addEventListener("loadedmetadata",()=>{var c=this.doCalculateBlackBars(this.video);this.canvas.style.top=Math.round(c.top)+"px",this.canvas.style.left=Math.round(c.left)+"px"});this.canvas.style.width="100%",this.canvas.style.zIndex=1e5,this.canvas.width=t.clientWidth,this.canvas.height=t.clientHeight,this.canvas.style.position="absolute";let l=t.getElementsByTagName("video")[0],a=l.nextSibling;a?t.insertBefore(this.canvas,a):t.appendChild(this.canvas),this.canvas.style["pointer-events"]="none",this.composer=new sr(this.canvas,this.options),l.addEventListener("click",c=>{var i=this.canvas.getBoundingClientRect();this.composer.onUserClickOnCanvas(c.clientX,c.clientY,i)}),this.ads=new Sa(this.composer,this.options),this.metaDataFetcher=new Ma(this.options,this.composer)});g(this,"getCanvas",()=>{var t;return(t=this.composer)==null?void 0:t.getCanvas()});if(this.options=n,this.video=t,this.onFrameVideoChromeMac=this.onFrameVideoChromeMac.bind(this),this.onFrameVideoChromeWin=this.onFrameVideoChromeWin.bind(this),this.onAnimatedFrameSafari=this.onAnimatedFrameSafari.bind(this),this.onAnimatedFrameChromeWin=this.onAnimatedFrameChromeWin.bind(this),this.onAnimatedFrameChromeMac=this.onAnimatedFrameChromeMac.bind(this),this.calculateBlackBars=this.calculateBlackBars.bind(this),n.renderingMode==Me.Augment)if(window.BB.RENDER_IN_WORKER)this.canvas=document.createElement("canvas");else{let l=document.createElement("canvas");l.width=500,l.height=500,document.body.appendChild(l),this.ctxGl=l.getContext("webgl")}this.lastVideoFrameRenderedInGL=-1,this.lastCorrection=!1,this.sourceFPS=6e4/1001,ze.isSafariMac()?(n.debug&&(document.getElementById("numberInput").value=2),window.BB.RENDER_IN_WORKER=!1,window.requestAnimationFrame(this.onAnimatedFrameSafari)):ze.isChromeMac()?(n.debug&&(document.getElementById("numberInput").value=1),window.BB.RENDER_IN_WORKER=!0,window.requestAnimationFrame(this.onAnimatedFrameChromeMac),t.readyState>=1?t.requestVideoFrameCallback(this.onFrameVideoChromeMac):t.addEventListener("loadedmetadata",()=>{t.requestVideoFrameCallback(this.onFrameVideoChromeMac)})):console.BBerror("Platform not supported yet"),window.addEventListener("resize",()=>{this.calculateBlackBars(t)})}processTimedMetadata(t,n){let l="";if(t&&t.includes("www.mediakind.com/NTC")){const a=t.replace(/.*NTC./,"");let c=0;for(;c+8<=a.length;){const i=a.substring(c,c+4),r=((a.charCodeAt(c+4)*256+a.charCodeAt(c+5))*256+a.charCodeAt(c+6))*256+a.charCodeAt(c+7);if(c+8+r>a.length)break;const d=a.substring(c+8,c+8+r);i=="utc_"&&new Date(parseInt(d)).getTime()/1e3,i=="tc__"&&(this.tcTimeStamp=new Date(parseInt(d)).getTime()),i==="offs"&&(this.timecode_offset=parseInt(d)/90,this.options.debug&&console.log("We are HERE:TimeCode",this.timecode_offset)),c+=8+r}}return l}onNewMetadata(t){if(t&&t.metadata&&t.metadata.id==0||ze.isSafariMac()){if(t.metadata.messageData)t.metadata.messageData=this.processTimedMetadata(t.metadata.messageData,t.metadata.presentationTime);else if(t.metadata.frames&&t.metadata.frames.length&&t.metadata.frames[0].key&&t.metadata.frames[0].key.toLowerCase()==="priv"){const n=t.metadata.frames.filter(l=>l.info&&l.info.toLowerCase().includes("ntc"));if(n.length){const l=`${n[n.length-1].info}\0${String.fromCharCode(...n[n.length-1].data)}`;t.metadata.messageData=this.processTimedMetadata(l,t.metadata.presentationTime)}}if(t.metadata.id==0||ze.isSafariMac()&&this.timecode_offset==0){t.metadata.presentationTime*1e3;const n=new Date(this.tcTimeStamp-this.timecode_offset);let l=Math.round(n.getUTCMilliseconds()*30*2/1001)/2;const a=l%1;let c=1;a==.5&&(l=Math.floor(l),c=2),this.firstFrameTimecode=[n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),Math.floor(l),c==1?0:1]}}}onNewSegmentForMetadata(t){if(typeof globalConfig<"u"&&typeof globalConfig.MKsync<"u"&&globalConfig.MKsync=="no")return;let n={frame:0,playerTime:0};n.frame=Vn(this.firstFrameTimecode,6e4/1001,!0),n.stringTime=M(this.firstFrameTimecode,!0,!0),console.log("New segment ("+t.url+"): "+n.stringTime+" ("+n.frame+") playing at "+t.playbackTime),n.playerTime=t.playbackTime,this.options.syncPoint=n,t.mimeType.includes("video")&&console.log("url: "+t.url)}onNewSegment(t){switch(t.eventType){case wmcEvents.AMC_EVENT_PLAYER_SEGMENT_PLAYBACK:let n={frame:0,playerTime:0};console.log("New segment ("+t.url+"): "+Hl(t.dateTime,6e4/1001)+" playing at "+t.playbackTime),n.frame=Vn(Ul(t.dateTime),fps,!0),n.stringTime=Hl(t.dateTime,6e4/1001),n.playerTime=t.playbackTime,this.options.syncPoint=n;break}}render(t,n){var d;let l=!1;const a=this.options;if(a.debug){var c=document.getElementById("doNotRenderAugmentationCheckbox");l=c.checked}if(l)return 0;const i=performance.now();return this.lastVideoFrameRenderedInGL==t&&n==this.lastCorrection?(a.debug&&console.log("render(): lastVideoFrameRenderedInGL==currentFrame: "+t),0):!a.enabled||a.stopAugment?(this.composer.cleanGL(),0):a.stopAugmentFor>0?((d=this.composer)==null||d.cleanGL(),a.stopAugmentFor-=1/a.hls_fps,0):(a.renderingMode==Me.RenderDigits?renderDigit(this.ctxGl,t):a.renderingMode==Me.RenderTimecode?this.sourceFPS==6e4/1001||this.sourceFPS==60?renderTimecode(this.ctxGl,J(t,sourceFPS,!0),!0):(this.sourceFPS==3e4/1001||this.sourceFPS==30)&&renderTimecode(this.ctxGl,J(t,this.sourceFPS,!1),!1):a.renderingMode==Me.Augment&&this.composer&&(this.sourceFPS==6e4/1001||sourceFPS==60?this.composer.renderAugmentation(M(J(t,this.sourceFPS,!0))):(this.sourceFPS==3e4/1001||this.sourceFPS==30)&&(n?this.composer.renderAugmentation(M(J(t*2+1,this.sourceFPS*2,!0),!0)):this.composer.renderAugmentation(M(J(t,this.sourceFPS,!1),!1)))),this.lastVideoFrameRenderedInGL=t,this.lastCorrection=n,performance.now()-i)}addNumberToVidDeltaArray(t){this.deltaVidDeltaArray.push(t),this.deltaVidDeltaArray.length>this.deltaVidDeltaArrayCapacity&&this.deltaVidDeltaArray.shift();const l=this.deltaVidDeltaArray.reduce((r,d)=>r+d,0)/this.deltaVidDeltaArray.length,a=this.deltaVidDeltaArray.filter(r=>Math.abs(r-l)<=l*.2);return a.reduce((r,d)=>r+d,0)/a.length}onFrameVideoChromeMac(t,n){var b;const l=this.options;if(this.lastCalled="VID",l.hls_fps!=6e4/1001&&l.hls_fps!=3e4/1001){console.log("Unsupported FPS: options.hls_fps = "+l.hls_fps),this.video.requestVideoFrameCallback(this.onFrameVideoChromeMac);return}var a=(n.mediaTime-l.syncPoint.playerTime)%(60*60*24)*(6e4/1001),c=n.mediaTime-l.syncPoint.playerTime;let i=Math.floor(a+.1)+l.syncPoint.frame,r=Date.now()-this.lastVidDateTime;var d=1e3/this.addNumberToVidDeltaArray(r);if(l.debug){d>25&&d<35&&(i+=1);var s=document.getElementById("numberInput").value,o=parseInt(s);i+=o}else d>25&&d<35?i+=2:i+=1;let u=document.getElementById("debugText2");var Z="";Z=M(J(i,this.sourceFPS,!0),!0,!0);var m="";l.augmentation.offset<0?(m+="-",m+=M(J(-1*l.augmentation.offset,this.sourceFPS,!0),!0,!0)):m+=M(J(l.augmentation.offset,this.sourceFPS,!0),!0,!0);let p=i-l.augmentation.offset;p<0&&(p+=5178816),p>=5178816&&(p-=5178816),this.metaDataFetcher&&this.metaDataFetcher.setLastFrame(p);var h="";h=M(J(p,this.sourceFPS,!0),!0,!0);let R=new Date,y=String(R.getHours()).padStart(2,"0"),V=String(R.getMinutes()).padStart(2,"0"),L=String(R.getSeconds()).padStart(2,"0"),G=String(R.getMilliseconds()).padStart(3,"0"),W=`${y}:${V}:${L}.${G}`;if(l.debug){var X="black";if(l.augmentation.offset!=this.lastOffset||this.lastOffsetShown<10*60)var X="red";u.innerHTML="VID. "+this.countVid+" Game: "+l.gameId+", Time Fired: "+W+", PlayerTime:"+n.mediaTime.toFixed(4)+", dblFrame: "+a.toFixed(4)+", Stream Time-Code: "+Z+", offset: <span style='color:"+X+"'>"+l.augmentation.offset+"("+m+")</span> </br> </br><span style='font-size: 30px;'>, Brain Time-Code: "+h+"( "+p+" )</span> </br> </br>, expectedDisplayTime: "+n.expectedDisplayTime.toFixed(4)+", presentationTime: "+n.presentationTime.toFixed(4)+", presentationTime-expectedDisplayTime: "+(n.presentationTime-n.expectedDisplayTime).toFixed(4)+", expectedDisplayTime-now: "+(n.expectedDisplayTime-t).toFixed(4)+", TimeFromLastSync:"+c.toFixed(4)+", LastSyncPointTime:"+l.syncPoint.playerTime.toFixed(4)+", LastSyncPointFrame:"+l.syncPoint.frame+", LastSyncPoint:"+l.syncPoint.stringTime+" </br>",l.augmentation.offset!=this.lastOffset&&(this.lastOffsetShown=0),this.lastOffset=l.augmentation.offset,this.lastOffsetShown++}if(this.countVid++,this.lastVidDateTime=Date.now(),d>50&&d<70)this.render(p,!1);else if(d>25&&d<35){const f=v=>{let C=document.getElementById("debugText");C!=null&&(C.innerHTML="Rendering now "+v);let Y=document.getElementById("backend-modules");Y!=null&&(Y.innerHTML="Rendering now "+v),this.render(v,!1)};n.expectedDisplayTime-t>5?setTimeout(f,20,p):setTimeout(f,5,p)}else this.countVid%60==0&&console.BBerror("video FPS is "+d.toFixed(4)+". is not supported yet."),(b=this.composer)==null||b.cleanGL();this.video.requestVideoFrameCallback(this.onFrameVideoChromeMac)}onFrameVideoChromeWin(t,n){if(l.hls_fps!=6e4/1001&&l.hls_fps!=3e4/1001){l.stopAugmentFor=3,console.log("Unsupported FPS: options.hls_fps = "+l.hls_fps),video.requestVideoFrameCallback(onFrameVideoChromeWin);return}Date.now()-lastVidDateTime,lastVidDateTime=Date.now();const l=this.options;if(this.lastCalled=="ANI2"&&l.hls_fps==6e4/1001){l.debug&&console.log("This videoCallback can be incorrect. This time doing stuff in requestAnimation frame"),this.video.requestVideoFrameCallback(this.onFrameVideoChromeWin);return}l.hls_fps==3e4/1001?this.lastCalled=="ANI3"&&this.countOfCorrectionsInRow<=0?(this.lastCalled="ANI",this.countOfCorrectionsInRow++):(this.lastCalled="VID",this.countOfCorrectionsInRow=0):this.lastCalled="VID";var a=(n.mediaTime-l.syncPoint.playerTime)%(60*60*24)*(6e4/1001),c=n.mediaTime-l.syncPoint.playerTime;let i=Math.floor(a+.1)+l.syncPoint.frame;if(l.debug){var r=document.getElementById("numberInput").value,d=parseInt(r);i+=d}else i+=1;lastMediaTime=n.mediaTime;let s=document.getElementById("debugText2");var o="";o=M(J(i,this.sourceFPS,!0),!0,!0);var u="";l.augmentation.offset<0?(u+="-",u+=M(J(-1*l.augmentation.offset,this.sourceFPS,!0),!0,!0)):u+=M(J(l.augmentation.offset,this.sourceFPS,!0),!0,!0);let Z=i-l.augmentation.offset;Z<0&&(Z+=5178816),Z>=5178816&&(Z-=5178816),this.metaDataFetcher&&this.metaDataFetcher.setLastFrame(Z);var m="";m=M(J(Z,this.sourceFPS,!0),!0,!0);let p=new Date,h=String(p.getHours()).padStart(2,"0"),R=String(p.getMinutes()).padStart(2,"0"),y=String(p.getSeconds()).padStart(2,"0"),V=String(p.getMilliseconds()).padStart(3,"0"),L=`${h}:${R}:${y}.${V}`;if(l.debug){var G="black";if(l.augmentation.offset!=this.lastOffset||this.lastOffsetShown<10*60)var G="red";s.innerHTML="VID. "+this.countVid+" Game: "+l.gameId+", Time Fired: "+L+", PlayerTime:"+n.mediaTime.toFixed(4)+", dblFrame: "+a.toFixed(4)+", Stream Time-Code: "+o+", offset: <span style='color:"+G+"'>"+l.augmentation.offset+"("+u+")</span> </br> </br><span style='font-size: 30px;'>, Brain Time-Code: "+m+"( "+Z+" )</span> </br> </br>, expectedDisplayTime: "+n.expectedDisplayTime.toFixed(4)+", presentationTime: "+n.presentationTime.toFixed(4)+", presentationTime-expectedDisplayTime: "+(n.presentationTime-n.expectedDisplayTime).toFixed(4)+", expectedDisplayTime-now: "+(n.expectedDisplayTime-t).toFixed(4)+", TimeFromLastSync:"+c.toFixed(4)+", LastSyncPointTime:"+l.syncPoint.playerTime.toFixed(4)+", LastSyncPointFrame:"+l.syncPoint.frame+", LastSyncPoint:"+l.syncPoint.stringTime+" </br>",l.augmentation.offset!=this.lastOffset&&(this.lastOffsetShown=0),this.lastOffset=l.augmentation.offset,this.lastOffsetShown++}if(this.countVid++,l.debug){var W=document.getElementById("plus05CorrectionCheckbox");W.checked}l.hls_fps==3e4/1001?this.renderOnNextFrame=Z:renderingDuration=this.render(Z,!1),this.video.requestVideoFrameCallback(this.onFrameVideoChromeWin)}addNumberToAniDeltaArray(t){this.aniDelltaTimeArray.push(t),this.aniDelltaTimeArray.length>this.aniDelltaTimeArrayCapacity&&this.aniDelltaTimeArray.shift();const l=this.aniDelltaTimeArray.reduce((r,d)=>r+d,0)/this.aniDelltaTimeArray.length,a=this.aniDelltaTimeArray.filter(r=>Math.abs(r-l)<=l*.2);return a.length<this.aniDelltaTimeArrayCapacity*85/100?-1:a.reduce((r,d)=>r+d,0)/a.length}onAnimatedFrameChromeWin(t){this.countANI++;let n=performance.now();var l=n-this.lastAniNow;this.lastAniNow=n;const a=this.options;var c=1e3/this.addNumberToAniDeltaArray(l);if(c==-1e3?(a.stopAugmentFor=3,console.BBerror("Experience difficulties with overloading: (not consistant Calls of requestAnimatedFrame). Stopping augmentation."),console.log(aniDelltaTimeArray)):Math.abs(c-60)>5&&(a.stopAugmentFor=3,console.BBerror("Unsupported FPS: "+c)),!a.debug){let p=document.getElementById("forceUpdate");p!=null&&(p.innerHTML=this.countANI),window.requestAnimationFrame(this.onAnimatedFrameChromeWin);return}let i=String(n.getHours()).padStart(2,"0"),r=String(n.getMinutes()).padStart(2,"0"),d=String(n.getSeconds()).padStart(2,"0"),s=String(n.getMilliseconds()).padStart(3,"0"),o=`${i}:${r}:${d}.${s}`;if(this.video.paused){window.requestAnimationFrame(this.onAnimatedFrameChromeWin);return}let u=document.getElementById("debugText");if(a.debug&&(u.innerHTML="ANI. "+this.countANI+" Time Fired: "+o),a.hls_fps==3e4/1001){u.innerHTML+="VideoTime: "+this.video.currentTime.toFixed(4),this.lastCalled=="VID"?(u.innerHTML+=" rendering on the current frame ",this.render(this.renderOnNextFrame,!1),this.lastCalled="ANI"):this.lastCalled=="ANI"?this.lastCalled="ANI2":this.lastCalled=="ANI2"&&(u.innerHTML+=" extra call. Correcting ",this.render(this.renderOnNextFrame+2,!1),lastCalled="ANI3"),u.innerHTML+="stage:"+this.lastCalled,window.requestAnimationFrame(this.onAnimatedFrameChromeWin);return}else if(a.hls_fps==6e4/1001)if(this.lastCalled=="ANI"||this.lastCalled=="ANI2"){var Z="";Z=M(J(this.lastVideoFrameRenderedInGL+1,this.sourceFPS,!0),!0,!0);var m="";a.augmentation.offset<0?(m+="-",m+=M(J(-1*a.augmentation.offset,this.sourceFPS,!0),!0,!0)):m+=M(J(a.augmentation.offset,this.sourceFPS,!0),!0,!0);let p=this.lastVideoFrameRenderedInGL-a.augmentation.offset;p<0&&(p+=5178816),p>=5178816&&(p-=5178816),M(J(p,this.sourceFPS,!0),!0,!0),a.debug&&(console.log("Probable videoFrameCallback was not fired. Apllying correction mechanism ("+Z+"), stage: "+lastCalled),u.innerHTML+=" correction"),this.render(this.lastVideoFrameRenderedInGL+1,!1),this.lastCalled=="ANI"?this.lastCalled="ANI2":this.lastCalled=="ANI2"&&(this.lastCalled="ANI")}else this.lastCalled="ANI";else console.log("Unsupported FPS: options.hls_fps = "+a.hls_fps);window.requestAnimationFrame(this.onAnimatedFrameChromeWin)}onAnimatedFrameChromeMac(t){this.countAppleANI++;let n,l=M(J(this.frameNumberToRender,this.sourceFPS,!0),!0,!0);this.options.debug&&(n=document.getElementById("debugText"),n.innerHTML=this.countAppleANI);let a=document.getElementById("backend-modules");a!=null&&(a.innerHTML="Rendering now "+this.countAppleANI),this.lastCalled=="VID"?(this.lastCalled="ANI",n.innerHTML="ANI: "+this.countAppleANI+" Stage: "+this.lastCalled+" rendering now"):this.lastCalled=="ANI"?(this.lastCalled="ANI2",n.innerHTML="ANI: "+this.countAppleANI+" Stage: "+l+" correction",this.render(this.lastVideoFrameRenderedInGL+1,!0)):this.lastCalled=="ANI2"&&(this.lastCalled="ANI3",n.innerHTML="ANI: "+this.countAppleANI+" Stage: "+this.lastCalled+" TimeCode: "+l+" extra call"),window.requestAnimationFrame(this.onAnimatedFrameChromeMac)}onAnimatedFrameSafari(t){this.countANI++;let n=new Date;const l=this.options;var a=performance.now(),c=a-this.lastNow;this.lastNow=a;var i=1e3/this.addNumberToAniDeltaArray(c);i==-1e3?(l.stopAugmentFor=3,this.countANI%60==0&&(console.BBerror("Experience difficulties with overloading: (not consistant Calls of requestAnimatedFrame). Stopping augmentation."),console.log(this.aniDelltaTimeArray))):Math.abs(i-60)>5&&(l.stopAugmentFor=3,console.BBerror("Unsupported screen FPS: "+i));let r=String(n.getHours()).padStart(2,"0"),d=String(n.getMinutes()).padStart(2,"0"),s=String(n.getSeconds()).padStart(2,"0"),o=String(n.getMilliseconds()).padStart(3,"0"),u=`${r}:${d}:${s}.${o}`;var Z=2;let m;if(l.debug){m=document.getElementById("debugText");var p=document.getElementById("numberInput").value;Z=parseInt(p)}var h=0,R=(this.video.currentTime-l.syncPoint.playerTime)%(60*60*24)*6e4/1001;h=Math.floor(R)+l.syncPoint.frame;var y=!1;h-this.lastRealFrame==2&&R-this.lastDblFrame<1.5&&(this.lastRealFrame=h,h--,y=!0),y?this.lastRealFrame=h+1:this.lastRealFrame=h,this.lastDblFrame=R,h+=Z;var V=R-Math.floor(R);(this.correction||V<.226&&this.prevFraction<.226)&&(this.correction=!0),V>.8&&(this.correction=!1),this.prevFraction=V,this.correction&&h--;var L="";L=M(J(h,this.sourceFPS,!0),!0,!0);var G="";l.augmentation.offset<0?(G+="-",G+=M(J(-1*l.augmentation.offset,this.sourceFPS,!0),!0,!0)):G+=M(J(l.augmentation.offset,this.sourceFPS,!0),!0,!0);let W=h-l.augmentation.offset;W<0&&(W+=5178816),W>=5178816&&(W-=5178816);var X="";if(X=M(J(W,this.sourceFPS,!0),!0,!0),l.debug){var b="black";if(l.augmentation.offset!=this.lastOffset||this.lastOffsetShown<10*60)var b="red";m.innerHTML=" countAppleANI: "+this.countAppleANI+", Time Fired: "+u+", delta: "+c.toFixed(0)+", screenFPS: "+i.toFixed(4)+", dblFrame: "+R.toFixed(4)+", ANI-VID: "+(n-this.vidFiredTime)+", Game: "+l.gameId+", stremTime: "+L+"( "+h+" ), offset: <span style='color:"+b+"'>"+l.augmentation.offset+"("+G+")</span> </br> </br><span style='font-size: 30px;'>, resultTime: "+X+"("+W+")</span> </br> </br>, LastSyncPointTime:"+l.syncPoint.playerTime.toFixed(4)+", LastSyncPointFrame:"+l.syncPoint.frame+", LastSyncPoint:"+l.syncPoint.stringTime+", correction: "+this.correction+", correction2FrameJump: "+y}this.metaDataFetcher&&this.metaDataFetcher.setLastFrame(W),this.render(W),this.countAppleANI++,window.requestAnimationFrame(this.onAnimatedFrameSafari)}doCalculateBlackBars(t){var n=parseInt(window.getComputedStyle(t).getPropertyValue("width"),10),l=parseInt(window.getComputedStyle(t).getPropertyValue("height"),10),a=t.videoWidth,c=t.videoHeight,i=n/l,r=a/c,d={top:0,bottom:0,left:0,right:0};if(i>r){var s=l*r;d.left=(n-s)/2,d.right=d.left}else if(i<r){var o=n/r;d.top=(l-o)/2,d.bottom=d.top}return d}calculateBlackBars(t){const n=this.getCanvas();if(n){var l=this.doCalculateBlackBars(t);return n.style.top=Math.round(l.top)+"px",n.style.left=Math.round(l.left)+"px",l}}}const ro={OnNewSegment:Symbol("OnNewSegment"),OnMetadata:Symbol("OnMetadata"),None:Symbol("None")};function so(){this.__data__=[],this.size=0}var oo=so;function uo(e,t){return e===t||e!==e&&t!==t}var Kt=uo,mo=Kt;function Zo(e,t){for(var n=e.length;n--;)if(mo(e[n][0],t))return n;return-1}var Tt=Zo,ho=Tt,bo=Array.prototype,po=bo.splice;function Go(e){var t=this.__data__,n=ho(t,e);if(n<0)return!1;var l=t.length-1;return n==l?t.pop():po.call(t,n,1),--this.size,!0}var yo=Go,Xo=Tt;function Vo(e){var t=this.__data__,n=Xo(t,e);return n<0?void 0:t[n][1]}var Wo=Vo,Ro=Tt;function fo(e){return Ro(this.__data__,e)>-1}var Lo=fo,Yo=Tt;function vo(e,t){var n=this.__data__,l=Yo(n,e);return l<0?(++this.size,n.push([e,t])):n[l][1]=t,this}var go=vo,Fo=oo,Co=yo,xo=Wo,So=Lo,Io=go;function Ue(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var l=e[t];this.set(l[0],l[1])}}Ue.prototype.clear=Fo,Ue.prototype.delete=Co,Ue.prototype.get=xo,Ue.prototype.has=So,Ue.prototype.set=Io;var Ht=Ue,zo=Ht;function Mo(){this.__data__=new zo,this.size=0}var Jo=Mo;function No(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}var ko=No;function Ko(e){return this.__data__.get(e)}var To=Ko;function Ho(e){return this.__data__.has(e)}var Uo=Ho,wo=typeof Rt=="object"&&Rt&&Rt.Object===Object&&Rt,Ja=wo,Bo=Ja,Qo=typeof self=="object"&&self&&self.Object===Object&&self,Po=Bo||Qo||Function("return this")(),we=Po,Eo=we,Do=Eo.Symbol,Na=Do,ka=Na,Ka=Object.prototype,jo=Ka.hasOwnProperty,Oo=Ka.toString,ot=ka?ka.toStringTag:void 0;function Ao(e){var t=jo.call(e,ot),n=e[ot];try{e[ot]=void 0;var l=!0}catch{}var a=Oo.call(e);return l&&(t?e[ot]=n:delete e[ot]),a}var _o=Ao,$o=Object.prototype,qo=$o.toString;function ed(e){return qo.call(e)}var td=ed,Ta=Na,nd=_o,ld=td,ad="[object Null]",cd="[object Undefined]",Ha=Ta?Ta.toStringTag:void 0;function id(e){return e==null?e===void 0?cd:ad:Ha&&Ha in Object(e)?nd(e):ld(e)}var Ut=id;function rd(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Ge=rd,sd=Ut,od=Ge,dd="[object AsyncFunction]",ud="[object Function]",md="[object GeneratorFunction]",Zd="[object Proxy]";function hd(e){if(!od(e))return!1;var t=sd(e);return t==ud||t==md||t==dd||t==Zd}var On=hd,bd=we,pd=bd["__core-js_shared__"],Gd=pd,An=Gd,Ua=function(){var e=/[^.]+$/.exec(An&&An.keys&&An.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function yd(e){return!!Ua&&Ua in e}var Xd=yd,Vd=Function.prototype,Wd=Vd.toString;function Rd(e){if(e!=null){try{return Wd.call(e)}catch{}try{return e+""}catch{}}return""}var fd=Rd,Ld=On,Yd=Xd,vd=Ge,gd=fd,Fd=/[\\^$.*+?()[\]{}|]/g,Cd=/^\[object .+?Constructor\]$/,xd=Function.prototype,Sd=Object.prototype,Id=xd.toString,zd=Sd.hasOwnProperty,Md=RegExp("^"+Id.call(zd).replace(Fd,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Jd(e){if(!vd(e)||Yd(e))return!1;var t=Ld(e)?Md:Cd;return t.test(gd(e))}var Nd=Jd;function kd(e,t){return e==null?void 0:e[t]}var Kd=kd,Td=Nd,Hd=Kd;function Ud(e,t){var n=Hd(e,t);return Td(n)?n:void 0}var _n=Ud,wd=_n,Bd=we,Qd=wd(Bd,"Map"),wa=Qd,Pd=_n,Ed=Pd(Object,"create"),wt=Ed,Ba=wt;function Dd(){this.__data__=Ba?Ba(null):{},this.size=0}var jd=Dd;function Od(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Ad=Od,_d=wt,$d="__lodash_hash_undefined__",qd=Object.prototype,eu=qd.hasOwnProperty;function tu(e){var t=this.__data__;if(_d){var n=t[e];return n===$d?void 0:n}return eu.call(t,e)?t[e]:void 0}var nu=tu,lu=wt,au=Object.prototype,cu=au.hasOwnProperty;function iu(e){var t=this.__data__;return lu?t[e]!==void 0:cu.call(t,e)}var ru=iu,su=wt,ou="__lodash_hash_undefined__";function du(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=su&&t===void 0?ou:t,this}var uu=du,mu=jd,Zu=Ad,hu=nu,bu=ru,pu=uu;function Be(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var l=e[t];this.set(l[0],l[1])}}Be.prototype.clear=mu,Be.prototype.delete=Zu,Be.prototype.get=hu,Be.prototype.has=bu,Be.prototype.set=pu;var Gu=Be,Qa=Gu,yu=Ht,Xu=wa;function Vu(){this.size=0,this.__data__={hash:new Qa,map:new(Xu||yu),string:new Qa}}var Wu=Vu;function Ru(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var fu=Ru,Lu=fu;function Yu(e,t){var n=e.__data__;return Lu(t)?n[typeof t=="string"?"string":"hash"]:n.map}var Bt=Yu,vu=Bt;function gu(e){var t=vu(this,e).delete(e);return this.size-=t?1:0,t}var Fu=gu,Cu=Bt;function xu(e){return Cu(this,e).get(e)}var Su=xu,Iu=Bt;function zu(e){return Iu(this,e).has(e)}var Mu=zu,Ju=Bt;function Nu(e,t){var n=Ju(this,e),l=n.size;return n.set(e,t),this.size+=n.size==l?0:1,this}var ku=Nu,Ku=Wu,Tu=Fu,Hu=Su,Uu=Mu,wu=ku;function Qe(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var l=e[t];this.set(l[0],l[1])}}Qe.prototype.clear=Ku,Qe.prototype.delete=Tu,Qe.prototype.get=Hu,Qe.prototype.has=Uu,Qe.prototype.set=wu;var Bu=Qe,Qu=Ht,Pu=wa,Eu=Bu,Du=200;function ju(e,t){var n=this.__data__;if(n instanceof Qu){var l=n.__data__;if(!Pu||l.length<Du-1)return l.push([e,t]),this.size=++n.size,this;n=this.__data__=new Eu(l)}return n.set(e,t),this.size=n.size,this}var Ou=ju,Au=Ht,_u=Jo,$u=ko,qu=To,em=Uo,tm=Ou;function Pe(e){var t=this.__data__=new Au(e);this.size=t.size}Pe.prototype.clear=_u,Pe.prototype.delete=$u,Pe.prototype.get=qu,Pe.prototype.has=em,Pe.prototype.set=tm;var nm=Pe,lm=_n,am=function(){try{var e=lm(Object,"defineProperty");return e({},"",{}),e}catch{}}(),Pa=am,Ea=Pa;function cm(e,t,n){t=="__proto__"&&Ea?Ea(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var $n=cm,im=$n,rm=Kt;function sm(e,t,n){(n!==void 0&&!rm(e[t],n)||n===void 0&&!(t in e))&&im(e,t,n)}var Da=sm;function om(e){return function(t,n,l){for(var a=-1,c=Object(t),i=l(t),r=i.length;r--;){var d=i[e?r:++a];if(n(c[d],d,c)===!1)break}return t}}var dm=om,um=dm,mm=um(),Zm=mm,Qt={exports:{}};Qt.exports,function(e,t){var n=we,l=t&&!t.nodeType&&t,a=l&&!0&&e&&!e.nodeType&&e,c=a&&a.exports===l,i=c?n.Buffer:void 0,r=i?i.allocUnsafe:void 0;function d(s,o){if(o)return s.slice();var u=s.length,Z=r?r(u):new s.constructor(u);return s.copy(Z),Z}e.exports=d}(Qt,Qt.exports);var hm=Qt.exports,bm=we,pm=bm.Uint8Array,Gm=pm,ja=Gm;function ym(e){var t=new e.constructor(e.byteLength);return new ja(t).set(new ja(e)),t}var Xm=ym,Vm=Xm;function Wm(e,t){var n=t?Vm(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}var Rm=Wm;function fm(e,t){var n=-1,l=e.length;for(t||(t=Array(l));++n<l;)t[n]=e[n];return t}var Lm=fm,Ym=Ge,Oa=Object.create,vm=function(){function e(){}return function(t){if(!Ym(t))return{};if(Oa)return Oa(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),gm=vm;function Fm(e,t){return function(n){return e(t(n))}}var Cm=Fm,xm=Cm,Sm=xm(Object.getPrototypeOf,Object),Aa=Sm,Im=Object.prototype;function zm(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Im;return e===n}var _a=zm,Mm=gm,Jm=Aa,Nm=_a;function km(e){return typeof e.constructor=="function"&&!Nm(e)?Mm(Jm(e)):{}}var Km=km;function Tm(e){return e!=null&&typeof e=="object"}var dt=Tm,Hm=Ut,Um=dt,wm="[object Arguments]";function Bm(e){return Um(e)&&Hm(e)==wm}var Qm=Bm,$a=Qm,Pm=dt,qa=Object.prototype,Em=qa.hasOwnProperty,Dm=qa.propertyIsEnumerable,jm=$a(function(){return arguments}())?$a:function(e){return Pm(e)&&Em.call(e,"callee")&&!Dm.call(e,"callee")},ec=jm,Om=Array.isArray,tc=Om,Am=9007199254740991;function _m(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Am}var nc=_m,$m=On,qm=nc;function eZ(e){return e!=null&&qm(e.length)&&!$m(e)}var qn=eZ,tZ=qn,nZ=dt;function lZ(e){return nZ(e)&&tZ(e)}var aZ=lZ,Pt={exports:{}};function cZ(){return!1}var iZ=cZ;Pt.exports,function(e,t){var n=we,l=iZ,a=t&&!t.nodeType&&t,c=a&&!0&&e&&!e.nodeType&&e,i=c&&c.exports===a,r=i?n.Buffer:void 0,d=r?r.isBuffer:void 0,s=d||l;e.exports=s}(Pt,Pt.exports);var lc=Pt.exports,rZ=Ut,sZ=Aa,oZ=dt,dZ="[object Object]",uZ=Function.prototype,mZ=Object.prototype,ac=uZ.toString,ZZ=mZ.hasOwnProperty,hZ=ac.call(Object);function bZ(e){if(!oZ(e)||rZ(e)!=dZ)return!1;var t=sZ(e);if(t===null)return!0;var n=ZZ.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&ac.call(n)==hZ}var pZ=bZ,GZ=Ut,yZ=nc,XZ=dt,VZ="[object Arguments]",WZ="[object Array]",RZ="[object Boolean]",fZ="[object Date]",LZ="[object Error]",YZ="[object Function]",vZ="[object Map]",gZ="[object Number]",FZ="[object Object]",CZ="[object RegExp]",xZ="[object Set]",SZ="[object String]",IZ="[object WeakMap]",zZ="[object ArrayBuffer]",MZ="[object DataView]",JZ="[object Float32Array]",NZ="[object Float64Array]",kZ="[object Int8Array]",KZ="[object Int16Array]",TZ="[object Int32Array]",HZ="[object Uint8Array]",UZ="[object Uint8ClampedArray]",wZ="[object Uint16Array]",BZ="[object Uint32Array]",N={};N[JZ]=N[NZ]=N[kZ]=N[KZ]=N[TZ]=N[HZ]=N[UZ]=N[wZ]=N[BZ]=!0,N[VZ]=N[WZ]=N[zZ]=N[RZ]=N[MZ]=N[fZ]=N[LZ]=N[YZ]=N[vZ]=N[gZ]=N[FZ]=N[CZ]=N[xZ]=N[SZ]=N[IZ]=!1;function QZ(e){return XZ(e)&&yZ(e.length)&&!!N[GZ(e)]}var PZ=QZ;function EZ(e){return function(t){return e(t)}}var DZ=EZ,Et={exports:{}};Et.exports,function(e,t){var n=Ja,l=t&&!t.nodeType&&t,a=l&&!0&&e&&!e.nodeType&&e,c=a&&a.exports===l,i=c&&n.process,r=function(){try{var d=a&&a.require&&a.require("util").types;return d||i&&i.binding&&i.binding("util")}catch{}}();e.exports=r}(Et,Et.exports);var jZ=Et.exports,OZ=PZ,AZ=DZ,cc=jZ,ic=cc&&cc.isTypedArray,_Z=ic?AZ(ic):OZ,rc=_Z;function $Z(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var sc=$Z,qZ=$n,eh=Kt,th=Object.prototype,nh=th.hasOwnProperty;function lh(e,t,n){var l=e[t];(!(nh.call(e,t)&&eh(l,n))||n===void 0&&!(t in e))&&qZ(e,t,n)}var ah=lh,ch=ah,ih=$n;function rh(e,t,n,l){var a=!n;n||(n={});for(var c=-1,i=t.length;++c<i;){var r=t[c],d=l?l(n[r],e[r],r,n,e):void 0;d===void 0&&(d=e[r]),a?ih(n,r,d):ch(n,r,d)}return n}var sh=rh;function oh(e,t){for(var n=-1,l=Array(e);++n<e;)l[n]=t(n);return l}var dh=oh,uh=9007199254740991,mh=/^(?:0|[1-9]\d*)$/;function Zh(e,t){var n=typeof e;return t=t??uh,!!t&&(n=="number"||n!="symbol"&&mh.test(e))&&e>-1&&e%1==0&&e<t}var oc=Zh,hh=dh,bh=ec,ph=tc,Gh=lc,yh=oc,Xh=rc,Vh=Object.prototype,Wh=Vh.hasOwnProperty;function Rh(e,t){var n=ph(e),l=!n&&bh(e),a=!n&&!l&&Gh(e),c=!n&&!l&&!a&&Xh(e),i=n||l||a||c,r=i?hh(e.length,String):[],d=r.length;for(var s in e)(t||Wh.call(e,s))&&!(i&&(s=="length"||a&&(s=="offset"||s=="parent")||c&&(s=="buffer"||s=="byteLength"||s=="byteOffset")||yh(s,d)))&&r.push(s);return r}var fh=Rh;function Lh(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var Yh=Lh,vh=Ge,gh=_a,Fh=Yh,Ch=Object.prototype,xh=Ch.hasOwnProperty;function Sh(e){if(!vh(e))return Fh(e);var t=gh(e),n=[];for(var l in e)l=="constructor"&&(t||!xh.call(e,l))||n.push(l);return n}var Ih=Sh,zh=fh,Mh=Ih,Jh=qn;function Nh(e){return Jh(e)?zh(e,!0):Mh(e)}var dc=Nh,kh=sh,Kh=dc;function Th(e){return kh(e,Kh(e))}var Hh=Th,uc=Da,Uh=hm,wh=Rm,Bh=Lm,Qh=Km,mc=ec,Zc=tc,Ph=aZ,Eh=lc,Dh=On,jh=Ge,Oh=pZ,Ah=rc,hc=sc,_h=Hh;function $h(e,t,n,l,a,c,i){var r=hc(e,n),d=hc(t,n),s=i.get(d);if(s){uc(e,n,s);return}var o=c?c(r,d,n+"",e,t,i):void 0,u=o===void 0;if(u){var Z=Zc(d),m=!Z&&Eh(d),p=!Z&&!m&&Ah(d);o=d,Z||m||p?Zc(r)?o=r:Ph(r)?o=Bh(r):m?(u=!1,o=Uh(d,!0)):p?(u=!1,o=wh(d,!0)):o=[]:Oh(d)||mc(d)?(o=r,mc(r)?o=_h(r):(!jh(r)||Dh(r))&&(o=Qh(d))):u=!1}u&&(i.set(d,o),a(o,d,l,c,i),i.delete(d)),uc(e,n,o)}var qh=$h,eb=nm,tb=Da,nb=Zm,lb=qh,ab=Ge,cb=dc,ib=sc;function bc(e,t,n,l,a){e!==t&&nb(t,function(c,i){if(a||(a=new eb),ab(c))lb(e,t,i,n,bc,l,a);else{var r=l?l(ib(e,i),c,i+"",e,t,a):void 0;r===void 0&&(r=c),tb(e,i,r)}},cb)}var rb=bc;function sb(e){return e}var pc=sb;function ob(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var db=ob,ub=db,Gc=Math.max;function mb(e,t,n){return t=Gc(t===void 0?e.length-1:t,0),function(){for(var l=arguments,a=-1,c=Gc(l.length-t,0),i=Array(c);++a<c;)i[a]=l[t+a];a=-1;for(var r=Array(t+1);++a<t;)r[a]=l[a];return r[t]=n(i),ub(e,this,r)}}var Zb=mb;function hb(e){return function(){return e}}var bb=hb,pb=bb,yc=Pa,Gb=pc,yb=yc?function(e,t){return yc(e,"toString",{configurable:!0,enumerable:!1,value:pb(t),writable:!0})}:Gb,Xb=yb,Vb=800,Wb=16,Rb=Date.now;function fb(e){var t=0,n=0;return function(){var l=Rb(),a=Wb-(l-n);if(n=l,a>0){if(++t>=Vb)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var Lb=fb,Yb=Xb,vb=Lb,gb=vb(Yb),Fb=gb,Cb=pc,xb=Zb,Sb=Fb;function Ib(e,t){return Sb(xb(e,t,Cb),e+"")}var zb=Ib,Mb=Kt,Jb=qn,Nb=oc,kb=Ge;function Kb(e,t,n){if(!kb(n))return!1;var l=typeof t;return(l=="number"?Jb(n)&&Nb(t,n.length):l=="string"&&t in n)?Mb(n[t],e):!1}var Tb=Kb,Hb=zb,Ub=Tb;function wb(e){return Hb(function(t,n){var l=-1,a=n.length,c=a>1?n[a-1]:void 0,i=a>2?n[2]:void 0;for(c=e.length>3&&typeof c=="function"?(a--,c):void 0,i&&Ub(n[0],n[1],i)&&(c=a<3?void 0:c,a=1),t=Object(t);++l<a;){var r=n[l];r&&e(t,r,l,c)}return t})}var Bb=wb,Qb=rb,Pb=Bb,Eb=Pb(function(e,t,n){Qb(e,t,n)}),Db=Eb;const jb=Pl(Db);var K={log:"log",debug:"debug",info:"info",warn:"warn",error:"error"},ne=console,ye={};Object.keys(K).forEach(function(e){ye[e]=ne[e]});var ut="Datadog Browser SDK:",B={debug:ye.debug.bind(ne,ut),log:ye.log.bind(ne,ut),info:ye.info.bind(ne,ut),warn:ye.warn.bind(ne,ut),error:ye.error.bind(ne,ut)},el="https://docs.datadoghq.com",Xc="".concat(el,"/real_user_monitoring/browser/troubleshooting"),Dt="More details:";function Vc(e,t){return function(){for(var n=[],l=0;l<arguments.length;l++)n[l]=arguments[l];try{return e.apply(void 0,n)}catch(a){B.error(t,a)}}}function jt(e){return e!==0&&Math.random()*100<=e}function Ob(e){return Ab(e)&&e>=0&&e<=100}function Ab(e){return typeof e=="number"}var mt=1e3,Xe=60*mt,_b=60*Xe;function Zt(){return new Date().getTime()}function ue(){return Zt()}function Ot(){return performance.now()}function me(){return{relative:Ot(),timeStamp:ue()}}function $b(){return{relative:0,timeStamp:Wc()}}function qb(e,t){return t-e}function e0(e,t){return e+t}function t0(e){return e-Wc()}var tl;function Wc(){return tl===void 0&&(tl=performance.timing.navigationStart),tl}var le=1024,Rc=1024*le,n0=/[^\u0000-\u007F]/;function nl(e){return n0.test(e)?window.TextEncoder!==void 0?new TextEncoder().encode(e).length:new Blob([e]).size:e.length}function Ee(e,t){return e.indexOf(t)!==-1}function ll(e){if(Array.from)return Array.from(e);var t=[];if(e instanceof Set)e.forEach(function(l){return t.push(l)});else for(var n=0;n<e.length;n++)t.push(e[n]);return t}function l0(e,t){for(var n=0;n<e.length;n+=1){var l=e[n];if(t(l,n))return l}}function De(e){return Object.keys(e).map(function(t){return e[t]})}function a0(e){return Object.keys(e).map(function(t){return[t,e[t]]})}function al(e,t){return e.slice(0,t.length)===t}function c0(e,t){return e.slice(-t.length)===t}function P(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.forEach(function(l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(e[a]=l[a])}),e}function i0(e){return P({},e)}function fc(e,t){return Object.keys(e).some(function(n){return e[n]===t})}function cl(e){return Object.keys(e).length===0}function Ze(){if(typeof globalThis=="object")return globalThis;Object.defineProperty(Object.prototype,"_dd_temp_",{get:function(){return this},configurable:!0});var e=_dd_temp_;return delete Object.prototype._dd_temp_,typeof e!="object"&&(typeof self=="object"?e=self:typeof window=="object"?e=window:e={}),e}function je(e,t){var n=Ze(),l;return n.Zone&&typeof n.Zone.__symbol__=="function"&&(l=e[n.Zone.__symbol__(t)]),l||(l=e[t]),l}var r0=function(e,t,n){if(n||arguments.length===2)for(var l=0,a=t.length,c;l<a;l++)(c||!(l in t))&&(c||(c=Array.prototype.slice.call(t,0,l)),c[l]=t[l]);return e.concat(c||Array.prototype.slice.call(t))},At,Lc=!1;function s0(e){At=e}function o0(e){Lc=e}function d0(e,t,n){var l=n.value;n.value=function(){for(var a=[],c=0;c<arguments.length;c++)a[c]=arguments[c];var i=At?z(l):l;return i.apply(this,a)}}function z(e){return function(){return ht(e,this,arguments)}}function ht(e,t,n){try{return e.apply(t,n)}catch(l){if(il(l),At)try{At(l)}catch(a){il(a)}}}function il(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];Lc&&B.error.apply(B,r0(["[MONITOR]"],e,!1))}function bt(e,t){return je(Ze(),"setTimeout")(z(e),t)}function Yc(e){je(Ze(),"clearTimeout")(e)}function rl(e,t){return je(Ze(),"setInterval")(z(e),t)}function vc(e){je(Ze(),"clearInterval")(e)}var Q=function(){function e(t){this.onFirstSubscribe=t,this.observers=[]}return e.prototype.subscribe=function(t){var n=this;return this.observers.push(t),this.observers.length===1&&this.onFirstSubscribe&&(this.onLastUnsubscribe=this.onFirstSubscribe(this)||void 0),{unsubscribe:function(){n.observers=n.observers.filter(function(l){return t!==l}),!n.observers.length&&n.onLastUnsubscribe&&n.onLastUnsubscribe()}}},e.prototype.notify=function(t){this.observers.forEach(function(n){return n(t)})},e}();function gc(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return new Q(function(n){var l=e.map(function(a){return a.subscribe(function(c){return n.notify(c)})});return function(){return l.forEach(function(a){return a.unsubscribe()})}})}function Fc(e,t,n){var l=!1,a,c;return{throttled:function(){for(var i=[],r=0;r<arguments.length;r++)i[r]=arguments[r];if(l){a=i;return}e.apply(void 0,i),l=!0,c=bt(function(){a&&e.apply(void 0,a),l=!1,a=void 0},t)},cancel:function(){Yc(c),l=!1,a=void 0}}}function he(){}function Ve(e){return e?(parseInt(e,10)^Math.random()*16>>parseInt(e,10)/4).toString(16):"".concat(1e7,"-").concat(1e3,"-").concat(4e3,"-").concat(8e3,"-").concat(1e11).replace(/[018]/g,Ve)}var _t=/([\w-]+)\s*=\s*([^;]+)/g;function u0(e,t){for(_t.lastIndex=0;;){var n=_t.exec(e);if(n){if(n[1]===t)return n[2]}else break}}function m0(e){var t=new Map;for(_t.lastIndex=0;;){var n=_t.exec(e);if(n)t.set(n[1],n[2]);else break}return t}function Z0(e,t,n){var l=e.charCodeAt(t-1),a=l>=55296&&l<=56319,c=a?t+1:t;return e.length<=c?e:"".concat(e.slice(0,c)).concat(n)}function h0(){return b0()===1}var $t;function b0(){return $t??($t=p0())}function p0(e){var t;e===void 0&&(e=window);var n=e.navigator.userAgent;return e.chrome||/HeadlessChrome/.test(n)?1:((t=e.navigator.vendor)===null||t===void 0?void 0:t.indexOf("Apple"))===0||/safari/i.test(n)&&!/chrome|android/i.test(n)?2:e.document.documentMode?0:3}function pt(e,t,n,l){var a=new Date;a.setTime(a.getTime()+n);var c="expires=".concat(a.toUTCString()),i=l&&l.crossSite?"none":"strict",r=l&&l.domain?";domain=".concat(l.domain):"",d=l&&l.secure?";secure":"",s=l&&l.partitioned?";partitioned":"";document.cookie="".concat(e,"=").concat(t,";").concat(c,";path=/;samesite=").concat(i).concat(r).concat(d).concat(s)}function sl(e){return u0(document.cookie,e)}var ol;function We(e){return ol||(ol=m0(document.cookie)),ol.get(e)}function Cc(e,t){pt(e,"",0,t)}function G0(e){if(document.cookie===void 0||document.cookie===null)return!1;try{var t="dd_cookie_test_".concat(Ve()),n="test";pt(t,n,Xe,e);var l=sl(t)===n;return Cc(t,e),l}catch(a){return B.error(a),!1}}var dl;function y0(){if(dl===void 0){for(var e="dd_site_test_".concat(Ve()),t="test",n=window.location.hostname.split("."),l=n.pop();n.length&&!sl(e);)l="".concat(n.pop(),".").concat(l),pt(e,t,mt,{domain:l});Cc(e,{domain:l}),dl=l}return dl}var Oe="_dd_s",ul=4*_b,xc=15*Xe,Sc=/^([a-zA-Z]+)=([a-z0-9-]+)$/,ml="&",X0="1";function Re(){return{isExpired:X0}}function qt(e){return cl(e)}function Ic(e){return!qt(e)}function en(e){return e.isExpired!==void 0||!V0(e)}function V0(e){return(e.created===void 0||Zt()-Number(e.created)<ul)&&(e.expire===void 0||Zt()<Number(e.expire))}function zc(e){e.expire=String(Zt()+xc)}function Zl(e){return a0(e).map(function(t){var n=t[0],l=t[1];return"".concat(n,"=").concat(l)}).join(ml)}function Mc(e){var t={};return W0(e)&&e.split(ml).forEach(function(n){var l=Sc.exec(n);if(l!==null){var a=l[1],c=l[2];t[a]=c}}),t}function W0(e){return!!e&&(e.indexOf(ml)!==-1||Sc.test(e))}var R0="_dd",f0="_dd_r",L0="_dd_l",Y0="rum",v0="logs";function g0(e){var t=We(Oe);if(!t){var n=We(R0),l=We(f0),a=We(L0),c={};n&&(c.id=n),a&&/^[01]$/.test(a)&&(c[v0]=a),l&&/^[012]$/.test(l)&&(c[Y0]=l),Ic(c)&&(zc(c),e.persistSession(c))}}function F0(e){var t=z0(e);return G0(t)?{type:"Cookie",cookieOptions:t}:void 0}function C0(e){var t={isLockEnabled:h0(),persistSession:x0(e),retrieveSession:I0,expireSession:function(){return S0(e)}};return g0(t),t}function x0(e){return function(t){pt(Oe,Zl(t),xc,e)}}function S0(e){pt(Oe,Zl(Re()),ul,e)}function I0(){var e=sl(Oe);return Mc(e)}function z0(e){var t={};return t.secure=!!e.useSecureSessionCookie||!!e.usePartitionedCrossSiteSessionCookie||!!e.useCrossSiteSessionCookie,t.crossSite=!!e.usePartitionedCrossSiteSessionCookie||!!e.useCrossSiteSessionCookie,t.partitioned=!!e.usePartitionedCrossSiteSessionCookie,e.trackSessionAcrossSubdomains&&(t.domain=y0()),t}var M0="_dd_test_";function J0(){try{var e=Ve(),t="".concat(M0).concat(e);localStorage.setItem(t,e);var n=localStorage.getItem(t);return localStorage.removeItem(t),e===n?{type:"LocalStorage"}:void 0}catch{return}}function N0(){return{isLockEnabled:!1,persistSession:Jc,retrieveSession:k0,expireSession:K0}}function Jc(e){localStorage.setItem(Oe,Zl(e))}function k0(){var e=localStorage.getItem(Oe);return Mc(e)}function K0(){Jc(Re())}var T0=10,H0=100,Nc=[],tn;function fe(e,t,n){var l;n===void 0&&(n=0);var a=t.isLockEnabled,c=t.persistSession,i=t.expireSession,r=function(Z){return c(P({},Z,{lock:s}))},d=function(){var Z=t.retrieveSession(),m=Z.lock;return Z.lock&&delete Z.lock,{session:Z,lock:m}};if(tn||(tn=e),e!==tn){Nc.push(e);return}if(a&&n>=H0){kc(t);return}var s,o=d();if(a){if(o.lock){nn(e,t,n);return}if(s=Ve(),r(o.session),o=d(),o.lock!==s){nn(e,t,n);return}}var u=e.process(o.session);if(a&&(o=d(),o.lock!==s)){nn(e,t,n);return}if(u&&(en(u)?i():(zc(u),a?r(u):c(u))),a&&!(u&&en(u))){if(o=d(),o.lock!==s){nn(e,t,n);return}c(o.session),u=o.session}(l=e.after)===null||l===void 0||l.call(e,u||o.session),kc(t)}function nn(e,t,n){bt(function(){fe(e,t,n+1)},T0)}function kc(e){tn=void 0;var t=Nc.shift();t&&fe(t,e)}var Kc=mt;function U0(e){var t=F0(e);return!t&&e.allowFallbackToLocalStorage&&(t=J0()),t}function w0(e,t,n){var l=new Q,a=new Q,c=new Q,i=e.type==="Cookie"?C0(e.cookieOptions):N0(),r=i.expireSession,d=rl(p,Kc),s;R();var o=Fc(function(){fe({process:function(b){if(!qt(b)){var f=h(b);return y(f),f}},after:function(b){Ic(b)&&!V()&&W(b),s=b}},i)},Kc),u=o.throttled,Z=o.cancel;function m(){fe({process:function(b){return V()?h(b):void 0}},i)}function p(){fe({process:function(b){return en(b)?Re():void 0},after:h},i)}function h(b){return en(b)&&(b=Re()),V()&&(L(b)?G():(c.notify({previousState:s,newState:b}),s=b)),b}function R(){fe({process:function(b){if(qt(b))return Re()},after:function(b){s=b}},i)}function y(b){if(qt(b))return!1;var f=n(b[t]),v=f.trackingType,C=f.isTracked;b[t]=v,delete b.isExpired,C&&!b.id&&(b.id=Ve(),b.created=String(Zt()))}function V(){return s[t]!==void 0}function L(b){return s.id!==b.id||s[t]!==b[t]}function G(){s=Re(),a.notify()}function W(b){s=b,l.notify()}function X(b){fe({process:function(f){return P({},f,b)},after:h},i)}return{expandOrRenewSession:u,expandSession:m,getSession:function(){return s},renewObservable:l,expireObservable:a,sessionStateUpdateObservable:c,restartSession:R,expire:function(){Z(),r(),h(Re())},stop:function(){vc(d)},updateSessionState:X}}var hl={GRANTED:"granted",NOT_GRANTED:"not-granted"};function B0(e){var t=new Q;return{tryToInit:function(n){e||(e=n)},update:function(n){e=n,t.notify()},isGranted:function(){return e===hl.GRANTED},observable:t}}function Le(e,t,n){if(typeof e!="object"||e===null)return JSON.stringify(e);var l=Ae(Object.prototype),a=Ae(Array.prototype),c=Ae(Object.getPrototypeOf(e)),i=Ae(e);try{return JSON.stringify(e,t,n)}catch{return"<error: unable to serialize object>"}finally{l(),a(),c(),i()}}function Ae(e){var t=e,n=t.toJSON;return n?(delete t.toJSON,function(){t.toJSON=n}):he}function bl(e){return Q0(e,location.href).href}function Q0(e,t){var n=P0();if(n)try{return t!==void 0?new n(e,t):new n(e)}catch(i){throw new Error("Failed to construct URL: ".concat(String(i)," ").concat(Le({url:e,base:t})))}if(t===void 0&&!/:/.test(e))throw new Error("Invalid URL: '".concat(e,"'"));var l=document,a=l.createElement("a");if(t!==void 0){l=document.implementation.createHTMLDocument("");var c=l.createElement("base");c.href=t,l.head.appendChild(c),l.body.appendChild(a)}return a.href=e,a}var Tc=URL,ln;function P0(){if(ln===void 0)try{var e=new Tc("http://test/path");ln=e.href==="http://test/path"}catch{ln=!1}return ln?Tc:void 0}var E0="datad0g.com",D0="dd0g-gov.com",Ye="datadoghq.com",j0="ddog-gov.com",Hc="pci.browser-intake-datadoghq.com";function Gt(e,t,n){var l=O0(e,t);return{build:function(a,c){var i=_0(e,t,n,a,c);return l(i)},urlPrefix:l(""),trackType:t}}function O0(e,t){var n="/api/v2/".concat(t),l=e.proxy;if(typeof l=="string"){var a=bl(l);return function(i){return"".concat(a,"?ddforward=").concat(encodeURIComponent("".concat(n,"?").concat(i)))}}if(typeof l=="function")return function(i){return l({path:n,parameters:i})};var c=A0(t,e);return function(i){return"https://".concat(c).concat(n,"?").concat(i)}}function A0(e,t){var n=t.site,l=n===void 0?Ye:n,a=t.internalAnalyticsSubdomain;if(e==="logs"&&t.usePciIntake&&l===Ye)return Hc;if(a&&l===Ye)return"".concat(a,".").concat(Ye);if(l===D0)return"http-intake.logs.".concat(l);var c=l.split("."),i=c.pop();return"browser-intake-".concat(c.join("-"),".").concat(i)}function _0(e,t,n,l,a){var c=e.clientToken,i=e.internalAnalyticsSubdomain,r=a.retry,d=a.encoding,s=["sdk_version:".concat("5.29.1"),"api:".concat(l)].concat(n);r&&s.push("retry_count:".concat(r.count),"retry_after:".concat(r.lastFailureStatus));var o=["ddsource=browser","ddtags=".concat(encodeURIComponent(s.join(","))),"dd-api-key=".concat(c),"dd-evp-origin-version=".concat(encodeURIComponent("5.29.1")),"dd-evp-origin=browser","dd-request-id=".concat(Ve())];return d&&o.push("dd-evp-encoding=".concat(d)),t==="rum"&&o.push("batch_time=".concat(ue())),i&&o.reverse(),o.join("&")}var $0=200;function q0(e){var t=e.env,n=e.service,l=e.version,a=e.datacenter,c=[];return t&&c.push(an("env",t)),n&&c.push(an("service",n)),l&&c.push(an("version",l)),a&&c.push(an("datacenter",a)),c}function an(e,t){var n=$0-e.length-1;(t.length>n||ep(t))&&B.warn("".concat(e," value doesn't meet tag requirements and will be sanitized. ").concat(Dt," ").concat(el,"/getting_started/tagging/#defining-tags"));var l=t.replace(/,/g,"_");return"".concat(e,":").concat(l)}function ep(e){return tp()?new RegExp("[^\\p{Ll}\\p{Lo}0-9_:./-]","u").test(e):!1}function tp(){try{return new RegExp("[\\p{Ll}]","u"),!0}catch{return!1}}function np(e){var t=e.site||Ye,n=q0(e),l=lp(e,n),a=cp(l,t),c=ap(e,a,n);return P({isIntakeUrl:function(i){return a.some(function(r){return i.indexOf(r)===0})},replica:c,site:t},l)}function lp(e,t){return{logsEndpointBuilder:Gt(e,"logs",t),rumEndpointBuilder:Gt(e,"rum",t),sessionReplayEndpointBuilder:Gt(e,"replay",t)}}function ap(e,t,n){if(e.replica){var l=P({},e,{site:Ye,clientToken:e.replica.clientToken}),a={logsEndpointBuilder:Gt(l,"logs",n),rumEndpointBuilder:Gt(l,"rum",n)};return t.push.apply(t,De(a).map(function(c){return c.urlPrefix})),P({applicationId:e.replica.applicationId},a)}}function cp(e,t){var n=De(e).map(function(l){return l.urlPrefix});return t===Ye&&n.push("https://".concat(Hc,"/")),n}function pl(e,t){return e!=null&&typeof e!="string"?(B.error("".concat(t," must be defined as a string")),!1):!0}function ip(e){return e&&typeof e=="string"&&!/(datadog|ddog|datad0g|dd0g)/.test(e)?(B.error("Site should be a valid Datadog site. ".concat(Dt," ").concat(el,"/getting_started/site/.")),!1):!0}function cn(e,t){return e!==void 0&&!Ob(e)?(B.error("".concat(t," Sample Rate should be a number between 0 and 100")),!1):!0}function rp(e){var t,n,l,a,c;if(!e||!e.clientToken){B.error("Client Token is not configured, we will not send any data.");return}if(!(!ip(e.site)||!cn(e.sessionSampleRate,"Session")||!cn(e.telemetrySampleRate,"Telemetry")||!cn(e.telemetryConfigurationSampleRate,"Telemetry Configuration")||!cn(e.telemetryUsageSampleRate,"Telemetry Usage")||!pl(e.version,"Version")||!pl(e.env,"Env")||!pl(e.service,"Service"))){if(e.trackingConsent!==void 0&&!fc(hl,e.trackingConsent)){B.error('Tracking Consent should be either "granted" or "not-granted"');return}return P({beforeSend:e.beforeSend&&Vc(e.beforeSend,"beforeSend threw an error:"),sessionStoreStrategyType:U0(e),sessionSampleRate:(t=e.sessionSampleRate)!==null&&t!==void 0?t:100,telemetrySampleRate:(n=e.telemetrySampleRate)!==null&&n!==void 0?n:20,telemetryConfigurationSampleRate:(l=e.telemetryConfigurationSampleRate)!==null&&l!==void 0?l:5,telemetryUsageSampleRate:(a=e.telemetryUsageSampleRate)!==null&&a!==void 0?a:5,service:e.service||void 0,silentMultipleInit:!!e.silentMultipleInit,allowUntrustedEvents:!!e.allowUntrustedEvents,trackingConsent:(c=e.trackingConsent)!==null&&c!==void 0?c:hl.GRANTED,storeContextsAcrossPages:!!e.storeContextsAcrossPages,batchBytesLimit:16*le,eventRateLimiterThreshold:3e3,maxTelemetryEventsPerPage:15,flushTimeout:30*mt,batchMessagesLimit:50,messageBytesLimit:256*le},np(e))}}function sp(e){return{session_sample_rate:e.sessionSampleRate,telemetry_sample_rate:e.telemetrySampleRate,telemetry_configuration_sample_rate:e.telemetryConfigurationSampleRate,telemetry_usage_sample_rate:e.telemetryUsageSampleRate,use_before_send:!!e.beforeSend,use_cross_site_session_cookie:e.useCrossSiteSessionCookie,use_partitioned_cross_site_session_cookie:e.usePartitionedCrossSiteSessionCookie,use_secure_session_cookie:e.useSecureSessionCookie,use_proxy:!!e.proxy,silent_multiple_init:e.silentMultipleInit,track_session_across_subdomains:e.trackSessionAcrossSubdomains,allow_fallback_to_local_storage:!!e.allowFallbackToLocalStorage,store_contexts_across_pages:!!e.storeContextsAcrossPages,allow_untrusted_events:!!e.allowUntrustedEvents,tracking_consent:e.trackingConsent}}var Gl;(function(e){e.WRITABLE_RESOURCE_GRAPHQL="writable_resource_graphql",e.REMOTE_CONFIGURATION="remote_configuration",e.UPDATE_VIEW_NAME="update_view_name",e.LONG_ANIMATION_FRAME="long_animation_frame"})(Gl||(Gl={}));var Uc=new Set;function op(e){Array.isArray(e)&&dp(e.filter(function(t){return fc(Gl,t)}))}function dp(e){e.forEach(function(t){Uc.add(t)})}function up(){return Uc}var yt="?";function ae(e){var t=[],n=yl(e,"stack"),l=String(e);return n&&al(n,l)&&(n=n.slice(l.length)),n&&n.split(`
267
- `).forEach(function(a){var c=hp(a)||pp(a)||yp(a)||Wp(a);c&&(!c.func&&c.line&&(c.func=yt),t.push(c))}),{message:yl(e,"message"),name:yl(e,"name"),stack:t}}var wc="((?:file|https?|blob|chrome-extension|native|eval|webpack|snippet|<anonymous>|\\w+\\.|\\/).*?)",_e="(?::(\\d+))",mp=new RegExp("^\\s*at (.*?) ?\\(".concat(wc).concat(_e,"?").concat(_e,"?\\)?\\s*$"),"i"),Zp=new RegExp("\\((\\S*)".concat(_e).concat(_e,"\\)"));function hp(e){var t=mp.exec(e);if(t){var n=t[2]&&t[2].indexOf("native")===0,l=t[2]&&t[2].indexOf("eval")===0,a=Zp.exec(t[2]);return l&&a&&(t[2]=a[1],t[3]=a[2],t[4]=a[3]),{args:n?[t[2]]:[],column:t[4]?+t[4]:void 0,func:t[1]||yt,line:t[3]?+t[3]:void 0,url:n?void 0:t[2]}}}var bp=new RegExp("^\\s*at ?".concat(wc).concat(_e,"?").concat(_e,"??\\s*$"),"i");function pp(e){var t=bp.exec(e);if(t)return{args:[],column:t[3]?+t[3]:void 0,func:yt,line:t[2]?+t[2]:void 0,url:t[1]}}var Gp=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;function yp(e){var t=Gp.exec(e);if(t)return{args:[],column:t[4]?+t[4]:void 0,func:t[1]||yt,line:+t[3],url:t[2]}}var Xp=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,Vp=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;function Wp(e){var t=Xp.exec(e);if(t){var n=t[3]&&t[3].indexOf(" > eval")>-1,l=Vp.exec(t[3]);return n&&l&&(t[3]=l[1],t[4]=l[2],t[5]=void 0),{args:t[2]?t[2].split(","):[],column:t[5]?+t[5]:void 0,func:t[1]||yt,line:t[4]?+t[4]:void 0,url:t[3]}}}function yl(e,t){if(!(typeof e!="object"||!e||!(t in e))){var n=e[t];return typeof n=="string"?n:void 0}}function Rp(e,t,n,l){var a=[{url:t,column:l,line:n}],c=Lp(e),i=c.name,r=c.message;return{name:i,message:r,stack:a}}var fp=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/;function Lp(e){var t,n,l;return{}.toString.call(e)==="[object String]"&&(t=fp.exec(e),n=t[1],l=t[2]),{name:n,message:l}}function rn(){var e=2,t=new Error,n;if(!t.stack)try{throw t}catch{}return ht(function(){var l=ae(t);l.stack=l.stack.slice(e),n=ve(l)}),n}function ve(e){var t=Bc(e);return e.stack.forEach(function(n){var l=n.func==="?"?"<anonymous>":n.func,a=n.args&&n.args.length>0?"(".concat(n.args.join(", "),")"):"",c=n.line?":".concat(n.line):"",i=n.line&&n.column?":".concat(n.column):"";t+=`
268
- at `.concat(l).concat(a," @ ").concat(n.url).concat(c).concat(i)}),t}function Bc(e){return"".concat(e.name||"Error",": ").concat(e.message)}function ge(e,t,n,l){var a=l===void 0?{}:l,c=a.computeHandlingStack,i=e[t];if(typeof i!="function")if(t in e&&al(t,"on"))i=he;else return{stop:he};var r=!1,d=function(){if(r)return i.apply(this,arguments);var s=ll(arguments),o;ht(n,null,[{target:this,parameters:s,onPostCall:function(Z){o=Z},handlingStack:c?rn():void 0}]);var u=i.apply(this,s);return o&&ht(o,null,[u]),u};return e[t]=d,{stop:function(){r=!0,e[t]===d&&(e[t]=i)}}}var Yp=220*le,vp="$",gp=3;function ce(e,t){t===void 0&&(t=Yp);var n=Ae(Object.prototype),l=Ae(Array.prototype),a=[],c=new WeakMap,i=Xl(e,vp,void 0,a,c),r=JSON.stringify(i),d=r?r.length:0;if(d>t){Vl(t,"discarded",e);return}for(;a.length>0&&d<t;){var s=a.shift(),o=0;if(Array.isArray(s.source))for(var u=0;u<s.source.length;u++){var Z=Xl(s.source[u],s.path,u,a,c);if(Z!==void 0?d+=JSON.stringify(Z).length:d+=4,d+=o,o=1,d>t){Vl(t,"truncated",e);break}s.target[u]=Z}else for(var u in s.source)if(Object.prototype.hasOwnProperty.call(s.source,u)){var Z=Xl(s.source[u],s.path,u,a,c);if(Z!==void 0&&(d+=JSON.stringify(Z).length+o+u.length+gp,o=1),d>t){Vl(t,"truncated",e);break}s.target[u]=Z}}return n(),l(),i}function Xl(e,t,n,l,a){var c=xp(e);if(!c||typeof c!="object")return Fp(c);var i=Cp(c);if(i!=="[Object]"&&i!=="[Array]"&&i!=="[Error]")return i;var r=e;if(a.has(r))return"[Reference seen at ".concat(a.get(r),"]");var d=n!==void 0?"".concat(t,".").concat(n):t,s=Array.isArray(c)?[]:{};return a.set(r,d),l.push({source:c,target:s,path:d}),s}function Fp(e){return typeof e=="bigint"?"[BigInt] ".concat(e.toString()):typeof e=="function"?"[Function] ".concat(e.name||"unknown"):typeof e=="symbol"?"[Symbol] ".concat(e.description||e.toString()):e}function Cp(e){try{if(e instanceof Event)return{isTrusted:e.isTrusted};var t=Object.prototype.toString.call(e),n=t.match(/\[object (.*)\]/);if(n&&n[1])return"[".concat(n[1],"]")}catch{}return"[Unserializable]"}function xp(e){var t=e;if(t&&typeof t.toJSON=="function")try{return t.toJSON()}catch{}return e}function Vl(e,t,n){B.warn("The data provided has been ".concat(t," as it is over the limit of ").concat(e," characters:"),n)}var Qc="No stack, consider using an instance of Error";function Pc(e){var t=e.stackTrace,n=e.originalError,l=e.handlingStack,a=e.startClocks,c=e.nonErrorPrefix,i=e.source,r=e.handling,d=n instanceof Error,s=Sp(t,d,c,n),o=Ip(d,t)?ve(t):Qc,u=d?Dc(n,i):void 0,Z=t?t.name:void 0,m=Ec(n);return{startClocks:a,source:i,handling:r,handlingStack:l,originalError:n,type:Z,message:s,stack:o,causes:u,fingerprint:m}}function Sp(e,t,n,l){return e!=null&&e.message&&(e!=null&&e.name)?e.message:t?"Empty message":"".concat(n," ").concat(Le(ce(l)))}function Ip(e,t){return t===void 0?!1:e?!0:t.stack.length>0&&(t.stack.length>1||t.stack[0].url!==void 0)}function Ec(e){return e instanceof Error&&"dd_fingerprint"in e?String(e.dd_fingerprint):void 0}function zp(e){var t;return(t=/@ (.+)/.exec(e))===null||t===void 0?void 0:t[1]}function Dc(e,t){for(var n=e,l=[];(n==null?void 0:n.cause)instanceof Error&&l.length<10;){var a=ae(n.cause);l.push({message:n.cause.message,source:t,type:a==null?void 0:a.name,stack:a&&ve(a)}),n=n.cause}return l.length?l:void 0}var j={AGENT:"agent",CONSOLE:"console",CUSTOM:"custom",LOGGER:"logger",NETWORK:"network",SOURCE:"source",REPORT:"report"};function Mp(e){var t=function(a,c){var i=Pc({stackTrace:a,originalError:c,startClocks:me(),nonErrorPrefix:"Uncaught",source:j.SOURCE,handling:"unhandled"});e.notify(i)},n=Jp(t).stop,l=Np(t).stop;return{stop:function(){n(),l()}}}function Jp(e){return ge(window,"onerror",function(t){var n=t.parameters,l=n[0],a=n[1],c=n[2],i=n[3],r=n[4],d;r instanceof Error?d=ae(r):d=Rp(l,a,c,i),e(d,r??l)})}function Np(e){return ge(window,"onunhandledrejection",function(t){var n=t.parameters[0],l=n.reason||"Empty reason",a=ae(l);e(a,l)})}function kp(e){var t=P({version:"5.29.1",onReady:function(n){n()}},e);return Object.defineProperty(t,"_setDebug",{get:function(){return o0},enumerable:!1}),t}function Kp(e,t,n){var l=e[t];l&&!l.q&&l.version&&B.warn("SDK is loaded more than once. This is unsupported and might have unexpected behavior."),e[t]=n,l&&l.q&&l.q.forEach(function(a){return Vc(a,"onReady callback threw an error:")()})}function jc(e,t){t.silentMultipleInit||B.error("".concat(e," is already initialized."))}function Fe(e,t,n,l,a){return Wl(e,t,[n],l,a)}function Wl(e,t,n,l,a){var c=a===void 0?{}:a,i=c.once,r=c.capture,d=c.passive,s=z(function(m){!m.isTrusted&&!m.__ddIsTrusted&&!e.allowUntrustedEvents||(i&&Z(),l(m))}),o=d?{capture:r,passive:d}:r,u=je(t,"addEventListener");n.forEach(function(m){return u.call(t,m,s,o)});function Z(){var m=je(t,"removeEventListener");n.forEach(function(p){return m.call(t,p,s,o)})}return{stop:Z}}var sn={intervention:"intervention",deprecation:"deprecation",cspViolation:"csp_violation"};function Tp(e,t){var n=[];Ee(t,sn.cspViolation)&&n.push(Up(e));var l=t.filter(function(a){return a!==sn.cspViolation});return l.length&&n.push(Hp(l)),gc.apply(void 0,n)}function Hp(e){return new Q(function(t){if(window.ReportingObserver){var n=z(function(a,c){return a.forEach(function(i){return t.notify(wp(i))})}),l=new window.ReportingObserver(n,{types:e,buffered:!0});return l.observe(),function(){l.disconnect()}}})}function Up(e){return new Q(function(t){var n=Fe(e,document,"securitypolicyviolation",function(l){t.notify(Bp(l))}).stop;return n})}function wp(e){var t=e.type,n=e.body;return Oc({type:n.id,message:"".concat(t,": ").concat(n.message),originalError:e,stack:Ac(n.id,n.message,n.sourceFile,n.lineNumber,n.columnNumber)})}function Bp(e){var t="'".concat(e.blockedURI,"' blocked by '").concat(e.effectiveDirective,"' directive");return Oc({type:e.effectiveDirective,message:"".concat(sn.cspViolation,": ").concat(t),originalError:e,csp:{disposition:e.disposition},stack:Ac(e.effectiveDirective,e.originalPolicy?"".concat(t,' of the policy "').concat(Z0(e.originalPolicy,100,"..."),'"'):"no policy",e.sourceFile,e.lineNumber,e.columnNumber)})}function Oc(e){return P({startClocks:me(),source:j.REPORT,handling:"unhandled"},e)}function Ac(e,t,n,l,a){return n?ve({name:e,message:t,stack:[{func:"?",url:n,line:l??void 0,column:a??void 0}]}):void 0}function _c(e,t){var n=window.__ddBrowserSdkExtensionCallback;n&&n({type:e,payload:t})}function Rl(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function on(e,t,n){if(n===void 0&&(n=Qp()),t===void 0)return e;if(typeof t!="object"||t===null)return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp){var l=t.flags||[t.global?"g":"",t.ignoreCase?"i":"",t.multiline?"m":"",t.sticky?"y":"",t.unicode?"u":""].join("");return new RegExp(t.source,l)}if(!n.hasAlreadyBeenSeen(t)){if(Array.isArray(t)){for(var a=Array.isArray(e)?e:[],c=0;c<t.length;++c)a[c]=on(a[c],t[c],n);return a}var i=Rl(e)==="object"?e:{};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=on(i[r],t[r],n));return i}}function $c(e){return on(void 0,e)}function $e(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n,l=0,a=e;l<a.length;l++){var c=a[l];c!=null&&(n=on(n,c))}return n}function Qp(){if(typeof WeakSet<"u"){var e=new WeakSet;return{hasAlreadyBeenSeen:function(n){var l=e.has(n);return l||e.add(n),l}}}var t=[];return{hasAlreadyBeenSeen:function(n){var l=t.indexOf(n)>=0;return l||t.push(n),l}}}function Pp(){var e,t=window.navigator;return{status:t.onLine?"connected":"not_connected",interfaces:t.connection&&t.connection.type?[t.connection.type]:void 0,effective_type:(e=t.connection)===null||e===void 0?void 0:e.effectiveType}}function Ep(e){var t=new Set;return e.forEach(function(n){return t.add(n)}),ll(t)}function qc(e,t){var n=e.indexOf(t);n>=0&&e.splice(n,1)}var Dp=500;function ei(){var e=[],t=function(a){var c=e.push(a);c>Dp&&e.splice(0,1)},n=function(a){qc(e,a)},l=function(a){e.forEach(function(c){return c(a)}),e.length=0};return{add:t,remove:n,drain:l}}var Ce={log:"log",configuration:"configuration",usage:"usage"},jp=["https://www.datadoghq-browser-agent.com","https://www.datad0g-browser-agent.com","https://d3uc069fcn7uxw.cloudfront.net","https://d20xtzwzcl0ceb.cloudfront.net","http://localhost","<anonymous>"],Op=[j0],ti=ei(),qe=function(e){ti.add(function(){return qe(e)})};function Ap(e,t){var n,l,a=new Q,c=new Set,i=!Ee(Op,t.site)&&jt(t.telemetrySampleRate),r=(n={},n[Ce.log]=i,n[Ce.configuration]=i&&jt(t.telemetryConfigurationSampleRate),n[Ce.usage]=i&&jt(t.telemetryUsageSampleRate),n),d=_p();qe=function(o){var u=Le(o);if(r[o.type]&&c.size<t.maxTelemetryEventsPerPage&&!c.has(u)){var Z=s(e,o,d);a.notify(Z),_c("telemetry",Z),c.add(u)}},s0(li);function s(o,u,Z){return $e({type:"telemetry",date:ue(),service:o,version:"5.29.1",source:"browser",_dd:{format_version:2},telemetry:$e(u,{runtime_env:Z,connectivity:Pp(),sdk_setup:"npm"}),experimental_features:ll(up())},l!==void 0?l():{})}return{setContextProvider:function(o){l=o},observable:a,enabled:i}}function _p(){return{is_local_file:window.location.protocol==="file:",is_worker:"WorkerGlobalScope"in self}}function $p(){ti.drain()}function qp(e){return e.site===E0}function ni(e,t){il(K.debug,e,t),qe(P({type:Ce.log,message:e,status:"debug"},t))}function li(e,t){qe(P({type:Ce.log,status:"error"},nG(e),t))}function eG(e){qe({type:Ce.configuration,configuration:e})}function tG(e){qe({type:Ce.usage,usage:e})}function nG(e){if(e instanceof Error){var t=ae(e);return{error:{kind:t.name,stack:ve(lG(t))},message:t.message}}return{error:{stack:Qc},message:"".concat("Uncaught"," ").concat(Le(e))}}function lG(e){return e.stack=e.stack.filter(function(t){return!t.url||jp.some(function(n){return al(t.url,n)})}),e}var dn=1/0,aG=Xe;function cG(e){var t=e.expireDelay,n=e.maxEntries,l=[],a=rl(function(){return c()},aG);function c(){for(var Z=Ot()-t;l.length>0&&l[l.length-1].endTime<Z;)l.pop()}function i(Z,m){var p={value:Z,startTime:m,endTime:dn,remove:function(){qc(l,p)},close:function(h){p.endTime=h}};return n&&l.length>=n&&l.pop(),l.unshift(p),p}function r(Z,m){Z===void 0&&(Z=dn),m===void 0&&(m={returnInactive:!1});for(var p=0,h=l;p<h.length;p++){var R=h[p];if(R.startTime<=Z){if(m.returnInactive||Z<=R.endTime)return R.value;break}}}function d(Z){var m=l[0];m&&m.endTime===dn&&m.close(Z)}function s(Z,m){Z===void 0&&(Z=dn),m===void 0&&(m=0);var p=e0(Z,m);return l.filter(function(h){return h.startTime<=p&&Z<=h.endTime}).map(function(h){return h.value})}function o(){l=[]}function u(){vc(a)}return{add:i,find:r,closeActive:d,findAll:s,reset:o,stop:u}}var iG=Xe,rG=ul;function sG(e,t,n,l){var a=new Q,c=new Q,i=w0(e.sessionStoreStrategyType,t,n),r=cG({expireDelay:rG});i.renewObservable.subscribe(function(){r.add(d(),Ot()),a.notify()}),i.expireObservable.subscribe(function(){c.notify(),r.closeActive(Ot())}),i.expandOrRenewSession(),r.add(d(),$b().relative),l.observable.subscribe(function(){l.isGranted()?i.expandOrRenewSession():i.expire()}),oG(e,function(){l.isGranted()&&i.expandOrRenewSession()}),dG(e,function(){return i.expandSession()}),uG(e,function(){return i.restartSession()});function d(){return{id:i.getSession().id,trackingType:i.getSession()[t],isReplayForced:!!i.getSession().forcedReplay}}return{findSession:function(s,o){return r.find(s,o)},renewObservable:a,expireObservable:c,sessionStateUpdateObservable:i.sessionStateUpdateObservable,expire:i.expire,updateSessionState:i.updateSessionState}}function oG(e,t){Wl(e,window,["click","touchstart","keydown","scroll"],t,{capture:!0,passive:!0}).stop}function dG(e,t){var n=function(){document.visibilityState==="visible"&&t()};Fe(e,document,"visibilitychange",n).stop,rl(n,iG)}function uG(e,t){Fe(e,window,"resume",t,{capture:!0}).stop}function ai(e){return e>=500}function mG(e){try{return e.clone()}catch{return}}var ZG=80*le,hG=32,ci=3*Rc,bG=Xe,ii=mt;function ri(e,t,n,l,a){t.transportStatus===0&&t.queuedPayloads.size()===0&&t.bandwidthMonitor.canHandle(e)?oi(e,t,n,{onSuccess:function(){return di(0,t,n,l,a)},onFailure:function(){t.queuedPayloads.enqueue(e),si(t,n,l,a)}}):t.queuedPayloads.enqueue(e)}function si(e,t,n,l){e.transportStatus===2&&bt(function(){var a=e.queuedPayloads.first();oi(a,e,t,{onSuccess:function(){e.queuedPayloads.dequeue(),e.currentBackoffTime=ii,di(1,e,t,n,l)},onFailure:function(){e.currentBackoffTime=Math.min(bG,e.currentBackoffTime*2),si(e,t,n,l)}})},e.currentBackoffTime)}function oi(e,t,n,l){var a=l.onSuccess,c=l.onFailure;t.bandwidthMonitor.add(e),n(e,function(i){t.bandwidthMonitor.remove(e),pG(i)?(t.transportStatus=t.bandwidthMonitor.ongoingRequestCount>0?1:2,e.retry={count:e.retry?e.retry.count+1:1,lastFailureStatus:i.status},c()):(t.transportStatus=0,a())})}function di(e,t,n,l,a){e===0&&t.queuedPayloads.isFull()&&!t.queueFullReported&&(a({message:"Reached max ".concat(l," events size queued for upload: ").concat(ci/Rc,"MiB"),source:j.AGENT,startClocks:me()}),t.queueFullReported=!0);var c=t.queuedPayloads;for(t.queuedPayloads=ui();c.size()>0;)ri(c.dequeue(),t,n,l,a)}function pG(e){return e.type!=="opaque"&&(e.status===0&&!navigator.onLine||e.status===408||e.status===429||ai(e.status))}function GG(){return{transportStatus:0,currentBackoffTime:ii,bandwidthMonitor:yG(),queuedPayloads:ui(),queueFullReported:!1}}function ui(){var e=[];return{bytesCount:0,enqueue:function(t){this.isFull()||(e.push(t),this.bytesCount+=t.bytesCount)},first:function(){return e[0]},dequeue:function(){var t=e.shift();return t&&(this.bytesCount-=t.bytesCount),t},size:function(){return e.length},isFull:function(){return this.bytesCount>=ci}}}function yG(){return{ongoingRequestCount:0,ongoingByteCount:0,canHandle:function(e){return this.ongoingRequestCount===0||this.ongoingByteCount+e.bytesCount<=ZG&&this.ongoingRequestCount<hG},add:function(e){this.ongoingRequestCount+=1,this.ongoingByteCount+=e.bytesCount},remove:function(e){this.ongoingRequestCount-=1,this.ongoingByteCount-=e.bytesCount}}}function XG(e,t,n,l){var a=GG(),c=function(i,r){return RG(e,t,n,i,r)};return{send:function(i){ri(i,a,c,t.trackType,l)},sendOnExit:function(i){VG(e,t,n,i)}}}function VG(e,t,n,l){var a=!!navigator.sendBeacon&&l.bytesCount<n;if(a)try{var c=t.build("beacon",l),i=navigator.sendBeacon(c,l.data);if(i)return}catch(d){WG(d)}var r=t.build("xhr",l);fl(e,r,l.data)}var mi=!1;function WG(e){mi||(mi=!0,li(e))}function RG(e,t,n,l,a){var c=fG()&&l.bytesCount<n;if(c){var i=t.build("fetch",l);fetch(i,{method:"POST",body:l.data,keepalive:!0,mode:"cors"}).then(z(function(d){return a==null?void 0:a({status:d.status,type:d.type})}),z(function(){var d=t.build("xhr",l);fl(e,d,l.data,a)}))}else{var r=t.build("xhr",l);fl(e,r,l.data,a)}}function fG(){try{return window.Request&&"keepalive"in new Request("http://a")}catch{return!1}}function fl(e,t,n,l){var a=new XMLHttpRequest;a.open("POST",t,!0),n instanceof Blob&&a.setRequestHeader("Content-Type",n.type),Fe(e,a,"loadend",function(){l==null||l({status:a.status})},{once:!0}),a.send(n)}function Ll(){var e=LG();if(e)return{getCapabilities:function(){var t;return JSON.parse(((t=e.getCapabilities)===null||t===void 0?void 0:t.call(e))||"[]")},getPrivacyLevel:function(){var t;return(t=e.getPrivacyLevel)===null||t===void 0?void 0:t.call(e)},getAllowedWebViewHosts:function(){return JSON.parse(e.getAllowedWebViewHosts())},send:function(t,n,l){var a=l?{id:l}:void 0;e.send(JSON.stringify({eventType:t,event:n,view:a}))}}}function un(e){var t;e===void 0&&(e=(t=Ze().location)===null||t===void 0?void 0:t.hostname);var n=Ll();return!!n&&n.getAllowedWebViewHosts().some(function(l){return e===l||c0(e,".".concat(l))})}function LG(){return Ze().DatadogEventBridge}var mn={HIDDEN:"visibility_hidden",UNLOADING:"before_unload",PAGEHIDE:"page_hide",FROZEN:"page_frozen"};function YG(e){return new Q(function(t){var n=Wl(e,window,["visibilitychange","freeze"],function(a){a.type==="visibilitychange"&&document.visibilityState==="hidden"?t.notify({reason:mn.HIDDEN}):a.type==="freeze"&&t.notify({reason:mn.FROZEN})},{capture:!0}).stop,l=Fe(e,window,"beforeunload",function(){t.notify({reason:mn.UNLOADING})}).stop;return function(){n(),l()}})}function vG(e){return Ee(De(mn),e)}function gG(e){var t=e.encoder,n=e.request,l=e.flushController,a=e.messageBytesLimit,c={},i=l.flushObservable.subscribe(function(Z){return u(Z)});function r(Z,m,p){l.notifyBeforeAddMessage(m),p!==void 0?(c[p]=Z,l.notifyAfterAddMessage()):t.write(t.isEmpty?Z:`
269
- `.concat(Z),function(h){l.notifyAfterAddMessage(h-m)})}function d(Z){return Z!==void 0&&c[Z]!==void 0}function s(Z){var m=c[Z];delete c[Z];var p=t.estimateEncodedBytesCount(m);l.notifyAfterRemoveMessage(p)}function o(Z,m){var p=Le(Z),h=t.estimateEncodedBytesCount(p);if(h>=a){B.warn("Discarded a message whose size was bigger than the maximum allowed size ".concat(a,"KB. ").concat(Dt," ").concat(Xc,"/#technical-limitations"));return}d(m)&&s(m),r(p,h,m)}function u(Z){var m=De(c).join(`
270
- `);c={};var p=vG(Z.reason),h=p?n.sendOnExit:n.send;if(p&&t.isAsync){var R=t.finishSync();R.outputBytesCount&&h(Zi(R));var y=[R.pendingData,m].filter(Boolean).join(`
271
- `);y&&h({data:y,bytesCount:nl(y)})}else m&&t.write(t.isEmpty?m:`
272
- `.concat(m)),t.finish(function(V){h(Zi(V))})}return{flushController:l,add:o,upsert:o,stop:i.unsubscribe}}function Zi(e){var t;return typeof e.output=="string"?t=e.output:t=new Blob([e.output],{type:"text/plain"}),{data:t,bytesCount:e.outputBytesCount,encoding:e.encoding}}function FG(e){var t=e.messagesLimit,n=e.bytesLimit,l=e.durationLimit,a=e.pageExitObservable,c=e.sessionExpireObservable,i=a.subscribe(function(h){return u(h.reason)}),r=c.subscribe(function(){return u("session_expire")}),d=new Q(function(){return function(){i.unsubscribe(),r.unsubscribe()}}),s=0,o=0;function u(h){if(o!==0){var R=o,y=s;o=0,s=0,p(),d.notify({reason:h,messagesCount:R,bytesCount:y})}}var Z;function m(){Z===void 0&&(Z=bt(function(){u("duration_limit")},l))}function p(){Yc(Z),Z=void 0}return{flushObservable:d,get messagesCount(){return o},notifyBeforeAddMessage:function(h){s+h>=n&&u("bytes_limit"),o+=1,s+=h,m()},notifyAfterAddMessage:function(h){h===void 0&&(h=0),s+=h,o>=t?u("messages_limit"):s>=n&&u("bytes_limit")},notifyAfterRemoveMessage:function(h){s-=h,o-=1,o===0&&p()}}}function hi(e,t,n,l,a,c,i){i===void 0&&(i=gG);var r=s(e,t),d=n&&s(e,n);function s(o,u){var Z=u.endpoint,m=u.encoder;return i({encoder:m,request:XG(o,Z,o.batchBytesLimit,l),flushController:FG({messagesLimit:o.batchMessagesLimit,bytesLimit:o.batchBytesLimit,durationLimit:o.flushTimeout,pageExitObservable:a,sessionExpireObservable:c}),messageBytesLimit:o.messageBytesLimit})}return{flushObservable:r.flushController.flushObservable,add:function(o,u){u===void 0&&(u=!0),r.add(o),d&&u&&d.add(n.transformMessage?n.transformMessage(o):o)},upsert:function(o,u){r.upsert(o,u),d&&d.upsert(n.transformMessage?n.transformMessage(o):o,u)},stop:function(){r.stop(),d&&d.stop()}}}function Zn(){var e="",t=0;return{isAsync:!1,get isEmpty(){return!e},write:function(n,l){var a=nl(n);t+=a,e+=n,l&&l(a)},finish:function(n){n(this.finishSync())},finishSync:function(){var n={output:e,outputBytesCount:t,rawBytesCount:t,pendingData:""};return e="",t=0,n},estimateEncodedBytesCount:function(n){return n.length}}}var CG=function(){function e(){this.callbacks={}}return e.prototype.notify=function(t,n){var l=this.callbacks[t];l&&l.forEach(function(a){return a(n)})},e.prototype.subscribe=function(t,n){var l=this;return this.callbacks[t]||(this.callbacks[t]=[]),this.callbacks[t].push(n),{unsubscribe:function(){l.callbacks[t]=l.callbacks[t].filter(function(a){return n!==a})}}},e}();function xG(e,t,n){var l=0,a=!1;return{isLimitReached:function(){if(l===0&&bt(function(){l=0},Xe),l+=1,l<=t||a)return a=!1,!1;if(l===t+1){a=!0;try{n({message:"Reached max number of ".concat(e,"s by minute: ").concat(t),source:j.AGENT,startClocks:me()})}finally{a=!1}}return!0}}}var Yl,vl=new WeakMap;function SG(e){return Yl||(Yl=IG(e)),Yl}function IG(e){return new Q(function(t){var n=ge(XMLHttpRequest.prototype,"open",zG).stop,l=ge(XMLHttpRequest.prototype,"send",function(c){MG(c,e,t)},{computeHandlingStack:!0}).stop,a=ge(XMLHttpRequest.prototype,"abort",JG).stop;return function(){n(),l(),a()}})}function zG(e){var t=e.target,n=e.parameters,l=n[0],a=n[1];vl.set(t,{state:"open",method:String(l).toUpperCase(),url:bl(String(a))})}function MG(e,t,n){var l=e.target,a=e.handlingStack,c=vl.get(l);if(c){var i=c;i.state="start",i.startClocks=me(),i.isAborted=!1,i.xhr=l,i.handlingStack=a;var r=!1,d=ge(l,"onreadystatechange",function(){l.readyState===XMLHttpRequest.DONE&&s()}).stop,s=function(){if(o(),d(),!r){r=!0;var u=c;u.state="complete",u.duration=qb(i.startClocks.timeStamp,ue()),u.status=l.status,n.notify(i0(u))}},o=Fe(t,l,"loadend",s).stop;n.notify(i)}}function JG(e){var t=e.target,n=vl.get(t);n&&(n.isAborted=!0)}var gl;function bi(){return gl||(gl=NG()),gl}function NG(){return new Q(function(e){if(window.fetch){var t=ge(window,"fetch",function(n){return kG(n,e)},{computeHandlingStack:!0}).stop;return t}})}function kG(e,t){var n=e.parameters,l=e.onPostCall,a=e.handlingStack,c=n[0],i=n[1],r=i&&i.method;r===void 0&&c instanceof Request&&(r=c.method);var d=r!==void 0?String(r).toUpperCase():"GET",s=c instanceof Request?c.url:bl(String(c)),o=me(),u={state:"start",init:i,input:c,method:d,startClocks:o,url:s,handlingStack:a};t.notify(u),n[0]=u.input,n[1]=u.init,l(function(Z){return KG(t,Z,u)})}function KG(e,t,n){var l=n;function a(c){l.state="resolve",P(l,c),e.notify(l)}t.then(z(function(c){a({response:c,responseType:c.type,status:c.status,isAborted:!1})}),z(function(c){var i,r;a({status:0,isAborted:((r=(i=l.init)===null||i===void 0?void 0:i.signal)===null||r===void 0?void 0:r.aborted)||c instanceof DOMException&&c.code===DOMException.ABORT_ERR,error:c})}))}var Fl={};function TG(e){var t=e.map(function(n){return Fl[n]||(Fl[n]=HG(n)),Fl[n]});return gc.apply(void 0,t)}function HG(e){return new Q(function(t){var n=ne[e];return ne[e]=function(){for(var l=[],a=0;a<arguments.length;a++)l[a]=arguments[a];n.apply(console,l);var c=rn();ht(function(){t.notify(UG(l,e,c))})},function(){ne[e]=n}})}function UG(e,t,n){var l=e.map(function(i){return wG(i)}).join(" "),a;if(t===K.error){var c=l0(e,function(i){return i instanceof Error});a={stack:c?ve(ae(c)):void 0,fingerprint:Ec(c),causes:c?Dc(c,"console"):void 0,startClocks:me(),message:l,source:j.CONSOLE,handling:"handled",handlingStack:n}}return{api:t,message:l,error:a,handlingStack:n}}function wG(e){return typeof e=="string"?ce(e):e instanceof Error?Bc(ae(e)):Le(ce(e),void 0,2)}function Cl(e){var t={},n=new Q,l={getContext:function(){return $c(t)},setContext:function(a){Rl(a)==="object"?(t=ce(a),e&&e.updateCustomerData(t)):l.clearContext(),n.notify()},setContextProperty:function(a,c){t[a]=ce(c),e&&e.updateCustomerData(t),n.notify()},removeContextProperty:function(a){delete t[a],e&&e.updateCustomerData(t),n.notify()},clearContext:function(){t={},e&&e.resetCustomerData(),n.notify()},changeObservable:n};return l}var BG="_dd_c",QG=[];function pi(e,t,n,l){var a=PG(n,l);QG.push(Fe(e,window,"storage",function(d){var s=d.key;a===s&&c()})),t.changeObservable.subscribe(i),t.setContext($e(r(),t.getContext()));function c(){t.setContext(r())}function i(){localStorage.setItem(a,JSON.stringify(t.getContext()))}function r(){var d=localStorage.getItem(a);return d!==null?JSON.parse(d):{}}}function PG(e,t){return"".concat(BG,"_").concat(e,"_").concat(t)}var EG=3*le,DG=16*le,jG=200;function OG(e){e===void 0&&(e=2);var t=new Map,n=!1;function l(a){if(a===void 0&&(a=0),!(n||e===0)){var c=e===2?EG:DG,i=a;t.forEach(function(r){i+=r.getBytesCount()}),i>c&&(AG(c),n=!0)}}return{createDetachedTracker:function(){var a=Gi(function(){return l(a.getBytesCount())});return a},getOrCreateTracker:function(a){return t.has(a)||t.set(a,Gi(l)),t.get(a)},setCompressionStatus:function(a){e===0&&(e=a,l())},getCompressionStatus:function(){return e},stop:function(){t.forEach(function(a){return a.stop()}),t.clear()}}}function Gi(e){var t=0,n=Fc(function(i){t=nl(Le(i)),e()},jG),l=n.throttled,a=n.cancel,c=function(){a(),t=0};return{updateCustomerData:function(i){cl(i)?c():l(i)},resetCustomerData:c,getBytesCount:function(){return t},stop:function(){a()}}}function AG(e){B.warn("Customer data exceeds the recommended ".concat(e/le,"KiB threshold. ").concat(Dt," ").concat(Xc,"/#customer-data-exceeds-the-recommended-threshold-warning"))}function _G(e,t,n){var l=e.getReader(),a=[],c=0;i();function i(){l.read().then(z(function(d){if(d.done){r();return}a.push(d.value),c+=d.value.length,c>n.bytesLimit?r():i()}),z(function(d){return t(d)}))}function r(){l.cancel().catch(he);var d,s;{var o;if(a.length===1)o=a[0];else{o=new Uint8Array(c);var u=0;a.forEach(function(Z){o.set(Z,u),u+=Z.length})}d=o.slice(0,n.bytesLimit),s=o.length>n.bytesLimit}t(void 0,d,s)}}var $G="datadog-synthetics-public-id",qG="datadog-synthetics-result-id",ey="datadog-synthetics-injects-rum";function yi(){return!!(window._DATADOG_SYNTHETICS_INJECTS_RUM||We(ey))}function ty(){var e=window._DATADOG_SYNTHETICS_PUBLIC_ID||We($G);return typeof e=="string"?e:void 0}function ny(){var e=window._DATADOG_SYNTHETICS_RESULT_ID||We(qG);return typeof e=="string"?e:void 0}function Xi(e){var t=P({},e),n=["id","name","email"];return n.forEach(function(l){l in t&&(t[l]=String(t[l]))}),t}function ly(e){var t=Rl(e)==="object";return t||B.error("Unsupported user:",e),t}var $;function hn(e,t,n){var l=n.getHandler(),a=Array.isArray(l)?l:[l];return Vi[e]>=Vi[n.getLevel()]&&Ee(a,t)}var x={ok:"ok",debug:"debug",info:"info",notice:"notice",warn:"warn",error:"error",critical:"critical",alert:"alert",emerg:"emerg"},Vi=($={},$[x.ok]=0,$[x.debug]=1,$[x.info]=2,$[x.notice]=4,$[x.warn]=5,$[x.error]=6,$[x.critical]=7,$[x.alert]=8,$[x.emerg]=9,$);function bn(e,t){var n=t===void 0?{}:t,l=n.includeMessage,a=l===void 0?!1:l;return{stack:e.stack,kind:e.type,message:a?e.message:void 0,causes:e.causes,fingerprint:e.fingerprint,handling:e.handling}}var ay=function(e,t,n,l){var a=arguments.length,c=a<3?t:l===null?l=Object.getOwnPropertyDescriptor(t,n):l,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")c=Reflect.decorate(e,t,n,l);else for(var r=e.length-1;r>=0;r--)(i=e[r])&&(c=(a<3?i(c):a>3?i(t,n,c):i(t,n))||c);return a>3&&c&&Object.defineProperty(t,n,c),c},Xt={console:"console",http:"http",silent:"silent"},cy=Object.keys(x),q=function(){function e(t,n,l,a,c,i){a===void 0&&(a=Xt.http),c===void 0&&(c=x.debug),i===void 0&&(i={}),this.handleLogStrategy=t,this.handlerType=a,this.level=c,this.contextManager=Cl(n),this.contextManager.setContext(i),l&&this.contextManager.setContextProperty("logger",{name:l})}return e.prototype.logImplementation=function(t,n,l,a,c){l===void 0&&(l=x.info);var i=ce(n),r;if(a!=null){var d=Pc({stackTrace:a instanceof Error?ae(a):void 0,originalError:a,nonErrorPrefix:"Provided",source:j.LOGGER,handling:"handled",startClocks:me()});r=$e({error:bn(d,{includeMessage:!0})},i)}else r=i;this.handleLogStrategy({message:ce(t),context:r,status:l},this,c)},e.prototype.log=function(t,n,l,a){l===void 0&&(l=x.info);var c;hn(l,Xt.http,this)&&(c=rn()),this.logImplementation(t,n,l,a,c)},e.prototype.setContext=function(t){this.contextManager.setContext(t)},e.prototype.getContext=function(){return this.contextManager.getContext()},e.prototype.setContextProperty=function(t,n){this.contextManager.setContextProperty(t,n)},e.prototype.removeContextProperty=function(t){this.contextManager.removeContextProperty(t)},e.prototype.clearContext=function(){this.contextManager.clearContext()},e.prototype.setHandler=function(t){this.handlerType=t},e.prototype.getHandler=function(){return this.handlerType},e.prototype.setLevel=function(t){this.level=t},e.prototype.getLevel=function(){return this.level},ay([d0],e.prototype,"logImplementation",null),e}();q.prototype.ok=ie(x.ok),q.prototype.debug=ie(x.debug),q.prototype.info=ie(x.info),q.prototype.notice=ie(x.notice),q.prototype.warn=ie(x.warn),q.prototype.error=ie(x.error),q.prototype.critical=ie(x.critical),q.prototype.alert=ie(x.alert),q.prototype.emerg=ie(x.emerg);function ie(e){return function(t,n,l){var a;hn(e,Xt.http,this)&&(a=rn()),this.logImplementation(t,n,e,l,a)}}function iy(e,t){return{view:{referrer:document.referrer,url:window.location.href},context:e.getContext(),user:t.getContext()}}var ry=32*le;function sy(e){e.usePciIntake===!0&&e.site&&e.site!=="datadoghq.com"&&B.warn("PCI compliance for Logs is only available for Datadog organizations in the US1 site. Default intake will be used.");var t=rp(e),n=Wi(e.forwardConsoleLogs,De(K),"Forward Console Logs"),l=Wi(e.forwardReports,De(sn),"Forward Reports");if(!(!t||!n||!l))return e.forwardErrorsToLogs&&!Ee(n,K.error)&&n.push(K.error),P({forwardErrorsToLogs:e.forwardErrorsToLogs!==!1,forwardConsoleLogs:n,forwardReports:l,requestErrorResponseLengthLimit:ry,sendLogsAfterSessionExpiration:!!e.sendLogsAfterSessionExpiration},t)}function Wi(e,t,n){if(e===void 0)return[];if(!(e==="all"||Array.isArray(e)&&e.every(function(l){return Ee(t,l)}))){B.error("".concat(n,' should be "all" or an array with allowed values "').concat(t.join('", "'),'"'));return}return e==="all"?t:Ep(e)}function oy(e){var t=sp(e);return P({forward_errors_to_logs:e.forwardErrorsToLogs,forward_console_logs:e.forwardConsoleLogs,forward_reports:e.forwardReports,use_pci_intake:e.usePciIntake,send_logs_after_session_expiration:e.sendLogsAfterSessionExpiration},t)}function dy(e,t,n){var l=ei(),a,c,i=t.observable.subscribe(r);function r(){if(!(!c||!a||!t.isGranted())){i.unsubscribe();var d=n(a,c);l.drain(d)}}return{init:function(d){if(!d){B.error("Missing configuration");return}if(op(d.enableExperimentalFeatures),un()&&(d=uy(d)),a=d,c){jc("DD_LOGS",d);return}var s=sy(d);s&&(c=s,bi().subscribe(he),t.tryToInit(s.trackingConsent),r())},get initConfiguration(){return a},getInternalContext:he,handleLog:function(d,s,o,u,Z){u===void 0&&(u=e()),Z===void 0&&(Z=ue()),l.add(function(m){return m.handleLog(d,s,o,u,Z)})}}}function uy(e){return P({},e,{clientToken:"empty"})}var Ri="logs";function my(e){var t=OG(),n=Cl(t.getOrCreateTracker(2)),l=Cl(t.getOrCreateTracker(1)),a=B0();function c(){return iy(n,l)}var i=dy(c,a,function(s,o){s.storeContextsAcrossPages&&(pi(o,n,Ri,2),pi(o,l,Ri,1));var u=e(s,o,c,a);return i=Zy(s,u),u}),r={},d=new q(function(){for(var s=[],o=0;o<arguments.length;o++)s[o]=arguments[o];return i.handleLog.apply(i,s)},t.createDetachedTracker());return kp({logger:d,init:z(function(s){return i.init(s)}),setTrackingConsent:z(function(s){a.update(s),tG({feature:"set-tracking-consent",tracking_consent:s})}),getGlobalContext:z(function(){return n.getContext()}),setGlobalContext:z(function(s){return n.setContext(s)}),setGlobalContextProperty:z(function(s,o){return n.setContextProperty(s,o)}),removeGlobalContextProperty:z(function(s){return n.removeContextProperty(s)}),clearGlobalContext:z(function(){return n.clearContext()}),createLogger:z(function(s,o){return o===void 0&&(o={}),r[s]=new q(function(){for(var u=[],Z=0;Z<arguments.length;Z++)u[Z]=arguments[Z];return i.handleLog.apply(i,u)},t.createDetachedTracker(),ce(s),o.handler,o.level,ce(o.context)),r[s]}),getLogger:z(function(s){return r[s]}),getInitConfiguration:z(function(){return $c(i.initConfiguration)}),getInternalContext:z(function(s){return i.getInternalContext(s)}),setUser:z(function(s){ly(s)&&l.setContext(Xi(s))}),getUser:z(function(){return l.getContext()}),setUserProperty:z(function(s,o){var u,Z=Xi((u={},u[s]=o,u))[s];l.setContextProperty(s,Z)}),removeUserProperty:z(function(s){return l.removeContextProperty(s)}),clearUser:z(function(){return l.clearContext()})})}function Zy(e,t){return P({init:function(n){jc("DD_LOGS",n)},initConfiguration:e},t)}var hy="logs";function by(e,t){var n=sG(e,hy,function(l){return Gy(e,l)},t);return{findTrackedSession:function(l,a){a===void 0&&(a={returnInactive:!1});var c=n.findSession(l,a);return c&&c.trackingType==="1"?{id:c.id}:void 0},expireObservable:n.expireObservable}}function py(e){var t=fi(e)==="1",n=t?{}:void 0;return{findTrackedSession:function(){return n},expireObservable:new Q}}function fi(e){return jt(e.sessionSampleRate)?"1":"0"}function Gy(e,t){var n=yy(t)?t:fi(e);return{trackingType:n,isTracked:n==="1"}}function yy(e){return e==="0"||e==="1"}var Li=!1;function pn(e){var t=window;if(yi()){var n=l(t.DD_RUM_SYNTHETICS);return!n&&!Li&&(Li=!0,ni("Logs sent before RUM is injected by the synthetics worker",{testId:ty(),resultId:ny()})),n}return l(t.DD_RUM);function l(a){if(a&&a.getInternalContext)return a.getInternalContext(e)}}function Xy(e,t,n,l,a){var c=cy.concat(["custom"]),i={};c.forEach(function(r){i[r]=xG(r,t.eventRateLimiterThreshold,a)}),n.subscribe(0,function(r){var d,s,o=r.rawLogsEvent,u=r.messageContext,Z=u===void 0?void 0:u,m=r.savedCommonContext,p=m===void 0?void 0:m,h=r.domainContext,R=t0(o.date),y=e.findTrackedSession(R);if(!(!y&&(!t.sendLogsAfterSessionExpiration||!e.findTrackedSession(R,{returnInactive:!0})))){var V=p||l(),L=$e({service:t.service,session_id:y?y.id:void 0,usr:cl(V.user)?void 0:V.user,view:V.view},V.context,pn(R),o,Z);((d=t.beforeSend)===null||d===void 0?void 0:d.call(t,L,h))===!1||L.origin!==j.AGENT&&((s=i[L.status])!==null&&s!==void 0?s:i.custom).isLimitReached()||n.notify(1,L)}})}var xe,Vy=(xe={},xe[K.log]=x.info,xe[K.debug]=x.debug,xe[K.info]=x.info,xe[K.warn]=x.warn,xe[K.error]=x.error,xe);function Wy(e,t){var n=TG(e.forwardConsoleLogs).subscribe(function(l){var a={rawLogsEvent:{date:ue(),message:l.message,origin:j.CONSOLE,error:l.error&&bn(l.error),status:Vy[l.api]},domainContext:{handlingStack:l.handlingStack}};t.notify(0,a)});return{stop:function(){n.unsubscribe()}}}function Ry(e,t){var n=Tp(e,e.forwardReports).subscribe(function(l){var a=l.message,c,i=l.originalError.type==="deprecation"?x.warn:x.error;i===x.error?c=bn(l):l.stack&&(a+=" Found in ".concat(zp(l.stack))),t.notify(0,{rawLogsEvent:{date:ue(),message:a,origin:j.REPORT,error:c,status:i}})});return{stop:function(){n.unsubscribe()}}}function fy(e,t){if(!e.forwardErrorsToLogs)return{stop:he};var n=SG(e).subscribe(function(c){c.state==="complete"&&a("xhr",c)}),l=bi().subscribe(function(c){c.state==="resolve"&&a("fetch",c)});function a(c,i){!e.isIntakeUrl(i.url)&&(gy(i)||ai(i.status))&&("xhr"in i?Ly(i.xhr,e,r):i.response?vy(i.response,e,r):i.error&&Yy(i.error,e,r));function r(d){var s={isAborted:i.isAborted,handlingStack:i.handlingStack};t.notify(0,{rawLogsEvent:{message:"".concat(Fy(c)," error ").concat(i.method," ").concat(i.url),date:i.startClocks.timeStamp,error:{stack:d||"Failed to load",handling:void 0},http:{method:i.method,status_code:i.status,url:i.url},status:x.error,origin:j.NETWORK},domainContext:s})}}return{stop:function(){n.unsubscribe(),l.unsubscribe()}}}function Ly(e,t,n){typeof e.response=="string"?n(xl(e.response,t)):n(e.response)}function Yy(e,t,n){n(xl(ve(ae(e)),t))}function vy(e,t,n){var l=mG(e);!l||!l.body?n():window.TextDecoder?Cy(l.body,t.requestErrorResponseLengthLimit,function(a,c){n(a?"Unable to retrieve response: ".concat(a):c)}):l.text().then(z(function(a){return n(xl(a,t))}),z(function(a){return n("Unable to retrieve response: ".concat(a))}))}function gy(e){return e.status===0&&e.responseType!=="opaque"}function xl(e,t){return e.length>t.requestErrorResponseLengthLimit?"".concat(e.substring(0,t.requestErrorResponseLengthLimit),"..."):e}function Fy(e){return e==="xhr"?"XHR":"Fetch"}function Cy(e,t,n){_G(e,function(l,a,c){if(l)n(l);else{var i=new TextDecoder().decode(a);c&&(i+="..."),n(void 0,i)}},{bytesLimit:t,collectStreamBody:!0})}function xy(e,t){if(!e.forwardErrorsToLogs)return{stop:he};var n=new Q,l=Mp(n).stop,a=n.subscribe(function(c){t.notify(0,{rawLogsEvent:{message:c.message,date:c.startClocks.timeStamp,error:bn(c),origin:j.SOURCE,status:x.error}})});return{stop:function(){l(),a.unsubscribe()}}}var Sy=CG,ee;function Iy(e){function t(n,l,a,c,i){var r=$e(l.getContext(),n.context);if(hn(n.status,Xt.console,l)&&My(n,r),hn(n.status,Xt.http,l)){var d={rawLogsEvent:{date:i||ue(),message:n.message,status:n.status,origin:j.LOGGER},messageContext:r,savedCommonContext:c};a&&(d.domainContext={handlingStack:a}),e.notify(0,d)}}return{handleLog:t}}var zy=(ee={},ee[x.ok]=K.debug,ee[x.debug]=K.debug,ee[x.info]=K.info,ee[x.notice]=K.info,ee[x.warn]=K.warn,ee[x.error]=K.error,ee[x.critical]=K.error,ee[x.alert]=K.error,ee[x.emerg]=K.error,ee);function My(e,t){var n=e.status,l=e.message;ye[zy[n]].call(ne,l,t)}function Jy(e,t,n,l,a){var c=hi(e,{endpoint:e.logsEndpointBuilder,encoder:Zn()},e.replica&&{endpoint:e.replica.logsEndpointBuilder,encoder:Zn()},n,l,a.expireObservable);return t.subscribe(1,function(i){c.add(i)}),c}function Ny(e){var t=Ll();e.subscribe(1,function(n){t.send("log",n)})}function ky(e){return{get:function(t){var n=e.findTrackedSession(t);if(n)return{session_id:n.id}}}}function Ky(e){return function(t){e.notify(0,{rawLogsEvent:{message:t.message,date:t.startClocks.timeStamp,origin:j.AGENT,status:x.error}}),ni("Error reported to customer",{"error.message":t.message})}}function Ty(e,t,n,l,a){var c=Ap("browser-logs-sdk",t);c.setContextProvider(function(){var u,Z,m,p,h,R;return{application:{id:(u=pn())===null||u===void 0?void 0:u.application_id},session:{id:(Z=a.findTrackedSession())===null||Z===void 0?void 0:Z.id},view:{id:(p=(m=pn())===null||m===void 0?void 0:m.view)===null||p===void 0?void 0:p.id},action:{id:(R=(h=pn())===null||h===void 0?void 0:h.user_action)===null||R===void 0?void 0:R.id}}});var i=[];if(un()){var r=Ll(),d=c.observable.subscribe(function(u){return r.send("internal_telemetry",u)});i.push(function(){return d.unsubscribe()})}else{var s=hi(t,{endpoint:t.rumEndpointBuilder,encoder:Zn()},t.replica&&{endpoint:t.replica.rumEndpointBuilder,encoder:Zn()},n,l,a.expireObservable);i.push(function(){return s.stop()});var o=c.observable.subscribe(function(u){return s.add(u,qp(t))});i.push(function(){return o.unsubscribe()})}return $p(),eG(oy(e)),{telemetry:c,stop:function(){i.forEach(function(u){return u()})}}}function Hy(e,t,n,l){var a=new Sy,c=[];a.subscribe(1,function(m){return _c("logs",m)});var i=Ky(a),r=YG(t),d=t.sessionStoreStrategyType&&!un()&&!yi()?by(t,l):py(t),s=Ty(e,t,i,r,d).stop;c.push(function(){return s()}),fy(t,a),xy(t,a),Wy(t,a),Ry(t,a);var o=Iy(a).handleLog;if(Xy(d,t,a,n,i),un())Ny(a);else{var u=Jy(t,a,i,r,d).stop;c.push(function(){return u()})}var Z=ky(d);return{handleLog:o,getInternalContext:Z.get,stop:function(){c.forEach(function(m){return m()})}}}var Gn=my(Hy);Kp(Ze(),"DD_LOGS",Gn);const Uy="1.0.44";Gn.init({clientToken:"pub4844895ac30067ac2c4aaa025dbc39d7",site:"us3.datadoghq.com",forwardErrorsToLogs:!0,sessionSampleRate:100});class Yi{constructor(t,n,l){g(this,"mediaID",null);console.log(`OTTPlayer: version: ${Uy}`),this.video=t,this.srcFrameRate=n,console.log("optionsFromMK: ",l),this.options=jb({enabled:!0,stopAugment:!1,stopAugmentFor:-1,gameId:"Unknown",medialook:!1,allGamesURL:"https://www.virtualott.com/games/",cloudFrontURL:"https://db8igqxlbvayn.cloudfront.net/prod",mediaIdJsonURL:"https://games-prod.virtualott.com/map",offsetJsonURL:"https://games-prod.virtualott.com/offset",renderingMode:Me.Augment,SynchMethod:ro.None,debug:!1,hls_fps:6e4/1001,augmentation:{renderTimecode:!0,offset:0},syncPoint:{frame:0,playerTime:0,mediaTimeMS:0}},l||{}),console.log("options after merge with MK's options: ",JSON.parse(JSON.stringify(this.options))),console.BBlog=function(a){console.log("OTTPlayer: "+a),Gn.logger.info("Web Unsorted msg: "+a,{name:"test"})},console.BBerror=function(...a){console.log("OTTPlayer: ",...a),Gn.logger.error("Web Unsorted error: "+a.join(", "),{name:"test"})},this.getGlobalConfig()}init(){typeof window.globalConfig>"u"?this.options=Object.assign(this.options,{}):this.options=Object.assign(this.options,JSON.parse(JSON.stringify(window.globalConfig)));var t={};if(t.value1=this.options.hls_fps,this.setFps(t),console.log("options after merge with the global options: ",JSON.parse(JSON.stringify(this.options))),!this.options.debug){let n=["debugText","forplus","forDoNotRender","debugText2","toggleBtn","numberInput","plus05CorrectionCheckbox","doNotRenderAugmentationCheckbox","plus05CorrectionLabel","doNotRenderAugmentationLabel","br1","br2","qualityButton","qualitySelect"];for(let l=0;l<n.length;l++){const a=document.getElementById(n[l]);a&&(a.style.display="none")}}this.fetchAndFindGameIdAndOffsetFromMediaId(this.options.gameId)}weHaveTheGameID(){this.frameDrawer=new io(this.video,this.options),this.options.renderingMode==Me.Augment&&this.frameDrawer.initializeComponents()}async getGlobalConfig(){const n=new URL(document.location).searchParams.get("config")||"";if(n!=="")try{const l=await fetch(n);if(!l.ok)throw new Error("Network response was not ok");const a=await l.json();typeof window.globalConfig>"u"&&(window.globalConfig={}),globalConfig=Object.assign({},a,window.globalConfig),console.log("final global config:",window.globalConfig)}catch(l){console.BBerror("Error fetching JSON:",l)}this.init()}async fetchAndFindGameIdAndOffsetFromMediaId(t){if(t="bbtest45",this.options.mediaIdJsonURL=="test"){this.weHaveTheGameID();return}try{const n=await fetch(this.options.mediaIdJsonURL+"/"+t);if(!n.ok)throw new Error(`HTTP error! Status: ${n.status}`);const l=await n.json();if(l.hasOwnProperty("GAME_ID")){console.log({jsonData:l});const a=l.GAME_ID;console.log(`GameId for mediaid= ${t}: ${a}`),this.options.gameId=a,this.weHaveTheGameID(),this.fetchOffsetForGameIdMediaID(this.options.gameId,t)}else console.BBerror(`MediaID ${t} not found in JSON.`),this.options.stopAugment=!0}catch(n){console.BBerror("Error fetching and processing GameId JSON:"+n)}}async fetchOffsetForGameIdMediaID(t,n){if(this.options.offsetJsonURL=="test")return 0;try{const l=await fetch(this.options.offsetJsonURL+"/"+t);l.ok||(console.log(`HTTP error! Status: ${l.status}`),setTimeout(()=>{this.fetchOffsetForGameIdMediaID(t,n)},5e3));const a=await l.json();if(a.hasOwnProperty("offset")&&a.hasOwnProperty("found")){const c=a.offset;a.found==!0&&(console.log(`Offset for gameid= ${t}: ${c}`),this.options.augmentation.offset=c,setTimeout(()=>{this.fetchOffsetForGameIdMediaID(t,n)},6e4))}else console.log(`offset for ${t} not found in JSON.`),setTimeout(()=>{this.fetchOffsetForGameIdMediaID(t,n)},5e3)}catch(l){console.BBerror("Error fetching and processing offset:",l),setTimeout(()=>{this.fetchOffsetForGameIdMediaID(t,n)},5e3)}}toggle(t){this.options.enabled=t}getCanvas(){return this.frameDrawer.getCanvas()}setFps(t){var n=t.value1;switch(n){case 59.94:case 6e4/1001:this.options.hls_fps=6e4/1001;break;case 29.97:case 3e4/1001:this.options.hls_fps=3e4/1001;break;default:console.error("Unsupported hls-src frame-rate: "+n+"fps"),this.options.hls_fps=n;break}}setSyncPoint(t){this.options.syncPoint=t}onNewSegment(t){this.frameDrawer.onNewSegmentForMetadata(t)}onNewMetadata(t){this.frameDrawer.onNewMetadata(t)}}return window.BB={MAX_LOGOS:4,RENDER_IN_WORKER:!0,OTTPlayer:Yi},Yi});
261
+ see: http://github.com/greggman/twgl.js for details */const bp={};{const l=bp;l[5120]=Int8Array,l[5121]=Uint8Array,l[5122]=Int16Array,l[5123]=Uint16Array,l[5124]=Int32Array,l[5125]=Uint32Array,l[5126]=Float32Array,l[32819]=Uint16Array,l[32820]=Uint16Array,l[33635]=Uint16Array,l[5131]=Uint16Array,l[33640]=Uint32Array,l[35899]=Uint32Array,l[35902]=Uint32Array,l[36269]=Uint32Array,l[34042]=Uint32Array}function ap(...l){console.error(...l)}const tp=function(){const l={},W={};function d(b){const t=b.constructor.name;if(!l[t]){for(const e in b)if(typeof b[e]=="number"){const n=W[b[e]];W[b[e]]=n?`${n} | ${e}`:e}l[t]=!0}}return function(t,e){return d(t),W[e]||(typeof e=="number"?`0x${e.toString(16)}`:e)}}(),mp=6406,Hm=6407,zm=6408,ep=6409,np=6410,cp=6402,ip=34041,Gp=33319,pp=33320,hp=6403,Rp=36244,Yp=36248,sp=36249,Xp={};{const l=Xp;l[mp]={numColorComponents:1},l[ep]={numColorComponents:1},l[np]={numColorComponents:2},l[Hm]={numColorComponents:3},l[zm]={numColorComponents:4},l[hp]={numColorComponents:1},l[Rp]={numColorComponents:1},l[Gp]={numColorComponents:2},l[pp]={numColorComponents:2},l[Hm]={numColorComponents:3},l[Yp]={numColorComponents:3},l[zm]={numColorComponents:4},l[sp]={numColorComponents:4},l[cp]={numColorComponents:1},l[ip]={numColorComponents:2}}const qb=ap;function op(l){return typeof document<"u"&&document.getElementById?document.getElementById(l):null}const up=35713,Np=35714,Fp=35632,Up=35633,Sp=35981,Mp=/ERROR:\s*\d+:(\d+)/gi;function Tp(l,W="",d=0){const b=[...W.matchAll(Mp)],t=new Map(b.map((e,n)=>{const i=parseInt(e[1]),h=b[n+1],G=h?h.index:W.length,p=W.substring(e.index,G);return[i-1,p]}));return l.split(`
262
+ `).map((e,n)=>{const i=t.get(n);return`${n+1+d}: ${e}${i?`
263
+
264
+ ^^^ ${i}`:""}`}).join(`
265
+ `)}const Im=/^[ \t]*\n/;function Em(l){let W=0;return Im.test(l)&&(W=1,l=l.replace(Im,"")),{lineOffset:W,shaderSource:l}}function rp(l,W,d,b){if(b=b||qb,!l.getShaderParameter(d,up)){const e=l.getShaderInfoLog(d),{lineOffset:n,shaderSource:i}=Em(l.getShaderSource(d)),h=`${Tp(i,e,n)}
266
+ Error compiling ${tp(l,W)}: ${e}`;return b(h),h}return""}function Lm(l,W,d){let b,t,e;if(typeof W=="function"&&(d=W,W=void 0),typeof l=="function")d=l,l=void 0;else if(l&&!Array.isArray(l)){const G=l;d=G.errorCallback,l=G.attribLocations,b=G.transformFeedbackVaryings,t=G.transformFeedbackMode,e=G.callback}const n=d||qb,i=[],h={errorCallback(G,...p){i.push(G),n(G,...p)},transformFeedbackVaryings:b,transformFeedbackMode:t,callback:e,errors:i};{let G={};Array.isArray(l)?l.forEach(function(p,s){G[p]=W?W[s]:s}):G=l||{},h.attribLocations=G}return h}const Jp=["VERTEX_SHADER","FRAGMENT_SHADER"];function kp(l,W){if(W.indexOf("frag")>=0)return Fp;if(W.indexOf("vert")>=0)return Up}function xp(l,W,d){const b=l.getAttachedShaders(W);for(const t of b)d.has(t)&&l.deleteShader(t);l.deleteProgram(W)}const yp=(l=0)=>new Promise(W=>setTimeout(W,l));function Hp(l,W,d){const b=l.createProgram(),{attribLocations:t,transformFeedbackVaryings:e,transformFeedbackMode:n}=Lm(d);for(let i=0;i<W.length;++i){let h=W[i];if(typeof h=="string"){const G=op(h),p=G?G.text:h;let s=l[Jp[i]];G&&G.type&&(s=kp(l,G.type)||s),h=l.createShader(s),l.shaderSource(h,Em(p).shaderSource),l.compileShader(h),l.attachShader(b,h)}}Object.entries(t).forEach(([i,h])=>l.bindAttribLocation(b,h,i));{let i=e;i&&(i.attribs&&(i=i.attribs),Array.isArray(i)||(i=Object.keys(i)),l.transformFeedbackVaryings(b,i,n||Sp))}return l.linkProgram(b),b}function zp(l,W,d,b,t){const e=Lm(d,b,t),n=new Set(W),i=Hp(l,W,e);function h(G,p){const s=Ep(G,p,e.errorCallback);return s&&xp(G,p,n),s}if(e.callback){Ip(l,i).then(()=>{const G=h(l,i);e.callback(G,G?void 0:i)});return}return h(l,i)?void 0:i}async function Ip(l,W){const d=l.getExtension("KHR_parallel_shader_compile"),b=d?(e,n)=>e.getProgramParameter(n,d.COMPLETION_STATUS_KHR):()=>!0;let t=0;do await yp(t),t=1e3/60;while(!b(l,W))}function Ep(l,W,d){if(d=d||qb,!l.getProgramParameter(W,Np)){const t=l.getProgramInfoLog(W);d(`Error in program linking: ${t}`);const n=l.getAttachedShaders(W).map(i=>rp(l,l.getShaderParameter(i,l.SHADER_TYPE),i,d));return`${t}
267
+ ${n.filter(i=>i).join(`
268
+ `)}`}}function wm(l,W,d,b,t){return zp(l,W,d,b,t)}const LW=(()=>{const l=()=>{const o=navigator.userAgent;return/windows/i.test(o)?"Windows":/android/i.test(o)?"Android":/iphone|ipad|ipod/i.test(o)?"iOS":/mac/i.test(o)?"Mac":/ipad/i.test(o)?"iPad":"Something else"},W=()=>l()=="Mac",d=()=>l()=="iPad",b=()=>l()=="iOS",t=()=>{let o=l();return o=="iOS"||o=="Mac"||o=="iPad"},e=()=>l()=="Windows",n=()=>l()=="Android",i=()=>{let o=l();return o=="Windows"?"a Windows PC":o=="Android"?"an Android phone":o=="iOS"?"an iPhone":o=="Mac"?"a Mac":o=="iPad"?"an iPad":"an Unknown device"},h=()=>({options:[],header:[navigator.platform,navigator.userAgent,navigator.appVersion,navigator.vendor,window.opera],dataos:[{name:"Windows Phone",value:"Windows Phone",version:"OS"},{name:"Windows",value:"Win",version:"NT"},{name:"iPhone",value:"iPhone",version:"OS"},{name:"iPad",value:"iPad",version:"OS"},{name:"Kindle",value:"Silk",version:"Silk"},{name:"Android",value:"Android",version:"Android"},{name:"PlayBook",value:"PlayBook",version:"OS"},{name:"BlackBerry",value:"BlackBerry",version:"/"},{name:"Macintosh",value:"Mac",version:"OS X"},{name:"Linux",value:"Linux",version:"rv"},{name:"Palm",value:"Palm",version:"PalmOS"}],databrowser:[{name:"Chrome",value:"Chrome",version:"Chrome"},{name:"Firefox",value:"Firefox",version:"Firefox"},{name:"Safari",value:"Safari",version:"Version"},{name:"Internet Explorer",value:"MSIE",version:"MSIE"},{name:"Opera",value:"Opera",version:"Opera"},{name:"BlackBerry",value:"CLDC",version:"CLDC"},{name:"Mozilla",value:"Mozilla",version:"Mozilla"}],init:function(){let M=this.header.join(" "),L=this.matchItem(M,this.dataos),J=this.matchItem(M,this.databrowser);return{os:L,browser:J}},matchItem:function(M,L){let J=0,w=0,K,x,z,I,k;for(J=0;J<L.length;J+=1)if(K=new RegExp(L[J].value,"i"),z=K.test(M),z){if(x=new RegExp(L[J].version+"[- /:;]([\\d._]+)","i"),I=M.match(x),k="",I&&I[1]&&(I=I[1]),I)for(I=I.split(/[._]+/),w=0;w<I.length;w+=1)w===0?k+=I[w]+".":k+=I[w];else k="0";return{name:L[J].name,version:parseFloat(k)}}return{name:"unknown",version:0}}}).init().os.name,G=()=>{const o=navigator.userAgent;return o.indexOf("Chrome")>-1&&o.indexOf("Edge")===-1?"Chrome":o.indexOf("Safari")>-1&&o.indexOf("Chrome")===-1?"Safari":o.indexOf("Firefox")>-1?"Firefox":o.indexOf("MSIE")>-1||o.indexOf("Trident")>-1?"Internet Explorer":o.indexOf("Edge")>-1?"Edge":"Unknown"};return{getDeviceName:h,getCurrentPlatform:l,isApple:t,isWindows:e,isAndroid:n,isMac:W,isiPhone:b,isiPad:d,getDeviceDescription:i,getBrowserName:G,isSafariMac:()=>W()&&G()=="Safari",isChromeMac:()=>W()&&G()=="Chrome",isChromeWin:()=>e()&&G()=="Chrome"}})(),nZ=l=>l.toString().padStart(2,"0"),$b=":",Xl=(l,W,d)=>{let b="";return Array.isArray(l)?(b=[nZ(l[0]),nZ(l[1]),nZ(l[2]),nZ(l[3])].join(":"),d==!0?l[4]==1&&(W===void 0||W)?b+=".2":b+=".1":l[4]==1&&(W===void 0||W)&&(b+=".1")):(b=("0"+l.h).slice(-2)+$b+("0"+l.m).slice(-2)+$b+("0"+l.s).slice(-2)+$b+("0"+l.f).slice(-2),W&&(b+="."+(l.field?"1":"2"))),b},jm=(l,W,d)=>{let b=60,t=0;Math.floor(W)==60?(b=60,t=0):Math.floor(W)==59?(b=60,t=4):Math.floor(W)==30?(b=30,t=0):Math.floor(W)==29&&(b=30,t=2);let e=0,i=Math.floor(W*60*10)*6,h=l[0],G=l[1],p=l[2],s=l[3],X=l[4];return e+=h*i,e+=G*(b*60),e+=p*b,e+=s*2+X,e-=t*G,e+=t*Math.floor(G/10),e},hl=(l,W,d)=>{let b=60,t=0;Math.floor(W)==60?(b=60,t=0):Math.floor(W)==59?(b=60,t=4):Math.floor(W)==30?(b=30,t=0):Math.floor(W)==29&&(b=30,t=2);let e=Math.floor(W*60),n=Math.floor(W*60*10),i=n*6,h=l,G=Math.floor(h/i);h-=G*i;let p=Math.floor(h/n);h-=p*n,h>=b*60&&(h+=t*(Math.floor((h-b*60)/e)+1));let s=Math.floor(h/(b*60));h-=s*(b*60);let X=Math.floor(h/b);h-=X*b;let o=h;s+=p*10;let r=0;return d&&(r=o%2,o=Math.floor(o/2)),[G,s,X,o,r]},Bm=l=>({h:l[0],m:l[1],s:l[2],f:l[3],field:l[4]}),Km=(l,W)=>(vm(l,W),Xl(tcFromMessage,!0)),vm=(l,W)=>{let d="";LW.isApple()?d=l:d=l.toISOString();let t=d.split("T")[1].split(":"),e=parseInt(t[0]),n=parseInt(t[1]),i=t[2].split("."),h=parseInt(i[0]),G=parseInt(i[1].substring(0,3));if(W>59){let p=Math.round((G/1e3+h+n*60+e*60*60)*W);return hl(p,W,!0)}else{let p=Math.round((G/1e3+h+n*60+e*60*60)*W);return hl(p,W,!1)}},gm=l=>(l&l-1)==0;var Jl={log:"log",debug:"debug",info:"info",warn:"warn",error:"error"},SV=console,iW={};Object.keys(Jl).forEach(function(l){iW[l]=SV[l]});var ud="Datadog Browser SDK:",xl={debug:iW.debug.bind(SV,ud),log:iW.log.bind(SV,ud),info:iW.info.bind(SV,ud),warn:iW.warn.bind(SV,ud),error:iW.error.bind(SV,ud)},la="https://docs.datadoghq.com",fm="".concat(la,"/real_user_monitoring/browser/troubleshooting"),cZ="More details:";function Cm(l,W){return function(){for(var d=[],b=0;b<arguments.length;b++)d[b]=arguments[b];try{return l.apply(void 0,d)}catch(t){xl.error(W,t)}}}function iZ(l){return l!==0&&Math.random()*100<=l}function Lp(l){return wp(l)&&l>=0&&l<=100}function wp(l){return typeof l=="number"}var Nd=1e3,GW=60*Nd,jp=60*GW;function Fd(){return new Date().getTime()}function DV(){return Fd()}function GZ(){return performance.now()}function OV(){return{relative:GZ(),timeStamp:DV()}}function Bp(){return{relative:0,timeStamp:Qm()}}function Kp(l,W){return W-l}function vp(l,W){return l+W}function gp(l){return l-Qm()}var Va;function Qm(){return Va===void 0&&(Va=performance.timing.navigationStart),Va}var xV=1024,Dm=1024*xV,fp=/[^\u0000-\u007F]/;function Wa(l){return fp.test(l)?window.TextEncoder!==void 0?new TextEncoder().encode(l).length:new Blob([l]).size:l.length}function wW(l,W){return l.indexOf(W)!==-1}function da(l){if(Array.from)return Array.from(l);var W=[];if(l instanceof Set)l.forEach(function(b){return W.push(b)});else for(var d=0;d<l.length;d++)W.push(l[d]);return W}function Cp(l,W){for(var d=0;d<l.length;d+=1){var b=l[d];if(W(b,d))return b}}function jW(l){return Object.keys(l).map(function(W){return l[W]})}function Qp(l){return Object.keys(l).map(function(W){return[W,l[W]]})}function Za(l,W){return l.slice(0,W.length)===W}function Dp(l,W){return l.slice(-W.length)===W}function Ll(l){for(var W=[],d=1;d<arguments.length;d++)W[d-1]=arguments[d];return W.forEach(function(b){for(var t in b)Object.prototype.hasOwnProperty.call(b,t)&&(l[t]=b[t])}),l}function Op(l){return Ll({},l)}function Om(l,W){return Object.keys(l).some(function(d){return l[d]===W})}function ba(l){return Object.keys(l).length===0}function PV(){if(typeof globalThis=="object")return globalThis;Object.defineProperty(Object.prototype,"_dd_temp_",{get:function(){return this},configurable:!0});var l=_dd_temp_;return delete Object.prototype._dd_temp_,typeof l!="object"&&(typeof self=="object"?l=self:typeof window=="object"?l=window:l={}),l}function BW(l,W){var d=PV(),b;return d.Zone&&typeof d.Zone.__symbol__=="function"&&(b=l[d.Zone.__symbol__(W)]),b||(b=l[W]),b}var Pp=function(l,W,d){if(d||arguments.length===2)for(var b=0,t=W.length,e;b<t;b++)(e||!(b in W))&&(e||(e=Array.prototype.slice.call(W,0,b)),e[b]=W[b]);return l.concat(e||Array.prototype.slice.call(W))},pZ,Pm=!1;function Ap(l){pZ=l}function _p(l){Pm=l}function qp(l,W,d){var b=d.value;d.value=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=pZ?cl(b):b;return n.apply(this,t)}}function cl(l){return function(){return Ud(l,this,arguments)}}function Ud(l,W,d){try{return l.apply(W,d)}catch(b){if(aa(b),pZ)try{pZ(b)}catch(t){aa(t)}}}function aa(){for(var l=[],W=0;W<arguments.length;W++)l[W]=arguments[W];Pm&&xl.error.apply(xl,Pp(["[MONITOR]"],l,!1))}function Sd(l,W){return BW(PV(),"setTimeout")(cl(l),W)}function Am(l){BW(PV(),"clearTimeout")(l)}function ta(l,W){return BW(PV(),"setInterval")(cl(l),W)}function _m(l){BW(PV(),"clearInterval")(l)}var Il=function(){function l(W){this.onFirstSubscribe=W,this.observers=[]}return l.prototype.subscribe=function(W){var d=this;return this.observers.push(W),this.observers.length===1&&this.onFirstSubscribe&&(this.onLastUnsubscribe=this.onFirstSubscribe(this)||void 0),{unsubscribe:function(){d.observers=d.observers.filter(function(b){return W!==b}),!d.observers.length&&d.onLastUnsubscribe&&d.onLastUnsubscribe()}}},l.prototype.notify=function(W){this.observers.forEach(function(d){return d(W)})},l}();function qm(){for(var l=[],W=0;W<arguments.length;W++)l[W]=arguments[W];return new Il(function(d){var b=l.map(function(t){return t.subscribe(function(e){return d.notify(e)})});return function(){return b.forEach(function(t){return t.unsubscribe()})}})}function $m(l,W,d){var b=!1,t,e;return{throttled:function(){for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];if(b){t=n;return}l.apply(void 0,n),b=!0,e=Sd(function(){t&&l.apply(void 0,t),b=!1,t=void 0},W)},cancel:function(){Am(e),b=!1,t=void 0}}}function AV(){}function pW(l){return l?(parseInt(l,10)^Math.random()*16>>parseInt(l,10)/4).toString(16):"".concat(1e7,"-").concat(1e3,"-").concat(4e3,"-").concat(8e3,"-").concat(1e11).replace(/[018]/g,pW)}var hZ=/([\w-]+)\s*=\s*([^;]+)/g;function $p(l,W){for(hZ.lastIndex=0;;){var d=hZ.exec(l);if(d){if(d[1]===W)return d[2]}else break}}function lh(l){var W=new Map;for(hZ.lastIndex=0;;){var d=hZ.exec(l);if(d)W.set(d[1],d[2]);else break}return W}function Vh(l,W,d){var b=l.charCodeAt(W-1),t=b>=55296&&b<=56319,e=t?W+1:W;return l.length<=e?l:"".concat(l.slice(0,e)).concat(d)}function Wh(){return dh()===1}var RZ;function dh(){return RZ??(RZ=Zh())}function Zh(l){var W;l===void 0&&(l=window);var d=l.navigator.userAgent;return l.chrome||/HeadlessChrome/.test(d)?1:((W=l.navigator.vendor)===null||W===void 0?void 0:W.indexOf("Apple"))===0||/safari/i.test(d)&&!/chrome|android/i.test(d)?2:l.document.documentMode?0:3}function Md(l,W,d,b){var t=new Date;t.setTime(t.getTime()+d);var e="expires=".concat(t.toUTCString()),n=b&&b.crossSite?"none":"strict",i=b&&b.domain?";domain=".concat(b.domain):"",h=b&&b.secure?";secure":"",G=b&&b.partitioned?";partitioned":"";document.cookie="".concat(l,"=").concat(W,";").concat(e,";path=/;samesite=").concat(n).concat(i).concat(h).concat(G)}function ma(l){return $p(document.cookie,l)}var ea;function hW(l){return ea||(ea=lh(document.cookie)),ea.get(l)}function le(l,W){Md(l,"",0,W)}function bh(l){if(document.cookie===void 0||document.cookie===null)return!1;try{var W="dd_cookie_test_".concat(pW()),d="test";Md(W,d,GW,l);var b=ma(W)===d;return le(W,l),b}catch(t){return xl.error(t),!1}}var na;function ah(){if(na===void 0){for(var l="dd_site_test_".concat(pW()),W="test",d=window.location.hostname.split("."),b=d.pop();d.length&&!ma(l);)b="".concat(d.pop(),".").concat(b),Md(l,W,Nd,{domain:b});le(l,{domain:b}),na=b}return na}var KW="_dd_s",ca=4*jp,Ve=15*GW,We=/^([a-zA-Z]+)=([a-z0-9-]+)$/,ia="&",th="1";function RW(){return{isExpired:th}}function YZ(l){return ba(l)}function de(l){return!YZ(l)}function sZ(l){return l.isExpired!==void 0||!mh(l)}function mh(l){return(l.created===void 0||Fd()-Number(l.created)<ca)&&(l.expire===void 0||Fd()<Number(l.expire))}function Ze(l){l.expire=String(Fd()+Ve)}function Ga(l){return Qp(l).map(function(W){var d=W[0],b=W[1];return"".concat(d,"=").concat(b)}).join(ia)}function be(l){var W={};return eh(l)&&l.split(ia).forEach(function(d){var b=We.exec(d);if(b!==null){var t=b[1],e=b[2];W[t]=e}}),W}function eh(l){return!!l&&(l.indexOf(ia)!==-1||We.test(l))}var nh="_dd",ch="_dd_r",ih="_dd_l",Gh="rum",ph="logs";function hh(l){var W=hW(KW);if(!W){var d=hW(nh),b=hW(ch),t=hW(ih),e={};d&&(e.id=d),t&&/^[01]$/.test(t)&&(e[ph]=t),b&&/^[012]$/.test(b)&&(e[Gh]=b),de(e)&&(Ze(e),l.persistSession(e))}}function Rh(l){var W=uh(l);return bh(W)?{type:"Cookie",cookieOptions:W}:void 0}function Yh(l){var W={isLockEnabled:Wh(),persistSession:sh(l),retrieveSession:oh,expireSession:function(){return Xh(l)}};return hh(W),W}function sh(l){return function(W){Md(KW,Ga(W),Ve,l)}}function Xh(l){Md(KW,Ga(RW()),ca,l)}function oh(){var l=ma(KW);return be(l)}function uh(l){var W={};return W.secure=!!l.useSecureSessionCookie||!!l.usePartitionedCrossSiteSessionCookie||!!l.useCrossSiteSessionCookie,W.crossSite=!!l.usePartitionedCrossSiteSessionCookie||!!l.useCrossSiteSessionCookie,W.partitioned=!!l.usePartitionedCrossSiteSessionCookie,l.trackSessionAcrossSubdomains&&(W.domain=ah()),W}var Nh="_dd_test_";function Fh(){try{var l=pW(),W="".concat(Nh).concat(l);localStorage.setItem(W,l);var d=localStorage.getItem(W);return localStorage.removeItem(W),l===d?{type:"LocalStorage"}:void 0}catch{return}}function Uh(){return{isLockEnabled:!1,persistSession:ae,retrieveSession:Sh,expireSession:Mh}}function ae(l){localStorage.setItem(KW,Ga(l))}function Sh(){var l=localStorage.getItem(KW);return be(l)}function Mh(){ae(RW())}var Th=10,rh=100,te=[],XZ;function YW(l,W,d){var b;d===void 0&&(d=0);var t=W.isLockEnabled,e=W.persistSession,n=W.expireSession,i=function(X){return e(Ll({},X,{lock:G}))},h=function(){var X=W.retrieveSession(),o=X.lock;return X.lock&&delete X.lock,{session:X,lock:o}};if(XZ||(XZ=l),l!==XZ){te.push(l);return}if(t&&d>=rh){me(W);return}var G,p=h();if(t){if(p.lock){oZ(l,W,d);return}if(G=pW(),i(p.session),p=h(),p.lock!==G){oZ(l,W,d);return}}var s=l.process(p.session);if(t&&(p=h(),p.lock!==G)){oZ(l,W,d);return}if(s&&(sZ(s)?n():(Ze(s),t?i(s):e(s))),t&&!(s&&sZ(s))){if(p=h(),p.lock!==G){oZ(l,W,d);return}e(p.session),s=p.session}(b=l.after)===null||b===void 0||b.call(l,s||p.session),me(W)}function oZ(l,W,d){Sd(function(){YW(l,W,d+1)},Th)}function me(l){XZ=void 0;var W=te.shift();W&&YW(W,l)}var ee=Nd;function Jh(l){var W=Rh(l);return!W&&l.allowFallbackToLocalStorage&&(W=Fh()),W}function kh(l,W,d){var b=new Il,t=new Il,e=new Il,n=l.type==="Cookie"?Yh(l.cookieOptions):Uh(),i=n.expireSession,h=ta(r,ee),G;L();var p=$m(function(){YW({process:function(k){if(!YZ(k)){var B=M(k);return J(B),B}},after:function(k){de(k)&&!w()&&z(k),G=k}},n)},ee),s=p.throttled,X=p.cancel;function o(){YW({process:function(k){return w()?M(k):void 0}},n)}function r(){YW({process:function(k){return sZ(k)?RW():void 0},after:M},n)}function M(k){return sZ(k)&&(k=RW()),w()&&(K(k)?x():(e.notify({previousState:G,newState:k}),G=k)),k}function L(){YW({process:function(k){if(YZ(k))return RW()},after:function(k){G=k}},n)}function J(k){if(YZ(k))return!1;var B=d(k[W]),C=B.trackingType,A=B.isTracked;k[W]=C,delete k.isExpired,A&&!k.id&&(k.id=pW(),k.created=String(Fd()))}function w(){return G[W]!==void 0}function K(k){return G.id!==k.id||G[W]!==k[W]}function x(){G=RW(),t.notify()}function z(k){G=k,b.notify()}function I(k){YW({process:function(B){return Ll({},B,k)},after:M},n)}return{expandOrRenewSession:s,expandSession:o,getSession:function(){return G},renewObservable:b,expireObservable:t,sessionStateUpdateObservable:e,restartSession:L,expire:function(){X(),i(),M(RW())},stop:function(){_m(h)},updateSessionState:I}}var pa={GRANTED:"granted",NOT_GRANTED:"not-granted"};function xh(l){var W=new Il;return{tryToInit:function(d){l||(l=d)},update:function(d){l=d,W.notify()},isGranted:function(){return l===pa.GRANTED},observable:W}}function sW(l,W,d){if(typeof l!="object"||l===null)return JSON.stringify(l);var b=vW(Object.prototype),t=vW(Array.prototype),e=vW(Object.getPrototypeOf(l)),n=vW(l);try{return JSON.stringify(l,W,d)}catch{return"<error: unable to serialize object>"}finally{b(),t(),e(),n()}}function vW(l){var W=l,d=W.toJSON;return d?(delete W.toJSON,function(){W.toJSON=d}):AV}function ha(l){return yh(l,location.href).href}function yh(l,W){var d=Hh();if(d)try{return W!==void 0?new d(l,W):new d(l)}catch(n){throw new Error("Failed to construct URL: ".concat(String(n)," ").concat(sW({url:l,base:W})))}if(W===void 0&&!/:/.test(l))throw new Error("Invalid URL: '".concat(l,"'"));var b=document,t=b.createElement("a");if(W!==void 0){b=document.implementation.createHTMLDocument("");var e=b.createElement("base");e.href=W,b.head.appendChild(e),b.body.appendChild(t)}return t.href=l,t}var ne=URL,uZ;function Hh(){if(uZ===void 0)try{var l=new ne("http://test/path");uZ=l.href==="http://test/path"}catch{uZ=!1}return uZ?ne:void 0}var zh="datad0g.com",Ih="dd0g-gov.com",XW="datadoghq.com",Eh="ddog-gov.com",ce="pci.browser-intake-datadoghq.com";function Td(l,W,d){var b=Lh(l,W);return{build:function(t,e){var n=jh(l,W,d,t,e);return b(n)},urlPrefix:b(""),trackType:W}}function Lh(l,W){var d="/api/v2/".concat(W),b=l.proxy;if(typeof b=="string"){var t=ha(b);return function(n){return"".concat(t,"?ddforward=").concat(encodeURIComponent("".concat(d,"?").concat(n)))}}if(typeof b=="function")return function(n){return b({path:d,parameters:n})};var e=wh(W,l);return function(n){return"https://".concat(e).concat(d,"?").concat(n)}}function wh(l,W){var d=W.site,b=d===void 0?XW:d,t=W.internalAnalyticsSubdomain;if(l==="logs"&&W.usePciIntake&&b===XW)return ce;if(t&&b===XW)return"".concat(t,".").concat(XW);if(b===Ih)return"http-intake.logs.".concat(b);var e=b.split("."),n=e.pop();return"browser-intake-".concat(e.join("-"),".").concat(n)}function jh(l,W,d,b,t){var e=l.clientToken,n=l.internalAnalyticsSubdomain,i=t.retry,h=t.encoding,G=["sdk_version:".concat("5.29.1"),"api:".concat(b)].concat(d);i&&G.push("retry_count:".concat(i.count),"retry_after:".concat(i.lastFailureStatus));var p=["ddsource=browser","ddtags=".concat(encodeURIComponent(G.join(","))),"dd-api-key=".concat(e),"dd-evp-origin-version=".concat(encodeURIComponent("5.29.1")),"dd-evp-origin=browser","dd-request-id=".concat(pW())];return h&&p.push("dd-evp-encoding=".concat(h)),W==="rum"&&p.push("batch_time=".concat(DV())),n&&p.reverse(),p.join("&")}var Bh=200;function Kh(l){var W=l.env,d=l.service,b=l.version,t=l.datacenter,e=[];return W&&e.push(NZ("env",W)),d&&e.push(NZ("service",d)),b&&e.push(NZ("version",b)),t&&e.push(NZ("datacenter",t)),e}function NZ(l,W){var d=Bh-l.length-1;(W.length>d||vh(W))&&xl.warn("".concat(l," value doesn't meet tag requirements and will be sanitized. ").concat(cZ," ").concat(la,"/getting_started/tagging/#defining-tags"));var b=W.replace(/,/g,"_");return"".concat(l,":").concat(b)}function vh(l){return gh()?new RegExp("[^\\p{Ll}\\p{Lo}0-9_:./-]","u").test(l):!1}function gh(){try{return new RegExp("[\\p{Ll}]","u"),!0}catch{return!1}}function fh(l){var W=l.site||XW,d=Kh(l),b=Ch(l,d),t=Dh(b,W),e=Qh(l,t,d);return Ll({isIntakeUrl:function(n){return t.some(function(i){return n.indexOf(i)===0})},replica:e,site:W},b)}function Ch(l,W){return{logsEndpointBuilder:Td(l,"logs",W),rumEndpointBuilder:Td(l,"rum",W),sessionReplayEndpointBuilder:Td(l,"replay",W)}}function Qh(l,W,d){if(l.replica){var b=Ll({},l,{site:XW,clientToken:l.replica.clientToken}),t={logsEndpointBuilder:Td(b,"logs",d),rumEndpointBuilder:Td(b,"rum",d)};return W.push.apply(W,jW(t).map(function(e){return e.urlPrefix})),Ll({applicationId:l.replica.applicationId},t)}}function Dh(l,W){var d=jW(l).map(function(b){return b.urlPrefix});return W===XW&&d.push("https://".concat(ce,"/")),d}function Ra(l,W){return l!=null&&typeof l!="string"?(xl.error("".concat(W," must be defined as a string")),!1):!0}function Oh(l){return l&&typeof l=="string"&&!/(datadog|ddog|datad0g|dd0g)/.test(l)?(xl.error("Site should be a valid Datadog site. ".concat(cZ," ").concat(la,"/getting_started/site/.")),!1):!0}function FZ(l,W){return l!==void 0&&!Lp(l)?(xl.error("".concat(W," Sample Rate should be a number between 0 and 100")),!1):!0}function Ph(l){var W,d,b,t,e;if(!l||!l.clientToken){xl.error("Client Token is not configured, we will not send any data.");return}if(!(!Oh(l.site)||!FZ(l.sessionSampleRate,"Session")||!FZ(l.telemetrySampleRate,"Telemetry")||!FZ(l.telemetryConfigurationSampleRate,"Telemetry Configuration")||!FZ(l.telemetryUsageSampleRate,"Telemetry Usage")||!Ra(l.version,"Version")||!Ra(l.env,"Env")||!Ra(l.service,"Service"))){if(l.trackingConsent!==void 0&&!Om(pa,l.trackingConsent)){xl.error('Tracking Consent should be either "granted" or "not-granted"');return}return Ll({beforeSend:l.beforeSend&&Cm(l.beforeSend,"beforeSend threw an error:"),sessionStoreStrategyType:Jh(l),sessionSampleRate:(W=l.sessionSampleRate)!==null&&W!==void 0?W:100,telemetrySampleRate:(d=l.telemetrySampleRate)!==null&&d!==void 0?d:20,telemetryConfigurationSampleRate:(b=l.telemetryConfigurationSampleRate)!==null&&b!==void 0?b:5,telemetryUsageSampleRate:(t=l.telemetryUsageSampleRate)!==null&&t!==void 0?t:5,service:l.service||void 0,silentMultipleInit:!!l.silentMultipleInit,allowUntrustedEvents:!!l.allowUntrustedEvents,trackingConsent:(e=l.trackingConsent)!==null&&e!==void 0?e:pa.GRANTED,storeContextsAcrossPages:!!l.storeContextsAcrossPages,batchBytesLimit:16*xV,eventRateLimiterThreshold:3e3,maxTelemetryEventsPerPage:15,flushTimeout:30*Nd,batchMessagesLimit:50,messageBytesLimit:256*xV},fh(l))}}function Ah(l){return{session_sample_rate:l.sessionSampleRate,telemetry_sample_rate:l.telemetrySampleRate,telemetry_configuration_sample_rate:l.telemetryConfigurationSampleRate,telemetry_usage_sample_rate:l.telemetryUsageSampleRate,use_before_send:!!l.beforeSend,use_cross_site_session_cookie:l.useCrossSiteSessionCookie,use_partitioned_cross_site_session_cookie:l.usePartitionedCrossSiteSessionCookie,use_secure_session_cookie:l.useSecureSessionCookie,use_proxy:!!l.proxy,silent_multiple_init:l.silentMultipleInit,track_session_across_subdomains:l.trackSessionAcrossSubdomains,allow_fallback_to_local_storage:!!l.allowFallbackToLocalStorage,store_contexts_across_pages:!!l.storeContextsAcrossPages,allow_untrusted_events:!!l.allowUntrustedEvents,tracking_consent:l.trackingConsent}}var Ya;(function(l){l.WRITABLE_RESOURCE_GRAPHQL="writable_resource_graphql",l.REMOTE_CONFIGURATION="remote_configuration",l.UPDATE_VIEW_NAME="update_view_name",l.LONG_ANIMATION_FRAME="long_animation_frame"})(Ya||(Ya={}));var ie=new Set;function _h(l){Array.isArray(l)&&qh(l.filter(function(W){return Om(Ya,W)}))}function qh(l){l.forEach(function(W){ie.add(W)})}function $h(){return ie}var rd="?";function yV(l){var W=[],d=sa(l,"stack"),b=String(l);return d&&Za(d,b)&&(d=d.slice(b.length)),d&&d.split(`
269
+ `).forEach(function(t){var e=W1(t)||Z1(t)||a1(t)||e1(t);e&&(!e.func&&e.line&&(e.func=rd),W.push(e))}),{message:sa(l,"message"),name:sa(l,"name"),stack:W}}var Ge="((?:file|https?|blob|chrome-extension|native|eval|webpack|snippet|<anonymous>|\\w+\\.|\\/).*?)",gW="(?::(\\d+))",l1=new RegExp("^\\s*at (.*?) ?\\(".concat(Ge).concat(gW,"?").concat(gW,"?\\)?\\s*$"),"i"),V1=new RegExp("\\((\\S*)".concat(gW).concat(gW,"\\)"));function W1(l){var W=l1.exec(l);if(W){var d=W[2]&&W[2].indexOf("native")===0,b=W[2]&&W[2].indexOf("eval")===0,t=V1.exec(W[2]);return b&&t&&(W[2]=t[1],W[3]=t[2],W[4]=t[3]),{args:d?[W[2]]:[],column:W[4]?+W[4]:void 0,func:W[1]||rd,line:W[3]?+W[3]:void 0,url:d?void 0:W[2]}}}var d1=new RegExp("^\\s*at ?".concat(Ge).concat(gW,"?").concat(gW,"??\\s*$"),"i");function Z1(l){var W=d1.exec(l);if(W)return{args:[],column:W[3]?+W[3]:void 0,func:rd,line:W[2]?+W[2]:void 0,url:W[1]}}var b1=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;function a1(l){var W=b1.exec(l);if(W)return{args:[],column:W[4]?+W[4]:void 0,func:W[1]||rd,line:+W[3],url:W[2]}}var t1=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,m1=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;function e1(l){var W=t1.exec(l);if(W){var d=W[3]&&W[3].indexOf(" > eval")>-1,b=m1.exec(W[3]);return d&&b&&(W[3]=b[1],W[4]=b[2],W[5]=void 0),{args:W[2]?W[2].split(","):[],column:W[5]?+W[5]:void 0,func:W[1]||rd,line:W[4]?+W[4]:void 0,url:W[3]}}}function sa(l,W){if(!(typeof l!="object"||!l||!(W in l))){var d=l[W];return typeof d=="string"?d:void 0}}function n1(l,W,d,b){var t=[{url:W,column:b,line:d}],e=i1(l),n=e.name,i=e.message;return{name:n,message:i,stack:t}}var c1=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\s\S]*)$/;function i1(l){var W,d,b;return{}.toString.call(l)==="[object String]"&&(W=c1.exec(l),d=W[1],b=W[2]),{name:d,message:b}}function UZ(){var l=2,W=new Error,d;if(!W.stack)try{throw W}catch{}return Ud(function(){var b=yV(W);b.stack=b.stack.slice(l),d=oW(b)}),d}function oW(l){var W=pe(l);return l.stack.forEach(function(d){var b=d.func==="?"?"<anonymous>":d.func,t=d.args&&d.args.length>0?"(".concat(d.args.join(", "),")"):"",e=d.line?":".concat(d.line):"",n=d.line&&d.column?":".concat(d.column):"";W+=`
270
+ at `.concat(b).concat(t," @ ").concat(d.url).concat(e).concat(n)}),W}function pe(l){return"".concat(l.name||"Error",": ").concat(l.message)}function uW(l,W,d,b){var t=b===void 0?{}:b,e=t.computeHandlingStack,n=l[W];if(typeof n!="function")if(W in l&&Za(W,"on"))n=AV;else return{stop:AV};var i=!1,h=function(){if(i)return n.apply(this,arguments);var G=da(arguments),p;Ud(d,null,[{target:this,parameters:G,onPostCall:function(X){p=X},handlingStack:e?UZ():void 0}]);var s=n.apply(this,G);return p&&Ud(p,null,[s]),s};return l[W]=h,{stop:function(){i=!0,l[W]===h&&(l[W]=n)}}}var G1=220*xV,p1="$",h1=3;function HV(l,W){W===void 0&&(W=G1);var d=vW(Object.prototype),b=vW(Array.prototype),t=[],e=new WeakMap,n=Xa(l,p1,void 0,t,e),i=JSON.stringify(n),h=i?i.length:0;if(h>W){oa(W,"discarded",l);return}for(;t.length>0&&h<W;){var G=t.shift(),p=0;if(Array.isArray(G.source))for(var s=0;s<G.source.length;s++){var X=Xa(G.source[s],G.path,s,t,e);if(X!==void 0?h+=JSON.stringify(X).length:h+=4,h+=p,p=1,h>W){oa(W,"truncated",l);break}G.target[s]=X}else for(var s in G.source)if(Object.prototype.hasOwnProperty.call(G.source,s)){var X=Xa(G.source[s],G.path,s,t,e);if(X!==void 0&&(h+=JSON.stringify(X).length+p+s.length+h1,p=1),h>W){oa(W,"truncated",l);break}G.target[s]=X}}return d(),b(),n}function Xa(l,W,d,b,t){var e=s1(l);if(!e||typeof e!="object")return R1(e);var n=Y1(e);if(n!=="[Object]"&&n!=="[Array]"&&n!=="[Error]")return n;var i=l;if(t.has(i))return"[Reference seen at ".concat(t.get(i),"]");var h=d!==void 0?"".concat(W,".").concat(d):W,G=Array.isArray(e)?[]:{};return t.set(i,h),b.push({source:e,target:G,path:h}),G}function R1(l){return typeof l=="bigint"?"[BigInt] ".concat(l.toString()):typeof l=="function"?"[Function] ".concat(l.name||"unknown"):typeof l=="symbol"?"[Symbol] ".concat(l.description||l.toString()):l}function Y1(l){try{if(l instanceof Event)return{isTrusted:l.isTrusted};var W=Object.prototype.toString.call(l),d=W.match(/\[object (.*)\]/);if(d&&d[1])return"[".concat(d[1],"]")}catch{}return"[Unserializable]"}function s1(l){var W=l;if(W&&typeof W.toJSON=="function")try{return W.toJSON()}catch{}return l}function oa(l,W,d){xl.warn("The data provided has been ".concat(W," as it is over the limit of ").concat(l," characters:"),d)}var he="No stack, consider using an instance of Error";function Re(l){var W=l.stackTrace,d=l.originalError,b=l.handlingStack,t=l.startClocks,e=l.nonErrorPrefix,n=l.source,i=l.handling,h=d instanceof Error,G=X1(W,h,e,d),p=o1(h,W)?oW(W):he,s=h?se(d,n):void 0,X=W?W.name:void 0,o=Ye(d);return{startClocks:t,source:n,handling:i,handlingStack:b,originalError:d,type:X,message:G,stack:p,causes:s,fingerprint:o}}function X1(l,W,d,b){return l!=null&&l.message&&(l!=null&&l.name)?l.message:W?"Empty message":"".concat(d," ").concat(sW(HV(b)))}function o1(l,W){return W===void 0?!1:l?!0:W.stack.length>0&&(W.stack.length>1||W.stack[0].url!==void 0)}function Ye(l){return l instanceof Error&&"dd_fingerprint"in l?String(l.dd_fingerprint):void 0}function u1(l){var W;return(W=/@ (.+)/.exec(l))===null||W===void 0?void 0:W[1]}function se(l,W){for(var d=l,b=[];(d==null?void 0:d.cause)instanceof Error&&b.length<10;){var t=yV(d.cause);b.push({message:d.cause.message,source:W,type:t==null?void 0:t.name,stack:t&&oW(t)}),d=d.cause}return b.length?b:void 0}var ql={AGENT:"agent",CONSOLE:"console",CUSTOM:"custom",LOGGER:"logger",NETWORK:"network",SOURCE:"source",REPORT:"report"};function N1(l){var W=function(t,e){var n=Re({stackTrace:t,originalError:e,startClocks:OV(),nonErrorPrefix:"Uncaught",source:ql.SOURCE,handling:"unhandled"});l.notify(n)},d=F1(W).stop,b=U1(W).stop;return{stop:function(){d(),b()}}}function F1(l){return uW(window,"onerror",function(W){var d=W.parameters,b=d[0],t=d[1],e=d[2],n=d[3],i=d[4],h;i instanceof Error?h=yV(i):h=n1(b,t,e,n),l(h,i??b)})}function U1(l){return uW(window,"onunhandledrejection",function(W){var d=W.parameters[0],b=d.reason||"Empty reason",t=yV(b);l(t,b)})}function S1(l){var W=Ll({version:"5.29.1",onReady:function(d){d()}},l);return Object.defineProperty(W,"_setDebug",{get:function(){return _p},enumerable:!1}),W}function M1(l,W,d){var b=l[W];b&&!b.q&&b.version&&xl.warn("SDK is loaded more than once. This is unsupported and might have unexpected behavior."),l[W]=d,b&&b.q&&b.q.forEach(function(t){return Cm(t,"onReady callback threw an error:")()})}function Xe(l,W){W.silentMultipleInit||xl.error("".concat(l," is already initialized."))}function NW(l,W,d,b,t){return ua(l,W,[d],b,t)}function ua(l,W,d,b,t){var e=t===void 0?{}:t,n=e.once,i=e.capture,h=e.passive,G=cl(function(o){!o.isTrusted&&!o.__ddIsTrusted&&!l.allowUntrustedEvents||(n&&X(),b(o))}),p=h?{capture:i,passive:h}:i,s=BW(W,"addEventListener");d.forEach(function(o){return s.call(W,o,G,p)});function X(){var o=BW(W,"removeEventListener");d.forEach(function(r){return o.call(W,r,G,p)})}return{stop:X}}var SZ={intervention:"intervention",deprecation:"deprecation",cspViolation:"csp_violation"};function T1(l,W){var d=[];wW(W,SZ.cspViolation)&&d.push(J1(l));var b=W.filter(function(t){return t!==SZ.cspViolation});return b.length&&d.push(r1(b)),qm.apply(void 0,d)}function r1(l){return new Il(function(W){if(window.ReportingObserver){var d=cl(function(t,e){return t.forEach(function(n){return W.notify(k1(n))})}),b=new window.ReportingObserver(d,{types:l,buffered:!0});return b.observe(),function(){b.disconnect()}}})}function J1(l){return new Il(function(W){var d=NW(l,document,"securitypolicyviolation",function(b){W.notify(x1(b))}).stop;return d})}function k1(l){var W=l.type,d=l.body;return oe({type:d.id,message:"".concat(W,": ").concat(d.message),originalError:l,stack:ue(d.id,d.message,d.sourceFile,d.lineNumber,d.columnNumber)})}function x1(l){var W="'".concat(l.blockedURI,"' blocked by '").concat(l.effectiveDirective,"' directive");return oe({type:l.effectiveDirective,message:"".concat(SZ.cspViolation,": ").concat(W),originalError:l,csp:{disposition:l.disposition},stack:ue(l.effectiveDirective,l.originalPolicy?"".concat(W,' of the policy "').concat(Vh(l.originalPolicy,100,"..."),'"'):"no policy",l.sourceFile,l.lineNumber,l.columnNumber)})}function oe(l){return Ll({startClocks:OV(),source:ql.REPORT,handling:"unhandled"},l)}function ue(l,W,d,b,t){return d?oW({name:l,message:W,stack:[{func:"?",url:d,line:b??void 0,column:t??void 0}]}):void 0}function Ne(l,W){var d=window.__ddBrowserSdkExtensionCallback;d&&d({type:l,payload:W})}function Na(l){return l===null?"null":Array.isArray(l)?"array":typeof l}function MZ(l,W,d){if(d===void 0&&(d=y1()),W===void 0)return l;if(typeof W!="object"||W===null)return W;if(W instanceof Date)return new Date(W.getTime());if(W instanceof RegExp){var b=W.flags||[W.global?"g":"",W.ignoreCase?"i":"",W.multiline?"m":"",W.sticky?"y":"",W.unicode?"u":""].join("");return new RegExp(W.source,b)}if(!d.hasAlreadyBeenSeen(W)){if(Array.isArray(W)){for(var t=Array.isArray(l)?l:[],e=0;e<W.length;++e)t[e]=MZ(t[e],W[e],d);return t}var n=Na(l)==="object"?l:{};for(var i in W)Object.prototype.hasOwnProperty.call(W,i)&&(n[i]=MZ(n[i],W[i],d));return n}}function Fe(l){return MZ(void 0,l)}function fW(){for(var l=[],W=0;W<arguments.length;W++)l[W]=arguments[W];for(var d,b=0,t=l;b<t.length;b++){var e=t[b];e!=null&&(d=MZ(d,e))}return d}function y1(){if(typeof WeakSet<"u"){var l=new WeakSet;return{hasAlreadyBeenSeen:function(d){var b=l.has(d);return b||l.add(d),b}}}var W=[];return{hasAlreadyBeenSeen:function(d){var b=W.indexOf(d)>=0;return b||W.push(d),b}}}function H1(){var l,W=window.navigator;return{status:W.onLine?"connected":"not_connected",interfaces:W.connection&&W.connection.type?[W.connection.type]:void 0,effective_type:(l=W.connection)===null||l===void 0?void 0:l.effectiveType}}function z1(l){var W=new Set;return l.forEach(function(d){return W.add(d)}),da(W)}function Ue(l,W){var d=l.indexOf(W);d>=0&&l.splice(d,1)}var I1=500;function Se(){var l=[],W=function(t){var e=l.push(t);e>I1&&l.splice(0,1)},d=function(t){Ue(l,t)},b=function(t){l.forEach(function(e){return e(t)}),l.length=0};return{add:W,remove:d,drain:b}}var FW={log:"log",configuration:"configuration",usage:"usage"},E1=["https://www.datadoghq-browser-agent.com","https://www.datad0g-browser-agent.com","https://d3uc069fcn7uxw.cloudfront.net","https://d20xtzwzcl0ceb.cloudfront.net","http://localhost","<anonymous>"],L1=[Eh],Me=Se(),CW=function(l){Me.add(function(){return CW(l)})};function w1(l,W){var d,b,t=new Il,e=new Set,n=!wW(L1,W.site)&&iZ(W.telemetrySampleRate),i=(d={},d[FW.log]=n,d[FW.configuration]=n&&iZ(W.telemetryConfigurationSampleRate),d[FW.usage]=n&&iZ(W.telemetryUsageSampleRate),d),h=j1();CW=function(p){var s=sW(p);if(i[p.type]&&e.size<W.maxTelemetryEventsPerPage&&!e.has(s)){var X=G(l,p,h);t.notify(X),Ne("telemetry",X),e.add(s)}},Ap(re);function G(p,s,X){return fW({type:"telemetry",date:DV(),service:p,version:"5.29.1",source:"browser",_dd:{format_version:2},telemetry:fW(s,{runtime_env:X,connectivity:H1(),sdk_setup:"npm"}),experimental_features:da($h())},b!==void 0?b():{})}return{setContextProvider:function(p){b=p},observable:t,enabled:n}}function j1(){return{is_local_file:window.location.protocol==="file:",is_worker:"WorkerGlobalScope"in self}}function B1(){Me.drain()}function K1(l){return l.site===zh}function Te(l,W){aa(Jl.debug,l,W),CW(Ll({type:FW.log,message:l,status:"debug"},W))}function re(l,W){CW(Ll({type:FW.log,status:"error"},f1(l),W))}function v1(l){CW({type:FW.configuration,configuration:l})}function g1(l){CW({type:FW.usage,usage:l})}function f1(l){if(l instanceof Error){var W=yV(l);return{error:{kind:W.name,stack:oW(C1(W))},message:W.message}}return{error:{stack:he},message:"".concat("Uncaught"," ").concat(sW(l))}}function C1(l){return l.stack=l.stack.filter(function(W){return!W.url||E1.some(function(d){return Za(W.url,d)})}),l}var TZ=1/0,Q1=GW;function D1(l){var W=l.expireDelay,d=l.maxEntries,b=[],t=ta(function(){return e()},Q1);function e(){for(var X=GZ()-W;b.length>0&&b[b.length-1].endTime<X;)b.pop()}function n(X,o){var r={value:X,startTime:o,endTime:TZ,remove:function(){Ue(b,r)},close:function(M){r.endTime=M}};return d&&b.length>=d&&b.pop(),b.unshift(r),r}function i(X,o){X===void 0&&(X=TZ),o===void 0&&(o={returnInactive:!1});for(var r=0,M=b;r<M.length;r++){var L=M[r];if(L.startTime<=X){if(o.returnInactive||X<=L.endTime)return L.value;break}}}function h(X){var o=b[0];o&&o.endTime===TZ&&o.close(X)}function G(X,o){X===void 0&&(X=TZ),o===void 0&&(o=0);var r=vp(X,o);return b.filter(function(M){return M.startTime<=r&&X<=M.endTime}).map(function(M){return M.value})}function p(){b=[]}function s(){_m(t)}return{add:n,find:i,closeActive:h,findAll:G,reset:p,stop:s}}var O1=GW,P1=ca;function A1(l,W,d,b){var t=new Il,e=new Il,n=kh(l.sessionStoreStrategyType,W,d),i=D1({expireDelay:P1});n.renewObservable.subscribe(function(){i.add(h(),GZ()),t.notify()}),n.expireObservable.subscribe(function(){e.notify(),i.closeActive(GZ())}),n.expandOrRenewSession(),i.add(h(),Bp().relative),b.observable.subscribe(function(){b.isGranted()?n.expandOrRenewSession():n.expire()}),_1(l,function(){b.isGranted()&&n.expandOrRenewSession()}),q1(l,function(){return n.expandSession()}),$1(l,function(){return n.restartSession()});function h(){return{id:n.getSession().id,trackingType:n.getSession()[W],isReplayForced:!!n.getSession().forcedReplay}}return{findSession:function(G,p){return i.find(G,p)},renewObservable:t,expireObservable:e,sessionStateUpdateObservable:n.sessionStateUpdateObservable,expire:n.expire,updateSessionState:n.updateSessionState}}function _1(l,W){ua(l,window,["click","touchstart","keydown","scroll"],W,{capture:!0,passive:!0}).stop}function q1(l,W){var d=function(){document.visibilityState==="visible"&&W()};NW(l,document,"visibilitychange",d).stop,ta(d,O1)}function $1(l,W){NW(l,window,"resume",W,{capture:!0}).stop}function Je(l){return l>=500}function lR(l){try{return l.clone()}catch{return}}var VR=80*xV,WR=32,ke=3*Dm,dR=GW,xe=Nd;function ye(l,W,d,b,t){W.transportStatus===0&&W.queuedPayloads.size()===0&&W.bandwidthMonitor.canHandle(l)?ze(l,W,d,{onSuccess:function(){return Ie(0,W,d,b,t)},onFailure:function(){W.queuedPayloads.enqueue(l),He(W,d,b,t)}}):W.queuedPayloads.enqueue(l)}function He(l,W,d,b){l.transportStatus===2&&Sd(function(){var t=l.queuedPayloads.first();ze(t,l,W,{onSuccess:function(){l.queuedPayloads.dequeue(),l.currentBackoffTime=xe,Ie(1,l,W,d,b)},onFailure:function(){l.currentBackoffTime=Math.min(dR,l.currentBackoffTime*2),He(l,W,d,b)}})},l.currentBackoffTime)}function ze(l,W,d,b){var t=b.onSuccess,e=b.onFailure;W.bandwidthMonitor.add(l),d(l,function(n){W.bandwidthMonitor.remove(l),ZR(n)?(W.transportStatus=W.bandwidthMonitor.ongoingRequestCount>0?1:2,l.retry={count:l.retry?l.retry.count+1:1,lastFailureStatus:n.status},e()):(W.transportStatus=0,t())})}function Ie(l,W,d,b,t){l===0&&W.queuedPayloads.isFull()&&!W.queueFullReported&&(t({message:"Reached max ".concat(b," events size queued for upload: ").concat(ke/Dm,"MiB"),source:ql.AGENT,startClocks:OV()}),W.queueFullReported=!0);var e=W.queuedPayloads;for(W.queuedPayloads=Ee();e.size()>0;)ye(e.dequeue(),W,d,b,t)}function ZR(l){return l.type!=="opaque"&&(l.status===0&&!navigator.onLine||l.status===408||l.status===429||Je(l.status))}function bR(){return{transportStatus:0,currentBackoffTime:xe,bandwidthMonitor:aR(),queuedPayloads:Ee(),queueFullReported:!1}}function Ee(){var l=[];return{bytesCount:0,enqueue:function(W){this.isFull()||(l.push(W),this.bytesCount+=W.bytesCount)},first:function(){return l[0]},dequeue:function(){var W=l.shift();return W&&(this.bytesCount-=W.bytesCount),W},size:function(){return l.length},isFull:function(){return this.bytesCount>=ke}}}function aR(){return{ongoingRequestCount:0,ongoingByteCount:0,canHandle:function(l){return this.ongoingRequestCount===0||this.ongoingByteCount+l.bytesCount<=VR&&this.ongoingRequestCount<WR},add:function(l){this.ongoingRequestCount+=1,this.ongoingByteCount+=l.bytesCount},remove:function(l){this.ongoingRequestCount-=1,this.ongoingByteCount-=l.bytesCount}}}function tR(l,W,d,b){var t=bR(),e=function(n,i){return nR(l,W,d,n,i)};return{send:function(n){ye(n,t,e,W.trackType,b)},sendOnExit:function(n){mR(l,W,d,n)}}}function mR(l,W,d,b){var t=!!navigator.sendBeacon&&b.bytesCount<d;if(t)try{var e=W.build("beacon",b),n=navigator.sendBeacon(e,b.data);if(n)return}catch(h){eR(h)}var i=W.build("xhr",b);Fa(l,i,b.data)}var Le=!1;function eR(l){Le||(Le=!0,re(l))}function nR(l,W,d,b,t){var e=cR()&&b.bytesCount<d;if(e){var n=W.build("fetch",b);fetch(n,{method:"POST",body:b.data,keepalive:!0,mode:"cors"}).then(cl(function(h){return t==null?void 0:t({status:h.status,type:h.type})}),cl(function(){var h=W.build("xhr",b);Fa(l,h,b.data,t)}))}else{var i=W.build("xhr",b);Fa(l,i,b.data,t)}}function cR(){try{return window.Request&&"keepalive"in new Request("http://a")}catch{return!1}}function Fa(l,W,d,b){var t=new XMLHttpRequest;t.open("POST",W,!0),d instanceof Blob&&t.setRequestHeader("Content-Type",d.type),NW(l,t,"loadend",function(){b==null||b({status:t.status})},{once:!0}),t.send(d)}function Ua(){var l=iR();if(l)return{getCapabilities:function(){var W;return JSON.parse(((W=l.getCapabilities)===null||W===void 0?void 0:W.call(l))||"[]")},getPrivacyLevel:function(){var W;return(W=l.getPrivacyLevel)===null||W===void 0?void 0:W.call(l)},getAllowedWebViewHosts:function(){return JSON.parse(l.getAllowedWebViewHosts())},send:function(W,d,b){var t=b?{id:b}:void 0;l.send(JSON.stringify({eventType:W,event:d,view:t}))}}}function rZ(l){var W;l===void 0&&(l=(W=PV().location)===null||W===void 0?void 0:W.hostname);var d=Ua();return!!d&&d.getAllowedWebViewHosts().some(function(b){return l===b||Dp(l,".".concat(b))})}function iR(){return PV().DatadogEventBridge}var JZ={HIDDEN:"visibility_hidden",UNLOADING:"before_unload",PAGEHIDE:"page_hide",FROZEN:"page_frozen"};function GR(l){return new Il(function(W){var d=ua(l,window,["visibilitychange","freeze"],function(t){t.type==="visibilitychange"&&document.visibilityState==="hidden"?W.notify({reason:JZ.HIDDEN}):t.type==="freeze"&&W.notify({reason:JZ.FROZEN})},{capture:!0}).stop,b=NW(l,window,"beforeunload",function(){W.notify({reason:JZ.UNLOADING})}).stop;return function(){d(),b()}})}function pR(l){return wW(jW(JZ),l)}function hR(l){var W=l.encoder,d=l.request,b=l.flushController,t=l.messageBytesLimit,e={},n=b.flushObservable.subscribe(function(X){return s(X)});function i(X,o,r){b.notifyBeforeAddMessage(o),r!==void 0?(e[r]=X,b.notifyAfterAddMessage()):W.write(W.isEmpty?X:`
271
+ `.concat(X),function(M){b.notifyAfterAddMessage(M-o)})}function h(X){return X!==void 0&&e[X]!==void 0}function G(X){var o=e[X];delete e[X];var r=W.estimateEncodedBytesCount(o);b.notifyAfterRemoveMessage(r)}function p(X,o){var r=sW(X),M=W.estimateEncodedBytesCount(r);if(M>=t){xl.warn("Discarded a message whose size was bigger than the maximum allowed size ".concat(t,"KB. ").concat(cZ," ").concat(fm,"/#technical-limitations"));return}h(o)&&G(o),i(r,M,o)}function s(X){var o=jW(e).join(`
272
+ `);e={};var r=pR(X.reason),M=r?d.sendOnExit:d.send;if(r&&W.isAsync){var L=W.finishSync();L.outputBytesCount&&M(we(L));var J=[L.pendingData,o].filter(Boolean).join(`
273
+ `);J&&M({data:J,bytesCount:Wa(J)})}else o&&W.write(W.isEmpty?o:`
274
+ `.concat(o)),W.finish(function(w){M(we(w))})}return{flushController:b,add:p,upsert:p,stop:n.unsubscribe}}function we(l){var W;return typeof l.output=="string"?W=l.output:W=new Blob([l.output],{type:"text/plain"}),{data:W,bytesCount:l.outputBytesCount,encoding:l.encoding}}function RR(l){var W=l.messagesLimit,d=l.bytesLimit,b=l.durationLimit,t=l.pageExitObservable,e=l.sessionExpireObservable,n=t.subscribe(function(M){return s(M.reason)}),i=e.subscribe(function(){return s("session_expire")}),h=new Il(function(){return function(){n.unsubscribe(),i.unsubscribe()}}),G=0,p=0;function s(M){if(p!==0){var L=p,J=G;p=0,G=0,r(),h.notify({reason:M,messagesCount:L,bytesCount:J})}}var X;function o(){X===void 0&&(X=Sd(function(){s("duration_limit")},b))}function r(){Am(X),X=void 0}return{flushObservable:h,get messagesCount(){return p},notifyBeforeAddMessage:function(M){G+M>=d&&s("bytes_limit"),p+=1,G+=M,o()},notifyAfterAddMessage:function(M){M===void 0&&(M=0),G+=M,p>=W?s("messages_limit"):G>=d&&s("bytes_limit")},notifyAfterRemoveMessage:function(M){G-=M,p-=1,p===0&&r()}}}function je(l,W,d,b,t,e,n){n===void 0&&(n=hR);var i=G(l,W),h=d&&G(l,d);function G(p,s){var X=s.endpoint,o=s.encoder;return n({encoder:o,request:tR(p,X,p.batchBytesLimit,b),flushController:RR({messagesLimit:p.batchMessagesLimit,bytesLimit:p.batchBytesLimit,durationLimit:p.flushTimeout,pageExitObservable:t,sessionExpireObservable:e}),messageBytesLimit:p.messageBytesLimit})}return{flushObservable:i.flushController.flushObservable,add:function(p,s){s===void 0&&(s=!0),i.add(p),h&&s&&h.add(d.transformMessage?d.transformMessage(p):p)},upsert:function(p,s){i.upsert(p,s),h&&h.upsert(d.transformMessage?d.transformMessage(p):p,s)},stop:function(){i.stop(),h&&h.stop()}}}function kZ(){var l="",W=0;return{isAsync:!1,get isEmpty(){return!l},write:function(d,b){var t=Wa(d);W+=t,l+=d,b&&b(t)},finish:function(d){d(this.finishSync())},finishSync:function(){var d={output:l,outputBytesCount:W,rawBytesCount:W,pendingData:""};return l="",W=0,d},estimateEncodedBytesCount:function(d){return d.length}}}var YR=function(){function l(){this.callbacks={}}return l.prototype.notify=function(W,d){var b=this.callbacks[W];b&&b.forEach(function(t){return t(d)})},l.prototype.subscribe=function(W,d){var b=this;return this.callbacks[W]||(this.callbacks[W]=[]),this.callbacks[W].push(d),{unsubscribe:function(){b.callbacks[W]=b.callbacks[W].filter(function(t){return d!==t})}}},l}();function sR(l,W,d){var b=0,t=!1;return{isLimitReached:function(){if(b===0&&Sd(function(){b=0},GW),b+=1,b<=W||t)return t=!1,!1;if(b===W+1){t=!0;try{d({message:"Reached max number of ".concat(l,"s by minute: ").concat(W),source:ql.AGENT,startClocks:OV()})}finally{t=!1}}return!0}}}var Sa,Ma=new WeakMap;function XR(l){return Sa||(Sa=oR(l)),Sa}function oR(l){return new Il(function(W){var d=uW(XMLHttpRequest.prototype,"open",uR).stop,b=uW(XMLHttpRequest.prototype,"send",function(e){NR(e,l,W)},{computeHandlingStack:!0}).stop,t=uW(XMLHttpRequest.prototype,"abort",FR).stop;return function(){d(),b(),t()}})}function uR(l){var W=l.target,d=l.parameters,b=d[0],t=d[1];Ma.set(W,{state:"open",method:String(b).toUpperCase(),url:ha(String(t))})}function NR(l,W,d){var b=l.target,t=l.handlingStack,e=Ma.get(b);if(e){var n=e;n.state="start",n.startClocks=OV(),n.isAborted=!1,n.xhr=b,n.handlingStack=t;var i=!1,h=uW(b,"onreadystatechange",function(){b.readyState===XMLHttpRequest.DONE&&G()}).stop,G=function(){if(p(),h(),!i){i=!0;var s=e;s.state="complete",s.duration=Kp(n.startClocks.timeStamp,DV()),s.status=b.status,d.notify(Op(s))}},p=NW(W,b,"loadend",G).stop;d.notify(n)}}function FR(l){var W=l.target,d=Ma.get(W);d&&(d.isAborted=!0)}var Ta;function Be(){return Ta||(Ta=UR()),Ta}function UR(){return new Il(function(l){if(window.fetch){var W=uW(window,"fetch",function(d){return SR(d,l)},{computeHandlingStack:!0}).stop;return W}})}function SR(l,W){var d=l.parameters,b=l.onPostCall,t=l.handlingStack,e=d[0],n=d[1],i=n&&n.method;i===void 0&&e instanceof Request&&(i=e.method);var h=i!==void 0?String(i).toUpperCase():"GET",G=e instanceof Request?e.url:ha(String(e)),p=OV(),s={state:"start",init:n,input:e,method:h,startClocks:p,url:G,handlingStack:t};W.notify(s),d[0]=s.input,d[1]=s.init,b(function(X){return MR(W,X,s)})}function MR(l,W,d){var b=d;function t(e){b.state="resolve",Ll(b,e),l.notify(b)}W.then(cl(function(e){t({response:e,responseType:e.type,status:e.status,isAborted:!1})}),cl(function(e){var n,i;t({status:0,isAborted:((i=(n=b.init)===null||n===void 0?void 0:n.signal)===null||i===void 0?void 0:i.aborted)||e instanceof DOMException&&e.code===DOMException.ABORT_ERR,error:e})}))}var ra={};function TR(l){var W=l.map(function(d){return ra[d]||(ra[d]=rR(d)),ra[d]});return qm.apply(void 0,W)}function rR(l){return new Il(function(W){var d=SV[l];return SV[l]=function(){for(var b=[],t=0;t<arguments.length;t++)b[t]=arguments[t];d.apply(console,b);var e=UZ();Ud(function(){W.notify(JR(b,l,e))})},function(){SV[l]=d}})}function JR(l,W,d){var b=l.map(function(n){return kR(n)}).join(" "),t;if(W===Jl.error){var e=Cp(l,function(n){return n instanceof Error});t={stack:e?oW(yV(e)):void 0,fingerprint:Ye(e),causes:e?se(e,"console"):void 0,startClocks:OV(),message:b,source:ql.CONSOLE,handling:"handled",handlingStack:d}}return{api:W,message:b,error:t,handlingStack:d}}function kR(l){return typeof l=="string"?HV(l):l instanceof Error?pe(yV(l)):sW(HV(l),void 0,2)}function Ja(l){var W={},d=new Il,b={getContext:function(){return Fe(W)},setContext:function(t){Na(t)==="object"?(W=HV(t),l&&l.updateCustomerData(W)):b.clearContext(),d.notify()},setContextProperty:function(t,e){W[t]=HV(e),l&&l.updateCustomerData(W),d.notify()},removeContextProperty:function(t){delete W[t],l&&l.updateCustomerData(W),d.notify()},clearContext:function(){W={},l&&l.resetCustomerData(),d.notify()},changeObservable:d};return b}var xR="_dd_c",yR=[];function Ke(l,W,d,b){var t=HR(d,b);yR.push(NW(l,window,"storage",function(h){var G=h.key;t===G&&e()})),W.changeObservable.subscribe(n),W.setContext(fW(i(),W.getContext()));function e(){W.setContext(i())}function n(){localStorage.setItem(t,JSON.stringify(W.getContext()))}function i(){var h=localStorage.getItem(t);return h!==null?JSON.parse(h):{}}}function HR(l,W){return"".concat(xR,"_").concat(l,"_").concat(W)}var zR=3*xV,IR=16*xV,ER=200;function LR(l){l===void 0&&(l=2);var W=new Map,d=!1;function b(t){if(t===void 0&&(t=0),!(d||l===0)){var e=l===2?zR:IR,n=t;W.forEach(function(i){n+=i.getBytesCount()}),n>e&&(wR(e),d=!0)}}return{createDetachedTracker:function(){var t=ve(function(){return b(t.getBytesCount())});return t},getOrCreateTracker:function(t){return W.has(t)||W.set(t,ve(b)),W.get(t)},setCompressionStatus:function(t){l===0&&(l=t,b())},getCompressionStatus:function(){return l},stop:function(){W.forEach(function(t){return t.stop()}),W.clear()}}}function ve(l){var W=0,d=$m(function(n){W=Wa(sW(n)),l()},ER),b=d.throttled,t=d.cancel,e=function(){t(),W=0};return{updateCustomerData:function(n){ba(n)?e():b(n)},resetCustomerData:e,getBytesCount:function(){return W},stop:function(){t()}}}function wR(l){xl.warn("Customer data exceeds the recommended ".concat(l/xV,"KiB threshold. ").concat(cZ," ").concat(fm,"/#customer-data-exceeds-the-recommended-threshold-warning"))}function jR(l,W,d){var b=l.getReader(),t=[],e=0;n();function n(){b.read().then(cl(function(h){if(h.done){i();return}t.push(h.value),e+=h.value.length,e>d.bytesLimit?i():n()}),cl(function(h){return W(h)}))}function i(){b.cancel().catch(AV);var h,G;{var p;if(t.length===1)p=t[0];else{p=new Uint8Array(e);var s=0;t.forEach(function(X){p.set(X,s),s+=X.length})}h=p.slice(0,d.bytesLimit),G=p.length>d.bytesLimit}W(void 0,h,G)}}var BR="datadog-synthetics-public-id",KR="datadog-synthetics-result-id",vR="datadog-synthetics-injects-rum";function ge(){return!!(window._DATADOG_SYNTHETICS_INJECTS_RUM||hW(vR))}function gR(){var l=window._DATADOG_SYNTHETICS_PUBLIC_ID||hW(BR);return typeof l=="string"?l:void 0}function fR(){var l=window._DATADOG_SYNTHETICS_RESULT_ID||hW(KR);return typeof l=="string"?l:void 0}function fe(l){var W=Ll({},l),d=["id","name","email"];return d.forEach(function(b){b in W&&(W[b]=String(W[b]))}),W}function CR(l){var W=Na(l)==="object";return W||xl.error("Unsupported user:",l),W}var hV;function xZ(l,W,d){var b=d.getHandler(),t=Array.isArray(b)?b:[b];return Ce[l]>=Ce[d.getLevel()]&&wW(t,W)}var q={ok:"ok",debug:"debug",info:"info",notice:"notice",warn:"warn",error:"error",critical:"critical",alert:"alert",emerg:"emerg"},Ce=(hV={},hV[q.ok]=0,hV[q.debug]=1,hV[q.info]=2,hV[q.notice]=4,hV[q.warn]=5,hV[q.error]=6,hV[q.critical]=7,hV[q.alert]=8,hV[q.emerg]=9,hV);function yZ(l,W){var d=W===void 0?{}:W,b=d.includeMessage,t=b===void 0?!1:b;return{stack:l.stack,kind:l.type,message:t?l.message:void 0,causes:l.causes,fingerprint:l.fingerprint,handling:l.handling}}var QR=function(l,W,d,b){var t=arguments.length,e=t<3?W:b===null?b=Object.getOwnPropertyDescriptor(W,d):b,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(l,W,d,b);else for(var i=l.length-1;i>=0;i--)(n=l[i])&&(e=(t<3?n(e):t>3?n(W,d,e):n(W,d))||e);return t>3&&e&&Object.defineProperty(W,d,e),e},Jd={console:"console",http:"http",silent:"silent"},DR=Object.keys(q),RV=function(){function l(W,d,b,t,e,n){t===void 0&&(t=Jd.http),e===void 0&&(e=q.debug),n===void 0&&(n={}),this.handleLogStrategy=W,this.handlerType=t,this.level=e,this.contextManager=Ja(d),this.contextManager.setContext(n),b&&this.contextManager.setContextProperty("logger",{name:b})}return l.prototype.logImplementation=function(W,d,b,t,e){b===void 0&&(b=q.info);var n=HV(d),i;if(t!=null){var h=Re({stackTrace:t instanceof Error?yV(t):void 0,originalError:t,nonErrorPrefix:"Provided",source:ql.LOGGER,handling:"handled",startClocks:OV()});i=fW({error:yZ(h,{includeMessage:!0})},n)}else i=n;this.handleLogStrategy({message:HV(W),context:i,status:b},this,e)},l.prototype.log=function(W,d,b,t){b===void 0&&(b=q.info);var e;xZ(b,Jd.http,this)&&(e=UZ()),this.logImplementation(W,d,b,t,e)},l.prototype.setContext=function(W){this.contextManager.setContext(W)},l.prototype.getContext=function(){return this.contextManager.getContext()},l.prototype.setContextProperty=function(W,d){this.contextManager.setContextProperty(W,d)},l.prototype.removeContextProperty=function(W){this.contextManager.removeContextProperty(W)},l.prototype.clearContext=function(){this.contextManager.clearContext()},l.prototype.setHandler=function(W){this.handlerType=W},l.prototype.getHandler=function(){return this.handlerType},l.prototype.setLevel=function(W){this.level=W},l.prototype.getLevel=function(){return this.level},QR([qp],l.prototype,"logImplementation",null),l}();RV.prototype.ok=zV(q.ok),RV.prototype.debug=zV(q.debug),RV.prototype.info=zV(q.info),RV.prototype.notice=zV(q.notice),RV.prototype.warn=zV(q.warn),RV.prototype.error=zV(q.error),RV.prototype.critical=zV(q.critical),RV.prototype.alert=zV(q.alert),RV.prototype.emerg=zV(q.emerg);function zV(l){return function(W,d,b){var t;xZ(l,Jd.http,this)&&(t=UZ()),this.logImplementation(W,d,l,b,t)}}function OR(l,W){return{view:{referrer:document.referrer,url:window.location.href},context:l.getContext(),user:W.getContext()}}var PR=32*xV;function AR(l){l.usePciIntake===!0&&l.site&&l.site!=="datadoghq.com"&&xl.warn("PCI compliance for Logs is only available for Datadog organizations in the US1 site. Default intake will be used.");var W=Ph(l),d=Qe(l.forwardConsoleLogs,jW(Jl),"Forward Console Logs"),b=Qe(l.forwardReports,jW(SZ),"Forward Reports");if(!(!W||!d||!b))return l.forwardErrorsToLogs&&!wW(d,Jl.error)&&d.push(Jl.error),Ll({forwardErrorsToLogs:l.forwardErrorsToLogs!==!1,forwardConsoleLogs:d,forwardReports:b,requestErrorResponseLengthLimit:PR,sendLogsAfterSessionExpiration:!!l.sendLogsAfterSessionExpiration},W)}function Qe(l,W,d){if(l===void 0)return[];if(!(l==="all"||Array.isArray(l)&&l.every(function(b){return wW(W,b)}))){xl.error("".concat(d,' should be "all" or an array with allowed values "').concat(W.join('", "'),'"'));return}return l==="all"?W:z1(l)}function _R(l){var W=Ah(l);return Ll({forward_errors_to_logs:l.forwardErrorsToLogs,forward_console_logs:l.forwardConsoleLogs,forward_reports:l.forwardReports,use_pci_intake:l.usePciIntake,send_logs_after_session_expiration:l.sendLogsAfterSessionExpiration},W)}function qR(l,W,d){var b=Se(),t,e,n=W.observable.subscribe(i);function i(){if(!(!e||!t||!W.isGranted())){n.unsubscribe();var h=d(t,e);b.drain(h)}}return{init:function(h){if(!h){xl.error("Missing configuration");return}if(_h(h.enableExperimentalFeatures),rZ()&&(h=$R(h)),t=h,e){Xe("DD_LOGS",h);return}var G=AR(h);G&&(e=G,Be().subscribe(AV),W.tryToInit(G.trackingConsent),i())},get initConfiguration(){return t},getInternalContext:AV,handleLog:function(h,G,p,s,X){s===void 0&&(s=l()),X===void 0&&(X=DV()),b.add(function(o){return o.handleLog(h,G,p,s,X)})}}}function $R(l){return Ll({},l,{clientToken:"empty"})}var De="logs";function lY(l){var W=LR(),d=Ja(W.getOrCreateTracker(2)),b=Ja(W.getOrCreateTracker(1)),t=xh();function e(){return OR(d,b)}var n=qR(e,t,function(G,p){G.storeContextsAcrossPages&&(Ke(p,d,De,2),Ke(p,b,De,1));var s=l(G,p,e,t);return n=VY(G,s),s}),i={},h=new RV(function(){for(var G=[],p=0;p<arguments.length;p++)G[p]=arguments[p];return n.handleLog.apply(n,G)},W.createDetachedTracker());return S1({logger:h,init:cl(function(G){return n.init(G)}),setTrackingConsent:cl(function(G){t.update(G),g1({feature:"set-tracking-consent",tracking_consent:G})}),getGlobalContext:cl(function(){return d.getContext()}),setGlobalContext:cl(function(G){return d.setContext(G)}),setGlobalContextProperty:cl(function(G,p){return d.setContextProperty(G,p)}),removeGlobalContextProperty:cl(function(G){return d.removeContextProperty(G)}),clearGlobalContext:cl(function(){return d.clearContext()}),createLogger:cl(function(G,p){return p===void 0&&(p={}),i[G]=new RV(function(){for(var s=[],X=0;X<arguments.length;X++)s[X]=arguments[X];return n.handleLog.apply(n,s)},W.createDetachedTracker(),HV(G),p.handler,p.level,HV(p.context)),i[G]}),getLogger:cl(function(G){return i[G]}),getInitConfiguration:cl(function(){return Fe(n.initConfiguration)}),getInternalContext:cl(function(G){return n.getInternalContext(G)}),setUser:cl(function(G){CR(G)&&b.setContext(fe(G))}),getUser:cl(function(){return b.getContext()}),setUserProperty:cl(function(G,p){var s,X=fe((s={},s[G]=p,s))[G];b.setContextProperty(G,X)}),removeUserProperty:cl(function(G){return b.removeContextProperty(G)}),clearUser:cl(function(){return b.clearContext()})})}function VY(l,W){return Ll({init:function(d){Xe("DD_LOGS",d)},initConfiguration:l},W)}var WY="logs";function dY(l,W){var d=A1(l,WY,function(b){return bY(l,b)},W);return{findTrackedSession:function(b,t){t===void 0&&(t={returnInactive:!1});var e=d.findSession(b,t);return e&&e.trackingType==="1"?{id:e.id}:void 0},expireObservable:d.expireObservable}}function ZY(l){var W=Oe(l)==="1",d=W?{}:void 0;return{findTrackedSession:function(){return d},expireObservable:new Il}}function Oe(l){return iZ(l.sessionSampleRate)?"1":"0"}function bY(l,W){var d=aY(W)?W:Oe(l);return{trackingType:d,isTracked:d==="1"}}function aY(l){return l==="0"||l==="1"}var Pe=!1;function HZ(l){var W=window;if(ge()){var d=b(W.DD_RUM_SYNTHETICS);return!d&&!Pe&&(Pe=!0,Te("Logs sent before RUM is injected by the synthetics worker",{testId:gR(),resultId:fR()})),d}return b(W.DD_RUM);function b(t){if(t&&t.getInternalContext)return t.getInternalContext(l)}}function tY(l,W,d,b,t){var e=DR.concat(["custom"]),n={};e.forEach(function(i){n[i]=sR(i,W.eventRateLimiterThreshold,t)}),d.subscribe(0,function(i){var h,G,p=i.rawLogsEvent,s=i.messageContext,X=s===void 0?void 0:s,o=i.savedCommonContext,r=o===void 0?void 0:o,M=i.domainContext,L=gp(p.date),J=l.findTrackedSession(L);if(!(!J&&(!W.sendLogsAfterSessionExpiration||!l.findTrackedSession(L,{returnInactive:!0})))){var w=r||b(),K=fW({service:W.service,session_id:J?J.id:void 0,usr:ba(w.user)?void 0:w.user,view:w.view},w.context,HZ(L),p,X);((h=W.beforeSend)===null||h===void 0?void 0:h.call(W,K,M))===!1||K.origin!==ql.AGENT&&((G=n[K.status])!==null&&G!==void 0?G:n.custom).isLimitReached()||d.notify(1,K)}})}var UW,mY=(UW={},UW[Jl.log]=q.info,UW[Jl.debug]=q.debug,UW[Jl.info]=q.info,UW[Jl.warn]=q.warn,UW[Jl.error]=q.error,UW);function eY(l,W){var d=TR(l.forwardConsoleLogs).subscribe(function(b){var t={rawLogsEvent:{date:DV(),message:b.message,origin:ql.CONSOLE,error:b.error&&yZ(b.error),status:mY[b.api]},domainContext:{handlingStack:b.handlingStack}};W.notify(0,t)});return{stop:function(){d.unsubscribe()}}}function nY(l,W){var d=T1(l,l.forwardReports).subscribe(function(b){var t=b.message,e,n=b.originalError.type==="deprecation"?q.warn:q.error;n===q.error?e=yZ(b):b.stack&&(t+=" Found in ".concat(u1(b.stack))),W.notify(0,{rawLogsEvent:{date:DV(),message:t,origin:ql.REPORT,error:e,status:n}})});return{stop:function(){d.unsubscribe()}}}function cY(l,W){if(!l.forwardErrorsToLogs)return{stop:AV};var d=XR(l).subscribe(function(e){e.state==="complete"&&t("xhr",e)}),b=Be().subscribe(function(e){e.state==="resolve"&&t("fetch",e)});function t(e,n){!l.isIntakeUrl(n.url)&&(hY(n)||Je(n.status))&&("xhr"in n?iY(n.xhr,l,i):n.response?pY(n.response,l,i):n.error&&GY(n.error,l,i));function i(h){var G={isAborted:n.isAborted,handlingStack:n.handlingStack};W.notify(0,{rawLogsEvent:{message:"".concat(RY(e)," error ").concat(n.method," ").concat(n.url),date:n.startClocks.timeStamp,error:{stack:h||"Failed to load",handling:void 0},http:{method:n.method,status_code:n.status,url:n.url},status:q.error,origin:ql.NETWORK},domainContext:G})}}return{stop:function(){d.unsubscribe(),b.unsubscribe()}}}function iY(l,W,d){typeof l.response=="string"?d(ka(l.response,W)):d(l.response)}function GY(l,W,d){d(ka(oW(yV(l)),W))}function pY(l,W,d){var b=lR(l);!b||!b.body?d():window.TextDecoder?YY(b.body,W.requestErrorResponseLengthLimit,function(t,e){d(t?"Unable to retrieve response: ".concat(t):e)}):b.text().then(cl(function(t){return d(ka(t,W))}),cl(function(t){return d("Unable to retrieve response: ".concat(t))}))}function hY(l){return l.status===0&&l.responseType!=="opaque"}function ka(l,W){return l.length>W.requestErrorResponseLengthLimit?"".concat(l.substring(0,W.requestErrorResponseLengthLimit),"..."):l}function RY(l){return l==="xhr"?"XHR":"Fetch"}function YY(l,W,d){jR(l,function(b,t,e){if(b)d(b);else{var n=new TextDecoder().decode(t);e&&(n+="..."),d(void 0,n)}},{bytesLimit:W,collectStreamBody:!0})}function sY(l,W){if(!l.forwardErrorsToLogs)return{stop:AV};var d=new Il,b=N1(d).stop,t=d.subscribe(function(e){W.notify(0,{rawLogsEvent:{message:e.message,date:e.startClocks.timeStamp,error:yZ(e),origin:ql.SOURCE,status:q.error}})});return{stop:function(){b(),t.unsubscribe()}}}var XY=YR,YV;function oY(l){function W(d,b,t,e,n){var i=fW(b.getContext(),d.context);if(xZ(d.status,Jd.console,b)&&NY(d,i),xZ(d.status,Jd.http,b)){var h={rawLogsEvent:{date:n||DV(),message:d.message,status:d.status,origin:ql.LOGGER},messageContext:i,savedCommonContext:e};t&&(h.domainContext={handlingStack:t}),l.notify(0,h)}}return{handleLog:W}}var uY=(YV={},YV[q.ok]=Jl.debug,YV[q.debug]=Jl.debug,YV[q.info]=Jl.info,YV[q.notice]=Jl.info,YV[q.warn]=Jl.warn,YV[q.error]=Jl.error,YV[q.critical]=Jl.error,YV[q.alert]=Jl.error,YV[q.emerg]=Jl.error,YV);function NY(l,W){var d=l.status,b=l.message;iW[uY[d]].call(SV,b,W)}function FY(l,W,d,b,t){var e=je(l,{endpoint:l.logsEndpointBuilder,encoder:kZ()},l.replica&&{endpoint:l.replica.logsEndpointBuilder,encoder:kZ()},d,b,t.expireObservable);return W.subscribe(1,function(n){e.add(n)}),e}function UY(l){var W=Ua();l.subscribe(1,function(d){W.send("log",d)})}function SY(l){return{get:function(W){var d=l.findTrackedSession(W);if(d)return{session_id:d.id}}}}function MY(l){return function(W){l.notify(0,{rawLogsEvent:{message:W.message,date:W.startClocks.timeStamp,origin:ql.AGENT,status:q.error}}),Te("Error reported to customer",{"error.message":W.message})}}function TY(l,W,d,b,t){var e=w1("browser-logs-sdk",W);e.setContextProvider(function(){var s,X,o,r,M,L;return{application:{id:(s=HZ())===null||s===void 0?void 0:s.application_id},session:{id:(X=t.findTrackedSession())===null||X===void 0?void 0:X.id},view:{id:(r=(o=HZ())===null||o===void 0?void 0:o.view)===null||r===void 0?void 0:r.id},action:{id:(L=(M=HZ())===null||M===void 0?void 0:M.user_action)===null||L===void 0?void 0:L.id}}});var n=[];if(rZ()){var i=Ua(),h=e.observable.subscribe(function(s){return i.send("internal_telemetry",s)});n.push(function(){return h.unsubscribe()})}else{var G=je(W,{endpoint:W.rumEndpointBuilder,encoder:kZ()},W.replica&&{endpoint:W.replica.rumEndpointBuilder,encoder:kZ()},d,b,t.expireObservable);n.push(function(){return G.stop()});var p=e.observable.subscribe(function(s){return G.add(s,K1(W))});n.push(function(){return p.unsubscribe()})}return B1(),v1(_R(l)),{telemetry:e,stop:function(){n.forEach(function(s){return s()})}}}function rY(l,W,d,b){var t=new XY,e=[];t.subscribe(1,function(o){return Ne("logs",o)});var n=MY(t),i=GR(W),h=W.sessionStoreStrategyType&&!rZ()&&!ge()?dY(W,b):ZY(W),G=TY(l,W,n,i,h).stop;e.push(function(){return G()}),cY(W,t),sY(W,t),eY(W,t),nY(W,t);var p=oY(t).handleLog;if(tY(h,W,t,d,n),rZ())UY(t);else{var s=FY(W,t,n,i,h).stop;e.push(function(){return s()})}var X=SY(h);return{handleLog:p,getInternalContext:X.get,stop:function(){e.forEach(function(o){return o()})}}}var kd=lY(rY);M1(PV(),"DD_LOGS",kd),kd.init({clientToken:"pub4844895ac30067ac2c4aaa025dbc39d7",site:"us3.datadoghq.com",forwardErrorsToLogs:!0,sessionSampleRate:100});const QW={Info:"info",Warn:"warn",Error:"error"},il=function(l,W){console.log("%cOTTPlayer: "+l,"color: #59acff"),xa()?postMessage({action:"log",payload:{status:QW.Info,message:"Web log: "+l,payload:W}}):kd.logger.info("Web log: "+l,W)},SW=function(l,W){console.log("%cOTTPlayer: "+l,"color: #b59400"),xa()?postMessage({action:"log",payload:{status:QW.Warn,message:l,payload:W}}):kd.logger.warn(l,W)},Ml=function(l,W){console.error("OTTPlayer: "+l),W&&console.error(W),xa()?postMessage({action:"log",payload:{status:QW.Error,message:l,payload:W}}):kd.logger.error(l,null,W)},Ae=l=>{const{message:W,payload:d,error:b}=l;switch(l.status){case QW.Info:il(W,d);break;case QW.Warn:SW(W,d);break;case QW.Error:Ml(W,b);break;default:SW("Unknown log type");break}},xa=()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope;var IV=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function _e(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}function JY(l){if(l.__esModule)return l;var W=l.default;if(typeof W=="function"){var d=function b(){return this instanceof b?Reflect.construct(W,arguments,this.constructor):W.apply(this,arguments)};d.prototype=W.prototype}else d={};return Object.defineProperty(d,"__esModule",{value:!0}),Object.keys(l).forEach(function(b){var t=Object.getOwnPropertyDescriptor(l,b);Object.defineProperty(d,b,t.get?t:{enumerable:!0,get:function(){return l[b]}})}),d}var zZ={exports:{}};/**
275
+ * @license
276
+ * Lodash <https://lodash.com/>
277
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
278
+ * Released under MIT license <https://lodash.com/license>
279
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
280
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
281
+ */zZ.exports,function(l,W){(function(){var d,b="4.17.21",t=200,e="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",n="Expected a function",i="Invalid `variable` option passed into `_.template`",h="__lodash_hash_undefined__",G=500,p="__lodash_placeholder__",s=1,X=2,o=4,r=1,M=2,L=1,J=2,w=4,K=8,x=16,z=32,I=64,k=128,B=256,C=512,A=30,Vl="...",dl=800,Fl=16,ul=1,Ul=2,EV=3,gl=1/0,VW=9007199254740991,NU=17976931348623157e292,bb=NaN,TV=4294967295,FU=TV-1,UU=TV>>>1,SU=[["ary",k],["bind",L],["bindKey",J],["curry",K],["curryRight",x],["flip",C],["partial",z],["partialRight",I],["rearg",B]],bd="[object Arguments]",ab="[object Array]",MU="[object AsyncFunction]",vd="[object Boolean]",gd="[object Date]",TU="[object DOMException]",tb="[object Error]",mb="[object Function]",rc="[object GeneratorFunction]",XV="[object Map]",fd="[object Number]",rU="[object Null]",LV="[object Object]",Jc="[object Promise]",JU="[object Proxy]",Cd="[object RegExp]",oV="[object Set]",Qd="[object String]",eb="[object Symbol]",kU="[object Undefined]",Dd="[object WeakMap]",xU="[object WeakSet]",Od="[object ArrayBuffer]",ad="[object DataView]",ct="[object Float32Array]",it="[object Float64Array]",Gt="[object Int8Array]",pt="[object Int16Array]",ht="[object Int32Array]",Rt="[object Uint8Array]",Yt="[object Uint8ClampedArray]",st="[object Uint16Array]",Xt="[object Uint32Array]",yU=/\b__p \+= '';/g,HU=/\b(__p \+=) '' \+/g,zU=/(__e\(.*?\)|\b__t\)) \+\n'';/g,kc=/&(?:amp|lt|gt|quot|#39);/g,xc=/[&<>"']/g,IU=RegExp(kc.source),EU=RegExp(xc.source),LU=/<%-([\s\S]+?)%>/g,wU=/<%([\s\S]+?)%>/g,yc=/<%=([\s\S]+?)%>/g,jU=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,BU=/^\w*$/,KU=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ot=/[\\^$.*+?()[\]{}|]/g,vU=RegExp(ot.source),ut=/^\s+/,gU=/\s/,fU=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,CU=/\{\n\/\* \[wrapped with (.+)\] \*/,QU=/,? & /,DU=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,OU=/[()=,{}\[\]\/\s]/,PU=/\\(\\)?/g,AU=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Hc=/\w*$/,_U=/^[-+]0x[0-9a-f]+$/i,qU=/^0b[01]+$/i,$U=/^\[object .+?Constructor\]$/,lS=/^0o[0-7]+$/i,VS=/^(?:0|[1-9]\d*)$/,WS=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,nb=/($^)/,dS=/['\n\r\u2028\u2029\\]/g,cb="\\ud800-\\udfff",ZS="\\u0300-\\u036f",bS="\\ufe20-\\ufe2f",aS="\\u20d0-\\u20ff",zc=ZS+bS+aS,Ic="\\u2700-\\u27bf",Ec="a-z\\xdf-\\xf6\\xf8-\\xff",tS="\\xac\\xb1\\xd7\\xf7",mS="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",eS="\\u2000-\\u206f",nS=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Lc="A-Z\\xc0-\\xd6\\xd8-\\xde",wc="\\ufe0e\\ufe0f",jc=tS+mS+eS+nS,Nt="['’]",cS="["+cb+"]",Bc="["+jc+"]",ib="["+zc+"]",Kc="\\d+",iS="["+Ic+"]",vc="["+Ec+"]",gc="[^"+cb+jc+Kc+Ic+Ec+Lc+"]",Ft="\\ud83c[\\udffb-\\udfff]",GS="(?:"+ib+"|"+Ft+")",fc="[^"+cb+"]",Ut="(?:\\ud83c[\\udde6-\\uddff]){2}",St="[\\ud800-\\udbff][\\udc00-\\udfff]",td="["+Lc+"]",Cc="\\u200d",Qc="(?:"+vc+"|"+gc+")",pS="(?:"+td+"|"+gc+")",Dc="(?:"+Nt+"(?:d|ll|m|re|s|t|ve))?",Oc="(?:"+Nt+"(?:D|LL|M|RE|S|T|VE))?",Pc=GS+"?",Ac="["+wc+"]?",hS="(?:"+Cc+"(?:"+[fc,Ut,St].join("|")+")"+Ac+Pc+")*",RS="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",YS="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",_c=Ac+Pc+hS,sS="(?:"+[iS,Ut,St].join("|")+")"+_c,XS="(?:"+[fc+ib+"?",ib,Ut,St,cS].join("|")+")",oS=RegExp(Nt,"g"),uS=RegExp(ib,"g"),Mt=RegExp(Ft+"(?="+Ft+")|"+XS+_c,"g"),NS=RegExp([td+"?"+vc+"+"+Dc+"(?="+[Bc,td,"$"].join("|")+")",pS+"+"+Oc+"(?="+[Bc,td+Qc,"$"].join("|")+")",td+"?"+Qc+"+"+Dc,td+"+"+Oc,YS,RS,Kc,sS].join("|"),"g"),FS=RegExp("["+Cc+cb+zc+wc+"]"),US=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,SS=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],MS=-1,sl={};sl[ct]=sl[it]=sl[Gt]=sl[pt]=sl[ht]=sl[Rt]=sl[Yt]=sl[st]=sl[Xt]=!0,sl[bd]=sl[ab]=sl[Od]=sl[vd]=sl[ad]=sl[gd]=sl[tb]=sl[mb]=sl[XV]=sl[fd]=sl[LV]=sl[Cd]=sl[oV]=sl[Qd]=sl[Dd]=!1;var Rl={};Rl[bd]=Rl[ab]=Rl[Od]=Rl[ad]=Rl[vd]=Rl[gd]=Rl[ct]=Rl[it]=Rl[Gt]=Rl[pt]=Rl[ht]=Rl[XV]=Rl[fd]=Rl[LV]=Rl[Cd]=Rl[oV]=Rl[Qd]=Rl[eb]=Rl[Rt]=Rl[Yt]=Rl[st]=Rl[Xt]=!0,Rl[tb]=Rl[mb]=Rl[Dd]=!1;var TS={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},rS={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},JS={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"},kS={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},xS=parseFloat,yS=parseInt,qc=typeof IV=="object"&&IV&&IV.Object===Object&&IV,HS=typeof self=="object"&&self&&self.Object===Object&&self,wl=qc||HS||Function("return this")(),Tt=W&&!W.nodeType&&W,rW=Tt&&!0&&l&&!l.nodeType&&l,$c=rW&&rW.exports===Tt,rt=$c&&qc.process,tV=function(){try{var F=rW&&rW.require&&rW.require("util").types;return F||rt&&rt.binding&&rt.binding("util")}catch{}}(),li=tV&&tV.isArrayBuffer,Vi=tV&&tV.isDate,Wi=tV&&tV.isMap,di=tV&&tV.isRegExp,Zi=tV&&tV.isSet,bi=tV&&tV.isTypedArray;function $l(F,T,S){switch(S.length){case 0:return F.call(T);case 1:return F.call(T,S[0]);case 2:return F.call(T,S[0],S[1]);case 3:return F.call(T,S[0],S[1],S[2])}return F.apply(T,S)}function zS(F,T,S,v){for(var P=-1,el=F==null?0:F.length;++P<el;){var Hl=F[P];T(v,Hl,S(Hl),F)}return v}function mV(F,T){for(var S=-1,v=F==null?0:F.length;++S<v&&T(F[S],S,F)!==!1;);return F}function IS(F,T){for(var S=F==null?0:F.length;S--&&T(F[S],S,F)!==!1;);return F}function ai(F,T){for(var S=-1,v=F==null?0:F.length;++S<v;)if(!T(F[S],S,F))return!1;return!0}function WW(F,T){for(var S=-1,v=F==null?0:F.length,P=0,el=[];++S<v;){var Hl=F[S];T(Hl,S,F)&&(el[P++]=Hl)}return el}function Gb(F,T){var S=F==null?0:F.length;return!!S&&md(F,T,0)>-1}function Jt(F,T,S){for(var v=-1,P=F==null?0:F.length;++v<P;)if(S(T,F[v]))return!0;return!1}function ol(F,T){for(var S=-1,v=F==null?0:F.length,P=Array(v);++S<v;)P[S]=T(F[S],S,F);return P}function dW(F,T){for(var S=-1,v=T.length,P=F.length;++S<v;)F[P+S]=T[S];return F}function kt(F,T,S,v){var P=-1,el=F==null?0:F.length;for(v&&el&&(S=F[++P]);++P<el;)S=T(S,F[P],P,F);return S}function ES(F,T,S,v){var P=F==null?0:F.length;for(v&&P&&(S=F[--P]);P--;)S=T(S,F[P],P,F);return S}function xt(F,T){for(var S=-1,v=F==null?0:F.length;++S<v;)if(T(F[S],S,F))return!0;return!1}var LS=yt("length");function wS(F){return F.split("")}function jS(F){return F.match(DU)||[]}function ti(F,T,S){var v;return S(F,function(P,el,Hl){if(T(P,el,Hl))return v=el,!1}),v}function pb(F,T,S,v){for(var P=F.length,el=S+(v?1:-1);v?el--:++el<P;)if(T(F[el],el,F))return el;return-1}function md(F,T,S){return T===T?_S(F,T,S):pb(F,mi,S)}function BS(F,T,S,v){for(var P=S-1,el=F.length;++P<el;)if(v(F[P],T))return P;return-1}function mi(F){return F!==F}function ei(F,T){var S=F==null?0:F.length;return S?zt(F,T)/S:bb}function yt(F){return function(T){return T==null?d:T[F]}}function Ht(F){return function(T){return F==null?d:F[T]}}function ni(F,T,S,v,P){return P(F,function(el,Hl,pl){S=v?(v=!1,el):T(S,el,Hl,pl)}),S}function KS(F,T){var S=F.length;for(F.sort(T);S--;)F[S]=F[S].value;return F}function zt(F,T){for(var S,v=-1,P=F.length;++v<P;){var el=T(F[v]);el!==d&&(S=S===d?el:S+el)}return S}function It(F,T){for(var S=-1,v=Array(F);++S<F;)v[S]=T(S);return v}function vS(F,T){return ol(T,function(S){return[S,F[S]]})}function ci(F){return F&&F.slice(0,hi(F)+1).replace(ut,"")}function lV(F){return function(T){return F(T)}}function Et(F,T){return ol(T,function(S){return F[S]})}function Pd(F,T){return F.has(T)}function ii(F,T){for(var S=-1,v=F.length;++S<v&&md(T,F[S],0)>-1;);return S}function Gi(F,T){for(var S=F.length;S--&&md(T,F[S],0)>-1;);return S}function gS(F,T){for(var S=F.length,v=0;S--;)F[S]===T&&++v;return v}var fS=Ht(TS),CS=Ht(rS);function QS(F){return"\\"+kS[F]}function DS(F,T){return F==null?d:F[T]}function ed(F){return FS.test(F)}function OS(F){return US.test(F)}function PS(F){for(var T,S=[];!(T=F.next()).done;)S.push(T.value);return S}function Lt(F){var T=-1,S=Array(F.size);return F.forEach(function(v,P){S[++T]=[P,v]}),S}function pi(F,T){return function(S){return F(T(S))}}function ZW(F,T){for(var S=-1,v=F.length,P=0,el=[];++S<v;){var Hl=F[S];(Hl===T||Hl===p)&&(F[S]=p,el[P++]=S)}return el}function hb(F){var T=-1,S=Array(F.size);return F.forEach(function(v){S[++T]=v}),S}function AS(F){var T=-1,S=Array(F.size);return F.forEach(function(v){S[++T]=[v,v]}),S}function _S(F,T,S){for(var v=S-1,P=F.length;++v<P;)if(F[v]===T)return v;return-1}function qS(F,T,S){for(var v=S+1;v--;)if(F[v]===T)return v;return v}function nd(F){return ed(F)?lM(F):LS(F)}function uV(F){return ed(F)?VM(F):wS(F)}function hi(F){for(var T=F.length;T--&&gU.test(F.charAt(T)););return T}var $S=Ht(JS);function lM(F){for(var T=Mt.lastIndex=0;Mt.test(F);)++T;return T}function VM(F){return F.match(Mt)||[]}function WM(F){return F.match(NS)||[]}var dM=function F(T){T=T==null?wl:cd.defaults(wl.Object(),T,cd.pick(wl,SS));var S=T.Array,v=T.Date,P=T.Error,el=T.Function,Hl=T.Math,pl=T.Object,wt=T.RegExp,ZM=T.String,eV=T.TypeError,Rb=S.prototype,bM=el.prototype,id=pl.prototype,Yb=T["__core-js_shared__"],sb=bM.toString,Gl=id.hasOwnProperty,aM=0,Ri=function(){var V=/[^.]+$/.exec(Yb&&Yb.keys&&Yb.keys.IE_PROTO||"");return V?"Symbol(src)_1."+V:""}(),Xb=id.toString,tM=sb.call(pl),mM=wl._,eM=wt("^"+sb.call(Gl).replace(ot,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ob=$c?T.Buffer:d,bW=T.Symbol,ub=T.Uint8Array,Yi=ob?ob.allocUnsafe:d,Nb=pi(pl.getPrototypeOf,pl),si=pl.create,Xi=id.propertyIsEnumerable,Fb=Rb.splice,oi=bW?bW.isConcatSpreadable:d,Ad=bW?bW.iterator:d,JW=bW?bW.toStringTag:d,Ub=function(){try{var V=zW(pl,"defineProperty");return V({},"",{}),V}catch{}}(),nM=T.clearTimeout!==wl.clearTimeout&&T.clearTimeout,cM=v&&v.now!==wl.Date.now&&v.now,iM=T.setTimeout!==wl.setTimeout&&T.setTimeout,Sb=Hl.ceil,Mb=Hl.floor,jt=pl.getOwnPropertySymbols,GM=ob?ob.isBuffer:d,ui=T.isFinite,pM=Rb.join,hM=pi(pl.keys,pl),zl=Hl.max,Kl=Hl.min,RM=v.now,YM=T.parseInt,Ni=Hl.random,sM=Rb.reverse,Bt=zW(T,"DataView"),_d=zW(T,"Map"),Kt=zW(T,"Promise"),Gd=zW(T,"Set"),qd=zW(T,"WeakMap"),$d=zW(pl,"create"),Tb=qd&&new qd,pd={},XM=IW(Bt),oM=IW(_d),uM=IW(Kt),NM=IW(Gd),FM=IW(qd),rb=bW?bW.prototype:d,lZ=rb?rb.valueOf:d,Fi=rb?rb.toString:d;function R(V){if(Sl(V)&&!_(V)&&!(V instanceof bl)){if(V instanceof nV)return V;if(Gl.call(V,"__wrapped__"))return UG(V)}return new nV(V)}var hd=function(){function V(){}return function(Z){if(!Nl(Z))return{};if(si)return si(Z);V.prototype=Z;var a=new V;return V.prototype=d,a}}();function Jb(){}function nV(V,Z){this.__wrapped__=V,this.__actions__=[],this.__chain__=!!Z,this.__index__=0,this.__values__=d}R.templateSettings={escape:LU,evaluate:wU,interpolate:yc,variable:"",imports:{_:R}},R.prototype=Jb.prototype,R.prototype.constructor=R,nV.prototype=hd(Jb.prototype),nV.prototype.constructor=nV;function bl(V){this.__wrapped__=V,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=TV,this.__views__=[]}function UM(){var V=new bl(this.__wrapped__);return V.__actions__=Ol(this.__actions__),V.__dir__=this.__dir__,V.__filtered__=this.__filtered__,V.__iteratees__=Ol(this.__iteratees__),V.__takeCount__=this.__takeCount__,V.__views__=Ol(this.__views__),V}function SM(){if(this.__filtered__){var V=new bl(this);V.__dir__=-1,V.__filtered__=!0}else V=this.clone(),V.__dir__*=-1;return V}function MM(){var V=this.__wrapped__.value(),Z=this.__dir__,a=_(V),m=Z<0,c=a?V.length:0,Y=wT(0,c,this.__views__),u=Y.start,N=Y.end,U=N-u,y=m?N:u-1,H=this.__iteratees__,E=H.length,j=0,g=Kl(U,this.__takeCount__);if(!a||!m&&c==U&&g==U)return Di(V,this.__actions__);var Q=[];l:for(;U--&&j<g;){y+=Z;for(var ll=-1,D=V[y];++ll<E;){var Zl=H[ll],tl=Zl.iteratee,dV=Zl.type,Ql=tl(D);if(dV==Ul)D=Ql;else if(!Ql){if(dV==ul)continue l;break l}}Q[j++]=D}return Q}bl.prototype=hd(Jb.prototype),bl.prototype.constructor=bl;function kW(V){var Z=-1,a=V==null?0:V.length;for(this.clear();++Z<a;){var m=V[Z];this.set(m[0],m[1])}}function TM(){this.__data__=$d?$d(null):{},this.size=0}function rM(V){var Z=this.has(V)&&delete this.__data__[V];return this.size-=Z?1:0,Z}function JM(V){var Z=this.__data__;if($d){var a=Z[V];return a===h?d:a}return Gl.call(Z,V)?Z[V]:d}function kM(V){var Z=this.__data__;return $d?Z[V]!==d:Gl.call(Z,V)}function xM(V,Z){var a=this.__data__;return this.size+=this.has(V)?0:1,a[V]=$d&&Z===d?h:Z,this}kW.prototype.clear=TM,kW.prototype.delete=rM,kW.prototype.get=JM,kW.prototype.has=kM,kW.prototype.set=xM;function wV(V){var Z=-1,a=V==null?0:V.length;for(this.clear();++Z<a;){var m=V[Z];this.set(m[0],m[1])}}function yM(){this.__data__=[],this.size=0}function HM(V){var Z=this.__data__,a=kb(Z,V);if(a<0)return!1;var m=Z.length-1;return a==m?Z.pop():Fb.call(Z,a,1),--this.size,!0}function zM(V){var Z=this.__data__,a=kb(Z,V);return a<0?d:Z[a][1]}function IM(V){return kb(this.__data__,V)>-1}function EM(V,Z){var a=this.__data__,m=kb(a,V);return m<0?(++this.size,a.push([V,Z])):a[m][1]=Z,this}wV.prototype.clear=yM,wV.prototype.delete=HM,wV.prototype.get=zM,wV.prototype.has=IM,wV.prototype.set=EM;function jV(V){var Z=-1,a=V==null?0:V.length;for(this.clear();++Z<a;){var m=V[Z];this.set(m[0],m[1])}}function LM(){this.size=0,this.__data__={hash:new kW,map:new(_d||wV),string:new kW}}function wM(V){var Z=vb(this,V).delete(V);return this.size-=Z?1:0,Z}function jM(V){return vb(this,V).get(V)}function BM(V){return vb(this,V).has(V)}function KM(V,Z){var a=vb(this,V),m=a.size;return a.set(V,Z),this.size+=a.size==m?0:1,this}jV.prototype.clear=LM,jV.prototype.delete=wM,jV.prototype.get=jM,jV.prototype.has=BM,jV.prototype.set=KM;function xW(V){var Z=-1,a=V==null?0:V.length;for(this.__data__=new jV;++Z<a;)this.add(V[Z])}function vM(V){return this.__data__.set(V,h),this}function gM(V){return this.__data__.has(V)}xW.prototype.add=xW.prototype.push=vM,xW.prototype.has=gM;function NV(V){var Z=this.__data__=new wV(V);this.size=Z.size}function fM(){this.__data__=new wV,this.size=0}function CM(V){var Z=this.__data__,a=Z.delete(V);return this.size=Z.size,a}function QM(V){return this.__data__.get(V)}function DM(V){return this.__data__.has(V)}function OM(V,Z){var a=this.__data__;if(a instanceof wV){var m=a.__data__;if(!_d||m.length<t-1)return m.push([V,Z]),this.size=++a.size,this;a=this.__data__=new jV(m)}return a.set(V,Z),this.size=a.size,this}NV.prototype.clear=fM,NV.prototype.delete=CM,NV.prototype.get=QM,NV.prototype.has=DM,NV.prototype.set=OM;function Ui(V,Z){var a=_(V),m=!a&&EW(V),c=!a&&!m&&nW(V),Y=!a&&!m&&!c&&Xd(V),u=a||m||c||Y,N=u?It(V.length,ZM):[],U=N.length;for(var y in V)(Z||Gl.call(V,y))&&!(u&&(y=="length"||c&&(y=="offset"||y=="parent")||Y&&(y=="buffer"||y=="byteLength"||y=="byteOffset")||gV(y,U)))&&N.push(y);return N}function Si(V){var Z=V.length;return Z?V[qt(0,Z-1)]:d}function PM(V,Z){return gb(Ol(V),yW(Z,0,V.length))}function AM(V){return gb(Ol(V))}function vt(V,Z,a){(a!==d&&!FV(V[Z],a)||a===d&&!(Z in V))&&BV(V,Z,a)}function VZ(V,Z,a){var m=V[Z];(!(Gl.call(V,Z)&&FV(m,a))||a===d&&!(Z in V))&&BV(V,Z,a)}function kb(V,Z){for(var a=V.length;a--;)if(FV(V[a][0],Z))return a;return-1}function _M(V,Z,a,m){return aW(V,function(c,Y,u){Z(m,c,a(c),u)}),m}function Mi(V,Z){return V&&JV(Z,El(Z),V)}function qM(V,Z){return V&&JV(Z,Al(Z),V)}function BV(V,Z,a){Z=="__proto__"&&Ub?Ub(V,Z,{configurable:!0,enumerable:!0,value:a,writable:!0}):V[Z]=a}function gt(V,Z){for(var a=-1,m=Z.length,c=S(m),Y=V==null;++a<m;)c[a]=Y?d:Fm(V,Z[a]);return c}function yW(V,Z,a){return V===V&&(a!==d&&(V=V<=a?V:a),Z!==d&&(V=V>=Z?V:Z)),V}function cV(V,Z,a,m,c,Y){var u,N=Z&s,U=Z&X,y=Z&o;if(a&&(u=c?a(V,m,c,Y):a(V)),u!==d)return u;if(!Nl(V))return V;var H=_(V);if(H){if(u=BT(V),!N)return Ol(V,u)}else{var E=vl(V),j=E==mb||E==rc;if(nW(V))return Ai(V,N);if(E==LV||E==bd||j&&!c){if(u=U||j?{}:hG(V),!N)return U?JT(V,qM(u,V)):rT(V,Mi(u,V))}else{if(!Rl[E])return c?V:{};u=KT(V,E,N)}}Y||(Y=new NV);var g=Y.get(V);if(g)return g;Y.set(V,u),fG(V)?V.forEach(function(D){u.add(cV(D,Z,a,D,V,Y))}):vG(V)&&V.forEach(function(D,Zl){u.set(Zl,cV(D,Z,a,Zl,V,Y))});var Q=y?U?em:mm:U?Al:El,ll=H?d:Q(V);return mV(ll||V,function(D,Zl){ll&&(Zl=D,D=V[Zl]),VZ(u,Zl,cV(D,Z,a,Zl,V,Y))}),u}function $M(V){var Z=El(V);return function(a){return Ti(a,V,Z)}}function Ti(V,Z,a){var m=a.length;if(V==null)return!m;for(V=pl(V);m--;){var c=a[m],Y=Z[c],u=V[c];if(u===d&&!(c in V)||!Y(u))return!1}return!0}function ri(V,Z,a){if(typeof V!="function")throw new eV(n);return mZ(function(){V.apply(d,a)},Z)}function WZ(V,Z,a,m){var c=-1,Y=Gb,u=!0,N=V.length,U=[],y=Z.length;if(!N)return U;a&&(Z=ol(Z,lV(a))),m?(Y=Jt,u=!1):Z.length>=t&&(Y=Pd,u=!1,Z=new xW(Z));l:for(;++c<N;){var H=V[c],E=a==null?H:a(H);if(H=m||H!==0?H:0,u&&E===E){for(var j=y;j--;)if(Z[j]===E)continue l;U.push(H)}else Y(Z,E,m)||U.push(H)}return U}var aW=VG(rV),Ji=VG(Ct,!0);function lT(V,Z){var a=!0;return aW(V,function(m,c,Y){return a=!!Z(m,c,Y),a}),a}function xb(V,Z,a){for(var m=-1,c=V.length;++m<c;){var Y=V[m],u=Z(Y);if(u!=null&&(N===d?u===u&&!WV(u):a(u,N)))var N=u,U=Y}return U}function VT(V,Z,a,m){var c=V.length;for(a=$(a),a<0&&(a=-a>c?0:c+a),m=m===d||m>c?c:$(m),m<0&&(m+=c),m=a>m?0:QG(m);a<m;)V[a++]=Z;return V}function ki(V,Z){var a=[];return aW(V,function(m,c,Y){Z(m,c,Y)&&a.push(m)}),a}function jl(V,Z,a,m,c){var Y=-1,u=V.length;for(a||(a=gT),c||(c=[]);++Y<u;){var N=V[Y];Z>0&&a(N)?Z>1?jl(N,Z-1,a,m,c):dW(c,N):m||(c[c.length]=N)}return c}var ft=WG(),xi=WG(!0);function rV(V,Z){return V&&ft(V,Z,El)}function Ct(V,Z){return V&&xi(V,Z,El)}function yb(V,Z){return WW(Z,function(a){return fV(V[a])})}function HW(V,Z){Z=mW(Z,V);for(var a=0,m=Z.length;V!=null&&a<m;)V=V[kV(Z[a++])];return a&&a==m?V:d}function yi(V,Z,a){var m=Z(V);return _(V)?m:dW(m,a(V))}function fl(V){return V==null?V===d?kU:rU:JW&&JW in pl(V)?LT(V):AT(V)}function Qt(V,Z){return V>Z}function WT(V,Z){return V!=null&&Gl.call(V,Z)}function dT(V,Z){return V!=null&&Z in pl(V)}function ZT(V,Z,a){return V>=Kl(Z,a)&&V<zl(Z,a)}function Dt(V,Z,a){for(var m=a?Jt:Gb,c=V[0].length,Y=V.length,u=Y,N=S(Y),U=1/0,y=[];u--;){var H=V[u];u&&Z&&(H=ol(H,lV(Z))),U=Kl(H.length,U),N[u]=!a&&(Z||c>=120&&H.length>=120)?new xW(u&&H):d}H=V[0];var E=-1,j=N[0];l:for(;++E<c&&y.length<U;){var g=H[E],Q=Z?Z(g):g;if(g=a||g!==0?g:0,!(j?Pd(j,Q):m(y,Q,a))){for(u=Y;--u;){var ll=N[u];if(!(ll?Pd(ll,Q):m(V[u],Q,a)))continue l}j&&j.push(Q),y.push(g)}}return y}function bT(V,Z,a,m){return rV(V,function(c,Y,u){Z(m,a(c),Y,u)}),m}function dZ(V,Z,a){Z=mW(Z,V),V=XG(V,Z);var m=V==null?V:V[kV(GV(Z))];return m==null?d:$l(m,V,a)}function Hi(V){return Sl(V)&&fl(V)==bd}function aT(V){return Sl(V)&&fl(V)==Od}function tT(V){return Sl(V)&&fl(V)==gd}function ZZ(V,Z,a,m,c){return V===Z?!0:V==null||Z==null||!Sl(V)&&!Sl(Z)?V!==V&&Z!==Z:mT(V,Z,a,m,ZZ,c)}function mT(V,Z,a,m,c,Y){var u=_(V),N=_(Z),U=u?ab:vl(V),y=N?ab:vl(Z);U=U==bd?LV:U,y=y==bd?LV:y;var H=U==LV,E=y==LV,j=U==y;if(j&&nW(V)){if(!nW(Z))return!1;u=!0,H=!1}if(j&&!H)return Y||(Y=new NV),u||Xd(V)?iG(V,Z,a,m,c,Y):IT(V,Z,U,a,m,c,Y);if(!(a&r)){var g=H&&Gl.call(V,"__wrapped__"),Q=E&&Gl.call(Z,"__wrapped__");if(g||Q){var ll=g?V.value():V,D=Q?Z.value():Z;return Y||(Y=new NV),c(ll,D,a,m,Y)}}return j?(Y||(Y=new NV),ET(V,Z,a,m,c,Y)):!1}function eT(V){return Sl(V)&&vl(V)==XV}function Ot(V,Z,a,m){var c=a.length,Y=c,u=!m;if(V==null)return!Y;for(V=pl(V);c--;){var N=a[c];if(u&&N[2]?N[1]!==V[N[0]]:!(N[0]in V))return!1}for(;++c<Y;){N=a[c];var U=N[0],y=V[U],H=N[1];if(u&&N[2]){if(y===d&&!(U in V))return!1}else{var E=new NV;if(m)var j=m(y,H,U,V,Z,E);if(!(j===d?ZZ(H,y,r|M,m,E):j))return!1}}return!0}function zi(V){if(!Nl(V)||CT(V))return!1;var Z=fV(V)?eM:$U;return Z.test(IW(V))}function nT(V){return Sl(V)&&fl(V)==Cd}function cT(V){return Sl(V)&&vl(V)==oV}function iT(V){return Sl(V)&&Pb(V.length)&&!!sl[fl(V)]}function Ii(V){return typeof V=="function"?V:V==null?_l:typeof V=="object"?_(V)?wi(V[0],V[1]):Li(V):dp(V)}function Pt(V){if(!tZ(V))return hM(V);var Z=[];for(var a in pl(V))Gl.call(V,a)&&a!="constructor"&&Z.push(a);return Z}function GT(V){if(!Nl(V))return PT(V);var Z=tZ(V),a=[];for(var m in V)m=="constructor"&&(Z||!Gl.call(V,m))||a.push(m);return a}function At(V,Z){return V<Z}function Ei(V,Z){var a=-1,m=Pl(V)?S(V.length):[];return aW(V,function(c,Y,u){m[++a]=Z(c,Y,u)}),m}function Li(V){var Z=cm(V);return Z.length==1&&Z[0][2]?YG(Z[0][0],Z[0][1]):function(a){return a===V||Ot(a,V,Z)}}function wi(V,Z){return Gm(V)&&RG(Z)?YG(kV(V),Z):function(a){var m=Fm(a,V);return m===d&&m===Z?Um(a,V):ZZ(Z,m,r|M)}}function Hb(V,Z,a,m,c){V!==Z&&ft(Z,function(Y,u){if(c||(c=new NV),Nl(Y))pT(V,Z,u,a,Hb,m,c);else{var N=m?m(hm(V,u),Y,u+"",V,Z,c):d;N===d&&(N=Y),vt(V,u,N)}},Al)}function pT(V,Z,a,m,c,Y,u){var N=hm(V,a),U=hm(Z,a),y=u.get(U);if(y){vt(V,a,y);return}var H=Y?Y(N,U,a+"",V,Z,u):d,E=H===d;if(E){var j=_(U),g=!j&&nW(U),Q=!j&&!g&&Xd(U);H=U,j||g||Q?_(N)?H=N:Tl(N)?H=Ol(N):g?(E=!1,H=Ai(U,!0)):Q?(E=!1,H=_i(U,!0)):H=[]:eZ(U)||EW(U)?(H=N,EW(N)?H=DG(N):(!Nl(N)||fV(N))&&(H=hG(U))):E=!1}E&&(u.set(U,H),c(H,U,m,Y,u),u.delete(U)),vt(V,a,H)}function ji(V,Z){var a=V.length;if(a)return Z+=Z<0?a:0,gV(Z,a)?V[Z]:d}function Bi(V,Z,a){Z.length?Z=ol(Z,function(Y){return _(Y)?function(u){return HW(u,Y.length===1?Y[0]:Y)}:Y}):Z=[_l];var m=-1;Z=ol(Z,lV(f()));var c=Ei(V,function(Y,u,N){var U=ol(Z,function(y){return y(Y)});return{criteria:U,index:++m,value:Y}});return KS(c,function(Y,u){return TT(Y,u,a)})}function hT(V,Z){return Ki(V,Z,function(a,m){return Um(V,m)})}function Ki(V,Z,a){for(var m=-1,c=Z.length,Y={};++m<c;){var u=Z[m],N=HW(V,u);a(N,u)&&bZ(Y,mW(u,V),N)}return Y}function RT(V){return function(Z){return HW(Z,V)}}function _t(V,Z,a,m){var c=m?BS:md,Y=-1,u=Z.length,N=V;for(V===Z&&(Z=Ol(Z)),a&&(N=ol(V,lV(a)));++Y<u;)for(var U=0,y=Z[Y],H=a?a(y):y;(U=c(N,H,U,m))>-1;)N!==V&&Fb.call(N,U,1),Fb.call(V,U,1);return V}function vi(V,Z){for(var a=V?Z.length:0,m=a-1;a--;){var c=Z[a];if(a==m||c!==Y){var Y=c;gV(c)?Fb.call(V,c,1):Vm(V,c)}}return V}function qt(V,Z){return V+Mb(Ni()*(Z-V+1))}function YT(V,Z,a,m){for(var c=-1,Y=zl(Sb((Z-V)/(a||1)),0),u=S(Y);Y--;)u[m?Y:++c]=V,V+=a;return u}function $t(V,Z){var a="";if(!V||Z<1||Z>VW)return a;do Z%2&&(a+=V),Z=Mb(Z/2),Z&&(V+=V);while(Z);return a}function Wl(V,Z){return Rm(sG(V,Z,_l),V+"")}function sT(V){return Si(od(V))}function XT(V,Z){var a=od(V);return gb(a,yW(Z,0,a.length))}function bZ(V,Z,a,m){if(!Nl(V))return V;Z=mW(Z,V);for(var c=-1,Y=Z.length,u=Y-1,N=V;N!=null&&++c<Y;){var U=kV(Z[c]),y=a;if(U==="__proto__"||U==="constructor"||U==="prototype")return V;if(c!=u){var H=N[U];y=m?m(H,U,N):d,y===d&&(y=Nl(H)?H:gV(Z[c+1])?[]:{})}VZ(N,U,y),N=N[U]}return V}var gi=Tb?function(V,Z){return Tb.set(V,Z),V}:_l,oT=Ub?function(V,Z){return Ub(V,"toString",{configurable:!0,enumerable:!1,value:Mm(Z),writable:!0})}:_l;function uT(V){return gb(od(V))}function iV(V,Z,a){var m=-1,c=V.length;Z<0&&(Z=-Z>c?0:c+Z),a=a>c?c:a,a<0&&(a+=c),c=Z>a?0:a-Z>>>0,Z>>>=0;for(var Y=S(c);++m<c;)Y[m]=V[m+Z];return Y}function NT(V,Z){var a;return aW(V,function(m,c,Y){return a=Z(m,c,Y),!a}),!!a}function zb(V,Z,a){var m=0,c=V==null?m:V.length;if(typeof Z=="number"&&Z===Z&&c<=UU){for(;m<c;){var Y=m+c>>>1,u=V[Y];u!==null&&!WV(u)&&(a?u<=Z:u<Z)?m=Y+1:c=Y}return c}return lm(V,Z,_l,a)}function lm(V,Z,a,m){var c=0,Y=V==null?0:V.length;if(Y===0)return 0;Z=a(Z);for(var u=Z!==Z,N=Z===null,U=WV(Z),y=Z===d;c<Y;){var H=Mb((c+Y)/2),E=a(V[H]),j=E!==d,g=E===null,Q=E===E,ll=WV(E);if(u)var D=m||Q;else y?D=Q&&(m||j):N?D=Q&&j&&(m||!g):U?D=Q&&j&&!g&&(m||!ll):g||ll?D=!1:D=m?E<=Z:E<Z;D?c=H+1:Y=H}return Kl(Y,FU)}function fi(V,Z){for(var a=-1,m=V.length,c=0,Y=[];++a<m;){var u=V[a],N=Z?Z(u):u;if(!a||!FV(N,U)){var U=N;Y[c++]=u===0?0:u}}return Y}function Ci(V){return typeof V=="number"?V:WV(V)?bb:+V}function VV(V){if(typeof V=="string")return V;if(_(V))return ol(V,VV)+"";if(WV(V))return Fi?Fi.call(V):"";var Z=V+"";return Z=="0"&&1/V==-gl?"-0":Z}function tW(V,Z,a){var m=-1,c=Gb,Y=V.length,u=!0,N=[],U=N;if(a)u=!1,c=Jt;else if(Y>=t){var y=Z?null:HT(V);if(y)return hb(y);u=!1,c=Pd,U=new xW}else U=Z?[]:N;l:for(;++m<Y;){var H=V[m],E=Z?Z(H):H;if(H=a||H!==0?H:0,u&&E===E){for(var j=U.length;j--;)if(U[j]===E)continue l;Z&&U.push(E),N.push(H)}else c(U,E,a)||(U!==N&&U.push(E),N.push(H))}return N}function Vm(V,Z){return Z=mW(Z,V),V=XG(V,Z),V==null||delete V[kV(GV(Z))]}function Qi(V,Z,a,m){return bZ(V,Z,a(HW(V,Z)),m)}function Ib(V,Z,a,m){for(var c=V.length,Y=m?c:-1;(m?Y--:++Y<c)&&Z(V[Y],Y,V););return a?iV(V,m?0:Y,m?Y+1:c):iV(V,m?Y+1:0,m?c:Y)}function Di(V,Z){var a=V;return a instanceof bl&&(a=a.value()),kt(Z,function(m,c){return c.func.apply(c.thisArg,dW([m],c.args))},a)}function Wm(V,Z,a){var m=V.length;if(m<2)return m?tW(V[0]):[];for(var c=-1,Y=S(m);++c<m;)for(var u=V[c],N=-1;++N<m;)N!=c&&(Y[c]=WZ(Y[c]||u,V[N],Z,a));return tW(jl(Y,1),Z,a)}function Oi(V,Z,a){for(var m=-1,c=V.length,Y=Z.length,u={};++m<c;){var N=m<Y?Z[m]:d;a(u,V[m],N)}return u}function dm(V){return Tl(V)?V:[]}function Zm(V){return typeof V=="function"?V:_l}function mW(V,Z){return _(V)?V:Gm(V,Z)?[V]:FG(nl(V))}var FT=Wl;function eW(V,Z,a){var m=V.length;return a=a===d?m:a,!Z&&a>=m?V:iV(V,Z,a)}var Pi=nM||function(V){return wl.clearTimeout(V)};function Ai(V,Z){if(Z)return V.slice();var a=V.length,m=Yi?Yi(a):new V.constructor(a);return V.copy(m),m}function bm(V){var Z=new V.constructor(V.byteLength);return new ub(Z).set(new ub(V)),Z}function UT(V,Z){var a=Z?bm(V.buffer):V.buffer;return new V.constructor(a,V.byteOffset,V.byteLength)}function ST(V){var Z=new V.constructor(V.source,Hc.exec(V));return Z.lastIndex=V.lastIndex,Z}function MT(V){return lZ?pl(lZ.call(V)):{}}function _i(V,Z){var a=Z?bm(V.buffer):V.buffer;return new V.constructor(a,V.byteOffset,V.length)}function qi(V,Z){if(V!==Z){var a=V!==d,m=V===null,c=V===V,Y=WV(V),u=Z!==d,N=Z===null,U=Z===Z,y=WV(Z);if(!N&&!y&&!Y&&V>Z||Y&&u&&U&&!N&&!y||m&&u&&U||!a&&U||!c)return 1;if(!m&&!Y&&!y&&V<Z||y&&a&&c&&!m&&!Y||N&&a&&c||!u&&c||!U)return-1}return 0}function TT(V,Z,a){for(var m=-1,c=V.criteria,Y=Z.criteria,u=c.length,N=a.length;++m<u;){var U=qi(c[m],Y[m]);if(U){if(m>=N)return U;var y=a[m];return U*(y=="desc"?-1:1)}}return V.index-Z.index}function $i(V,Z,a,m){for(var c=-1,Y=V.length,u=a.length,N=-1,U=Z.length,y=zl(Y-u,0),H=S(U+y),E=!m;++N<U;)H[N]=Z[N];for(;++c<u;)(E||c<Y)&&(H[a[c]]=V[c]);for(;y--;)H[N++]=V[c++];return H}function lG(V,Z,a,m){for(var c=-1,Y=V.length,u=-1,N=a.length,U=-1,y=Z.length,H=zl(Y-N,0),E=S(H+y),j=!m;++c<H;)E[c]=V[c];for(var g=c;++U<y;)E[g+U]=Z[U];for(;++u<N;)(j||c<Y)&&(E[g+a[u]]=V[c++]);return E}function Ol(V,Z){var a=-1,m=V.length;for(Z||(Z=S(m));++a<m;)Z[a]=V[a];return Z}function JV(V,Z,a,m){var c=!a;a||(a={});for(var Y=-1,u=Z.length;++Y<u;){var N=Z[Y],U=m?m(a[N],V[N],N,a,V):d;U===d&&(U=V[N]),c?BV(a,N,U):VZ(a,N,U)}return a}function rT(V,Z){return JV(V,im(V),Z)}function JT(V,Z){return JV(V,GG(V),Z)}function Eb(V,Z){return function(a,m){var c=_(a)?zS:_M,Y=Z?Z():{};return c(a,V,f(m,2),Y)}}function Rd(V){return Wl(function(Z,a){var m=-1,c=a.length,Y=c>1?a[c-1]:d,u=c>2?a[2]:d;for(Y=V.length>3&&typeof Y=="function"?(c--,Y):d,u&&Cl(a[0],a[1],u)&&(Y=c<3?d:Y,c=1),Z=pl(Z);++m<c;){var N=a[m];N&&V(Z,N,m,Y)}return Z})}function VG(V,Z){return function(a,m){if(a==null)return a;if(!Pl(a))return V(a,m);for(var c=a.length,Y=Z?c:-1,u=pl(a);(Z?Y--:++Y<c)&&m(u[Y],Y,u)!==!1;);return a}}function WG(V){return function(Z,a,m){for(var c=-1,Y=pl(Z),u=m(Z),N=u.length;N--;){var U=u[V?N:++c];if(a(Y[U],U,Y)===!1)break}return Z}}function kT(V,Z,a){var m=Z&L,c=aZ(V);function Y(){var u=this&&this!==wl&&this instanceof Y?c:V;return u.apply(m?a:this,arguments)}return Y}function dG(V){return function(Z){Z=nl(Z);var a=ed(Z)?uV(Z):d,m=a?a[0]:Z.charAt(0),c=a?eW(a,1).join(""):Z.slice(1);return m[V]()+c}}function Yd(V){return function(Z){return kt(Vp(lp(Z).replace(oS,"")),V,"")}}function aZ(V){return function(){var Z=arguments;switch(Z.length){case 0:return new V;case 1:return new V(Z[0]);case 2:return new V(Z[0],Z[1]);case 3:return new V(Z[0],Z[1],Z[2]);case 4:return new V(Z[0],Z[1],Z[2],Z[3]);case 5:return new V(Z[0],Z[1],Z[2],Z[3],Z[4]);case 6:return new V(Z[0],Z[1],Z[2],Z[3],Z[4],Z[5]);case 7:return new V(Z[0],Z[1],Z[2],Z[3],Z[4],Z[5],Z[6])}var a=hd(V.prototype),m=V.apply(a,Z);return Nl(m)?m:a}}function xT(V,Z,a){var m=aZ(V);function c(){for(var Y=arguments.length,u=S(Y),N=Y,U=sd(c);N--;)u[N]=arguments[N];var y=Y<3&&u[0]!==U&&u[Y-1]!==U?[]:ZW(u,U);if(Y-=y.length,Y<a)return mG(V,Z,Lb,c.placeholder,d,u,y,d,d,a-Y);var H=this&&this!==wl&&this instanceof c?m:V;return $l(H,this,u)}return c}function ZG(V){return function(Z,a,m){var c=pl(Z);if(!Pl(Z)){var Y=f(a,3);Z=El(Z),a=function(N){return Y(c[N],N,c)}}var u=V(Z,a,m);return u>-1?c[Y?Z[u]:u]:d}}function bG(V){return vV(function(Z){var a=Z.length,m=a,c=nV.prototype.thru;for(V&&Z.reverse();m--;){var Y=Z[m];if(typeof Y!="function")throw new eV(n);if(c&&!u&&Kb(Y)=="wrapper")var u=new nV([],!0)}for(m=u?m:a;++m<a;){Y=Z[m];var N=Kb(Y),U=N=="wrapper"?nm(Y):d;U&&pm(U[0])&&U[1]==(k|K|z|B)&&!U[4].length&&U[9]==1?u=u[Kb(U[0])].apply(u,U[3]):u=Y.length==1&&pm(Y)?u[N]():u.thru(Y)}return function(){var y=arguments,H=y[0];if(u&&y.length==1&&_(H))return u.plant(H).value();for(var E=0,j=a?Z[E].apply(this,y):H;++E<a;)j=Z[E].call(this,j);return j}})}function Lb(V,Z,a,m,c,Y,u,N,U,y){var H=Z&k,E=Z&L,j=Z&J,g=Z&(K|x),Q=Z&C,ll=j?d:aZ(V);function D(){for(var Zl=arguments.length,tl=S(Zl),dV=Zl;dV--;)tl[dV]=arguments[dV];if(g)var Ql=sd(D),ZV=gS(tl,Ql);if(m&&(tl=$i(tl,m,c,g)),Y&&(tl=lG(tl,Y,u,g)),Zl-=ZV,g&&Zl<y){var rl=ZW(tl,Ql);return mG(V,Z,Lb,D.placeholder,a,tl,rl,N,U,y-Zl)}var UV=E?a:this,QV=j?UV[V]:V;return Zl=tl.length,N?tl=_T(tl,N):Q&&Zl>1&&tl.reverse(),H&&U<Zl&&(tl.length=U),this&&this!==wl&&this instanceof D&&(QV=ll||aZ(QV)),QV.apply(UV,tl)}return D}function aG(V,Z){return function(a,m){return bT(a,V,Z(m),{})}}function wb(V,Z){return function(a,m){var c;if(a===d&&m===d)return Z;if(a!==d&&(c=a),m!==d){if(c===d)return m;typeof a=="string"||typeof m=="string"?(a=VV(a),m=VV(m)):(a=Ci(a),m=Ci(m)),c=V(a,m)}return c}}function am(V){return vV(function(Z){return Z=ol(Z,lV(f())),Wl(function(a){var m=this;return V(Z,function(c){return $l(c,m,a)})})})}function jb(V,Z){Z=Z===d?" ":VV(Z);var a=Z.length;if(a<2)return a?$t(Z,V):Z;var m=$t(Z,Sb(V/nd(Z)));return ed(Z)?eW(uV(m),0,V).join(""):m.slice(0,V)}function yT(V,Z,a,m){var c=Z&L,Y=aZ(V);function u(){for(var N=-1,U=arguments.length,y=-1,H=m.length,E=S(H+U),j=this&&this!==wl&&this instanceof u?Y:V;++y<H;)E[y]=m[y];for(;U--;)E[y++]=arguments[++N];return $l(j,c?a:this,E)}return u}function tG(V){return function(Z,a,m){return m&&typeof m!="number"&&Cl(Z,a,m)&&(a=m=d),Z=CV(Z),a===d?(a=Z,Z=0):a=CV(a),m=m===d?Z<a?1:-1:CV(m),YT(Z,a,m,V)}}function Bb(V){return function(Z,a){return typeof Z=="string"&&typeof a=="string"||(Z=pV(Z),a=pV(a)),V(Z,a)}}function mG(V,Z,a,m,c,Y,u,N,U,y){var H=Z&K,E=H?u:d,j=H?d:u,g=H?Y:d,Q=H?d:Y;Z|=H?z:I,Z&=~(H?I:z),Z&w||(Z&=~(L|J));var ll=[V,Z,c,g,E,Q,j,N,U,y],D=a.apply(d,ll);return pm(V)&&oG(D,ll),D.placeholder=m,uG(D,V,Z)}function tm(V){var Z=Hl[V];return function(a,m){if(a=pV(a),m=m==null?0:Kl($(m),292),m&&ui(a)){var c=(nl(a)+"e").split("e"),Y=Z(c[0]+"e"+(+c[1]+m));return c=(nl(Y)+"e").split("e"),+(c[0]+"e"+(+c[1]-m))}return Z(a)}}var HT=Gd&&1/hb(new Gd([,-0]))[1]==gl?function(V){return new Gd(V)}:Jm;function eG(V){return function(Z){var a=vl(Z);return a==XV?Lt(Z):a==oV?AS(Z):vS(Z,V(Z))}}function KV(V,Z,a,m,c,Y,u,N){var U=Z&J;if(!U&&typeof V!="function")throw new eV(n);var y=m?m.length:0;if(y||(Z&=~(z|I),m=c=d),u=u===d?u:zl($(u),0),N=N===d?N:$(N),y-=c?c.length:0,Z&I){var H=m,E=c;m=c=d}var j=U?d:nm(V),g=[V,Z,a,m,c,H,E,Y,u,N];if(j&&OT(g,j),V=g[0],Z=g[1],a=g[2],m=g[3],c=g[4],N=g[9]=g[9]===d?U?0:V.length:zl(g[9]-y,0),!N&&Z&(K|x)&&(Z&=~(K|x)),!Z||Z==L)var Q=kT(V,Z,a);else Z==K||Z==x?Q=xT(V,Z,N):(Z==z||Z==(L|z))&&!c.length?Q=yT(V,Z,a,m):Q=Lb.apply(d,g);var ll=j?gi:oG;return uG(ll(Q,g),V,Z)}function nG(V,Z,a,m){return V===d||FV(V,id[a])&&!Gl.call(m,a)?Z:V}function cG(V,Z,a,m,c,Y){return Nl(V)&&Nl(Z)&&(Y.set(Z,V),Hb(V,Z,d,cG,Y),Y.delete(Z)),V}function zT(V){return eZ(V)?d:V}function iG(V,Z,a,m,c,Y){var u=a&r,N=V.length,U=Z.length;if(N!=U&&!(u&&U>N))return!1;var y=Y.get(V),H=Y.get(Z);if(y&&H)return y==Z&&H==V;var E=-1,j=!0,g=a&M?new xW:d;for(Y.set(V,Z),Y.set(Z,V);++E<N;){var Q=V[E],ll=Z[E];if(m)var D=u?m(ll,Q,E,Z,V,Y):m(Q,ll,E,V,Z,Y);if(D!==d){if(D)continue;j=!1;break}if(g){if(!xt(Z,function(Zl,tl){if(!Pd(g,tl)&&(Q===Zl||c(Q,Zl,a,m,Y)))return g.push(tl)})){j=!1;break}}else if(!(Q===ll||c(Q,ll,a,m,Y))){j=!1;break}}return Y.delete(V),Y.delete(Z),j}function IT(V,Z,a,m,c,Y,u){switch(a){case ad:if(V.byteLength!=Z.byteLength||V.byteOffset!=Z.byteOffset)return!1;V=V.buffer,Z=Z.buffer;case Od:return!(V.byteLength!=Z.byteLength||!Y(new ub(V),new ub(Z)));case vd:case gd:case fd:return FV(+V,+Z);case tb:return V.name==Z.name&&V.message==Z.message;case Cd:case Qd:return V==Z+"";case XV:var N=Lt;case oV:var U=m&r;if(N||(N=hb),V.size!=Z.size&&!U)return!1;var y=u.get(V);if(y)return y==Z;m|=M,u.set(V,Z);var H=iG(N(V),N(Z),m,c,Y,u);return u.delete(V),H;case eb:if(lZ)return lZ.call(V)==lZ.call(Z)}return!1}function ET(V,Z,a,m,c,Y){var u=a&r,N=mm(V),U=N.length,y=mm(Z),H=y.length;if(U!=H&&!u)return!1;for(var E=U;E--;){var j=N[E];if(!(u?j in Z:Gl.call(Z,j)))return!1}var g=Y.get(V),Q=Y.get(Z);if(g&&Q)return g==Z&&Q==V;var ll=!0;Y.set(V,Z),Y.set(Z,V);for(var D=u;++E<U;){j=N[E];var Zl=V[j],tl=Z[j];if(m)var dV=u?m(tl,Zl,j,Z,V,Y):m(Zl,tl,j,V,Z,Y);if(!(dV===d?Zl===tl||c(Zl,tl,a,m,Y):dV)){ll=!1;break}D||(D=j=="constructor")}if(ll&&!D){var Ql=V.constructor,ZV=Z.constructor;Ql!=ZV&&"constructor"in V&&"constructor"in Z&&!(typeof Ql=="function"&&Ql instanceof Ql&&typeof ZV=="function"&&ZV instanceof ZV)&&(ll=!1)}return Y.delete(V),Y.delete(Z),ll}function vV(V){return Rm(sG(V,d,TG),V+"")}function mm(V){return yi(V,El,im)}function em(V){return yi(V,Al,GG)}var nm=Tb?function(V){return Tb.get(V)}:Jm;function Kb(V){for(var Z=V.name+"",a=pd[Z],m=Gl.call(pd,Z)?a.length:0;m--;){var c=a[m],Y=c.func;if(Y==null||Y==V)return c.name}return Z}function sd(V){var Z=Gl.call(R,"placeholder")?R:V;return Z.placeholder}function f(){var V=R.iteratee||Tm;return V=V===Tm?Ii:V,arguments.length?V(arguments[0],arguments[1]):V}function vb(V,Z){var a=V.__data__;return fT(Z)?a[typeof Z=="string"?"string":"hash"]:a.map}function cm(V){for(var Z=El(V),a=Z.length;a--;){var m=Z[a],c=V[m];Z[a]=[m,c,RG(c)]}return Z}function zW(V,Z){var a=DS(V,Z);return zi(a)?a:d}function LT(V){var Z=Gl.call(V,JW),a=V[JW];try{V[JW]=d;var m=!0}catch{}var c=Xb.call(V);return m&&(Z?V[JW]=a:delete V[JW]),c}var im=jt?function(V){return V==null?[]:(V=pl(V),WW(jt(V),function(Z){return Xi.call(V,Z)}))}:km,GG=jt?function(V){for(var Z=[];V;)dW(Z,im(V)),V=Nb(V);return Z}:km,vl=fl;(Bt&&vl(new Bt(new ArrayBuffer(1)))!=ad||_d&&vl(new _d)!=XV||Kt&&vl(Kt.resolve())!=Jc||Gd&&vl(new Gd)!=oV||qd&&vl(new qd)!=Dd)&&(vl=function(V){var Z=fl(V),a=Z==LV?V.constructor:d,m=a?IW(a):"";if(m)switch(m){case XM:return ad;case oM:return XV;case uM:return Jc;case NM:return oV;case FM:return Dd}return Z});function wT(V,Z,a){for(var m=-1,c=a.length;++m<c;){var Y=a[m],u=Y.size;switch(Y.type){case"drop":V+=u;break;case"dropRight":Z-=u;break;case"take":Z=Kl(Z,V+u);break;case"takeRight":V=zl(V,Z-u);break}}return{start:V,end:Z}}function jT(V){var Z=V.match(CU);return Z?Z[1].split(QU):[]}function pG(V,Z,a){Z=mW(Z,V);for(var m=-1,c=Z.length,Y=!1;++m<c;){var u=kV(Z[m]);if(!(Y=V!=null&&a(V,u)))break;V=V[u]}return Y||++m!=c?Y:(c=V==null?0:V.length,!!c&&Pb(c)&&gV(u,c)&&(_(V)||EW(V)))}function BT(V){var Z=V.length,a=new V.constructor(Z);return Z&&typeof V[0]=="string"&&Gl.call(V,"index")&&(a.index=V.index,a.input=V.input),a}function hG(V){return typeof V.constructor=="function"&&!tZ(V)?hd(Nb(V)):{}}function KT(V,Z,a){var m=V.constructor;switch(Z){case Od:return bm(V);case vd:case gd:return new m(+V);case ad:return UT(V,a);case ct:case it:case Gt:case pt:case ht:case Rt:case Yt:case st:case Xt:return _i(V,a);case XV:return new m;case fd:case Qd:return new m(V);case Cd:return ST(V);case oV:return new m;case eb:return MT(V)}}function vT(V,Z){var a=Z.length;if(!a)return V;var m=a-1;return Z[m]=(a>1?"& ":"")+Z[m],Z=Z.join(a>2?", ":" "),V.replace(fU,`{
282
+ /* [wrapped with `+Z+`] */
283
+ `)}function gT(V){return _(V)||EW(V)||!!(oi&&V&&V[oi])}function gV(V,Z){var a=typeof V;return Z=Z??VW,!!Z&&(a=="number"||a!="symbol"&&VS.test(V))&&V>-1&&V%1==0&&V<Z}function Cl(V,Z,a){if(!Nl(a))return!1;var m=typeof Z;return(m=="number"?Pl(a)&&gV(Z,a.length):m=="string"&&Z in a)?FV(a[Z],V):!1}function Gm(V,Z){if(_(V))return!1;var a=typeof V;return a=="number"||a=="symbol"||a=="boolean"||V==null||WV(V)?!0:BU.test(V)||!jU.test(V)||Z!=null&&V in pl(Z)}function fT(V){var Z=typeof V;return Z=="string"||Z=="number"||Z=="symbol"||Z=="boolean"?V!=="__proto__":V===null}function pm(V){var Z=Kb(V),a=R[Z];if(typeof a!="function"||!(Z in bl.prototype))return!1;if(V===a)return!0;var m=nm(a);return!!m&&V===m[0]}function CT(V){return!!Ri&&Ri in V}var QT=Yb?fV:xm;function tZ(V){var Z=V&&V.constructor,a=typeof Z=="function"&&Z.prototype||id;return V===a}function RG(V){return V===V&&!Nl(V)}function YG(V,Z){return function(a){return a==null?!1:a[V]===Z&&(Z!==d||V in pl(a))}}function DT(V){var Z=Db(V,function(m){return a.size===G&&a.clear(),m}),a=Z.cache;return Z}function OT(V,Z){var a=V[1],m=Z[1],c=a|m,Y=c<(L|J|k),u=m==k&&a==K||m==k&&a==B&&V[7].length<=Z[8]||m==(k|B)&&Z[7].length<=Z[8]&&a==K;if(!(Y||u))return V;m&L&&(V[2]=Z[2],c|=a&L?0:w);var N=Z[3];if(N){var U=V[3];V[3]=U?$i(U,N,Z[4]):N,V[4]=U?ZW(V[3],p):Z[4]}return N=Z[5],N&&(U=V[5],V[5]=U?lG(U,N,Z[6]):N,V[6]=U?ZW(V[5],p):Z[6]),N=Z[7],N&&(V[7]=N),m&k&&(V[8]=V[8]==null?Z[8]:Kl(V[8],Z[8])),V[9]==null&&(V[9]=Z[9]),V[0]=Z[0],V[1]=c,V}function PT(V){var Z=[];if(V!=null)for(var a in pl(V))Z.push(a);return Z}function AT(V){return Xb.call(V)}function sG(V,Z,a){return Z=zl(Z===d?V.length-1:Z,0),function(){for(var m=arguments,c=-1,Y=zl(m.length-Z,0),u=S(Y);++c<Y;)u[c]=m[Z+c];c=-1;for(var N=S(Z+1);++c<Z;)N[c]=m[c];return N[Z]=a(u),$l(V,this,N)}}function XG(V,Z){return Z.length<2?V:HW(V,iV(Z,0,-1))}function _T(V,Z){for(var a=V.length,m=Kl(Z.length,a),c=Ol(V);m--;){var Y=Z[m];V[m]=gV(Y,a)?c[Y]:d}return V}function hm(V,Z){if(!(Z==="constructor"&&typeof V[Z]=="function")&&Z!="__proto__")return V[Z]}var oG=NG(gi),mZ=iM||function(V,Z){return wl.setTimeout(V,Z)},Rm=NG(oT);function uG(V,Z,a){var m=Z+"";return Rm(V,vT(m,qT(jT(m),a)))}function NG(V){var Z=0,a=0;return function(){var m=RM(),c=Fl-(m-a);if(a=m,c>0){if(++Z>=dl)return arguments[0]}else Z=0;return V.apply(d,arguments)}}function gb(V,Z){var a=-1,m=V.length,c=m-1;for(Z=Z===d?m:Z;++a<Z;){var Y=qt(a,c),u=V[Y];V[Y]=V[a],V[a]=u}return V.length=Z,V}var FG=DT(function(V){var Z=[];return V.charCodeAt(0)===46&&Z.push(""),V.replace(KU,function(a,m,c,Y){Z.push(c?Y.replace(PU,"$1"):m||a)}),Z});function kV(V){if(typeof V=="string"||WV(V))return V;var Z=V+"";return Z=="0"&&1/V==-gl?"-0":Z}function IW(V){if(V!=null){try{return sb.call(V)}catch{}try{return V+""}catch{}}return""}function qT(V,Z){return mV(SU,function(a){var m="_."+a[0];Z&a[1]&&!Gb(V,m)&&V.push(m)}),V.sort()}function UG(V){if(V instanceof bl)return V.clone();var Z=new nV(V.__wrapped__,V.__chain__);return Z.__actions__=Ol(V.__actions__),Z.__index__=V.__index__,Z.__values__=V.__values__,Z}function $T(V,Z,a){(a?Cl(V,Z,a):Z===d)?Z=1:Z=zl($(Z),0);var m=V==null?0:V.length;if(!m||Z<1)return[];for(var c=0,Y=0,u=S(Sb(m/Z));c<m;)u[Y++]=iV(V,c,c+=Z);return u}function l5(V){for(var Z=-1,a=V==null?0:V.length,m=0,c=[];++Z<a;){var Y=V[Z];Y&&(c[m++]=Y)}return c}function V5(){var V=arguments.length;if(!V)return[];for(var Z=S(V-1),a=arguments[0],m=V;m--;)Z[m-1]=arguments[m];return dW(_(a)?Ol(a):[a],jl(Z,1))}var W5=Wl(function(V,Z){return Tl(V)?WZ(V,jl(Z,1,Tl,!0)):[]}),d5=Wl(function(V,Z){var a=GV(Z);return Tl(a)&&(a=d),Tl(V)?WZ(V,jl(Z,1,Tl,!0),f(a,2)):[]}),Z5=Wl(function(V,Z){var a=GV(Z);return Tl(a)&&(a=d),Tl(V)?WZ(V,jl(Z,1,Tl,!0),d,a):[]});function b5(V,Z,a){var m=V==null?0:V.length;return m?(Z=a||Z===d?1:$(Z),iV(V,Z<0?0:Z,m)):[]}function a5(V,Z,a){var m=V==null?0:V.length;return m?(Z=a||Z===d?1:$(Z),Z=m-Z,iV(V,0,Z<0?0:Z)):[]}function t5(V,Z){return V&&V.length?Ib(V,f(Z,3),!0,!0):[]}function m5(V,Z){return V&&V.length?Ib(V,f(Z,3),!0):[]}function e5(V,Z,a,m){var c=V==null?0:V.length;return c?(a&&typeof a!="number"&&Cl(V,Z,a)&&(a=0,m=c),VT(V,Z,a,m)):[]}function SG(V,Z,a){var m=V==null?0:V.length;if(!m)return-1;var c=a==null?0:$(a);return c<0&&(c=zl(m+c,0)),pb(V,f(Z,3),c)}function MG(V,Z,a){var m=V==null?0:V.length;if(!m)return-1;var c=m-1;return a!==d&&(c=$(a),c=a<0?zl(m+c,0):Kl(c,m-1)),pb(V,f(Z,3),c,!0)}function TG(V){var Z=V==null?0:V.length;return Z?jl(V,1):[]}function n5(V){var Z=V==null?0:V.length;return Z?jl(V,gl):[]}function c5(V,Z){var a=V==null?0:V.length;return a?(Z=Z===d?1:$(Z),jl(V,Z)):[]}function i5(V){for(var Z=-1,a=V==null?0:V.length,m={};++Z<a;){var c=V[Z];m[c[0]]=c[1]}return m}function rG(V){return V&&V.length?V[0]:d}function G5(V,Z,a){var m=V==null?0:V.length;if(!m)return-1;var c=a==null?0:$(a);return c<0&&(c=zl(m+c,0)),md(V,Z,c)}function p5(V){var Z=V==null?0:V.length;return Z?iV(V,0,-1):[]}var h5=Wl(function(V){var Z=ol(V,dm);return Z.length&&Z[0]===V[0]?Dt(Z):[]}),R5=Wl(function(V){var Z=GV(V),a=ol(V,dm);return Z===GV(a)?Z=d:a.pop(),a.length&&a[0]===V[0]?Dt(a,f(Z,2)):[]}),Y5=Wl(function(V){var Z=GV(V),a=ol(V,dm);return Z=typeof Z=="function"?Z:d,Z&&a.pop(),a.length&&a[0]===V[0]?Dt(a,d,Z):[]});function s5(V,Z){return V==null?"":pM.call(V,Z)}function GV(V){var Z=V==null?0:V.length;return Z?V[Z-1]:d}function X5(V,Z,a){var m=V==null?0:V.length;if(!m)return-1;var c=m;return a!==d&&(c=$(a),c=c<0?zl(m+c,0):Kl(c,m-1)),Z===Z?qS(V,Z,c):pb(V,mi,c,!0)}function o5(V,Z){return V&&V.length?ji(V,$(Z)):d}var u5=Wl(JG);function JG(V,Z){return V&&V.length&&Z&&Z.length?_t(V,Z):V}function N5(V,Z,a){return V&&V.length&&Z&&Z.length?_t(V,Z,f(a,2)):V}function F5(V,Z,a){return V&&V.length&&Z&&Z.length?_t(V,Z,d,a):V}var U5=vV(function(V,Z){var a=V==null?0:V.length,m=gt(V,Z);return vi(V,ol(Z,function(c){return gV(c,a)?+c:c}).sort(qi)),m});function S5(V,Z){var a=[];if(!(V&&V.length))return a;var m=-1,c=[],Y=V.length;for(Z=f(Z,3);++m<Y;){var u=V[m];Z(u,m,V)&&(a.push(u),c.push(m))}return vi(V,c),a}function Ym(V){return V==null?V:sM.call(V)}function M5(V,Z,a){var m=V==null?0:V.length;return m?(a&&typeof a!="number"&&Cl(V,Z,a)?(Z=0,a=m):(Z=Z==null?0:$(Z),a=a===d?m:$(a)),iV(V,Z,a)):[]}function T5(V,Z){return zb(V,Z)}function r5(V,Z,a){return lm(V,Z,f(a,2))}function J5(V,Z){var a=V==null?0:V.length;if(a){var m=zb(V,Z);if(m<a&&FV(V[m],Z))return m}return-1}function k5(V,Z){return zb(V,Z,!0)}function x5(V,Z,a){return lm(V,Z,f(a,2),!0)}function y5(V,Z){var a=V==null?0:V.length;if(a){var m=zb(V,Z,!0)-1;if(FV(V[m],Z))return m}return-1}function H5(V){return V&&V.length?fi(V):[]}function z5(V,Z){return V&&V.length?fi(V,f(Z,2)):[]}function I5(V){var Z=V==null?0:V.length;return Z?iV(V,1,Z):[]}function E5(V,Z,a){return V&&V.length?(Z=a||Z===d?1:$(Z),iV(V,0,Z<0?0:Z)):[]}function L5(V,Z,a){var m=V==null?0:V.length;return m?(Z=a||Z===d?1:$(Z),Z=m-Z,iV(V,Z<0?0:Z,m)):[]}function w5(V,Z){return V&&V.length?Ib(V,f(Z,3),!1,!0):[]}function j5(V,Z){return V&&V.length?Ib(V,f(Z,3)):[]}var B5=Wl(function(V){return tW(jl(V,1,Tl,!0))}),K5=Wl(function(V){var Z=GV(V);return Tl(Z)&&(Z=d),tW(jl(V,1,Tl,!0),f(Z,2))}),v5=Wl(function(V){var Z=GV(V);return Z=typeof Z=="function"?Z:d,tW(jl(V,1,Tl,!0),d,Z)});function g5(V){return V&&V.length?tW(V):[]}function f5(V,Z){return V&&V.length?tW(V,f(Z,2)):[]}function C5(V,Z){return Z=typeof Z=="function"?Z:d,V&&V.length?tW(V,d,Z):[]}function sm(V){if(!(V&&V.length))return[];var Z=0;return V=WW(V,function(a){if(Tl(a))return Z=zl(a.length,Z),!0}),It(Z,function(a){return ol(V,yt(a))})}function kG(V,Z){if(!(V&&V.length))return[];var a=sm(V);return Z==null?a:ol(a,function(m){return $l(Z,d,m)})}var Q5=Wl(function(V,Z){return Tl(V)?WZ(V,Z):[]}),D5=Wl(function(V){return Wm(WW(V,Tl))}),O5=Wl(function(V){var Z=GV(V);return Tl(Z)&&(Z=d),Wm(WW(V,Tl),f(Z,2))}),P5=Wl(function(V){var Z=GV(V);return Z=typeof Z=="function"?Z:d,Wm(WW(V,Tl),d,Z)}),A5=Wl(sm);function _5(V,Z){return Oi(V||[],Z||[],VZ)}function q5(V,Z){return Oi(V||[],Z||[],bZ)}var $5=Wl(function(V){var Z=V.length,a=Z>1?V[Z-1]:d;return a=typeof a=="function"?(V.pop(),a):d,kG(V,a)});function xG(V){var Z=R(V);return Z.__chain__=!0,Z}function lr(V,Z){return Z(V),V}function fb(V,Z){return Z(V)}var Vr=vV(function(V){var Z=V.length,a=Z?V[0]:0,m=this.__wrapped__,c=function(Y){return gt(Y,V)};return Z>1||this.__actions__.length||!(m instanceof bl)||!gV(a)?this.thru(c):(m=m.slice(a,+a+(Z?1:0)),m.__actions__.push({func:fb,args:[c],thisArg:d}),new nV(m,this.__chain__).thru(function(Y){return Z&&!Y.length&&Y.push(d),Y}))});function Wr(){return xG(this)}function dr(){return new nV(this.value(),this.__chain__)}function Zr(){this.__values__===d&&(this.__values__=CG(this.value()));var V=this.__index__>=this.__values__.length,Z=V?d:this.__values__[this.__index__++];return{done:V,value:Z}}function br(){return this}function ar(V){for(var Z,a=this;a instanceof Jb;){var m=UG(a);m.__index__=0,m.__values__=d,Z?c.__wrapped__=m:Z=m;var c=m;a=a.__wrapped__}return c.__wrapped__=V,Z}function tr(){var V=this.__wrapped__;if(V instanceof bl){var Z=V;return this.__actions__.length&&(Z=new bl(this)),Z=Z.reverse(),Z.__actions__.push({func:fb,args:[Ym],thisArg:d}),new nV(Z,this.__chain__)}return this.thru(Ym)}function mr(){return Di(this.__wrapped__,this.__actions__)}var er=Eb(function(V,Z,a){Gl.call(V,a)?++V[a]:BV(V,a,1)});function nr(V,Z,a){var m=_(V)?ai:lT;return a&&Cl(V,Z,a)&&(Z=d),m(V,f(Z,3))}function cr(V,Z){var a=_(V)?WW:ki;return a(V,f(Z,3))}var ir=ZG(SG),Gr=ZG(MG);function pr(V,Z){return jl(Cb(V,Z),1)}function hr(V,Z){return jl(Cb(V,Z),gl)}function Rr(V,Z,a){return a=a===d?1:$(a),jl(Cb(V,Z),a)}function yG(V,Z){var a=_(V)?mV:aW;return a(V,f(Z,3))}function HG(V,Z){var a=_(V)?IS:Ji;return a(V,f(Z,3))}var Yr=Eb(function(V,Z,a){Gl.call(V,a)?V[a].push(Z):BV(V,a,[Z])});function sr(V,Z,a,m){V=Pl(V)?V:od(V),a=a&&!m?$(a):0;var c=V.length;return a<0&&(a=zl(c+a,0)),Ab(V)?a<=c&&V.indexOf(Z,a)>-1:!!c&&md(V,Z,a)>-1}var Xr=Wl(function(V,Z,a){var m=-1,c=typeof Z=="function",Y=Pl(V)?S(V.length):[];return aW(V,function(u){Y[++m]=c?$l(Z,u,a):dZ(u,Z,a)}),Y}),or=Eb(function(V,Z,a){BV(V,a,Z)});function Cb(V,Z){var a=_(V)?ol:Ei;return a(V,f(Z,3))}function ur(V,Z,a,m){return V==null?[]:(_(Z)||(Z=Z==null?[]:[Z]),a=m?d:a,_(a)||(a=a==null?[]:[a]),Bi(V,Z,a))}var Nr=Eb(function(V,Z,a){V[a?0:1].push(Z)},function(){return[[],[]]});function Fr(V,Z,a){var m=_(V)?kt:ni,c=arguments.length<3;return m(V,f(Z,4),a,c,aW)}function Ur(V,Z,a){var m=_(V)?ES:ni,c=arguments.length<3;return m(V,f(Z,4),a,c,Ji)}function Sr(V,Z){var a=_(V)?WW:ki;return a(V,Ob(f(Z,3)))}function Mr(V){var Z=_(V)?Si:sT;return Z(V)}function Tr(V,Z,a){(a?Cl(V,Z,a):Z===d)?Z=1:Z=$(Z);var m=_(V)?PM:XT;return m(V,Z)}function rr(V){var Z=_(V)?AM:uT;return Z(V)}function Jr(V){if(V==null)return 0;if(Pl(V))return Ab(V)?nd(V):V.length;var Z=vl(V);return Z==XV||Z==oV?V.size:Pt(V).length}function kr(V,Z,a){var m=_(V)?xt:NT;return a&&Cl(V,Z,a)&&(Z=d),m(V,f(Z,3))}var xr=Wl(function(V,Z){if(V==null)return[];var a=Z.length;return a>1&&Cl(V,Z[0],Z[1])?Z=[]:a>2&&Cl(Z[0],Z[1],Z[2])&&(Z=[Z[0]]),Bi(V,jl(Z,1),[])}),Qb=cM||function(){return wl.Date.now()};function yr(V,Z){if(typeof Z!="function")throw new eV(n);return V=$(V),function(){if(--V<1)return Z.apply(this,arguments)}}function zG(V,Z,a){return Z=a?d:Z,Z=V&&Z==null?V.length:Z,KV(V,k,d,d,d,d,Z)}function IG(V,Z){var a;if(typeof Z!="function")throw new eV(n);return V=$(V),function(){return--V>0&&(a=Z.apply(this,arguments)),V<=1&&(Z=d),a}}var Xm=Wl(function(V,Z,a){var m=L;if(a.length){var c=ZW(a,sd(Xm));m|=z}return KV(V,m,Z,a,c)}),EG=Wl(function(V,Z,a){var m=L|J;if(a.length){var c=ZW(a,sd(EG));m|=z}return KV(Z,m,V,a,c)});function LG(V,Z,a){Z=a?d:Z;var m=KV(V,K,d,d,d,d,d,Z);return m.placeholder=LG.placeholder,m}function wG(V,Z,a){Z=a?d:Z;var m=KV(V,x,d,d,d,d,d,Z);return m.placeholder=wG.placeholder,m}function jG(V,Z,a){var m,c,Y,u,N,U,y=0,H=!1,E=!1,j=!0;if(typeof V!="function")throw new eV(n);Z=pV(Z)||0,Nl(a)&&(H=!!a.leading,E="maxWait"in a,Y=E?zl(pV(a.maxWait)||0,Z):Y,j="trailing"in a?!!a.trailing:j);function g(rl){var UV=m,QV=c;return m=c=d,y=rl,u=V.apply(QV,UV),u}function Q(rl){return y=rl,N=mZ(Zl,Z),H?g(rl):u}function ll(rl){var UV=rl-U,QV=rl-y,Zp=Z-UV;return E?Kl(Zp,Y-QV):Zp}function D(rl){var UV=rl-U,QV=rl-y;return U===d||UV>=Z||UV<0||E&&QV>=Y}function Zl(){var rl=Qb();if(D(rl))return tl(rl);N=mZ(Zl,ll(rl))}function tl(rl){return N=d,j&&m?g(rl):(m=c=d,u)}function dV(){N!==d&&Pi(N),y=0,m=U=c=N=d}function Ql(){return N===d?u:tl(Qb())}function ZV(){var rl=Qb(),UV=D(rl);if(m=arguments,c=this,U=rl,UV){if(N===d)return Q(U);if(E)return Pi(N),N=mZ(Zl,Z),g(U)}return N===d&&(N=mZ(Zl,Z)),u}return ZV.cancel=dV,ZV.flush=Ql,ZV}var Hr=Wl(function(V,Z){return ri(V,1,Z)}),zr=Wl(function(V,Z,a){return ri(V,pV(Z)||0,a)});function Ir(V){return KV(V,C)}function Db(V,Z){if(typeof V!="function"||Z!=null&&typeof Z!="function")throw new eV(n);var a=function(){var m=arguments,c=Z?Z.apply(this,m):m[0],Y=a.cache;if(Y.has(c))return Y.get(c);var u=V.apply(this,m);return a.cache=Y.set(c,u)||Y,u};return a.cache=new(Db.Cache||jV),a}Db.Cache=jV;function Ob(V){if(typeof V!="function")throw new eV(n);return function(){var Z=arguments;switch(Z.length){case 0:return!V.call(this);case 1:return!V.call(this,Z[0]);case 2:return!V.call(this,Z[0],Z[1]);case 3:return!V.call(this,Z[0],Z[1],Z[2])}return!V.apply(this,Z)}}function Er(V){return IG(2,V)}var Lr=FT(function(V,Z){Z=Z.length==1&&_(Z[0])?ol(Z[0],lV(f())):ol(jl(Z,1),lV(f()));var a=Z.length;return Wl(function(m){for(var c=-1,Y=Kl(m.length,a);++c<Y;)m[c]=Z[c].call(this,m[c]);return $l(V,this,m)})}),om=Wl(function(V,Z){var a=ZW(Z,sd(om));return KV(V,z,d,Z,a)}),BG=Wl(function(V,Z){var a=ZW(Z,sd(BG));return KV(V,I,d,Z,a)}),wr=vV(function(V,Z){return KV(V,B,d,d,d,Z)});function jr(V,Z){if(typeof V!="function")throw new eV(n);return Z=Z===d?Z:$(Z),Wl(V,Z)}function Br(V,Z){if(typeof V!="function")throw new eV(n);return Z=Z==null?0:zl($(Z),0),Wl(function(a){var m=a[Z],c=eW(a,0,Z);return m&&dW(c,m),$l(V,this,c)})}function Kr(V,Z,a){var m=!0,c=!0;if(typeof V!="function")throw new eV(n);return Nl(a)&&(m="leading"in a?!!a.leading:m,c="trailing"in a?!!a.trailing:c),jG(V,Z,{leading:m,maxWait:Z,trailing:c})}function vr(V){return zG(V,1)}function gr(V,Z){return om(Zm(Z),V)}function fr(){if(!arguments.length)return[];var V=arguments[0];return _(V)?V:[V]}function Cr(V){return cV(V,o)}function Qr(V,Z){return Z=typeof Z=="function"?Z:d,cV(V,o,Z)}function Dr(V){return cV(V,s|o)}function Or(V,Z){return Z=typeof Z=="function"?Z:d,cV(V,s|o,Z)}function Pr(V,Z){return Z==null||Ti(V,Z,El(Z))}function FV(V,Z){return V===Z||V!==V&&Z!==Z}var Ar=Bb(Qt),_r=Bb(function(V,Z){return V>=Z}),EW=Hi(function(){return arguments}())?Hi:function(V){return Sl(V)&&Gl.call(V,"callee")&&!Xi.call(V,"callee")},_=S.isArray,qr=li?lV(li):aT;function Pl(V){return V!=null&&Pb(V.length)&&!fV(V)}function Tl(V){return Sl(V)&&Pl(V)}function $r(V){return V===!0||V===!1||Sl(V)&&fl(V)==vd}var nW=GM||xm,lJ=Vi?lV(Vi):tT;function VJ(V){return Sl(V)&&V.nodeType===1&&!eZ(V)}function WJ(V){if(V==null)return!0;if(Pl(V)&&(_(V)||typeof V=="string"||typeof V.splice=="function"||nW(V)||Xd(V)||EW(V)))return!V.length;var Z=vl(V);if(Z==XV||Z==oV)return!V.size;if(tZ(V))return!Pt(V).length;for(var a in V)if(Gl.call(V,a))return!1;return!0}function dJ(V,Z){return ZZ(V,Z)}function ZJ(V,Z,a){a=typeof a=="function"?a:d;var m=a?a(V,Z):d;return m===d?ZZ(V,Z,d,a):!!m}function um(V){if(!Sl(V))return!1;var Z=fl(V);return Z==tb||Z==TU||typeof V.message=="string"&&typeof V.name=="string"&&!eZ(V)}function bJ(V){return typeof V=="number"&&ui(V)}function fV(V){if(!Nl(V))return!1;var Z=fl(V);return Z==mb||Z==rc||Z==MU||Z==JU}function KG(V){return typeof V=="number"&&V==$(V)}function Pb(V){return typeof V=="number"&&V>-1&&V%1==0&&V<=VW}function Nl(V){var Z=typeof V;return V!=null&&(Z=="object"||Z=="function")}function Sl(V){return V!=null&&typeof V=="object"}var vG=Wi?lV(Wi):eT;function aJ(V,Z){return V===Z||Ot(V,Z,cm(Z))}function tJ(V,Z,a){return a=typeof a=="function"?a:d,Ot(V,Z,cm(Z),a)}function mJ(V){return gG(V)&&V!=+V}function eJ(V){if(QT(V))throw new P(e);return zi(V)}function nJ(V){return V===null}function cJ(V){return V==null}function gG(V){return typeof V=="number"||Sl(V)&&fl(V)==fd}function eZ(V){if(!Sl(V)||fl(V)!=LV)return!1;var Z=Nb(V);if(Z===null)return!0;var a=Gl.call(Z,"constructor")&&Z.constructor;return typeof a=="function"&&a instanceof a&&sb.call(a)==tM}var Nm=di?lV(di):nT;function iJ(V){return KG(V)&&V>=-VW&&V<=VW}var fG=Zi?lV(Zi):cT;function Ab(V){return typeof V=="string"||!_(V)&&Sl(V)&&fl(V)==Qd}function WV(V){return typeof V=="symbol"||Sl(V)&&fl(V)==eb}var Xd=bi?lV(bi):iT;function GJ(V){return V===d}function pJ(V){return Sl(V)&&vl(V)==Dd}function hJ(V){return Sl(V)&&fl(V)==xU}var RJ=Bb(At),YJ=Bb(function(V,Z){return V<=Z});function CG(V){if(!V)return[];if(Pl(V))return Ab(V)?uV(V):Ol(V);if(Ad&&V[Ad])return PS(V[Ad]());var Z=vl(V),a=Z==XV?Lt:Z==oV?hb:od;return a(V)}function CV(V){if(!V)return V===0?V:0;if(V=pV(V),V===gl||V===-gl){var Z=V<0?-1:1;return Z*NU}return V===V?V:0}function $(V){var Z=CV(V),a=Z%1;return Z===Z?a?Z-a:Z:0}function QG(V){return V?yW($(V),0,TV):0}function pV(V){if(typeof V=="number")return V;if(WV(V))return bb;if(Nl(V)){var Z=typeof V.valueOf=="function"?V.valueOf():V;V=Nl(Z)?Z+"":Z}if(typeof V!="string")return V===0?V:+V;V=ci(V);var a=qU.test(V);return a||lS.test(V)?yS(V.slice(2),a?2:8):_U.test(V)?bb:+V}function DG(V){return JV(V,Al(V))}function sJ(V){return V?yW($(V),-VW,VW):V===0?V:0}function nl(V){return V==null?"":VV(V)}var XJ=Rd(function(V,Z){if(tZ(Z)||Pl(Z)){JV(Z,El(Z),V);return}for(var a in Z)Gl.call(Z,a)&&VZ(V,a,Z[a])}),OG=Rd(function(V,Z){JV(Z,Al(Z),V)}),_b=Rd(function(V,Z,a,m){JV(Z,Al(Z),V,m)}),oJ=Rd(function(V,Z,a,m){JV(Z,El(Z),V,m)}),uJ=vV(gt);function NJ(V,Z){var a=hd(V);return Z==null?a:Mi(a,Z)}var FJ=Wl(function(V,Z){V=pl(V);var a=-1,m=Z.length,c=m>2?Z[2]:d;for(c&&Cl(Z[0],Z[1],c)&&(m=1);++a<m;)for(var Y=Z[a],u=Al(Y),N=-1,U=u.length;++N<U;){var y=u[N],H=V[y];(H===d||FV(H,id[y])&&!Gl.call(V,y))&&(V[y]=Y[y])}return V}),UJ=Wl(function(V){return V.push(d,cG),$l(PG,d,V)});function SJ(V,Z){return ti(V,f(Z,3),rV)}function MJ(V,Z){return ti(V,f(Z,3),Ct)}function TJ(V,Z){return V==null?V:ft(V,f(Z,3),Al)}function rJ(V,Z){return V==null?V:xi(V,f(Z,3),Al)}function JJ(V,Z){return V&&rV(V,f(Z,3))}function kJ(V,Z){return V&&Ct(V,f(Z,3))}function xJ(V){return V==null?[]:yb(V,El(V))}function yJ(V){return V==null?[]:yb(V,Al(V))}function Fm(V,Z,a){var m=V==null?d:HW(V,Z);return m===d?a:m}function HJ(V,Z){return V!=null&&pG(V,Z,WT)}function Um(V,Z){return V!=null&&pG(V,Z,dT)}var zJ=aG(function(V,Z,a){Z!=null&&typeof Z.toString!="function"&&(Z=Xb.call(Z)),V[Z]=a},Mm(_l)),IJ=aG(function(V,Z,a){Z!=null&&typeof Z.toString!="function"&&(Z=Xb.call(Z)),Gl.call(V,Z)?V[Z].push(a):V[Z]=[a]},f),EJ=Wl(dZ);function El(V){return Pl(V)?Ui(V):Pt(V)}function Al(V){return Pl(V)?Ui(V,!0):GT(V)}function LJ(V,Z){var a={};return Z=f(Z,3),rV(V,function(m,c,Y){BV(a,Z(m,c,Y),m)}),a}function wJ(V,Z){var a={};return Z=f(Z,3),rV(V,function(m,c,Y){BV(a,c,Z(m,c,Y))}),a}var jJ=Rd(function(V,Z,a){Hb(V,Z,a)}),PG=Rd(function(V,Z,a,m){Hb(V,Z,a,m)}),BJ=vV(function(V,Z){var a={};if(V==null)return a;var m=!1;Z=ol(Z,function(Y){return Y=mW(Y,V),m||(m=Y.length>1),Y}),JV(V,em(V),a),m&&(a=cV(a,s|X|o,zT));for(var c=Z.length;c--;)Vm(a,Z[c]);return a});function KJ(V,Z){return AG(V,Ob(f(Z)))}var vJ=vV(function(V,Z){return V==null?{}:hT(V,Z)});function AG(V,Z){if(V==null)return{};var a=ol(em(V),function(m){return[m]});return Z=f(Z),Ki(V,a,function(m,c){return Z(m,c[0])})}function gJ(V,Z,a){Z=mW(Z,V);var m=-1,c=Z.length;for(c||(c=1,V=d);++m<c;){var Y=V==null?d:V[kV(Z[m])];Y===d&&(m=c,Y=a),V=fV(Y)?Y.call(V):Y}return V}function fJ(V,Z,a){return V==null?V:bZ(V,Z,a)}function CJ(V,Z,a,m){return m=typeof m=="function"?m:d,V==null?V:bZ(V,Z,a,m)}var _G=eG(El),qG=eG(Al);function QJ(V,Z,a){var m=_(V),c=m||nW(V)||Xd(V);if(Z=f(Z,4),a==null){var Y=V&&V.constructor;c?a=m?new Y:[]:Nl(V)?a=fV(Y)?hd(Nb(V)):{}:a={}}return(c?mV:rV)(V,function(u,N,U){return Z(a,u,N,U)}),a}function DJ(V,Z){return V==null?!0:Vm(V,Z)}function OJ(V,Z,a){return V==null?V:Qi(V,Z,Zm(a))}function PJ(V,Z,a,m){return m=typeof m=="function"?m:d,V==null?V:Qi(V,Z,Zm(a),m)}function od(V){return V==null?[]:Et(V,El(V))}function AJ(V){return V==null?[]:Et(V,Al(V))}function _J(V,Z,a){return a===d&&(a=Z,Z=d),a!==d&&(a=pV(a),a=a===a?a:0),Z!==d&&(Z=pV(Z),Z=Z===Z?Z:0),yW(pV(V),Z,a)}function qJ(V,Z,a){return Z=CV(Z),a===d?(a=Z,Z=0):a=CV(a),V=pV(V),ZT(V,Z,a)}function $J(V,Z,a){if(a&&typeof a!="boolean"&&Cl(V,Z,a)&&(Z=a=d),a===d&&(typeof Z=="boolean"?(a=Z,Z=d):typeof V=="boolean"&&(a=V,V=d)),V===d&&Z===d?(V=0,Z=1):(V=CV(V),Z===d?(Z=V,V=0):Z=CV(Z)),V>Z){var m=V;V=Z,Z=m}if(a||V%1||Z%1){var c=Ni();return Kl(V+c*(Z-V+xS("1e-"+((c+"").length-1))),Z)}return qt(V,Z)}var lk=Yd(function(V,Z,a){return Z=Z.toLowerCase(),V+(a?$G(Z):Z)});function $G(V){return Sm(nl(V).toLowerCase())}function lp(V){return V=nl(V),V&&V.replace(WS,fS).replace(uS,"")}function Vk(V,Z,a){V=nl(V),Z=VV(Z);var m=V.length;a=a===d?m:yW($(a),0,m);var c=a;return a-=Z.length,a>=0&&V.slice(a,c)==Z}function Wk(V){return V=nl(V),V&&EU.test(V)?V.replace(xc,CS):V}function dk(V){return V=nl(V),V&&vU.test(V)?V.replace(ot,"\\$&"):V}var Zk=Yd(function(V,Z,a){return V+(a?"-":"")+Z.toLowerCase()}),bk=Yd(function(V,Z,a){return V+(a?" ":"")+Z.toLowerCase()}),ak=dG("toLowerCase");function tk(V,Z,a){V=nl(V),Z=$(Z);var m=Z?nd(V):0;if(!Z||m>=Z)return V;var c=(Z-m)/2;return jb(Mb(c),a)+V+jb(Sb(c),a)}function mk(V,Z,a){V=nl(V),Z=$(Z);var m=Z?nd(V):0;return Z&&m<Z?V+jb(Z-m,a):V}function ek(V,Z,a){V=nl(V),Z=$(Z);var m=Z?nd(V):0;return Z&&m<Z?jb(Z-m,a)+V:V}function nk(V,Z,a){return a||Z==null?Z=0:Z&&(Z=+Z),YM(nl(V).replace(ut,""),Z||0)}function ck(V,Z,a){return(a?Cl(V,Z,a):Z===d)?Z=1:Z=$(Z),$t(nl(V),Z)}function ik(){var V=arguments,Z=nl(V[0]);return V.length<3?Z:Z.replace(V[1],V[2])}var Gk=Yd(function(V,Z,a){return V+(a?"_":"")+Z.toLowerCase()});function pk(V,Z,a){return a&&typeof a!="number"&&Cl(V,Z,a)&&(Z=a=d),a=a===d?TV:a>>>0,a?(V=nl(V),V&&(typeof Z=="string"||Z!=null&&!Nm(Z))&&(Z=VV(Z),!Z&&ed(V))?eW(uV(V),0,a):V.split(Z,a)):[]}var hk=Yd(function(V,Z,a){return V+(a?" ":"")+Sm(Z)});function Rk(V,Z,a){return V=nl(V),a=a==null?0:yW($(a),0,V.length),Z=VV(Z),V.slice(a,a+Z.length)==Z}function Yk(V,Z,a){var m=R.templateSettings;a&&Cl(V,Z,a)&&(Z=d),V=nl(V),Z=_b({},Z,m,nG);var c=_b({},Z.imports,m.imports,nG),Y=El(c),u=Et(c,Y),N,U,y=0,H=Z.interpolate||nb,E="__p += '",j=wt((Z.escape||nb).source+"|"+H.source+"|"+(H===yc?AU:nb).source+"|"+(Z.evaluate||nb).source+"|$","g"),g="//# sourceURL="+(Gl.call(Z,"sourceURL")?(Z.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++MS+"]")+`
284
+ `;V.replace(j,function(D,Zl,tl,dV,Ql,ZV){return tl||(tl=dV),E+=V.slice(y,ZV).replace(dS,QS),Zl&&(N=!0,E+=`' +
285
+ __e(`+Zl+`) +
286
+ '`),Ql&&(U=!0,E+=`';
287
+ `+Ql+`;
288
+ __p += '`),tl&&(E+=`' +
289
+ ((__t = (`+tl+`)) == null ? '' : __t) +
290
+ '`),y=ZV+D.length,D}),E+=`';
291
+ `;var Q=Gl.call(Z,"variable")&&Z.variable;if(!Q)E=`with (obj) {
292
+ `+E+`
293
+ }
294
+ `;else if(OU.test(Q))throw new P(i);E=(U?E.replace(yU,""):E).replace(HU,"$1").replace(zU,"$1;"),E="function("+(Q||"obj")+`) {
295
+ `+(Q?"":`obj || (obj = {});
296
+ `)+"var __t, __p = ''"+(N?", __e = _.escape":"")+(U?`, __j = Array.prototype.join;
297
+ function print() { __p += __j.call(arguments, '') }
298
+ `:`;
299
+ `)+E+`return __p
300
+ }`;var ll=Wp(function(){return el(Y,g+"return "+E).apply(d,u)});if(ll.source=E,um(ll))throw ll;return ll}function sk(V){return nl(V).toLowerCase()}function Xk(V){return nl(V).toUpperCase()}function ok(V,Z,a){if(V=nl(V),V&&(a||Z===d))return ci(V);if(!V||!(Z=VV(Z)))return V;var m=uV(V),c=uV(Z),Y=ii(m,c),u=Gi(m,c)+1;return eW(m,Y,u).join("")}function uk(V,Z,a){if(V=nl(V),V&&(a||Z===d))return V.slice(0,hi(V)+1);if(!V||!(Z=VV(Z)))return V;var m=uV(V),c=Gi(m,uV(Z))+1;return eW(m,0,c).join("")}function Nk(V,Z,a){if(V=nl(V),V&&(a||Z===d))return V.replace(ut,"");if(!V||!(Z=VV(Z)))return V;var m=uV(V),c=ii(m,uV(Z));return eW(m,c).join("")}function Fk(V,Z){var a=A,m=Vl;if(Nl(Z)){var c="separator"in Z?Z.separator:c;a="length"in Z?$(Z.length):a,m="omission"in Z?VV(Z.omission):m}V=nl(V);var Y=V.length;if(ed(V)){var u=uV(V);Y=u.length}if(a>=Y)return V;var N=a-nd(m);if(N<1)return m;var U=u?eW(u,0,N).join(""):V.slice(0,N);if(c===d)return U+m;if(u&&(N+=U.length-N),Nm(c)){if(V.slice(N).search(c)){var y,H=U;for(c.global||(c=wt(c.source,nl(Hc.exec(c))+"g")),c.lastIndex=0;y=c.exec(H);)var E=y.index;U=U.slice(0,E===d?N:E)}}else if(V.indexOf(VV(c),N)!=N){var j=U.lastIndexOf(c);j>-1&&(U=U.slice(0,j))}return U+m}function Uk(V){return V=nl(V),V&&IU.test(V)?V.replace(kc,$S):V}var Sk=Yd(function(V,Z,a){return V+(a?" ":"")+Z.toUpperCase()}),Sm=dG("toUpperCase");function Vp(V,Z,a){return V=nl(V),Z=a?d:Z,Z===d?OS(V)?WM(V):jS(V):V.match(Z)||[]}var Wp=Wl(function(V,Z){try{return $l(V,d,Z)}catch(a){return um(a)?a:new P(a)}}),Mk=vV(function(V,Z){return mV(Z,function(a){a=kV(a),BV(V,a,Xm(V[a],V))}),V});function Tk(V){var Z=V==null?0:V.length,a=f();return V=Z?ol(V,function(m){if(typeof m[1]!="function")throw new eV(n);return[a(m[0]),m[1]]}):[],Wl(function(m){for(var c=-1;++c<Z;){var Y=V[c];if($l(Y[0],this,m))return $l(Y[1],this,m)}})}function rk(V){return $M(cV(V,s))}function Mm(V){return function(){return V}}function Jk(V,Z){return V==null||V!==V?Z:V}var kk=bG(),xk=bG(!0);function _l(V){return V}function Tm(V){return Ii(typeof V=="function"?V:cV(V,s))}function yk(V){return Li(cV(V,s))}function Hk(V,Z){return wi(V,cV(Z,s))}var zk=Wl(function(V,Z){return function(a){return dZ(a,V,Z)}}),Ik=Wl(function(V,Z){return function(a){return dZ(V,a,Z)}});function rm(V,Z,a){var m=El(Z),c=yb(Z,m);a==null&&!(Nl(Z)&&(c.length||!m.length))&&(a=Z,Z=V,V=this,c=yb(Z,El(Z)));var Y=!(Nl(a)&&"chain"in a)||!!a.chain,u=fV(V);return mV(c,function(N){var U=Z[N];V[N]=U,u&&(V.prototype[N]=function(){var y=this.__chain__;if(Y||y){var H=V(this.__wrapped__),E=H.__actions__=Ol(this.__actions__);return E.push({func:U,args:arguments,thisArg:V}),H.__chain__=y,H}return U.apply(V,dW([this.value()],arguments))})}),V}function Ek(){return wl._===this&&(wl._=mM),this}function Jm(){}function Lk(V){return V=$(V),Wl(function(Z){return ji(Z,V)})}var wk=am(ol),jk=am(ai),Bk=am(xt);function dp(V){return Gm(V)?yt(kV(V)):RT(V)}function Kk(V){return function(Z){return V==null?d:HW(V,Z)}}var vk=tG(),gk=tG(!0);function km(){return[]}function xm(){return!1}function fk(){return{}}function Ck(){return""}function Qk(){return!0}function Dk(V,Z){if(V=$(V),V<1||V>VW)return[];var a=TV,m=Kl(V,TV);Z=f(Z),V-=TV;for(var c=It(m,Z);++a<V;)Z(a);return c}function Ok(V){return _(V)?ol(V,kV):WV(V)?[V]:Ol(FG(nl(V)))}function Pk(V){var Z=++aM;return nl(V)+Z}var Ak=wb(function(V,Z){return V+Z},0),_k=tm("ceil"),qk=wb(function(V,Z){return V/Z},1),$k=tm("floor");function lx(V){return V&&V.length?xb(V,_l,Qt):d}function Vx(V,Z){return V&&V.length?xb(V,f(Z,2),Qt):d}function Wx(V){return ei(V,_l)}function dx(V,Z){return ei(V,f(Z,2))}function Zx(V){return V&&V.length?xb(V,_l,At):d}function bx(V,Z){return V&&V.length?xb(V,f(Z,2),At):d}var ax=wb(function(V,Z){return V*Z},1),tx=tm("round"),mx=wb(function(V,Z){return V-Z},0);function ex(V){return V&&V.length?zt(V,_l):0}function nx(V,Z){return V&&V.length?zt(V,f(Z,2)):0}return R.after=yr,R.ary=zG,R.assign=XJ,R.assignIn=OG,R.assignInWith=_b,R.assignWith=oJ,R.at=uJ,R.before=IG,R.bind=Xm,R.bindAll=Mk,R.bindKey=EG,R.castArray=fr,R.chain=xG,R.chunk=$T,R.compact=l5,R.concat=V5,R.cond=Tk,R.conforms=rk,R.constant=Mm,R.countBy=er,R.create=NJ,R.curry=LG,R.curryRight=wG,R.debounce=jG,R.defaults=FJ,R.defaultsDeep=UJ,R.defer=Hr,R.delay=zr,R.difference=W5,R.differenceBy=d5,R.differenceWith=Z5,R.drop=b5,R.dropRight=a5,R.dropRightWhile=t5,R.dropWhile=m5,R.fill=e5,R.filter=cr,R.flatMap=pr,R.flatMapDeep=hr,R.flatMapDepth=Rr,R.flatten=TG,R.flattenDeep=n5,R.flattenDepth=c5,R.flip=Ir,R.flow=kk,R.flowRight=xk,R.fromPairs=i5,R.functions=xJ,R.functionsIn=yJ,R.groupBy=Yr,R.initial=p5,R.intersection=h5,R.intersectionBy=R5,R.intersectionWith=Y5,R.invert=zJ,R.invertBy=IJ,R.invokeMap=Xr,R.iteratee=Tm,R.keyBy=or,R.keys=El,R.keysIn=Al,R.map=Cb,R.mapKeys=LJ,R.mapValues=wJ,R.matches=yk,R.matchesProperty=Hk,R.memoize=Db,R.merge=jJ,R.mergeWith=PG,R.method=zk,R.methodOf=Ik,R.mixin=rm,R.negate=Ob,R.nthArg=Lk,R.omit=BJ,R.omitBy=KJ,R.once=Er,R.orderBy=ur,R.over=wk,R.overArgs=Lr,R.overEvery=jk,R.overSome=Bk,R.partial=om,R.partialRight=BG,R.partition=Nr,R.pick=vJ,R.pickBy=AG,R.property=dp,R.propertyOf=Kk,R.pull=u5,R.pullAll=JG,R.pullAllBy=N5,R.pullAllWith=F5,R.pullAt=U5,R.range=vk,R.rangeRight=gk,R.rearg=wr,R.reject=Sr,R.remove=S5,R.rest=jr,R.reverse=Ym,R.sampleSize=Tr,R.set=fJ,R.setWith=CJ,R.shuffle=rr,R.slice=M5,R.sortBy=xr,R.sortedUniq=H5,R.sortedUniqBy=z5,R.split=pk,R.spread=Br,R.tail=I5,R.take=E5,R.takeRight=L5,R.takeRightWhile=w5,R.takeWhile=j5,R.tap=lr,R.throttle=Kr,R.thru=fb,R.toArray=CG,R.toPairs=_G,R.toPairsIn=qG,R.toPath=Ok,R.toPlainObject=DG,R.transform=QJ,R.unary=vr,R.union=B5,R.unionBy=K5,R.unionWith=v5,R.uniq=g5,R.uniqBy=f5,R.uniqWith=C5,R.unset=DJ,R.unzip=sm,R.unzipWith=kG,R.update=OJ,R.updateWith=PJ,R.values=od,R.valuesIn=AJ,R.without=Q5,R.words=Vp,R.wrap=gr,R.xor=D5,R.xorBy=O5,R.xorWith=P5,R.zip=A5,R.zipObject=_5,R.zipObjectDeep=q5,R.zipWith=$5,R.entries=_G,R.entriesIn=qG,R.extend=OG,R.extendWith=_b,rm(R,R),R.add=Ak,R.attempt=Wp,R.camelCase=lk,R.capitalize=$G,R.ceil=_k,R.clamp=_J,R.clone=Cr,R.cloneDeep=Dr,R.cloneDeepWith=Or,R.cloneWith=Qr,R.conformsTo=Pr,R.deburr=lp,R.defaultTo=Jk,R.divide=qk,R.endsWith=Vk,R.eq=FV,R.escape=Wk,R.escapeRegExp=dk,R.every=nr,R.find=ir,R.findIndex=SG,R.findKey=SJ,R.findLast=Gr,R.findLastIndex=MG,R.findLastKey=MJ,R.floor=$k,R.forEach=yG,R.forEachRight=HG,R.forIn=TJ,R.forInRight=rJ,R.forOwn=JJ,R.forOwnRight=kJ,R.get=Fm,R.gt=Ar,R.gte=_r,R.has=HJ,R.hasIn=Um,R.head=rG,R.identity=_l,R.includes=sr,R.indexOf=G5,R.inRange=qJ,R.invoke=EJ,R.isArguments=EW,R.isArray=_,R.isArrayBuffer=qr,R.isArrayLike=Pl,R.isArrayLikeObject=Tl,R.isBoolean=$r,R.isBuffer=nW,R.isDate=lJ,R.isElement=VJ,R.isEmpty=WJ,R.isEqual=dJ,R.isEqualWith=ZJ,R.isError=um,R.isFinite=bJ,R.isFunction=fV,R.isInteger=KG,R.isLength=Pb,R.isMap=vG,R.isMatch=aJ,R.isMatchWith=tJ,R.isNaN=mJ,R.isNative=eJ,R.isNil=cJ,R.isNull=nJ,R.isNumber=gG,R.isObject=Nl,R.isObjectLike=Sl,R.isPlainObject=eZ,R.isRegExp=Nm,R.isSafeInteger=iJ,R.isSet=fG,R.isString=Ab,R.isSymbol=WV,R.isTypedArray=Xd,R.isUndefined=GJ,R.isWeakMap=pJ,R.isWeakSet=hJ,R.join=s5,R.kebabCase=Zk,R.last=GV,R.lastIndexOf=X5,R.lowerCase=bk,R.lowerFirst=ak,R.lt=RJ,R.lte=YJ,R.max=lx,R.maxBy=Vx,R.mean=Wx,R.meanBy=dx,R.min=Zx,R.minBy=bx,R.stubArray=km,R.stubFalse=xm,R.stubObject=fk,R.stubString=Ck,R.stubTrue=Qk,R.multiply=ax,R.nth=o5,R.noConflict=Ek,R.noop=Jm,R.now=Qb,R.pad=tk,R.padEnd=mk,R.padStart=ek,R.parseInt=nk,R.random=$J,R.reduce=Fr,R.reduceRight=Ur,R.repeat=ck,R.replace=ik,R.result=gJ,R.round=tx,R.runInContext=F,R.sample=Mr,R.size=Jr,R.snakeCase=Gk,R.some=kr,R.sortedIndex=T5,R.sortedIndexBy=r5,R.sortedIndexOf=J5,R.sortedLastIndex=k5,R.sortedLastIndexBy=x5,R.sortedLastIndexOf=y5,R.startCase=hk,R.startsWith=Rk,R.subtract=mx,R.sum=ex,R.sumBy=nx,R.template=Yk,R.times=Dk,R.toFinite=CV,R.toInteger=$,R.toLength=QG,R.toLower=sk,R.toNumber=pV,R.toSafeInteger=sJ,R.toString=nl,R.toUpper=Xk,R.trim=ok,R.trimEnd=uk,R.trimStart=Nk,R.truncate=Fk,R.unescape=Uk,R.uniqueId=Pk,R.upperCase=Sk,R.upperFirst=Sm,R.each=yG,R.eachRight=HG,R.first=rG,rm(R,function(){var V={};return rV(R,function(Z,a){Gl.call(R.prototype,a)||(V[a]=Z)}),V}(),{chain:!1}),R.VERSION=b,mV(["bind","bindKey","curry","curryRight","partial","partialRight"],function(V){R[V].placeholder=R}),mV(["drop","take"],function(V,Z){bl.prototype[V]=function(a){a=a===d?1:zl($(a),0);var m=this.__filtered__&&!Z?new bl(this):this.clone();return m.__filtered__?m.__takeCount__=Kl(a,m.__takeCount__):m.__views__.push({size:Kl(a,TV),type:V+(m.__dir__<0?"Right":"")}),m},bl.prototype[V+"Right"]=function(a){return this.reverse()[V](a).reverse()}}),mV(["filter","map","takeWhile"],function(V,Z){var a=Z+1,m=a==ul||a==EV;bl.prototype[V]=function(c){var Y=this.clone();return Y.__iteratees__.push({iteratee:f(c,3),type:a}),Y.__filtered__=Y.__filtered__||m,Y}}),mV(["head","last"],function(V,Z){var a="take"+(Z?"Right":"");bl.prototype[V]=function(){return this[a](1).value()[0]}}),mV(["initial","tail"],function(V,Z){var a="drop"+(Z?"":"Right");bl.prototype[V]=function(){return this.__filtered__?new bl(this):this[a](1)}}),bl.prototype.compact=function(){return this.filter(_l)},bl.prototype.find=function(V){return this.filter(V).head()},bl.prototype.findLast=function(V){return this.reverse().find(V)},bl.prototype.invokeMap=Wl(function(V,Z){return typeof V=="function"?new bl(this):this.map(function(a){return dZ(a,V,Z)})}),bl.prototype.reject=function(V){return this.filter(Ob(f(V)))},bl.prototype.slice=function(V,Z){V=$(V);var a=this;return a.__filtered__&&(V>0||Z<0)?new bl(a):(V<0?a=a.takeRight(-V):V&&(a=a.drop(V)),Z!==d&&(Z=$(Z),a=Z<0?a.dropRight(-Z):a.take(Z-V)),a)},bl.prototype.takeRightWhile=function(V){return this.reverse().takeWhile(V).reverse()},bl.prototype.toArray=function(){return this.take(TV)},rV(bl.prototype,function(V,Z){var a=/^(?:filter|find|map|reject)|While$/.test(Z),m=/^(?:head|last)$/.test(Z),c=R[m?"take"+(Z=="last"?"Right":""):Z],Y=m||/^find/.test(Z);c&&(R.prototype[Z]=function(){var u=this.__wrapped__,N=m?[1]:arguments,U=u instanceof bl,y=N[0],H=U||_(u),E=function(Zl){var tl=c.apply(R,dW([Zl],N));return m&&j?tl[0]:tl};H&&a&&typeof y=="function"&&y.length!=1&&(U=H=!1);var j=this.__chain__,g=!!this.__actions__.length,Q=Y&&!j,ll=U&&!g;if(!Y&&H){u=ll?u:new bl(this);var D=V.apply(u,N);return D.__actions__.push({func:fb,args:[E],thisArg:d}),new nV(D,j)}return Q&&ll?V.apply(this,N):(D=this.thru(E),Q?m?D.value()[0]:D.value():D)})}),mV(["pop","push","shift","sort","splice","unshift"],function(V){var Z=Rb[V],a=/^(?:push|sort|unshift)$/.test(V)?"tap":"thru",m=/^(?:pop|shift)$/.test(V);R.prototype[V]=function(){var c=arguments;if(m&&!this.__chain__){var Y=this.value();return Z.apply(_(Y)?Y:[],c)}return this[a](function(u){return Z.apply(_(u)?u:[],c)})}}),rV(bl.prototype,function(V,Z){var a=R[Z];if(a){var m=a.name+"";Gl.call(pd,m)||(pd[m]=[]),pd[m].push({name:Z,func:a})}}),pd[Lb(d,J).name]=[{name:"wrapper",func:d}],bl.prototype.clone=UM,bl.prototype.reverse=SM,bl.prototype.value=MM,R.prototype.at=Vr,R.prototype.chain=Wr,R.prototype.commit=dr,R.prototype.next=Zr,R.prototype.plant=ar,R.prototype.reverse=tr,R.prototype.toJSON=R.prototype.valueOf=R.prototype.value=mr,R.prototype.first=R.prototype.head,Ad&&(R.prototype[Ad]=br),R},cd=dM();rW?((rW.exports=cd)._=cd,Tt._=cd):wl._=cd}).call(IV)}(zZ,zZ.exports),zZ.exports;const qe="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFZ0KG4pe3JldHVybiBuJiZuLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJkZWZhdWx0Iik/bi5kZWZhdWx0Om59dmFyIFBlPXt9OyhmdW5jdGlvbihuKXt2YXIgcj1mdW5jdGlvbigpe3ZhciBlPW5ldyBEYXRlLHQ9NCxpPTMsZj0yLHU9MSx2PXQseT17c2V0TG9nTGV2ZWw6ZnVuY3Rpb24obSl7bT09dGhpcy5kZWJ1Zz92PXU6bT09dGhpcy5pbmZvP3Y9ZjptPT10aGlzLndhcm4/dj1pOihtPT10aGlzLmVycm9yLHY9dCl9LGRlYnVnOmZ1bmN0aW9uKG0sYil7Y29uc29sZS5kZWJ1Zz09PXZvaWQgMCYmKGNvbnNvbGUuZGVidWc9Y29uc29sZS5sb2cpLHU+PXYmJmNvbnNvbGUuZGVidWcoIlsiK3IuZ2V0RHVyYXRpb25TdHJpbmcobmV3IERhdGUtZSwxZTMpKyJdIiwiWyIrbSsiXSIsYil9LGxvZzpmdW5jdGlvbihtLGIpe3RoaXMuZGVidWcobS5tc2cpfSxpbmZvOmZ1bmN0aW9uKG0sYil7Zj49diYmY29uc29sZS5pbmZvKCJbIityLmdldER1cmF0aW9uU3RyaW5nKG5ldyBEYXRlLWUsMWUzKSsiXSIsIlsiK20rIl0iLGIpfSx3YXJuOmZ1bmN0aW9uKG0sYil7aT49diYmY29uc29sZS53YXJuKCJbIityLmdldER1cmF0aW9uU3RyaW5nKG5ldyBEYXRlLWUsMWUzKSsiXSIsIlsiK20rIl0iLGIpfSxlcnJvcjpmdW5jdGlvbihtLGIpe3Q+PXYmJmNvbnNvbGUuZXJyb3IoIlsiK3IuZ2V0RHVyYXRpb25TdHJpbmcobmV3IERhdGUtZSwxZTMpKyJdIiwiWyIrbSsiXSIsYil9fTtyZXR1cm4geX0oKTtyLmdldER1cmF0aW9uU3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIGk7ZnVuY3Rpb24gZih4LFMpe2Zvcih2YXIgVT0iIit4LEU9VS5zcGxpdCgiLiIpO0VbMF0ubGVuZ3RoPFM7KUVbMF09IjAiK0VbMF07cmV0dXJuIEUuam9pbigiLiIpfWU8MD8oaT0hMCxlPS1lKTppPSExO3ZhciB1PXR8fDEsdj1lL3UseT1NYXRoLmZsb29yKHYvMzYwMCk7di09eSozNjAwO3ZhciBtPU1hdGguZmxvb3Iodi82MCk7di09bSo2MDt2YXIgYj12KjFlMztyZXR1cm4gdj1NYXRoLmZsb29yKHYpLGItPXYqMWUzLGI9TWF0aC5mbG9vcihiKSwoaT8iLSI6IiIpK3krIjoiK2YobSwyKSsiOiIrZih2LDIpKyIuIitmKGIsMyl9LHIucHJpbnRSYW5nZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodD4wKXtmb3IodmFyIGk9IiIsZj0wO2Y8dDtmKyspZj4wJiYoaSs9IiwiKSxpKz0iWyIrci5nZXREdXJhdGlvblN0cmluZyhlLnN0YXJ0KGYpKSsiLCIrci5nZXREdXJhdGlvblN0cmluZyhlLmVuZChmKSkrIl0iO3JldHVybiBpfWVsc2UgcmV0dXJuIihlbXB0eSkifSxuLkxvZz1yO3ZhciBhPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil0aGlzLmJ1ZmZlcj1lLHRoaXMuZGF0YXZpZXc9bmV3IERhdGFWaWV3KGUpO2Vsc2UgdGhyb3ciTmVlZHMgYW4gYXJyYXkgYnVmZmVyIjt0aGlzLnBvc2l0aW9uPTB9O2EucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zaXRpb259LGEucHJvdG90eXBlLmdldEVuZFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGh9LGEucHJvdG90eXBlLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RofSxhLnByb3RvdHlwZS5zZWVrPWZ1bmN0aW9uKGUpe3ZhciB0PU1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5idWZmZXIuYnl0ZUxlbmd0aCxlKSk7cmV0dXJuIHRoaXMucG9zaXRpb249aXNOYU4odCl8fCFpc0Zpbml0ZSh0KT8wOnQsITB9LGEucHJvdG90eXBlLmlzRW9zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UG9zaXRpb24oKT49dGhpcy5nZXRFbmRQb3NpdGlvbigpfSxhLnByb3RvdHlwZS5yZWFkQW55SW50PWZ1bmN0aW9uKGUsdCl7dmFyIGk9MDtpZih0aGlzLnBvc2l0aW9uK2U8PXRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpe3N3aXRjaChlKXtjYXNlIDE6dD9pPXRoaXMuZGF0YXZpZXcuZ2V0SW50OCh0aGlzLnBvc2l0aW9uKTppPXRoaXMuZGF0YXZpZXcuZ2V0VWludDgodGhpcy5wb3NpdGlvbik7YnJlYWs7Y2FzZSAyOnQ/aT10aGlzLmRhdGF2aWV3LmdldEludDE2KHRoaXMucG9zaXRpb24pOmk9dGhpcy5kYXRhdmlldy5nZXRVaW50MTYodGhpcy5wb3NpdGlvbik7YnJlYWs7Y2FzZSAzOmlmKHQpdGhyb3ciTm8gbWV0aG9kIGZvciByZWFkaW5nIHNpZ25lZCAyNCBiaXRzIHZhbHVlcyI7aT10aGlzLmRhdGF2aWV3LmdldFVpbnQ4KHRoaXMucG9zaXRpb24pPDwxNixpfD10aGlzLmRhdGF2aWV3LmdldFVpbnQ4KHRoaXMucG9zaXRpb24rMSk8PDgsaXw9dGhpcy5kYXRhdmlldy5nZXRVaW50OCh0aGlzLnBvc2l0aW9uKzIpO2JyZWFrO2Nhc2UgNDp0P2k9dGhpcy5kYXRhdmlldy5nZXRJbnQzMih0aGlzLnBvc2l0aW9uKTppPXRoaXMuZGF0YXZpZXcuZ2V0VWludDMyKHRoaXMucG9zaXRpb24pO2JyZWFrO2Nhc2UgODppZih0KXRocm93Ik5vIG1ldGhvZCBmb3IgcmVhZGluZyBzaWduZWQgNjQgYml0cyB2YWx1ZXMiO2k9dGhpcy5kYXRhdmlldy5nZXRVaW50MzIodGhpcy5wb3NpdGlvbik8PDMyLGl8PXRoaXMuZGF0YXZpZXcuZ2V0VWludDMyKHRoaXMucG9zaXRpb24rNCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJyZWFkSW50IG1ldGhvZCBub3QgaW1wbGVtZW50ZWQgZm9yIHNpemU6ICIrZX1yZXR1cm4gdGhpcy5wb3NpdGlvbis9ZSxpfWVsc2UgdGhyb3ciTm90IGVub3VnaCBieXRlcyBpbiBidWZmZXIifSxhLnByb3RvdHlwZS5yZWFkVWludDg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkQW55SW50KDEsITEpfSxhLnByb3RvdHlwZS5yZWFkVWludDE2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCgyLCExKX0sYS5wcm90b3R5cGUucmVhZFVpbnQyND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRBbnlJbnQoMywhMSl9LGEucHJvdG90eXBlLnJlYWRVaW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkQW55SW50KDQsITEpfSxhLnByb3RvdHlwZS5yZWFkVWludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCg4LCExKX0sYS5wcm90b3R5cGUucmVhZFN0cmluZz1mdW5jdGlvbihlKXtpZih0aGlzLnBvc2l0aW9uK2U8PXRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpe2Zvcih2YXIgdD0iIixpPTA7aTxlO2krKyl0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMucmVhZFVpbnQ4KCkpO3JldHVybiB0fWVsc2UgdGhyb3ciTm90IGVub3VnaCBieXRlcyBpbiBidWZmZXIifSxhLnByb3RvdHlwZS5yZWFkQ1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXTs7KXt2YXIgdD10aGlzLnJlYWRVaW50OCgpO2lmKHQhPT0wKWUucHVzaCh0KTtlbHNlIGJyZWFrfXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSl9LGEucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCgxLCEwKX0sYS5wcm90b3R5cGUucmVhZEludDE2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCgyLCEwKX0sYS5wcm90b3R5cGUucmVhZEludDMyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCg0LCEwKX0sYS5wcm90b3R5cGUucmVhZEludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEFueUludCg4LCExKX0sYS5wcm90b3R5cGUucmVhZFVpbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBVaW50OEFycmF5KGUpLGk9MDtpPGU7aSsrKXRbaV09dGhpcy5yZWFkVWludDgoKTtyZXR1cm4gdH0sYS5wcm90b3R5cGUucmVhZEludDE2QXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBJbnQxNkFycmF5KGUpLGk9MDtpPGU7aSsrKXRbaV09dGhpcy5yZWFkSW50MTYoKTtyZXR1cm4gdH0sYS5wcm90b3R5cGUucmVhZFVpbnQxNkFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uZXcgSW50MTZBcnJheShlKSxpPTA7aTxlO2krKyl0W2ldPXRoaXMucmVhZFVpbnQxNigpO3JldHVybiB0fSxhLnByb3RvdHlwZS5yZWFkVWludDMyQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBVaW50MzJBcnJheShlKSxpPTA7aTxlO2krKyl0W2ldPXRoaXMucmVhZFVpbnQzMigpO3JldHVybiB0fSxhLnByb3RvdHlwZS5yZWFkSW50MzJBcnJheT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IEludDMyQXJyYXkoZSksaT0wO2k8ZTtpKyspdFtpXT10aGlzLnJlYWRJbnQzMigpO3JldHVybiB0fSxuLk1QNEJveFN0cmVhbT1hO3ZhciBzPWZ1bmN0aW9uKGUsdCxpKXt0aGlzLl9ieXRlT2Zmc2V0PXR8fDAsZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP3RoaXMuYnVmZmVyPWU6dHlwZW9mIGU9PSJvYmplY3QiPyh0aGlzLmRhdGFWaWV3PWUsdCYmKHRoaXMuX2J5dGVPZmZzZXQrPXQpKTp0aGlzLmJ1ZmZlcj1uZXcgQXJyYXlCdWZmZXIoZXx8MCksdGhpcy5wb3NpdGlvbj0wLHRoaXMuZW5kaWFubmVzcz1pPz9zLkxJVFRMRV9FTkRJQU59O3MucHJvdG90eXBlPXt9LHMucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zaXRpb259LHMucHJvdG90eXBlLl9yZWFsbG9jPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2R5bmFtaWNTaXplKXt2YXIgdD10aGlzLl9ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24rZSxpPXRoaXMuX2J1ZmZlci5ieXRlTGVuZ3RoO2lmKHQ8PWkpe3Q+dGhpcy5fYnl0ZUxlbmd0aCYmKHRoaXMuX2J5dGVMZW5ndGg9dCk7cmV0dXJufWZvcihpPDEmJihpPTEpO3Q+aTspaSo9Mjt2YXIgZj1uZXcgQXJyYXlCdWZmZXIoaSksdT1uZXcgVWludDhBcnJheSh0aGlzLl9idWZmZXIpLHY9bmV3IFVpbnQ4QXJyYXkoZiwwLHUubGVuZ3RoKTt2LnNldCh1KSx0aGlzLmJ1ZmZlcj1mLHRoaXMuX2J5dGVMZW5ndGg9dH19LHMucHJvdG90eXBlLl90cmltQWxsb2M9ZnVuY3Rpb24oKXtpZih0aGlzLl9ieXRlTGVuZ3RoIT10aGlzLl9idWZmZXIuYnl0ZUxlbmd0aCl7dmFyIGU9bmV3IEFycmF5QnVmZmVyKHRoaXMuX2J5dGVMZW5ndGgpLHQ9bmV3IFVpbnQ4QXJyYXkoZSksaT1uZXcgVWludDhBcnJheSh0aGlzLl9idWZmZXIsMCx0Lmxlbmd0aCk7dC5zZXQoaSksdGhpcy5idWZmZXI9ZX19LHMuQklHX0VORElBTj0hMSxzLkxJVFRMRV9FTkRJQU49ITAscy5wcm90b3R5cGUuX2J5dGVMZW5ndGg9MCxPYmplY3QuZGVmaW5lUHJvcGVydHkocy5wcm90b3R5cGUsImJ5dGVMZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnl0ZUxlbmd0aC10aGlzLl9ieXRlT2Zmc2V0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLnByb3RvdHlwZSwiYnVmZmVyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyaW1BbGxvYygpLHRoaXMuX2J1ZmZlcn0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX2J1ZmZlcj1lLHRoaXMuX2RhdGFWaWV3PW5ldyBEYXRhVmlldyh0aGlzLl9idWZmZXIsdGhpcy5fYnl0ZU9mZnNldCksdGhpcy5fYnl0ZUxlbmd0aD10aGlzLl9idWZmZXIuYnl0ZUxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkocy5wcm90b3R5cGUsImJ5dGVPZmZzZXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnl0ZU9mZnNldH0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX2J5dGVPZmZzZXQ9ZSx0aGlzLl9kYXRhVmlldz1uZXcgRGF0YVZpZXcodGhpcy5fYnVmZmVyLHRoaXMuX2J5dGVPZmZzZXQpLHRoaXMuX2J5dGVMZW5ndGg9dGhpcy5fYnVmZmVyLmJ5dGVMZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHMucHJvdG90eXBlLCJkYXRhVmlldyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhVmlld30sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX2J5dGVPZmZzZXQ9ZS5ieXRlT2Zmc2V0LHRoaXMuX2J1ZmZlcj1lLmJ1ZmZlcix0aGlzLl9kYXRhVmlldz1uZXcgRGF0YVZpZXcodGhpcy5fYnVmZmVyLHRoaXMuX2J5dGVPZmZzZXQpLHRoaXMuX2J5dGVMZW5ndGg9dGhpcy5fYnl0ZU9mZnNldCtlLmJ5dGVMZW5ndGh9fSkscy5wcm90b3R5cGUuc2Vlaz1mdW5jdGlvbihlKXt2YXIgdD1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuYnl0ZUxlbmd0aCxlKSk7dGhpcy5wb3NpdGlvbj1pc05hTih0KXx8IWlzRmluaXRlKHQpPzA6dH0scy5wcm90b3R5cGUuaXNFb2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3NpdGlvbj49dGhpcy5fYnl0ZUxlbmd0aH0scy5wcm90b3R5cGUubWFwVWludDhBcnJheT1mdW5jdGlvbihlKXt0aGlzLl9yZWFsbG9jKGUqMSk7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUpO3JldHVybiB0aGlzLnBvc2l0aW9uKz1lKjEsdH0scy5wcm90b3R5cGUucmVhZEludDMyQXJyYXk9ZnVuY3Rpb24oZSx0KXtlPWU/P3RoaXMuYnl0ZUxlbmd0aC10aGlzLnBvc2l0aW9uLzQ7dmFyIGk9bmV3IEludDMyQXJyYXkoZSk7cmV0dXJuIHMubWVtY3B5KGkuYnVmZmVyLDAsdGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSppLkJZVEVTX1BFUl9FTEVNRU5UKSxzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWkuYnl0ZUxlbmd0aCxpfSxzLnByb3RvdHlwZS5yZWFkSW50MTZBcnJheT1mdW5jdGlvbihlLHQpe2U9ZT8/dGhpcy5ieXRlTGVuZ3RoLXRoaXMucG9zaXRpb24vMjt2YXIgaT1uZXcgSW50MTZBcnJheShlKTtyZXR1cm4gcy5tZW1jcHkoaS5idWZmZXIsMCx0aGlzLmJ1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlKmkuQllURVNfUEVSX0VMRU1FTlQpLHMuYXJyYXlUb05hdGl2ZShpLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9aS5ieXRlTGVuZ3RoLGl9LHMucHJvdG90eXBlLnJlYWRJbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7ZT1lPz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbjt2YXIgdD1uZXcgSW50OEFycmF5KGUpO3JldHVybiBzLm1lbWNweSh0LmJ1ZmZlciwwLHRoaXMuYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUqdC5CWVRFU19QRVJfRUxFTUVOVCksdGhpcy5wb3NpdGlvbis9dC5ieXRlTGVuZ3RoLHR9LHMucHJvdG90eXBlLnJlYWRVaW50MzJBcnJheT1mdW5jdGlvbihlLHQpe2U9ZT8/dGhpcy5ieXRlTGVuZ3RoLXRoaXMucG9zaXRpb24vNDt2YXIgaT1uZXcgVWludDMyQXJyYXkoZSk7cmV0dXJuIHMubWVtY3B5KGkuYnVmZmVyLDAsdGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSppLkJZVEVTX1BFUl9FTEVNRU5UKSxzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWkuYnl0ZUxlbmd0aCxpfSxzLnByb3RvdHlwZS5yZWFkVWludDE2QXJyYXk9ZnVuY3Rpb24oZSx0KXtlPWU/P3RoaXMuYnl0ZUxlbmd0aC10aGlzLnBvc2l0aW9uLzI7dmFyIGk9bmV3IFVpbnQxNkFycmF5KGUpO3JldHVybiBzLm1lbWNweShpLmJ1ZmZlciwwLHRoaXMuYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUqaS5CWVRFU19QRVJfRUxFTUVOVCkscy5hcnJheVRvTmF0aXZlKGksdD8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz1pLmJ5dGVMZW5ndGgsaX0scy5wcm90b3R5cGUucmVhZFVpbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7ZT1lPz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbjt2YXIgdD1uZXcgVWludDhBcnJheShlKTtyZXR1cm4gcy5tZW1jcHkodC5idWZmZXIsMCx0aGlzLmJ1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlKnQuQllURVNfUEVSX0VMRU1FTlQpLHRoaXMucG9zaXRpb24rPXQuYnl0ZUxlbmd0aCx0fSxzLnByb3RvdHlwZS5yZWFkRmxvYXQ2NEFycmF5PWZ1bmN0aW9uKGUsdCl7ZT1lPz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbi84O3ZhciBpPW5ldyBGbG9hdDY0QXJyYXkoZSk7cmV0dXJuIHMubWVtY3B5KGkuYnVmZmVyLDAsdGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSppLkJZVEVTX1BFUl9FTEVNRU5UKSxzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWkuYnl0ZUxlbmd0aCxpfSxzLnByb3RvdHlwZS5yZWFkRmxvYXQzMkFycmF5PWZ1bmN0aW9uKGUsdCl7ZT1lPz90aGlzLmJ5dGVMZW5ndGgtdGhpcy5wb3NpdGlvbi80O3ZhciBpPW5ldyBGbG9hdDMyQXJyYXkoZSk7cmV0dXJuIHMubWVtY3B5KGkuYnVmZmVyLDAsdGhpcy5idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSppLkJZVEVTX1BFUl9FTEVNRU5UKSxzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWkuYnl0ZUxlbmd0aCxpfSxzLnByb3RvdHlwZS5yZWFkSW50MzI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZGF0YVZpZXcuZ2V0SW50MzIodGhpcy5wb3NpdGlvbixlPz90aGlzLmVuZGlhbm5lc3MpO3JldHVybiB0aGlzLnBvc2l0aW9uKz00LHR9LHMucHJvdG90eXBlLnJlYWRJbnQxNj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9kYXRhVmlldy5nZXRJbnQxNih0aGlzLnBvc2l0aW9uLGU/P3RoaXMuZW5kaWFubmVzcyk7cmV0dXJuIHRoaXMucG9zaXRpb24rPTIsdH0scy5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9kYXRhVmlldy5nZXRJbnQ4KHRoaXMucG9zaXRpb24pO3JldHVybiB0aGlzLnBvc2l0aW9uKz0xLGV9LHMucHJvdG90eXBlLnJlYWRVaW50MzI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZGF0YVZpZXcuZ2V0VWludDMyKHRoaXMucG9zaXRpb24sZT8/dGhpcy5lbmRpYW5uZXNzKTtyZXR1cm4gdGhpcy5wb3NpdGlvbis9NCx0fSxzLnByb3RvdHlwZS5yZWFkVWludDE2PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2RhdGFWaWV3LmdldFVpbnQxNih0aGlzLnBvc2l0aW9uLGU/P3RoaXMuZW5kaWFubmVzcyk7cmV0dXJuIHRoaXMucG9zaXRpb24rPTIsdH0scy5wcm90b3R5cGUucmVhZFVpbnQ4PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fZGF0YVZpZXcuZ2V0VWludDgodGhpcy5wb3NpdGlvbik7cmV0dXJuIHRoaXMucG9zaXRpb24rPTEsZX0scy5wcm90b3R5cGUucmVhZEZsb2F0MzI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZGF0YVZpZXcuZ2V0RmxvYXQzMih0aGlzLnBvc2l0aW9uLGU/P3RoaXMuZW5kaWFubmVzcyk7cmV0dXJuIHRoaXMucG9zaXRpb24rPTQsdH0scy5wcm90b3R5cGUucmVhZEZsb2F0NjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZGF0YVZpZXcuZ2V0RmxvYXQ2NCh0aGlzLnBvc2l0aW9uLGU/P3RoaXMuZW5kaWFubmVzcyk7cmV0dXJuIHRoaXMucG9zaXRpb24rPTgsdH0scy5lbmRpYW5uZXNzPW5ldyBJbnQ4QXJyYXkobmV3IEludDE2QXJyYXkoWzFdKS5idWZmZXIpWzBdPjAscy5tZW1jcHk9ZnVuY3Rpb24oZSx0LGksZix1KXt2YXIgdj1uZXcgVWludDhBcnJheShlLHQsdSkseT1uZXcgVWludDhBcnJheShpLGYsdSk7di5zZXQoeSl9LHMuYXJyYXlUb05hdGl2ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0PT10aGlzLmVuZGlhbm5lc3M/ZTp0aGlzLmZsaXBBcnJheUVuZGlhbm5lc3MoZSl9LHMubmF0aXZlVG9FbmRpYW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lbmRpYW5uZXNzPT10P2U6dGhpcy5mbGlwQXJyYXlFbmRpYW5uZXNzKGUpfSxzLmZsaXBBcnJheUVuZGlhbm5lc3M9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLGk9MDtpPGUuYnl0ZUxlbmd0aDtpKz1lLkJZVEVTX1BFUl9FTEVNRU5UKWZvcih2YXIgZj1pK2UuQllURVNfUEVSX0VMRU1FTlQtMSx1PWk7Zj51O2YtLSx1Kyspe3ZhciB2PXRbdV07dFt1XT10W2ZdLHRbZl09dn1yZXR1cm4gZX0scy5wcm90b3R5cGUuZmFpbHVyZVBvc2l0aW9uPTAsU3RyaW5nLmZyb21DaGFyQ29kZVVpbnQ4PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxpPTA7aTxlLmxlbmd0aDtpKyspdFtpXT1lW2ldO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9LHMucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09bnVsbHx8dD09IkFTQ0lJIj9TdHJpbmcuZnJvbUNoYXJDb2RlVWludDguYXBwbHkobnVsbCxbdGhpcy5tYXBVaW50OEFycmF5KGU/P3RoaXMuYnl0ZUxlbmd0aC10aGlzLnBvc2l0aW9uKV0pOm5ldyBUZXh0RGVjb2Rlcih0KS5kZWNvZGUodGhpcy5tYXBVaW50OEFycmF5KGUpKX0scy5wcm90b3R5cGUucmVhZENTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ieXRlTGVuZ3RoLXRoaXMucG9zaXRpb24saT1uZXcgVWludDhBcnJheSh0aGlzLl9idWZmZXIsdGhpcy5fYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uKSxmPXQ7ZSE9bnVsbCYmKGY9TWF0aC5taW4oZSx0KSk7Zm9yKHZhciB1PTA7dTxmJiZpW3VdIT09MDt1KyspO3ZhciB2PVN0cmluZy5mcm9tQ2hhckNvZGVVaW50OC5hcHBseShudWxsLFt0aGlzLm1hcFVpbnQ4QXJyYXkodSldKTtyZXR1cm4gZSE9bnVsbD90aGlzLnBvc2l0aW9uKz1mLXU6dSE9dCYmKHRoaXMucG9zaXRpb24rPTEpLHZ9O3ZhciBsPU1hdGgucG93KDIsMzIpO3MucHJvdG90eXBlLnJlYWRJbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRJbnQzMigpKmwrdGhpcy5yZWFkVWludDMyKCl9LHMucHJvdG90eXBlLnJlYWRVaW50NjQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkVWludDMyKCkqbCt0aGlzLnJlYWRVaW50MzIoKX0scy5wcm90b3R5cGUucmVhZEludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFVpbnQzMigpKmwrdGhpcy5yZWFkVWludDMyKCl9LHMucHJvdG90eXBlLnJlYWRVaW50MjQ9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWFkVWludDgoKTw8MTYpKyh0aGlzLnJlYWRVaW50OCgpPDw4KSt0aGlzLnJlYWRVaW50OCgpfSxuLkRhdGFTdHJlYW09cyxzLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBCbG9iKFt0aGlzLmJ1ZmZlcl0pO2lmKHdpbmRvdy5VUkwmJlVSTC5jcmVhdGVPYmplY3RVUkwpe3ZhciBpPXdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZiksZi5zZXRBdHRyaWJ1dGUoImhyZWYiLGkpLGYuc2V0QXR0cmlidXRlKCJkb3dubG9hZCIsZSksZi5zZXRBdHRyaWJ1dGUoInRhcmdldCIsIl9zZWxmIiksZi5jbGljaygpLHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKGkpfWVsc2UgdGhyb3ciRGF0YVN0cmVhbS5zYXZlOiBDYW4ndCBjcmVhdGUgb2JqZWN0IFVSTC4ifSxzLnByb3RvdHlwZS5fZHluYW1pY1NpemU9ITAsT2JqZWN0LmRlZmluZVByb3BlcnR5KHMucHJvdG90eXBlLCJkeW5hbWljU2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9keW5hbWljU2l6ZX0sc2V0OmZ1bmN0aW9uKGUpe2V8fHRoaXMuX3RyaW1BbGxvYygpLHRoaXMuX2R5bmFtaWNTaXplPWV9fSkscy5wcm90b3R5cGUuc2hpZnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5QnVmZmVyKHRoaXMuX2J5dGVMZW5ndGgtZSksaT1uZXcgVWludDhBcnJheSh0KSxmPW5ldyBVaW50OEFycmF5KHRoaXMuX2J1ZmZlcixlLGkubGVuZ3RoKTtpLnNldChmKSx0aGlzLmJ1ZmZlcj10LHRoaXMucG9zaXRpb24tPWV9LHMucHJvdG90eXBlLndyaXRlSW50MzJBcnJheT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX3JlYWxsb2MoZS5sZW5ndGgqNCksZSBpbnN0YW5jZW9mIEludDMyQXJyYXkmJnRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uJWUuQllURVNfUEVSX0VMRU1FTlQ9PT0wKXMubWVtY3B5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlLmJ1ZmZlciwwLGUuYnl0ZUxlbmd0aCksdGhpcy5tYXBJbnQzMkFycmF5KGUubGVuZ3RoLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy53cml0ZUludDMyKGVbaV0sdCl9LHMucHJvdG90eXBlLndyaXRlSW50MTZBcnJheT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX3JlYWxsb2MoZS5sZW5ndGgqMiksZSBpbnN0YW5jZW9mIEludDE2QXJyYXkmJnRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uJWUuQllURVNfUEVSX0VMRU1FTlQ9PT0wKXMubWVtY3B5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlLmJ1ZmZlciwwLGUuYnl0ZUxlbmd0aCksdGhpcy5tYXBJbnQxNkFycmF5KGUubGVuZ3RoLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy53cml0ZUludDE2KGVbaV0sdCl9LHMucHJvdG90eXBlLndyaXRlSW50OEFycmF5PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX3JlYWxsb2MoZS5sZW5ndGgqMSksZSBpbnN0YW5jZW9mIEludDhBcnJheSYmdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24lZS5CWVRFU19QRVJfRUxFTUVOVD09PTApcy5tZW1jcHkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUuYnVmZmVyLDAsZS5ieXRlTGVuZ3RoKSx0aGlzLm1hcEludDhBcnJheShlLmxlbmd0aCk7ZWxzZSBmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLndyaXRlSW50OChlW3RdKX0scy5wcm90b3R5cGUud3JpdGVVaW50MzJBcnJheT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX3JlYWxsb2MoZS5sZW5ndGgqNCksZSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5JiZ0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbiVlLkJZVEVTX1BFUl9FTEVNRU5UPT09MClzLm1lbWNweSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZS5idWZmZXIsMCxlLmJ5dGVMZW5ndGgpLHRoaXMubWFwVWludDMyQXJyYXkoZS5sZW5ndGgsdCk7ZWxzZSBmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl0aGlzLndyaXRlVWludDMyKGVbaV0sdCl9LHMucHJvdG90eXBlLndyaXRlVWludDE2QXJyYXk9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLl9yZWFsbG9jKGUubGVuZ3RoKjIpLGUgaW5zdGFuY2VvZiBVaW50MTZBcnJheSYmdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24lZS5CWVRFU19QRVJfRUxFTUVOVD09PTApcy5tZW1jcHkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUuYnVmZmVyLDAsZS5ieXRlTGVuZ3RoKSx0aGlzLm1hcFVpbnQxNkFycmF5KGUubGVuZ3RoLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy53cml0ZVVpbnQxNihlW2ldLHQpfSxzLnByb3RvdHlwZS53cml0ZVVpbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7aWYodGhpcy5fcmVhbGxvYyhlLmxlbmd0aCoxKSxlIGluc3RhbmNlb2YgVWludDhBcnJheSYmdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24lZS5CWVRFU19QRVJfRUxFTUVOVD09PTApcy5tZW1jcHkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUuYnVmZmVyLDAsZS5ieXRlTGVuZ3RoKSx0aGlzLm1hcFVpbnQ4QXJyYXkoZS5sZW5ndGgpO2Vsc2UgZm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy53cml0ZVVpbnQ4KGVbdF0pfSxzLnByb3RvdHlwZS53cml0ZUZsb2F0NjRBcnJheT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX3JlYWxsb2MoZS5sZW5ndGgqOCksZSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSYmdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24lZS5CWVRFU19QRVJfRUxFTUVOVD09PTApcy5tZW1jcHkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUuYnVmZmVyLDAsZS5ieXRlTGVuZ3RoKSx0aGlzLm1hcEZsb2F0NjRBcnJheShlLmxlbmd0aCx0KTtlbHNlIGZvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXRoaXMud3JpdGVGbG9hdDY0KGVbaV0sdCl9LHMucHJvdG90eXBlLndyaXRlRmxvYXQzMkFycmF5PWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fcmVhbGxvYyhlLmxlbmd0aCo0KSxlIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5JiZ0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbiVlLkJZVEVTX1BFUl9FTEVNRU5UPT09MClzLm1lbWNweSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZS5idWZmZXIsMCxlLmJ5dGVMZW5ndGgpLHRoaXMubWFwRmxvYXQzMkFycmF5KGUubGVuZ3RoLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy53cml0ZUZsb2F0MzIoZVtpXSx0KX0scy5wcm90b3R5cGUud3JpdGVJbnQzMj1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoNCksdGhpcy5fZGF0YVZpZXcuc2V0SW50MzIodGhpcy5wb3NpdGlvbixlLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9NH0scy5wcm90b3R5cGUud3JpdGVJbnQxNj1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoMiksdGhpcy5fZGF0YVZpZXcuc2V0SW50MTYodGhpcy5wb3NpdGlvbixlLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9Mn0scy5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUpe3RoaXMuX3JlYWxsb2MoMSksdGhpcy5fZGF0YVZpZXcuc2V0SW50OCh0aGlzLnBvc2l0aW9uLGUpLHRoaXMucG9zaXRpb24rPTF9LHMucHJvdG90eXBlLndyaXRlVWludDMyPWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhbGxvYyg0KSx0aGlzLl9kYXRhVmlldy5zZXRVaW50MzIodGhpcy5wb3NpdGlvbixlLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9NH0scy5wcm90b3R5cGUud3JpdGVVaW50MTY9ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWFsbG9jKDIpLHRoaXMuX2RhdGFWaWV3LnNldFVpbnQxNih0aGlzLnBvc2l0aW9uLGUsdD8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz0yfSxzLnByb3RvdHlwZS53cml0ZVVpbnQ4PWZ1bmN0aW9uKGUpe3RoaXMuX3JlYWxsb2MoMSksdGhpcy5fZGF0YVZpZXcuc2V0VWludDgodGhpcy5wb3NpdGlvbixlKSx0aGlzLnBvc2l0aW9uKz0xfSxzLnByb3RvdHlwZS53cml0ZUZsb2F0MzI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWFsbG9jKDQpLHRoaXMuX2RhdGFWaWV3LnNldEZsb2F0MzIodGhpcy5wb3NpdGlvbixlLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9NH0scy5wcm90b3R5cGUud3JpdGVGbG9hdDY0PWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhbGxvYyg4KSx0aGlzLl9kYXRhVmlldy5zZXRGbG9hdDY0KHRoaXMucG9zaXRpb24sZSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPTh9LHMucHJvdG90eXBlLndyaXRlVUNTMlN0cmluZz1mdW5jdGlvbihlLHQsaSl7aT09bnVsbCYmKGk9ZS5sZW5ndGgpO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGgmJmY8aTtmKyspdGhpcy53cml0ZVVpbnQxNihlLmNoYXJDb2RlQXQoZiksdCk7Zm9yKDtmPGk7ZisrKXRoaXMud3JpdGVVaW50MTYoMCl9LHMucHJvdG90eXBlLndyaXRlU3RyaW5nPWZ1bmN0aW9uKGUsdCxpKXt2YXIgZj0wO2lmKHQ9PW51bGx8fHQ9PSJBU0NJSSIpaWYoaSE9bnVsbCl7dmFyIHU9TWF0aC5taW4oZS5sZW5ndGgsaSk7Zm9yKGY9MDtmPHU7ZisrKXRoaXMud3JpdGVVaW50OChlLmNoYXJDb2RlQXQoZikpO2Zvcig7ZjxpO2YrKyl0aGlzLndyaXRlVWludDgoMCl9ZWxzZSBmb3IoZj0wO2Y8ZS5sZW5ndGg7ZisrKXRoaXMud3JpdGVVaW50OChlLmNoYXJDb2RlQXQoZikpO2Vsc2UgdGhpcy53cml0ZVVpbnQ4QXJyYXkobmV3IFRleHRFbmNvZGVyKHQpLmVuY29kZShlLnN1YnN0cmluZygwLGkpKSl9LHMucHJvdG90eXBlLndyaXRlQ1N0cmluZz1mdW5jdGlvbihlLHQpe3ZhciBpPTA7aWYodCE9bnVsbCl7dmFyIGY9TWF0aC5taW4oZS5sZW5ndGgsdCk7Zm9yKGk9MDtpPGY7aSsrKXRoaXMud3JpdGVVaW50OChlLmNoYXJDb2RlQXQoaSkpO2Zvcig7aTx0O2krKyl0aGlzLndyaXRlVWludDgoMCl9ZWxzZXtmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKXRoaXMud3JpdGVVaW50OChlLmNoYXJDb2RlQXQoaSkpO3RoaXMud3JpdGVVaW50OCgwKX19LHMucHJvdG90eXBlLndyaXRlU3RydWN0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKz0yKXt2YXIgZj1lW2krMV07dGhpcy53cml0ZVR5cGUoZix0W2VbaV1dLHQpfX0scy5wcm90b3R5cGUud3JpdGVUeXBlPWZ1bmN0aW9uKGUsdCxpKXt2YXIgZjtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIilyZXR1cm4gZSh0aGlzLHQpO2lmKHR5cGVvZiBlPT0ib2JqZWN0IiYmIShlIGluc3RhbmNlb2YgQXJyYXkpKXJldHVybiBlLnNldCh0aGlzLHQsaSk7dmFyIHU9bnVsbCx2PSJBU0NJSSIseT10aGlzLnBvc2l0aW9uO3N3aXRjaCh0eXBlb2YgZT09InN0cmluZyImJi86Ly50ZXN0KGUpJiYoZj1lLnNwbGl0KCI6IiksZT1mWzBdLHU9cGFyc2VJbnQoZlsxXSkpLHR5cGVvZiBlPT0ic3RyaW5nIiYmLywvLnRlc3QoZSkmJihmPWUuc3BsaXQoIiwiKSxlPWZbMF0sdj1wYXJzZUludChmWzFdKSksZSl7Y2FzZSJ1aW50OCI6dGhpcy53cml0ZVVpbnQ4KHQpO2JyZWFrO2Nhc2UiaW50OCI6dGhpcy53cml0ZUludDgodCk7YnJlYWs7Y2FzZSJ1aW50MTYiOnRoaXMud3JpdGVVaW50MTYodCx0aGlzLmVuZGlhbm5lc3MpO2JyZWFrO2Nhc2UiaW50MTYiOnRoaXMud3JpdGVJbnQxNih0LHRoaXMuZW5kaWFubmVzcyk7YnJlYWs7Y2FzZSJ1aW50MzIiOnRoaXMud3JpdGVVaW50MzIodCx0aGlzLmVuZGlhbm5lc3MpO2JyZWFrO2Nhc2UiaW50MzIiOnRoaXMud3JpdGVJbnQzMih0LHRoaXMuZW5kaWFubmVzcyk7YnJlYWs7Y2FzZSJmbG9hdDMyIjp0aGlzLndyaXRlRmxvYXQzMih0LHRoaXMuZW5kaWFubmVzcyk7YnJlYWs7Y2FzZSJmbG9hdDY0Ijp0aGlzLndyaXRlRmxvYXQ2NCh0LHRoaXMuZW5kaWFubmVzcyk7YnJlYWs7Y2FzZSJ1aW50MTZiZSI6dGhpcy53cml0ZVVpbnQxNih0LHMuQklHX0VORElBTik7YnJlYWs7Y2FzZSJpbnQxNmJlIjp0aGlzLndyaXRlSW50MTYodCxzLkJJR19FTkRJQU4pO2JyZWFrO2Nhc2UidWludDMyYmUiOnRoaXMud3JpdGVVaW50MzIodCxzLkJJR19FTkRJQU4pO2JyZWFrO2Nhc2UiaW50MzJiZSI6dGhpcy53cml0ZUludDMyKHQscy5CSUdfRU5ESUFOKTticmVhaztjYXNlImZsb2F0MzJiZSI6dGhpcy53cml0ZUZsb2F0MzIodCxzLkJJR19FTkRJQU4pO2JyZWFrO2Nhc2UiZmxvYXQ2NGJlIjp0aGlzLndyaXRlRmxvYXQ2NCh0LHMuQklHX0VORElBTik7YnJlYWs7Y2FzZSJ1aW50MTZsZSI6dGhpcy53cml0ZVVpbnQxNih0LHMuTElUVExFX0VORElBTik7YnJlYWs7Y2FzZSJpbnQxNmxlIjp0aGlzLndyaXRlSW50MTYodCxzLkxJVFRMRV9FTkRJQU4pO2JyZWFrO2Nhc2UidWludDMybGUiOnRoaXMud3JpdGVVaW50MzIodCxzLkxJVFRMRV9FTkRJQU4pO2JyZWFrO2Nhc2UiaW50MzJsZSI6dGhpcy53cml0ZUludDMyKHQscy5MSVRUTEVfRU5ESUFOKTticmVhaztjYXNlImZsb2F0MzJsZSI6dGhpcy53cml0ZUZsb2F0MzIodCxzLkxJVFRMRV9FTkRJQU4pO2JyZWFrO2Nhc2UiZmxvYXQ2NGxlIjp0aGlzLndyaXRlRmxvYXQ2NCh0LHMuTElUVExFX0VORElBTik7YnJlYWs7Y2FzZSJjc3RyaW5nIjp0aGlzLndyaXRlQ1N0cmluZyh0LHUpO2JyZWFrO2Nhc2Uic3RyaW5nIjp0aGlzLndyaXRlU3RyaW5nKHQsdix1KTticmVhaztjYXNlInUxNnN0cmluZyI6dGhpcy53cml0ZVVDUzJTdHJpbmcodCx0aGlzLmVuZGlhbm5lc3MsdSk7YnJlYWs7Y2FzZSJ1MTZzdHJpbmdsZSI6dGhpcy53cml0ZVVDUzJTdHJpbmcodCxzLkxJVFRMRV9FTkRJQU4sdSk7YnJlYWs7Y2FzZSJ1MTZzdHJpbmdiZSI6dGhpcy53cml0ZVVDUzJTdHJpbmcodCxzLkJJR19FTkRJQU4sdSk7YnJlYWs7ZGVmYXVsdDppZihlLmxlbmd0aD09Myl7Zm9yKHZhciBtPWVbMV0sYj0wO2I8dC5sZW5ndGg7YisrKXRoaXMud3JpdGVUeXBlKG0sdFtiXSk7YnJlYWt9ZWxzZXt0aGlzLndyaXRlU3RydWN0KGUsdCk7YnJlYWt9fXUhPW51bGwmJih0aGlzLnBvc2l0aW9uPXksdGhpcy5fcmVhbGxvYyh1KSx0aGlzLnBvc2l0aW9uPXkrdSl9LHMucHJvdG90eXBlLndyaXRlVWludDY0PWZ1bmN0aW9uKGUpe3ZhciB0PU1hdGguZmxvb3IoZS9sKTt0aGlzLndyaXRlVWludDMyKHQpLHRoaXMud3JpdGVVaW50MzIoZSY0Mjk0OTY3Mjk1KX0scy5wcm90b3R5cGUud3JpdGVVaW50MjQ9ZnVuY3Rpb24oZSl7dGhpcy53cml0ZVVpbnQ4KChlJjE2NzExNjgwKT4+MTYpLHRoaXMud3JpdGVVaW50OCgoZSY2NTI4MCk+PjgpLHRoaXMud3JpdGVVaW50OChlJjI1NSl9LHMucHJvdG90eXBlLmFkanVzdFVpbnQzMj1mdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMucG9zaXRpb247dGhpcy5zZWVrKGUpLHRoaXMud3JpdGVVaW50MzIodCksdGhpcy5zZWVrKGkpfSxzLnByb3RvdHlwZS5tYXBJbnQzMkFycmF5PWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhbGxvYyhlKjQpO3ZhciBpPW5ldyBJbnQzMkFycmF5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlKTtyZXR1cm4gcy5hcnJheVRvTmF0aXZlKGksdD8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz1lKjQsaX0scy5wcm90b3R5cGUubWFwSW50MTZBcnJheT1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoZSoyKTt2YXIgaT1uZXcgSW50MTZBcnJheSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSk7cmV0dXJuIHMuYXJyYXlUb05hdGl2ZShpLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9ZSoyLGl9LHMucHJvdG90eXBlLm1hcEludDhBcnJheT1mdW5jdGlvbihlKXt0aGlzLl9yZWFsbG9jKGUqMSk7dmFyIHQ9bmV3IEludDhBcnJheSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSk7cmV0dXJuIHRoaXMucG9zaXRpb24rPWUqMSx0fSxzLnByb3RvdHlwZS5tYXBVaW50MzJBcnJheT1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoZSo0KTt2YXIgaT1uZXcgVWludDMyQXJyYXkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUpO3JldHVybiBzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWUqNCxpfSxzLnByb3RvdHlwZS5tYXBVaW50MTZBcnJheT1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoZSoyKTt2YXIgaT1uZXcgVWludDE2QXJyYXkodGhpcy5fYnVmZmVyLHRoaXMuYnl0ZU9mZnNldCt0aGlzLnBvc2l0aW9uLGUpO3JldHVybiBzLmFycmF5VG9OYXRpdmUoaSx0Pz90aGlzLmVuZGlhbm5lc3MpLHRoaXMucG9zaXRpb24rPWUqMixpfSxzLnByb3RvdHlwZS5tYXBGbG9hdDY0QXJyYXk9ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWFsbG9jKGUqOCk7dmFyIGk9bmV3IEZsb2F0NjRBcnJheSh0aGlzLl9idWZmZXIsdGhpcy5ieXRlT2Zmc2V0K3RoaXMucG9zaXRpb24sZSk7cmV0dXJuIHMuYXJyYXlUb05hdGl2ZShpLHQ/P3RoaXMuZW5kaWFubmVzcyksdGhpcy5wb3NpdGlvbis9ZSo4LGl9LHMucHJvdG90eXBlLm1hcEZsb2F0MzJBcnJheT1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWxsb2MoZSo0KTt2YXIgaT1uZXcgRmxvYXQzMkFycmF5KHRoaXMuX2J1ZmZlcix0aGlzLmJ5dGVPZmZzZXQrdGhpcy5wb3NpdGlvbixlKTtyZXR1cm4gcy5hcnJheVRvTmF0aXZlKGksdD8/dGhpcy5lbmRpYW5uZXNzKSx0aGlzLnBvc2l0aW9uKz1lKjQsaX07dmFyIGQ9ZnVuY3Rpb24oZSl7dGhpcy5idWZmZXJzPVtdLHRoaXMuYnVmZmVySW5kZXg9LTEsZSYmKHRoaXMuaW5zZXJ0QnVmZmVyKGUpLHRoaXMuYnVmZmVySW5kZXg9MCl9O2QucHJvdG90eXBlPW5ldyBzKG5ldyBBcnJheUJ1ZmZlciwwLHMuQklHX0VORElBTiksZC5wcm90b3R5cGUuaW5pdGlhbGl6ZWQ9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gdGhpcy5idWZmZXJJbmRleD4tMT8hMDp0aGlzLmJ1ZmZlcnMubGVuZ3RoPjA/KGU9dGhpcy5idWZmZXJzWzBdLGUuZmlsZVN0YXJ0PT09MD8odGhpcy5idWZmZXI9ZSx0aGlzLmJ1ZmZlckluZGV4PTAsci5kZWJ1ZygiTXVsdGlCdWZmZXJTdHJlYW0iLCJTdHJlYW0gcmVhZHkgZm9yIHBhcnNpbmciKSwhMCk6KHIud2FybigiTXVsdGlCdWZmZXJTdHJlYW0iLCJUaGUgZmlyc3QgYnVmZmVyIHNob3VsZCBoYXZlIGEgZmlsZVN0YXJ0IG9mIDAiKSx0aGlzLmxvZ0J1ZmZlckxldmVsKCksITEpKTooci53YXJuKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIk5vIGJ1ZmZlciB0byBzdGFydCBwYXJzaW5nIGZyb20iKSx0aGlzLmxvZ0J1ZmZlckxldmVsKCksITEpfSxBcnJheUJ1ZmZlci5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtyLmRlYnVnKCJBcnJheUJ1ZmZlciIsIlRyeWluZyB0byBjcmVhdGUgYSBuZXcgYnVmZmVyIG9mIHNpemU6ICIrKGUuYnl0ZUxlbmd0aCt0LmJ5dGVMZW5ndGgpKTt2YXIgaT1uZXcgVWludDhBcnJheShlLmJ5dGVMZW5ndGgrdC5ieXRlTGVuZ3RoKTtyZXR1cm4gaS5zZXQobmV3IFVpbnQ4QXJyYXkoZSksMCksaS5zZXQobmV3IFVpbnQ4QXJyYXkodCksZS5ieXRlTGVuZ3RoKSxpLmJ1ZmZlcn0sZC5wcm90b3R5cGUucmVkdWNlQnVmZmVyPWZ1bmN0aW9uKGUsdCxpKXt2YXIgZjtyZXR1cm4gZj1uZXcgVWludDhBcnJheShpKSxmLnNldChuZXcgVWludDhBcnJheShlLHQsaSkpLGYuYnVmZmVyLmZpbGVTdGFydD1lLmZpbGVTdGFydCt0LGYuYnVmZmVyLnVzZWRCeXRlcz0wLGYuYnVmZmVyfSxkLnByb3RvdHlwZS5pbnNlcnRCdWZmZXI9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSEwLGk9MDtpPHRoaXMuYnVmZmVycy5sZW5ndGg7aSsrKXt2YXIgZj10aGlzLmJ1ZmZlcnNbaV07aWYoZS5maWxlU3RhcnQ8PWYuZmlsZVN0YXJ0KXtpZihlLmZpbGVTdGFydD09PWYuZmlsZVN0YXJ0KWlmKGUuYnl0ZUxlbmd0aD5mLmJ5dGVMZW5ndGgpe3RoaXMuYnVmZmVycy5zcGxpY2UoaSwxKSxpLS07Y29udGludWV9ZWxzZSByLndhcm4oIk11bHRpQnVmZmVyU3RyZWFtIiwiQnVmZmVyIChmaWxlU3RhcnQ6ICIrZS5maWxlU3RhcnQrIiAtIExlbmd0aDogIitlLmJ5dGVMZW5ndGgrIikgYWxyZWFkeSBhcHBlbmRlZCwgaWdub3JpbmciKTtlbHNlIGUuZmlsZVN0YXJ0K2UuYnl0ZUxlbmd0aDw9Zi5maWxlU3RhcnR8fChlPXRoaXMucmVkdWNlQnVmZmVyKGUsMCxmLmZpbGVTdGFydC1lLmZpbGVTdGFydCkpLHIuZGVidWcoIk11bHRpQnVmZmVyU3RyZWFtIiwiQXBwZW5kaW5nIG5ldyBidWZmZXIgKGZpbGVTdGFydDogIitlLmZpbGVTdGFydCsiIC0gTGVuZ3RoOiAiK2UuYnl0ZUxlbmd0aCsiKSIpLHRoaXMuYnVmZmVycy5zcGxpY2UoaSwwLGUpLGk9PT0wJiYodGhpcy5idWZmZXI9ZSk7dD0hMTticmVha31lbHNlIGlmKGUuZmlsZVN0YXJ0PGYuZmlsZVN0YXJ0K2YuYnl0ZUxlbmd0aCl7dmFyIHU9Zi5maWxlU3RhcnQrZi5ieXRlTGVuZ3RoLWUuZmlsZVN0YXJ0LHY9ZS5ieXRlTGVuZ3RoLXU7aWYodj4wKWU9dGhpcy5yZWR1Y2VCdWZmZXIoZSx1LHYpO2Vsc2V7dD0hMTticmVha319fXQmJihyLmRlYnVnKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIkFwcGVuZGluZyBuZXcgYnVmZmVyIChmaWxlU3RhcnQ6ICIrZS5maWxlU3RhcnQrIiAtIExlbmd0aDogIitlLmJ5dGVMZW5ndGgrIikiKSx0aGlzLmJ1ZmZlcnMucHVzaChlKSxpPT09MCYmKHRoaXMuYnVmZmVyPWUpKX0sZC5wcm90b3R5cGUubG9nQnVmZmVyTGV2ZWw9ZnVuY3Rpb24oZSl7dmFyIHQsaSxmLHUsdj1bXSx5LG09IiI7Zm9yKGY9MCx1PTAsdD0wO3Q8dGhpcy5idWZmZXJzLmxlbmd0aDt0KyspaT10aGlzLmJ1ZmZlcnNbdF0sdD09PTA/KHk9e30sdi5wdXNoKHkpLHkuc3RhcnQ9aS5maWxlU3RhcnQseS5lbmQ9aS5maWxlU3RhcnQraS5ieXRlTGVuZ3RoLG0rPSJbIit5LnN0YXJ0KyItIik6eS5lbmQ9PT1pLmZpbGVTdGFydD95LmVuZD1pLmZpbGVTdGFydCtpLmJ5dGVMZW5ndGg6KHk9e30seS5zdGFydD1pLmZpbGVTdGFydCxtKz12W3YubGVuZ3RoLTFdLmVuZC0xKyJdLCBbIit5LnN0YXJ0KyItIix5LmVuZD1pLmZpbGVTdGFydCtpLmJ5dGVMZW5ndGgsdi5wdXNoKHkpKSxmKz1pLnVzZWRCeXRlcyx1Kz1pLmJ5dGVMZW5ndGg7di5sZW5ndGg+MCYmKG0rPXkuZW5kLTErIl0iKTt2YXIgYj1lP3IuaW5mbzpyLmRlYnVnO3RoaXMuYnVmZmVycy5sZW5ndGg9PT0wP2IoIk11bHRpQnVmZmVyU3RyZWFtIiwiTm8gbW9yZSBidWZmZXIgaW4gbWVtb3J5Iik6YigiTXVsdGlCdWZmZXJTdHJlYW0iLCIiK3RoaXMuYnVmZmVycy5sZW5ndGgrIiBzdG9yZWQgYnVmZmVyKHMpICgiK2YrIi8iK3UrIiBieXRlcyksIGNvbnRpbnVvdXMgcmFuZ2VzOiAiK20pfSxkLnByb3RvdHlwZS5jbGVhbkJ1ZmZlcnM9ZnVuY3Rpb24oKXt2YXIgZSx0O2ZvcihlPTA7ZTx0aGlzLmJ1ZmZlcnMubGVuZ3RoO2UrKyl0PXRoaXMuYnVmZmVyc1tlXSx0LnVzZWRCeXRlcz09PXQuYnl0ZUxlbmd0aCYmKHIuZGVidWcoIk11bHRpQnVmZmVyU3RyZWFtIiwiUmVtb3ZpbmcgYnVmZmVyICMiK2UpLHRoaXMuYnVmZmVycy5zcGxpY2UoZSwxKSxlLS0pfSxkLnByb3RvdHlwZS5tZXJnZU5leHRCdWZmZXI9ZnVuY3Rpb24oKXt2YXIgZTtpZih0aGlzLmJ1ZmZlckluZGV4KzE8dGhpcy5idWZmZXJzLmxlbmd0aClpZihlPXRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4KzFdLGUuZmlsZVN0YXJ0PT09dGhpcy5idWZmZXIuZmlsZVN0YXJ0K3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpe3ZhciB0PXRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgsaT10aGlzLmJ1ZmZlci51c2VkQnl0ZXMsZj10aGlzLmJ1ZmZlci5maWxlU3RhcnQ7cmV0dXJuIHRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XT1BcnJheUJ1ZmZlci5jb25jYXQodGhpcy5idWZmZXIsZSksdGhpcy5idWZmZXI9dGhpcy5idWZmZXJzW3RoaXMuYnVmZmVySW5kZXhdLHRoaXMuYnVmZmVycy5zcGxpY2UodGhpcy5idWZmZXJJbmRleCsxLDEpLHRoaXMuYnVmZmVyLnVzZWRCeXRlcz1pLHRoaXMuYnVmZmVyLmZpbGVTdGFydD1mLHIuZGVidWcoIklTT0ZpbGUiLCJDb25jYXRlbmF0aW5nIGJ1ZmZlciBmb3IgYm94IHBhcnNpbmcgKGxlbmd0aDogIit0KyItPiIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCsiKSIpLCEwfWVsc2UgcmV0dXJuITE7ZWxzZSByZXR1cm4hMX0sZC5wcm90b3R5cGUuZmluZFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCxpKXt2YXIgZix1PW51bGwsdj0tMTtmb3IoZT09PSEwP2Y9MDpmPXRoaXMuYnVmZmVySW5kZXg7Zjx0aGlzLmJ1ZmZlcnMubGVuZ3RoJiYodT10aGlzLmJ1ZmZlcnNbZl0sdS5maWxlU3RhcnQ8PXQpOyl7dj1mLGkmJih1LmZpbGVTdGFydCt1LmJ5dGVMZW5ndGg8PXQ/dS51c2VkQnl0ZXM9dS5ieXRlTGVuZ3RoOnUudXNlZEJ5dGVzPXQtdS5maWxlU3RhcnQsdGhpcy5sb2dCdWZmZXJMZXZlbCgpKTtmKyt9cmV0dXJuIHYhPT0tMT8odT10aGlzLmJ1ZmZlcnNbdl0sdS5maWxlU3RhcnQrdS5ieXRlTGVuZ3RoPj10PyhyLmRlYnVnKCJNdWx0aUJ1ZmZlclN0cmVhbSIsIkZvdW5kIHBvc2l0aW9uIGluIGV4aXN0aW5nIGJ1ZmZlciAjIit2KSx2KTotMSk6LTF9LGQucHJvdG90eXBlLmZpbmRFbmRDb250aWd1b3VzQnVmPWZ1bmN0aW9uKGUpe3ZhciB0LGksZix1PWUhPT12b2lkIDA/ZTp0aGlzLmJ1ZmZlckluZGV4O2lmKGk9dGhpcy5idWZmZXJzW3VdLHRoaXMuYnVmZmVycy5sZW5ndGg+dSsxKWZvcih0PXUrMTt0PHRoaXMuYnVmZmVycy5sZW5ndGgmJihmPXRoaXMuYnVmZmVyc1t0XSxmLmZpbGVTdGFydD09PWkuZmlsZVN0YXJ0K2kuYnl0ZUxlbmd0aCk7dCsrKWk9ZjtyZXR1cm4gaS5maWxlU3RhcnQraS5ieXRlTGVuZ3RofSxkLnByb3RvdHlwZS5nZXRFbmRGaWxlUG9zaXRpb25BZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpbmRQb3NpdGlvbighMCxlLCExKTtyZXR1cm4gdCE9PS0xP3RoaXMuZmluZEVuZENvbnRpZ3VvdXNCdWYodCk6ZX0sZC5wcm90b3R5cGUuYWRkVXNlZEJ5dGVzPWZ1bmN0aW9uKGUpe3RoaXMuYnVmZmVyLnVzZWRCeXRlcys9ZSx0aGlzLmxvZ0J1ZmZlckxldmVsKCl9LGQucHJvdG90eXBlLnNldEFsbFVzZWRCeXRlcz1mdW5jdGlvbigpe3RoaXMuYnVmZmVyLnVzZWRCeXRlcz10aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoLHRoaXMubG9nQnVmZmVyTGV2ZWwoKX0sZC5wcm90b3R5cGUuc2Vlaz1mdW5jdGlvbihlLHQsaSl7dmFyIGY7cmV0dXJuIGY9dGhpcy5maW5kUG9zaXRpb24odCxlLGkpLGYhPT0tMT8odGhpcy5idWZmZXI9dGhpcy5idWZmZXJzW2ZdLHRoaXMuYnVmZmVySW5kZXg9Zix0aGlzLnBvc2l0aW9uPWUtdGhpcy5idWZmZXIuZmlsZVN0YXJ0LHIuZGVidWcoIk11bHRpQnVmZmVyU3RyZWFtIiwiUmVwb3NpdGlvbmluZyBwYXJzZXIgYXQgYnVmZmVyIHBvc2l0aW9uOiAiK3RoaXMucG9zaXRpb24pLCEwKTooci5kZWJ1ZygiTXVsdGlCdWZmZXJTdHJlYW0iLCJQb3NpdGlvbiAiK2UrIiBub3QgZm91bmQgaW4gYnVmZmVyZWQgZGF0YSIpLCExKX0sZC5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLmJ1ZmZlckluZGV4PT09LTF8fHRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XT09PW51bGwpdGhyb3ciRXJyb3IgYWNjZXNzaW5nIHBvc2l0aW9uIGluIHRoZSBNdWx0aUJ1ZmZlclN0cmVhbSI7cmV0dXJuIHRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XS5maWxlU3RhcnQrdGhpcy5wb3NpdGlvbn0sZC5wcm90b3R5cGUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnl0ZUxlbmd0aH0sZC5wcm90b3R5cGUuZ2V0RW5kUG9zaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLmJ1ZmZlckluZGV4PT09LTF8fHRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XT09PW51bGwpdGhyb3ciRXJyb3IgYWNjZXNzaW5nIHBvc2l0aW9uIGluIHRoZSBNdWx0aUJ1ZmZlclN0cmVhbSI7cmV0dXJuIHRoaXMuYnVmZmVyc1t0aGlzLmJ1ZmZlckluZGV4XS5maWxlU3RhcnQrdGhpcy5ieXRlTGVuZ3RofSxuLk11bHRpQnVmZmVyU3RyZWFtPWQ7dmFyIGg9ZnVuY3Rpb24oKXt2YXIgZT0zLHQ9NCxpPTUsZj02LHU9W107dVtlXT0iRVNfRGVzY3JpcHRvciIsdVt0XT0iRGVjb2RlckNvbmZpZ0Rlc2NyaXB0b3IiLHVbaV09IkRlY29kZXJTcGVjaWZpY0luZm8iLHVbZl09IlNMQ29uZmlnRGVzY3JpcHRvciIsdGhpcy5nZXREZXNjcmlwdG9yTmFtZT1mdW5jdGlvbihtKXtyZXR1cm4gdVttXX07dmFyIHY9dGhpcyx5PXt9O3JldHVybiB0aGlzLnBhcnNlT25lRGVzY3JpcHRvcj1mdW5jdGlvbihtKXt2YXIgYj0wLHgsUyxVO2Zvcih4PW0ucmVhZFVpbnQ4KCksVT1tLnJlYWRVaW50OCgpO1UmMTI4OyliPShVJjEyNyk8PDcsVT1tLnJlYWRVaW50OCgpO3JldHVybiBiKz1VJjEyNyxyLmRlYnVnKCJNUEVHNERlc2NyaXB0b3JQYXJzZXIiLCJGb3VuZCAiKyh1W3hdfHwiRGVzY3JpcHRvciAiK3gpKyIsIHNpemUgIitiKyIgYXQgcG9zaXRpb24gIittLmdldFBvc2l0aW9uKCkpLHVbeF0/Uz1uZXcgeVt1W3hdXShiKTpTPW5ldyB5LkRlc2NyaXB0b3IoYiksUy5wYXJzZShtKSxTfSx5LkRlc2NyaXB0b3I9ZnVuY3Rpb24obSxiKXt0aGlzLnRhZz1tLHRoaXMuc2l6ZT1iLHRoaXMuZGVzY3M9W119LHkuRGVzY3JpcHRvci5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24obSl7dGhpcy5kYXRhPW0ucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplKX0seS5EZXNjcmlwdG9yLnByb3RvdHlwZS5maW5kRGVzY3JpcHRvcj1mdW5jdGlvbihtKXtmb3IodmFyIGI9MDtiPHRoaXMuZGVzY3MubGVuZ3RoO2IrKylpZih0aGlzLmRlc2NzW2JdLnRhZz09bSlyZXR1cm4gdGhpcy5kZXNjc1tiXTtyZXR1cm4gbnVsbH0seS5EZXNjcmlwdG9yLnByb3RvdHlwZS5wYXJzZVJlbWFpbmluZ0Rlc2NyaXB0b3JzPWZ1bmN0aW9uKG0pe2Zvcih2YXIgYj1tLnBvc2l0aW9uO20ucG9zaXRpb248Yit0aGlzLnNpemU7KXt2YXIgeD12LnBhcnNlT25lRGVzY3JpcHRvcihtKTt0aGlzLmRlc2NzLnB1c2goeCl9fSx5LkVTX0Rlc2NyaXB0b3I9ZnVuY3Rpb24obSl7eS5EZXNjcmlwdG9yLmNhbGwodGhpcyxlLG0pfSx5LkVTX0Rlc2NyaXB0b3IucHJvdG90eXBlPW5ldyB5LkRlc2NyaXB0b3IseS5FU19EZXNjcmlwdG9yLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihtKXtpZih0aGlzLkVTX0lEPW0ucmVhZFVpbnQxNigpLHRoaXMuZmxhZ3M9bS5yZWFkVWludDgoKSx0aGlzLnNpemUtPTMsdGhpcy5mbGFncyYxMjg/KHRoaXMuZGVwZW5kc09uX0VTX0lEPW0ucmVhZFVpbnQxNigpLHRoaXMuc2l6ZS09Mik6dGhpcy5kZXBlbmRzT25fRVNfSUQ9MCx0aGlzLmZsYWdzJjY0KXt2YXIgYj1tLnJlYWRVaW50OCgpO3RoaXMuVVJMPW0ucmVhZFN0cmluZyhiKSx0aGlzLnNpemUtPWIrMX1lbHNlIHRoaXMuVVJMPSIiO3RoaXMuZmxhZ3MmMzI/KHRoaXMuT0NSX0VTX0lEPW0ucmVhZFVpbnQxNigpLHRoaXMuc2l6ZS09Mik6dGhpcy5PQ1JfRVNfSUQ9MCx0aGlzLnBhcnNlUmVtYWluaW5nRGVzY3JpcHRvcnMobSl9LHkuRVNfRGVzY3JpcHRvci5wcm90b3R5cGUuZ2V0T1RJPWZ1bmN0aW9uKG0pe3ZhciBiPXRoaXMuZmluZERlc2NyaXB0b3IodCk7cmV0dXJuIGI/Yi5vdGk6MH0seS5FU19EZXNjcmlwdG9yLnByb3RvdHlwZS5nZXRBdWRpb0NvbmZpZz1mdW5jdGlvbihtKXt2YXIgYj10aGlzLmZpbmREZXNjcmlwdG9yKHQpO2lmKCFiKXJldHVybiBudWxsO3ZhciB4PWIuZmluZERlc2NyaXB0b3IoaSk7aWYoeCYmeC5kYXRhKXt2YXIgUz0oeC5kYXRhWzBdJjI0OCk+PjM7cmV0dXJuIFM9PT0zMSYmeC5kYXRhLmxlbmd0aD49MiYmKFM9MzIrKCh4LmRhdGFbMF0mNyk8PDMpKygoeC5kYXRhWzFdJjIyNCk+PjUpKSxTfWVsc2UgcmV0dXJuIG51bGx9LHkuRGVjb2RlckNvbmZpZ0Rlc2NyaXB0b3I9ZnVuY3Rpb24obSl7eS5EZXNjcmlwdG9yLmNhbGwodGhpcyx0LG0pfSx5LkRlY29kZXJDb25maWdEZXNjcmlwdG9yLnByb3RvdHlwZT1uZXcgeS5EZXNjcmlwdG9yLHkuRGVjb2RlckNvbmZpZ0Rlc2NyaXB0b3IucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKG0pe3RoaXMub3RpPW0ucmVhZFVpbnQ4KCksdGhpcy5zdHJlYW1UeXBlPW0ucmVhZFVpbnQ4KCksdGhpcy5idWZmZXJTaXplPW0ucmVhZFVpbnQyNCgpLHRoaXMubWF4Qml0cmF0ZT1tLnJlYWRVaW50MzIoKSx0aGlzLmF2Z0JpdHJhdGU9bS5yZWFkVWludDMyKCksdGhpcy5zaXplLT0xMyx0aGlzLnBhcnNlUmVtYWluaW5nRGVzY3JpcHRvcnMobSl9LHkuRGVjb2RlclNwZWNpZmljSW5mbz1mdW5jdGlvbihtKXt5LkRlc2NyaXB0b3IuY2FsbCh0aGlzLGksbSl9LHkuRGVjb2RlclNwZWNpZmljSW5mby5wcm90b3R5cGU9bmV3IHkuRGVzY3JpcHRvcix5LlNMQ29uZmlnRGVzY3JpcHRvcj1mdW5jdGlvbihtKXt5LkRlc2NyaXB0b3IuY2FsbCh0aGlzLGYsbSl9LHkuU0xDb25maWdEZXNjcmlwdG9yLnByb3RvdHlwZT1uZXcgeS5EZXNjcmlwdG9yLHRoaXN9O24uTVBFRzREZXNjcmlwdG9yUGFyc2VyPWg7dmFyIG89e0VSUl9JTlZBTElEX0RBVEE6LTEsRVJSX05PVF9FTk9VR0hfREFUQTowLE9LOjEsQkFTSUNfQk9YRVM6WyJtZGF0IiwiaWRhdCIsImZyZWUiLCJza2lwIiwibWVjbyIsInN0cmsiXSxGVUxMX0JPWEVTOlsiaG1oZCIsIm5taGQiLCJpb2RzIiwieG1sICIsImJ4bWwiLCJpcHJvIiwibWVyZSJdLENPTlRBSU5FUl9CT1hFUzpbWyJtb292IixbInRyYWsiLCJwc3NoIl1dLFsidHJhayJdLFsiZWR0cyJdLFsibWRpYSJdLFsibWluZiJdLFsiZGluZiJdLFsic3RibCIsWyJzZ3BkIiwic2JncCJdXSxbIm12ZXgiLFsidHJleCJdXSxbIm1vb2YiLFsidHJhZiJdXSxbInRyYWYiLFsidHJ1biIsInNncGQiLCJzYmdwIl1dLFsidnR0YyJdLFsidHJlZiJdLFsiaXJlZiJdLFsibWZyYSIsWyJ0ZnJhIl1dLFsibWVjbyJdLFsiaG50aSJdLFsiaGluZiJdLFsic3RyayJdLFsic3RyZCJdLFsic2luZiJdLFsicmluZiJdLFsic2NoaSJdLFsidHJnciJdLFsidWR0YSIsWyJraW5kIl1dLFsiaXBycCIsWyJpcG1hIl1dLFsiaXBjbyJdXSxib3hDb2RlczpbXSxmdWxsQm94Q29kZXM6W10sY29udGFpbmVyQm94Q29kZXM6W10sc2FtcGxlRW50cnlDb2Rlczp7fSxzYW1wbGVHcm91cEVudHJ5Q29kZXM6W10sdHJhY2tHcm91cFR5cGVzOltdLFVVSURCb3hlczp7fSxVVUlEczpbXSxpbml0aWFsaXplOmZ1bmN0aW9uKCl7by5GdWxsQm94LnByb3RvdHlwZT1uZXcgby5Cb3gsby5Db250YWluZXJCb3gucHJvdG90eXBlPW5ldyBvLkJveCxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZT1uZXcgby5Cb3gsby5UcmFja0dyb3VwVHlwZUJveC5wcm90b3R5cGU9bmV3IG8uRnVsbEJveCxvLkJBU0lDX0JPWEVTLmZvckVhY2goZnVuY3Rpb24oZSl7by5jcmVhdGVCb3hDdG9yKGUpfSksby5GVUxMX0JPWEVTLmZvckVhY2goZnVuY3Rpb24oZSl7by5jcmVhdGVGdWxsQm94Q3RvcihlKX0pLG8uQ09OVEFJTkVSX0JPWEVTLmZvckVhY2goZnVuY3Rpb24oZSl7by5jcmVhdGVDb250YWluZXJCb3hDdG9yKGVbMF0sbnVsbCxlWzFdKX0pfSxCb3g6ZnVuY3Rpb24oZSx0LGkpe3RoaXMudHlwZT1lLHRoaXMuc2l6ZT10LHRoaXMudXVpZD1pfSxGdWxsQm94OmZ1bmN0aW9uKGUsdCxpKXtvLkJveC5jYWxsKHRoaXMsZSx0LGkpLHRoaXMuZmxhZ3M9MCx0aGlzLnZlcnNpb249MH0sQ29udGFpbmVyQm94OmZ1bmN0aW9uKGUsdCxpKXtvLkJveC5jYWxsKHRoaXMsZSx0LGkpLHRoaXMuYm94ZXM9W119LFNhbXBsZUVudHJ5OmZ1bmN0aW9uKGUsdCxpLGYpe28uQ29udGFpbmVyQm94LmNhbGwodGhpcyxlLHQpLHRoaXMuaGRyX3NpemU9aSx0aGlzLnN0YXJ0PWZ9LFNhbXBsZUdyb3VwRW50cnk6ZnVuY3Rpb24oZSl7dGhpcy5ncm91cGluZ190eXBlPWV9LFRyYWNrR3JvdXBUeXBlQm94OmZ1bmN0aW9uKGUsdCl7by5GdWxsQm94LmNhbGwodGhpcyxlLHQpfSxjcmVhdGVCb3hDdG9yOmZ1bmN0aW9uKGUsdCl7by5ib3hDb2Rlcy5wdXNoKGUpLG9bZSsiQm94Il09ZnVuY3Rpb24oaSl7by5Cb3guY2FsbCh0aGlzLGUsaSl9LG9bZSsiQm94Il0ucHJvdG90eXBlPW5ldyBvLkJveCx0JiYob1tlKyJCb3giXS5wcm90b3R5cGUucGFyc2U9dCl9LGNyZWF0ZUZ1bGxCb3hDdG9yOmZ1bmN0aW9uKGUsdCl7b1tlKyJCb3giXT1mdW5jdGlvbihpKXtvLkZ1bGxCb3guY2FsbCh0aGlzLGUsaSl9LG9bZSsiQm94Il0ucHJvdG90eXBlPW5ldyBvLkZ1bGxCb3gsb1tlKyJCb3giXS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oaSl7dGhpcy5wYXJzZUZ1bGxIZWFkZXIoaSksdCYmdC5jYWxsKHRoaXMsaSl9fSxhZGRTdWJCb3hBcnJheXM6ZnVuY3Rpb24oZSl7aWYoZSl7dGhpcy5zdWJCb3hOYW1lcz1lO2Zvcih2YXIgdD1lLmxlbmd0aCxpPTA7aTx0O2krKyl0aGlzW2VbaV0rInMiXT1bXX19LGNyZWF0ZUNvbnRhaW5lckJveEN0b3I6ZnVuY3Rpb24oZSx0LGkpe29bZSsiQm94Il09ZnVuY3Rpb24oZil7by5Db250YWluZXJCb3guY2FsbCh0aGlzLGUsZiksby5hZGRTdWJCb3hBcnJheXMuY2FsbCh0aGlzLGkpfSxvW2UrIkJveCJdLnByb3RvdHlwZT1uZXcgby5Db250YWluZXJCb3gsdCYmKG9bZSsiQm94Il0ucHJvdG90eXBlLnBhcnNlPXQpfSxjcmVhdGVNZWRpYVNhbXBsZUVudHJ5Q3RvcjpmdW5jdGlvbihlLHQsaSl7by5zYW1wbGVFbnRyeUNvZGVzW2VdPVtdLG9bZSsiU2FtcGxlRW50cnkiXT1mdW5jdGlvbihmLHUpe28uU2FtcGxlRW50cnkuY2FsbCh0aGlzLGYsdSksby5hZGRTdWJCb3hBcnJheXMuY2FsbCh0aGlzLGkpfSxvW2UrIlNhbXBsZUVudHJ5Il0ucHJvdG90eXBlPW5ldyBvLlNhbXBsZUVudHJ5LHQmJihvW2UrIlNhbXBsZUVudHJ5Il0ucHJvdG90eXBlLnBhcnNlPXQpfSxjcmVhdGVTYW1wbGVFbnRyeUN0b3I6ZnVuY3Rpb24oZSx0LGksZil7by5zYW1wbGVFbnRyeUNvZGVzW2VdLnB1c2godCksb1t0KyJTYW1wbGVFbnRyeSJdPWZ1bmN0aW9uKHUpe29bZSsiU2FtcGxlRW50cnkiXS5jYWxsKHRoaXMsdCx1KSxvLmFkZFN1YkJveEFycmF5cy5jYWxsKHRoaXMsZil9LG9bdCsiU2FtcGxlRW50cnkiXS5wcm90b3R5cGU9bmV3IG9bZSsiU2FtcGxlRW50cnkiXSxpJiYob1t0KyJTYW1wbGVFbnRyeSJdLnByb3RvdHlwZS5wYXJzZT1pKX0sY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yOmZ1bmN0aW9uKGUsdCxpKXtvLmNyZWF0ZVNhbXBsZUVudHJ5Q3Rvci5jYWxsKHRoaXMsZSx0LGksWyJzaW5mIl0pfSxjcmVhdGVTYW1wbGVHcm91cEN0b3I6ZnVuY3Rpb24oZSx0KXtvW2UrIlNhbXBsZUdyb3VwRW50cnkiXT1mdW5jdGlvbihpKXtvLlNhbXBsZUdyb3VwRW50cnkuY2FsbCh0aGlzLGUsaSl9LG9bZSsiU2FtcGxlR3JvdXBFbnRyeSJdLnByb3RvdHlwZT1uZXcgby5TYW1wbGVHcm91cEVudHJ5LHQmJihvW2UrIlNhbXBsZUdyb3VwRW50cnkiXS5wcm90b3R5cGUucGFyc2U9dCl9LGNyZWF0ZVRyYWNrR3JvdXBDdG9yOmZ1bmN0aW9uKGUsdCl7b1tlKyJUcmFja0dyb3VwVHlwZUJveCJdPWZ1bmN0aW9uKGkpe28uVHJhY2tHcm91cFR5cGVCb3guY2FsbCh0aGlzLGUsaSl9LG9bZSsiVHJhY2tHcm91cFR5cGVCb3giXS5wcm90b3R5cGU9bmV3IG8uVHJhY2tHcm91cFR5cGVCb3gsdCYmKG9bZSsiVHJhY2tHcm91cFR5cGVCb3giXS5wcm90b3R5cGUucGFyc2U9dCl9LGNyZWF0ZVVVSURCb3g6ZnVuY3Rpb24oZSx0LGksZil7by5VVUlEcy5wdXNoKGUpLG8uVVVJREJveGVzW2VdPWZ1bmN0aW9uKHUpe3Q/by5GdWxsQm94LmNhbGwodGhpcywidXVpZCIsdSxlKTppP28uQ29udGFpbmVyQm94LmNhbGwodGhpcywidXVpZCIsdSxlKTpvLkJveC5jYWxsKHRoaXMsInV1aWQiLHUsZSl9LG8uVVVJREJveGVzW2VdLnByb3RvdHlwZT10P25ldyBvLkZ1bGxCb3g6aT9uZXcgby5Db250YWluZXJCb3g6bmV3IG8uQm94LGYmJih0P28uVVVJREJveGVzW2VdLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih1KXt0aGlzLnBhcnNlRnVsbEhlYWRlcih1KSxmJiZmLmNhbGwodGhpcyx1KX06by5VVUlEQm94ZXNbZV0ucHJvdG90eXBlLnBhcnNlPWYpfX07by5pbml0aWFsaXplKCksby5US0hEX0ZMQUdfRU5BQkxFRD0xLG8uVEtIRF9GTEFHX0lOX01PVklFPTIsby5US0hEX0ZMQUdfSU5fUFJFVklFVz00LG8uVEZIRF9GTEFHX0JBU0VfREFUQV9PRkZTRVQ9MSxvLlRGSERfRkxBR19TQU1QTEVfREVTQz0yLG8uVEZIRF9GTEFHX1NBTVBMRV9EVVI9OCxvLlRGSERfRkxBR19TQU1QTEVfU0laRT0xNixvLlRGSERfRkxBR19TQU1QTEVfRkxBR1M9MzIsby5URkhEX0ZMQUdfRFVSX0VNUFRZPTY1NTM2LG8uVEZIRF9GTEFHX0RFRkFVTFRfQkFTRV9JU19NT09GPTEzMTA3MixvLlRSVU5fRkxBR1NfREFUQV9PRkZTRVQ9MSxvLlRSVU5fRkxBR1NfRklSU1RfRkxBRz00LG8uVFJVTl9GTEFHU19EVVJBVElPTj0yNTYsby5UUlVOX0ZMQUdTX1NJWkU9NTEyLG8uVFJVTl9GTEFHU19GTEFHUz0xMDI0LG8uVFJVTl9GTEFHU19DVFNfT0ZGU0VUPTIwNDgsby5Cb3gucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGRCb3gobmV3IG9bZSsiQm94Il0pfSxvLkJveC5wcm90b3R5cGUuYWRkQm94PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmJveGVzLnB1c2goZSksdGhpc1tlLnR5cGUrInMiXT90aGlzW2UudHlwZSsicyJdLnB1c2goZSk6dGhpc1tlLnR5cGVdPWUsZX0sby5Cb3gucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzW2VdPXQsdGhpc30sby5Cb3gucHJvdG90eXBlLmFkZEVudHJ5PWZ1bmN0aW9uKGUsdCl7dmFyIGk9dHx8ImVudHJpZXMiO3JldHVybiB0aGlzW2ldfHwodGhpc1tpXT1bXSksdGhpc1tpXS5wdXNoKGUpLHRoaXN9LG4uQm94UGFyc2VyPW8sby5wYXJzZVVVSUQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG8ucGFyc2VIZXgxNihlKX0sby5wYXJzZUhleDE2PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0iIixpPTA7aTwxNjtpKyspe3ZhciBmPWUucmVhZFVpbnQ4KCkudG9TdHJpbmcoMTYpO3QrPWYubGVuZ3RoPT09MT8iMCIrZjpmfXJldHVybiB0fSxvLnBhcnNlT25lQm94PWZ1bmN0aW9uKGUsdCxpKXt2YXIgZix1PWUuZ2V0UG9zaXRpb24oKSx2PTAseSxtO2lmKGUuZ2V0RW5kUG9zaXRpb24oKS11PDgpcmV0dXJuIHIuZGVidWcoIkJveFBhcnNlciIsIk5vdCBlbm91Z2ggZGF0YSBpbiBzdHJlYW0gdG8gcGFyc2UgdGhlIHR5cGUgYW5kIHNpemUgb2YgdGhlIGJveCIpLHtjb2RlOm8uRVJSX05PVF9FTk9VR0hfREFUQX07aWYoaSYmaTw4KXJldHVybiByLmRlYnVnKCJCb3hQYXJzZXIiLCJOb3QgZW5vdWdoIGJ5dGVzIGxlZnQgaW4gdGhlIHBhcmVudCBib3ggdG8gcGFyc2UgYSBuZXcgYm94Iikse2NvZGU6by5FUlJfTk9UX0VOT1VHSF9EQVRBfTt2YXIgYj1lLnJlYWRVaW50MzIoKSx4PWUucmVhZFN0cmluZyg0KSxTPXg7aWYoci5kZWJ1ZygiQm94UGFyc2VyIiwiRm91bmQgYm94IG9mIHR5cGUgJyIreCsiJyBhbmQgc2l6ZSAiK2IrIiBhdCBwb3NpdGlvbiAiK3UpLHY9OCx4PT0idXVpZCIpe2lmKGUuZ2V0RW5kUG9zaXRpb24oKS1lLmdldFBvc2l0aW9uKCk8MTZ8fGktdjwxNilyZXR1cm4gZS5zZWVrKHUpLHIuZGVidWcoIkJveFBhcnNlciIsIk5vdCBlbm91Z2ggYnl0ZXMgbGVmdCBpbiB0aGUgcGFyZW50IGJveCB0byBwYXJzZSBhIFVVSUQgYm94Iikse2NvZGU6by5FUlJfTk9UX0VOT1VHSF9EQVRBfTttPW8ucGFyc2VVVUlEKGUpLHYrPTE2LFM9bX1pZihiPT0xKXtpZihlLmdldEVuZFBvc2l0aW9uKCktZS5nZXRQb3NpdGlvbigpPDh8fGkmJmktdjw4KXJldHVybiBlLnNlZWsodSksci53YXJuKCJCb3hQYXJzZXIiLCdOb3QgZW5vdWdoIGRhdGEgaW4gc3RyZWFtIHRvIHBhcnNlIHRoZSBleHRlbmRlZCBzaXplIG9mIHRoZSAiJyt4KyciIGJveCcpLHtjb2RlOm8uRVJSX05PVF9FTk9VR0hfREFUQX07Yj1lLnJlYWRVaW50NjQoKSx2Kz04fWVsc2UgaWYoYj09PTApe2lmKGkpYj1pO2Vsc2UgaWYoeCE9PSJtZGF0IilyZXR1cm4gci5lcnJvcigiQm94UGFyc2VyIiwiVW5saW1pdGVkIGJveCBzaXplIG5vdCBzdXBwb3J0ZWQgZm9yIHR5cGU6ICciK3grIiciKSxmPW5ldyBvLkJveCh4LGIpLHtjb2RlOm8uT0ssYm94OmYsc2l6ZTpmLnNpemV9fXJldHVybiBiIT09MCYmYjx2PyhyLmVycm9yKCJCb3hQYXJzZXIiLCJCb3ggb2YgdHlwZSAiK3grIiBoYXMgYW4gaW52YWxpZCBzaXplICIrYisiICh0b28gc21hbGwgdG8gYmUgYSBib3gpIikse2NvZGU6by5FUlJfTk9UX0VOT1VHSF9EQVRBLHR5cGU6eCxzaXplOmIsaGRyX3NpemU6dixzdGFydDp1fSk6YiE9PTAmJmkmJmI+aT8oci5lcnJvcigiQm94UGFyc2VyIiwiQm94IG9mIHR5cGUgJyIreCsiJyBoYXMgYSBzaXplICIrYisiIGdyZWF0ZXIgdGhhbiBpdHMgY29udGFpbmVyIHNpemUgIitpKSx7Y29kZTpvLkVSUl9OT1RfRU5PVUdIX0RBVEEsdHlwZTp4LHNpemU6YixoZHJfc2l6ZTp2LHN0YXJ0OnV9KTpiIT09MCYmdStiPmUuZ2V0RW5kUG9zaXRpb24oKT8oZS5zZWVrKHUpLHIuaW5mbygiQm94UGFyc2VyIiwiTm90IGVub3VnaCBkYXRhIGluIHN0cmVhbSB0byBwYXJzZSB0aGUgZW50aXJlICciK3grIicgYm94Iikse2NvZGU6by5FUlJfTk9UX0VOT1VHSF9EQVRBLHR5cGU6eCxzaXplOmIsaGRyX3NpemU6dixzdGFydDp1fSk6dD97Y29kZTpvLk9LLHR5cGU6eCxzaXplOmIsaGRyX3NpemU6dixzdGFydDp1fToob1t4KyJCb3giXT9mPW5ldyBvW3grIkJveCJdKGIpOnghPT0idXVpZCI/KHIud2FybigiQm94UGFyc2VyIiwiVW5rbm93biBib3ggdHlwZTogJyIreCsiJyIpLGY9bmV3IG8uQm94KHgsYiksZi5oYXNfdW5wYXJzZWRfZGF0YT0hMCk6by5VVUlEQm94ZXNbbV0/Zj1uZXcgby5VVUlEQm94ZXNbbV0oYik6KHIud2FybigiQm94UGFyc2VyIiwiVW5rbm93biB1dWlkIHR5cGU6ICciK20rIiciKSxmPW5ldyBvLkJveCh4LGIpLGYudXVpZD1tLGYuaGFzX3VucGFyc2VkX2RhdGE9ITApLGYuaGRyX3NpemU9dixmLnN0YXJ0PXUsZi53cml0ZT09PW8uQm94LnByb3RvdHlwZS53cml0ZSYmZi50eXBlIT09Im1kYXQiJiYoci5pbmZvKCJCb3hQYXJzZXIiLCInIitTKyInIGJveCB3cml0aW5nIG5vdCB5ZXQgaW1wbGVtZW50ZWQsIGtlZXBpbmcgdW5wYXJzZWQgZGF0YSBpbiBtZW1vcnkgZm9yIGxhdGVyIHdyaXRlIiksZi5wYXJzZURhdGFBbmRSZXdpbmQoZSkpLGYucGFyc2UoZSkseT1lLmdldFBvc2l0aW9uKCktKGYuc3RhcnQrZi5zaXplKSx5PDA/KHIud2FybigiQm94UGFyc2VyIiwiUGFyc2luZyBvZiBib3ggJyIrUysiJyBkaWQgbm90IHJlYWQgdGhlIGVudGlyZSBpbmRpY2F0ZWQgYm94IGRhdGEgc2l6ZSAobWlzc2luZyAiKy15KyIgYnl0ZXMpLCBzZWVraW5nIGZvcndhcmQiKSxlLnNlZWsoZi5zdGFydCtmLnNpemUpKTp5PjAmJihyLmVycm9yKCJCb3hQYXJzZXIiLCJQYXJzaW5nIG9mIGJveCAnIitTKyInIHJlYWQgIit5KyIgbW9yZSBieXRlcyB0aGFuIHRoZSBpbmRpY2F0ZWQgYm94IGRhdGEgc2l6ZSwgc2Vla2luZyBiYWNrd2FyZHMiKSxmLnNpemUhPT0wJiZlLnNlZWsoZi5zdGFydCtmLnNpemUpKSx7Y29kZTpvLk9LLGJveDpmLHNpemU6Zi5zaXplfSl9LG8uQm94LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlKXt0aGlzLnR5cGUhPSJtZGF0Ij90aGlzLmRhdGE9ZS5yZWFkVWludDhBcnJheSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSk6dGhpcy5zaXplPT09MD9lLnNlZWsoZS5nZXRFbmRQb3NpdGlvbigpKTplLnNlZWsodGhpcy5zdGFydCt0aGlzLnNpemUpfSxvLkJveC5wcm90b3R5cGUucGFyc2VEYXRhQW5kUmV3aW5kPWZ1bmN0aW9uKGUpe3RoaXMuZGF0YT1lLnJlYWRVaW50OEFycmF5KHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKSxlLnBvc2l0aW9uLT10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZX0sby5GdWxsQm94LnByb3RvdHlwZS5wYXJzZURhdGFBbmRSZXdpbmQ9ZnVuY3Rpb24oZSl7dGhpcy5wYXJzZUZ1bGxIZWFkZXIoZSksdGhpcy5kYXRhPWUucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLXRoaXMuaGRyX3NpemUpLHRoaXMuaGRyX3NpemUtPTQsZS5wb3NpdGlvbi09dGhpcy5zaXplLXRoaXMuaGRyX3NpemV9LG8uRnVsbEJveC5wcm90b3R5cGUucGFyc2VGdWxsSGVhZGVyPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj1lLnJlYWRVaW50OCgpLHRoaXMuZmxhZ3M9ZS5yZWFkVWludDI0KCksdGhpcy5oZHJfc2l6ZSs9NH0sby5GdWxsQm94LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlKXt0aGlzLnBhcnNlRnVsbEhlYWRlcihlKSx0aGlzLmRhdGE9ZS5yZWFkVWludDhBcnJheSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSl9LG8uQ29udGFpbmVyQm94LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlKXtmb3IodmFyIHQsaTtlLmdldFBvc2l0aW9uKCk8dGhpcy5zdGFydCt0aGlzLnNpemU7KWlmKHQ9by5wYXJzZU9uZUJveChlLCExLHRoaXMuc2l6ZS0oZS5nZXRQb3NpdGlvbigpLXRoaXMuc3RhcnQpKSx0LmNvZGU9PT1vLk9LKWlmKGk9dC5ib3gsdGhpcy5ib3hlcy5wdXNoKGkpLHRoaXMuc3ViQm94TmFtZXMmJnRoaXMuc3ViQm94TmFtZXMuaW5kZXhPZihpLnR5cGUpIT0tMSl0aGlzW3RoaXMuc3ViQm94TmFtZXNbdGhpcy5zdWJCb3hOYW1lcy5pbmRleE9mKGkudHlwZSldKyJzIl0ucHVzaChpKTtlbHNle3ZhciBmPWkudHlwZSE9PSJ1dWlkIj9pLnR5cGU6aS51dWlkO3RoaXNbZl0/ci53YXJuKCJCb3ggb2YgdHlwZSAiK2YrIiBhbHJlYWR5IHN0b3JlZCBpbiBmaWVsZCBvZiB0aGlzIHR5cGUiKTp0aGlzW2ZdPWl9ZWxzZSByZXR1cm59LG8uQm94LnByb3RvdHlwZS5wYXJzZUxhbmd1YWdlPWZ1bmN0aW9uKGUpe3RoaXMubGFuZ3VhZ2U9ZS5yZWFkVWludDE2KCk7dmFyIHQ9W107dFswXT10aGlzLmxhbmd1YWdlPj4xMCYzMSx0WzFdPXRoaXMubGFuZ3VhZ2U+PjUmMzEsdFsyXT10aGlzLmxhbmd1YWdlJjMxLHRoaXMubGFuZ3VhZ2VTdHJpbmc9U3RyaW5nLmZyb21DaGFyQ29kZSh0WzBdKzk2LHRbMV0rOTYsdFsyXSs5Nil9LG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMPSJWaXN1YWwiLG8uU0FNUExFX0VOVFJZX1RZUEVfQVVESU89IkF1ZGlvIixvLlNBTVBMRV9FTlRSWV9UWVBFX0hJTlQ9IkhpbnQiLG8uU0FNUExFX0VOVFJZX1RZUEVfTUVUQURBVEE9Ik1ldGFkYXRhIixvLlNBTVBMRV9FTlRSWV9UWVBFX1NVQlRJVExFPSJTdWJ0aXRsZSIsby5TQU1QTEVfRU5UUllfVFlQRV9TWVNURU09IlN5c3RlbSIsby5TQU1QTEVfRU5UUllfVFlQRV9URVhUPSJUZXh0IixvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5wYXJzZUhlYWRlcj1mdW5jdGlvbihlKXtlLnJlYWRVaW50OEFycmF5KDYpLHRoaXMuZGF0YV9yZWZlcmVuY2VfaW5kZXg9ZS5yZWFkVWludDE2KCksdGhpcy5oZHJfc2l6ZSs9OH0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSl7dGhpcy5wYXJzZUhlYWRlcihlKSx0aGlzLmRhdGE9ZS5yZWFkVWludDhBcnJheSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSl9LG8uU2FtcGxlRW50cnkucHJvdG90eXBlLnBhcnNlRGF0YUFuZFJld2luZD1mdW5jdGlvbihlKXt0aGlzLnBhcnNlSGVhZGVyKGUpLHRoaXMuZGF0YT1lLnJlYWRVaW50OEFycmF5KHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKSx0aGlzLmhkcl9zaXplLT04LGUucG9zaXRpb24tPXRoaXMuc2l6ZS10aGlzLmhkcl9zaXplfSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5wYXJzZUZvb3Rlcj1mdW5jdGlvbihlKXtvLkNvbnRhaW5lckJveC5wcm90b3R5cGUucGFyc2UuY2FsbCh0aGlzLGUpfSxvLmNyZWF0ZU1lZGlhU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfSElOVCksby5jcmVhdGVNZWRpYVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX01FVEFEQVRBKSxvLmNyZWF0ZU1lZGlhU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfU1VCVElUTEUpLG8uY3JlYXRlTWVkaWFTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9TWVNURU0pLG8uY3JlYXRlTWVkaWFTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9URVhUKSxvLmNyZWF0ZU1lZGlhU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLGZ1bmN0aW9uKGUpe3ZhciB0O3RoaXMucGFyc2VIZWFkZXIoZSksZS5yZWFkVWludDE2KCksZS5yZWFkVWludDE2KCksZS5yZWFkVWludDMyQXJyYXkoMyksdGhpcy53aWR0aD1lLnJlYWRVaW50MTYoKSx0aGlzLmhlaWdodD1lLnJlYWRVaW50MTYoKSx0aGlzLmhvcml6cmVzb2x1dGlvbj1lLnJlYWRVaW50MzIoKSx0aGlzLnZlcnRyZXNvbHV0aW9uPWUucmVhZFVpbnQzMigpLGUucmVhZFVpbnQzMigpLHRoaXMuZnJhbWVfY291bnQ9ZS5yZWFkVWludDE2KCksdD1NYXRoLm1pbigzMSxlLnJlYWRVaW50OCgpKSx0aGlzLmNvbXByZXNzb3JuYW1lPWUucmVhZFN0cmluZyh0KSx0PDMxJiZlLnJlYWRTdHJpbmcoMzEtdCksdGhpcy5kZXB0aD1lLnJlYWRVaW50MTYoKSxlLnJlYWRVaW50MTYoKSx0aGlzLnBhcnNlRm9vdGVyKGUpfSksby5jcmVhdGVNZWRpYVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX0FVRElPLGZ1bmN0aW9uKGUpe3RoaXMucGFyc2VIZWFkZXIoZSksZS5yZWFkVWludDMyQXJyYXkoMiksdGhpcy5jaGFubmVsX2NvdW50PWUucmVhZFVpbnQxNigpLHRoaXMuc2FtcGxlc2l6ZT1lLnJlYWRVaW50MTYoKSxlLnJlYWRVaW50MTYoKSxlLnJlYWRVaW50MTYoKSx0aGlzLnNhbXBsZXJhdGU9ZS5yZWFkVWludDMyKCkvNjU1MzYsdGhpcy5wYXJzZUZvb3RlcihlKX0pLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJhdmMxIiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsImF2YzIiKSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwiYXZjMyIpLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJhdmM0Iiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsImF2MDEiKSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwiaHZjMSIpLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJoZXYxIiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsInZ2YzEiKSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwidnZpMSIpLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJ2dnMxIiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9WSVNVQUwsInZ2Y04iKSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1ZJU1VBTCwidnAwOCIpLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJ2cDA5Iiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9BVURJTywibXA0YSIpLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfQVVESU8sImFjLTMiKSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX0FVRElPLCJlYy0zIiksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9BVURJTywiT3B1cyIpLG8uY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVklTVUFMLCJlbmN2Iiksby5jcmVhdGVFbmNyeXB0ZWRTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9BVURJTywiZW5jYSIpLG8uY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfU1VCVElUTEUsImVuY3UiKSxvLmNyZWF0ZUVuY3J5cHRlZFNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1NZU1RFTSwiZW5jcyIpLG8uY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfVEVYVCwiZW5jdCIpLG8uY3JlYXRlRW5jcnlwdGVkU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfTUVUQURBVEEsImVuY20iKSxvLmNyZWF0ZUJveEN0b3IoImExbHgiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhZFVpbnQ4KCkmMSxpPSgodCYxKSsxKSoxNjt0aGlzLmxheWVyX3NpemU9W107Zm9yKHZhciBmPTA7ZjwzO2YrKylpPT0xNj90aGlzLmxheWVyX3NpemVbZl09ZS5yZWFkVWludDE2KCk6dGhpcy5sYXllcl9zaXplW2ZdPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVCb3hDdG9yKCJhMW9wIixmdW5jdGlvbihlKXt0aGlzLm9wX2luZGV4PWUucmVhZFVpbnQ4KCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJhdXhDIixmdW5jdGlvbihlKXt0aGlzLmF1eF90eXBlPWUucmVhZENTdHJpbmcoKTt2YXIgdD10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS0odGhpcy5hdXhfdHlwZS5sZW5ndGgrMSk7dGhpcy5hdXhfc3VidHlwZT1lLnJlYWRVaW50OEFycmF5KHQpfSksby5jcmVhdGVCb3hDdG9yKCJhdjFDIixmdW5jdGlvbihlKXt2YXIgdD1lLnJlYWRVaW50OCgpO2lmKHQ+PjcmITEpe3IuZXJyb3IoImF2MUMgbWFya2VyIHByb2JsZW0iKTtyZXR1cm59aWYodGhpcy52ZXJzaW9uPXQmMTI3LHRoaXMudmVyc2lvbiE9PTEpe3IuZXJyb3IoImF2MUMgdmVyc2lvbiAiK3RoaXMudmVyc2lvbisiIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm59aWYodD1lLnJlYWRVaW50OCgpLHRoaXMuc2VxX3Byb2ZpbGU9dD4+NSY3LHRoaXMuc2VxX2xldmVsX2lkeF8wPXQmMzEsdD1lLnJlYWRVaW50OCgpLHRoaXMuc2VxX3RpZXJfMD10Pj43JjEsdGhpcy5oaWdoX2JpdGRlcHRoPXQ+PjYmMSx0aGlzLnR3ZWx2ZV9iaXQ9dD4+NSYxLHRoaXMubW9ub2Nocm9tZT10Pj40JjEsdGhpcy5jaHJvbWFfc3Vic2FtcGxpbmdfeD10Pj4zJjEsdGhpcy5jaHJvbWFfc3Vic2FtcGxpbmdfeT10Pj4yJjEsdGhpcy5jaHJvbWFfc2FtcGxlX3Bvc2l0aW9uPXQmMyx0PWUucmVhZFVpbnQ4KCksdGhpcy5yZXNlcnZlZF8xPXQ+PjUmNyx0aGlzLnJlc2VydmVkXzEhPT0wKXtyLmVycm9yKCJhdjFDIHJlc2VydmVkXzEgcGFyc2luZyBwcm9ibGVtIik7cmV0dXJufWlmKHRoaXMuaW5pdGlhbF9wcmVzZW50YXRpb25fZGVsYXlfcHJlc2VudD10Pj40JjEsdGhpcy5pbml0aWFsX3ByZXNlbnRhdGlvbl9kZWxheV9wcmVzZW50PT09MSl0aGlzLmluaXRpYWxfcHJlc2VudGF0aW9uX2RlbGF5X21pbnVzX29uZT10JjE1O2Vsc2UgaWYodGhpcy5yZXNlcnZlZF8yPXQmMTUsdGhpcy5yZXNlcnZlZF8yIT09MCl7ci5lcnJvcigiYXYxQyByZXNlcnZlZF8yIHBhcnNpbmcgcHJvYmxlbSIpO3JldHVybn12YXIgaT10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS00O3RoaXMuY29uZmlnT0JVcz1lLnJlYWRVaW50OEFycmF5KGkpfSksby5jcmVhdGVCb3hDdG9yKCJhdmNDIixmdW5jdGlvbihlKXt2YXIgdCxpO2Zvcih0aGlzLmNvbmZpZ3VyYXRpb25WZXJzaW9uPWUucmVhZFVpbnQ4KCksdGhpcy5BVkNQcm9maWxlSW5kaWNhdGlvbj1lLnJlYWRVaW50OCgpLHRoaXMucHJvZmlsZV9jb21wYXRpYmlsaXR5PWUucmVhZFVpbnQ4KCksdGhpcy5BVkNMZXZlbEluZGljYXRpb249ZS5yZWFkVWludDgoKSx0aGlzLmxlbmd0aFNpemVNaW51c09uZT1lLnJlYWRVaW50OCgpJjMsdGhpcy5uYl9TUFNfbmFsdXM9ZS5yZWFkVWludDgoKSYzMSxpPXRoaXMuc2l6ZS10aGlzLmhkcl9zaXplLTYsdGhpcy5TUFM9W10sdD0wO3Q8dGhpcy5uYl9TUFNfbmFsdXM7dCsrKXRoaXMuU1BTW3RdPXt9LHRoaXMuU1BTW3RdLmxlbmd0aD1lLnJlYWRVaW50MTYoKSx0aGlzLlNQU1t0XS5uYWx1PWUucmVhZFVpbnQ4QXJyYXkodGhpcy5TUFNbdF0ubGVuZ3RoKSxpLT0yK3RoaXMuU1BTW3RdLmxlbmd0aDtmb3IodGhpcy5uYl9QUFNfbmFsdXM9ZS5yZWFkVWludDgoKSxpLS0sdGhpcy5QUFM9W10sdD0wO3Q8dGhpcy5uYl9QUFNfbmFsdXM7dCsrKXRoaXMuUFBTW3RdPXt9LHRoaXMuUFBTW3RdLmxlbmd0aD1lLnJlYWRVaW50MTYoKSx0aGlzLlBQU1t0XS5uYWx1PWUucmVhZFVpbnQ4QXJyYXkodGhpcy5QUFNbdF0ubGVuZ3RoKSxpLT0yK3RoaXMuUFBTW3RdLmxlbmd0aDtpPjAmJih0aGlzLmV4dD1lLnJlYWRVaW50OEFycmF5KGkpKX0pLG8uY3JlYXRlQm94Q3RvcigiYnRydCIsZnVuY3Rpb24oZSl7dGhpcy5idWZmZXJTaXplREI9ZS5yZWFkVWludDMyKCksdGhpcy5tYXhCaXRyYXRlPWUucmVhZFVpbnQzMigpLHRoaXMuYXZnQml0cmF0ZT1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlQm94Q3RvcigiY2xhcCIsZnVuY3Rpb24oZSl7dGhpcy5jbGVhbkFwZXJ0dXJlV2lkdGhOPWUucmVhZFVpbnQzMigpLHRoaXMuY2xlYW5BcGVydHVyZVdpZHRoRD1lLnJlYWRVaW50MzIoKSx0aGlzLmNsZWFuQXBlcnR1cmVIZWlnaHROPWUucmVhZFVpbnQzMigpLHRoaXMuY2xlYW5BcGVydHVyZUhlaWdodEQ9ZS5yZWFkVWludDMyKCksdGhpcy5ob3Jpek9mZk49ZS5yZWFkVWludDMyKCksdGhpcy5ob3Jpek9mZkQ9ZS5yZWFkVWludDMyKCksdGhpcy52ZXJ0T2ZmTj1lLnJlYWRVaW50MzIoKSx0aGlzLnZlcnRPZmZEPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVCb3hDdG9yKCJjbGxpIixmdW5jdGlvbihlKXt0aGlzLm1heF9jb250ZW50X2xpZ2h0X2xldmVsPWUucmVhZFVpbnQxNigpLHRoaXMubWF4X3BpY19hdmVyYWdlX2xpZ2h0X2xldmVsPWUucmVhZFVpbnQxNigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigiY282NCIsZnVuY3Rpb24oZSl7dmFyIHQsaTtpZih0PWUucmVhZFVpbnQzMigpLHRoaXMuY2h1bmtfb2Zmc2V0cz1bXSx0aGlzLnZlcnNpb249PT0wKWZvcihpPTA7aTx0O2krKyl0aGlzLmNodW5rX29mZnNldHMucHVzaChlLnJlYWRVaW50NjQoKSl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJDb0xMIixmdW5jdGlvbihlKXt0aGlzLm1heENMTD1lLnJlYWRVaW50MTYoKSx0aGlzLm1heEZBTEw9ZS5yZWFkVWludDE2KCl9KSxvLmNyZWF0ZUJveEN0b3IoImNvbHIiLGZ1bmN0aW9uKGUpe2lmKHRoaXMuY29sb3VyX3R5cGU9ZS5yZWFkU3RyaW5nKDQpLHRoaXMuY29sb3VyX3R5cGU9PT0ibmNseCIpe3RoaXMuY29sb3VyX3ByaW1hcmllcz1lLnJlYWRVaW50MTYoKSx0aGlzLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcz1lLnJlYWRVaW50MTYoKSx0aGlzLm1hdHJpeF9jb2VmZmljaWVudHM9ZS5yZWFkVWludDE2KCk7dmFyIHQ9ZS5yZWFkVWludDgoKTt0aGlzLmZ1bGxfcmFuZ2VfZmxhZz10Pj43fWVsc2UgdGhpcy5jb2xvdXJfdHlwZT09PSJySUNDIj90aGlzLklDQ19wcm9maWxlPWUucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLTQpOnRoaXMuY29sb3VyX3R5cGU9PT0icHJvZiImJih0aGlzLklDQ19wcm9maWxlPWUucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLTQpKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImNwcnQiLGZ1bmN0aW9uKGUpe3RoaXMucGFyc2VMYW5ndWFnZShlKSx0aGlzLm5vdGljZT1lLnJlYWRDU3RyaW5nKCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJjc2xnIixmdW5jdGlvbihlKXt0aGlzLnZlcnNpb249PT0wJiYodGhpcy5jb21wb3NpdGlvblRvRFRTU2hpZnQ9ZS5yZWFkSW50MzIoKSx0aGlzLmxlYXN0RGVjb2RlVG9EaXNwbGF5RGVsdGE9ZS5yZWFkSW50MzIoKSx0aGlzLmdyZWF0ZXN0RGVjb2RlVG9EaXNwbGF5RGVsdGE9ZS5yZWFkSW50MzIoKSx0aGlzLmNvbXBvc2l0aW9uU3RhcnRUaW1lPWUucmVhZEludDMyKCksdGhpcy5jb21wb3NpdGlvbkVuZFRpbWU9ZS5yZWFkSW50MzIoKSl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJjdHRzIixmdW5jdGlvbihlKXt2YXIgdCxpO2lmKHQ9ZS5yZWFkVWludDMyKCksdGhpcy5zYW1wbGVfY291bnRzPVtdLHRoaXMuc2FtcGxlX29mZnNldHM9W10sdGhpcy52ZXJzaW9uPT09MClmb3IoaT0wO2k8dDtpKyspe3RoaXMuc2FtcGxlX2NvdW50cy5wdXNoKGUucmVhZFVpbnQzMigpKTt2YXIgZj1lLnJlYWRJbnQzMigpO2Y8MCYmci53YXJuKCJCb3hQYXJzZXIiLCJjdHRzIGJveCB1c2VzIG5lZ2F0aXZlIHZhbHVlcyB3aXRob3V0IHVzaW5nIHZlcnNpb24gMSIpLHRoaXMuc2FtcGxlX29mZnNldHMucHVzaChmKX1lbHNlIGlmKHRoaXMudmVyc2lvbj09MSlmb3IoaT0wO2k8dDtpKyspdGhpcy5zYW1wbGVfY291bnRzLnB1c2goZS5yZWFkVWludDMyKCkpLHRoaXMuc2FtcGxlX29mZnNldHMucHVzaChlLnJlYWRJbnQzMigpKX0pLG8uY3JlYXRlQm94Q3RvcigiZGFjMyIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFkVWludDgoKSxpPWUucmVhZFVpbnQ4KCksZj1lLnJlYWRVaW50OCgpO3RoaXMuZnNjb2Q9dD4+Nix0aGlzLmJzaWQ9dD4+MSYzMSx0aGlzLmJzbW9kPSh0JjEpPDwyfGk+PjYmMyx0aGlzLmFjbW9kPWk+PjMmNyx0aGlzLmxmZW9uPWk+PjImMSx0aGlzLmJpdF9yYXRlX2NvZGU9aSYzfGY+PjUmN30pLG8uY3JlYXRlQm94Q3RvcigiZGVjMyIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFkVWludDE2KCk7dGhpcy5kYXRhX3JhdGU9dD4+Myx0aGlzLm51bV9pbmRfc3ViPXQmNyx0aGlzLmluZF9zdWJzPVtdO2Zvcih2YXIgaT0wO2k8dGhpcy5udW1faW5kX3N1YisxO2krKyl7dmFyIGY9e307dGhpcy5pbmRfc3Vicy5wdXNoKGYpO3ZhciB1PWUucmVhZFVpbnQ4KCksdj1lLnJlYWRVaW50OCgpLHk9ZS5yZWFkVWludDgoKTtmLmZzY29kPXU+PjYsZi5ic2lkPXU+PjEmMzEsZi5ic21vZD0odSYxKTw8NHx2Pj40JjE1LGYuYWNtb2Q9dj4+MSY3LGYubGZlb249diYxLGYubnVtX2RlcF9zdWI9eT4+MSYxNSxmLm51bV9kZXBfc3ViPjAmJihmLmNoYW5fbG9jPSh5JjEpPDw4fGUucmVhZFVpbnQ4KCkpfX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImRmTGEiLGZ1bmN0aW9uKGUpe3ZhciB0PTEyNyxpPTEyOCxmPVtdLHU9WyJTVFJFQU1JTkZPIiwiUEFERElORyIsIkFQUExJQ0FUSU9OIiwiU0VFS1RBQkxFIiwiVk9SQklTX0NPTU1FTlQiLCJDVUVTSEVFVCIsIlBJQ1RVUkUiLCJSRVNFUlZFRCJdO3RoaXMucGFyc2VGdWxsSGVhZGVyKGUpO2Rve3ZhciB2PWUucmVhZFVpbnQ4KCkseT1NYXRoLm1pbih2JnQsdS5sZW5ndGgtMSk7aWYoeT9lLnJlYWRVaW50OEFycmF5KGUucmVhZFVpbnQyNCgpKTooZS5yZWFkVWludDhBcnJheSgxMyksdGhpcy5zYW1wbGVyYXRlPWUucmVhZFVpbnQzMigpPj4xMixlLnJlYWRVaW50OEFycmF5KDIwKSksZi5wdXNoKHVbeV0pLHYmaSlicmVha313aGlsZSghMCk7dGhpcy5udW1NZXRhZGF0YUJsb2Nrcz1mLmxlbmd0aCsiICgiK2Yuam9pbigiLCAiKSsiKSJ9KSxvLmNyZWF0ZUJveEN0b3IoImRpbW0iLGZ1bmN0aW9uKGUpe3RoaXMuYnl0ZXNzZW50PWUucmVhZFVpbnQ2NCgpfSksby5jcmVhdGVCb3hDdG9yKCJkbWF4IixmdW5jdGlvbihlKXt0aGlzLnRpbWU9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoImRtZWQiLGZ1bmN0aW9uKGUpe3RoaXMuYnl0ZXNzZW50PWUucmVhZFVpbnQ2NCgpfSksby5jcmVhdGVCb3hDdG9yKCJkT3BzIixmdW5jdGlvbihlKXtpZih0aGlzLlZlcnNpb249ZS5yZWFkVWludDgoKSx0aGlzLk91dHB1dENoYW5uZWxDb3VudD1lLnJlYWRVaW50OCgpLHRoaXMuUHJlU2tpcD1lLnJlYWRVaW50MTYoKSx0aGlzLklucHV0U2FtcGxlUmF0ZT1lLnJlYWRVaW50MzIoKSx0aGlzLk91dHB1dEdhaW49ZS5yZWFkSW50MTYoKSx0aGlzLkNoYW5uZWxNYXBwaW5nRmFtaWx5PWUucmVhZFVpbnQ4KCksdGhpcy5DaGFubmVsTWFwcGluZ0ZhbWlseSE9PTApe3RoaXMuU3RyZWFtQ291bnQ9ZS5yZWFkVWludDgoKSx0aGlzLkNvdXBsZWRDb3VudD1lLnJlYWRVaW50OCgpLHRoaXMuQ2hhbm5lbE1hcHBpbmc9W107Zm9yKHZhciB0PTA7dDx0aGlzLk91dHB1dENoYW5uZWxDb3VudDt0KyspdGhpcy5DaGFubmVsTWFwcGluZ1t0XT1lLnJlYWRVaW50OCgpfX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImRyZWYiLGZ1bmN0aW9uKGUpe3ZhciB0LGk7dGhpcy5lbnRyaWVzPVtdO2Zvcih2YXIgZj1lLnJlYWRVaW50MzIoKSx1PTA7dTxmO3UrKylpZih0PW8ucGFyc2VPbmVCb3goZSwhMSx0aGlzLnNpemUtKGUuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSksdC5jb2RlPT09by5PSylpPXQuYm94LHRoaXMuZW50cmllcy5wdXNoKGkpO2Vsc2UgcmV0dXJufSksby5jcmVhdGVCb3hDdG9yKCJkcmVwIixmdW5jdGlvbihlKXt0aGlzLmJ5dGVzc2VudD1lLnJlYWRVaW50NjQoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImVsbmciLGZ1bmN0aW9uKGUpe3RoaXMuZXh0ZW5kZWRfbGFuZ3VhZ2U9ZS5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImVsc3QiLGZ1bmN0aW9uKGUpe3RoaXMuZW50cmllcz1bXTtmb3IodmFyIHQ9ZS5yZWFkVWludDMyKCksaT0wO2k8dDtpKyspe3ZhciBmPXt9O3RoaXMuZW50cmllcy5wdXNoKGYpLHRoaXMudmVyc2lvbj09PTE/KGYuc2VnbWVudF9kdXJhdGlvbj1lLnJlYWRVaW50NjQoKSxmLm1lZGlhX3RpbWU9ZS5yZWFkSW50NjQoKSk6KGYuc2VnbWVudF9kdXJhdGlvbj1lLnJlYWRVaW50MzIoKSxmLm1lZGlhX3RpbWU9ZS5yZWFkSW50MzIoKSksZi5tZWRpYV9yYXRlX2ludGVnZXI9ZS5yZWFkSW50MTYoKSxmLm1lZGlhX3JhdGVfZnJhY3Rpb249ZS5yZWFkSW50MTYoKX19KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJlbXNnIixmdW5jdGlvbihlKXt0aGlzLnZlcnNpb249PTE/KHRoaXMudGltZXNjYWxlPWUucmVhZFVpbnQzMigpLHRoaXMucHJlc2VudGF0aW9uX3RpbWU9ZS5yZWFkVWludDY0KCksdGhpcy5ldmVudF9kdXJhdGlvbj1lLnJlYWRVaW50MzIoKSx0aGlzLmlkPWUucmVhZFVpbnQzMigpLHRoaXMuc2NoZW1lX2lkX3VyaT1lLnJlYWRDU3RyaW5nKCksdGhpcy52YWx1ZT1lLnJlYWRDU3RyaW5nKCkpOih0aGlzLnNjaGVtZV9pZF91cmk9ZS5yZWFkQ1N0cmluZygpLHRoaXMudmFsdWU9ZS5yZWFkQ1N0cmluZygpLHRoaXMudGltZXNjYWxlPWUucmVhZFVpbnQzMigpLHRoaXMucHJlc2VudGF0aW9uX3RpbWVfZGVsdGE9ZS5yZWFkVWludDMyKCksdGhpcy5ldmVudF9kdXJhdGlvbj1lLnJlYWRVaW50MzIoKSx0aGlzLmlkPWUucmVhZFVpbnQzMigpKTt2YXIgdD10aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS0oNCo0Kyh0aGlzLnNjaGVtZV9pZF91cmkubGVuZ3RoKzEpKyh0aGlzLnZhbHVlLmxlbmd0aCsxKSk7dGhpcy52ZXJzaW9uPT0xJiYodC09NCksdGhpcy5tZXNzYWdlX2RhdGE9ZS5yZWFkVWludDhBcnJheSh0KX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImVzZHMiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhZFVpbnQ4QXJyYXkodGhpcy5zaXplLXRoaXMuaGRyX3NpemUpO2lmKHR5cGVvZiBoPCJ1Iil7dmFyIGk9bmV3IGg7dGhpcy5lc2Q9aS5wYXJzZU9uZURlc2NyaXB0b3IobmV3IHModC5idWZmZXIsMCxzLkJJR19FTkRJQU4pKX19KSxvLmNyZWF0ZUJveEN0b3IoImZpZWwiLGZ1bmN0aW9uKGUpe3RoaXMuZmllbGRDb3VudD1lLnJlYWRVaW50OCgpLHRoaXMuZmllbGRPcmRlcmluZz1lLnJlYWRVaW50OCgpfSksby5jcmVhdGVCb3hDdG9yKCJmcm1hIixmdW5jdGlvbihlKXt0aGlzLmRhdGFfZm9ybWF0PWUucmVhZFN0cmluZyg0KX0pLG8uY3JlYXRlQm94Q3RvcigiZnR5cCIsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zaXplLXRoaXMuaGRyX3NpemU7dGhpcy5tYWpvcl9icmFuZD1lLnJlYWRTdHJpbmcoNCksdGhpcy5taW5vcl92ZXJzaW9uPWUucmVhZFVpbnQzMigpLHQtPTgsdGhpcy5jb21wYXRpYmxlX2JyYW5kcz1bXTtmb3IodmFyIGk9MDt0Pj00Oyl0aGlzLmNvbXBhdGlibGVfYnJhbmRzW2ldPWUucmVhZFN0cmluZyg0KSx0LT00LGkrK30pLG8uY3JlYXRlRnVsbEJveEN0b3IoImhkbHIiLGZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj09PTAmJihlLnJlYWRVaW50MzIoKSx0aGlzLmhhbmRsZXI9ZS5yZWFkU3RyaW5nKDQpLGUucmVhZFVpbnQzMkFycmF5KDMpLHRoaXMubmFtZT1lLnJlYWRTdHJpbmcodGhpcy5zaXplLXRoaXMuaGRyX3NpemUtMjApLHRoaXMubmFtZVt0aGlzLm5hbWUubGVuZ3RoLTFdPT09IlwwIiYmKHRoaXMubmFtZT10aGlzLm5hbWUuc2xpY2UoMCwtMSkpKX0pLG8uY3JlYXRlQm94Q3RvcigiaHZjQyIsZnVuY3Rpb24oZSl7dmFyIHQsaSxmLHU7dGhpcy5jb25maWd1cmF0aW9uVmVyc2lvbj1lLnJlYWRVaW50OCgpLHU9ZS5yZWFkVWludDgoKSx0aGlzLmdlbmVyYWxfcHJvZmlsZV9zcGFjZT11Pj42LHRoaXMuZ2VuZXJhbF90aWVyX2ZsYWc9KHUmMzIpPj41LHRoaXMuZ2VuZXJhbF9wcm9maWxlX2lkYz11JjMxLHRoaXMuZ2VuZXJhbF9wcm9maWxlX2NvbXBhdGliaWxpdHk9ZS5yZWFkVWludDMyKCksdGhpcy5nZW5lcmFsX2NvbnN0cmFpbnRfaW5kaWNhdG9yPWUucmVhZFVpbnQ4QXJyYXkoNiksdGhpcy5nZW5lcmFsX2xldmVsX2lkYz1lLnJlYWRVaW50OCgpLHRoaXMubWluX3NwYXRpYWxfc2VnbWVudGF0aW9uX2lkYz1lLnJlYWRVaW50MTYoKSY0MDk1LHRoaXMucGFyYWxsZWxpc21UeXBlPWUucmVhZFVpbnQ4KCkmMyx0aGlzLmNocm9tYV9mb3JtYXRfaWRjPWUucmVhZFVpbnQ4KCkmMyx0aGlzLmJpdF9kZXB0aF9sdW1hX21pbnVzOD1lLnJlYWRVaW50OCgpJjcsdGhpcy5iaXRfZGVwdGhfY2hyb21hX21pbnVzOD1lLnJlYWRVaW50OCgpJjcsdGhpcy5hdmdGcmFtZVJhdGU9ZS5yZWFkVWludDE2KCksdT1lLnJlYWRVaW50OCgpLHRoaXMuY29uc3RhbnRGcmFtZVJhdGU9dT4+Nix0aGlzLm51bVRlbXBvcmFsTGF5ZXJzPSh1JjEzKT4+Myx0aGlzLnRlbXBvcmFsSWROZXN0ZWQ9KHUmNCk+PjIsdGhpcy5sZW5ndGhTaXplTWludXNPbmU9dSYzLHRoaXMubmFsdV9hcnJheXM9W107dmFyIHY9ZS5yZWFkVWludDgoKTtmb3IodD0wO3Q8djt0Kyspe3ZhciB5PVtdO3RoaXMubmFsdV9hcnJheXMucHVzaCh5KSx1PWUucmVhZFVpbnQ4KCkseS5jb21wbGV0ZW5lc3M9KHUmMTI4KT4+Nyx5Lm5hbHVfdHlwZT11JjYzO3ZhciBtPWUucmVhZFVpbnQxNigpO2ZvcihpPTA7aTxtO2krKyl7dmFyIGI9e307eS5wdXNoKGIpLGY9ZS5yZWFkVWludDE2KCksYi5kYXRhPWUucmVhZFVpbnQ4QXJyYXkoZil9fX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImlpbmYiLGZ1bmN0aW9uKGUpe3ZhciB0O3RoaXMudmVyc2lvbj09PTA/dGhpcy5lbnRyeV9jb3VudD1lLnJlYWRVaW50MTYoKTp0aGlzLmVudHJ5X2NvdW50PWUucmVhZFVpbnQzMigpLHRoaXMuaXRlbV9pbmZvcz1bXTtmb3IodmFyIGk9MDtpPHRoaXMuZW50cnlfY291bnQ7aSsrKWlmKHQ9by5wYXJzZU9uZUJveChlLCExLHRoaXMuc2l6ZS0oZS5nZXRQb3NpdGlvbigpLXRoaXMuc3RhcnQpKSx0LmNvZGU9PT1vLk9LKXQuYm94LnR5cGUhPT0iaW5mZSImJnIuZXJyb3IoIkJveFBhcnNlciIsIkV4cGVjdGVkICdpbmZlJyBib3gsIGdvdCAiK3QuYm94LnR5cGUpLHRoaXMuaXRlbV9pbmZvc1tpXT10LmJveDtlbHNlIHJldHVybn0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImlsb2MiLGZ1bmN0aW9uKGUpe3ZhciB0O3Q9ZS5yZWFkVWludDgoKSx0aGlzLm9mZnNldF9zaXplPXQ+PjQmMTUsdGhpcy5sZW5ndGhfc2l6ZT10JjE1LHQ9ZS5yZWFkVWludDgoKSx0aGlzLmJhc2Vfb2Zmc2V0X3NpemU9dD4+NCYxNSx0aGlzLnZlcnNpb249PT0xfHx0aGlzLnZlcnNpb249PT0yP3RoaXMuaW5kZXhfc2l6ZT10JjE1OnRoaXMuaW5kZXhfc2l6ZT0wLHRoaXMuaXRlbXM9W107dmFyIGk9MDtpZih0aGlzLnZlcnNpb248MilpPWUucmVhZFVpbnQxNigpO2Vsc2UgaWYodGhpcy52ZXJzaW9uPT09MilpPWUucmVhZFVpbnQzMigpO2Vsc2UgdGhyb3cidmVyc2lvbiBvZiBpbG9jIGJveCBub3Qgc3VwcG9ydGVkIjtmb3IodmFyIGY9MDtmPGk7ZisrKXt2YXIgdT17fTtpZih0aGlzLml0ZW1zLnB1c2godSksdGhpcy52ZXJzaW9uPDIpdS5pdGVtX0lEPWUucmVhZFVpbnQxNigpO2Vsc2UgaWYodGhpcy52ZXJzaW9uPT09Mil1Lml0ZW1fSUQ9ZS5yZWFkVWludDE2KCk7ZWxzZSB0aHJvdyJ2ZXJzaW9uIG9mIGlsb2MgYm94IG5vdCBzdXBwb3J0ZWQiO3N3aXRjaCh0aGlzLnZlcnNpb249PT0xfHx0aGlzLnZlcnNpb249PT0yP3UuY29uc3RydWN0aW9uX21ldGhvZD1lLnJlYWRVaW50MTYoKSYxNTp1LmNvbnN0cnVjdGlvbl9tZXRob2Q9MCx1LmRhdGFfcmVmZXJlbmNlX2luZGV4PWUucmVhZFVpbnQxNigpLHRoaXMuYmFzZV9vZmZzZXRfc2l6ZSl7Y2FzZSAwOnUuYmFzZV9vZmZzZXQ9MDticmVhaztjYXNlIDQ6dS5iYXNlX29mZnNldD1lLnJlYWRVaW50MzIoKTticmVhaztjYXNlIDg6dS5iYXNlX29mZnNldD1lLnJlYWRVaW50NjQoKTticmVhaztkZWZhdWx0OnRocm93IkVycm9yIHJlYWRpbmcgYmFzZSBvZmZzZXQgc2l6ZSJ9dmFyIHY9ZS5yZWFkVWludDE2KCk7dS5leHRlbnRzPVtdO2Zvcih2YXIgeT0wO3k8djt5Kyspe3ZhciBtPXt9O2lmKHUuZXh0ZW50cy5wdXNoKG0pLHRoaXMudmVyc2lvbj09PTF8fHRoaXMudmVyc2lvbj09PTIpc3dpdGNoKHRoaXMuaW5kZXhfc2l6ZSl7Y2FzZSAwOm0uZXh0ZW50X2luZGV4PTA7YnJlYWs7Y2FzZSA0Om0uZXh0ZW50X2luZGV4PWUucmVhZFVpbnQzMigpO2JyZWFrO2Nhc2UgODptLmV4dGVudF9pbmRleD1lLnJlYWRVaW50NjQoKTticmVhaztkZWZhdWx0OnRocm93IkVycm9yIHJlYWRpbmcgZXh0ZW50IGluZGV4In1zd2l0Y2godGhpcy5vZmZzZXRfc2l6ZSl7Y2FzZSAwOm0uZXh0ZW50X29mZnNldD0wO2JyZWFrO2Nhc2UgNDptLmV4dGVudF9vZmZzZXQ9ZS5yZWFkVWludDMyKCk7YnJlYWs7Y2FzZSA4Om0uZXh0ZW50X29mZnNldD1lLnJlYWRVaW50NjQoKTticmVhaztkZWZhdWx0OnRocm93IkVycm9yIHJlYWRpbmcgZXh0ZW50IGluZGV4In1zd2l0Y2godGhpcy5sZW5ndGhfc2l6ZSl7Y2FzZSAwOm0uZXh0ZW50X2xlbmd0aD0wO2JyZWFrO2Nhc2UgNDptLmV4dGVudF9sZW5ndGg9ZS5yZWFkVWludDMyKCk7YnJlYWs7Y2FzZSA4Om0uZXh0ZW50X2xlbmd0aD1lLnJlYWRVaW50NjQoKTticmVhaztkZWZhdWx0OnRocm93IkVycm9yIHJlYWRpbmcgZXh0ZW50IGluZGV4In19fX0pLG8uY3JlYXRlQm94Q3RvcigiaW1pciIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFkVWludDgoKTt0aGlzLnJlc2VydmVkPXQ+PjcsdGhpcy5heGlzPXQmMX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImluZmUiLGZ1bmN0aW9uKGUpe2lmKCh0aGlzLnZlcnNpb249PT0wfHx0aGlzLnZlcnNpb249PT0xKSYmKHRoaXMuaXRlbV9JRD1lLnJlYWRVaW50MTYoKSx0aGlzLml0ZW1fcHJvdGVjdGlvbl9pbmRleD1lLnJlYWRVaW50MTYoKSx0aGlzLml0ZW1fbmFtZT1lLnJlYWRDU3RyaW5nKCksdGhpcy5jb250ZW50X3R5cGU9ZS5yZWFkQ1N0cmluZygpLHRoaXMuY29udGVudF9lbmNvZGluZz1lLnJlYWRDU3RyaW5nKCkpLHRoaXMudmVyc2lvbj09PTEpe3RoaXMuZXh0ZW5zaW9uX3R5cGU9ZS5yZWFkU3RyaW5nKDQpLHIud2FybigiQm94UGFyc2VyIiwiQ2Fubm90IHBhcnNlIGV4dGVuc2lvbiB0eXBlIiksZS5zZWVrKHRoaXMuc3RhcnQrdGhpcy5zaXplKTtyZXR1cm59dGhpcy52ZXJzaW9uPj0yJiYodGhpcy52ZXJzaW9uPT09Mj90aGlzLml0ZW1fSUQ9ZS5yZWFkVWludDE2KCk6dGhpcy52ZXJzaW9uPT09MyYmKHRoaXMuaXRlbV9JRD1lLnJlYWRVaW50MzIoKSksdGhpcy5pdGVtX3Byb3RlY3Rpb25faW5kZXg9ZS5yZWFkVWludDE2KCksdGhpcy5pdGVtX3R5cGU9ZS5yZWFkU3RyaW5nKDQpLHRoaXMuaXRlbV9uYW1lPWUucmVhZENTdHJpbmcoKSx0aGlzLml0ZW1fdHlwZT09PSJtaW1lIj8odGhpcy5jb250ZW50X3R5cGU9ZS5yZWFkQ1N0cmluZygpLHRoaXMuY29udGVudF9lbmNvZGluZz1lLnJlYWRDU3RyaW5nKCkpOnRoaXMuaXRlbV90eXBlPT09InVyaSAiJiYodGhpcy5pdGVtX3VyaV90eXBlPWUucmVhZENTdHJpbmcoKSkpfSksby5jcmVhdGVGdWxsQm94Q3RvcigiaXBtYSIsZnVuY3Rpb24oZSl7dmFyIHQsaTtmb3IoZW50cnlfY291bnQ9ZS5yZWFkVWludDMyKCksdGhpcy5hc3NvY2lhdGlvbnM9W10sdD0wO3Q8ZW50cnlfY291bnQ7dCsrKXt2YXIgZj17fTt0aGlzLmFzc29jaWF0aW9ucy5wdXNoKGYpLHRoaXMudmVyc2lvbjwxP2YuaWQ9ZS5yZWFkVWludDE2KCk6Zi5pZD1lLnJlYWRVaW50MzIoKTt2YXIgdT1lLnJlYWRVaW50OCgpO2ZvcihmLnByb3BzPVtdLGk9MDtpPHU7aSsrKXt2YXIgdj1lLnJlYWRVaW50OCgpLHk9e307Zi5wcm9wcy5wdXNoKHkpLHkuZXNzZW50aWFsPSh2JjEyOCk+Pjc9PT0xLHRoaXMuZmxhZ3MmMT95LnByb3BlcnR5X2luZGV4PSh2JjEyNyk8PDh8ZS5yZWFkVWludDgoKTp5LnByb3BlcnR5X2luZGV4PXYmMTI3fX19KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJpcmVmIixmdW5jdGlvbihlKXt2YXIgdCxpO2Zvcih0aGlzLnJlZmVyZW5jZXM9W107ZS5nZXRQb3NpdGlvbigpPHRoaXMuc3RhcnQrdGhpcy5zaXplOylpZih0PW8ucGFyc2VPbmVCb3goZSwhMCx0aGlzLnNpemUtKGUuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSksdC5jb2RlPT09by5PSyl0aGlzLnZlcnNpb249PT0wP2k9bmV3IG8uU2luZ2xlSXRlbVR5cGVSZWZlcmVuY2VCb3godC50eXBlLHQuc2l6ZSx0Lmhkcl9zaXplLHQuc3RhcnQpOmk9bmV3IG8uU2luZ2xlSXRlbVR5cGVSZWZlcmVuY2VCb3hMYXJnZSh0LnR5cGUsdC5zaXplLHQuaGRyX3NpemUsdC5zdGFydCksaS53cml0ZT09PW8uQm94LnByb3RvdHlwZS53cml0ZSYmaS50eXBlIT09Im1kYXQiJiYoci53YXJuKCJCb3hQYXJzZXIiLGkudHlwZSsiIGJveCB3cml0aW5nIG5vdCB5ZXQgaW1wbGVtZW50ZWQsIGtlZXBpbmcgdW5wYXJzZWQgZGF0YSBpbiBtZW1vcnkgZm9yIGxhdGVyIHdyaXRlIiksaS5wYXJzZURhdGFBbmRSZXdpbmQoZSkpLGkucGFyc2UoZSksdGhpcy5yZWZlcmVuY2VzLnB1c2goaSk7ZWxzZSByZXR1cm59KSxvLmNyZWF0ZUJveEN0b3IoImlyb3QiLGZ1bmN0aW9uKGUpe3RoaXMuYW5nbGU9ZS5yZWFkVWludDgoKSYzfSksby5jcmVhdGVGdWxsQm94Q3RvcigiaXNwZSIsZnVuY3Rpb24oZSl7dGhpcy5pbWFnZV93aWR0aD1lLnJlYWRVaW50MzIoKSx0aGlzLmltYWdlX2hlaWdodD1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImtpbmQiLGZ1bmN0aW9uKGUpe3RoaXMuc2NoZW1lVVJJPWUucmVhZENTdHJpbmcoKSx0aGlzLnZhbHVlPWUucmVhZENTdHJpbmcoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImxldmEiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhZFVpbnQ4KCk7dGhpcy5sZXZlbHM9W107Zm9yKHZhciBpPTA7aTx0O2krKyl7dmFyIGY9e307dGhpcy5sZXZlbHNbaV09ZixmLnRyYWNrX0lEPWUucmVhZFVpbnQzMigpO3ZhciB1PWUucmVhZFVpbnQ4KCk7c3dpdGNoKGYucGFkZGluZ19mbGFnPXU+PjcsZi5hc3NpZ25tZW50X3R5cGU9dSYxMjcsZi5hc3NpZ25tZW50X3R5cGUpe2Nhc2UgMDpmLmdyb3VwaW5nX3R5cGU9ZS5yZWFkU3RyaW5nKDQpO2JyZWFrO2Nhc2UgMTpmLmdyb3VwaW5nX3R5cGU9ZS5yZWFkU3RyaW5nKDQpLGYuZ3JvdXBpbmdfdHlwZV9wYXJhbWV0ZXI9ZS5yZWFkVWludDMyKCk7YnJlYWs7Y2FzZSAyOmJyZWFrO2Nhc2UgMzpicmVhaztjYXNlIDQ6Zi5zdWJfdHJhY2tfaWQ9ZS5yZWFkVWludDMyKCk7YnJlYWs7ZGVmYXVsdDpyLndhcm4oIkJveFBhcnNlciIsIlVua25vd24gbGV2YSBhc3NpZ25lbWVudCB0eXBlIil9fX0pLG8uY3JlYXRlQm94Q3RvcigibHNlbCIsZnVuY3Rpb24oZSl7dGhpcy5sYXllcl9pZD1lLnJlYWRVaW50MTYoKX0pLG8uY3JlYXRlQm94Q3RvcigibWF4ciIsZnVuY3Rpb24oZSl7dGhpcy5wZXJpb2Q9ZS5yZWFkVWludDMyKCksdGhpcy5ieXRlcz1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlQm94Q3RvcigibWRjdiIsZnVuY3Rpb24oZSl7dGhpcy5kaXNwbGF5X3ByaW1hcmllcz1bXSx0aGlzLmRpc3BsYXlfcHJpbWFyaWVzWzBdPXt9LHRoaXMuZGlzcGxheV9wcmltYXJpZXNbMF0ueD1lLnJlYWRVaW50MTYoKSx0aGlzLmRpc3BsYXlfcHJpbWFyaWVzWzBdLnk9ZS5yZWFkVWludDE2KCksdGhpcy5kaXNwbGF5X3ByaW1hcmllc1sxXT17fSx0aGlzLmRpc3BsYXlfcHJpbWFyaWVzWzFdLng9ZS5yZWFkVWludDE2KCksdGhpcy5kaXNwbGF5X3ByaW1hcmllc1sxXS55PWUucmVhZFVpbnQxNigpLHRoaXMuZGlzcGxheV9wcmltYXJpZXNbMl09e30sdGhpcy5kaXNwbGF5X3ByaW1hcmllc1syXS54PWUucmVhZFVpbnQxNigpLHRoaXMuZGlzcGxheV9wcmltYXJpZXNbMl0ueT1lLnJlYWRVaW50MTYoKSx0aGlzLndoaXRlX3BvaW50PXt9LHRoaXMud2hpdGVfcG9pbnQueD1lLnJlYWRVaW50MTYoKSx0aGlzLndoaXRlX3BvaW50Lnk9ZS5yZWFkVWludDE2KCksdGhpcy5tYXhfZGlzcGxheV9tYXN0ZXJpbmdfbHVtaW5hbmNlPWUucmVhZFVpbnQzMigpLHRoaXMubWluX2Rpc3BsYXlfbWFzdGVyaW5nX2x1bWluYW5jZT1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoIm1kaGQiLGZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj09MT8odGhpcy5jcmVhdGlvbl90aW1lPWUucmVhZFVpbnQ2NCgpLHRoaXMubW9kaWZpY2F0aW9uX3RpbWU9ZS5yZWFkVWludDY0KCksdGhpcy50aW1lc2NhbGU9ZS5yZWFkVWludDMyKCksdGhpcy5kdXJhdGlvbj1lLnJlYWRVaW50NjQoKSk6KHRoaXMuY3JlYXRpb25fdGltZT1lLnJlYWRVaW50MzIoKSx0aGlzLm1vZGlmaWNhdGlvbl90aW1lPWUucmVhZFVpbnQzMigpLHRoaXMudGltZXNjYWxlPWUucmVhZFVpbnQzMigpLHRoaXMuZHVyYXRpb249ZS5yZWFkVWludDMyKCkpLHRoaXMucGFyc2VMYW5ndWFnZShlKSxlLnJlYWRVaW50MTYoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoIm1laGQiLGZ1bmN0aW9uKGUpe3RoaXMuZmxhZ3MmMSYmKHIud2FybigiQm94UGFyc2VyIiwibWVoZCBib3ggaW5jb3JyZWN0bHkgdXNlcyBmbGFncyBzZXQgdG8gMSwgY29udmVydGluZyB2ZXJzaW9uIHRvIDEiKSx0aGlzLnZlcnNpb249MSksdGhpcy52ZXJzaW9uPT0xP3RoaXMuZnJhZ21lbnRfZHVyYXRpb249ZS5yZWFkVWludDY0KCk6dGhpcy5mcmFnbWVudF9kdXJhdGlvbj1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoIm1ldGEiLGZ1bmN0aW9uKGUpe3RoaXMuYm94ZXM9W10sby5Db250YWluZXJCb3gucHJvdG90eXBlLnBhcnNlLmNhbGwodGhpcyxlKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoIm1maGQiLGZ1bmN0aW9uKGUpe3RoaXMuc2VxdWVuY2VfbnVtYmVyPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigibWZybyIsZnVuY3Rpb24oZSl7dGhpcy5fc2l6ZT1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoIm12aGQiLGZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj09MT8odGhpcy5jcmVhdGlvbl90aW1lPWUucmVhZFVpbnQ2NCgpLHRoaXMubW9kaWZpY2F0aW9uX3RpbWU9ZS5yZWFkVWludDY0KCksdGhpcy50aW1lc2NhbGU9ZS5yZWFkVWludDMyKCksdGhpcy5kdXJhdGlvbj1lLnJlYWRVaW50NjQoKSk6KHRoaXMuY3JlYXRpb25fdGltZT1lLnJlYWRVaW50MzIoKSx0aGlzLm1vZGlmaWNhdGlvbl90aW1lPWUucmVhZFVpbnQzMigpLHRoaXMudGltZXNjYWxlPWUucmVhZFVpbnQzMigpLHRoaXMuZHVyYXRpb249ZS5yZWFkVWludDMyKCkpLHRoaXMucmF0ZT1lLnJlYWRVaW50MzIoKSx0aGlzLnZvbHVtZT1lLnJlYWRVaW50MTYoKT4+OCxlLnJlYWRVaW50MTYoKSxlLnJlYWRVaW50MzJBcnJheSgyKSx0aGlzLm1hdHJpeD1lLnJlYWRVaW50MzJBcnJheSg5KSxlLnJlYWRVaW50MzJBcnJheSg2KSx0aGlzLm5leHRfdHJhY2tfaWQ9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoIm5wY2siLGZ1bmN0aW9uKGUpe3RoaXMucGFja2V0c3NlbnQ9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoIm51bXAiLGZ1bmN0aW9uKGUpe3RoaXMucGFja2V0c3NlbnQ9ZS5yZWFkVWludDY0KCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJwYWRiIixmdW5jdGlvbihlKXt2YXIgdD1lLnJlYWRVaW50MzIoKTt0aGlzLnBhZGJpdHM9W107Zm9yKHZhciBpPTA7aTxNYXRoLmZsb29yKCh0KzEpLzIpO2krKyl0aGlzLnBhZGJpdHM9ZS5yZWFkVWludDgoKX0pLG8uY3JlYXRlQm94Q3RvcigicGFzcCIsZnVuY3Rpb24oZSl7dGhpcy5oU3BhY2luZz1lLnJlYWRVaW50MzIoKSx0aGlzLnZTcGFjaW5nPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVCb3hDdG9yKCJwYXlsIixmdW5jdGlvbihlKXt0aGlzLnRleHQ9ZS5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKX0pLG8uY3JlYXRlQm94Q3RvcigicGF5dCIsZnVuY3Rpb24oZSl7dGhpcy5wYXlsb2FkSUQ9ZS5yZWFkVWludDMyKCk7dmFyIHQ9ZS5yZWFkVWludDgoKTt0aGlzLnJ0cG1hcF9zdHJpbmc9ZS5yZWFkU3RyaW5nKHQpfSksby5jcmVhdGVGdWxsQm94Q3RvcigicGRpbiIsZnVuY3Rpb24oZSl7dmFyIHQ9KHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKS84O3RoaXMucmF0ZT1bXSx0aGlzLmluaXRpYWxfZGVsYXk9W107Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLnJhdGVbaV09ZS5yZWFkVWludDMyKCksdGhpcy5pbml0aWFsX2RlbGF5W2ldPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigicGl0bSIsZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPT09MD90aGlzLml0ZW1faWQ9ZS5yZWFkVWludDE2KCk6dGhpcy5pdGVtX2lkPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigicGl4aSIsZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMubnVtX2NoYW5uZWxzPWUucmVhZFVpbnQ4KCksdGhpcy5iaXRzX3Blcl9jaGFubmVscz1bXSx0PTA7dDx0aGlzLm51bV9jaGFubmVsczt0KyspdGhpcy5iaXRzX3Blcl9jaGFubmVsc1t0XT1lLnJlYWRVaW50OCgpfSksby5jcmVhdGVCb3hDdG9yKCJwbWF4IixmdW5jdGlvbihlKXt0aGlzLmJ5dGVzPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigicHJmdCIsZnVuY3Rpb24oZSl7dGhpcy5yZWZfdHJhY2tfaWQ9ZS5yZWFkVWludDMyKCksdGhpcy5udHBfdGltZXN0YW1wPWUucmVhZFVpbnQ2NCgpLHRoaXMudmVyc2lvbj09PTA/dGhpcy5tZWRpYV90aW1lPWUucmVhZFVpbnQzMigpOnRoaXMubWVkaWFfdGltZT1lLnJlYWRVaW50NjQoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInBzc2giLGZ1bmN0aW9uKGUpe2lmKHRoaXMuc3lzdGVtX2lkPW8ucGFyc2VIZXgxNihlKSx0aGlzLnZlcnNpb24+MCl7dmFyIHQ9ZS5yZWFkVWludDMyKCk7dGhpcy5raWQ9W107Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLmtpZFtpXT1vLnBhcnNlSGV4MTYoZSl9dmFyIGY9ZS5yZWFkVWludDMyKCk7Zj4wJiYodGhpcy5kYXRhPWUucmVhZFVpbnQ4QXJyYXkoZikpfSksby5jcmVhdGVGdWxsQm94Q3RvcigiY2xlZiIsZnVuY3Rpb24oZSl7dGhpcy53aWR0aD1lLnJlYWRVaW50MzIoKSx0aGlzLmhlaWdodD1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoImVub2YiLGZ1bmN0aW9uKGUpe3RoaXMud2lkdGg9ZS5yZWFkVWludDMyKCksdGhpcy5oZWlnaHQ9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJwcm9mIixmdW5jdGlvbihlKXt0aGlzLndpZHRoPWUucmVhZFVpbnQzMigpLHRoaXMuaGVpZ2h0PWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVDb250YWluZXJCb3hDdG9yKCJ0YXB0IixudWxsLFsiY2xlZiIsInByb2YiLCJlbm9mIl0pLG8uY3JlYXRlQm94Q3RvcigicnRwICIsZnVuY3Rpb24oZSl7dGhpcy5kZXNjcmlwdGlvbmZvcm1hdD1lLnJlYWRTdHJpbmcoNCksdGhpcy5zZHB0ZXh0PWUucmVhZFN0cmluZyh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS00KX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInNhaW8iLGZ1bmN0aW9uKGUpe3RoaXMuZmxhZ3MmMSYmKHRoaXMuYXV4X2luZm9fdHlwZT1lLnJlYWRVaW50MzIoKSx0aGlzLmF1eF9pbmZvX3R5cGVfcGFyYW1ldGVyPWUucmVhZFVpbnQzMigpKTt2YXIgdD1lLnJlYWRVaW50MzIoKTt0aGlzLm9mZnNldD1bXTtmb3IodmFyIGk9MDtpPHQ7aSsrKXRoaXMudmVyc2lvbj09PTA/dGhpcy5vZmZzZXRbaV09ZS5yZWFkVWludDMyKCk6dGhpcy5vZmZzZXRbaV09ZS5yZWFkVWludDY0KCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzYWl6IixmdW5jdGlvbihlKXt0aGlzLmZsYWdzJjEmJih0aGlzLmF1eF9pbmZvX3R5cGU9ZS5yZWFkVWludDMyKCksdGhpcy5hdXhfaW5mb190eXBlX3BhcmFtZXRlcj1lLnJlYWRVaW50MzIoKSksdGhpcy5kZWZhdWx0X3NhbXBsZV9pbmZvX3NpemU9ZS5yZWFkVWludDgoKTt2YXIgdD1lLnJlYWRVaW50MzIoKTtpZih0aGlzLnNhbXBsZV9pbmZvX3NpemU9W10sdGhpcy5kZWZhdWx0X3NhbXBsZV9pbmZvX3NpemU9PT0wKWZvcih2YXIgaT0wO2k8dDtpKyspdGhpcy5zYW1wbGVfaW5mb19zaXplW2ldPWUucmVhZFVpbnQ4KCl9KSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX01FVEFEQVRBLCJtZXR0IixmdW5jdGlvbihlKXt0aGlzLnBhcnNlSGVhZGVyKGUpLHRoaXMuY29udGVudF9lbmNvZGluZz1lLnJlYWRDU3RyaW5nKCksdGhpcy5taW1lX2Zvcm1hdD1lLnJlYWRDU3RyaW5nKCksdGhpcy5wYXJzZUZvb3RlcihlKX0pLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfTUVUQURBVEEsIm1ldHgiLGZ1bmN0aW9uKGUpe3RoaXMucGFyc2VIZWFkZXIoZSksdGhpcy5jb250ZW50X2VuY29kaW5nPWUucmVhZENTdHJpbmcoKSx0aGlzLm5hbWVzcGFjZT1lLnJlYWRDU3RyaW5nKCksdGhpcy5zY2hlbWFfbG9jYXRpb249ZS5yZWFkQ1N0cmluZygpLHRoaXMucGFyc2VGb290ZXIoZSl9KSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1NVQlRJVExFLCJzYnR0IixmdW5jdGlvbihlKXt0aGlzLnBhcnNlSGVhZGVyKGUpLHRoaXMuY29udGVudF9lbmNvZGluZz1lLnJlYWRDU3RyaW5nKCksdGhpcy5taW1lX2Zvcm1hdD1lLnJlYWRDU3RyaW5nKCksdGhpcy5wYXJzZUZvb3RlcihlKX0pLG8uY3JlYXRlU2FtcGxlRW50cnlDdG9yKG8uU0FNUExFX0VOVFJZX1RZUEVfU1VCVElUTEUsInN0cHAiLGZ1bmN0aW9uKGUpe3RoaXMucGFyc2VIZWFkZXIoZSksdGhpcy5uYW1lc3BhY2U9ZS5yZWFkQ1N0cmluZygpLHRoaXMuc2NoZW1hX2xvY2F0aW9uPWUucmVhZENTdHJpbmcoKSx0aGlzLmF1eGlsaWFyeV9taW1lX3R5cGVzPWUucmVhZENTdHJpbmcoKSx0aGlzLnBhcnNlRm9vdGVyKGUpfSksby5jcmVhdGVTYW1wbGVFbnRyeUN0b3Ioby5TQU1QTEVfRU5UUllfVFlQRV9TVUJUSVRMRSwic3R4dCIsZnVuY3Rpb24oZSl7dGhpcy5wYXJzZUhlYWRlcihlKSx0aGlzLmNvbnRlbnRfZW5jb2Rpbmc9ZS5yZWFkQ1N0cmluZygpLHRoaXMubWltZV9mb3JtYXQ9ZS5yZWFkQ1N0cmluZygpLHRoaXMucGFyc2VGb290ZXIoZSl9KSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX1NVQlRJVExFLCJ0eDNnIixmdW5jdGlvbihlKXt0aGlzLnBhcnNlSGVhZGVyKGUpLHRoaXMuZGlzcGxheUZsYWdzPWUucmVhZFVpbnQzMigpLHRoaXMuaG9yaXpvbnRhbF9qdXN0aWZpY2F0aW9uPWUucmVhZEludDgoKSx0aGlzLnZlcnRpY2FsX2p1c3RpZmljYXRpb249ZS5yZWFkSW50OCgpLHRoaXMuYmdfY29sb3JfcmdiYT1lLnJlYWRVaW50OEFycmF5KDQpLHRoaXMuYm94X3JlY29yZD1lLnJlYWRJbnQxNkFycmF5KDQpLHRoaXMuc3R5bGVfcmVjb3JkPWUucmVhZFVpbnQ4QXJyYXkoMTIpLHRoaXMucGFyc2VGb290ZXIoZSl9KSxvLmNyZWF0ZVNhbXBsZUVudHJ5Q3RvcihvLlNBTVBMRV9FTlRSWV9UWVBFX01FVEFEQVRBLCJ3dnR0IixmdW5jdGlvbihlKXt0aGlzLnBhcnNlSGVhZGVyKGUpLHRoaXMucGFyc2VGb290ZXIoZSl9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigiYWxzdCIsZnVuY3Rpb24oZSl7dmFyIHQsaT1lLnJlYWRVaW50MTYoKTtmb3IodGhpcy5maXJzdF9vdXRwdXRfc2FtcGxlPWUucmVhZFVpbnQxNigpLHRoaXMuc2FtcGxlX29mZnNldD1bXSx0PTA7dDxpO3QrKyl0aGlzLnNhbXBsZV9vZmZzZXRbdF09ZS5yZWFkVWludDMyKCk7dmFyIGY9dGhpcy5kZXNjcmlwdGlvbl9sZW5ndGgtNC00Kmk7Zm9yKHRoaXMubnVtX291dHB1dF9zYW1wbGVzPVtdLHRoaXMubnVtX3RvdGFsX3NhbXBsZXM9W10sdD0wO3Q8Zi80O3QrKyl0aGlzLm51bV9vdXRwdXRfc2FtcGxlc1t0XT1lLnJlYWRVaW50MTYoKSx0aGlzLm51bV90b3RhbF9zYW1wbGVzW3RdPWUucmVhZFVpbnQxNigpfSksby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoImF2bGwiLGZ1bmN0aW9uKGUpe3RoaXMubGF5ZXJOdW1iZXI9ZS5yZWFkVWludDgoKSx0aGlzLmFjY3VyYXRlU3RhdGlzdGljc0ZsYWc9ZS5yZWFkVWludDgoKSx0aGlzLmF2Z0JpdFJhdGU9ZS5yZWFkVWludDE2KCksdGhpcy5hdmdGcmFtZVJhdGU9ZS5yZWFkVWludDE2KCl9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigiYXZzcyIsZnVuY3Rpb24oZSl7dGhpcy5zdWJTZXF1ZW5jZUlkZW50aWZpZXI9ZS5yZWFkVWludDE2KCksdGhpcy5sYXllck51bWJlcj1lLnJlYWRVaW50OCgpO3ZhciB0PWUucmVhZFVpbnQ4KCk7dGhpcy5kdXJhdGlvbkZsYWc9dD4+Nyx0aGlzLmF2Z1JhdGVGbGFnPXQ+PjYmMSx0aGlzLmR1cmF0aW9uRmxhZyYmKHRoaXMuZHVyYXRpb249ZS5yZWFkVWludDMyKCkpLHRoaXMuYXZnUmF0ZUZsYWcmJih0aGlzLmFjY3VyYXRlU3RhdGlzdGljc0ZsYWc9ZS5yZWFkVWludDgoKSx0aGlzLmF2Z0JpdFJhdGU9ZS5yZWFkVWludDE2KCksdGhpcy5hdmdGcmFtZVJhdGU9ZS5yZWFkVWludDE2KCkpLHRoaXMuZGVwZW5kZW5jeT1bXTtmb3IodmFyIGk9ZS5yZWFkVWludDgoKSxmPTA7ZjxpO2YrKyl7dmFyIHU9e307dGhpcy5kZXBlbmRlbmN5LnB1c2godSksdS5zdWJTZXFEaXJlY3Rpb25GbGFnPWUucmVhZFVpbnQ4KCksdS5sYXllck51bWJlcj1lLnJlYWRVaW50OCgpLHUuc3ViU2VxdWVuY2VJZGVudGlmaWVyPWUucmVhZFVpbnQxNigpfX0pLG8uY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJkdHJ0IixmdW5jdGlvbihlKXtyLndhcm4oIkJveFBhcnNlciIsIlNhbXBsZSBHcm91cCB0eXBlOiAiK3RoaXMuZ3JvdXBpbmdfdHlwZSsiIG5vdCBmdWxseSBwYXJzZWQiKX0pLG8uY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJtdmlmIixmdW5jdGlvbihlKXtyLndhcm4oIkJveFBhcnNlciIsIlNhbXBsZSBHcm91cCB0eXBlOiAiK3RoaXMuZ3JvdXBpbmdfdHlwZSsiIG5vdCBmdWxseSBwYXJzZWQiKX0pLG8uY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJwcm9sIixmdW5jdGlvbihlKXt0aGlzLnJvbGxfZGlzdGFuY2U9ZS5yZWFkSW50MTYoKX0pLG8uY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJyYXAgIixmdW5jdGlvbihlKXt2YXIgdD1lLnJlYWRVaW50OCgpO3RoaXMubnVtX2xlYWRpbmdfc2FtcGxlc19rbm93bj10Pj43LHRoaXMubnVtX2xlYWRpbmdfc2FtcGxlcz10JjEyN30pLG8uY3JlYXRlU2FtcGxlR3JvdXBDdG9yKCJyYXNoIixmdW5jdGlvbihlKXtpZih0aGlzLm9wZXJhdGlvbl9wb2ludF9jb3VudD1lLnJlYWRVaW50MTYoKSx0aGlzLmRlc2NyaXB0aW9uX2xlbmd0aCE9PTIrKHRoaXMub3BlcmF0aW9uX3BvaW50X2NvdW50PT09MT8yOnRoaXMub3BlcmF0aW9uX3BvaW50X2NvdW50KjYpKzkpci53YXJuKCJCb3hQYXJzZXIiLCJNaXNtYXRjaCBpbiAiK3RoaXMuZ3JvdXBpbmdfdHlwZSsiIHNhbXBsZSBncm91cCBsZW5ndGgiKSx0aGlzLmRhdGE9ZS5yZWFkVWludDhBcnJheSh0aGlzLmRlc2NyaXB0aW9uX2xlbmd0aC0yKTtlbHNle2lmKHRoaXMub3BlcmF0aW9uX3BvaW50X2NvdW50PT09MSl0aGlzLnRhcmdldF9yYXRlX3NoYXJlPWUucmVhZFVpbnQxNigpO2Vsc2V7dGhpcy50YXJnZXRfcmF0ZV9zaGFyZT1bXSx0aGlzLmF2YWlsYWJsZV9iaXRyYXRlPVtdO2Zvcih2YXIgdD0wO3Q8dGhpcy5vcGVyYXRpb25fcG9pbnRfY291bnQ7dCsrKXRoaXMuYXZhaWxhYmxlX2JpdHJhdGVbdF09ZS5yZWFkVWludDMyKCksdGhpcy50YXJnZXRfcmF0ZV9zaGFyZVt0XT1lLnJlYWRVaW50MTYoKX10aGlzLm1heGltdW1fYml0cmF0ZT1lLnJlYWRVaW50MzIoKSx0aGlzLm1pbmltdW1fYml0cmF0ZT1lLnJlYWRVaW50MzIoKSx0aGlzLmRpc2NhcmRfcHJpb3JpdHk9ZS5yZWFkVWludDgoKX19KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3Rvcigicm9sbCIsZnVuY3Rpb24oZSl7dGhpcy5yb2xsX2Rpc3RhbmNlPWUucmVhZEludDE2KCl9KSxvLlNhbXBsZUdyb3VwRW50cnkucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKGUpe3Iud2FybigiQm94UGFyc2VyIiwiVW5rbm93biBTYW1wbGUgR3JvdXAgdHlwZTogIit0aGlzLmdyb3VwaW5nX3R5cGUpLHRoaXMuZGF0YT1lLnJlYWRVaW50OEFycmF5KHRoaXMuZGVzY3JpcHRpb25fbGVuZ3RoKX0sby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInNjaWYiLGZ1bmN0aW9uKGUpe3Iud2FybigiQm94UGFyc2VyIiwiU2FtcGxlIEdyb3VwIHR5cGU6ICIrdGhpcy5ncm91cGluZ190eXBlKyIgbm90IGZ1bGx5IHBhcnNlZCIpfSksby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInNjbm0iLGZ1bmN0aW9uKGUpe3Iud2FybigiQm94UGFyc2VyIiwiU2FtcGxlIEdyb3VwIHR5cGU6ICIrdGhpcy5ncm91cGluZ190eXBlKyIgbm90IGZ1bGx5IHBhcnNlZCIpfSksby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInNlaWciLGZ1bmN0aW9uKGUpe3RoaXMucmVzZXJ2ZWQ9ZS5yZWFkVWludDgoKTt2YXIgdD1lLnJlYWRVaW50OCgpO3RoaXMuY3J5cHRfYnl0ZV9ibG9jaz10Pj40LHRoaXMuc2tpcF9ieXRlX2Jsb2NrPXQmMTUsdGhpcy5pc1Byb3RlY3RlZD1lLnJlYWRVaW50OCgpLHRoaXMuUGVyX1NhbXBsZV9JVl9TaXplPWUucmVhZFVpbnQ4KCksdGhpcy5LSUQ9by5wYXJzZUhleDE2KGUpLHRoaXMuY29uc3RhbnRfSVZfc2l6ZT0wLHRoaXMuY29uc3RhbnRfSVY9MCx0aGlzLmlzUHJvdGVjdGVkPT09MSYmdGhpcy5QZXJfU2FtcGxlX0lWX1NpemU9PT0wJiYodGhpcy5jb25zdGFudF9JVl9zaXplPWUucmVhZFVpbnQ4KCksdGhpcy5jb25zdGFudF9JVj1lLnJlYWRVaW50OEFycmF5KHRoaXMuY29uc3RhbnRfSVZfc2l6ZSkpfSksby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInN0c2EiLGZ1bmN0aW9uKGUpe3Iud2FybigiQm94UGFyc2VyIiwiU2FtcGxlIEdyb3VwIHR5cGU6ICIrdGhpcy5ncm91cGluZ190eXBlKyIgbm90IGZ1bGx5IHBhcnNlZCIpfSksby5jcmVhdGVTYW1wbGVHcm91cEN0b3IoInN5bmMiLGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhZFVpbnQ4KCk7dGhpcy5OQUxfdW5pdF90eXBlPXQmNjN9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigidGVsZSIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFkVWludDgoKTt0aGlzLmxldmVsX2luZGVwZW5kZW50bHlfZGVjb2RhYmxlPXQ+Pjd9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigidHNhcyIsZnVuY3Rpb24oZSl7ci53YXJuKCJCb3hQYXJzZXIiLCJTYW1wbGUgR3JvdXAgdHlwZTogIit0aGlzLmdyb3VwaW5nX3R5cGUrIiBub3QgZnVsbHkgcGFyc2VkIil9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigidHNjbCIsZnVuY3Rpb24oZSl7ci53YXJuKCJCb3hQYXJzZXIiLCJTYW1wbGUgR3JvdXAgdHlwZTogIit0aGlzLmdyb3VwaW5nX3R5cGUrIiBub3QgZnVsbHkgcGFyc2VkIil9KSxvLmNyZWF0ZVNhbXBsZUdyb3VwQ3RvcigidmlwciIsZnVuY3Rpb24oZSl7ci53YXJuKCJCb3hQYXJzZXIiLCJTYW1wbGUgR3JvdXAgdHlwZTogIit0aGlzLmdyb3VwaW5nX3R5cGUrIiBub3QgZnVsbHkgcGFyc2VkIil9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzYmdwIixmdW5jdGlvbihlKXt0aGlzLmdyb3VwaW5nX3R5cGU9ZS5yZWFkU3RyaW5nKDQpLHRoaXMudmVyc2lvbj09PTE/dGhpcy5ncm91cGluZ190eXBlX3BhcmFtZXRlcj1lLnJlYWRVaW50MzIoKTp0aGlzLmdyb3VwaW5nX3R5cGVfcGFyYW1ldGVyPTAsdGhpcy5lbnRyaWVzPVtdO2Zvcih2YXIgdD1lLnJlYWRVaW50MzIoKSxpPTA7aTx0O2krKyl7dmFyIGY9e307dGhpcy5lbnRyaWVzLnB1c2goZiksZi5zYW1wbGVfY291bnQ9ZS5yZWFkSW50MzIoKSxmLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PWUucmVhZEludDMyKCl9fSksby5jcmVhdGVGdWxsQm94Q3Rvcigic2NobSIsZnVuY3Rpb24oZSl7dGhpcy5zY2hlbWVfdHlwZT1lLnJlYWRTdHJpbmcoNCksdGhpcy5zY2hlbWVfdmVyc2lvbj1lLnJlYWRVaW50MzIoKSx0aGlzLmZsYWdzJjEmJih0aGlzLnNjaGVtZV91cmk9ZS5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplLTgpKX0pLG8uY3JlYXRlQm94Q3Rvcigic2RwICIsZnVuY3Rpb24oZSl7dGhpcy5zZHB0ZXh0PWUucmVhZFN0cmluZyh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzZHRwIixmdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMuc2l6ZS10aGlzLmhkcl9zaXplO3RoaXMuaXNfbGVhZGluZz1bXSx0aGlzLnNhbXBsZV9kZXBlbmRzX29uPVtdLHRoaXMuc2FtcGxlX2lzX2RlcGVuZGVkX29uPVtdLHRoaXMuc2FtcGxlX2hhc19yZWR1bmRhbmN5PVtdO2Zvcih2YXIgZj0wO2Y8aTtmKyspdD1lLnJlYWRVaW50OCgpLHRoaXMuaXNfbGVhZGluZ1tmXT10Pj42LHRoaXMuc2FtcGxlX2RlcGVuZHNfb25bZl09dD4+NCYzLHRoaXMuc2FtcGxlX2lzX2RlcGVuZGVkX29uW2ZdPXQ+PjImMyx0aGlzLnNhbXBsZV9oYXNfcmVkdW5kYW5jeVtmXT10JjN9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzZW5jIiksby5jcmVhdGVGdWxsQm94Q3Rvcigic2dwZCIsZnVuY3Rpb24oZSl7dGhpcy5ncm91cGluZ190eXBlPWUucmVhZFN0cmluZyg0KSxyLmRlYnVnKCJCb3hQYXJzZXIiLCJGb3VuZCBTYW1wbGUgR3JvdXBzIG9mIHR5cGUgIit0aGlzLmdyb3VwaW5nX3R5cGUpLHRoaXMudmVyc2lvbj09PTE/dGhpcy5kZWZhdWx0X2xlbmd0aD1lLnJlYWRVaW50MzIoKTp0aGlzLmRlZmF1bHRfbGVuZ3RoPTAsdGhpcy52ZXJzaW9uPj0yJiYodGhpcy5kZWZhdWx0X2dyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PWUucmVhZFVpbnQzMigpKSx0aGlzLmVudHJpZXM9W107Zm9yKHZhciB0PWUucmVhZFVpbnQzMigpLGk9MDtpPHQ7aSsrKXt2YXIgZjtvW3RoaXMuZ3JvdXBpbmdfdHlwZSsiU2FtcGxlR3JvdXBFbnRyeSJdP2Y9bmV3IG9bdGhpcy5ncm91cGluZ190eXBlKyJTYW1wbGVHcm91cEVudHJ5Il0odGhpcy5ncm91cGluZ190eXBlKTpmPW5ldyBvLlNhbXBsZUdyb3VwRW50cnkodGhpcy5ncm91cGluZ190eXBlKSx0aGlzLmVudHJpZXMucHVzaChmKSx0aGlzLnZlcnNpb249PT0xP3RoaXMuZGVmYXVsdF9sZW5ndGg9PT0wP2YuZGVzY3JpcHRpb25fbGVuZ3RoPWUucmVhZFVpbnQzMigpOmYuZGVzY3JpcHRpb25fbGVuZ3RoPXRoaXMuZGVmYXVsdF9sZW5ndGg6Zi5kZXNjcmlwdGlvbl9sZW5ndGg9dGhpcy5kZWZhdWx0X2xlbmd0aCxmLndyaXRlPT09by5TYW1wbGVHcm91cEVudHJ5LnByb3RvdHlwZS53cml0ZSYmKHIuaW5mbygiQm94UGFyc2VyIiwiU2FtcGxlR3JvdXAgZm9yIHR5cGUgIit0aGlzLmdyb3VwaW5nX3R5cGUrIiB3cml0aW5nIG5vdCB5ZXQgaW1wbGVtZW50ZWQsIGtlZXBpbmcgdW5wYXJzZWQgZGF0YSBpbiBtZW1vcnkgZm9yIGxhdGVyIHdyaXRlIiksZi5kYXRhPWUucmVhZFVpbnQ4QXJyYXkoZi5kZXNjcmlwdGlvbl9sZW5ndGgpLGUucG9zaXRpb24tPWYuZGVzY3JpcHRpb25fbGVuZ3RoKSxmLnBhcnNlKGUpfX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInNpZHgiLGZ1bmN0aW9uKGUpe3RoaXMucmVmZXJlbmNlX0lEPWUucmVhZFVpbnQzMigpLHRoaXMudGltZXNjYWxlPWUucmVhZFVpbnQzMigpLHRoaXMudmVyc2lvbj09PTA/KHRoaXMuZWFybGllc3RfcHJlc2VudGF0aW9uX3RpbWU9ZS5yZWFkVWludDMyKCksdGhpcy5maXJzdF9vZmZzZXQ9ZS5yZWFkVWludDMyKCkpOih0aGlzLmVhcmxpZXN0X3ByZXNlbnRhdGlvbl90aW1lPWUucmVhZFVpbnQ2NCgpLHRoaXMuZmlyc3Rfb2Zmc2V0PWUucmVhZFVpbnQ2NCgpKSxlLnJlYWRVaW50MTYoKSx0aGlzLnJlZmVyZW5jZXM9W107Zm9yKHZhciB0PWUucmVhZFVpbnQxNigpLGk9MDtpPHQ7aSsrKXt2YXIgZj17fTt0aGlzLnJlZmVyZW5jZXMucHVzaChmKTt2YXIgdT1lLnJlYWRVaW50MzIoKTtmLnJlZmVyZW5jZV90eXBlPXU+PjMxJjEsZi5yZWZlcmVuY2VkX3NpemU9dSYyMTQ3NDgzNjQ3LGYuc3Vic2VnbWVudF9kdXJhdGlvbj1lLnJlYWRVaW50MzIoKSx1PWUucmVhZFVpbnQzMigpLGYuc3RhcnRzX3dpdGhfU0FQPXU+PjMxJjEsZi5TQVBfdHlwZT11Pj4yOCY3LGYuU0FQX2RlbHRhX3RpbWU9dSYyNjg0MzU0NTV9fSksby5TaW5nbGVJdGVtVHlwZVJlZmVyZW5jZUJveD1mdW5jdGlvbihlLHQsaSxmKXtvLkJveC5jYWxsKHRoaXMsZSx0KSx0aGlzLmhkcl9zaXplPWksdGhpcy5zdGFydD1mfSxvLlNpbmdsZUl0ZW1UeXBlUmVmZXJlbmNlQm94LnByb3RvdHlwZT1uZXcgby5Cb3gsby5TaW5nbGVJdGVtVHlwZVJlZmVyZW5jZUJveC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSl7dGhpcy5mcm9tX2l0ZW1fSUQ9ZS5yZWFkVWludDE2KCk7dmFyIHQ9ZS5yZWFkVWludDE2KCk7dGhpcy5yZWZlcmVuY2VzPVtdO2Zvcih2YXIgaT0wO2k8dDtpKyspdGhpcy5yZWZlcmVuY2VzW2ldPWUucmVhZFVpbnQxNigpfSxvLlNpbmdsZUl0ZW1UeXBlUmVmZXJlbmNlQm94TGFyZ2U9ZnVuY3Rpb24oZSx0LGksZil7by5Cb3guY2FsbCh0aGlzLGUsdCksdGhpcy5oZHJfc2l6ZT1pLHRoaXMuc3RhcnQ9Zn0sby5TaW5nbGVJdGVtVHlwZVJlZmVyZW5jZUJveExhcmdlLnByb3RvdHlwZT1uZXcgby5Cb3gsby5TaW5nbGVJdGVtVHlwZVJlZmVyZW5jZUJveExhcmdlLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlKXt0aGlzLmZyb21faXRlbV9JRD1lLnJlYWRVaW50MzIoKTt2YXIgdD1lLnJlYWRVaW50MTYoKTt0aGlzLnJlZmVyZW5jZXM9W107Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLnJlZmVyZW5jZXNbaV09ZS5yZWFkVWludDMyKCl9LG8uY3JlYXRlRnVsbEJveEN0b3IoIlNtRG0iLGZ1bmN0aW9uKGUpe3RoaXMucHJpbWFyeVJDaHJvbWF0aWNpdHlfeD1lLnJlYWRVaW50MTYoKSx0aGlzLnByaW1hcnlSQ2hyb21hdGljaXR5X3k9ZS5yZWFkVWludDE2KCksdGhpcy5wcmltYXJ5R0Nocm9tYXRpY2l0eV94PWUucmVhZFVpbnQxNigpLHRoaXMucHJpbWFyeUdDaHJvbWF0aWNpdHlfeT1lLnJlYWRVaW50MTYoKSx0aGlzLnByaW1hcnlCQ2hyb21hdGljaXR5X3g9ZS5yZWFkVWludDE2KCksdGhpcy5wcmltYXJ5QkNocm9tYXRpY2l0eV95PWUucmVhZFVpbnQxNigpLHRoaXMud2hpdGVQb2ludENocm9tYXRpY2l0eV94PWUucmVhZFVpbnQxNigpLHRoaXMud2hpdGVQb2ludENocm9tYXRpY2l0eV95PWUucmVhZFVpbnQxNigpLHRoaXMubHVtaW5hbmNlTWF4PWUucmVhZFVpbnQzMigpLHRoaXMubHVtaW5hbmNlTWluPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic21oZCIsZnVuY3Rpb24oZSl7dGhpcy5iYWxhbmNlPWUucmVhZFVpbnQxNigpLGUucmVhZFVpbnQxNigpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3NpeCIsZnVuY3Rpb24oZSl7dGhpcy5zdWJzZWdtZW50cz1bXTtmb3IodmFyIHQ9ZS5yZWFkVWludDMyKCksaT0wO2k8dDtpKyspe3ZhciBmPXt9O3RoaXMuc3Vic2VnbWVudHMucHVzaChmKSxmLnJhbmdlcz1bXTtmb3IodmFyIHU9ZS5yZWFkVWludDMyKCksdj0wO3Y8dTt2Kyspe3ZhciB5PXt9O2YucmFuZ2VzLnB1c2goeSkseS5sZXZlbD1lLnJlYWRVaW50OCgpLHkucmFuZ2Vfc2l6ZT1lLnJlYWRVaW50MjQoKX19fSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3RjbyIsZnVuY3Rpb24oZSl7dmFyIHQ7aWYodD1lLnJlYWRVaW50MzIoKSx0aGlzLmNodW5rX29mZnNldHM9W10sdGhpcy52ZXJzaW9uPT09MClmb3IodmFyIGk9MDtpPHQ7aSsrKXRoaXMuY2h1bmtfb2Zmc2V0cy5wdXNoKGUucmVhZFVpbnQzMigpKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInN0ZHAiLGZ1bmN0aW9uKGUpe3ZhciB0PSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSkvMjt0aGlzLnByaW9yaXR5PVtdO2Zvcih2YXIgaT0wO2k8dDtpKyspdGhpcy5wcmlvcml0eVtpXT1lLnJlYWRVaW50MTYoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInN0aGQiKSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzdHJpIixmdW5jdGlvbihlKXt0aGlzLnN3aXRjaF9ncm91cD1lLnJlYWRVaW50MTYoKSx0aGlzLmFsdGVybmF0ZV9ncm91cD1lLnJlYWRVaW50MTYoKSx0aGlzLnN1Yl90cmFja19pZD1lLnJlYWRVaW50MzIoKTt2YXIgdD0odGhpcy5zaXplLXRoaXMuaGRyX3NpemUtOCkvNDt0aGlzLmF0dHJpYnV0ZV9saXN0PVtdO2Zvcih2YXIgaT0wO2k8dDtpKyspdGhpcy5hdHRyaWJ1dGVfbGlzdFtpXT1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInN0c2MiLGZ1bmN0aW9uKGUpe3ZhciB0LGk7aWYodD1lLnJlYWRVaW50MzIoKSx0aGlzLmZpcnN0X2NodW5rPVtdLHRoaXMuc2FtcGxlc19wZXJfY2h1bms9W10sdGhpcy5zYW1wbGVfZGVzY3JpcHRpb25faW5kZXg9W10sdGhpcy52ZXJzaW9uPT09MClmb3IoaT0wO2k8dDtpKyspdGhpcy5maXJzdF9jaHVuay5wdXNoKGUucmVhZFVpbnQzMigpKSx0aGlzLnNhbXBsZXNfcGVyX2NodW5rLnB1c2goZS5yZWFkVWludDMyKCkpLHRoaXMuc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4LnB1c2goZS5yZWFkVWludDMyKCkpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3RzZCIsZnVuY3Rpb24oZSl7dmFyIHQsaSxmLHU7Zm9yKHRoaXMuZW50cmllcz1bXSxmPWUucmVhZFVpbnQzMigpLHQ9MTt0PD1mO3QrKylpZihpPW8ucGFyc2VPbmVCb3goZSwhMCx0aGlzLnNpemUtKGUuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSksaS5jb2RlPT09by5PSylvW2kudHlwZSsiU2FtcGxlRW50cnkiXT8odT1uZXcgb1tpLnR5cGUrIlNhbXBsZUVudHJ5Il0oaS5zaXplKSx1Lmhkcl9zaXplPWkuaGRyX3NpemUsdS5zdGFydD1pLnN0YXJ0KTooci53YXJuKCJCb3hQYXJzZXIiLCJVbmtub3duIHNhbXBsZSBlbnRyeSB0eXBlOiAiK2kudHlwZSksdT1uZXcgby5TYW1wbGVFbnRyeShpLnR5cGUsaS5zaXplLGkuaGRyX3NpemUsaS5zdGFydCkpLHUud3JpdGU9PT1vLlNhbXBsZUVudHJ5LnByb3RvdHlwZS53cml0ZSYmKHIuaW5mbygiQm94UGFyc2VyIiwiU2FtcGxlRW50cnkgIit1LnR5cGUrIiBib3ggd3JpdGluZyBub3QgeWV0IGltcGxlbWVudGVkLCBrZWVwaW5nIHVucGFyc2VkIGRhdGEgaW4gbWVtb3J5IGZvciBsYXRlciB3cml0ZSIpLHUucGFyc2VEYXRhQW5kUmV3aW5kKGUpKSx1LnBhcnNlKGUpLHRoaXMuZW50cmllcy5wdXNoKHUpO2Vsc2UgcmV0dXJufSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3RzZyIsZnVuY3Rpb24oZSl7dGhpcy5ncm91cGluZ190eXBlPWUucmVhZFVpbnQzMigpO3ZhciB0PWUucmVhZFVpbnQxNigpO3RoaXMuZ3JvdXBfZGVzY3JpcHRpb25faW5kZXg9W107Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4W2ldPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3RzaCIsZnVuY3Rpb24oZSl7dmFyIHQsaTtpZih0PWUucmVhZFVpbnQzMigpLHRoaXMuc2hhZG93ZWRfc2FtcGxlX251bWJlcnM9W10sdGhpcy5zeW5jX3NhbXBsZV9udW1iZXJzPVtdLHRoaXMudmVyc2lvbj09PTApZm9yKGk9MDtpPHQ7aSsrKXRoaXMuc2hhZG93ZWRfc2FtcGxlX251bWJlcnMucHVzaChlLnJlYWRVaW50MzIoKSksdGhpcy5zeW5jX3NhbXBsZV9udW1iZXJzLnB1c2goZS5yZWFkVWludDMyKCkpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3RzcyIsZnVuY3Rpb24oZSl7dmFyIHQsaTtpZihpPWUucmVhZFVpbnQzMigpLHRoaXMudmVyc2lvbj09PTApZm9yKHRoaXMuc2FtcGxlX251bWJlcnM9W10sdD0wO3Q8aTt0KyspdGhpcy5zYW1wbGVfbnVtYmVycy5wdXNoKGUucmVhZFVpbnQzMigpKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInN0c3oiLGZ1bmN0aW9uKGUpe3ZhciB0O2lmKHRoaXMuc2FtcGxlX3NpemVzPVtdLHRoaXMudmVyc2lvbj09PTApZm9yKHRoaXMuc2FtcGxlX3NpemU9ZS5yZWFkVWludDMyKCksdGhpcy5zYW1wbGVfY291bnQ9ZS5yZWFkVWludDMyKCksdD0wO3Q8dGhpcy5zYW1wbGVfY291bnQ7dCsrKXRoaXMuc2FtcGxlX3NpemU9PT0wP3RoaXMuc2FtcGxlX3NpemVzLnB1c2goZS5yZWFkVWludDMyKCkpOnRoaXMuc2FtcGxlX3NpemVzW3RdPXRoaXMuc2FtcGxlX3NpemV9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzdHRzIixmdW5jdGlvbihlKXt2YXIgdCxpLGY7aWYodD1lLnJlYWRVaW50MzIoKSx0aGlzLnNhbXBsZV9jb3VudHM9W10sdGhpcy5zYW1wbGVfZGVsdGFzPVtdLHRoaXMudmVyc2lvbj09PTApZm9yKGk9MDtpPHQ7aSsrKXRoaXMuc2FtcGxlX2NvdW50cy5wdXNoKGUucmVhZFVpbnQzMigpKSxmPWUucmVhZEludDMyKCksZjwwJiYoci53YXJuKCJCb3hQYXJzZXIiLCJGaWxlIHVzZXMgbmVnYXRpdmUgc3R0cyBzYW1wbGUgZGVsdGEsIHVzaW5nIHZhbHVlIDEgaW5zdGVhZCwgc3luYyBtYXkgYmUgbG9zdCEiKSxmPTEpLHRoaXMuc2FtcGxlX2RlbHRhcy5wdXNoKGYpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3R2aSIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZWFkVWludDMyKCk7dGhpcy5zaW5nbGVfdmlld19hbGxvd2VkPXQmMyx0aGlzLnN0ZXJlb19zY2hlbWU9ZS5yZWFkVWludDMyKCk7dmFyIGk9ZS5yZWFkVWludDMyKCk7dGhpcy5zdGVyZW9faW5kaWNhdGlvbl90eXBlPWUucmVhZFN0cmluZyhpKTt2YXIgZix1O2Zvcih0aGlzLmJveGVzPVtdO2UuZ2V0UG9zaXRpb24oKTx0aGlzLnN0YXJ0K3RoaXMuc2l6ZTspaWYoZj1vLnBhcnNlT25lQm94KGUsITEsdGhpcy5zaXplLShlLmdldFBvc2l0aW9uKCktdGhpcy5zdGFydCkpLGYuY29kZT09PW8uT0spdT1mLmJveCx0aGlzLmJveGVzLnB1c2godSksdGhpc1t1LnR5cGVdPXU7ZWxzZSByZXR1cm59KSxvLmNyZWF0ZUJveEN0b3IoInN0eXAiLGZ1bmN0aW9uKGUpe28uZnR5cEJveC5wcm90b3R5cGUucGFyc2UuY2FsbCh0aGlzLGUpfSksby5jcmVhdGVGdWxsQm94Q3Rvcigic3R6MiIsZnVuY3Rpb24oZSl7dmFyIHQsaTtpZih0aGlzLnNhbXBsZV9zaXplcz1bXSx0aGlzLnZlcnNpb249PT0wKWlmKHRoaXMucmVzZXJ2ZWQ9ZS5yZWFkVWludDI0KCksdGhpcy5maWVsZF9zaXplPWUucmVhZFVpbnQ4KCksaT1lLnJlYWRVaW50MzIoKSx0aGlzLmZpZWxkX3NpemU9PT00KWZvcih0PTA7dDxpO3QrPTIpe3ZhciBmPWUucmVhZFVpbnQ4KCk7dGhpcy5zYW1wbGVfc2l6ZXNbdF09Zj4+NCYxNSx0aGlzLnNhbXBsZV9zaXplc1t0KzFdPWYmMTV9ZWxzZSBpZih0aGlzLmZpZWxkX3NpemU9PT04KWZvcih0PTA7dDxpO3QrKyl0aGlzLnNhbXBsZV9zaXplc1t0XT1lLnJlYWRVaW50OCgpO2Vsc2UgaWYodGhpcy5maWVsZF9zaXplPT09MTYpZm9yKHQ9MDt0PGk7dCsrKXRoaXMuc2FtcGxlX3NpemVzW3RdPWUucmVhZFVpbnQxNigpO2Vsc2Ugci5lcnJvcigiQm94UGFyc2VyIiwiRXJyb3IgaW4gbGVuZ3RoIGZpZWxkIGluIHN0ejIgYm94Iil9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJzdWJzIixmdW5jdGlvbihlKXt2YXIgdCxpLGYsdTtmb3IoZj1lLnJlYWRVaW50MzIoKSx0aGlzLmVudHJpZXM9W10sdD0wO3Q8Zjt0Kyspe3ZhciB2PXt9O2lmKHRoaXMuZW50cmllc1t0XT12LHYuc2FtcGxlX2RlbHRhPWUucmVhZFVpbnQzMigpLHYuc3Vic2FtcGxlcz1bXSx1PWUucmVhZFVpbnQxNigpLHU+MClmb3IoaT0wO2k8dTtpKyspe3ZhciB5PXt9O3Yuc3Vic2FtcGxlcy5wdXNoKHkpLHRoaXMudmVyc2lvbj09MT95LnNpemU9ZS5yZWFkVWludDMyKCk6eS5zaXplPWUucmVhZFVpbnQxNigpLHkucHJpb3JpdHk9ZS5yZWFkVWludDgoKSx5LmRpc2NhcmRhYmxlPWUucmVhZFVpbnQ4KCkseS5jb2RlY19zcGVjaWZpY19wYXJhbWV0ZXJzPWUucmVhZFVpbnQzMigpfX19KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ0ZW5jIixmdW5jdGlvbihlKXtpZihlLnJlYWRVaW50OCgpLHRoaXMudmVyc2lvbj09PTApZS5yZWFkVWludDgoKTtlbHNle3ZhciB0PWUucmVhZFVpbnQ4KCk7dGhpcy5kZWZhdWx0X2NyeXB0X2J5dGVfYmxvY2s9dD4+NCYxNSx0aGlzLmRlZmF1bHRfc2tpcF9ieXRlX2Jsb2NrPXQmMTV9dGhpcy5kZWZhdWx0X2lzUHJvdGVjdGVkPWUucmVhZFVpbnQ4KCksdGhpcy5kZWZhdWx0X1Blcl9TYW1wbGVfSVZfU2l6ZT1lLnJlYWRVaW50OCgpLHRoaXMuZGVmYXVsdF9LSUQ9by5wYXJzZUhleDE2KGUpLHRoaXMuZGVmYXVsdF9pc1Byb3RlY3RlZD09PTEmJnRoaXMuZGVmYXVsdF9QZXJfU2FtcGxlX0lWX1NpemU9PT0wJiYodGhpcy5kZWZhdWx0X2NvbnN0YW50X0lWX3NpemU9ZS5yZWFkVWludDgoKSx0aGlzLmRlZmF1bHRfY29uc3RhbnRfSVY9ZS5yZWFkVWludDhBcnJheSh0aGlzLmRlZmF1bHRfY29uc3RhbnRfSVZfc2l6ZSkpfSksby5jcmVhdGVGdWxsQm94Q3RvcigidGZkdCIsZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPT0xP3RoaXMuYmFzZU1lZGlhRGVjb2RlVGltZT1lLnJlYWRVaW50NjQoKTp0aGlzLmJhc2VNZWRpYURlY29kZVRpbWU9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ0ZmhkIixmdW5jdGlvbihlKXt2YXIgdD0wO3RoaXMudHJhY2tfaWQ9ZS5yZWFkVWludDMyKCksdGhpcy5zaXplLXRoaXMuaGRyX3NpemU+dCYmdGhpcy5mbGFncyZvLlRGSERfRkxBR19CQVNFX0RBVEFfT0ZGU0VUPyh0aGlzLmJhc2VfZGF0YV9vZmZzZXQ9ZS5yZWFkVWludDY0KCksdCs9OCk6dGhpcy5iYXNlX2RhdGFfb2Zmc2V0PTAsdGhpcy5zaXplLXRoaXMuaGRyX3NpemU+dCYmdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfREVTQz8odGhpcy5kZWZhdWx0X3NhbXBsZV9kZXNjcmlwdGlvbl9pbmRleD1lLnJlYWRVaW50MzIoKSx0Kz00KTp0aGlzLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4PTAsdGhpcy5zaXplLXRoaXMuaGRyX3NpemU+dCYmdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfRFVSPyh0aGlzLmRlZmF1bHRfc2FtcGxlX2R1cmF0aW9uPWUucmVhZFVpbnQzMigpLHQrPTQpOnRoaXMuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb249MCx0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZT50JiZ0aGlzLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9TSVpFPyh0aGlzLmRlZmF1bHRfc2FtcGxlX3NpemU9ZS5yZWFkVWludDMyKCksdCs9NCk6dGhpcy5kZWZhdWx0X3NhbXBsZV9zaXplPTAsdGhpcy5zaXplLXRoaXMuaGRyX3NpemU+dCYmdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfRkxBR1M/KHRoaXMuZGVmYXVsdF9zYW1wbGVfZmxhZ3M9ZS5yZWFkVWludDMyKCksdCs9NCk6dGhpcy5kZWZhdWx0X3NhbXBsZV9mbGFncz0wfSksby5jcmVhdGVGdWxsQm94Q3RvcigidGZyYSIsZnVuY3Rpb24oZSl7dGhpcy50cmFja19JRD1lLnJlYWRVaW50MzIoKSxlLnJlYWRVaW50MjQoKTt2YXIgdD1lLnJlYWRVaW50OCgpO3RoaXMubGVuZ3RoX3NpemVfb2ZfdHJhZl9udW09dD4+NCYzLHRoaXMubGVuZ3RoX3NpemVfb2ZfdHJ1bl9udW09dD4+MiYzLHRoaXMubGVuZ3RoX3NpemVfb2Zfc2FtcGxlX251bT10JjMsdGhpcy5lbnRyaWVzPVtdO2Zvcih2YXIgaT1lLnJlYWRVaW50MzIoKSxmPTA7ZjxpO2YrKyl0aGlzLnZlcnNpb249PT0xPyh0aGlzLnRpbWU9ZS5yZWFkVWludDY0KCksdGhpcy5tb29mX29mZnNldD1lLnJlYWRVaW50NjQoKSk6KHRoaXMudGltZT1lLnJlYWRVaW50MzIoKSx0aGlzLm1vb2Zfb2Zmc2V0PWUucmVhZFVpbnQzMigpKSx0aGlzLnRyYWZfbnVtYmVyPWVbInJlYWRVaW50Iis4Kih0aGlzLmxlbmd0aF9zaXplX29mX3RyYWZfbnVtKzEpXSgpLHRoaXMudHJ1bl9udW1iZXI9ZVsicmVhZFVpbnQiKzgqKHRoaXMubGVuZ3RoX3NpemVfb2ZfdHJ1bl9udW0rMSldKCksdGhpcy5zYW1wbGVfbnVtYmVyPWVbInJlYWRVaW50Iis4Kih0aGlzLmxlbmd0aF9zaXplX29mX3NhbXBsZV9udW0rMSldKCl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ0a2hkIixmdW5jdGlvbihlKXt0aGlzLnZlcnNpb249PTE/KHRoaXMuY3JlYXRpb25fdGltZT1lLnJlYWRVaW50NjQoKSx0aGlzLm1vZGlmaWNhdGlvbl90aW1lPWUucmVhZFVpbnQ2NCgpLHRoaXMudHJhY2tfaWQ9ZS5yZWFkVWludDMyKCksZS5yZWFkVWludDMyKCksdGhpcy5kdXJhdGlvbj1lLnJlYWRVaW50NjQoKSk6KHRoaXMuY3JlYXRpb25fdGltZT1lLnJlYWRVaW50MzIoKSx0aGlzLm1vZGlmaWNhdGlvbl90aW1lPWUucmVhZFVpbnQzMigpLHRoaXMudHJhY2tfaWQ9ZS5yZWFkVWludDMyKCksZS5yZWFkVWludDMyKCksdGhpcy5kdXJhdGlvbj1lLnJlYWRVaW50MzIoKSksZS5yZWFkVWludDMyQXJyYXkoMiksdGhpcy5sYXllcj1lLnJlYWRJbnQxNigpLHRoaXMuYWx0ZXJuYXRlX2dyb3VwPWUucmVhZEludDE2KCksdGhpcy52b2x1bWU9ZS5yZWFkSW50MTYoKT4+OCxlLnJlYWRVaW50MTYoKSx0aGlzLm1hdHJpeD1lLnJlYWRJbnQzMkFycmF5KDkpLHRoaXMud2lkdGg9ZS5yZWFkVWludDMyKCksdGhpcy5oZWlnaHQ9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoInRtYXgiLGZ1bmN0aW9uKGUpe3RoaXMudGltZT1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlQm94Q3RvcigidG1pbiIsZnVuY3Rpb24oZSl7dGhpcy50aW1lPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVCb3hDdG9yKCJ0b3RsIixmdW5jdGlvbihlKXt0aGlzLmJ5dGVzc2VudD1lLnJlYWRVaW50MzIoKX0pLG8uY3JlYXRlQm94Q3RvcigidHBheSIsZnVuY3Rpb24oZSl7dGhpcy5ieXRlc3NlbnQ9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoInRweWwiLGZ1bmN0aW9uKGUpe3RoaXMuYnl0ZXNzZW50PWUucmVhZFVpbnQ2NCgpfSksby5UcmFja0dyb3VwVHlwZUJveC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSl7dGhpcy5wYXJzZUZ1bGxIZWFkZXIoZSksdGhpcy50cmFja19ncm91cF9pZD1lLnJlYWRVaW50MzIoKX0sby5jcmVhdGVUcmFja0dyb3VwQ3RvcigibXNyYyIpLG8uVHJhY2tSZWZlcmVuY2VUeXBlQm94PWZ1bmN0aW9uKGUsdCxpLGYpe28uQm94LmNhbGwodGhpcyxlLHQpLHRoaXMuaGRyX3NpemU9aSx0aGlzLnN0YXJ0PWZ9LG8uVHJhY2tSZWZlcmVuY2VUeXBlQm94LnByb3RvdHlwZT1uZXcgby5Cb3gsby5UcmFja1JlZmVyZW5jZVR5cGVCb3gucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKGUpe3RoaXMudHJhY2tfaWRzPWUucmVhZFVpbnQzMkFycmF5KCh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZSkvNCl9LG8udHJlZkJveC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LGk7ZS5nZXRQb3NpdGlvbigpPHRoaXMuc3RhcnQrdGhpcy5zaXplOylpZih0PW8ucGFyc2VPbmVCb3goZSwhMCx0aGlzLnNpemUtKGUuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSksdC5jb2RlPT09by5PSylpPW5ldyBvLlRyYWNrUmVmZXJlbmNlVHlwZUJveCh0LnR5cGUsdC5zaXplLHQuaGRyX3NpemUsdC5zdGFydCksaS53cml0ZT09PW8uQm94LnByb3RvdHlwZS53cml0ZSYmaS50eXBlIT09Im1kYXQiJiYoci5pbmZvKCJCb3hQYXJzZXIiLCJUcmFja1JlZmVyZW5jZSAiK2kudHlwZSsiIGJveCB3cml0aW5nIG5vdCB5ZXQgaW1wbGVtZW50ZWQsIGtlZXBpbmcgdW5wYXJzZWQgZGF0YSBpbiBtZW1vcnkgZm9yIGxhdGVyIHdyaXRlIiksaS5wYXJzZURhdGFBbmRSZXdpbmQoZSkpLGkucGFyc2UoZSksdGhpcy5ib3hlcy5wdXNoKGkpO2Vsc2UgcmV0dXJufSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ0cmVwIixmdW5jdGlvbihlKXtmb3IodGhpcy50cmFja19JRD1lLnJlYWRVaW50MzIoKSx0aGlzLmJveGVzPVtdO2UuZ2V0UG9zaXRpb24oKTx0aGlzLnN0YXJ0K3RoaXMuc2l6ZTspaWYocmV0PW8ucGFyc2VPbmVCb3goZSwhMSx0aGlzLnNpemUtKGUuZ2V0UG9zaXRpb24oKS10aGlzLnN0YXJ0KSkscmV0LmNvZGU9PT1vLk9LKWJveD1yZXQuYm94LHRoaXMuYm94ZXMucHVzaChib3gpO2Vsc2UgcmV0dXJufSksby5jcmVhdGVGdWxsQm94Q3RvcigidHJleCIsZnVuY3Rpb24oZSl7dGhpcy50cmFja19pZD1lLnJlYWRVaW50MzIoKSx0aGlzLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4PWUucmVhZFVpbnQzMigpLHRoaXMuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb249ZS5yZWFkVWludDMyKCksdGhpcy5kZWZhdWx0X3NhbXBsZV9zaXplPWUucmVhZFVpbnQzMigpLHRoaXMuZGVmYXVsdF9zYW1wbGVfZmxhZ3M9ZS5yZWFkVWludDMyKCl9KSxvLmNyZWF0ZUJveEN0b3IoInRycHkiLGZ1bmN0aW9uKGUpe3RoaXMuYnl0ZXNzZW50PWUucmVhZFVpbnQ2NCgpfSksby5jcmVhdGVGdWxsQm94Q3RvcigidHJ1biIsZnVuY3Rpb24oZSl7dmFyIHQ9MDtpZih0aGlzLnNhbXBsZV9jb3VudD1lLnJlYWRVaW50MzIoKSx0Kz00LHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplPnQmJnRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0RBVEFfT0ZGU0VUPyh0aGlzLmRhdGFfb2Zmc2V0PWUucmVhZEludDMyKCksdCs9NCk6dGhpcy5kYXRhX29mZnNldD0wLHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplPnQmJnRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZJUlNUX0ZMQUc/KHRoaXMuZmlyc3Rfc2FtcGxlX2ZsYWdzPWUucmVhZFVpbnQzMigpLHQrPTQpOnRoaXMuZmlyc3Rfc2FtcGxlX2ZsYWdzPTAsdGhpcy5zYW1wbGVfZHVyYXRpb249W10sdGhpcy5zYW1wbGVfc2l6ZT1bXSx0aGlzLnNhbXBsZV9mbGFncz1bXSx0aGlzLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldD1bXSx0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZT50KWZvcih2YXIgaT0wO2k8dGhpcy5zYW1wbGVfY291bnQ7aSsrKXRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0RVUkFUSU9OJiYodGhpcy5zYW1wbGVfZHVyYXRpb25baV09ZS5yZWFkVWludDMyKCkpLHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX1NJWkUmJih0aGlzLnNhbXBsZV9zaXplW2ldPWUucmVhZFVpbnQzMigpKSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19GTEFHUyYmKHRoaXMuc2FtcGxlX2ZsYWdzW2ldPWUucmVhZFVpbnQzMigpKSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19DVFNfT0ZGU0VUJiYodGhpcy52ZXJzaW9uPT09MD90aGlzLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldFtpXT1lLnJlYWRVaW50MzIoKTp0aGlzLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldFtpXT1lLnJlYWRJbnQzMigpKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInRzZWwiLGZ1bmN0aW9uKGUpe3RoaXMuc3dpdGNoX2dyb3VwPWUucmVhZFVpbnQzMigpO3ZhciB0PSh0aGlzLnNpemUtdGhpcy5oZHJfc2l6ZS00KS80O3RoaXMuYXR0cmlidXRlX2xpc3Q9W107Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLmF0dHJpYnV0ZV9saXN0W2ldPWUucmVhZFVpbnQzMigpfSksby5jcmVhdGVGdWxsQm94Q3RvcigidHh0QyIsZnVuY3Rpb24oZSl7dGhpcy5jb25maWc9ZS5yZWFkQ1N0cmluZygpfSksby5jcmVhdGVGdWxsQm94Q3RvcigidXJsICIsZnVuY3Rpb24oZSl7dGhpcy5mbGFncyE9PTEmJih0aGlzLmxvY2F0aW9uPWUucmVhZENTdHJpbmcoKSl9KSxvLmNyZWF0ZUZ1bGxCb3hDdG9yKCJ1cm4gIixmdW5jdGlvbihlKXt0aGlzLm5hbWU9ZS5yZWFkQ1N0cmluZygpLHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplLXRoaXMubmFtZS5sZW5ndGgtMT4wJiYodGhpcy5sb2NhdGlvbj1lLnJlYWRDU3RyaW5nKCkpfSksby5jcmVhdGVVVUlEQm94KCJhNWQ0MGIzMGU4MTQxMWRkYmEyZjA4MDAyMDBjOWE2NiIsITAsITEsZnVuY3Rpb24oZSl7dGhpcy5MaXZlU2VydmVyTWFuaWZlc3Q9ZS5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKS5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csIiYjMDM5OyIpfSksby5jcmVhdGVVVUlEQm94KCJkMDhhNGYxODEwZjM0YTgyYjZjODMyZDhhYmExODNkMyIsITAsITEsZnVuY3Rpb24oZSl7dGhpcy5zeXN0ZW1faWQ9by5wYXJzZUhleDE2KGUpO3ZhciB0PWUucmVhZFVpbnQzMigpO3Q+MCYmKHRoaXMuZGF0YT1lLnJlYWRVaW50OEFycmF5KHQpKX0pLG8uY3JlYXRlVVVJREJveCgiYTIzOTRmNTI1YTliNGYxNGEyNDQ2YzQyN2M2NDhkZjQiLCEwLCExKSxvLmNyZWF0ZVVVSURCb3goIjg5NzRkYmNlN2JlNzRjNTE4NGY5NzE0OGY5ODgyNTU0IiwhMCwhMSxmdW5jdGlvbihlKXt0aGlzLmRlZmF1bHRfQWxnb3JpdGhtSUQ9ZS5yZWFkVWludDI0KCksdGhpcy5kZWZhdWx0X0lWX3NpemU9ZS5yZWFkVWludDgoKSx0aGlzLmRlZmF1bHRfS0lEPW8ucGFyc2VIZXgxNihlKX0pLG8uY3JlYXRlVVVJREJveCgiZDQ4MDdlZjJjYTM5NDY5NThlNTQyNmNiOWU0NmE3OWYiLCEwLCExLGZ1bmN0aW9uKGUpe3RoaXMuZnJhZ21lbnRfY291bnQ9ZS5yZWFkVWludDgoKSx0aGlzLmVudHJpZXM9W107Zm9yKHZhciB0PTA7dDx0aGlzLmZyYWdtZW50X2NvdW50O3QrKyl7dmFyIGk9e30sZj0wLHU9MDt0aGlzLnZlcnNpb249PT0xPyhmPWUucmVhZFVpbnQ2NCgpLHU9ZS5yZWFkVWludDY0KCkpOihmPWUucmVhZFVpbnQzMigpLHU9ZS5yZWFkVWludDMyKCkpLGkuYWJzb2x1dGVfdGltZT1mLGkuYWJzb2x1dGVfZHVyYXRpb249dSx0aGlzLmVudHJpZXMucHVzaChpKX19KSxvLmNyZWF0ZVVVSURCb3goIjZkMWQ5YjA1NDJkNTQ0ZTY4MGUyMTQxZGFmZjc1N2IyIiwhMCwhMSxmdW5jdGlvbihlKXt0aGlzLnZlcnNpb249PT0xPyh0aGlzLmFic29sdXRlX3RpbWU9ZS5yZWFkVWludDY0KCksdGhpcy5kdXJhdGlvbj1lLnJlYWRVaW50NjQoKSk6KHRoaXMuYWJzb2x1dGVfdGltZT1lLnJlYWRVaW50MzIoKSx0aGlzLmR1cmF0aW9uPWUucmVhZFVpbnQzMigpKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInZtaGQiLGZ1bmN0aW9uKGUpe3RoaXMuZ3JhcGhpY3Ntb2RlPWUucmVhZFVpbnQxNigpLHRoaXMub3Bjb2xvcj1lLnJlYWRVaW50MTZBcnJheSgzKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInZwY0MiLGZ1bmN0aW9uKGUpe3ZhciB0O3RoaXMudmVyc2lvbj09PTE/KHRoaXMucHJvZmlsZT1lLnJlYWRVaW50OCgpLHRoaXMubGV2ZWw9ZS5yZWFkVWludDgoKSx0PWUucmVhZFVpbnQ4KCksdGhpcy5iaXREZXB0aD10Pj40LHRoaXMuY2hyb21hU3Vic2FtcGxpbmc9dD4+MSY3LHRoaXMudmlkZW9GdWxsUmFuZ2VGbGFnPXQmMSx0aGlzLmNvbG91clByaW1hcmllcz1lLnJlYWRVaW50OCgpLHRoaXMudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M9ZS5yZWFkVWludDgoKSx0aGlzLm1hdHJpeENvZWZmaWNpZW50cz1lLnJlYWRVaW50OCgpLHRoaXMuY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemU9ZS5yZWFkVWludDE2KCksdGhpcy5jb2RlY0ludGlhbGl6YXRpb25EYXRhPWUucmVhZFVpbnQ4QXJyYXkodGhpcy5jb2RlY0ludGlhbGl6YXRpb25EYXRhU2l6ZSkpOih0aGlzLnByb2ZpbGU9ZS5yZWFkVWludDgoKSx0aGlzLmxldmVsPWUucmVhZFVpbnQ4KCksdD1lLnJlYWRVaW50OCgpLHRoaXMuYml0RGVwdGg9dD4+NCYxNSx0aGlzLmNvbG9yU3BhY2U9dCYxNSx0PWUucmVhZFVpbnQ4KCksdGhpcy5jaHJvbWFTdWJzYW1wbGluZz10Pj40JjE1LHRoaXMudHJhbnNmZXJGdW5jdGlvbj10Pj4xJjcsdGhpcy52aWRlb0Z1bGxSYW5nZUZsYWc9dCYxLHRoaXMuY29kZWNJbnRpYWxpemF0aW9uRGF0YVNpemU9ZS5yZWFkVWludDE2KCksdGhpcy5jb2RlY0ludGlhbGl6YXRpb25EYXRhPWUucmVhZFVpbnQ4QXJyYXkodGhpcy5jb2RlY0ludGlhbGl6YXRpb25EYXRhU2l6ZSkpfSksby5jcmVhdGVCb3hDdG9yKCJ2dHRDIixmdW5jdGlvbihlKXt0aGlzLnRleHQ9ZS5yZWFkU3RyaW5nKHRoaXMuc2l6ZS10aGlzLmhkcl9zaXplKX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInZ2Y0MiLGZ1bmN0aW9uKGUpe3ZhciB0LGksZj17aGVsZF9iaXRzOnZvaWQgMCxudW1faGVsZF9iaXRzOjAsc3RyZWFtX3JlYWRfMV9ieXRlczpmdW5jdGlvbih3KXt0aGlzLmhlbGRfYml0cz13LnJlYWRVaW50OCgpLHRoaXMubnVtX2hlbGRfYml0cz04fSxzdHJlYW1fcmVhZF8yX2J5dGVzOmZ1bmN0aW9uKHcpe3RoaXMuaGVsZF9iaXRzPXcucmVhZFVpbnQxNigpLHRoaXMubnVtX2hlbGRfYml0cz0xNn0sZXh0cmFjdF9iaXRzOmZ1bmN0aW9uKHcpe3ZhciBBPXRoaXMuaGVsZF9iaXRzPj50aGlzLm51bV9oZWxkX2JpdHMtdyYoMTw8dyktMTtyZXR1cm4gdGhpcy5udW1faGVsZF9iaXRzLT13LEF9fTtpZihmLnN0cmVhbV9yZWFkXzFfYnl0ZXMoZSksZi5leHRyYWN0X2JpdHMoNSksdGhpcy5sZW5ndGhTaXplTWludXNPbmU9Zi5leHRyYWN0X2JpdHMoMiksdGhpcy5wdGxfcHJlc2VudF9mbGFnPWYuZXh0cmFjdF9iaXRzKDEpLHRoaXMucHRsX3ByZXNlbnRfZmxhZyl7Zi5zdHJlYW1fcmVhZF8yX2J5dGVzKGUpLHRoaXMub2xzX2lkeD1mLmV4dHJhY3RfYml0cyg5KSx0aGlzLm51bV9zdWJsYXllcnM9Zi5leHRyYWN0X2JpdHMoMyksdGhpcy5jb25zdGFudF9mcmFtZV9yYXRlPWYuZXh0cmFjdF9iaXRzKDIpLHRoaXMuY2hyb21hX2Zvcm1hdF9pZGM9Zi5leHRyYWN0X2JpdHMoMiksZi5zdHJlYW1fcmVhZF8xX2J5dGVzKGUpLHRoaXMuYml0X2RlcHRoX21pbnVzOD1mLmV4dHJhY3RfYml0cygzKSxmLmV4dHJhY3RfYml0cyg1KTt7aWYoZi5zdHJlYW1fcmVhZF8yX2J5dGVzKGUpLGYuZXh0cmFjdF9iaXRzKDIpLHRoaXMubnVtX2J5dGVzX2NvbnN0cmFpbnRfaW5mbz1mLmV4dHJhY3RfYml0cyg2KSx0aGlzLmdlbmVyYWxfcHJvZmlsZV9pZGM9Zi5leHRyYWN0X2JpdHMoNyksdGhpcy5nZW5lcmFsX3RpZXJfZmxhZz1mLmV4dHJhY3RfYml0cygxKSx0aGlzLmdlbmVyYWxfbGV2ZWxfaWRjPWUucmVhZFVpbnQ4KCksZi5zdHJlYW1fcmVhZF8xX2J5dGVzKGUpLHRoaXMucHRsX2ZyYW1lX29ubHlfY29uc3RyYWludF9mbGFnPWYuZXh0cmFjdF9iaXRzKDEpLHRoaXMucHRsX211bHRpbGF5ZXJfZW5hYmxlZF9mbGFnPWYuZXh0cmFjdF9iaXRzKDEpLHRoaXMuZ2VuZXJhbF9jb25zdHJhaW50X2luZm89bmV3IFVpbnQ4QXJyYXkodGhpcy5udW1fYnl0ZXNfY29uc3RyYWludF9pbmZvKSx0aGlzLm51bV9ieXRlc19jb25zdHJhaW50X2luZm8pe2Zvcih0PTA7dDx0aGlzLm51bV9ieXRlc19jb25zdHJhaW50X2luZm8tMTt0Kyspe3ZhciB1PWYuZXh0cmFjdF9iaXRzKDYpO2Yuc3RyZWFtX3JlYWRfMV9ieXRlcyhlKTt2YXIgdj1mLmV4dHJhY3RfYml0cygyKTt0aGlzLmdlbmVyYWxfY29uc3RyYWludF9pbmZvW3RdPXU8PDJ8dn10aGlzLmdlbmVyYWxfY29uc3RyYWludF9pbmZvW3RoaXMubnVtX2J5dGVzX2NvbnN0cmFpbnRfaW5mby0xXT1mLmV4dHJhY3RfYml0cyg2KX1lbHNlIGYuZXh0cmFjdF9iaXRzKDYpO2ZvcihmLnN0cmVhbV9yZWFkXzFfYnl0ZXMoZSksdGhpcy5wdGxfc3VibGF5ZXJfcHJlc2VudF9tYXNrPTAsaT10aGlzLm51bV9zdWJsYXllcnMtMjtpPj0wOy0taSl7dmFyIHk9Zi5leHRyYWN0X2JpdHMoMSk7dGhpcy5wdGxfc3VibGF5ZXJfcHJlc2VudF9tYXNrfD15PDxpfWZvcihpPXRoaXMubnVtX3N1YmxheWVycztpPD04JiZ0aGlzLm51bV9zdWJsYXllcnM+MTsrK2kpZi5leHRyYWN0X2JpdHMoMSk7Zm9yKGk9dGhpcy5udW1fc3VibGF5ZXJzLTI7aT49MDstLWkpdGhpcy5wdGxfc3VibGF5ZXJfcHJlc2VudF9tYXNrJjE8PGkmJih0aGlzLnN1YmxheWVyX2xldmVsX2lkY1tpXT1lLnJlYWRVaW50OCgpKTtpZih0aGlzLnB0bF9udW1fc3ViX3Byb2ZpbGVzPWUucmVhZFVpbnQ4KCksdGhpcy5nZW5lcmFsX3N1Yl9wcm9maWxlX2lkYz1bXSx0aGlzLnB0bF9udW1fc3ViX3Byb2ZpbGVzKWZvcih0PTA7dDx0aGlzLnB0bF9udW1fc3ViX3Byb2ZpbGVzO3QrKyl0aGlzLmdlbmVyYWxfc3ViX3Byb2ZpbGVfaWRjLnB1c2goZS5yZWFkVWludDMyKCkpfXRoaXMubWF4X3BpY3R1cmVfd2lkdGg9ZS5yZWFkVWludDE2KCksdGhpcy5tYXhfcGljdHVyZV9oZWlnaHQ9ZS5yZWFkVWludDE2KCksdGhpcy5hdmdfZnJhbWVfcmF0ZT1lLnJlYWRVaW50MTYoKX12YXIgbT0xMixiPTEzO3RoaXMubmFsdV9hcnJheXM9W107dmFyIHg9ZS5yZWFkVWludDgoKTtmb3IodD0wO3Q8eDt0Kyspe3ZhciBTPVtdO3RoaXMubmFsdV9hcnJheXMucHVzaChTKSxmLnN0cmVhbV9yZWFkXzFfYnl0ZXMoZSksUy5jb21wbGV0ZW5lc3M9Zi5leHRyYWN0X2JpdHMoMSksZi5leHRyYWN0X2JpdHMoMiksUy5uYWx1X3R5cGU9Zi5leHRyYWN0X2JpdHMoNSk7dmFyIFU9MTtmb3IoUy5uYWx1X3R5cGUhPWImJlMubmFsdV90eXBlIT1tJiYoVT1lLnJlYWRVaW50MTYoKSksaT0wO2k8VTtpKyspe3ZhciBFPWUucmVhZFVpbnQxNigpO1MucHVzaCh7ZGF0YTplLnJlYWRVaW50OEFycmF5KEUpLGxlbmd0aDpFfSl9fX0pLG8uY3JlYXRlRnVsbEJveEN0b3IoInZ2bkMiLGZ1bmN0aW9uKGUpe3ZhciB0PXN0cm0ucmVhZFVpbnQ4KCk7dGhpcy5sZW5ndGhTaXplTWludXNPbmU9dCYzfSksby5TYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNWaWRlbz1mdW5jdGlvbigpe3JldHVybiExfSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5pc0F1ZGlvPWZ1bmN0aW9uKCl7cmV0dXJuITF9LG8uU2FtcGxlRW50cnkucHJvdG90eXBlLmlzU3VidGl0bGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNNZXRhZGF0YT1mdW5jdGlvbigpe3JldHVybiExfSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5pc0hpbnQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlLnJlcGxhY2UoIi4iLCIiKX0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LG8uU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENoYW5uZWxDb3VudD1mdW5jdGlvbigpe3JldHVybiIifSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRTYW1wbGVSYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9LG8uU2FtcGxlRW50cnkucHJvdG90eXBlLmdldFNhbXBsZVNpemU9ZnVuY3Rpb24oKXtyZXR1cm4iIn0sby5WaXN1YWxTYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNWaWRlbz1mdW5jdGlvbigpe3JldHVybiEwfSxvLlZpc3VhbFNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpZHRofSxvLlZpc3VhbFNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWlnaHR9LG8uQXVkaW9TYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNBdWRpbz1mdW5jdGlvbigpe3JldHVybiEwfSxvLkF1ZGlvU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENoYW5uZWxDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoYW5uZWxfY291bnR9LG8uQXVkaW9TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0U2FtcGxlUmF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNhbXBsZXJhdGV9LG8uQXVkaW9TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0U2FtcGxlU2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNhbXBsZXNpemV9LG8uU3VidGl0bGVTYW1wbGVFbnRyeS5wcm90b3R5cGUuaXNTdWJ0aXRsZT1mdW5jdGlvbigpe3JldHVybiEwfSxvLk1ldGFkYXRhU2FtcGxlRW50cnkucHJvdG90eXBlLmlzTWV0YWRhdGE9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sby5kZWNpbWFsVG9IZXg9ZnVuY3Rpb24oZSx0KXt2YXIgaT1OdW1iZXIoZSkudG9TdHJpbmcoMTYpO2Zvcih0PXR5cGVvZiB0PiJ1Inx8dD09PW51bGw/dD0yOnQ7aS5sZW5ndGg8dDspaT0iMCIraTtyZXR1cm4gaX0sby5hdmMxU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPW8uYXZjMlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1vLmF2YzNTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9by5hdmM0U2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPWZ1bmN0aW9uKCl7dmFyIGU9by5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWMuY2FsbCh0aGlzKTtyZXR1cm4gdGhpcy5hdmNDP2UrIi4iK28uZGVjaW1hbFRvSGV4KHRoaXMuYXZjQy5BVkNQcm9maWxlSW5kaWNhdGlvbikrby5kZWNpbWFsVG9IZXgodGhpcy5hdmNDLnByb2ZpbGVfY29tcGF0aWJpbGl0eSkrby5kZWNpbWFsVG9IZXgodGhpcy5hdmNDLkFWQ0xldmVsSW5kaWNhdGlvbik6ZX0sby5oZXYxU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPW8uaHZjMVNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1mdW5jdGlvbigpe3ZhciBlLHQ9by5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWMuY2FsbCh0aGlzKTtpZih0aGlzLmh2Y0Mpe3N3aXRjaCh0Kz0iLiIsdGhpcy5odmNDLmdlbmVyYWxfcHJvZmlsZV9zcGFjZSl7Y2FzZSAwOnQrPSIiO2JyZWFrO2Nhc2UgMTp0Kz0iQSI7YnJlYWs7Y2FzZSAyOnQrPSJCIjticmVhaztjYXNlIDM6dCs9IkMiO2JyZWFrfXQrPXRoaXMuaHZjQy5nZW5lcmFsX3Byb2ZpbGVfaWRjLHQrPSIuIjt2YXIgaT10aGlzLmh2Y0MuZ2VuZXJhbF9wcm9maWxlX2NvbXBhdGliaWxpdHksZj0wO2ZvcihlPTA7ZTwzMiYmKGZ8PWkmMSxlIT0zMSk7ZSsrKWY8PD0xLGk+Pj0xO3QrPW8uZGVjaW1hbFRvSGV4KGYsMCksdCs9Ii4iLHRoaXMuaHZjQy5nZW5lcmFsX3RpZXJfZmxhZz09PTA/dCs9IkwiOnQrPSJIIix0Kz10aGlzLmh2Y0MuZ2VuZXJhbF9sZXZlbF9pZGM7dmFyIHU9ITEsdj0iIjtmb3IoZT01O2U+PTA7ZS0tKSh0aGlzLmh2Y0MuZ2VuZXJhbF9jb25zdHJhaW50X2luZGljYXRvcltlXXx8dSkmJih2PSIuIitvLmRlY2ltYWxUb0hleCh0aGlzLmh2Y0MuZ2VuZXJhbF9jb25zdHJhaW50X2luZGljYXRvcltlXSwwKSt2LHU9ITApO3QrPXZ9cmV0dXJuIHR9LG8udnZjMVNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1vLnZ2aTFTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ZnVuY3Rpb24oKXt2YXIgZSx0PW8uU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjLmNhbGwodGhpcyk7aWYodGhpcy52dmNDKXt0Kz0iLiIrdGhpcy52dmNDLmdlbmVyYWxfcHJvZmlsZV9pZGMsdGhpcy52dmNDLmdlbmVyYWxfdGllcl9mbGFnP3QrPSIuSCI6dCs9Ii5MIix0Kz10aGlzLnZ2Y0MuZ2VuZXJhbF9sZXZlbF9pZGM7dmFyIGk9IiI7aWYodGhpcy52dmNDLmdlbmVyYWxfY29uc3RyYWludF9pbmZvKXt2YXIgZj1bXSx1PTA7dXw9dGhpcy52dmNDLnB0bF9mcmFtZV9vbmx5X2NvbnN0cmFpbnQ8PDcsdXw9dGhpcy52dmNDLnB0bF9tdWx0aWxheWVyX2VuYWJsZWQ8PDY7dmFyIHY7Zm9yKGU9MDtlPHRoaXMudnZjQy5nZW5lcmFsX2NvbnN0cmFpbnRfaW5mby5sZW5ndGg7KytlKXV8PXRoaXMudnZjQy5nZW5lcmFsX2NvbnN0cmFpbnRfaW5mb1tlXT4+MiY2MyxmLnB1c2godSksdSYmKHY9ZSksdT10aGlzLnZ2Y0MuZ2VuZXJhbF9jb25zdHJhaW50X2luZm9bZV0+PjImMztpZih2PT09dm9pZCAwKWk9Ii5DQSI7ZWxzZXtpPSIuQyI7dmFyIHk9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMjM0NTY3IixtPTAsYj0wO2ZvcihlPTA7ZTw9djsrK2UpZm9yKG09bTw8OHxmW2VdLGIrPTg7Yj49NTspe3ZhciB4PW0+PmItNSYzMTtpKz15W3hdLGItPTUsbSY9KDE8PGIpLTF9YiYmKG08PD01LWIsaSs9eVttJjMxXSl9fXQrPWl9cmV0dXJuIHR9LG8ubXA0YVNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1mdW5jdGlvbigpe3ZhciBlPW8uU2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjLmNhbGwodGhpcyk7aWYodGhpcy5lc2RzJiZ0aGlzLmVzZHMuZXNkKXt2YXIgdD10aGlzLmVzZHMuZXNkLmdldE9USSgpLGk9dGhpcy5lc2RzLmVzZC5nZXRBdWRpb0NvbmZpZygpO3JldHVybiBlKyIuIitvLmRlY2ltYWxUb0hleCh0KSsoaT8iLiIraToiIil9ZWxzZSByZXR1cm4gZX0sby5zdHh0U2FtcGxlRW50cnkucHJvdG90eXBlLmdldENvZGVjPWZ1bmN0aW9uKCl7dmFyIGU9by5TYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWMuY2FsbCh0aGlzKTtyZXR1cm4gdGhpcy5taW1lX2Zvcm1hdD9lKyIuIit0aGlzLm1pbWVfZm9ybWF0OmV9LG8udnAwOFNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYz1vLnZwMDlTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ZnVuY3Rpb24oKXt2YXIgZT1vLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYy5jYWxsKHRoaXMpLHQ9dGhpcy52cGNDLmxldmVsO3Q9PTAmJih0PSIwMCIpO3ZhciBpPXRoaXMudnBjQy5iaXREZXB0aDtyZXR1cm4gaT09OCYmKGk9IjA4IiksZSsiLjAiK3RoaXMudnBjQy5wcm9maWxlKyIuIit0KyIuIitpfSxvLmF2MDFTYW1wbGVFbnRyeS5wcm90b3R5cGUuZ2V0Q29kZWM9ZnVuY3Rpb24oKXt2YXIgZT1vLlNhbXBsZUVudHJ5LnByb3RvdHlwZS5nZXRDb2RlYy5jYWxsKHRoaXMpLHQ9dGhpcy5hdjFDLnNlcV9sZXZlbF9pZHhfMDt0PDEwJiYodD0iMCIrdCk7dmFyIGk7cmV0dXJuIHRoaXMuYXYxQy5zZXFfcHJvZmlsZT09PTImJnRoaXMuYXYxQy5oaWdoX2JpdGRlcHRoPT09MT9pPXRoaXMuYXYxQy50d2VsdmVfYml0PT09MT8iMTIiOiIxMCI6dGhpcy5hdjFDLnNlcV9wcm9maWxlPD0yJiYoaT10aGlzLmF2MUMuaGlnaF9iaXRkZXB0aD09PTE/IjEwIjoiMDgiKSxlKyIuIit0aGlzLmF2MUMuc2VxX3Byb2ZpbGUrIi4iK3QrKHRoaXMuYXYxQy5zZXFfdGllcl8wPyJIIjoiTSIpKyIuIitpfSxvLkJveC5wcm90b3R5cGUud3JpdGVIZWFkZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLnNpemUrPTgsdGhpcy5zaXplPmwmJih0aGlzLnNpemUrPTgpLHRoaXMudHlwZT09PSJ1dWlkIiYmKHRoaXMuc2l6ZSs9MTYpLHIuZGVidWcoIkJveFdyaXRlciIsIldyaXRpbmcgYm94ICIrdGhpcy50eXBlKyIgb2Ygc2l6ZTogIit0aGlzLnNpemUrIiBhdCBwb3NpdGlvbiAiK2UuZ2V0UG9zaXRpb24oKSsodHx8IiIpKSx0aGlzLnNpemU+bD9lLndyaXRlVWludDMyKDEpOih0aGlzLnNpemVQb3NpdGlvbj1lLmdldFBvc2l0aW9uKCksZS53cml0ZVVpbnQzMih0aGlzLnNpemUpKSxlLndyaXRlU3RyaW5nKHRoaXMudHlwZSxudWxsLDQpLHRoaXMudHlwZT09PSJ1dWlkIiYmZS53cml0ZVVpbnQ4QXJyYXkodGhpcy51dWlkKSx0aGlzLnNpemU+bCYmZS53cml0ZVVpbnQ2NCh0aGlzLnNpemUpfSxvLkZ1bGxCb3gucHJvdG90eXBlLndyaXRlSGVhZGVyPWZ1bmN0aW9uKGUpe3RoaXMuc2l6ZSs9NCxvLkJveC5wcm90b3R5cGUud3JpdGVIZWFkZXIuY2FsbCh0aGlzLGUsIiB2PSIrdGhpcy52ZXJzaW9uKyIgZj0iK3RoaXMuZmxhZ3MpLGUud3JpdGVVaW50OCh0aGlzLnZlcnNpb24pLGUud3JpdGVVaW50MjQodGhpcy5mbGFncyl9LG8uQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnR5cGU9PT0ibWRhdCI/dGhpcy5kYXRhJiYodGhpcy5zaXplPXRoaXMuZGF0YS5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDhBcnJheSh0aGlzLmRhdGEpKToodGhpcy5zaXplPXRoaXMuZGF0YT90aGlzLmRhdGEubGVuZ3RoOjAsdGhpcy53cml0ZUhlYWRlcihlKSx0aGlzLmRhdGEmJmUud3JpdGVVaW50OEFycmF5KHRoaXMuZGF0YSkpfSxvLkNvbnRhaW5lckJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy5zaXplPTAsdGhpcy53cml0ZUhlYWRlcihlKTtmb3IodmFyIHQ9MDt0PHRoaXMuYm94ZXMubGVuZ3RoO3QrKyl0aGlzLmJveGVzW3RdJiYodGhpcy5ib3hlc1t0XS53cml0ZShlKSx0aGlzLnNpemUrPXRoaXMuYm94ZXNbdF0uc2l6ZSk7ci5kZWJ1ZygiQm94V3JpdGVyIiwiQWRqdXN0aW5nIGJveCAiK3RoaXMudHlwZSsiIHdpdGggbmV3IHNpemUgIit0aGlzLnNpemUpLGUuYWRqdXN0VWludDMyKHRoaXMuc2l6ZVBvc2l0aW9uLHRoaXMuc2l6ZSl9LG8uVHJhY2tSZWZlcmVuY2VUeXBlQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnNpemU9dGhpcy50cmFja19pZHMubGVuZ3RoKjQsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyQXJyYXkodGhpcy50cmFja19pZHMpfSxvLmF2Y0NCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0aGlzLnNpemU9Nyx0PTA7dDx0aGlzLlNQUy5sZW5ndGg7dCsrKXRoaXMuc2l6ZSs9Mit0aGlzLlNQU1t0XS5sZW5ndGg7Zm9yKHQ9MDt0PHRoaXMuUFBTLmxlbmd0aDt0KyspdGhpcy5zaXplKz0yK3RoaXMuUFBTW3RdLmxlbmd0aDtmb3IodGhpcy5leHQmJih0aGlzLnNpemUrPXRoaXMuZXh0Lmxlbmd0aCksdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDgodGhpcy5jb25maWd1cmF0aW9uVmVyc2lvbiksZS53cml0ZVVpbnQ4KHRoaXMuQVZDUHJvZmlsZUluZGljYXRpb24pLGUud3JpdGVVaW50OCh0aGlzLnByb2ZpbGVfY29tcGF0aWJpbGl0eSksZS53cml0ZVVpbnQ4KHRoaXMuQVZDTGV2ZWxJbmRpY2F0aW9uKSxlLndyaXRlVWludDgodGhpcy5sZW5ndGhTaXplTWludXNPbmUrMjUyKSxlLndyaXRlVWludDgodGhpcy5TUFMubGVuZ3RoKzIyNCksdD0wO3Q8dGhpcy5TUFMubGVuZ3RoO3QrKyllLndyaXRlVWludDE2KHRoaXMuU1BTW3RdLmxlbmd0aCksZS53cml0ZVVpbnQ4QXJyYXkodGhpcy5TUFNbdF0ubmFsdSk7Zm9yKGUud3JpdGVVaW50OCh0aGlzLlBQUy5sZW5ndGgpLHQ9MDt0PHRoaXMuUFBTLmxlbmd0aDt0KyspZS53cml0ZVVpbnQxNih0aGlzLlBQU1t0XS5sZW5ndGgpLGUud3JpdGVVaW50OEFycmF5KHRoaXMuUFBTW3RdLm5hbHUpO3RoaXMuZXh0JiZlLndyaXRlVWludDhBcnJheSh0aGlzLmV4dCl9LG8uY282NEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCs4KnRoaXMuY2h1bmtfb2Zmc2V0cy5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuY2h1bmtfb2Zmc2V0cy5sZW5ndGgpLHQ9MDt0PHRoaXMuY2h1bmtfb2Zmc2V0cy5sZW5ndGg7dCsrKWUud3JpdGVVaW50NjQodGhpcy5jaHVua19vZmZzZXRzW3RdKX0sby5jc2xnQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQqNSx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVJbnQzMih0aGlzLmNvbXBvc2l0aW9uVG9EVFNTaGlmdCksZS53cml0ZUludDMyKHRoaXMubGVhc3REZWNvZGVUb0Rpc3BsYXlEZWx0YSksZS53cml0ZUludDMyKHRoaXMuZ3JlYXRlc3REZWNvZGVUb0Rpc3BsYXlEZWx0YSksZS53cml0ZUludDMyKHRoaXMuY29tcG9zaXRpb25TdGFydFRpbWUpLGUud3JpdGVJbnQzMih0aGlzLmNvbXBvc2l0aW9uRW5kVGltZSl9LG8uY3R0c0JveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCs4KnRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGgpLHQ9MDt0PHRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGg7dCsrKWUud3JpdGVVaW50MzIodGhpcy5zYW1wbGVfY291bnRzW3RdKSx0aGlzLnZlcnNpb249PT0xP2Uud3JpdGVJbnQzMih0aGlzLnNhbXBsZV9vZmZzZXRzW3RdKTplLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX29mZnNldHNbdF0pfSxvLmRyZWZCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVVaW50MzIodGhpcy5lbnRyaWVzLmxlbmd0aCk7Zm9yKHZhciB0PTA7dDx0aGlzLmVudHJpZXMubGVuZ3RoO3QrKyl0aGlzLmVudHJpZXNbdF0ud3JpdGUoZSksdGhpcy5zaXplKz10aGlzLmVudHJpZXNbdF0uc2l6ZTtyLmRlYnVnKCJCb3hXcml0ZXIiLCJBZGp1c3RpbmcgYm94ICIrdGhpcy50eXBlKyIgd2l0aCBuZXcgc2l6ZSAiK3RoaXMuc2l6ZSksZS5hZGp1c3RVaW50MzIodGhpcy5zaXplUG9zaXRpb24sdGhpcy5zaXplKX0sby5lbG5nQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPXRoaXMuZXh0ZW5kZWRfbGFuZ3VhZ2UubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVN0cmluZyh0aGlzLmV4dGVuZGVkX2xhbmd1YWdlKX0sby5lbHN0Qm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQrMTIqdGhpcy5lbnRyaWVzLmxlbmd0aCx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVVaW50MzIodGhpcy5lbnRyaWVzLmxlbmd0aCk7Zm9yKHZhciB0PTA7dDx0aGlzLmVudHJpZXMubGVuZ3RoO3QrKyl7dmFyIGk9dGhpcy5lbnRyaWVzW3RdO2Uud3JpdGVVaW50MzIoaS5zZWdtZW50X2R1cmF0aW9uKSxlLndyaXRlSW50MzIoaS5tZWRpYV90aW1lKSxlLndyaXRlSW50MTYoaS5tZWRpYV9yYXRlX2ludGVnZXIpLGUud3JpdGVJbnQxNihpLm1lZGlhX3JhdGVfZnJhY3Rpb24pfX0sby5lbXNnQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQqNCt0aGlzLm1lc3NhZ2VfZGF0YS5sZW5ndGgrKHRoaXMuc2NoZW1lX2lkX3VyaS5sZW5ndGgrMSkrKHRoaXMudmFsdWUubGVuZ3RoKzEpLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZUNTdHJpbmcodGhpcy5zY2hlbWVfaWRfdXJpKSxlLndyaXRlQ1N0cmluZyh0aGlzLnZhbHVlKSxlLndyaXRlVWludDMyKHRoaXMudGltZXNjYWxlKSxlLndyaXRlVWludDMyKHRoaXMucHJlc2VudGF0aW9uX3RpbWVfZGVsdGEpLGUud3JpdGVVaW50MzIodGhpcy5ldmVudF9kdXJhdGlvbiksZS53cml0ZVVpbnQzMih0aGlzLmlkKSxlLndyaXRlVWludDhBcnJheSh0aGlzLm1lc3NhZ2VfZGF0YSl9LG8uZnR5cEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy5zaXplPTgrNCp0aGlzLmNvbXBhdGlibGVfYnJhbmRzLmxlbmd0aCx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVTdHJpbmcodGhpcy5tYWpvcl9icmFuZCxudWxsLDQpLGUud3JpdGVVaW50MzIodGhpcy5taW5vcl92ZXJzaW9uKTtmb3IodmFyIHQ9MDt0PHRoaXMuY29tcGF0aWJsZV9icmFuZHMubGVuZ3RoO3QrKyllLndyaXRlU3RyaW5nKHRoaXMuY29tcGF0aWJsZV9icmFuZHNbdF0sbnVsbCw0KX0sby5oZGxyQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnNpemU9NSo0K3RoaXMubmFtZS5sZW5ndGgrMSx0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVTdHJpbmcodGhpcy5oYW5kbGVyLG51bGwsNCksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MzIoMCksZS53cml0ZUNTdHJpbmcodGhpcy5uYW1lKX0sby5raW5kQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPXRoaXMuc2NoZW1lVVJJLmxlbmd0aCsxKyh0aGlzLnZhbHVlLmxlbmd0aCsxKSx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVDU3RyaW5nKHRoaXMuc2NoZW1lVVJJKSxlLndyaXRlQ1N0cmluZyh0aGlzLnZhbHVlKX0sby5tZGhkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnNpemU9NCo0KzIqMix0aGlzLmZsYWdzPTAsdGhpcy52ZXJzaW9uPTAsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuY3JlYXRpb25fdGltZSksZS53cml0ZVVpbnQzMih0aGlzLm1vZGlmaWNhdGlvbl90aW1lKSxlLndyaXRlVWludDMyKHRoaXMudGltZXNjYWxlKSxlLndyaXRlVWludDMyKHRoaXMuZHVyYXRpb24pLGUud3JpdGVVaW50MTYodGhpcy5sYW5ndWFnZSksZS53cml0ZVVpbnQxNigwKX0sby5tZWhkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuZnJhZ21lbnRfZHVyYXRpb24pfSxvLm1maGRCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVVaW50MzIodGhpcy5zZXF1ZW5jZV9udW1iZXIpfSxvLm12aGRCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9MjMqNCsyKjIsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuY3JlYXRpb25fdGltZSksZS53cml0ZVVpbnQzMih0aGlzLm1vZGlmaWNhdGlvbl90aW1lKSxlLndyaXRlVWludDMyKHRoaXMudGltZXNjYWxlKSxlLndyaXRlVWludDMyKHRoaXMuZHVyYXRpb24pLGUud3JpdGVVaW50MzIodGhpcy5yYXRlKSxlLndyaXRlVWludDE2KHRoaXMudm9sdW1lPDw4KSxlLndyaXRlVWludDE2KDApLGUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyQXJyYXkodGhpcy5tYXRyaXgpLGUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MzIodGhpcy5uZXh0X3RyYWNrX2lkKX0sby5TYW1wbGVFbnRyeS5wcm90b3R5cGUud3JpdGVIZWFkZXI9ZnVuY3Rpb24oZSl7dGhpcy5zaXplPTgsby5Cb3gucHJvdG90eXBlLndyaXRlSGVhZGVyLmNhbGwodGhpcyxlKSxlLndyaXRlVWludDgoMCksZS53cml0ZVVpbnQ4KDApLGUud3JpdGVVaW50OCgwKSxlLndyaXRlVWludDgoMCksZS53cml0ZVVpbnQ4KDApLGUud3JpdGVVaW50OCgwKSxlLndyaXRlVWludDE2KHRoaXMuZGF0YV9yZWZlcmVuY2VfaW5kZXgpfSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS53cml0ZUZvb3Rlcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMuYm94ZXMubGVuZ3RoO3QrKyl0aGlzLmJveGVzW3RdLndyaXRlKGUpLHRoaXMuc2l6ZSs9dGhpcy5ib3hlc1t0XS5zaXplO3IuZGVidWcoIkJveFdyaXRlciIsIkFkanVzdGluZyBib3ggIit0aGlzLnR5cGUrIiB3aXRoIG5ldyBzaXplICIrdGhpcy5zaXplKSxlLmFkanVzdFVpbnQzMih0aGlzLnNpemVQb3NpdGlvbix0aGlzLnNpemUpfSxvLlNhbXBsZUVudHJ5LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVVaW50OEFycmF5KHRoaXMuZGF0YSksdGhpcy5zaXplKz10aGlzLmRhdGEubGVuZ3RoLHIuZGVidWcoIkJveFdyaXRlciIsIkFkanVzdGluZyBib3ggIit0aGlzLnR5cGUrIiB3aXRoIG5ldyBzaXplICIrdGhpcy5zaXplKSxlLmFkanVzdFVpbnQzMih0aGlzLnNpemVQb3NpdGlvbix0aGlzLnNpemUpfSxvLlZpc3VhbFNhbXBsZUVudHJ5LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLndyaXRlSGVhZGVyKGUpLHRoaXMuc2l6ZSs9Mio3KzYqNCszMixlLndyaXRlVWludDE2KDApLGUud3JpdGVVaW50MTYoMCksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQxNih0aGlzLndpZHRoKSxlLndyaXRlVWludDE2KHRoaXMuaGVpZ2h0KSxlLndyaXRlVWludDMyKHRoaXMuaG9yaXpyZXNvbHV0aW9uKSxlLndyaXRlVWludDMyKHRoaXMudmVydHJlc29sdXRpb24pLGUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQxNih0aGlzLmZyYW1lX2NvdW50KSxlLndyaXRlVWludDgoTWF0aC5taW4oMzEsdGhpcy5jb21wcmVzc29ybmFtZS5sZW5ndGgpKSxlLndyaXRlU3RyaW5nKHRoaXMuY29tcHJlc3Nvcm5hbWUsbnVsbCwzMSksZS53cml0ZVVpbnQxNih0aGlzLmRlcHRoKSxlLndyaXRlSW50MTYoLTEpLHRoaXMud3JpdGVGb290ZXIoZSl9LG8uQXVkaW9TYW1wbGVFbnRyeS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy53cml0ZUhlYWRlcihlKSx0aGlzLnNpemUrPTIqNCszKjQsZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MTYodGhpcy5jaGFubmVsX2NvdW50KSxlLndyaXRlVWludDE2KHRoaXMuc2FtcGxlc2l6ZSksZS53cml0ZVVpbnQxNigwKSxlLndyaXRlVWludDE2KDApLGUud3JpdGVVaW50MzIodGhpcy5zYW1wbGVyYXRlPDwxNiksdGhpcy53cml0ZUZvb3RlcihlKX0sby5zdHBwU2FtcGxlRW50cnkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMud3JpdGVIZWFkZXIoZSksdGhpcy5zaXplKz10aGlzLm5hbWVzcGFjZS5sZW5ndGgrMSt0aGlzLnNjaGVtYV9sb2NhdGlvbi5sZW5ndGgrMSt0aGlzLmF1eGlsaWFyeV9taW1lX3R5cGVzLmxlbmd0aCsxLGUud3JpdGVDU3RyaW5nKHRoaXMubmFtZXNwYWNlKSxlLndyaXRlQ1N0cmluZyh0aGlzLnNjaGVtYV9sb2NhdGlvbiksZS53cml0ZUNTdHJpbmcodGhpcy5hdXhpbGlhcnlfbWltZV90eXBlcyksdGhpcy53cml0ZUZvb3RlcihlKX0sby5TYW1wbGVHcm91cEVudHJ5LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXtlLndyaXRlVWludDhBcnJheSh0aGlzLmRhdGEpfSxvLnNiZ3BCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0xLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9MTIrOCp0aGlzLmVudHJpZXMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVN0cmluZyh0aGlzLmdyb3VwaW5nX3R5cGUsbnVsbCw0KSxlLndyaXRlVWludDMyKHRoaXMuZ3JvdXBpbmdfdHlwZV9wYXJhbWV0ZXIpLGUud3JpdGVVaW50MzIodGhpcy5lbnRyaWVzLmxlbmd0aCk7Zm9yKHZhciB0PTA7dDx0aGlzLmVudHJpZXMubGVuZ3RoO3QrKyl7dmFyIGk9dGhpcy5lbnRyaWVzW3RdO2Uud3JpdGVJbnQzMihpLnNhbXBsZV9jb3VudCksZS53cml0ZUludDMyKGkuZ3JvdXBfZGVzY3JpcHRpb25faW5kZXgpfX0sby5zZ3BkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt2YXIgdCxpO2Zvcih0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTEyLHQ9MDt0PHRoaXMuZW50cmllcy5sZW5ndGg7dCsrKWk9dGhpcy5lbnRyaWVzW3RdLHRoaXMudmVyc2lvbj09PTEmJih0aGlzLmRlZmF1bHRfbGVuZ3RoPT09MCYmKHRoaXMuc2l6ZSs9NCksdGhpcy5zaXplKz1pLmRhdGEubGVuZ3RoKTtmb3IodGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlU3RyaW5nKHRoaXMuZ3JvdXBpbmdfdHlwZSxudWxsLDQpLHRoaXMudmVyc2lvbj09PTEmJmUud3JpdGVVaW50MzIodGhpcy5kZWZhdWx0X2xlbmd0aCksdGhpcy52ZXJzaW9uPj0yJiZlLndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfZGVzY3JpcHRpb25faW5kZXgpLGUud3JpdGVVaW50MzIodGhpcy5lbnRyaWVzLmxlbmd0aCksdD0wO3Q8dGhpcy5lbnRyaWVzLmxlbmd0aDt0KyspaT10aGlzLmVudHJpZXNbdF0sdGhpcy52ZXJzaW9uPT09MSYmdGhpcy5kZWZhdWx0X2xlbmd0aD09PTAmJmUud3JpdGVVaW50MzIoaS5kZXNjcmlwdGlvbl9sZW5ndGgpLGkud3JpdGUoZSl9LG8uc2lkeEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT00KjQrMisyKzEyKnRoaXMucmVmZXJlbmNlcy5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMucmVmZXJlbmNlX0lEKSxlLndyaXRlVWludDMyKHRoaXMudGltZXNjYWxlKSxlLndyaXRlVWludDMyKHRoaXMuZWFybGllc3RfcHJlc2VudGF0aW9uX3RpbWUpLGUud3JpdGVVaW50MzIodGhpcy5maXJzdF9vZmZzZXQpLGUud3JpdGVVaW50MTYoMCksZS53cml0ZVVpbnQxNih0aGlzLnJlZmVyZW5jZXMubGVuZ3RoKTtmb3IodmFyIHQ9MDt0PHRoaXMucmVmZXJlbmNlcy5sZW5ndGg7dCsrKXt2YXIgaT10aGlzLnJlZmVyZW5jZXNbdF07ZS53cml0ZVVpbnQzMihpLnJlZmVyZW5jZV90eXBlPDwzMXxpLnJlZmVyZW5jZWRfc2l6ZSksZS53cml0ZVVpbnQzMihpLnN1YnNlZ21lbnRfZHVyYXRpb24pLGUud3JpdGVVaW50MzIoaS5zdGFydHNfd2l0aF9TQVA8PDMxfGkuU0FQX3R5cGU8PDI4fGkuU0FQX2RlbHRhX3RpbWUpfX0sby5zbWhkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTEsdGhpcy5zaXplPTQsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDE2KHRoaXMuYmFsYW5jZSksZS53cml0ZVVpbnQxNigwKX0sby5zdGNvQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQrNCp0aGlzLmNodW5rX29mZnNldHMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLmNodW5rX29mZnNldHMubGVuZ3RoKSxlLndyaXRlVWludDMyQXJyYXkodGhpcy5jaHVua19vZmZzZXRzKX0sby5zdHNjQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt2YXIgdDtmb3IodGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT00KzEyKnRoaXMuZmlyc3RfY2h1bmsubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLmZpcnN0X2NodW5rLmxlbmd0aCksdD0wO3Q8dGhpcy5maXJzdF9jaHVuay5sZW5ndGg7dCsrKWUud3JpdGVVaW50MzIodGhpcy5maXJzdF9jaHVua1t0XSksZS53cml0ZVVpbnQzMih0aGlzLnNhbXBsZXNfcGVyX2NodW5rW3RdKSxlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4W3RdKX0sby5zdHNkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt2YXIgdDtmb3IodGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT0wLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLmVudHJpZXMubGVuZ3RoKSx0aGlzLnNpemUrPTQsdD0wO3Q8dGhpcy5lbnRyaWVzLmxlbmd0aDt0KyspdGhpcy5lbnRyaWVzW3RdLndyaXRlKGUpLHRoaXMuc2l6ZSs9dGhpcy5lbnRyaWVzW3RdLnNpemU7ci5kZWJ1ZygiQm94V3JpdGVyIiwiQWRqdXN0aW5nIGJveCAiK3RoaXMudHlwZSsiIHdpdGggbmV3IHNpemUgIit0aGlzLnNpemUpLGUuYWRqdXN0VWludDMyKHRoaXMuc2l6ZVBvc2l0aW9uLHRoaXMuc2l6ZSl9LG8uc3RzaEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCs4KnRoaXMuc2hhZG93ZWRfc2FtcGxlX251bWJlcnMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLnNoYWRvd2VkX3NhbXBsZV9udW1iZXJzLmxlbmd0aCksdD0wO3Q8dGhpcy5zaGFkb3dlZF9zYW1wbGVfbnVtYmVycy5sZW5ndGg7dCsrKWUud3JpdGVVaW50MzIodGhpcy5zaGFkb3dlZF9zYW1wbGVfbnVtYmVyc1t0XSksZS53cml0ZVVpbnQzMih0aGlzLnN5bmNfc2FtcGxlX251bWJlcnNbdF0pfSxvLnN0c3NCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCs0KnRoaXMuc2FtcGxlX251bWJlcnMubGVuZ3RoLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9udW1iZXJzLmxlbmd0aCksZS53cml0ZVVpbnQzMkFycmF5KHRoaXMuc2FtcGxlX251bWJlcnMpfSxvLnN0c3pCb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3ZhciB0LGk9ITA7aWYodGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2FtcGxlX3NpemVzLmxlbmd0aD4wKWZvcih0PTA7dCsxPHRoaXMuc2FtcGxlX3NpemVzLmxlbmd0aDspaWYodGhpcy5zYW1wbGVfc2l6ZXNbdCsxXSE9PXRoaXMuc2FtcGxlX3NpemVzWzBdKXtpPSExO2JyZWFrfWVsc2UgdCsrO2Vsc2UgaT0hMTt0aGlzLnNpemU9OCxpfHwodGhpcy5zaXplKz00KnRoaXMuc2FtcGxlX3NpemVzLmxlbmd0aCksdGhpcy53cml0ZUhlYWRlcihlKSxpP2Uud3JpdGVVaW50MzIodGhpcy5zYW1wbGVfc2l6ZXNbMF0pOmUud3JpdGVVaW50MzIoMCksZS53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9zaXplcy5sZW5ndGgpLGl8fGUud3JpdGVVaW50MzJBcnJheSh0aGlzLnNhbXBsZV9zaXplcyl9LG8uc3R0c0JveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMudmVyc2lvbj0wLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCs4KnRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGgsdGhpcy53cml0ZUhlYWRlcihlKSxlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGgpLHQ9MDt0PHRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGg7dCsrKWUud3JpdGVVaW50MzIodGhpcy5zYW1wbGVfY291bnRzW3RdKSxlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2RlbHRhc1t0XSl9LG8udGZkdEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5wb3coMiwzMiktMTt0aGlzLnZlcnNpb249dGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lPnQ/MTowLHRoaXMuZmxhZ3M9MCx0aGlzLnNpemU9NCx0aGlzLnZlcnNpb249PT0xJiYodGhpcy5zaXplKz00KSx0aGlzLndyaXRlSGVhZGVyKGUpLHRoaXMudmVyc2lvbj09PTE/ZS53cml0ZVVpbnQ2NCh0aGlzLmJhc2VNZWRpYURlY29kZVRpbWUpOmUud3JpdGVVaW50MzIodGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lKX0sby50ZmhkQm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLnNpemU9NCx0aGlzLmZsYWdzJm8uVEZIRF9GTEFHX0JBU0VfREFUQV9PRkZTRVQmJih0aGlzLnNpemUrPTgpLHRoaXMuZmxhZ3Mmby5URkhEX0ZMQUdfU0FNUExFX0RFU0MmJih0aGlzLnNpemUrPTQpLHRoaXMuZmxhZ3Mmby5URkhEX0ZMQUdfU0FNUExFX0RVUiYmKHRoaXMuc2l6ZSs9NCksdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfU0laRSYmKHRoaXMuc2l6ZSs9NCksdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfRkxBR1MmJih0aGlzLnNpemUrPTQpLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLnRyYWNrX2lkKSx0aGlzLmZsYWdzJm8uVEZIRF9GTEFHX0JBU0VfREFUQV9PRkZTRVQmJmUud3JpdGVVaW50NjQodGhpcy5iYXNlX2RhdGFfb2Zmc2V0KSx0aGlzLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9ERVNDJiZlLndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfZGVzY3JpcHRpb25faW5kZXgpLHRoaXMuZmxhZ3Mmby5URkhEX0ZMQUdfU0FNUExFX0RVUiYmZS53cml0ZVVpbnQzMih0aGlzLmRlZmF1bHRfc2FtcGxlX2R1cmF0aW9uKSx0aGlzLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9TSVpFJiZlLndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfc2l6ZSksdGhpcy5mbGFncyZvLlRGSERfRkxBR19TQU1QTEVfRkxBR1MmJmUud3JpdGVVaW50MzIodGhpcy5kZWZhdWx0X3NhbXBsZV9mbGFncyl9LG8udGtoZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPTAsdGhpcy5zaXplPTQqMTgrMio0LHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLmNyZWF0aW9uX3RpbWUpLGUud3JpdGVVaW50MzIodGhpcy5tb2RpZmljYXRpb25fdGltZSksZS53cml0ZVVpbnQzMih0aGlzLnRyYWNrX2lkKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVVaW50MzIodGhpcy5kdXJhdGlvbiksZS53cml0ZVVpbnQzMigwKSxlLndyaXRlVWludDMyKDApLGUud3JpdGVJbnQxNih0aGlzLmxheWVyKSxlLndyaXRlSW50MTYodGhpcy5hbHRlcm5hdGVfZ3JvdXApLGUud3JpdGVJbnQxNih0aGlzLnZvbHVtZTw8OCksZS53cml0ZVVpbnQxNigwKSxlLndyaXRlSW50MzJBcnJheSh0aGlzLm1hdHJpeCksZS53cml0ZVVpbnQzMih0aGlzLndpZHRoKSxlLndyaXRlVWludDMyKHRoaXMuaGVpZ2h0KX0sby50cmV4Qm94LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmZsYWdzPTAsdGhpcy5zaXplPTQqNSx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVVaW50MzIodGhpcy50cmFja19pZCksZS53cml0ZVVpbnQzMih0aGlzLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4KSxlLndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb24pLGUud3JpdGVVaW50MzIodGhpcy5kZWZhdWx0X3NhbXBsZV9zaXplKSxlLndyaXRlVWludDMyKHRoaXMuZGVmYXVsdF9zYW1wbGVfZmxhZ3MpfSxvLnRydW5Cb3gucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3RoaXMudmVyc2lvbj0wLHRoaXMuc2l6ZT00LHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0RBVEFfT0ZGU0VUJiYodGhpcy5zaXplKz00KSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19GSVJTVF9GTEFHJiYodGhpcy5zaXplKz00KSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19EVVJBVElPTiYmKHRoaXMuc2l6ZSs9NCp0aGlzLnNhbXBsZV9kdXJhdGlvbi5sZW5ndGgpLHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX1NJWkUmJih0aGlzLnNpemUrPTQqdGhpcy5zYW1wbGVfc2l6ZS5sZW5ndGgpLHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZMQUdTJiYodGhpcy5zaXplKz00KnRoaXMuc2FtcGxlX2ZsYWdzLmxlbmd0aCksdGhpcy5mbGFncyZvLlRSVU5fRkxBR1NfQ1RTX09GRlNFVCYmKHRoaXMuc2l6ZSs9NCp0aGlzLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldC5sZW5ndGgpLHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQzMih0aGlzLnNhbXBsZV9jb3VudCksdGhpcy5mbGFncyZvLlRSVU5fRkxBR1NfREFUQV9PRkZTRVQmJih0aGlzLmRhdGFfb2Zmc2V0X3Bvc2l0aW9uPWUuZ2V0UG9zaXRpb24oKSxlLndyaXRlSW50MzIodGhpcy5kYXRhX29mZnNldCkpLHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZJUlNUX0ZMQUcmJmUud3JpdGVVaW50MzIodGhpcy5maXJzdF9zYW1wbGVfZmxhZ3MpO2Zvcih2YXIgdD0wO3Q8dGhpcy5zYW1wbGVfY291bnQ7dCsrKXRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0RVUkFUSU9OJiZlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2R1cmF0aW9uW3RdKSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19TSVpFJiZlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX3NpemVbdF0pLHRoaXMuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZMQUdTJiZlLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2ZsYWdzW3RdKSx0aGlzLmZsYWdzJm8uVFJVTl9GTEFHU19DVFNfT0ZGU0VUJiYodGhpcy52ZXJzaW9uPT09MD9lLndyaXRlVWludDMyKHRoaXMuc2FtcGxlX2NvbXBvc2l0aW9uX3RpbWVfb2Zmc2V0W3RdKTplLndyaXRlSW50MzIodGhpcy5zYW1wbGVfY29tcG9zaXRpb25fdGltZV9vZmZzZXRbdF0pKX0sb1sidXJsIEJveCJdLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXt0aGlzLnZlcnNpb249MCx0aGlzLmxvY2F0aW9uPyh0aGlzLmZsYWdzPTAsdGhpcy5zaXplPXRoaXMubG9jYXRpb24ubGVuZ3RoKzEpOih0aGlzLmZsYWdzPTEsdGhpcy5zaXplPTApLHRoaXMud3JpdGVIZWFkZXIoZSksdGhpcy5sb2NhdGlvbiYmZS53cml0ZUNTdHJpbmcodGhpcy5sb2NhdGlvbil9LG9bInVybiBCb3giXS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0wLHRoaXMuc2l6ZT10aGlzLm5hbWUubGVuZ3RoKzErKHRoaXMubG9jYXRpb24/dGhpcy5sb2NhdGlvbi5sZW5ndGgrMTowKSx0aGlzLndyaXRlSGVhZGVyKGUpLGUud3JpdGVDU3RyaW5nKHRoaXMubmFtZSksdGhpcy5sb2NhdGlvbiYmZS53cml0ZUNTdHJpbmcodGhpcy5sb2NhdGlvbil9LG8udm1oZEJveC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy52ZXJzaW9uPTAsdGhpcy5mbGFncz0xLHRoaXMuc2l6ZT04LHRoaXMud3JpdGVIZWFkZXIoZSksZS53cml0ZVVpbnQxNih0aGlzLmdyYXBoaWNzbW9kZSksZS53cml0ZVVpbnQxNkFycmF5KHRoaXMub3Bjb2xvcil9LG8uY3R0c0JveC5wcm90b3R5cGUudW5wYWNrPWZ1bmN0aW9uKGUpe3ZhciB0LGksZjtmb3IoZj0wLHQ9MDt0PHRoaXMuc2FtcGxlX2NvdW50cy5sZW5ndGg7dCsrKWZvcihpPTA7aTx0aGlzLnNhbXBsZV9jb3VudHNbdF07aSsrKWVbZl0ucHRzPWVbZl0uZHRzK3RoaXMuc2FtcGxlX29mZnNldHNbdF0sZisrfSxvLnN0dHNCb3gucHJvdG90eXBlLnVucGFjaz1mdW5jdGlvbihlKXt2YXIgdCxpLGY7Zm9yKGY9MCx0PTA7dDx0aGlzLnNhbXBsZV9jb3VudHMubGVuZ3RoO3QrKylmb3IoaT0wO2k8dGhpcy5zYW1wbGVfY291bnRzW3RdO2krKylmPT09MD9lW2ZdLmR0cz0wOmVbZl0uZHRzPWVbZi0xXS5kdHMrdGhpcy5zYW1wbGVfZGVsdGFzW3RdLGYrK30sby5zdGNvQm94LnByb3RvdHlwZS51bnBhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQ9MDt0PHRoaXMuY2h1bmtfb2Zmc2V0cy5sZW5ndGg7dCsrKWVbdF0ub2Zmc2V0PXRoaXMuY2h1bmtfb2Zmc2V0c1t0XX0sby5zdHNjQm94LnByb3RvdHlwZS51bnBhY2s9ZnVuY3Rpb24oZSl7dmFyIHQsaSxmLHUsdjtmb3IodT0wLHY9MCx0PTA7dDx0aGlzLmZpcnN0X2NodW5rLmxlbmd0aDt0KyspZm9yKGk9MDtpPCh0KzE8dGhpcy5maXJzdF9jaHVuay5sZW5ndGg/dGhpcy5maXJzdF9jaHVua1t0KzFdOjEvMCk7aSsrKWZvcih2KyssZj0wO2Y8dGhpcy5zYW1wbGVzX3Blcl9jaHVua1t0XTtmKyspe2lmKGVbdV0pZVt1XS5kZXNjcmlwdGlvbl9pbmRleD10aGlzLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleFt0XSxlW3VdLmNodW5rX2luZGV4PXY7ZWxzZSByZXR1cm47dSsrfX0sby5zdHN6Qm94LnByb3RvdHlwZS51bnBhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQ9MDt0PHRoaXMuc2FtcGxlX3NpemVzLmxlbmd0aDt0KyspZVt0XS5zaXplPXRoaXMuc2FtcGxlX3NpemVzW3RdfSxvLkRJRkZfQk9YRVNfUFJPUF9OQU1FUz1bImJveGVzIiwiZW50cmllcyIsInJlZmVyZW5jZXMiLCJzdWJzYW1wbGVzIiwiaXRlbXMiLCJpdGVtX2luZm9zIiwiZXh0ZW50cyIsImFzc29jaWF0aW9ucyIsInN1YnNlZ21lbnRzIiwicmFuZ2VzIiwic2Vla0xpc3RzIiwic2Vla1BvaW50cyIsImVzZCIsImxldmVscyJdLG8uRElGRl9QUklNSVRJVkVfQVJSQVlfUFJPUF9OQU1FUz1bImNvbXBhdGlibGVfYnJhbmRzIiwibWF0cml4Iiwib3Bjb2xvciIsInNhbXBsZV9jb3VudHMiLCJzYW1wbGVfY291bnRzIiwic2FtcGxlX2RlbHRhcyIsImZpcnN0X2NodW5rIiwic2FtcGxlc19wZXJfY2h1bmsiLCJzYW1wbGVfc2l6ZXMiLCJjaHVua19vZmZzZXRzIiwic2FtcGxlX29mZnNldHMiLCJzYW1wbGVfZGVzY3JpcHRpb25faW5kZXgiLCJzYW1wbGVfZHVyYXRpb24iXSxvLmJveEVxdWFsRmllbGRzPWZ1bmN0aW9uKGUsdCl7aWYoZSYmIXQpcmV0dXJuITE7dmFyIGk7Zm9yKGkgaW4gZSlpZighKG8uRElGRl9CT1hFU19QUk9QX05BTUVTLmluZGV4T2YoaSk+LTEpKXtpZihlW2ldaW5zdGFuY2VvZiBvLkJveHx8dFtpXWluc3RhbmNlb2Ygby5Cb3gpY29udGludWU7aWYodHlwZW9mIGVbaV0+InUifHx0eXBlb2YgdFtpXT4idSIpY29udGludWU7aWYodHlwZW9mIGVbaV09PSJmdW5jdGlvbiJ8fHR5cGVvZiB0W2ldPT0iZnVuY3Rpb24iKWNvbnRpbnVlO2lmKGUuc3ViQm94TmFtZXMmJmUuc3ViQm94TmFtZXMuaW5kZXhPZihpLnNsaWNlKDAsNCkpPi0xfHx0LnN1YkJveE5hbWVzJiZ0LnN1YkJveE5hbWVzLmluZGV4T2YoaS5zbGljZSgwLDQpKT4tMSljb250aW51ZTtpZihpPT09ImRhdGEifHxpPT09InN0YXJ0Inx8aT09PSJzaXplInx8aT09PSJjcmVhdGlvbl90aW1lInx8aT09PSJtb2RpZmljYXRpb25fdGltZSIpY29udGludWU7aWYoby5ESUZGX1BSSU1JVElWRV9BUlJBWV9QUk9QX05BTUVTLmluZGV4T2YoaSk+LTEpY29udGludWU7aWYoZVtpXSE9PXRbaV0pcmV0dXJuITF9cmV0dXJuITB9LG8uYm94RXF1YWw9ZnVuY3Rpb24oZSx0KXtpZighby5ib3hFcXVhbEZpZWxkcyhlLHQpKXJldHVybiExO2Zvcih2YXIgaT0wO2k8by5ESUZGX0JPWEVTX1BST1BfTkFNRVMubGVuZ3RoO2krKyl7dmFyIGY9by5ESUZGX0JPWEVTX1BST1BfTkFNRVNbaV07aWYoZVtmXSYmdFtmXSYmIW8uYm94RXF1YWwoZVtmXSx0W2ZdKSlyZXR1cm4hMX1yZXR1cm4hMH07dmFyIF89ZnVuY3Rpb24oKXt9O18ucHJvdG90eXBlLnBhcnNlU2FtcGxlPWZ1bmN0aW9uKGUpe3ZhciB0PXt9LGk7dC5yZXNvdXJjZXM9W107dmFyIGY9bmV3IGEoZS5kYXRhLmJ1ZmZlcik7aWYoIWUuc3Vic2FtcGxlc3x8ZS5zdWJzYW1wbGVzLmxlbmd0aD09PTApdC5kb2N1bWVudFN0cmluZz1mLnJlYWRTdHJpbmcoZS5kYXRhLmxlbmd0aCk7ZWxzZSBpZih0LmRvY3VtZW50U3RyaW5nPWYucmVhZFN0cmluZyhlLnN1YnNhbXBsZXNbMF0uc2l6ZSksZS5zdWJzYW1wbGVzLmxlbmd0aD4xKWZvcihpPTE7aTxlLnN1YnNhbXBsZXMubGVuZ3RoO2krKyl0LnJlc291cmNlc1tpXT1mLnJlYWRVaW50OEFycmF5KGUuc3Vic2FtcGxlc1tpXS5zaXplKTtyZXR1cm4gdHlwZW9mIERPTVBhcnNlcjwidSImJih0LmRvY3VtZW50PW5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodC5kb2N1bWVudFN0cmluZywiYXBwbGljYXRpb24veG1sIikpLHR9O3ZhciBwPWZ1bmN0aW9uKCl7fTtwLnByb3RvdHlwZS5wYXJzZVNhbXBsZT1mdW5jdGlvbihlKXt2YXIgdCxpPW5ldyBhKGUuZGF0YS5idWZmZXIpO3JldHVybiB0PWkucmVhZFN0cmluZyhlLmRhdGEubGVuZ3RoKSx0fSxwLnByb3RvdHlwZS5wYXJzZUNvbmZpZz1mdW5jdGlvbihlKXt2YXIgdCxpPW5ldyBhKGUuYnVmZmVyKTtyZXR1cm4gaS5yZWFkVWludDMyKCksdD1pLnJlYWRDU3RyaW5nKCksdH0sbi5YTUxTdWJ0aXRsZWluNFBhcnNlcj1fLG4uVGV4dGluNFBhcnNlcj1wO3ZhciBjPWZ1bmN0aW9uKGUpe3RoaXMuc3RyZWFtPWV8fG5ldyBkLHRoaXMuYm94ZXM9W10sdGhpcy5tZGF0cz1bXSx0aGlzLm1vb2ZzPVtdLHRoaXMuaXNQcm9ncmVzc2l2ZT0hMSx0aGlzLm1vb3ZTdGFydEZvdW5kPSExLHRoaXMub25Nb292U3RhcnQ9bnVsbCx0aGlzLm1vb3ZTdGFydFNlbnQ9ITEsdGhpcy5vblJlYWR5PW51bGwsdGhpcy5yZWFkeVNlbnQ9ITEsdGhpcy5vblNlZ21lbnQ9bnVsbCx0aGlzLm9uU2FtcGxlcz1udWxsLHRoaXMub25FcnJvcj1udWxsLHRoaXMuc2FtcGxlTGlzdEJ1aWx0PSExLHRoaXMuZnJhZ21lbnRlZFRyYWNrcz1bXSx0aGlzLmV4dHJhY3RlZFRyYWNrcz1bXSx0aGlzLmlzRnJhZ21lbnRhdGlvbkluaXRpYWxpemVkPSExLHRoaXMuc2FtcGxlUHJvY2Vzc2luZ1N0YXJ0ZWQ9ITEsdGhpcy5uZXh0TW9vZk51bWJlcj0wLHRoaXMuaXRlbUxpc3RCdWlsdD0hMSx0aGlzLm9uU2lkeD1udWxsLHRoaXMuc2lkeFNlbnQ9ITF9O2MucHJvdG90eXBlLnNldFNlZ21lbnRPcHRpb25zPWZ1bmN0aW9uKGUsdCxpKXt2YXIgZj10aGlzLmdldFRyYWNrQnlJZChlKTtpZihmKXt2YXIgdT17fTt0aGlzLmZyYWdtZW50ZWRUcmFja3MucHVzaCh1KSx1LmlkPWUsdS51c2VyPXQsdS50cmFrPWYsZi5uZXh0U2FtcGxlPTAsdS5zZWdtZW50U3RyZWFtPW51bGwsdS5uYl9zYW1wbGVzPTFlMyx1LnJhcEFsaWduZW1lbnQ9ITAsaSYmKGkubmJTYW1wbGVzJiYodS5uYl9zYW1wbGVzPWkubmJTYW1wbGVzKSxpLnJhcEFsaWduZW1lbnQmJih1LnJhcEFsaWduZW1lbnQ9aS5yYXBBbGlnbmVtZW50KSl9fSxjLnByb3RvdHlwZS51bnNldFNlZ21lbnRPcHRpb25zPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0tMSxpPTA7aTx0aGlzLmZyYWdtZW50ZWRUcmFja3MubGVuZ3RoO2krKyl7dmFyIGY9dGhpcy5mcmFnbWVudGVkVHJhY2tzW2ldO2YuaWQ9PWUmJih0PWkpfXQ+LTEmJnRoaXMuZnJhZ21lbnRlZFRyYWNrcy5zcGxpY2UodCwxKX0sYy5wcm90b3R5cGUuc2V0RXh0cmFjdGlvbk9wdGlvbnM9ZnVuY3Rpb24oZSx0LGkpe3ZhciBmPXRoaXMuZ2V0VHJhY2tCeUlkKGUpO2lmKGYpe3ZhciB1PXt9O3RoaXMuZXh0cmFjdGVkVHJhY2tzLnB1c2godSksdS5pZD1lLHUudXNlcj10LHUudHJhaz1mLGYubmV4dFNhbXBsZT0wLHUubmJfc2FtcGxlcz0xZTMsdS5zYW1wbGVzPVtdLGkmJmkubmJTYW1wbGVzJiYodS5uYl9zYW1wbGVzPWkubmJTYW1wbGVzKX19LGMucHJvdG90eXBlLnVuc2V0RXh0cmFjdGlvbk9wdGlvbnM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PS0xLGk9MDtpPHRoaXMuZXh0cmFjdGVkVHJhY2tzLmxlbmd0aDtpKyspe3ZhciBmPXRoaXMuZXh0cmFjdGVkVHJhY2tzW2ldO2YuaWQ9PWUmJih0PWkpfXQ+LTEmJnRoaXMuZXh0cmFjdGVkVHJhY2tzLnNwbGljZSh0LDEpfSxjLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbigpe3ZhciBlLHQsaT0hMTtpZighKHRoaXMucmVzdG9yZVBhcnNlUG9zaXRpb24mJiF0aGlzLnJlc3RvcmVQYXJzZVBvc2l0aW9uKCkpKWZvcig7OylpZih0aGlzLmhhc0luY29tcGxldGVNZGF0JiZ0aGlzLmhhc0luY29tcGxldGVNZGF0KCkpe2lmKHRoaXMucHJvY2Vzc0luY29tcGxldGVNZGF0KCkpY29udGludWU7cmV0dXJufWVsc2UgaWYodGhpcy5zYXZlUGFyc2VQb3NpdGlvbiYmdGhpcy5zYXZlUGFyc2VQb3NpdGlvbigpLGU9by5wYXJzZU9uZUJveCh0aGlzLnN0cmVhbSxpKSxlLmNvZGU9PT1vLkVSUl9OT1RfRU5PVUdIX0RBVEEpaWYodGhpcy5wcm9jZXNzSW5jb21wbGV0ZUJveCl7aWYodGhpcy5wcm9jZXNzSW5jb21wbGV0ZUJveChlKSljb250aW51ZTtyZXR1cm59ZWxzZSByZXR1cm47ZWxzZXt2YXIgZjtzd2l0Y2godD1lLmJveCxmPXQudHlwZSE9PSJ1dWlkIj90LnR5cGU6dC51dWlkLHRoaXMuYm94ZXMucHVzaCh0KSxmKXtjYXNlIm1kYXQiOnRoaXMubWRhdHMucHVzaCh0KTticmVhaztjYXNlIm1vb2YiOnRoaXMubW9vZnMucHVzaCh0KTticmVhaztjYXNlIm1vb3YiOnRoaXMubW9vdlN0YXJ0Rm91bmQ9ITAsdGhpcy5tZGF0cy5sZW5ndGg9PT0wJiYodGhpcy5pc1Byb2dyZXNzaXZlPSEwKTtkZWZhdWx0OnRoaXNbZl0hPT12b2lkIDAmJnIud2FybigiSVNPRmlsZSIsIkR1cGxpY2F0ZSBCb3ggb2YgdHlwZTogIitmKyIsIG92ZXJyaWRpbmcgcHJldmlvdXMgb2NjdXJyZW5jZSIpLHRoaXNbZl09dDticmVha310aGlzLnVwZGF0ZVVzZWRCeXRlcyYmdGhpcy51cGRhdGVVc2VkQnl0ZXModCxlKX19LGMucHJvdG90eXBlLmNoZWNrQnVmZmVyPWZ1bmN0aW9uKGUpe2lmKGU9PW51bGwpdGhyb3ciQnVmZmVyIG11c3QgYmUgZGVmaW5lZCBhbmQgbm9uIGVtcHR5IjtpZihlLmZpbGVTdGFydD09PXZvaWQgMCl0aHJvdyJCdWZmZXIgbXVzdCBoYXZlIGEgZmlsZVN0YXJ0IHByb3BlcnR5IjtyZXR1cm4gZS5ieXRlTGVuZ3RoPT09MD8oci53YXJuKCJJU09GaWxlIiwiSWdub3JpbmcgZW1wdHkgYnVmZmVyIChmaWxlU3RhcnQ6ICIrZS5maWxlU3RhcnQrIikiKSx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCgpLCExKTooci5pbmZvKCJJU09GaWxlIiwiUHJvY2Vzc2luZyBidWZmZXIgKGZpbGVTdGFydDogIitlLmZpbGVTdGFydCsiKSIpLGUudXNlZEJ5dGVzPTAsdGhpcy5zdHJlYW0uaW5zZXJ0QnVmZmVyKGUpLHRoaXMuc3RyZWFtLmxvZ0J1ZmZlckxldmVsKCksdGhpcy5zdHJlYW0uaW5pdGlhbGl6ZWQoKT8hMDooci53YXJuKCJJU09GaWxlIiwiTm90IHJlYWR5IHRvIHN0YXJ0IHBhcnNpbmciKSwhMSkpfSxjLnByb3RvdHlwZS5hcHBlbmRCdWZmZXI9ZnVuY3Rpb24oZSx0KXt2YXIgaTtpZih0aGlzLmNoZWNrQnVmZmVyKGUpKXJldHVybiB0aGlzLnBhcnNlKCksdGhpcy5tb292U3RhcnRGb3VuZCYmIXRoaXMubW9vdlN0YXJ0U2VudCYmKHRoaXMubW9vdlN0YXJ0U2VudD0hMCx0aGlzLm9uTW9vdlN0YXJ0JiZ0aGlzLm9uTW9vdlN0YXJ0KCkpLHRoaXMubW9vdj8odGhpcy5zYW1wbGVMaXN0QnVpbHR8fCh0aGlzLmJ1aWxkU2FtcGxlTGlzdHMoKSx0aGlzLnNhbXBsZUxpc3RCdWlsdD0hMCksdGhpcy51cGRhdGVTYW1wbGVMaXN0cygpLHRoaXMub25SZWFkeSYmIXRoaXMucmVhZHlTZW50JiYodGhpcy5yZWFkeVNlbnQ9ITAsdGhpcy5vblJlYWR5KHRoaXMuZ2V0SW5mbygpKSksdGhpcy5wcm9jZXNzU2FtcGxlcyh0KSx0aGlzLm5leHRTZWVrUG9zaXRpb24/KGk9dGhpcy5uZXh0U2Vla1Bvc2l0aW9uLHRoaXMubmV4dFNlZWtQb3NpdGlvbj12b2lkIDApOmk9dGhpcy5uZXh0UGFyc2VQb3NpdGlvbix0aGlzLnN0cmVhbS5nZXRFbmRGaWxlUG9zaXRpb25BZnRlciYmKGk9dGhpcy5zdHJlYW0uZ2V0RW5kRmlsZVBvc2l0aW9uQWZ0ZXIoaSkpKTp0aGlzLm5leHRQYXJzZVBvc2l0aW9uP2k9dGhpcy5uZXh0UGFyc2VQb3NpdGlvbjppPTAsdGhpcy5zaWR4JiZ0aGlzLm9uU2lkeCYmIXRoaXMuc2lkeFNlbnQmJih0aGlzLm9uU2lkeCh0aGlzLnNpZHgpLHRoaXMuc2lkeFNlbnQ9ITApLHRoaXMubWV0YSYmKHRoaXMuZmxhdHRlbkl0ZW1JbmZvJiYhdGhpcy5pdGVtTGlzdEJ1aWx0JiYodGhpcy5mbGF0dGVuSXRlbUluZm8oKSx0aGlzLml0ZW1MaXN0QnVpbHQ9ITApLHRoaXMucHJvY2Vzc0l0ZW1zJiZ0aGlzLnByb2Nlc3NJdGVtcyh0aGlzLm9uSXRlbSkpLHRoaXMuc3RyZWFtLmNsZWFuQnVmZmVycyYmKHIuaW5mbygiSVNPRmlsZSIsIkRvbmUgcHJvY2Vzc2luZyBidWZmZXIgKGZpbGVTdGFydDogIitlLmZpbGVTdGFydCsiKSAtIG5leHQgYnVmZmVyIHRvIGZldGNoIHNob3VsZCBoYXZlIGEgZmlsZVN0YXJ0IHBvc2l0aW9uIG9mICIraSksdGhpcy5zdHJlYW0ubG9nQnVmZmVyTGV2ZWwoKSx0aGlzLnN0cmVhbS5jbGVhbkJ1ZmZlcnMoKSx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCghMCksci5pbmZvKCJJU09GaWxlIiwiU2FtcGxlIGRhdGEgc2l6ZSBpbiBtZW1vcnk6ICIrdGhpcy5nZXRBbGxvY2F0ZWRTYW1wbGVEYXRhU2l6ZSgpKSksaX0sYy5wcm90b3R5cGUuZ2V0SW5mbz1mdW5jdGlvbigpe3ZhciBlLHQsaT17fSxmLHUsdix5LG09bmV3IERhdGUoIjE5MDQtMDEtMDFUMDA6MDA6MDBaIikuZ2V0VGltZSgpO2lmKHRoaXMubW9vdilmb3IoaS5oYXNNb292PSEwLGkuZHVyYXRpb249dGhpcy5tb292Lm12aGQuZHVyYXRpb24saS50aW1lc2NhbGU9dGhpcy5tb292Lm12aGQudGltZXNjYWxlLGkuaXNGcmFnbWVudGVkPXRoaXMubW9vdi5tdmV4IT1udWxsLGkuaXNGcmFnbWVudGVkJiZ0aGlzLm1vb3YubXZleC5tZWhkJiYoaS5mcmFnbWVudF9kdXJhdGlvbj10aGlzLm1vb3YubXZleC5tZWhkLmZyYWdtZW50X2R1cmF0aW9uKSxpLmlzUHJvZ3Jlc3NpdmU9dGhpcy5pc1Byb2dyZXNzaXZlLGkuaGFzSU9EPXRoaXMubW9vdi5pb2RzIT1udWxsLGkuYnJhbmRzPVtdLGkuYnJhbmRzLnB1c2godGhpcy5mdHlwLm1ham9yX2JyYW5kKSxpLmJyYW5kcz1pLmJyYW5kcy5jb25jYXQodGhpcy5mdHlwLmNvbXBhdGlibGVfYnJhbmRzKSxpLmNyZWF0ZWQ9bmV3IERhdGUobSt0aGlzLm1vb3YubXZoZC5jcmVhdGlvbl90aW1lKjFlMyksaS5tb2RpZmllZD1uZXcgRGF0ZShtK3RoaXMubW9vdi5tdmhkLm1vZGlmaWNhdGlvbl90aW1lKjFlMyksaS50cmFja3M9W10saS5hdWRpb1RyYWNrcz1bXSxpLnZpZGVvVHJhY2tzPVtdLGkuc3VidGl0bGVUcmFja3M9W10saS5tZXRhZGF0YVRyYWNrcz1bXSxpLmhpbnRUcmFja3M9W10saS5vdGhlclRyYWNrcz1bXSxlPTA7ZTx0aGlzLm1vb3YudHJha3MubGVuZ3RoO2UrKyl7aWYoZj10aGlzLm1vb3YudHJha3NbZV0seT1mLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1swXSx1PXt9LGkudHJhY2tzLnB1c2godSksdS5pZD1mLnRraGQudHJhY2tfaWQsdS5uYW1lPWYubWRpYS5oZGxyLm5hbWUsdS5yZWZlcmVuY2VzPVtdLGYudHJlZilmb3IodD0wO3Q8Zi50cmVmLmJveGVzLmxlbmd0aDt0Kyspdj17fSx1LnJlZmVyZW5jZXMucHVzaCh2KSx2LnR5cGU9Zi50cmVmLmJveGVzW3RdLnR5cGUsdi50cmFja19pZHM9Zi50cmVmLmJveGVzW3RdLnRyYWNrX2lkcztmLmVkdHMmJih1LmVkaXRzPWYuZWR0cy5lbHN0LmVudHJpZXMpLHUuY3JlYXRlZD1uZXcgRGF0ZShtK2YudGtoZC5jcmVhdGlvbl90aW1lKjFlMyksdS5tb2RpZmllZD1uZXcgRGF0ZShtK2YudGtoZC5tb2RpZmljYXRpb25fdGltZSoxZTMpLHUubW92aWVfZHVyYXRpb249Zi50a2hkLmR1cmF0aW9uLHUubW92aWVfdGltZXNjYWxlPWkudGltZXNjYWxlLHUubGF5ZXI9Zi50a2hkLmxheWVyLHUuYWx0ZXJuYXRlX2dyb3VwPWYudGtoZC5hbHRlcm5hdGVfZ3JvdXAsdS52b2x1bWU9Zi50a2hkLnZvbHVtZSx1Lm1hdHJpeD1mLnRraGQubWF0cml4LHUudHJhY2tfd2lkdGg9Zi50a2hkLndpZHRoLzY1NTM2LHUudHJhY2tfaGVpZ2h0PWYudGtoZC5oZWlnaHQvNjU1MzYsdS50aW1lc2NhbGU9Zi5tZGlhLm1kaGQudGltZXNjYWxlLHUuY3RzX3NoaWZ0PWYubWRpYS5taW5mLnN0YmwuY3NsZyx1LmR1cmF0aW9uPWYubWRpYS5tZGhkLmR1cmF0aW9uLHUuc2FtcGxlc19kdXJhdGlvbj1mLnNhbXBsZXNfZHVyYXRpb24sdS5jb2RlYz15LmdldENvZGVjKCksdS5raW5kPWYudWR0YSYmZi51ZHRhLmtpbmRzLmxlbmd0aD9mLnVkdGEua2luZHNbMF06e3NjaGVtZVVSSToiIix2YWx1ZToiIn0sdS5sYW5ndWFnZT1mLm1kaWEuZWxuZz9mLm1kaWEuZWxuZy5leHRlbmRlZF9sYW5ndWFnZTpmLm1kaWEubWRoZC5sYW5ndWFnZVN0cmluZyx1Lm5iX3NhbXBsZXM9Zi5zYW1wbGVzLmxlbmd0aCx1LnNpemU9Zi5zYW1wbGVzX3NpemUsdS5iaXRyYXRlPXUuc2l6ZSo4KnUudGltZXNjYWxlL3Uuc2FtcGxlc19kdXJhdGlvbix5LmlzQXVkaW8oKT8odS50eXBlPSJhdWRpbyIsaS5hdWRpb1RyYWNrcy5wdXNoKHUpLHUuYXVkaW89e30sdS5hdWRpby5zYW1wbGVfcmF0ZT15LmdldFNhbXBsZVJhdGUoKSx1LmF1ZGlvLmNoYW5uZWxfY291bnQ9eS5nZXRDaGFubmVsQ291bnQoKSx1LmF1ZGlvLnNhbXBsZV9zaXplPXkuZ2V0U2FtcGxlU2l6ZSgpKTp5LmlzVmlkZW8oKT8odS50eXBlPSJ2aWRlbyIsaS52aWRlb1RyYWNrcy5wdXNoKHUpLHUudmlkZW89e30sdS52aWRlby53aWR0aD15LmdldFdpZHRoKCksdS52aWRlby5oZWlnaHQ9eS5nZXRIZWlnaHQoKSk6eS5pc1N1YnRpdGxlKCk/KHUudHlwZT0ic3VidGl0bGVzIixpLnN1YnRpdGxlVHJhY2tzLnB1c2godSkpOnkuaXNIaW50KCk/KHUudHlwZT0ibWV0YWRhdGEiLGkuaGludFRyYWNrcy5wdXNoKHUpKTp5LmlzTWV0YWRhdGEoKT8odS50eXBlPSJtZXRhZGF0YSIsaS5tZXRhZGF0YVRyYWNrcy5wdXNoKHUpKToodS50eXBlPSJtZXRhZGF0YSIsaS5vdGhlclRyYWNrcy5wdXNoKHUpKX1lbHNlIGkuaGFzTW9vdj0hMTtpZihpLm1pbWU9IiIsaS5oYXNNb292JiZpLnRyYWNrcyl7Zm9yKGkudmlkZW9UcmFja3MmJmkudmlkZW9UcmFja3MubGVuZ3RoPjA/aS5taW1lKz0ndmlkZW8vbXA0OyBjb2RlY3M9Iic6aS5hdWRpb1RyYWNrcyYmaS5hdWRpb1RyYWNrcy5sZW5ndGg+MD9pLm1pbWUrPSdhdWRpby9tcDQ7IGNvZGVjcz0iJzppLm1pbWUrPSdhcHBsaWNhdGlvbi9tcDQ7IGNvZGVjcz0iJyxlPTA7ZTxpLnRyYWNrcy5sZW5ndGg7ZSsrKWUhPT0wJiYoaS5taW1lKz0iLCIpLGkubWltZSs9aS50cmFja3NbZV0uY29kZWM7aS5taW1lKz0nIjsgcHJvZmlsZXM9IicsaS5taW1lKz10aGlzLmZ0eXAuY29tcGF0aWJsZV9icmFuZHMuam9pbigpLGkubWltZSs9JyInfXJldHVybiBpfSxjLnByb3RvdHlwZS5wcm9jZXNzU2FtcGxlcz1mdW5jdGlvbihlKXt2YXIgdCxpO2lmKHRoaXMuc2FtcGxlUHJvY2Vzc2luZ1N0YXJ0ZWQpe2lmKHRoaXMuaXNGcmFnbWVudGF0aW9uSW5pdGlhbGl6ZWQmJnRoaXMub25TZWdtZW50IT09bnVsbClmb3IodD0wO3Q8dGhpcy5mcmFnbWVudGVkVHJhY2tzLmxlbmd0aDt0Kyspe3ZhciBmPXRoaXMuZnJhZ21lbnRlZFRyYWNrc1t0XTtmb3IoaT1mLnRyYWs7aS5uZXh0U2FtcGxlPGkuc2FtcGxlcy5sZW5ndGgmJnRoaXMuc2FtcGxlUHJvY2Vzc2luZ1N0YXJ0ZWQ7KXtyLmRlYnVnKCJJU09GaWxlIiwiQ3JlYXRpbmcgbWVkaWEgZnJhZ21lbnQgb24gdHJhY2sgIyIrZi5pZCsiIGZvciBzYW1wbGUgIitpLm5leHRTYW1wbGUpO3ZhciB1PXRoaXMuY3JlYXRlRnJhZ21lbnQoZi5pZCxpLm5leHRTYW1wbGUsZi5zZWdtZW50U3RyZWFtKTtpZih1KWYuc2VnbWVudFN0cmVhbT11LGkubmV4dFNhbXBsZSsrO2Vsc2UgYnJlYWs7aWYoKGkubmV4dFNhbXBsZSVmLm5iX3NhbXBsZXM9PT0wfHxlfHxpLm5leHRTYW1wbGU+PWkuc2FtcGxlcy5sZW5ndGgpJiYoci5pbmZvKCJJU09GaWxlIiwiU2VuZGluZyBmcmFnbWVudGVkIGRhdGEgb24gdHJhY2sgIyIrZi5pZCsiIGZvciBzYW1wbGVzIFsiK01hdGgubWF4KDAsaS5uZXh0U2FtcGxlLWYubmJfc2FtcGxlcykrIiwiKyhpLm5leHRTYW1wbGUtMSkrIl0iKSxyLmluZm8oIklTT0ZpbGUiLCJTYW1wbGUgZGF0YSBzaXplIGluIG1lbW9yeTogIit0aGlzLmdldEFsbG9jYXRlZFNhbXBsZURhdGFTaXplKCkpLHRoaXMub25TZWdtZW50JiZ0aGlzLm9uU2VnbWVudChmLmlkLGYudXNlcixmLnNlZ21lbnRTdHJlYW0uYnVmZmVyLGkubmV4dFNhbXBsZSxlfHxpLm5leHRTYW1wbGU+PWkuc2FtcGxlcy5sZW5ndGgpLGYuc2VnbWVudFN0cmVhbT1udWxsLGYhPT10aGlzLmZyYWdtZW50ZWRUcmFja3NbdF0pKWJyZWFrfX1pZih0aGlzLm9uU2FtcGxlcyE9PW51bGwpZm9yKHQ9MDt0PHRoaXMuZXh0cmFjdGVkVHJhY2tzLmxlbmd0aDt0Kyspe3ZhciB2PXRoaXMuZXh0cmFjdGVkVHJhY2tzW3RdO2ZvcihpPXYudHJhaztpLm5leHRTYW1wbGU8aS5zYW1wbGVzLmxlbmd0aCYmdGhpcy5zYW1wbGVQcm9jZXNzaW5nU3RhcnRlZDspe3IuZGVidWcoIklTT0ZpbGUiLCJFeHBvcnRpbmcgb24gdHJhY2sgIyIrdi5pZCsiIHNhbXBsZSAjIitpLm5leHRTYW1wbGUpO3ZhciB5PXRoaXMuZ2V0U2FtcGxlKGksaS5uZXh0U2FtcGxlKTtpZih5KWkubmV4dFNhbXBsZSsrLHYuc2FtcGxlcy5wdXNoKHkpO2Vsc2UgYnJlYWs7aWYoKGkubmV4dFNhbXBsZSV2Lm5iX3NhbXBsZXM9PT0wfHxpLm5leHRTYW1wbGU+PWkuc2FtcGxlcy5sZW5ndGgpJiYoci5kZWJ1ZygiSVNPRmlsZSIsIlNlbmRpbmcgc2FtcGxlcyBvbiB0cmFjayAjIit2LmlkKyIgZm9yIHNhbXBsZSAiK2kubmV4dFNhbXBsZSksdGhpcy5vblNhbXBsZXMmJnRoaXMub25TYW1wbGVzKHYuaWQsdi51c2VyLHYuc2FtcGxlcyksdi5zYW1wbGVzPVtdLHYhPT10aGlzLmV4dHJhY3RlZFRyYWNrc1t0XSkpYnJlYWt9fX19LGMucHJvdG90eXBlLmdldEJveD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldEJveGVzKGUsITApO3JldHVybiB0Lmxlbmd0aD90WzBdOm51bGx9LGMucHJvdG90eXBlLmdldEJveGVzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9W107cmV0dXJuIGMuX3N3ZWVwLmNhbGwodGhpcyxlLGksdCksaX0sYy5fc3dlZXA9ZnVuY3Rpb24oZSx0LGkpe3RoaXMudHlwZSYmdGhpcy50eXBlPT1lJiZ0LnB1c2godGhpcyk7Zm9yKHZhciBmIGluIHRoaXMuYm94ZXMpe2lmKHQubGVuZ3RoJiZpKXJldHVybjtjLl9zd2VlcC5jYWxsKHRoaXMuYm94ZXNbZl0sZSx0LGkpfX0sYy5wcm90b3R5cGUuZ2V0VHJhY2tTYW1wbGVzSW5mbz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFRyYWNrQnlJZChlKTtpZih0KXJldHVybiB0LnNhbXBsZXN9LGMucHJvdG90eXBlLmdldFRyYWNrU2FtcGxlPWZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5nZXRUcmFja0J5SWQoZSksZj10aGlzLmdldFNhbXBsZShpLHQpO3JldHVybiBmfSxjLnByb3RvdHlwZS5yZWxlYXNlVXNlZFNhbXBsZXM9ZnVuY3Rpb24oZSx0KXt2YXIgaT0wLGY9dGhpcy5nZXRUcmFja0J5SWQoZSk7Zi5sYXN0VmFsaWRTYW1wbGV8fChmLmxhc3RWYWxpZFNhbXBsZT0wKTtmb3IodmFyIHU9Zi5sYXN0VmFsaWRTYW1wbGU7dTx0O3UrKylpKz10aGlzLnJlbGVhc2VTYW1wbGUoZix1KTtyLmluZm8oIklTT0ZpbGUiLCJUcmFjayAjIitlKyIgcmVsZWFzZWQgc2FtcGxlcyB1cCB0byAiK3QrIiAocmVsZWFzZWQgc2l6ZTogIitpKyIsIHJlbWFpbmluZzogIit0aGlzLnNhbXBsZXNEYXRhU2l6ZSsiKSIpLGYubGFzdFZhbGlkU2FtcGxlPXR9LGMucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5zYW1wbGVQcm9jZXNzaW5nU3RhcnRlZD0hMCx0aGlzLnByb2Nlc3NTYW1wbGVzKCExKX0sYy5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMuc2FtcGxlUHJvY2Vzc2luZ1N0YXJ0ZWQ9ITF9LGMucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7ci5pbmZvKCJJU09GaWxlIiwiRmx1c2hpbmcgcmVtYWluaW5nIHNhbXBsZXMiKSx0aGlzLnVwZGF0ZVNhbXBsZUxpc3RzKCksdGhpcy5wcm9jZXNzU2FtcGxlcyghMCksdGhpcy5zdHJlYW0uY2xlYW5CdWZmZXJzKCksdGhpcy5zdHJlYW0ubG9nQnVmZmVyTGV2ZWwoITApfSxjLnByb3RvdHlwZS5zZWVrVHJhY2s9ZnVuY3Rpb24oZSx0LGkpe3ZhciBmLHUsdj0xLzAseT0wLG09MCxiO2lmKGkuc2FtcGxlcy5sZW5ndGg9PT0wKXJldHVybiByLmluZm8oIklTT0ZpbGUiLCJObyBzYW1wbGUgaW4gdHJhY2ssIGNhbm5vdCBzZWVrISBVc2luZyB0aW1lICIrci5nZXREdXJhdGlvblN0cmluZygwLDEpKyIgYW5kIG9mZnNldDogMCIpLHtvZmZzZXQ6MCx0aW1lOjB9O2ZvcihmPTA7ZjxpLnNhbXBsZXMubGVuZ3RoO2YrKyl7aWYodT1pLnNhbXBsZXNbZl0sZj09PTApbT0wLGI9dS50aW1lc2NhbGU7ZWxzZSBpZih1LmN0cz5lKnUudGltZXNjYWxlKXttPWYtMTticmVha310JiZ1LmlzX3N5bmMmJih5PWYpfWZvcih0JiYobT15KSxlPWkuc2FtcGxlc1ttXS5jdHMsaS5uZXh0U2FtcGxlPW07aS5zYW1wbGVzW21dLmFscmVhZHlSZWFkPT09aS5zYW1wbGVzW21dLnNpemUmJmkuc2FtcGxlc1ttKzFdOyltKys7cmV0dXJuIHY9aS5zYW1wbGVzW21dLm9mZnNldCtpLnNhbXBsZXNbbV0uYWxyZWFkeVJlYWQsci5pbmZvKCJJU09GaWxlIiwiU2Vla2luZyB0byAiKyh0PyJSQVAiOiIiKSsiIHNhbXBsZSAjIitpLm5leHRTYW1wbGUrIiBvbiB0cmFjayAiK2kudGtoZC50cmFja19pZCsiLCB0aW1lICIrci5nZXREdXJhdGlvblN0cmluZyhlLGIpKyIgYW5kIG9mZnNldDogIit2KSx7b2Zmc2V0OnYsdGltZTplL2J9fSxjLnByb3RvdHlwZS5zZWVrPWZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5tb292LGYsdSx2LHk9e29mZnNldDoxLzAsdGltZToxLzB9O2lmKHRoaXMubW9vdil7Zm9yKHY9MDt2PGkudHJha3MubGVuZ3RoO3YrKylmPWkudHJha3Nbdl0sdT10aGlzLnNlZWtUcmFjayhlLHQsZiksdS5vZmZzZXQ8eS5vZmZzZXQmJih5Lm9mZnNldD11Lm9mZnNldCksdS50aW1lPHkudGltZSYmKHkudGltZT11LnRpbWUpO3JldHVybiByLmluZm8oIklTT0ZpbGUiLCJTZWVraW5nIGF0IHRpbWUgIityLmdldER1cmF0aW9uU3RyaW5nKHkudGltZSwxKSsiIG5lZWRzIGEgYnVmZmVyIHdpdGggYSBmaWxlU3RhcnQgcG9zaXRpb24gb2YgIit5Lm9mZnNldCkseS5vZmZzZXQ9PT0xLzA/eT17b2Zmc2V0OnRoaXMubmV4dFBhcnNlUG9zaXRpb24sdGltZTowfTp5Lm9mZnNldD10aGlzLnN0cmVhbS5nZXRFbmRGaWxlUG9zaXRpb25BZnRlcih5Lm9mZnNldCksci5pbmZvKCJJU09GaWxlIiwiQWRqdXN0ZWQgc2VlayBwb3NpdGlvbiAoYWZ0ZXIgY2hlY2tpbmcgZGF0YSBhbHJlYWR5IGluIGJ1ZmZlcik6ICIreS5vZmZzZXQpLHl9ZWxzZSB0aHJvdyJDYW5ub3Qgc2VlazogbW9vdiBub3QgcmVjZWl2ZWQhIn0sYy5wcm90b3R5cGUuZXF1YWw9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLmJveGVzLmxlbmd0aCYmdDxlLmJveGVzLmxlbmd0aDspe3ZhciBpPXRoaXMuYm94ZXNbdF0sZj1lLmJveGVzW3RdO2lmKCFvLmJveEVxdWFsKGksZikpcmV0dXJuITE7dCsrfXJldHVybiEwfSxuLklTT0ZpbGU9YyxjLnByb3RvdHlwZS5sYXN0Qm94U3RhcnRQb3NpdGlvbj0wLGMucHJvdG90eXBlLnBhcnNpbmdNZGF0PW51bGwsYy5wcm90b3R5cGUubmV4dFBhcnNlUG9zaXRpb249MCxjLnByb3RvdHlwZS5kaXNjYXJkTWRhdERhdGE9ITEsYy5wcm90b3R5cGUucHJvY2Vzc0luY29tcGxldGVCb3g9ZnVuY3Rpb24oZSl7dmFyIHQsaSxmO3JldHVybiBlLnR5cGU9PT0ibWRhdCI/KHQ9bmV3IG9bZS50eXBlKyJCb3giXShlLnNpemUpLHRoaXMucGFyc2luZ01kYXQ9dCx0aGlzLmJveGVzLnB1c2godCksdGhpcy5tZGF0cy5wdXNoKHQpLHQuc3RhcnQ9ZS5zdGFydCx0Lmhkcl9zaXplPWUuaGRyX3NpemUsdGhpcy5zdHJlYW0uYWRkVXNlZEJ5dGVzKHQuaGRyX3NpemUpLHRoaXMubGFzdEJveFN0YXJ0UG9zaXRpb249dC5zdGFydCt0LnNpemUsZj10aGlzLnN0cmVhbS5zZWVrKHQuc3RhcnQrdC5zaXplLCExLHRoaXMuZGlzY2FyZE1kYXREYXRhKSxmPyh0aGlzLnBhcnNpbmdNZGF0PW51bGwsITApOih0aGlzLm1vb3ZTdGFydEZvdW5kP3RoaXMubmV4dFBhcnNlUG9zaXRpb249dGhpcy5zdHJlYW0uZmluZEVuZENvbnRpZ3VvdXNCdWYoKTp0aGlzLm5leHRQYXJzZVBvc2l0aW9uPXQuc3RhcnQrdC5zaXplLCExKSk6KGUudHlwZT09PSJtb292IiYmKHRoaXMubW9vdlN0YXJ0Rm91bmQ9ITAsdGhpcy5tZGF0cy5sZW5ndGg9PT0wJiYodGhpcy5pc1Byb2dyZXNzaXZlPSEwKSksaT10aGlzLnN0cmVhbS5tZXJnZU5leHRCdWZmZXI/dGhpcy5zdHJlYW0ubWVyZ2VOZXh0QnVmZmVyKCk6ITEsaT8odGhpcy5uZXh0UGFyc2VQb3NpdGlvbj10aGlzLnN0cmVhbS5nZXRFbmRQb3NpdGlvbigpLCEwKTooZS50eXBlP3RoaXMubW9vdlN0YXJ0Rm91bmQ/dGhpcy5uZXh0UGFyc2VQb3NpdGlvbj10aGlzLnN0cmVhbS5nZXRFbmRQb3NpdGlvbigpOnRoaXMubmV4dFBhcnNlUG9zaXRpb249dGhpcy5zdHJlYW0uZ2V0UG9zaXRpb24oKStlLnNpemU6dGhpcy5uZXh0UGFyc2VQb3NpdGlvbj10aGlzLnN0cmVhbS5nZXRFbmRQb3NpdGlvbigpLCExKSl9LGMucHJvdG90eXBlLmhhc0luY29tcGxldGVNZGF0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyc2luZ01kYXQhPT1udWxsfSxjLnByb3RvdHlwZS5wcm9jZXNzSW5jb21wbGV0ZU1kYXQ9ZnVuY3Rpb24oKXt2YXIgZSx0O3JldHVybiBlPXRoaXMucGFyc2luZ01kYXQsdD10aGlzLnN0cmVhbS5zZWVrKGUuc3RhcnQrZS5zaXplLCExLHRoaXMuZGlzY2FyZE1kYXREYXRhKSx0PyhyLmRlYnVnKCJJU09GaWxlIiwiRm91bmQgJ21kYXQnIGVuZCBpbiBidWZmZXJlZCBkYXRhIiksdGhpcy5wYXJzaW5nTWRhdD1udWxsLCEwKToodGhpcy5uZXh0UGFyc2VQb3NpdGlvbj10aGlzLnN0cmVhbS5maW5kRW5kQ29udGlndW91c0J1ZigpLCExKX0sYy5wcm90b3R5cGUucmVzdG9yZVBhcnNlUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJlYW0uc2Vlayh0aGlzLmxhc3RCb3hTdGFydFBvc2l0aW9uLCEwLHRoaXMuZGlzY2FyZE1kYXREYXRhKX0sYy5wcm90b3R5cGUuc2F2ZVBhcnNlUG9zaXRpb249ZnVuY3Rpb24oKXt0aGlzLmxhc3RCb3hTdGFydFBvc2l0aW9uPXRoaXMuc3RyZWFtLmdldFBvc2l0aW9uKCl9LGMucHJvdG90eXBlLnVwZGF0ZVVzZWRCeXRlcz1mdW5jdGlvbihlLHQpe3RoaXMuc3RyZWFtLmFkZFVzZWRCeXRlcyYmKGUudHlwZT09PSJtZGF0Ij8odGhpcy5zdHJlYW0uYWRkVXNlZEJ5dGVzKGUuaGRyX3NpemUpLHRoaXMuZGlzY2FyZE1kYXREYXRhJiZ0aGlzLnN0cmVhbS5hZGRVc2VkQnl0ZXMoZS5zaXplLWUuaGRyX3NpemUpKTp0aGlzLnN0cmVhbS5hZGRVc2VkQnl0ZXMoZS5zaXplKSl9LGMucHJvdG90eXBlLmFkZD1vLkJveC5wcm90b3R5cGUuYWRkLGMucHJvdG90eXBlLmFkZEJveD1vLkJveC5wcm90b3R5cGUuYWRkQm94LGMucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8e307dGhpcy5hZGQoImZ0eXAiKS5zZXQoIm1ham9yX2JyYW5kIix0LmJyYW5kcyYmdC5icmFuZHNbMF18fCJpc280Iikuc2V0KCJtaW5vcl92ZXJzaW9uIiwwKS5zZXQoImNvbXBhdGlibGVfYnJhbmRzIix0LmJyYW5kc3x8WyJpc280Il0pO3ZhciBpPXRoaXMuYWRkKCJtb292Iik7cmV0dXJuIGkuYWRkKCJtdmhkIikuc2V0KCJ0aW1lc2NhbGUiLHQudGltZXNjYWxlfHw2MDApLnNldCgicmF0ZSIsdC5yYXRlfHw2NTUzNikuc2V0KCJjcmVhdGlvbl90aW1lIiwwKS5zZXQoIm1vZGlmaWNhdGlvbl90aW1lIiwwKS5zZXQoImR1cmF0aW9uIix0LmR1cmF0aW9ufHwwKS5zZXQoInZvbHVtZSIsdC53aWR0aD8wOjI1Nikuc2V0KCJtYXRyaXgiLFs2NTUzNiwwLDAsMCw2NTUzNiwwLDAsMCwxMDczNzQxODI0XSkuc2V0KCJuZXh0X3RyYWNrX2lkIiwxKSxpLmFkZCgibXZleCIpLHRoaXN9LGMucHJvdG90eXBlLmFkZFRyYWNrPWZ1bmN0aW9uKGUpe3RoaXMubW9vdnx8dGhpcy5pbml0KGUpO3ZhciB0PWV8fHt9O3Qud2lkdGg9dC53aWR0aHx8MzIwLHQuaGVpZ2h0PXQuaGVpZ2h0fHwzMjAsdC5pZD10LmlkfHx0aGlzLm1vb3YubXZoZC5uZXh0X3RyYWNrX2lkLHQudHlwZT10LnR5cGV8fCJhdmMxIjt2YXIgaT10aGlzLm1vb3YuYWRkKCJ0cmFrIik7dGhpcy5tb292Lm12aGQubmV4dF90cmFja19pZD10LmlkKzEsaS5hZGQoInRraGQiKS5zZXQoImZsYWdzIixvLlRLSERfRkxBR19FTkFCTEVEfG8uVEtIRF9GTEFHX0lOX01PVklFfG8uVEtIRF9GTEFHX0lOX1BSRVZJRVcpLnNldCgiY3JlYXRpb25fdGltZSIsMCkuc2V0KCJtb2RpZmljYXRpb25fdGltZSIsMCkuc2V0KCJ0cmFja19pZCIsdC5pZCkuc2V0KCJkdXJhdGlvbiIsdC5kdXJhdGlvbnx8MCkuc2V0KCJsYXllciIsdC5sYXllcnx8MCkuc2V0KCJhbHRlcm5hdGVfZ3JvdXAiLDApLnNldCgidm9sdW1lIiwxKS5zZXQoIm1hdHJpeCIsWzAsMCwwLDAsMCwwLDAsMCwwXSkuc2V0KCJ3aWR0aCIsdC53aWR0aDw8MTYpLnNldCgiaGVpZ2h0Iix0LmhlaWdodDw8MTYpO3ZhciBmPWkuYWRkKCJtZGlhIik7Zi5hZGQoIm1kaGQiKS5zZXQoImNyZWF0aW9uX3RpbWUiLDApLnNldCgibW9kaWZpY2F0aW9uX3RpbWUiLDApLnNldCgidGltZXNjYWxlIix0LnRpbWVzY2FsZXx8MSkuc2V0KCJkdXJhdGlvbiIsdC5tZWRpYV9kdXJhdGlvbnx8MCkuc2V0KCJsYW5ndWFnZSIsdC5sYW5ndWFnZXx8InVuZCIpLGYuYWRkKCJoZGxyIikuc2V0KCJoYW5kbGVyIix0LmhkbHJ8fCJ2aWRlIikuc2V0KCJuYW1lIix0Lm5hbWV8fCJUcmFjayBjcmVhdGVkIHdpdGggTVA0Qm94LmpzIiksZi5hZGQoImVsbmciKS5zZXQoImV4dGVuZGVkX2xhbmd1YWdlIix0Lmxhbmd1YWdlfHwiZnItRlIiKTt2YXIgdT1mLmFkZCgibWluZiIpO2lmKG9bdC50eXBlKyJTYW1wbGVFbnRyeSJdIT09dm9pZCAwKXt2YXIgdj1uZXcgb1t0LnR5cGUrIlNhbXBsZUVudHJ5Il07di5kYXRhX3JlZmVyZW5jZV9pbmRleD0xO3ZhciB5PSIiO2Zvcih2YXIgbSBpbiBvLnNhbXBsZUVudHJ5Q29kZXMpZm9yKHZhciBiPW8uc2FtcGxlRW50cnlDb2Rlc1ttXSx4PTA7eDxiLmxlbmd0aDt4KyspaWYoYi5pbmRleE9mKHQudHlwZSk+LTEpe3k9bTticmVha31zd2l0Y2goeSl7Y2FzZSJWaXN1YWwiOmlmKHUuYWRkKCJ2bWhkIikuc2V0KCJncmFwaGljc21vZGUiLDApLnNldCgib3Bjb2xvciIsWzAsMCwwXSksdi5zZXQoIndpZHRoIix0LndpZHRoKS5zZXQoImhlaWdodCIsdC5oZWlnaHQpLnNldCgiaG9yaXpyZXNvbHV0aW9uIiw3Mjw8MTYpLnNldCgidmVydHJlc29sdXRpb24iLDcyPDwxNikuc2V0KCJmcmFtZV9jb3VudCIsMSkuc2V0KCJjb21wcmVzc29ybmFtZSIsdC50eXBlKyIgQ29tcHJlc3NvciIpLnNldCgiZGVwdGgiLDI0KSx0LmF2Y0RlY29kZXJDb25maWdSZWNvcmQpe3ZhciBTPW5ldyBvLmF2Y0NCb3gsVT1uZXcgYSh0LmF2Y0RlY29kZXJDb25maWdSZWNvcmQpO1MucGFyc2UoVSksdi5hZGRCb3goUyl9YnJlYWs7Y2FzZSJBdWRpbyI6dS5hZGQoInNtaGQiKS5zZXQoImJhbGFuY2UiLHQuYmFsYW5jZXx8MCksdi5zZXQoImNoYW5uZWxfY291bnQiLHQuY2hhbm5lbF9jb3VudHx8Mikuc2V0KCJzYW1wbGVzaXplIix0LnNhbXBsZXNpemV8fDE2KS5zZXQoInNhbXBsZXJhdGUiLHQuc2FtcGxlcmF0ZXx8NjU1MzYpO2JyZWFrO2Nhc2UiSGludCI6dS5hZGQoImhtaGQiKTticmVhaztjYXNlIlN1YnRpdGxlIjpzd2l0Y2godS5hZGQoInN0aGQiKSx0LnR5cGUpe2Nhc2Uic3RwcCI6di5zZXQoIm5hbWVzcGFjZSIsdC5uYW1lc3BhY2V8fCJub25hbWVzcGFjZSIpLnNldCgic2NoZW1hX2xvY2F0aW9uIix0LnNjaGVtYV9sb2NhdGlvbnx8IiIpLnNldCgiYXV4aWxpYXJ5X21pbWVfdHlwZXMiLHQuYXV4aWxpYXJ5X21pbWVfdHlwZXN8fCIiKTticmVha31icmVhaztjYXNlIk1ldGFkYXRhIjp1LmFkZCgibm1oZCIpO2JyZWFrO2Nhc2UiU3lzdGVtIjp1LmFkZCgibm1oZCIpO2JyZWFrO2RlZmF1bHQ6dS5hZGQoIm5taGQiKTticmVha310LmRlc2NyaXB0aW9uJiZ2LmFkZEJveCh0LmRlc2NyaXB0aW9uKSx0LmRlc2NyaXB0aW9uX2JveGVzJiZ0LmRlc2NyaXB0aW9uX2JveGVzLmZvckVhY2goZnVuY3Rpb24odyl7di5hZGRCb3godyl9KSx1LmFkZCgiZGluZiIpLmFkZCgiZHJlZiIpLmFkZEVudHJ5KG5ldyBvWyJ1cmwgQm94Il0oKS5zZXQoImZsYWdzIiwxKSk7dmFyIEU9dS5hZGQoInN0YmwiKTtyZXR1cm4gRS5hZGQoInN0c2QiKS5hZGRFbnRyeSh2KSxFLmFkZCgic3R0cyIpLnNldCgic2FtcGxlX2NvdW50cyIsW10pLnNldCgic2FtcGxlX2RlbHRhcyIsW10pLEUuYWRkKCJzdHNjIikuc2V0KCJmaXJzdF9jaHVuayIsW10pLnNldCgic2FtcGxlc19wZXJfY2h1bmsiLFtdKS5zZXQoInNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleCIsW10pLEUuYWRkKCJzdGNvIikuc2V0KCJjaHVua19vZmZzZXRzIixbXSksRS5hZGQoInN0c3oiKS5zZXQoInNhbXBsZV9zaXplcyIsW10pLHRoaXMubW9vdi5tdmV4LmFkZCgidHJleCIpLnNldCgidHJhY2tfaWQiLHQuaWQpLnNldCgiZGVmYXVsdF9zYW1wbGVfZGVzY3JpcHRpb25faW5kZXgiLHQuZGVmYXVsdF9zYW1wbGVfZGVzY3JpcHRpb25faW5kZXh8fDEpLnNldCgiZGVmYXVsdF9zYW1wbGVfZHVyYXRpb24iLHQuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb258fDApLnNldCgiZGVmYXVsdF9zYW1wbGVfc2l6ZSIsdC5kZWZhdWx0X3NhbXBsZV9zaXplfHwwKS5zZXQoImRlZmF1bHRfc2FtcGxlX2ZsYWdzIix0LmRlZmF1bHRfc2FtcGxlX2ZsYWdzfHwwKSx0aGlzLmJ1aWxkVHJha1NhbXBsZUxpc3RzKGkpLHQuaWR9fSxvLkJveC5wcm90b3R5cGUuY29tcHV0ZVNpemU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8bmV3IHM7dC5lbmRpYW5uZXNzPXMuQklHX0VORElBTix0aGlzLndyaXRlKHQpfSxjLnByb3RvdHlwZS5hZGRTYW1wbGU9ZnVuY3Rpb24oZSx0LGkpe3ZhciBmPWl8fHt9LHU9e30sdj10aGlzLmdldFRyYWNrQnlJZChlKTtpZih2IT09bnVsbCl7dS5udW1iZXI9di5zYW1wbGVzLmxlbmd0aCx1LnRyYWNrX2lkPXYudGtoZC50cmFja19pZCx1LnRpbWVzY2FsZT12Lm1kaWEubWRoZC50aW1lc2NhbGUsdS5kZXNjcmlwdGlvbl9pbmRleD1mLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleD9mLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleC0xOjAsdS5kZXNjcmlwdGlvbj12Lm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1t1LmRlc2NyaXB0aW9uX2luZGV4XSx1LmRhdGE9dCx1LnNpemU9dC5ieXRlTGVuZ3RoLHUuYWxyZWFkeVJlYWQ9dS5zaXplLHUuZHVyYXRpb249Zi5kdXJhdGlvbnx8MSx1LmN0cz1mLmN0c3x8MCx1LmR0cz1mLmR0c3x8MCx1LmlzX3N5bmM9Zi5pc19zeW5jfHwhMSx1LmlzX2xlYWRpbmc9Zi5pc19sZWFkaW5nfHwwLHUuZGVwZW5kc19vbj1mLmRlcGVuZHNfb258fDAsdS5pc19kZXBlbmRlZF9vbj1mLmlzX2RlcGVuZGVkX29ufHwwLHUuaGFzX3JlZHVuZGFuY3k9Zi5oYXNfcmVkdW5kYW5jeXx8MCx1LmRlZ3JhZGF0aW9uX3ByaW9yaXR5PWYuZGVncmFkYXRpb25fcHJpb3JpdHl8fDAsdS5vZmZzZXQ9MCx1LnN1YnNhbXBsZXM9Zi5zdWJzYW1wbGVzLHYuc2FtcGxlcy5wdXNoKHUpLHYuc2FtcGxlc19zaXplKz11LnNpemUsdi5zYW1wbGVzX2R1cmF0aW9uKz11LmR1cmF0aW9uLHYuZmlyc3RfZHRzfHwodi5maXJzdF9kdHM9Zi5kdHMpLHRoaXMucHJvY2Vzc1NhbXBsZXMoKTt2YXIgeT10aGlzLmNyZWF0ZVNpbmdsZVNhbXBsZU1vb2YodSk7cmV0dXJuIHRoaXMuYWRkQm94KHkpLHkuY29tcHV0ZVNpemUoKSx5LnRyYWZzWzBdLnRydW5zWzBdLmRhdGFfb2Zmc2V0PXkuc2l6ZSs4LHRoaXMuYWRkKCJtZGF0IikuZGF0YT1uZXcgVWludDhBcnJheSh0KSx1fX0sYy5wcm90b3R5cGUuY3JlYXRlU2luZ2xlU2FtcGxlTW9vZj1mdW5jdGlvbihlKXt2YXIgdD0wO2UuaXNfc3luYz90PTE8PDI1OnQ9NjU1MzY7dmFyIGk9bmV3IG8ubW9vZkJveDtpLmFkZCgibWZoZCIpLnNldCgic2VxdWVuY2VfbnVtYmVyIix0aGlzLm5leHRNb29mTnVtYmVyKSx0aGlzLm5leHRNb29mTnVtYmVyKys7dmFyIGY9aS5hZGQoInRyYWYiKSx1PXRoaXMuZ2V0VHJhY2tCeUlkKGUudHJhY2tfaWQpO3JldHVybiBmLmFkZCgidGZoZCIpLnNldCgidHJhY2tfaWQiLGUudHJhY2tfaWQpLnNldCgiZmxhZ3MiLG8uVEZIRF9GTEFHX0RFRkFVTFRfQkFTRV9JU19NT09GKSxmLmFkZCgidGZkdCIpLnNldCgiYmFzZU1lZGlhRGVjb2RlVGltZSIsZS5kdHMtKHUuZmlyc3RfZHRzfHwwKSksZi5hZGQoInRydW4iKS5zZXQoImZsYWdzIixvLlRSVU5fRkxBR1NfREFUQV9PRkZTRVR8by5UUlVOX0ZMQUdTX0RVUkFUSU9OfG8uVFJVTl9GTEFHU19TSVpFfG8uVFJVTl9GTEFHU19GTEFHU3xvLlRSVU5fRkxBR1NfQ1RTX09GRlNFVCkuc2V0KCJkYXRhX29mZnNldCIsMCkuc2V0KCJmaXJzdF9zYW1wbGVfZmxhZ3MiLDApLnNldCgic2FtcGxlX2NvdW50IiwxKS5zZXQoInNhbXBsZV9kdXJhdGlvbiIsW2UuZHVyYXRpb25dKS5zZXQoInNhbXBsZV9zaXplIixbZS5zaXplXSkuc2V0KCJzYW1wbGVfZmxhZ3MiLFt0XSkuc2V0KCJzYW1wbGVfY29tcG9zaXRpb25fdGltZV9vZmZzZXQiLFtlLmN0cy1lLmR0c10pLGl9LGMucHJvdG90eXBlLmxhc3RNb29mSW5kZXg9MCxjLnByb3RvdHlwZS5zYW1wbGVzRGF0YVNpemU9MCxjLnByb3RvdHlwZS5yZXNldFRhYmxlcz1mdW5jdGlvbigpe3ZhciBlLHQsaSxmLHUsdix5LG07Zm9yKHRoaXMuaW5pdGlhbF9kdXJhdGlvbj10aGlzLm1vb3YubXZoZC5kdXJhdGlvbix0aGlzLm1vb3YubXZoZC5kdXJhdGlvbj0wLGU9MDtlPHRoaXMubW9vdi50cmFrcy5sZW5ndGg7ZSsrKXt0PXRoaXMubW9vdi50cmFrc1tlXSx0LnRraGQuZHVyYXRpb249MCx0Lm1kaWEubWRoZC5kdXJhdGlvbj0wLGk9dC5tZGlhLm1pbmYuc3RibC5zdGNvfHx0Lm1kaWEubWluZi5zdGJsLmNvNjQsaS5jaHVua19vZmZzZXRzPVtdLGY9dC5tZGlhLm1pbmYuc3RibC5zdHNjLGYuZmlyc3RfY2h1bms9W10sZi5zYW1wbGVzX3Blcl9jaHVuaz1bXSxmLnNhbXBsZV9kZXNjcmlwdGlvbl9pbmRleD1bXSx1PXQubWRpYS5taW5mLnN0Ymwuc3Rzenx8dC5tZGlhLm1pbmYuc3RibC5zdHoyLHUuc2FtcGxlX3NpemVzPVtdLHY9dC5tZGlhLm1pbmYuc3RibC5zdHRzLHYuc2FtcGxlX2NvdW50cz1bXSx2LnNhbXBsZV9kZWx0YXM9W10seT10Lm1kaWEubWluZi5zdGJsLmN0dHMseSYmKHkuc2FtcGxlX2NvdW50cz1bXSx5LnNhbXBsZV9vZmZzZXRzPVtdKSxtPXQubWRpYS5taW5mLnN0Ymwuc3Rzczt2YXIgYj10Lm1kaWEubWluZi5zdGJsLmJveGVzLmluZGV4T2YobSk7YiE9LTEmJih0Lm1kaWEubWluZi5zdGJsLmJveGVzW2JdPW51bGwpfX0sYy5pbml0U2FtcGxlR3JvdXBzPWZ1bmN0aW9uKGUsdCxpLGYsdSl7dmFyIHYseSxtLGI7ZnVuY3Rpb24geChTLFUsRSl7dGhpcy5ncm91cGluZ190eXBlPVMsdGhpcy5ncm91cGluZ190eXBlX3BhcmFtZXRlcj1VLHRoaXMuc2JncD1FLHRoaXMubGFzdF9zYW1wbGVfaW5fcnVuPS0xLHRoaXMuZW50cnlfaW5kZXg9LTF9Zm9yKHQmJih0LnNhbXBsZV9ncm91cHNfaW5mbz1bXSksZS5zYW1wbGVfZ3JvdXBzX2luZm98fChlLnNhbXBsZV9ncm91cHNfaW5mbz1bXSkseT0wO3k8aS5sZW5ndGg7eSsrKXtmb3IoYj1pW3ldLmdyb3VwaW5nX3R5cGUrIi8iK2lbeV0uZ3JvdXBpbmdfdHlwZV9wYXJhbWV0ZXIsbT1uZXcgeChpW3ldLmdyb3VwaW5nX3R5cGUsaVt5XS5ncm91cGluZ190eXBlX3BhcmFtZXRlcixpW3ldKSx0JiYodC5zYW1wbGVfZ3JvdXBzX2luZm9bYl09bSksZS5zYW1wbGVfZ3JvdXBzX2luZm9bYl18fChlLnNhbXBsZV9ncm91cHNfaW5mb1tiXT1tKSx2PTA7djxmLmxlbmd0aDt2KyspZlt2XS5ncm91cGluZ190eXBlPT09aVt5XS5ncm91cGluZ190eXBlJiYobS5kZXNjcmlwdGlvbj1mW3ZdLG0uZGVzY3JpcHRpb24udXNlZD0hMCk7aWYodSlmb3Iodj0wO3Y8dS5sZW5ndGg7disrKXVbdl0uZ3JvdXBpbmdfdHlwZT09PWlbeV0uZ3JvdXBpbmdfdHlwZSYmKG0uZnJhZ21lbnRfZGVzY3JpcHRpb249dVt2XSxtLmZyYWdtZW50X2Rlc2NyaXB0aW9uLnVzZWQ9ITAsbS5pc19mcmFnbWVudD0hMCl9aWYodCl7aWYodSlmb3IoeT0wO3k8dS5sZW5ndGg7eSsrKSF1W3ldLnVzZWQmJnVbeV0udmVyc2lvbj49MiYmKGI9dVt5XS5ncm91cGluZ190eXBlKyIvMCIsbT1uZXcgeCh1W3ldLmdyb3VwaW5nX3R5cGUsMCksbS5pc19mcmFnbWVudD0hMCx0LnNhbXBsZV9ncm91cHNfaW5mb1tiXXx8KHQuc2FtcGxlX2dyb3Vwc19pbmZvW2JdPW0pKX1lbHNlIGZvcih5PTA7eTxmLmxlbmd0aDt5KyspIWZbeV0udXNlZCYmZlt5XS52ZXJzaW9uPj0yJiYoYj1mW3ldLmdyb3VwaW5nX3R5cGUrIi8wIixtPW5ldyB4KGZbeV0uZ3JvdXBpbmdfdHlwZSwwKSxlLnNhbXBsZV9ncm91cHNfaW5mb1tiXXx8KGUuc2FtcGxlX2dyb3Vwc19pbmZvW2JdPW0pKX0sYy5zZXRTYW1wbGVHcm91cFByb3BlcnRpZXM9ZnVuY3Rpb24oZSx0LGksZil7dmFyIHUsdjt0LnNhbXBsZV9ncm91cHM9W107Zm9yKHUgaW4gZilpZih0LnNhbXBsZV9ncm91cHNbdV09e30sdC5zYW1wbGVfZ3JvdXBzW3VdLmdyb3VwaW5nX3R5cGU9Zlt1XS5ncm91cGluZ190eXBlLHQuc2FtcGxlX2dyb3Vwc1t1XS5ncm91cGluZ190eXBlX3BhcmFtZXRlcj1mW3VdLmdyb3VwaW5nX3R5cGVfcGFyYW1ldGVyLGk+PWZbdV0ubGFzdF9zYW1wbGVfaW5fcnVuJiYoZlt1XS5sYXN0X3NhbXBsZV9pbl9ydW48MCYmKGZbdV0ubGFzdF9zYW1wbGVfaW5fcnVuPTApLGZbdV0uZW50cnlfaW5kZXgrKyxmW3VdLmVudHJ5X2luZGV4PD1mW3VdLnNiZ3AuZW50cmllcy5sZW5ndGgtMSYmKGZbdV0ubGFzdF9zYW1wbGVfaW5fcnVuKz1mW3VdLnNiZ3AuZW50cmllc1tmW3VdLmVudHJ5X2luZGV4XS5zYW1wbGVfY291bnQpKSxmW3VdLmVudHJ5X2luZGV4PD1mW3VdLnNiZ3AuZW50cmllcy5sZW5ndGgtMT90LnNhbXBsZV9ncm91cHNbdV0uZ3JvdXBfZGVzY3JpcHRpb25faW5kZXg9Zlt1XS5zYmdwLmVudHJpZXNbZlt1XS5lbnRyeV9pbmRleF0uZ3JvdXBfZGVzY3JpcHRpb25faW5kZXg6dC5zYW1wbGVfZ3JvdXBzW3VdLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PS0xLHQuc2FtcGxlX2dyb3Vwc1t1XS5ncm91cF9kZXNjcmlwdGlvbl9pbmRleCE9PTApe3ZhciB5O2ZbdV0uZnJhZ21lbnRfZGVzY3JpcHRpb24/eT1mW3VdLmZyYWdtZW50X2Rlc2NyaXB0aW9uOnk9Zlt1XS5kZXNjcmlwdGlvbix0LnNhbXBsZV9ncm91cHNbdV0uZ3JvdXBfZGVzY3JpcHRpb25faW5kZXg+MD8odC5zYW1wbGVfZ3JvdXBzW3VdLmdyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PjY1NTM1P3Y9KHQuc2FtcGxlX2dyb3Vwc1t1XS5ncm91cF9kZXNjcmlwdGlvbl9pbmRleD4+MTYpLTE6dj10LnNhbXBsZV9ncm91cHNbdV0uZ3JvdXBfZGVzY3JpcHRpb25faW5kZXgtMSx5JiZ2Pj0wJiYodC5zYW1wbGVfZ3JvdXBzW3VdLmRlc2NyaXB0aW9uPXkuZW50cmllc1t2XSkpOnkmJnkudmVyc2lvbj49MiYmeS5kZWZhdWx0X2dyb3VwX2Rlc2NyaXB0aW9uX2luZGV4PjAmJih0LnNhbXBsZV9ncm91cHNbdV0uZGVzY3JpcHRpb249eS5lbnRyaWVzW3kuZGVmYXVsdF9ncm91cF9kZXNjcmlwdGlvbl9pbmRleC0xXSl9fSxjLnByb2Nlc3Nfc2R0cD1mdW5jdGlvbihlLHQsaSl7dCYmKGU/KHQuaXNfbGVhZGluZz1lLmlzX2xlYWRpbmdbaV0sdC5kZXBlbmRzX29uPWUuc2FtcGxlX2RlcGVuZHNfb25baV0sdC5pc19kZXBlbmRlZF9vbj1lLnNhbXBsZV9pc19kZXBlbmRlZF9vbltpXSx0Lmhhc19yZWR1bmRhbmN5PWUuc2FtcGxlX2hhc19yZWR1bmRhbmN5W2ldKToodC5pc19sZWFkaW5nPTAsdC5kZXBlbmRzX29uPTAsdC5pc19kZXBlbmRlZF9vbj0wLHQuaGFzX3JlZHVuZGFuY3k9MCkpfSxjLnByb3RvdHlwZS5idWlsZFNhbXBsZUxpc3RzPWZ1bmN0aW9uKCl7dmFyIGUsdDtmb3IoZT0wO2U8dGhpcy5tb292LnRyYWtzLmxlbmd0aDtlKyspdD10aGlzLm1vb3YudHJha3NbZV0sdGhpcy5idWlsZFRyYWtTYW1wbGVMaXN0cyh0KX0sYy5wcm90b3R5cGUuYnVpbGRUcmFrU2FtcGxlTGlzdHM9ZnVuY3Rpb24oZSl7dmFyIHQsaSxmLHUsdix5LG0sYix4LFMsVSxFLHcsQSxJLEYsUCxELGssTixNLHEsRyxZO2lmKGUuc2FtcGxlcz1bXSxlLnNhbXBsZXNfZHVyYXRpb249MCxlLnNhbXBsZXNfc2l6ZT0wLGk9ZS5tZGlhLm1pbmYuc3RibC5zdGNvfHxlLm1kaWEubWluZi5zdGJsLmNvNjQsZj1lLm1kaWEubWluZi5zdGJsLnN0c2MsdT1lLm1kaWEubWluZi5zdGJsLnN0c3p8fGUubWRpYS5taW5mLnN0Ymwuc3R6Mix2PWUubWRpYS5taW5mLnN0Ymwuc3R0cyx5PWUubWRpYS5taW5mLnN0YmwuY3R0cyxtPWUubWRpYS5taW5mLnN0Ymwuc3RzcyxiPWUubWRpYS5taW5mLnN0Ymwuc3RzZCx4PWUubWRpYS5taW5mLnN0Ymwuc3VicyxFPWUubWRpYS5taW5mLnN0Ymwuc3RkcCxTPWUubWRpYS5taW5mLnN0Ymwuc2JncHMsVT1lLm1kaWEubWluZi5zdGJsLnNncGRzLEQ9LTEsaz0tMSxOPS0xLE09LTEscT0wLEc9MCxZPTAsYy5pbml0U2FtcGxlR3JvdXBzKGUsbnVsbCxTLFUpLCEodHlwZW9mIHU+InUiKSl7Zm9yKHQ9MDt0PHUuc2FtcGxlX3NpemVzLmxlbmd0aDt0Kyspe3ZhciBUPXt9O1QubnVtYmVyPXQsVC50cmFja19pZD1lLnRraGQudHJhY2tfaWQsVC50aW1lc2NhbGU9ZS5tZGlhLm1kaGQudGltZXNjYWxlLFQuYWxyZWFkeVJlYWQ9MCxlLnNhbXBsZXNbdF09VCxULnNpemU9dS5zYW1wbGVfc2l6ZXNbdF0sZS5zYW1wbGVzX3NpemUrPVQuc2l6ZSx0PT09MD8oQT0xLHc9MCxULmNodW5rX2luZGV4PUEsVC5jaHVua19ydW5faW5kZXg9dyxQPWYuc2FtcGxlc19wZXJfY2h1bmtbd10sRj0wLHcrMTxmLmZpcnN0X2NodW5rLmxlbmd0aD9JPWYuZmlyc3RfY2h1bmtbdysxXS0xOkk9MS8wKTp0PFA/KFQuY2h1bmtfaW5kZXg9QSxULmNodW5rX3J1bl9pbmRleD13KTooQSsrLFQuY2h1bmtfaW5kZXg9QSxGPTAsQTw9SXx8KHcrKyx3KzE8Zi5maXJzdF9jaHVuay5sZW5ndGg/ST1mLmZpcnN0X2NodW5rW3crMV0tMTpJPTEvMCksVC5jaHVua19ydW5faW5kZXg9dyxQKz1mLnNhbXBsZXNfcGVyX2NodW5rW3ddKSxULmRlc2NyaXB0aW9uX2luZGV4PWYuc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4W1QuY2h1bmtfcnVuX2luZGV4XS0xLFQuZGVzY3JpcHRpb249Yi5lbnRyaWVzW1QuZGVzY3JpcHRpb25faW5kZXhdLFQub2Zmc2V0PWkuY2h1bmtfb2Zmc2V0c1tULmNodW5rX2luZGV4LTFdK0YsRis9VC5zaXplLHQ+RCYmKGsrKyxEPDAmJihEPTApLEQrPXYuc2FtcGxlX2NvdW50c1trXSksdD4wPyhlLnNhbXBsZXNbdC0xXS5kdXJhdGlvbj12LnNhbXBsZV9kZWx0YXNba10sZS5zYW1wbGVzX2R1cmF0aW9uKz1lLnNhbXBsZXNbdC0xXS5kdXJhdGlvbixULmR0cz1lLnNhbXBsZXNbdC0xXS5kdHMrZS5zYW1wbGVzW3QtMV0uZHVyYXRpb24pOlQuZHRzPTAseT8odD49TiYmKE0rKyxOPDAmJihOPTApLE4rPXkuc2FtcGxlX2NvdW50c1tNXSksVC5jdHM9ZS5zYW1wbGVzW3RdLmR0cyt5LnNhbXBsZV9vZmZzZXRzW01dKTpULmN0cz1ULmR0cyxtPyh0PT1tLnNhbXBsZV9udW1iZXJzW3FdLTE/KFQuaXNfc3luYz0hMCxxKyspOihULmlzX3N5bmM9ITEsVC5kZWdyYWRhdGlvbl9wcmlvcml0eT0wKSx4JiZ4LmVudHJpZXNbR10uc2FtcGxlX2RlbHRhK1k9PXQrMSYmKFQuc3Vic2FtcGxlcz14LmVudHJpZXNbR10uc3Vic2FtcGxlcyxZKz14LmVudHJpZXNbR10uc2FtcGxlX2RlbHRhLEcrKykpOlQuaXNfc3luYz0hMCxjLnByb2Nlc3Nfc2R0cChlLm1kaWEubWluZi5zdGJsLnNkdHAsVCxULm51bWJlciksRT9ULmRlZ3JhZGF0aW9uX3ByaW9yaXR5PUUucHJpb3JpdHlbdF06VC5kZWdyYWRhdGlvbl9wcmlvcml0eT0wLHgmJnguZW50cmllc1tHXS5zYW1wbGVfZGVsdGErWT09dCYmKFQuc3Vic2FtcGxlcz14LmVudHJpZXNbR10uc3Vic2FtcGxlcyxZKz14LmVudHJpZXNbR10uc2FtcGxlX2RlbHRhKSwoUy5sZW5ndGg+MHx8VS5sZW5ndGg+MCkmJmMuc2V0U2FtcGxlR3JvdXBQcm9wZXJ0aWVzKGUsVCx0LGUuc2FtcGxlX2dyb3Vwc19pbmZvKX10PjAmJihlLnNhbXBsZXNbdC0xXS5kdXJhdGlvbj1NYXRoLm1heChlLm1kaWEubWRoZC5kdXJhdGlvbi1lLnNhbXBsZXNbdC0xXS5kdHMsMCksZS5zYW1wbGVzX2R1cmF0aW9uKz1lLnNhbXBsZXNbdC0xXS5kdXJhdGlvbil9fSxjLnByb3RvdHlwZS51cGRhdGVTYW1wbGVMaXN0cz1mdW5jdGlvbigpe3ZhciBlLHQsaSxmLHUsdix5LG0sYix4LFMsVSxFLHcsQTtpZih0aGlzLm1vb3YhPT12b2lkIDApe2Zvcig7dGhpcy5sYXN0TW9vZkluZGV4PHRoaXMubW9vZnMubGVuZ3RoOylpZihiPXRoaXMubW9vZnNbdGhpcy5sYXN0TW9vZkluZGV4XSx0aGlzLmxhc3RNb29mSW5kZXgrKyxiLnR5cGU9PSJtb29mIilmb3IoeD1iLGU9MDtlPHgudHJhZnMubGVuZ3RoO2UrKyl7Zm9yKFM9eC50cmFmc1tlXSxVPXRoaXMuZ2V0VHJhY2tCeUlkKFMudGZoZC50cmFja19pZCksRT10aGlzLmdldFRyZXhCeUlkKFMudGZoZC50cmFja19pZCksUy50ZmhkLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9ERVNDP2Y9Uy50ZmhkLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4OmY9RT9FLmRlZmF1bHRfc2FtcGxlX2Rlc2NyaXB0aW9uX2luZGV4OjEsUy50ZmhkLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9EVVI/dT1TLnRmaGQuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb246dT1FP0UuZGVmYXVsdF9zYW1wbGVfZHVyYXRpb246MCxTLnRmaGQuZmxhZ3Mmby5URkhEX0ZMQUdfU0FNUExFX1NJWkU/dj1TLnRmaGQuZGVmYXVsdF9zYW1wbGVfc2l6ZTp2PUU/RS5kZWZhdWx0X3NhbXBsZV9zaXplOjAsUy50ZmhkLmZsYWdzJm8uVEZIRF9GTEFHX1NBTVBMRV9GTEFHUz95PVMudGZoZC5kZWZhdWx0X3NhbXBsZV9mbGFnczp5PUU/RS5kZWZhdWx0X3NhbXBsZV9mbGFnczowLFMuc2FtcGxlX251bWJlcj0wLFMuc2JncHMubGVuZ3RoPjAmJmMuaW5pdFNhbXBsZUdyb3VwcyhVLFMsUy5zYmdwcyxVLm1kaWEubWluZi5zdGJsLnNncGRzLFMuc2dwZHMpLHQ9MDt0PFMudHJ1bnMubGVuZ3RoO3QrKyl7dmFyIEk9Uy50cnVuc1t0XTtmb3IoaT0wO2k8SS5zYW1wbGVfY291bnQ7aSsrKXt3PXt9LHcubW9vZl9udW1iZXI9dGhpcy5sYXN0TW9vZkluZGV4LHcubnVtYmVyX2luX3RyYWY9Uy5zYW1wbGVfbnVtYmVyLFMuc2FtcGxlX251bWJlcisrLHcubnVtYmVyPVUuc2FtcGxlcy5sZW5ndGgsUy5maXJzdF9zYW1wbGVfaW5kZXg9VS5zYW1wbGVzLmxlbmd0aCxVLnNhbXBsZXMucHVzaCh3KSx3LnRyYWNrX2lkPVUudGtoZC50cmFja19pZCx3LnRpbWVzY2FsZT1VLm1kaWEubWRoZC50aW1lc2NhbGUsdy5kZXNjcmlwdGlvbl9pbmRleD1mLTEsdy5kZXNjcmlwdGlvbj1VLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1t3LmRlc2NyaXB0aW9uX2luZGV4XSx3LnNpemU9dixJLmZsYWdzJm8uVFJVTl9GTEFHU19TSVpFJiYody5zaXplPUkuc2FtcGxlX3NpemVbaV0pLFUuc2FtcGxlc19zaXplKz13LnNpemUsdy5kdXJhdGlvbj11LEkuZmxhZ3Mmby5UUlVOX0ZMQUdTX0RVUkFUSU9OJiYody5kdXJhdGlvbj1JLnNhbXBsZV9kdXJhdGlvbltpXSksVS5zYW1wbGVzX2R1cmF0aW9uKz13LmR1cmF0aW9uLFUuZmlyc3RfdHJhZl9tZXJnZWR8fGk+MD93LmR0cz1VLnNhbXBsZXNbVS5zYW1wbGVzLmxlbmd0aC0yXS5kdHMrVS5zYW1wbGVzW1Uuc2FtcGxlcy5sZW5ndGgtMl0uZHVyYXRpb246KFMudGZkdD93LmR0cz1TLnRmZHQuYmFzZU1lZGlhRGVjb2RlVGltZTp3LmR0cz0wLFUuZmlyc3RfdHJhZl9tZXJnZWQ9ITApLHcuY3RzPXcuZHRzLEkuZmxhZ3Mmby5UUlVOX0ZMQUdTX0NUU19PRkZTRVQmJih3LmN0cz13LmR0cytJLnNhbXBsZV9jb21wb3NpdGlvbl90aW1lX29mZnNldFtpXSksQT15LEkuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZMQUdTP0E9SS5zYW1wbGVfZmxhZ3NbaV06aT09PTAmJkkuZmxhZ3Mmby5UUlVOX0ZMQUdTX0ZJUlNUX0ZMQUcmJihBPUkuZmlyc3Rfc2FtcGxlX2ZsYWdzKSx3LmlzX3N5bmM9IShBPj4xNiYxKSx3LmlzX2xlYWRpbmc9QT4+MjYmMyx3LmRlcGVuZHNfb249QT4+MjQmMyx3LmlzX2RlcGVuZGVkX29uPUE+PjIyJjMsdy5oYXNfcmVkdW5kYW5jeT1BPj4yMCYzLHcuZGVncmFkYXRpb25fcHJpb3JpdHk9QSY2NTUzNTt2YXIgRj0hIShTLnRmaGQuZmxhZ3Mmby5URkhEX0ZMQUdfQkFTRV9EQVRBX09GRlNFVCksUD0hIShTLnRmaGQuZmxhZ3Mmby5URkhEX0ZMQUdfREVGQVVMVF9CQVNFX0lTX01PT0YpLEQ9ISEoSS5mbGFncyZvLlRSVU5fRkxBR1NfREFUQV9PRkZTRVQpLGs9MDtGP2s9Uy50ZmhkLmJhc2VfZGF0YV9vZmZzZXQ6UHx8dD09PTA/az14LnN0YXJ0Oms9bSx0PT09MCYmaT09PTA/RD93Lm9mZnNldD1rK0kuZGF0YV9vZmZzZXQ6dy5vZmZzZXQ9azp3Lm9mZnNldD1tLG09dy5vZmZzZXQrdy5zaXplLChTLnNiZ3BzLmxlbmd0aD4wfHxTLnNncGRzLmxlbmd0aD4wfHxVLm1kaWEubWluZi5zdGJsLnNiZ3BzLmxlbmd0aD4wfHxVLm1kaWEubWluZi5zdGJsLnNncGRzLmxlbmd0aD4wKSYmYy5zZXRTYW1wbGVHcm91cFByb3BlcnRpZXMoVSx3LHcubnVtYmVyX2luX3RyYWYsUy5zYW1wbGVfZ3JvdXBzX2luZm8pfX1pZihTLnN1YnMpe1UuaGFzX2ZyYWdtZW50X3N1YnNhbXBsZXM9ITA7dmFyIE49Uy5maXJzdF9zYW1wbGVfaW5kZXg7Zm9yKHQ9MDt0PFMuc3Vicy5lbnRyaWVzLmxlbmd0aDt0KyspTis9Uy5zdWJzLmVudHJpZXNbdF0uc2FtcGxlX2RlbHRhLHc9VS5zYW1wbGVzW04tMV0sdy5zdWJzYW1wbGVzPVMuc3Vicy5lbnRyaWVzW3RdLnN1YnNhbXBsZXN9fX19LGMucHJvdG90eXBlLmdldFNhbXBsZT1mdW5jdGlvbihlLHQpe3ZhciBpLGY9ZS5zYW1wbGVzW3RdO2lmKCF0aGlzLm1vb3YpcmV0dXJuIG51bGw7aWYoIWYuZGF0YSlmLmRhdGE9bmV3IFVpbnQ4QXJyYXkoZi5zaXplKSxmLmFscmVhZHlSZWFkPTAsdGhpcy5zYW1wbGVzRGF0YVNpemUrPWYuc2l6ZSxyLmRlYnVnKCJJU09GaWxlIiwiQWxsb2NhdGluZyBzYW1wbGUgIyIrdCsiIG9uIHRyYWNrICMiK2UudGtoZC50cmFja19pZCsiIG9mIHNpemUgIitmLnNpemUrIiAodG90YWw6ICIrdGhpcy5zYW1wbGVzRGF0YVNpemUrIikiKTtlbHNlIGlmKGYuYWxyZWFkeVJlYWQ9PWYuc2l6ZSlyZXR1cm4gZjtmb3IoOzspe3ZhciB1PXRoaXMuc3RyZWFtLmZpbmRQb3NpdGlvbighMCxmLm9mZnNldCtmLmFscmVhZHlSZWFkLCExKTtpZih1Pi0xKXtpPXRoaXMuc3RyZWFtLmJ1ZmZlcnNbdV07dmFyIHY9aS5ieXRlTGVuZ3RoLShmLm9mZnNldCtmLmFscmVhZHlSZWFkLWkuZmlsZVN0YXJ0KTtpZihmLnNpemUtZi5hbHJlYWR5UmVhZDw9dilyZXR1cm4gci5kZWJ1ZygiSVNPRmlsZSIsIkdldHRpbmcgc2FtcGxlICMiK3QrIiBkYXRhIChhbHJlYWR5UmVhZDogIitmLmFscmVhZHlSZWFkKyIgb2Zmc2V0OiAiKyhmLm9mZnNldCtmLmFscmVhZHlSZWFkLWkuZmlsZVN0YXJ0KSsiIHJlYWQgc2l6ZTogIisoZi5zaXplLWYuYWxyZWFkeVJlYWQpKyIgZnVsbCBzaXplOiAiK2Yuc2l6ZSsiKSIpLHMubWVtY3B5KGYuZGF0YS5idWZmZXIsZi5hbHJlYWR5UmVhZCxpLGYub2Zmc2V0K2YuYWxyZWFkeVJlYWQtaS5maWxlU3RhcnQsZi5zaXplLWYuYWxyZWFkeVJlYWQpLGkudXNlZEJ5dGVzKz1mLnNpemUtZi5hbHJlYWR5UmVhZCx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCgpLGYuYWxyZWFkeVJlYWQ9Zi5zaXplLGY7aWYodj09PTApcmV0dXJuIG51bGw7ci5kZWJ1ZygiSVNPRmlsZSIsIkdldHRpbmcgc2FtcGxlICMiK3QrIiBwYXJ0aWFsIGRhdGEgKGFscmVhZHlSZWFkOiAiK2YuYWxyZWFkeVJlYWQrIiBvZmZzZXQ6ICIrKGYub2Zmc2V0K2YuYWxyZWFkeVJlYWQtaS5maWxlU3RhcnQpKyIgcmVhZCBzaXplOiAiK3YrIiBmdWxsIHNpemU6ICIrZi5zaXplKyIpIikscy5tZW1jcHkoZi5kYXRhLmJ1ZmZlcixmLmFscmVhZHlSZWFkLGksZi5vZmZzZXQrZi5hbHJlYWR5UmVhZC1pLmZpbGVTdGFydCx2KSxmLmFscmVhZHlSZWFkKz12LGkudXNlZEJ5dGVzKz12LHRoaXMuc3RyZWFtLmxvZ0J1ZmZlckxldmVsKCl9ZWxzZSByZXR1cm4gbnVsbH19LGMucHJvdG90eXBlLnJlbGVhc2VTYW1wbGU9ZnVuY3Rpb24oZSx0KXt2YXIgaT1lLnNhbXBsZXNbdF07cmV0dXJuIGkuZGF0YT8odGhpcy5zYW1wbGVzRGF0YVNpemUtPWkuc2l6ZSxpLmRhdGE9bnVsbCxpLmFscmVhZHlSZWFkPTAsaS5zaXplKTowfSxjLnByb3RvdHlwZS5nZXRBbGxvY2F0ZWRTYW1wbGVEYXRhU2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNhbXBsZXNEYXRhU2l6ZX0sYy5wcm90b3R5cGUuZ2V0Q29kZWNzPWZ1bmN0aW9uKCl7dmFyIGUsdD0iIjtmb3IoZT0wO2U8dGhpcy5tb292LnRyYWtzLmxlbmd0aDtlKyspe3ZhciBpPXRoaXMubW9vdi50cmFrc1tlXTtlPjAmJih0Kz0iLCIpLHQrPWkubWRpYS5taW5mLnN0Ymwuc3RzZC5lbnRyaWVzWzBdLmdldENvZGVjKCl9cmV0dXJuIHR9LGMucHJvdG90eXBlLmdldFRyZXhCeUlkPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCF0aGlzLm1vb3Z8fCF0aGlzLm1vb3YubXZleClyZXR1cm4gbnVsbDtmb3IodD0wO3Q8dGhpcy5tb292Lm12ZXgudHJleHMubGVuZ3RoO3QrKyl7dmFyIGk9dGhpcy5tb292Lm12ZXgudHJleHNbdF07aWYoaS50cmFja19pZD09ZSlyZXR1cm4gaX1yZXR1cm4gbnVsbH0sYy5wcm90b3R5cGUuZ2V0VHJhY2tCeUlkPWZ1bmN0aW9uKGUpe2lmKHRoaXMubW9vdj09PXZvaWQgMClyZXR1cm4gbnVsbDtmb3IodmFyIHQ9MDt0PHRoaXMubW9vdi50cmFrcy5sZW5ndGg7dCsrKXt2YXIgaT10aGlzLm1vb3YudHJha3NbdF07aWYoaS50a2hkLnRyYWNrX2lkPT1lKXJldHVybiBpfXJldHVybiBudWxsfSxjLnByb3RvdHlwZS5pdGVtcz1bXSxjLnByb3RvdHlwZS5pdGVtc0RhdGFTaXplPTAsYy5wcm90b3R5cGUuZmxhdHRlbkl0ZW1JbmZvPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5pdGVtcyx0LGksZix1PXRoaXMubWV0YTtpZih1IT1udWxsJiZ1LmhkbHIhPT12b2lkIDAmJnUuaWluZiE9PXZvaWQgMCl7Zm9yKHQ9MDt0PHUuaWluZi5pdGVtX2luZm9zLmxlbmd0aDt0KyspZj17fSxmLmlkPXUuaWluZi5pdGVtX2luZm9zW3RdLml0ZW1fSUQsZVtmLmlkXT1mLGYucmVmX3RvPVtdLGYubmFtZT11LmlpbmYuaXRlbV9pbmZvc1t0XS5pdGVtX25hbWUsdS5paW5mLml0ZW1faW5mb3NbdF0ucHJvdGVjdGlvbl9pbmRleD4wJiYoZi5wcm90ZWN0aW9uPXUuaXByby5wcm90ZWN0aW9uc1t1LmlpbmYuaXRlbV9pbmZvc1t0XS5wcm90ZWN0aW9uX2luZGV4LTFdKSx1LmlpbmYuaXRlbV9pbmZvc1t0XS5pdGVtX3R5cGU/Zi50eXBlPXUuaWluZi5pdGVtX2luZm9zW3RdLml0ZW1fdHlwZTpmLnR5cGU9Im1pbWUiLGYuY29udGVudF90eXBlPXUuaWluZi5pdGVtX2luZm9zW3RdLmNvbnRlbnRfdHlwZSxmLmNvbnRlbnRfZW5jb2Rpbmc9dS5paW5mLml0ZW1faW5mb3NbdF0uY29udGVudF9lbmNvZGluZztpZih1Lmlsb2MpZm9yKHQ9MDt0PHUuaWxvYy5pdGVtcy5sZW5ndGg7dCsrKXt2YXIgdj11Lmlsb2MuaXRlbXNbdF07c3dpdGNoKGY9ZVt2Lml0ZW1fSURdLHYuZGF0YV9yZWZlcmVuY2VfaW5kZXghPT0wJiYoci53YXJuKCJJdGVtIHN0b3JhZ2Ugd2l0aCByZWZlcmVuY2UgdG8gb3RoZXIgZmlsZXM6IG5vdCBzdXBwb3J0ZWQiKSxmLnNvdXJjZT11LmRpbmYuYm94ZXNbdi5kYXRhX3JlZmVyZW5jZV9pbmRleC0xXSksdi5jb25zdHJ1Y3Rpb25fbWV0aG9kKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnIud2FybigiSXRlbSBzdG9yYWdlIHdpdGggY29uc3RydWN0aW9uX21ldGhvZCA6IG5vdCBzdXBwb3J0ZWQiKTticmVhaztjYXNlIDI6ci53YXJuKCJJdGVtIHN0b3JhZ2Ugd2l0aCBjb25zdHJ1Y3Rpb25fbWV0aG9kIDogbm90IHN1cHBvcnRlZCIpO2JyZWFrfWZvcihmLmV4dGVudHM9W10sZi5zaXplPTAsaT0wO2k8di5leHRlbnRzLmxlbmd0aDtpKyspZi5leHRlbnRzW2ldPXt9LGYuZXh0ZW50c1tpXS5vZmZzZXQ9di5leHRlbnRzW2ldLmV4dGVudF9vZmZzZXQrdi5iYXNlX29mZnNldCxmLmV4dGVudHNbaV0ubGVuZ3RoPXYuZXh0ZW50c1tpXS5leHRlbnRfbGVuZ3RoLGYuZXh0ZW50c1tpXS5hbHJlYWR5UmVhZD0wLGYuc2l6ZSs9Zi5leHRlbnRzW2ldLmxlbmd0aH1pZih1LnBpdG0mJihlW3UucGl0bS5pdGVtX2lkXS5wcmltYXJ5PSEwKSx1LmlyZWYpZm9yKHQ9MDt0PHUuaXJlZi5yZWZlcmVuY2VzLmxlbmd0aDt0Kyspe3ZhciB5PXUuaXJlZi5yZWZlcmVuY2VzW3RdO2ZvcihpPTA7aTx5LnJlZmVyZW5jZXMubGVuZ3RoO2krKyllW3kuZnJvbV9pdGVtX0lEXS5yZWZfdG8ucHVzaCh7dHlwZTp5LnR5cGUsaWQ6eS5yZWZlcmVuY2VzW2ldfSl9aWYodS5pcHJwKWZvcih2YXIgbT0wO208dS5pcHJwLmlwbWFzLmxlbmd0aDttKyspe3ZhciBiPXUuaXBycC5pcG1hc1ttXTtmb3IodD0wO3Q8Yi5hc3NvY2lhdGlvbnMubGVuZ3RoO3QrKyl7dmFyIHg9Yi5hc3NvY2lhdGlvbnNbdF07Zm9yKGY9ZVt4LmlkXSxmLnByb3BlcnRpZXM9PT12b2lkIDAmJihmLnByb3BlcnRpZXM9e30sZi5wcm9wZXJ0aWVzLmJveGVzPVtdKSxpPTA7aTx4LnByb3BzLmxlbmd0aDtpKyspe3ZhciBTPXgucHJvcHNbaV07aWYoUy5wcm9wZXJ0eV9pbmRleD4wJiZTLnByb3BlcnR5X2luZGV4LTE8dS5pcHJwLmlwY28uYm94ZXMubGVuZ3RoKXt2YXIgVT11LmlwcnAuaXBjby5ib3hlc1tTLnByb3BlcnR5X2luZGV4LTFdO2YucHJvcGVydGllc1tVLnR5cGVdPVUsZi5wcm9wZXJ0aWVzLmJveGVzLnB1c2goVSl9fX19fX0sYy5wcm90b3R5cGUuZ2V0SXRlbT1mdW5jdGlvbihlKXt2YXIgdCxpO2lmKCF0aGlzLm1ldGEpcmV0dXJuIG51bGw7aWYoaT10aGlzLml0ZW1zW2VdLCFpLmRhdGEmJmkuc2l6ZSlpLmRhdGE9bmV3IFVpbnQ4QXJyYXkoaS5zaXplKSxpLmFscmVhZHlSZWFkPTAsdGhpcy5pdGVtc0RhdGFTaXplKz1pLnNpemUsci5kZWJ1ZygiSVNPRmlsZSIsIkFsbG9jYXRpbmcgaXRlbSAjIitlKyIgb2Ygc2l6ZSAiK2kuc2l6ZSsiICh0b3RhbDogIit0aGlzLml0ZW1zRGF0YVNpemUrIikiKTtlbHNlIGlmKGkuYWxyZWFkeVJlYWQ9PT1pLnNpemUpcmV0dXJuIGk7Zm9yKHZhciBmPTA7ZjxpLmV4dGVudHMubGVuZ3RoO2YrKyl7dmFyIHU9aS5leHRlbnRzW2ZdO2lmKHUuYWxyZWFkeVJlYWQhPT11Lmxlbmd0aCl7dmFyIHY9dGhpcy5zdHJlYW0uZmluZFBvc2l0aW9uKCEwLHUub2Zmc2V0K3UuYWxyZWFkeVJlYWQsITEpO2lmKHY+LTEpe3Q9dGhpcy5zdHJlYW0uYnVmZmVyc1t2XTt2YXIgeT10LmJ5dGVMZW5ndGgtKHUub2Zmc2V0K3UuYWxyZWFkeVJlYWQtdC5maWxlU3RhcnQpO2lmKHUubGVuZ3RoLXUuYWxyZWFkeVJlYWQ8PXkpci5kZWJ1ZygiSVNPRmlsZSIsIkdldHRpbmcgaXRlbSAjIitlKyIgZXh0ZW50ICMiK2YrIiBkYXRhIChhbHJlYWR5UmVhZDogIit1LmFscmVhZHlSZWFkKyIgb2Zmc2V0OiAiKyh1Lm9mZnNldCt1LmFscmVhZHlSZWFkLXQuZmlsZVN0YXJ0KSsiIHJlYWQgc2l6ZTogIisodS5sZW5ndGgtdS5hbHJlYWR5UmVhZCkrIiBmdWxsIGV4dGVudCBzaXplOiAiK3UubGVuZ3RoKyIgZnVsbCBpdGVtIHNpemU6ICIraS5zaXplKyIpIikscy5tZW1jcHkoaS5kYXRhLmJ1ZmZlcixpLmFscmVhZHlSZWFkLHQsdS5vZmZzZXQrdS5hbHJlYWR5UmVhZC10LmZpbGVTdGFydCx1Lmxlbmd0aC11LmFscmVhZHlSZWFkKSx0LnVzZWRCeXRlcys9dS5sZW5ndGgtdS5hbHJlYWR5UmVhZCx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCgpLGkuYWxyZWFkeVJlYWQrPXUubGVuZ3RoLXUuYWxyZWFkeVJlYWQsdS5hbHJlYWR5UmVhZD11Lmxlbmd0aDtlbHNlIHJldHVybiByLmRlYnVnKCJJU09GaWxlIiwiR2V0dGluZyBpdGVtICMiK2UrIiBleHRlbnQgIyIrZisiIHBhcnRpYWwgZGF0YSAoYWxyZWFkeVJlYWQ6ICIrdS5hbHJlYWR5UmVhZCsiIG9mZnNldDogIisodS5vZmZzZXQrdS5hbHJlYWR5UmVhZC10LmZpbGVTdGFydCkrIiByZWFkIHNpemU6ICIreSsiIGZ1bGwgZXh0ZW50IHNpemU6ICIrdS5sZW5ndGgrIiBmdWxsIGl0ZW0gc2l6ZTogIitpLnNpemUrIikiKSxzLm1lbWNweShpLmRhdGEuYnVmZmVyLGkuYWxyZWFkeVJlYWQsdCx1Lm9mZnNldCt1LmFscmVhZHlSZWFkLXQuZmlsZVN0YXJ0LHkpLHUuYWxyZWFkeVJlYWQrPXksaS5hbHJlYWR5UmVhZCs9eSx0LnVzZWRCeXRlcys9eSx0aGlzLnN0cmVhbS5sb2dCdWZmZXJMZXZlbCgpLG51bGx9ZWxzZSByZXR1cm4gbnVsbH19cmV0dXJuIGkuYWxyZWFkeVJlYWQ9PT1pLnNpemU/aTpudWxsfSxjLnByb3RvdHlwZS5yZWxlYXNlSXRlbT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLml0ZW1zW2VdO2lmKHQuZGF0YSl7dGhpcy5pdGVtc0RhdGFTaXplLT10LnNpemUsdC5kYXRhPW51bGwsdC5hbHJlYWR5UmVhZD0wO2Zvcih2YXIgaT0wO2k8dC5leHRlbnRzLmxlbmd0aDtpKyspe3ZhciBmPXQuZXh0ZW50c1tpXTtmLmFscmVhZHlSZWFkPTB9cmV0dXJuIHQuc2l6ZX1lbHNlIHJldHVybiAwfSxjLnByb3RvdHlwZS5wcm9jZXNzSXRlbXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHRoaXMuaXRlbXMpe3ZhciBpPXRoaXMuaXRlbXNbdF07dGhpcy5nZXRJdGVtKGkuaWQpLGUmJiFpLnNlbnQmJihlKGkpLGkuc2VudD0hMCxpLmRhdGE9bnVsbCl9fSxjLnByb3RvdHlwZS5oYXNJdGVtPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiB0aGlzLml0ZW1zKXt2YXIgaT10aGlzLml0ZW1zW3RdO2lmKGkubmFtZT09PWUpcmV0dXJuIGkuaWR9cmV0dXJuLTF9LGMucHJvdG90eXBlLmdldE1ldGFIYW5kbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWV0YT90aGlzLm1ldGEuaGRsci5oYW5kbGVyOm51bGx9LGMucHJvdG90eXBlLmdldFByaW1hcnlJdGVtPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubWV0YXx8IXRoaXMubWV0YS5waXRtP251bGw6dGhpcy5nZXRJdGVtKHRoaXMubWV0YS5waXRtLml0ZW1faWQpfSxjLnByb3RvdHlwZS5pdGVtVG9GcmFnbWVudGVkVHJhY2tGaWxlPWZ1bmN0aW9uKGUpe3ZhciB0PWV8fHt9LGk9bnVsbDtpZih0Lml0ZW1JZD9pPXRoaXMuZ2V0SXRlbSh0Lml0ZW1JZCk6aT10aGlzLmdldFByaW1hcnlJdGVtKCksaT09bnVsbClyZXR1cm4gbnVsbDt2YXIgZj1uZXcgYztmLmRpc2NhcmRNZGF0RGF0YT0hMTt2YXIgdT17dHlwZTppLnR5cGUsZGVzY3JpcHRpb25fYm94ZXM6aS5wcm9wZXJ0aWVzLmJveGVzfTtpLnByb3BlcnRpZXMuaXNwZSYmKHUud2lkdGg9aS5wcm9wZXJ0aWVzLmlzcGUuaW1hZ2Vfd2lkdGgsdS5oZWlnaHQ9aS5wcm9wZXJ0aWVzLmlzcGUuaW1hZ2VfaGVpZ2h0KTt2YXIgdj1mLmFkZFRyYWNrKHUpO3JldHVybiB2PyhmLmFkZFNhbXBsZSh2LGkuZGF0YSksZik6bnVsbH0sYy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLmJveGVzLmxlbmd0aDt0KyspdGhpcy5ib3hlc1t0XS53cml0ZShlKX0sYy5wcm90b3R5cGUuY3JlYXRlRnJhZ21lbnQ9ZnVuY3Rpb24oZSx0LGkpe3ZhciBmPXRoaXMuZ2V0VHJhY2tCeUlkKGUpLHU9dGhpcy5nZXRTYW1wbGUoZix0KTtpZih1PT1udWxsKXJldHVybiB1PWYuc2FtcGxlc1t0XSx0aGlzLm5leHRTZWVrUG9zaXRpb24/dGhpcy5uZXh0U2Vla1Bvc2l0aW9uPU1hdGgubWluKHUub2Zmc2V0K3UuYWxyZWFkeVJlYWQsdGhpcy5uZXh0U2Vla1Bvc2l0aW9uKTp0aGlzLm5leHRTZWVrUG9zaXRpb249Zi5zYW1wbGVzW3RdLm9mZnNldCt1LmFscmVhZHlSZWFkLG51bGw7dmFyIHY9aXx8bmV3IHM7di5lbmRpYW5uZXNzPXMuQklHX0VORElBTjt2YXIgeT10aGlzLmNyZWF0ZVNpbmdsZVNhbXBsZU1vb2YodSk7eS53cml0ZSh2KSx5LnRyYWZzWzBdLnRydW5zWzBdLmRhdGFfb2Zmc2V0PXkuc2l6ZSs4LHIuZGVidWcoIk1QNEJveCIsIkFkanVzdGluZyBkYXRhX29mZnNldCB3aXRoIG5ldyB2YWx1ZSAiK3kudHJhZnNbMF0udHJ1bnNbMF0uZGF0YV9vZmZzZXQpLHYuYWRqdXN0VWludDMyKHkudHJhZnNbMF0udHJ1bnNbMF0uZGF0YV9vZmZzZXRfcG9zaXRpb24seS50cmFmc1swXS50cnVuc1swXS5kYXRhX29mZnNldCk7dmFyIG09bmV3IG8ubWRhdEJveDtyZXR1cm4gbS5kYXRhPXUuZGF0YSxtLndyaXRlKHYpLHZ9LGMud3JpdGVJbml0aWFsaXphdGlvblNlZ21lbnQ9ZnVuY3Rpb24oZSx0LGksZil7dmFyIHU7ci5kZWJ1ZygiSVNPRmlsZSIsIkdlbmVyYXRpbmcgaW5pdGlhbGl6YXRpb24gc2VnbWVudCIpO3ZhciB2PW5ldyBzO3YuZW5kaWFubmVzcz1zLkJJR19FTkRJQU4sZS53cml0ZSh2KTt2YXIgeT10LmFkZCgibXZleCIpO2ZvcihpJiZ5LmFkZCgibWVoZCIpLnNldCgiZnJhZ21lbnRfZHVyYXRpb24iLGkpLHU9MDt1PHQudHJha3MubGVuZ3RoO3UrKyl5LmFkZCgidHJleCIpLnNldCgidHJhY2tfaWQiLHQudHJha3NbdV0udGtoZC50cmFja19pZCkuc2V0KCJkZWZhdWx0X3NhbXBsZV9kZXNjcmlwdGlvbl9pbmRleCIsMSkuc2V0KCJkZWZhdWx0X3NhbXBsZV9kdXJhdGlvbiIsZikuc2V0KCJkZWZhdWx0X3NhbXBsZV9zaXplIiwwKS5zZXQoImRlZmF1bHRfc2FtcGxlX2ZsYWdzIiw2NTUzNik7cmV0dXJuIHQud3JpdGUodiksdi5idWZmZXJ9LGMucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHM7dC5lbmRpYW5uZXNzPXMuQklHX0VORElBTix0aGlzLndyaXRlKHQpLHQuc2F2ZShlKX0sYy5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHM7cmV0dXJuIGUuZW5kaWFubmVzcz1zLkJJR19FTkRJQU4sdGhpcy53cml0ZShlKSxlLmJ1ZmZlcn0sYy5wcm90b3R5cGUuaW5pdGlhbGl6ZVNlZ21lbnRhdGlvbj1mdW5jdGlvbigpe3ZhciBlLHQsaSxmO2Zvcih0aGlzLm9uU2VnbWVudD09PW51bGwmJnIud2FybigiTVA0Qm94IiwiTm8gc2VnbWVudGF0aW9uIGNhbGxiYWNrIHNldCEiKSx0aGlzLmlzRnJhZ21lbnRhdGlvbkluaXRpYWxpemVkfHwodGhpcy5pc0ZyYWdtZW50YXRpb25Jbml0aWFsaXplZD0hMCx0aGlzLm5leHRNb29mTnVtYmVyPTAsdGhpcy5yZXNldFRhYmxlcygpKSx0PVtdLGU9MDtlPHRoaXMuZnJhZ21lbnRlZFRyYWNrcy5sZW5ndGg7ZSsrKXt2YXIgdT1uZXcgby5tb292Qm94O3UubXZoZD10aGlzLm1vb3YubXZoZCx1LmJveGVzLnB1c2godS5tdmhkKSxpPXRoaXMuZ2V0VHJhY2tCeUlkKHRoaXMuZnJhZ21lbnRlZFRyYWNrc1tlXS5pZCksdS5ib3hlcy5wdXNoKGkpLHUudHJha3MucHVzaChpKSxmPXt9LGYuaWQ9aS50a2hkLnRyYWNrX2lkLGYudXNlcj10aGlzLmZyYWdtZW50ZWRUcmFja3NbZV0udXNlcixmLmJ1ZmZlcj1jLndyaXRlSW5pdGlhbGl6YXRpb25TZWdtZW50KHRoaXMuZnR5cCx1LHRoaXMubW9vdi5tdmV4JiZ0aGlzLm1vb3YubXZleC5tZWhkP3RoaXMubW9vdi5tdmV4Lm1laGQuZnJhZ21lbnRfZHVyYXRpb246dm9pZCAwLHRoaXMubW9vdi50cmFrc1tlXS5zYW1wbGVzLmxlbmd0aD4wP3RoaXMubW9vdi50cmFrc1tlXS5zYW1wbGVzWzBdLmR1cmF0aW9uOjApLHQucHVzaChmKX1yZXR1cm4gdH0sby5Cb3gucHJvdG90eXBlLnByaW50SGVhZGVyPWZ1bmN0aW9uKGUpe3RoaXMuc2l6ZSs9OCx0aGlzLnNpemU+bCYmKHRoaXMuc2l6ZSs9OCksdGhpcy50eXBlPT09InV1aWQiJiYodGhpcy5zaXplKz0xNiksZS5sb2coZS5pbmRlbnQrInNpemU6Iit0aGlzLnNpemUpLGUubG9nKGUuaW5kZW50KyJ0eXBlOiIrdGhpcy50eXBlKX0sby5GdWxsQm94LnByb3RvdHlwZS5wcmludEhlYWRlcj1mdW5jdGlvbihlKXt0aGlzLnNpemUrPTQsby5Cb3gucHJvdG90eXBlLnByaW50SGVhZGVyLmNhbGwodGhpcyxlKSxlLmxvZyhlLmluZGVudCsidmVyc2lvbjoiK3RoaXMudmVyc2lvbiksZS5sb2coZS5pbmRlbnQrImZsYWdzOiIrdGhpcy5mbGFncyl9LG8uQm94LnByb3RvdHlwZS5wcmludD1mdW5jdGlvbihlKXt0aGlzLnByaW50SGVhZGVyKGUpfSxvLkNvbnRhaW5lckJveC5wcm90b3R5cGUucHJpbnQ9ZnVuY3Rpb24oZSl7dGhpcy5wcmludEhlYWRlcihlKTtmb3IodmFyIHQ9MDt0PHRoaXMuYm94ZXMubGVuZ3RoO3QrKylpZih0aGlzLmJveGVzW3RdKXt2YXIgaT1lLmluZGVudDtlLmluZGVudCs9IiAiLHRoaXMuYm94ZXNbdF0ucHJpbnQoZSksZS5pbmRlbnQ9aX19LGMucHJvdG90eXBlLnByaW50PWZ1bmN0aW9uKGUpe2UuaW5kZW50PSIiO2Zvcih2YXIgdD0wO3Q8dGhpcy5ib3hlcy5sZW5ndGg7dCsrKXRoaXMuYm94ZXNbdF0mJnRoaXMuYm94ZXNbdF0ucHJpbnQoZSl9LG8ubXZoZEJveC5wcm90b3R5cGUucHJpbnQ9ZnVuY3Rpb24oZSl7by5GdWxsQm94LnByb3RvdHlwZS5wcmludEhlYWRlci5jYWxsKHRoaXMsZSksZS5sb2coZS5pbmRlbnQrImNyZWF0aW9uX3RpbWU6ICIrdGhpcy5jcmVhdGlvbl90aW1lKSxlLmxvZyhlLmluZGVudCsibW9kaWZpY2F0aW9uX3RpbWU6ICIrdGhpcy5tb2RpZmljYXRpb25fdGltZSksZS5sb2coZS5pbmRlbnQrInRpbWVzY2FsZTogIit0aGlzLnRpbWVzY2FsZSksZS5sb2coZS5pbmRlbnQrImR1cmF0aW9uOiAiK3RoaXMuZHVyYXRpb24pLGUubG9nKGUuaW5kZW50KyJyYXRlOiAiK3RoaXMucmF0ZSksZS5sb2coZS5pbmRlbnQrInZvbHVtZTogIisodGhpcy52b2x1bWU+PjgpKSxlLmxvZyhlLmluZGVudCsibWF0cml4OiAiK3RoaXMubWF0cml4LmpvaW4oIiwgIikpLGUubG9nKGUuaW5kZW50KyJuZXh0X3RyYWNrX2lkOiAiK3RoaXMubmV4dF90cmFja19pZCl9LG8udGtoZEJveC5wcm90b3R5cGUucHJpbnQ9ZnVuY3Rpb24oZSl7by5GdWxsQm94LnByb3RvdHlwZS5wcmludEhlYWRlci5jYWxsKHRoaXMsZSksZS5sb2coZS5pbmRlbnQrImNyZWF0aW9uX3RpbWU6ICIrdGhpcy5jcmVhdGlvbl90aW1lKSxlLmxvZyhlLmluZGVudCsibW9kaWZpY2F0aW9uX3RpbWU6ICIrdGhpcy5tb2RpZmljYXRpb25fdGltZSksZS5sb2coZS5pbmRlbnQrInRyYWNrX2lkOiAiK3RoaXMudHJhY2tfaWQpLGUubG9nKGUuaW5kZW50KyJkdXJhdGlvbjogIit0aGlzLmR1cmF0aW9uKSxlLmxvZyhlLmluZGVudCsidm9sdW1lOiAiKyh0aGlzLnZvbHVtZT4+OCkpLGUubG9nKGUuaW5kZW50KyJtYXRyaXg6ICIrdGhpcy5tYXRyaXguam9pbigiLCAiKSksZS5sb2coZS5pbmRlbnQrImxheWVyOiAiK3RoaXMubGF5ZXIpLGUubG9nKGUuaW5kZW50KyJhbHRlcm5hdGVfZ3JvdXA6ICIrdGhpcy5hbHRlcm5hdGVfZ3JvdXApLGUubG9nKGUuaW5kZW50KyJ3aWR0aDogIit0aGlzLndpZHRoKSxlLmxvZyhlLmluZGVudCsiaGVpZ2h0OiAiK3RoaXMuaGVpZ2h0KX07dmFyIGc9e307Zy5jcmVhdGVGaWxlPWZ1bmN0aW9uKGUsdCl7dmFyIGk9ZSE9PXZvaWQgMD9lOiEwLGY9bmV3IGModCk7cmV0dXJuIGYuZGlzY2FyZE1kYXREYXRhPSFpLGZ9LG4uY3JlYXRlRmlsZT1nLmNyZWF0ZUZpbGV9KShQZSk7dmFyIHRyPVZ0KFBlKSxqdD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKG4pe3ZhciByPXt9O24uZXhwb3J0cz1yLHIucGFyc2U9ZnVuY3Rpb24oYSxzKXtmb3IodmFyIGw9ci5iaW4ucmVhZFVzaG9ydCxkPXIuYmluLnJlYWRVaW50LHA9MCxoPXt9LG89bmV3IFVpbnQ4QXJyYXkoYSksXz1vLmxlbmd0aC00O2QobyxfKSE9MTAxMDEwMjU2OylfLS07dmFyIHA9XztwKz00LHArPTQ7dmFyIGM9bChvLHApO3ArPTIsbChvLHApLHArPTI7dmFyIGc9ZChvLHApO3ArPTQ7dmFyIGU9ZChvLHApO3ArPTQscD1lO2Zvcih2YXIgdD0wO3Q8Yzt0Kyspe2QobyxwKSxwKz00LHArPTQscCs9NCxwKz00LGQobyxwKSxwKz00O3ZhciBnPWQobyxwKTtwKz00O3ZhciBpPWQobyxwKTtwKz00O3ZhciBmPWwobyxwKSx1PWwobyxwKzIpLHY9bChvLHArNCk7cCs9NixwKz04O3ZhciB5PWQobyxwKTtwKz00LHArPWYrdSt2LHIuX3JlYWRMb2NhbChvLHksaCxnLGkscyl9cmV0dXJuIGh9LHIuX3JlYWRMb2NhbD1mdW5jdGlvbihhLHMsbCxkLGgsbyl7dmFyIF89ci5iaW4ucmVhZFVzaG9ydCxwPXIuYmluLnJlYWRVaW50O3AoYSxzKSxzKz00LF8oYSxzKSxzKz0yLF8oYSxzKSxzKz0yO3ZhciBjPV8oYSxzKTtzKz0yLHAoYSxzKSxzKz00LHAoYSxzKSxzKz00LHMrPTg7dmFyIGc9XyhhLHMpO3MrPTI7dmFyIGU9XyhhLHMpO3MrPTI7dmFyIHQ9ci5iaW4ucmVhZFVURjgoYSxzLGcpO2lmKHMrPWcscys9ZSxvKXtsW3RdPXtzaXplOmgsY3NpemU6ZH07cmV0dXJufXZhciBpPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLHMpO2lmKGM9PTApbFt0XT1uZXcgVWludDhBcnJheShpLmJ1ZmZlci5zbGljZShzLHMrZCkpO2Vsc2UgaWYoYz09OCl7dmFyIGY9bmV3IFVpbnQ4QXJyYXkoaCk7ci5pbmZsYXRlUmF3KGksZiksbFt0XT1mfWVsc2UgdGhyb3cidW5rbm93biBjb21wcmVzc2lvbiBtZXRob2Q6ICIrY30sci5pbmZsYXRlUmF3PWZ1bmN0aW9uKGEscyl7cmV0dXJuIHIuRi5pbmZsYXRlKGEscyl9LHIuaW5mbGF0ZT1mdW5jdGlvbihhLHMpe3JldHVybiBhWzBdLGFbMV0sci5pbmZsYXRlUmF3KG5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCsyLGEubGVuZ3RoLTYpLHMpfSxyLmRlZmxhdGU9ZnVuY3Rpb24oYSxzKXtzPT1udWxsJiYocz17bGV2ZWw6Nn0pO3ZhciBsPTAsZD1uZXcgVWludDhBcnJheSg1MCtNYXRoLmZsb29yKGEubGVuZ3RoKjEuMSkpO2RbbF09MTIwLGRbbCsxXT0xNTYsbCs9MixsPXIuRi5kZWZsYXRlUmF3KGEsZCxsLHMubGV2ZWwpO3ZhciBoPXIuYWRsZXIoYSwwLGEubGVuZ3RoKTtyZXR1cm4gZFtsKzBdPWg+Pj4yNCYyNTUsZFtsKzFdPWg+Pj4xNiYyNTUsZFtsKzJdPWg+Pj44JjI1NSxkW2wrM109aD4+PjAmMjU1LG5ldyBVaW50OEFycmF5KGQuYnVmZmVyLDAsbCs0KX0sci5kZWZsYXRlUmF3PWZ1bmN0aW9uKGEscyl7cz09bnVsbCYmKHM9e2xldmVsOjZ9KTt2YXIgbD1uZXcgVWludDhBcnJheSg1MCtNYXRoLmZsb29yKGEubGVuZ3RoKjEuMSkpLGQ9ci5GLmRlZmxhdGVSYXcoYSxsLGQscy5sZXZlbCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGwuYnVmZmVyLDAsZCl9LHIuZW5jb2RlPWZ1bmN0aW9uKGEscyl7cz09bnVsbCYmKHM9ITEpO3ZhciBsPTAsZD1yLmJpbi53cml0ZVVpbnQsaD1yLmJpbi53cml0ZVVzaG9ydCxvPXt9O2Zvcih2YXIgXyBpbiBhKXt2YXIgcD0hci5fbm9OZWVkKF8pJiYhcyxjPWFbX10sZz1yLmNyYy5jcmMoYywwLGMubGVuZ3RoKTtvW19dPXtjcHI6cCx1c2l6ZTpjLmxlbmd0aCxjcmM6ZyxmaWxlOnA/ci5kZWZsYXRlUmF3KGMpOmN9fWZvcih2YXIgXyBpbiBvKWwrPW9bX10uZmlsZS5sZW5ndGgrMzArNDYrMipyLmJpbi5zaXplVVRGOChfKTtsKz0yMjt2YXIgZT1uZXcgVWludDhBcnJheShsKSx0PTAsaT1bXTtmb3IodmFyIF8gaW4gbyl7dmFyIGY9b1tfXTtpLnB1c2godCksdD1yLl93cml0ZUhlYWRlcihlLHQsXyxmLDApfXZhciB1PTAsdj10O2Zvcih2YXIgXyBpbiBvKXt2YXIgZj1vW19dO2kucHVzaCh0KSx0PXIuX3dyaXRlSGVhZGVyKGUsdCxfLGYsMSxpW3UrK10pfXZhciB5PXQtdjtyZXR1cm4gZChlLHQsMTAxMDEwMjU2KSx0Kz00LHQrPTQsaChlLHQsdSksdCs9MixoKGUsdCx1KSx0Kz0yLGQoZSx0LHkpLHQrPTQsZChlLHQsdiksdCs9NCx0Kz0yLGUuYnVmZmVyfSxyLl9ub05lZWQ9ZnVuY3Rpb24oYSl7dmFyIHM9YS5zcGxpdCgiLiIpLnBvcCgpLnRvTG93ZXJDYXNlKCk7cmV0dXJuInBuZyxqcGcsanBlZyx6aXAiLmluZGV4T2YocykhPS0xfSxyLl93cml0ZUhlYWRlcj1mdW5jdGlvbihhLHMsbCxkLGgsbyl7dmFyIF89ci5iaW4ud3JpdGVVaW50LHA9ci5iaW4ud3JpdGVVc2hvcnQsYz1kLmZpbGU7XyhhLHMsaD09MD82NzMyNDc1MjozMzYzOTI0OCkscys9NCxoPT0xJiYocys9MikscChhLHMsMjApLHMrPTIscChhLHMsMCkscys9MixwKGEscyxkLmNwcj84OjApLHMrPTIsXyhhLHMsMCkscys9NCxfKGEscyxkLmNyYykscys9NCxfKGEscyxjLmxlbmd0aCkscys9NCxfKGEscyxkLnVzaXplKSxzKz00LHAoYSxzLHIuYmluLnNpemVVVEY4KGwpKSxzKz0yLHAoYSxzLDApLHMrPTIsaD09MSYmKHMrPTIscys9MixzKz02LF8oYSxzLG8pLHMrPTQpO3ZhciBnPXIuYmluLndyaXRlVVRGOChhLHMsbCk7cmV0dXJuIHMrPWcsaD09MCYmKGEuc2V0KGMscykscys9Yy5sZW5ndGgpLHN9LHIuY3JjPXt0YWJsZTpmdW5jdGlvbigpe2Zvcih2YXIgYT1uZXcgVWludDMyQXJyYXkoMjU2KSxzPTA7czwyNTY7cysrKXtmb3IodmFyIGw9cyxkPTA7ZDw4O2QrKylsJjE/bD0zOTg4MjkyMzg0Xmw+Pj4xOmw9bD4+PjE7YVtzXT1sfXJldHVybiBhfSgpLHVwZGF0ZTpmdW5jdGlvbihhLHMsbCxkKXtmb3IodmFyIGg9MDtoPGQ7aCsrKWE9ci5jcmMudGFibGVbKGFec1tsK2hdKSYyNTVdXmE+Pj44O3JldHVybiBhfSxjcmM6ZnVuY3Rpb24oYSxzLGwpe3JldHVybiByLmNyYy51cGRhdGUoNDI5NDk2NzI5NSxhLHMsbCleNDI5NDk2NzI5NX19LHIuYWRsZXI9ZnVuY3Rpb24oYSxzLGwpe2Zvcih2YXIgZD0xLGg9MCxvPXMsXz1zK2w7bzxfOyl7Zm9yKHZhciBwPU1hdGgubWluKG8rNTU1MixfKTtvPHA7KWQrPWFbbysrXSxoKz1kO2Q9ZCU2NTUyMSxoPWglNjU1MjF9cmV0dXJuIGg8PDE2fGR9LHIuYmluPXtyZWFkVXNob3J0OmZ1bmN0aW9uKGEscyl7cmV0dXJuIGFbc118YVtzKzFdPDw4fSx3cml0ZVVzaG9ydDpmdW5jdGlvbihhLHMsbCl7YVtzXT1sJjI1NSxhW3MrMV09bD4+OCYyNTV9LHJlYWRVaW50OmZ1bmN0aW9uKGEscyl7cmV0dXJuIGFbcyszXSooMjU2KjI1NioyNTYpKyhhW3MrMl08PDE2fGFbcysxXTw8OHxhW3NdKX0sd3JpdGVVaW50OmZ1bmN0aW9uKGEscyxsKXthW3NdPWwmMjU1LGFbcysxXT1sPj44JjI1NSxhW3MrMl09bD4+MTYmMjU1LGFbcyszXT1sPj4yNCYyNTV9LHJlYWRBU0NJSTpmdW5jdGlvbihhLHMsbCl7Zm9yKHZhciBkPSIiLGg9MDtoPGw7aCsrKWQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYVtzK2hdKTtyZXR1cm4gZH0sd3JpdGVBU0NJSTpmdW5jdGlvbihhLHMsbCl7Zm9yKHZhciBkPTA7ZDxsLmxlbmd0aDtkKyspYVtzK2RdPWwuY2hhckNvZGVBdChkKX0scGFkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aDwyPyIwIithOmF9LHJlYWRVVEY4OmZ1bmN0aW9uKGEscyxsKXtmb3IodmFyIGQ9IiIsaCxvPTA7bzxsO28rKylkKz0iJSIrci5iaW4ucGFkKGFbcytvXS50b1N0cmluZygxNikpO3RyeXtoPWRlY29kZVVSSUNvbXBvbmVudChkKX1jYXRjaHtyZXR1cm4gci5iaW4ucmVhZEFTQ0lJKGEscyxsKX1yZXR1cm4gaH0sd3JpdGVVVEY4OmZ1bmN0aW9uKGEscyxsKXtmb3IodmFyIGQ9bC5sZW5ndGgsaD0wLG89MDtvPGQ7bysrKXt2YXIgXz1sLmNoYXJDb2RlQXQobyk7aWYoIShfJjQyOTQ5NjcxNjgpKWFbcytoXT1fLGgrKztlbHNlIGlmKCEoXyY0Mjk0OTY1MjQ4KSlhW3MraF09MTkyfF8+PjYsYVtzK2grMV09MTI4fF8+PjAmNjMsaCs9MjtlbHNlIGlmKCEoXyY0Mjk0OTAxNzYwKSlhW3MraF09MjI0fF8+PjEyLGFbcytoKzFdPTEyOHxfPj42JjYzLGFbcytoKzJdPTEyOHxfPj4wJjYzLGgrPTM7ZWxzZSBpZighKF8mNDI5NDk2NzI5NS0oMTw8MjEpKzEpKWFbcytoXT0yNDB8Xz4+MTgsYVtzK2grMV09MTI4fF8+PjEyJjYzLGFbcytoKzJdPTEyOHxfPj42JjYzLGFbcytoKzNdPTEyOHxfPj4wJjYzLGgrPTQ7ZWxzZSB0aHJvdyJlIn1yZXR1cm4gaH0sc2l6ZVVURjg6ZnVuY3Rpb24oYSl7Zm9yKHZhciBzPWEubGVuZ3RoLGw9MCxkPTA7ZDxzO2QrKyl7dmFyIGg9YS5jaGFyQ29kZUF0KGQpO2lmKCEoaCY0Mjk0OTY3MTY4KSlsKys7ZWxzZSBpZighKGgmNDI5NDk2NTI0OCkpbCs9MjtlbHNlIGlmKCEoaCY0Mjk0OTAxNzYwKSlsKz0zO2Vsc2UgaWYoIShoJjQyOTQ5NjcyOTUtKDE8PDIxKSsxKSlsKz00O2Vsc2UgdGhyb3ciZSJ9cmV0dXJuIGx9fSxyLkY9e30sci5GLmRlZmxhdGVSYXc9ZnVuY3Rpb24oYSxzLGwsZCl7dmFyIGg9W1swLDAsMCwwLDBdLFs0LDQsOCw0LDBdLFs0LDUsMTYsOCwwXSxbNCw2LDE2LDE2LDBdLFs0LDEwLDE2LDMyLDBdLFs4LDE2LDMyLDMyLDBdLFs4LDE2LDEyOCwxMjgsMF0sWzgsMzIsMTI4LDI1NiwwXSxbMzIsMTI4LDI1OCwxMDI0LDFdLFszMiwyNTgsMjU4LDQwOTYsMV1dLG89aFtkXSxfPXIuRi5VLHA9ci5GLl9nb29kSW5kZXg7ci5GLl9oYXNoO3ZhciBjPXIuRi5fcHV0c0UsZz0wLGU9bDw8Myx0PTAsaT1hLmxlbmd0aDtpZihkPT0wKXtmb3IoO2c8aTspe3ZhciBmPU1hdGgubWluKDY1NTM1LGktZyk7YyhzLGUsZytmPT1pPzE6MCksZT1yLkYuX2NvcHlFeGFjdChhLGcsZixzLGUrOCksZys9Zn1yZXR1cm4gZT4+PjN9dmFyIHU9Xy5saXRzLHY9Xy5zdHJ0LHk9Xy5wcmV2LG09MCxiPTAseD0wLFM9MCxVPTAsRT0wO2ZvcihpPjImJihFPXIuRi5faGFzaChhLDApLHZbRV09MCksZz0wO2c8aTtnKyspe2lmKFU9RSxnKzE8aS0yKXtFPXIuRi5faGFzaChhLGcrMSk7dmFyIHc9ZysxJjMyNzY3O3lbd109dltFXSx2W0VdPXd9aWYodDw9Zyl7KG0+MTRlM3x8Yj4yNjY5NykmJmktZz4xMDAmJih0PGcmJih1W21dPWctdCxtKz0yLHQ9ZyksZT1yLkYuX3dyaXRlQmxvY2soZz09aS0xfHx0PT1pPzE6MCx1LG0sUyxhLHgsZy14LHMsZSksbT1iPVM9MCx4PWcpO3ZhciBBPTA7ZzxpLTImJihBPXIuRi5fYmVzdE1hdGNoKGEsZyx5LFUsTWF0aC5taW4ob1syXSxpLWcpLG9bM10pKTt2YXIgZj1BPj4+MTYsST1BJjY1NTM1O2lmKEEhPTApe3ZhciBmPUE+Pj4xNixJPUEmNjU1MzUsRj1wKGYsXy5vZjApO18ubGhzdFsyNTcrRl0rKzt2YXIgUD1wKEksXy5kZjApO18uZGhzdFtQXSsrLFMrPV8uZXhiW0ZdK18uZHhiW1BdLHVbbV09Zjw8MjN8Zy10LHVbbSsxXT1JPDwxNnxGPDw4fFAsbSs9Mix0PWcrZn1lbHNlIF8ubGhzdFthW2ddXSsrO2IrK319Zm9yKCh4IT1nfHxhLmxlbmd0aD09MCkmJih0PGcmJih1W21dPWctdCxtKz0yLHQ9ZyksZT1yLkYuX3dyaXRlQmxvY2soMSx1LG0sUyxhLHgsZy14LHMsZSksbT0wLGI9MCxtPWI9Uz0wLHg9Zyk7ZSY3OyllKys7cmV0dXJuIGU+Pj4zfSxyLkYuX2Jlc3RNYXRjaD1mdW5jdGlvbihhLHMsbCxkLGgsbyl7dmFyIF89cyYzMjc2NyxwPWxbX10sYz1fLXArMzI3NjgmMzI3Njc7aWYocD09X3x8ZCE9ci5GLl9oYXNoKGEscy1jKSlyZXR1cm4gMDtmb3IodmFyIGc9MCxlPTAsdD1NYXRoLm1pbigzMjc2NyxzKTtjPD10JiYtLW8hPTAmJnAhPV87KXtpZihnPT0wfHxhW3MrZ109PWFbcytnLWNdKXt2YXIgaT1yLkYuX2hvd0xvbmcoYSxzLGMpO2lmKGk+Zyl7aWYoZz1pLGU9YyxnPj1oKWJyZWFrO2MrMjxpJiYoaT1jKzIpO2Zvcih2YXIgZj0wLHU9MDt1PGktMjt1Kyspe3ZhciB2PXMtYyt1KzMyNzY4JjMyNzY3LHk9bFt2XSxtPXYteSszMjc2OCYzMjc2NzttPmYmJihmPW0scD12KX19fV89cCxwPWxbX10sYys9Xy1wKzMyNzY4JjMyNzY3fXJldHVybiBnPDwxNnxlfSxyLkYuX2hvd0xvbmc9ZnVuY3Rpb24oYSxzLGwpe2lmKGFbc10hPWFbcy1sXXx8YVtzKzFdIT1hW3MrMS1sXXx8YVtzKzJdIT1hW3MrMi1sXSlyZXR1cm4gMDt2YXIgZD1zLGg9TWF0aC5taW4oYS5sZW5ndGgscysyNTgpO2ZvcihzKz0zO3M8aCYmYVtzXT09YVtzLWxdOylzKys7cmV0dXJuIHMtZH0sci5GLl9oYXNoPWZ1bmN0aW9uKGEscyl7cmV0dXJuKGFbc108PDh8YVtzKzFdKSsoYVtzKzJdPDw0KSY2NTUzNX0sci5zYXZlZD0wLHIuRi5fd3JpdGVCbG9jaz1mdW5jdGlvbihhLHMsbCxkLGgsbyxfLHAsYyl7dmFyIGc9ci5GLlUsZT1yLkYuX3B1dHNGLHQ9ci5GLl9wdXRzRSxpLGYsdSx2LHksbSxiLHgsUztnLmxoc3RbMjU2XSsrLGk9ci5GLmdldFRyZWVzKCksZj1pWzBdLHU9aVsxXSx2PWlbMl0seT1pWzNdLG09aVs0XSxiPWlbNV0seD1pWzZdLFM9aVs3XTt2YXIgVT0oYyszJjc/OC0oYyszJjcpOjApKzMyKyhfPDwzKSxFPWQrci5GLmNvbnRTaXplKGcuZmx0cmVlLGcubGhzdCkrci5GLmNvbnRTaXplKGcuZmR0cmVlLGcuZGhzdCksdz1kK3IuRi5jb250U2l6ZShnLmx0cmVlLGcubGhzdCkrci5GLmNvbnRTaXplKGcuZHRyZWUsZy5kaHN0KTt3Kz0xNCszKmIrci5GLmNvbnRTaXplKGcuaXRyZWUsZy5paHN0KSsoZy5paHN0WzE2XSoyK2cuaWhzdFsxN10qMytnLmloc3RbMThdKjcpO2Zvcih2YXIgQT0wO0E8Mjg2O0ErKylnLmxoc3RbQV09MDtmb3IodmFyIEE9MDtBPDMwO0ErKylnLmRoc3RbQV09MDtmb3IodmFyIEE9MDtBPDE5O0ErKylnLmloc3RbQV09MDt2YXIgST1VPEUmJlU8dz8wOkU8dz8xOjI7aWYoZShwLGMsYSksZShwLGMrMSxJKSxjKz0zLEk9PTApe2Zvcig7YyY3OyljKys7Yz1yLkYuX2NvcHlFeGFjdChoLG8sXyxwLGMpfWVsc2V7dmFyIEYsUDtpZihJPT0xJiYoRj1nLmZsdHJlZSxQPWcuZmR0cmVlKSxJPT0yKXtyLkYubWFrZUNvZGVzKGcubHRyZWUsZiksci5GLnJldkNvZGVzKGcubHRyZWUsZiksci5GLm1ha2VDb2RlcyhnLmR0cmVlLHUpLHIuRi5yZXZDb2RlcyhnLmR0cmVlLHUpLHIuRi5tYWtlQ29kZXMoZy5pdHJlZSx2KSxyLkYucmV2Q29kZXMoZy5pdHJlZSx2KSxGPWcubHRyZWUsUD1nLmR0cmVlLHQocCxjLHktMjU3KSxjKz01LHQocCxjLG0tMSksYys9NSx0KHAsYyxiLTQpLGMrPTQ7Zm9yKHZhciBEPTA7RDxiO0QrKyl0KHAsYytEKjMsZy5pdHJlZVsoZy5vcmRyW0RdPDwxKSsxXSk7Yys9MypiLGM9ci5GLl9jb2RlVGlueSh4LGcuaXRyZWUscCxjKSxjPXIuRi5fY29kZVRpbnkoUyxnLml0cmVlLHAsYyl9Zm9yKHZhciBrPW8sTj0wO048bDtOKz0yKXtmb3IodmFyIE09c1tOXSxxPU0+Pj4yMyxHPWsrKE0mKDE8PDIzKS0xKTtrPEc7KWM9ci5GLl93cml0ZUxpdChoW2srK10sRixwLGMpO2lmKHEhPTApe3ZhciBZPXNbTisxXSxUPVk+PjE2LGdlPVk+PjgmMjU1LHJlPVkmMjU1O2M9ci5GLl93cml0ZUxpdCgyNTcrZ2UsRixwLGMpLHQocCxjLHEtZy5vZjBbZ2VdKSxjKz1nLmV4YltnZV0sYz1yLkYuX3dyaXRlTGl0KHJlLFAscCxjKSxlKHAsYyxULWcuZGYwW3JlXSksYys9Zy5keGJbcmVdLGsrPXF9fWM9ci5GLl93cml0ZUxpdCgyNTYsRixwLGMpfXJldHVybiBjfSxyLkYuX2NvcHlFeGFjdD1mdW5jdGlvbihhLHMsbCxkLGgpe3ZhciBvPWg+Pj4zO3JldHVybiBkW29dPWwsZFtvKzFdPWw+Pj44LGRbbysyXT0yNTUtZFtvXSxkW28rM109MjU1LWRbbysxXSxvKz00LGQuc2V0KG5ldyBVaW50OEFycmF5KGEuYnVmZmVyLHMsbCksbyksaCsobCs0PDwzKX0sci5GLmdldFRyZWVzPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXIuRi5VLHM9ci5GLl9odWZUcmVlKGEubGhzdCxhLmx0cmVlLDE1KSxsPXIuRi5faHVmVHJlZShhLmRoc3QsYS5kdHJlZSwxNSksZD1bXSxoPXIuRi5fbGVuQ29kZXMoYS5sdHJlZSxkKSxvPVtdLF89ci5GLl9sZW5Db2RlcyhhLmR0cmVlLG8pLHA9MDtwPGQubGVuZ3RoO3ArPTIpYS5paHN0W2RbcF1dKys7Zm9yKHZhciBwPTA7cDxvLmxlbmd0aDtwKz0yKWEuaWhzdFtvW3BdXSsrO2Zvcih2YXIgYz1yLkYuX2h1ZlRyZWUoYS5paHN0LGEuaXRyZWUsNyksZz0xOTtnPjQmJmEuaXRyZWVbKGEub3JkcltnLTFdPDwxKSsxXT09MDspZy0tO3JldHVybltzLGwsYyxoLF8sZyxkLG9dfSxyLkYuZ2V0U2Vjb25kPWZ1bmN0aW9uKGEpe2Zvcih2YXIgcz1bXSxsPTA7bDxhLmxlbmd0aDtsKz0yKXMucHVzaChhW2wrMV0pO3JldHVybiBzfSxyLkYubm9uWmVybz1mdW5jdGlvbihhKXtmb3IodmFyIHM9IiIsbD0wO2w8YS5sZW5ndGg7bCs9MilhW2wrMV0hPTAmJihzKz0obD4+MSkrIiwiKTtyZXR1cm4gc30sci5GLmNvbnRTaXplPWZ1bmN0aW9uKGEscyl7Zm9yKHZhciBsPTAsZD0wO2Q8cy5sZW5ndGg7ZCsrKWwrPXNbZF0qYVsoZDw8MSkrMV07cmV0dXJuIGx9LHIuRi5fY29kZVRpbnk9ZnVuY3Rpb24oYSxzLGwsZCl7Zm9yKHZhciBoPTA7aDxhLmxlbmd0aDtoKz0yKXt2YXIgbz1hW2hdLF89YVtoKzFdO2Q9ci5GLl93cml0ZUxpdChvLHMsbCxkKTt2YXIgcD1vPT0xNj8yOm89PTE3PzM6NztvPjE1JiYoci5GLl9wdXRzRShsLGQsXyxwKSxkKz1wKX1yZXR1cm4gZH0sci5GLl9sZW5Db2Rlcz1mdW5jdGlvbihhLHMpe2Zvcih2YXIgbD1hLmxlbmd0aDtsIT0yJiZhW2wtMV09PTA7KWwtPTI7Zm9yKHZhciBkPTA7ZDxsO2QrPTIpe3ZhciBoPWFbZCsxXSxvPWQrMzxsP2FbZCszXTotMSxfPWQrNTxsP2FbZCs1XTotMSxwPWQ9PTA/LTE6YVtkLTFdO2lmKGg9PTAmJm89PWgmJl89PWgpe2Zvcih2YXIgYz1kKzU7YysyPGwmJmFbYysyXT09aDspYys9Mjt2YXIgZz1NYXRoLm1pbihjKzEtZD4+PjEsMTM4KTtnPDExP3MucHVzaCgxNyxnLTMpOnMucHVzaCgxOCxnLTExKSxkKz1nKjItMn1lbHNlIGlmKGg9PXAmJm89PWgmJl89PWgpe2Zvcih2YXIgYz1kKzU7YysyPGwmJmFbYysyXT09aDspYys9Mjt2YXIgZz1NYXRoLm1pbihjKzEtZD4+PjEsNik7cy5wdXNoKDE2LGctMyksZCs9ZyoyLTJ9ZWxzZSBzLnB1c2goaCwwKX1yZXR1cm4gbD4+PjF9LHIuRi5faHVmVHJlZT1mdW5jdGlvbihhLHMsbCl7dmFyIGQ9W10saD1hLmxlbmd0aCxvPXMubGVuZ3RoLF89MDtmb3IoXz0wO188bztfKz0yKXNbX109MCxzW18rMV09MDtmb3IoXz0wO188aDtfKyspYVtfXSE9MCYmZC5wdXNoKHtsaXQ6XyxmOmFbX119KTt2YXIgcD1kLmxlbmd0aCxjPWQuc2xpY2UoMCk7aWYocD09MClyZXR1cm4gMDtpZihwPT0xKXt2YXIgZz1kWzBdLmxpdCxjPWc9PTA/MTowO3JldHVybiBzWyhnPDwxKSsxXT0xLHNbKGM8PDEpKzFdPTEsMX1kLnNvcnQoZnVuY3Rpb24oeSxtKXtyZXR1cm4geS5mLW0uZn0pO3ZhciBlPWRbMF0sdD1kWzFdLGk9MCxmPTEsdT0yO2ZvcihkWzBdPXtsaXQ6LTEsZjplLmYrdC5mLGw6ZSxyOnQsZDowfTtmIT1wLTE7KWkhPWYmJih1PT1wfHxkW2ldLmY8ZFt1XS5mKT9lPWRbaSsrXTplPWRbdSsrXSxpIT1mJiYodT09cHx8ZFtpXS5mPGRbdV0uZik/dD1kW2krK106dD1kW3UrK10sZFtmKytdPXtsaXQ6LTEsZjplLmYrdC5mLGw6ZSxyOnR9O3ZhciB2PXIuRi5zZXREZXB0aChkW2YtMV0sMCk7Zm9yKHY+bCYmKHIuRi5yZXN0cmljdERlcHRoKGMsbCx2KSx2PWwpLF89MDtfPHA7XysrKXNbKGNbX10ubGl0PDwxKSsxXT1jW19dLmQ7cmV0dXJuIHZ9LHIuRi5zZXREZXB0aD1mdW5jdGlvbihhLHMpe3JldHVybiBhLmxpdCE9LTE/KGEuZD1zLHMpOk1hdGgubWF4KHIuRi5zZXREZXB0aChhLmwscysxKSxyLkYuc2V0RGVwdGgoYS5yLHMrMSkpfSxyLkYucmVzdHJpY3REZXB0aD1mdW5jdGlvbihhLHMsbCl7dmFyIGQ9MCxoPTE8PGwtcyxvPTA7Zm9yKGEuc29ydChmdW5jdGlvbihwLGMpe3JldHVybiBjLmQ9PXAuZD9wLmYtYy5mOmMuZC1wLmR9KSxkPTA7ZDxhLmxlbmd0aCYmYVtkXS5kPnM7ZCsrKXt2YXIgXz1hW2RdLmQ7YVtkXS5kPXMsbys9aC0oMTw8bC1fKX1mb3Iobz1vPj4+bC1zO28+MDspe3ZhciBfPWFbZF0uZDtfPHM/KGFbZF0uZCsrLG8tPTE8PHMtXy0xKTpkKyt9Zm9yKDtkPj0wO2QtLSlhW2RdLmQ9PXMmJm88MCYmKGFbZF0uZC0tLG8rKyk7byE9MCYmY29uc29sZS5sb2coImRlYnQgbGVmdCIpfSxyLkYuX2dvb2RJbmRleD1mdW5jdGlvbihhLHMpe3ZhciBsPTA7cmV0dXJuIHNbbHwxNl08PWEmJihsfD0xNiksc1tsfDhdPD1hJiYobHw9OCksc1tsfDRdPD1hJiYobHw9NCksc1tsfDJdPD1hJiYobHw9Miksc1tsfDFdPD1hJiYobHw9MSksbH0sci5GLl93cml0ZUxpdD1mdW5jdGlvbihhLHMsbCxkKXtyZXR1cm4gci5GLl9wdXRzRihsLGQsc1thPDwxXSksZCtzWyhhPDwxKSsxXX0sci5GLmluZmxhdGU9ZnVuY3Rpb24oYSxzKXt2YXIgbD1VaW50OEFycmF5O2lmKGFbMF09PTMmJmFbMV09PTApcmV0dXJuIHN8fG5ldyBsKDApO3ZhciBkPXIuRixoPWQuX2JpdHNGLG89ZC5fYml0c0UsXz1kLl9kZWNvZGVUaW55LHA9ZC5tYWtlQ29kZXMsYz1kLmNvZGVzMm1hcCxnPWQuX2dldDE3LGU9ZC5VLHQ9cz09bnVsbDt0JiYocz1uZXcgbChhLmxlbmd0aD4+PjI8PDMpKTtmb3IodmFyIGk9MCxmPTAsdT0wLHY9MCx5PTAsbT0wLGI9MCx4PTAsUz0wLFUsRTtpPT0wOyl7aWYoaT1oKGEsUywxKSxmPWgoYSxTKzEsMiksUys9MyxmPT0wKXtTJjcmJihTKz04LShTJjcpKTt2YXIgdz0oUz4+PjMpKzQsQT1hW3ctNF18YVt3LTNdPDw4O3QmJihzPXIuRi5fY2hlY2socyx4K0EpKSxzLnNldChuZXcgbChhLmJ1ZmZlcixhLmJ5dGVPZmZzZXQrdyxBKSx4KSxTPXcrQTw8Myx4Kz1BO2NvbnRpbnVlfWlmKHQmJihzPXIuRi5fY2hlY2socyx4KygxPDwxNykpKSxmPT0xJiYoVT1lLmZsbWFwLEU9ZS5mZG1hcCxtPTUxMSxiPTMxKSxmPT0yKXt1PW8oYSxTLDUpKzI1Nyx2PW8oYSxTKzUsNSkrMSx5PW8oYSxTKzEwLDQpKzQsUys9MTQ7Zm9yKHZhciBJPTA7STwzODtJKz0yKWUuaXRyZWVbSV09MCxlLml0cmVlW0krMV09MDtmb3IodmFyIEY9MSxJPTA7STx5O0krKyl7dmFyIFA9byhhLFMrSSozLDMpO2UuaXRyZWVbKGUub3JkcltJXTw8MSkrMV09UCxQPkYmJihGPVApfVMrPTMqeSxwKGUuaXRyZWUsRiksYyhlLml0cmVlLEYsZS5pbWFwKSxVPWUubG1hcCxFPWUuZG1hcCxTPV8oZS5pbWFwLCgxPDxGKS0xLHUrdixhLFMsZS50dHJlZSk7dmFyIEQ9ZC5fY29weU91dChlLnR0cmVlLDAsdSxlLmx0cmVlKTttPSgxPDxEKS0xO3ZhciBrPWQuX2NvcHlPdXQoZS50dHJlZSx1LHYsZS5kdHJlZSk7Yj0oMTw8ayktMSxwKGUubHRyZWUsRCksYyhlLmx0cmVlLEQsVSkscChlLmR0cmVlLGspLGMoZS5kdHJlZSxrLEUpfWZvcig7Oyl7dmFyIE49VVtnKGEsUykmbV07Uys9TiYxNTt2YXIgTT1OPj4+NDtpZighKE0+Pj44KSlzW3grK109TTtlbHNle2lmKE09PTI1NilicmVhazt2YXIgcT14K00tMjU0O2lmKE0+MjY0KXt2YXIgRz1lLmxkZWZbTS0yNTddO3E9eCsoRz4+PjMpK28oYSxTLEcmNyksUys9RyY3fXZhciBZPUVbZyhhLFMpJmJdO1MrPVkmMTU7dmFyIFQ9WT4+PjQsZ2U9ZS5kZGVmW1RdLHJlPShnZT4+PjQpK2goYSxTLGdlJjE1KTtmb3IoUys9Z2UmMTUsdCYmKHM9ci5GLl9jaGVjayhzLHgrKDE8PDE3KSkpO3g8cTspc1t4XT1zW3grKy1yZV0sc1t4XT1zW3grKy1yZV0sc1t4XT1zW3grKy1yZV0sc1t4XT1zW3grKy1yZV07eD1xfX19cmV0dXJuIHMubGVuZ3RoPT14P3M6cy5zbGljZSgwLHgpfSxyLkYuX2NoZWNrPWZ1bmN0aW9uKGEscyl7dmFyIGw9YS5sZW5ndGg7aWYoczw9bClyZXR1cm4gYTt2YXIgZD1uZXcgVWludDhBcnJheShNYXRoLm1heChsPDwxLHMpKTtyZXR1cm4gZC5zZXQoYSwwKSxkfSxyLkYuX2RlY29kZVRpbnk9ZnVuY3Rpb24oYSxzLGwsZCxoLG8pe2Zvcih2YXIgXz1yLkYuX2JpdHNFLHA9ci5GLl9nZXQxNyxjPTA7YzxsOyl7dmFyIGc9YVtwKGQsaCkmc107aCs9ZyYxNTt2YXIgZT1nPj4+NDtpZihlPD0xNSlvW2NdPWUsYysrO2Vsc2V7dmFyIHQ9MCxpPTA7ZT09MTY/KGk9MytfKGQsaCwyKSxoKz0yLHQ9b1tjLTFdKTplPT0xNz8oaT0zK18oZCxoLDMpLGgrPTMpOmU9PTE4JiYoaT0xMStfKGQsaCw3KSxoKz03KTtmb3IodmFyIGY9YytpO2M8Zjspb1tjXT10LGMrK319cmV0dXJuIGh9LHIuRi5fY29weU91dD1mdW5jdGlvbihhLHMsbCxkKXtmb3IodmFyIGg9MCxvPTAsXz1kLmxlbmd0aD4+PjE7bzxsOyl7dmFyIHA9YVtvK3NdO2Rbbzw8MV09MCxkWyhvPDwxKSsxXT1wLHA+aCYmKGg9cCksbysrfWZvcig7bzxfOylkW288PDFdPTAsZFsobzw8MSkrMV09MCxvKys7cmV0dXJuIGh9LHIuRi5tYWtlQ29kZXM9ZnVuY3Rpb24oYSxzKXtmb3IodmFyIGw9ci5GLlUsZD1hLmxlbmd0aCxoLG8sXyxwLGMsZz1sLmJsX2NvdW50LHA9MDtwPD1zO3ArKylnW3BdPTA7Zm9yKHA9MTtwPGQ7cCs9MilnW2FbcF1dKys7dmFyIGU9bC5uZXh0X2NvZGU7Zm9yKGg9MCxnWzBdPTAsbz0xO288PXM7bysrKWg9aCtnW28tMV08PDEsZVtvXT1oO2ZvcihfPTA7XzxkO18rPTIpYz1hW18rMV0sYyE9MCYmKGFbX109ZVtjXSxlW2NdKyspfSxyLkYuY29kZXMybWFwPWZ1bmN0aW9uKGEscyxsKXtmb3IodmFyIGQ9YS5sZW5ndGgsaD1yLkYuVSxvPWgucmV2MTUsXz0wO188ZDtfKz0yKWlmKGFbXysxXSE9MClmb3IodmFyIHA9Xz4+MSxjPWFbXysxXSxnPXA8PDR8YyxlPXMtYyx0PWFbX108PGUsaT10KygxPDxlKTt0IT1pOyl7dmFyIGY9b1t0XT4+PjE1LXM7bFtmXT1nLHQrK319LHIuRi5yZXZDb2Rlcz1mdW5jdGlvbihhLHMpe2Zvcih2YXIgbD1yLkYuVS5yZXYxNSxkPTE1LXMsaD0wO2g8YS5sZW5ndGg7aCs9Mil7dmFyIG89YVtoXTw8cy1hW2grMV07YVtoXT1sW29dPj4+ZH19LHIuRi5fcHV0c0U9ZnVuY3Rpb24oYSxzLGwpe2w9bDw8KHMmNyk7dmFyIGQ9cz4+PjM7YVtkXXw9bCxhW2QrMV18PWw+Pj44fSxyLkYuX3B1dHNGPWZ1bmN0aW9uKGEscyxsKXtsPWw8PChzJjcpO3ZhciBkPXM+Pj4zO2FbZF18PWwsYVtkKzFdfD1sPj4+OCxhW2QrMl18PWw+Pj4xNn0sci5GLl9iaXRzRT1mdW5jdGlvbihhLHMsbCl7cmV0dXJuKGFbcz4+PjNdfGFbKHM+Pj4zKSsxXTw8OCk+Pj4ocyY3KSYoMTw8bCktMX0sci5GLl9iaXRzRj1mdW5jdGlvbihhLHMsbCl7cmV0dXJuKGFbcz4+PjNdfGFbKHM+Pj4zKSsxXTw8OHxhWyhzPj4+MykrMl08PDE2KT4+PihzJjcpJigxPDxsKS0xfSxyLkYuX2dldDE3PWZ1bmN0aW9uKGEscyl7cmV0dXJuKGFbcz4+PjNdfGFbKHM+Pj4zKSsxXTw8OHxhWyhzPj4+MykrMl08PDE2KT4+PihzJjcpfSxyLkYuX2dldDI1PWZ1bmN0aW9uKGEscyl7cmV0dXJuKGFbcz4+PjNdfGFbKHM+Pj4zKSsxXTw8OHxhWyhzPj4+MykrMl08PDE2fGFbKHM+Pj4zKSszXTw8MjQpPj4+KHMmNyl9LHIuRi5VPWZ1bmN0aW9uKCl7dmFyIGE9VWludDE2QXJyYXkscz1VaW50MzJBcnJheTtyZXR1cm57bmV4dF9jb2RlOm5ldyBhKDE2KSxibF9jb3VudDpuZXcgYSgxNiksb3JkcjpbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0sb2YwOlszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4LDk5OSw5OTksOTk5XSxleGI6WzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMCwwLDAsMF0sbGRlZjpuZXcgYSgzMiksZGYwOlsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzcsNjU1MzUsNjU1MzVdLGR4YjpbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxMywwLDBdLGRkZWY6bmV3IHMoMzIpLGZsbWFwOm5ldyBhKDUxMiksZmx0cmVlOltdLGZkbWFwOm5ldyBhKDMyKSxmZHRyZWU6W10sbG1hcDpuZXcgYSgzMjc2OCksbHRyZWU6W10sdHRyZWU6W10sZG1hcDpuZXcgYSgzMjc2OCksZHRyZWU6W10saW1hcDpuZXcgYSg1MTIpLGl0cmVlOltdLHJldjE1Om5ldyBhKDMyNzY4KSxsaHN0Om5ldyBzKDI4NiksZGhzdDpuZXcgcygzMCksaWhzdDpuZXcgcygxOSksbGl0czpuZXcgcygxNWUzKSxzdHJ0Om5ldyBhKDY1NTM2KSxwcmV2Om5ldyBhKDMyNzY4KX19KCksZnVuY3Rpb24oKXtmb3IodmFyIGE9ci5GLlUscz0zMjc2OCxsPTA7bDxzO2wrKyl7dmFyIGQ9bDtkPShkJjI4NjMzMTE1MzApPj4+MXwoZCYxNDMxNjU1NzY1KTw8MSxkPShkJjM0MzU5NzM4MzYpPj4+MnwoZCY4NTg5OTM0NTkpPDwyLGQ9KGQmNDA0MjMyMjE2MCk+Pj40fChkJjI1MjY0NTEzNSk8PDQsZD0oZCY0Mjc4MjU1MzYwKT4+Pjh8KGQmMTY3MTE5MzUpPDw4LGEucmV2MTVbbF09KGQ+Pj4xNnxkPDwxNik+Pj4xN31mdW5jdGlvbiBoKG8sXyxwKXtmb3IoO18tLSE9MDspby5wdXNoKDAscCl9Zm9yKHZhciBsPTA7bDwzMjtsKyspYS5sZGVmW2xdPWEub2YwW2xdPDwzfGEuZXhiW2xdLGEuZGRlZltsXT1hLmRmMFtsXTw8NHxhLmR4YltsXTtoKGEuZmx0cmVlLDE0NCw4KSxoKGEuZmx0cmVlLDExMiw5KSxoKGEuZmx0cmVlLDI0LDcpLGgoYS5mbHRyZWUsOCw4KSxyLkYubWFrZUNvZGVzKGEuZmx0cmVlLDkpLHIuRi5jb2RlczJtYXAoYS5mbHRyZWUsOSxhLmZsbWFwKSxyLkYucmV2Q29kZXMoYS5mbHRyZWUsOSksaChhLmZkdHJlZSwzMiw1KSxyLkYubWFrZUNvZGVzKGEuZmR0cmVlLDUpLHIuRi5jb2RlczJtYXAoYS5mZHRyZWUsNSxhLmZkbWFwKSxyLkYucmV2Q29kZXMoYS5mZHRyZWUsNSksaChhLml0cmVlLDE5LDApLGgoYS5sdHJlZSwyODYsMCksaChhLmR0cmVlLDMwLDApLGgoYS50dHJlZSwzMjAsMCl9KCl9KShqdCk7dmFyIGlyPWp0LmV4cG9ydHMscnI9VnQoaXIpLEw9e2xvZzoibG9nIixkZWJ1ZzoiZGVidWciLGluZm86ImluZm8iLHdhcm46Indhcm4iLGVycm9yOiJlcnJvciJ9LFc9Y29uc29sZSxuZT17fTtPYmplY3Qua2V5cyhMKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe25lW25dPVdbbl19KTt2YXIgQ2U9IkRhdGFkb2cgQnJvd3NlciBTREs6Iix6PXtkZWJ1ZzpuZS5kZWJ1Zy5iaW5kKFcsQ2UpLGxvZzpuZS5sb2cuYmluZChXLENlKSxpbmZvOm5lLmluZm8uYmluZChXLENlKSx3YXJuOm5lLndhcm4uYmluZChXLENlKSxlcnJvcjpuZS5lcnJvci5iaW5kKFcsQ2UpfSxkdD0iaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20iLEt0PSIiLmNvbmNhdChkdCwiL3JlYWxfdXNlcl9tb25pdG9yaW5nL2Jyb3dzZXIvdHJvdWJsZXNob290aW5nIiksRGU9Ik1vcmUgZGV0YWlsczoiO2Z1bmN0aW9uIHF0KG4scil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBhPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKWFbc109YXJndW1lbnRzW3NdO3RyeXtyZXR1cm4gbi5hcHBseSh2b2lkIDAsYSl9Y2F0Y2gobCl7ei5lcnJvcihyLGwpfX19ZnVuY3Rpb24gTmUobil7cmV0dXJuIG4hPT0wJiZNYXRoLnJhbmRvbSgpKjEwMDw9bn1mdW5jdGlvbiBucihuKXtyZXR1cm4gc3IobikmJm4+PTAmJm48PTEwMH1mdW5jdGlvbiBzcihuKXtyZXR1cm4gdHlwZW9mIG49PSJudW1iZXIifXZhciBUZT0xZTMsc2U9NjAqVGUsb3I9NjAqc2U7ZnVuY3Rpb24gSWUoKXtyZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCl9ZnVuY3Rpb24gUSgpe3JldHVybiBJZSgpfWZ1bmN0aW9uIE1lKCl7cmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpfWZ1bmN0aW9uIGVlKCl7cmV0dXJue3JlbGF0aXZlOk1lKCksdGltZVN0YW1wOlEoKX19ZnVuY3Rpb24gYXIoKXtyZXR1cm57cmVsYXRpdmU6MCx0aW1lU3RhbXA6V3QoKX19ZnVuY3Rpb24gZnIobixyKXtyZXR1cm4gci1ufWZ1bmN0aW9uIGxyKG4scil7cmV0dXJuIG4rcn1mdW5jdGlvbiB1cihuKXtyZXR1cm4gbi1XdCgpfXZhciBodDtmdW5jdGlvbiBXdCgpe3JldHVybiBodD09PXZvaWQgMCYmKGh0PXBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQpLGh0fXZhciBYPTEwMjQsWHQ9MTAyNCpYLGRyPS9bXlx1MDAwMC1cdTAwN0ZdLztmdW5jdGlvbiBjdChuKXtyZXR1cm4gZHIudGVzdChuKT93aW5kb3cuVGV4dEVuY29kZXIhPT12b2lkIDA/bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKG4pLmxlbmd0aDpuZXcgQmxvYihbbl0pLnNpemU6bi5sZW5ndGh9ZnVuY3Rpb24geWUobixyKXtyZXR1cm4gbi5pbmRleE9mKHIpIT09LTF9ZnVuY3Rpb24gcHQobil7aWYoQXJyYXkuZnJvbSlyZXR1cm4gQXJyYXkuZnJvbShuKTt2YXIgcj1bXTtpZihuIGluc3RhbmNlb2YgU2V0KW4uZm9yRWFjaChmdW5jdGlvbihzKXtyZXR1cm4gci5wdXNoKHMpfSk7ZWxzZSBmb3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKylyLnB1c2goblthXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gaHIobixyKXtmb3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErPTEpe3ZhciBzPW5bYV07aWYocihzLGEpKXJldHVybiBzfX1mdW5jdGlvbiBtZShuKXtyZXR1cm4gT2JqZWN0LmtleXMobikubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBuW3JdfSl9ZnVuY3Rpb24gY3Iobil7cmV0dXJuIE9iamVjdC5rZXlzKG4pLm1hcChmdW5jdGlvbihyKXtyZXR1cm5bcixuW3JdXX0pfWZ1bmN0aW9uIF90KG4scil7cmV0dXJuIG4uc2xpY2UoMCxyLmxlbmd0aCk9PT1yfWZ1bmN0aW9uIHByKG4scil7cmV0dXJuIG4uc2xpY2UoLXIubGVuZ3RoKT09PXJ9ZnVuY3Rpb24gTyhuKXtmb3IodmFyIHI9W10sYT0xO2E8YXJndW1lbnRzLmxlbmd0aDthKyspclthLTFdPWFyZ3VtZW50c1thXTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKHMpe2Zvcih2YXIgbCBpbiBzKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLGwpJiYobltsXT1zW2xdKX0pLG59ZnVuY3Rpb24gX3Iobil7cmV0dXJuIE8oe30sbil9ZnVuY3Rpb24gSnQobixyKXtyZXR1cm4gT2JqZWN0LmtleXMobikuc29tZShmdW5jdGlvbihhKXtyZXR1cm4gblthXT09PXJ9KX1mdW5jdGlvbiB2dChuKXtyZXR1cm4gT2JqZWN0LmtleXMobikubGVuZ3RoPT09MH1mdW5jdGlvbiB0ZSgpe2lmKHR5cGVvZiBnbG9iYWxUaGlzPT0ib2JqZWN0IilyZXR1cm4gZ2xvYmFsVGhpcztPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwiX2RkX3RlbXBfIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBuPV9kZF90ZW1wXztyZXR1cm4gZGVsZXRlIE9iamVjdC5wcm90b3R5cGUuX2RkX3RlbXBfLHR5cGVvZiBuIT0ib2JqZWN0IiYmKHR5cGVvZiBzZWxmPT0ib2JqZWN0Ij9uPXNlbGY6dHlwZW9mIHdpbmRvdz09Im9iamVjdCI/bj13aW5kb3c6bj17fSksbn1mdW5jdGlvbiBiZShuLHIpe3ZhciBhPXRlKCkscztyZXR1cm4gYS5ab25lJiZ0eXBlb2YgYS5ab25lLl9fc3ltYm9sX189PSJmdW5jdGlvbiImJihzPW5bYS5ab25lLl9fc3ltYm9sX18ocildKSxzfHwocz1uW3JdKSxzfXZhciB2cj1mdW5jdGlvbihuLHIsYSl7aWYoYXx8YXJndW1lbnRzLmxlbmd0aD09PTIpZm9yKHZhciBzPTAsbD1yLmxlbmd0aCxkO3M8bDtzKyspKGR8fCEocyBpbiByKSkmJihkfHwoZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyLDAscykpLGRbc109cltzXSk7cmV0dXJuIG4uY29uY2F0KGR8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKX0sR2UsJHQ9ITE7ZnVuY3Rpb24gZ3Iobil7R2U9bn1mdW5jdGlvbiB5cihuKXskdD1ufWZ1bmN0aW9uIG1yKG4scixhKXt2YXIgcz1hLnZhbHVlO2EudmFsdWU9ZnVuY3Rpb24oKXtmb3IodmFyIGw9W10sZD0wO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspbFtkXT1hcmd1bWVudHNbZF07dmFyIGg9R2U/QihzKTpzO3JldHVybiBoLmFwcGx5KHRoaXMsbCl9fWZ1bmN0aW9uIEIobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEJlKG4sdGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBCZShuLHIsYSl7dHJ5e3JldHVybiBuLmFwcGx5KHIsYSl9Y2F0Y2gocyl7aWYoZ3QocyksR2UpdHJ5e0dlKHMpfWNhdGNoKGwpe2d0KGwpfX19ZnVuY3Rpb24gZ3QoKXtmb3IodmFyIG49W10scj0wO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyXT1hcmd1bWVudHNbcl07JHQmJnouZXJyb3IuYXBwbHkoeix2cihbIltNT05JVE9SXSJdLG4sITEpKX1mdW5jdGlvbiBGZShuLHIpe3JldHVybiBiZSh0ZSgpLCJzZXRUaW1lb3V0IikoQihuKSxyKX1mdW5jdGlvbiBadChuKXtiZSh0ZSgpLCJjbGVhclRpbWVvdXQiKShuKX1mdW5jdGlvbiB5dChuLHIpe3JldHVybiBiZSh0ZSgpLCJzZXRJbnRlcnZhbCIpKEIobikscil9ZnVuY3Rpb24gUXQobil7YmUodGUoKSwiY2xlYXJJbnRlcnZhbCIpKG4pfXZhciBSPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihyKXt0aGlzLm9uRmlyc3RTdWJzY3JpYmU9cix0aGlzLm9ic2VydmVycz1bXX1yZXR1cm4gbi5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKHIpe3ZhciBhPXRoaXM7cmV0dXJuIHRoaXMub2JzZXJ2ZXJzLnB1c2gociksdGhpcy5vYnNlcnZlcnMubGVuZ3RoPT09MSYmdGhpcy5vbkZpcnN0U3Vic2NyaWJlJiYodGhpcy5vbkxhc3RVbnN1YnNjcmliZT10aGlzLm9uRmlyc3RTdWJzY3JpYmUodGhpcyl8fHZvaWQgMCkse3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7YS5vYnNlcnZlcnM9YS5vYnNlcnZlcnMuZmlsdGVyKGZ1bmN0aW9uKHMpe3JldHVybiByIT09c30pLCFhLm9ic2VydmVycy5sZW5ndGgmJmEub25MYXN0VW5zdWJzY3JpYmUmJmEub25MYXN0VW5zdWJzY3JpYmUoKX19fSxuLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24ocil7dGhpcy5vYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYShyKX0pfSxufSgpO2Z1bmN0aW9uIGVpKCl7Zm9yKHZhciBuPVtdLHI9MDtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiBuZXcgUihmdW5jdGlvbihhKXt2YXIgcz1uLm1hcChmdW5jdGlvbihsKXtyZXR1cm4gbC5zdWJzY3JpYmUoZnVuY3Rpb24oZCl7cmV0dXJuIGEubm90aWZ5KGQpfSl9KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcy5mb3JFYWNoKGZ1bmN0aW9uKGwpe3JldHVybiBsLnVuc3Vic2NyaWJlKCl9KX19KX1mdW5jdGlvbiB0aShuLHIsYSl7dmFyIHM9ITEsbCxkO3JldHVybnt0aHJvdHRsZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGg9W10sbz0wO288YXJndW1lbnRzLmxlbmd0aDtvKyspaFtvXT1hcmd1bWVudHNbb107aWYocyl7bD1oO3JldHVybn1uLmFwcGx5KHZvaWQgMCxoKSxzPSEwLGQ9RmUoZnVuY3Rpb24oKXtsJiZuLmFwcGx5KHZvaWQgMCxsKSxzPSExLGw9dm9pZCAwfSxyKX0sY2FuY2VsOmZ1bmN0aW9uKCl7WnQoZCkscz0hMSxsPXZvaWQgMH19fWZ1bmN0aW9uIGllKCl7fWZ1bmN0aW9uIG9lKG4pe3JldHVybiBuPyhwYXJzZUludChuLDEwKV5NYXRoLnJhbmRvbSgpKjE2Pj5wYXJzZUludChuLDEwKS80KS50b1N0cmluZygxNik6IiIuY29uY2F0KDFlNywiLSIpLmNvbmNhdCgxZTMsIi0iKS5jb25jYXQoNGUzLCItIikuY29uY2F0KDhlMywiLSIpLmNvbmNhdCgxZTExKS5yZXBsYWNlKC9bMDE4XS9nLG9lKX12YXIgSGU9LyhbXHctXSspXHMqPVxzKihbXjtdKykvZztmdW5jdGlvbiBicihuLHIpe2ZvcihIZS5sYXN0SW5kZXg9MDs7KXt2YXIgYT1IZS5leGVjKG4pO2lmKGEpe2lmKGFbMV09PT1yKXJldHVybiBhWzJdfWVsc2UgYnJlYWt9fWZ1bmN0aW9uIFNyKG4pe3ZhciByPW5ldyBNYXA7Zm9yKEhlLmxhc3RJbmRleD0wOzspe3ZhciBhPUhlLmV4ZWMobik7aWYoYSlyLnNldChhWzFdLGFbMl0pO2Vsc2UgYnJlYWt9cmV0dXJuIHJ9ZnVuY3Rpb24geHIobixyLGEpe3ZhciBzPW4uY2hhckNvZGVBdChyLTEpLGw9cz49NTUyOTYmJnM8PTU2MzE5LGQ9bD9yKzE6cjtyZXR1cm4gbi5sZW5ndGg8PWQ/bjoiIi5jb25jYXQobi5zbGljZSgwLGQpKS5jb25jYXQoYSl9ZnVuY3Rpb24gVXIoKXtyZXR1cm4gd3IoKT09PTF9dmFyIFllO2Z1bmN0aW9uIHdyKCl7cmV0dXJuIFllPz8oWWU9RXIoKSl9ZnVuY3Rpb24gRXIobil7dmFyIHI7bj09PXZvaWQgMCYmKG49d2luZG93KTt2YXIgYT1uLm5hdmlnYXRvci51c2VyQWdlbnQ7cmV0dXJuIG4uY2hyb21lfHwvSGVhZGxlc3NDaHJvbWUvLnRlc3QoYSk/MTooKHI9bi5uYXZpZ2F0b3IudmVuZG9yKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIuaW5kZXhPZigiQXBwbGUiKSk9PT0wfHwvc2FmYXJpL2kudGVzdChhKSYmIS9jaHJvbWV8YW5kcm9pZC9pLnRlc3QoYSk/MjpuLmRvY3VtZW50LmRvY3VtZW50TW9kZT8wOjN9ZnVuY3Rpb24gTGUobixyLGEscyl7dmFyIGw9bmV3IERhdGU7bC5zZXRUaW1lKGwuZ2V0VGltZSgpK2EpO3ZhciBkPSJleHBpcmVzPSIuY29uY2F0KGwudG9VVENTdHJpbmcoKSksaD1zJiZzLmNyb3NzU2l0ZT8ibm9uZSI6InN0cmljdCIsbz1zJiZzLmRvbWFpbj8iO2RvbWFpbj0iLmNvbmNhdChzLmRvbWFpbik6IiIsXz1zJiZzLnNlY3VyZT8iO3NlY3VyZSI6IiIscD1zJiZzLnBhcnRpdGlvbmVkPyI7cGFydGl0aW9uZWQiOiIiO2RvY3VtZW50LmNvb2tpZT0iIi5jb25jYXQobiwiPSIpLmNvbmNhdChyLCI7IikuY29uY2F0KGQsIjtwYXRoPS87c2FtZXNpdGU9IikuY29uY2F0KGgpLmNvbmNhdChvKS5jb25jYXQoXykuY29uY2F0KHApfWZ1bmN0aW9uIG10KG4pe3JldHVybiBicihkb2N1bWVudC5jb29raWUsbil9dmFyIGJ0O2Z1bmN0aW9uIGFlKG4pe3JldHVybiBidHx8KGJ0PVNyKGRvY3VtZW50LmNvb2tpZSkpLGJ0LmdldChuKX1mdW5jdGlvbiBpaShuLHIpe0xlKG4sIiIsMCxyKX1mdW5jdGlvbiBBcihuKXtpZihkb2N1bWVudC5jb29raWU9PT12b2lkIDB8fGRvY3VtZW50LmNvb2tpZT09PW51bGwpcmV0dXJuITE7dHJ5e3ZhciByPSJkZF9jb29raWVfdGVzdF8iLmNvbmNhdChvZSgpKSxhPSJ0ZXN0IjtMZShyLGEsc2Usbik7dmFyIHM9bXQocik9PT1hO3JldHVybiBpaShyLG4pLHN9Y2F0Y2gobCl7cmV0dXJuIHouZXJyb3IobCksITF9fXZhciBTdDtmdW5jdGlvbiBDcigpe2lmKFN0PT09dm9pZCAwKXtmb3IodmFyIG49ImRkX3NpdGVfdGVzdF8iLmNvbmNhdChvZSgpKSxyPSJ0ZXN0IixhPXdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZS5zcGxpdCgiLiIpLHM9YS5wb3AoKTthLmxlbmd0aCYmIW10KG4pOylzPSIiLmNvbmNhdChhLnBvcCgpLCIuIikuY29uY2F0KHMpLExlKG4scixUZSx7ZG9tYWluOnN9KTtpaShuLHtkb21haW46c30pLFN0PXN9cmV0dXJuIFN0fXZhciBTZT0iX2RkX3MiLHh0PTQqb3Iscmk9MTUqc2Usbmk9L14oW2EtekEtWl0rKT0oW2EtejAtOS1dKykkLyxVdD0iJiIsVHI9IjEiO2Z1bmN0aW9uIGZlKCl7cmV0dXJue2lzRXhwaXJlZDpUcn19ZnVuY3Rpb24gVmUobil7cmV0dXJuIHZ0KG4pfWZ1bmN0aW9uIHNpKG4pe3JldHVybiFWZShuKX1mdW5jdGlvbiBqZShuKXtyZXR1cm4gbi5pc0V4cGlyZWQhPT12b2lkIDB8fCFJcihuKX1mdW5jdGlvbiBJcihuKXtyZXR1cm4obi5jcmVhdGVkPT09dm9pZCAwfHxJZSgpLU51bWJlcihuLmNyZWF0ZWQpPHh0KSYmKG4uZXhwaXJlPT09dm9pZCAwfHxJZSgpPE51bWJlcihuLmV4cGlyZSkpfWZ1bmN0aW9uIG9pKG4pe24uZXhwaXJlPVN0cmluZyhJZSgpK3JpKX1mdW5jdGlvbiB3dChuKXtyZXR1cm4gY3IobikubWFwKGZ1bmN0aW9uKHIpe3ZhciBhPXJbMF0scz1yWzFdO3JldHVybiIiLmNvbmNhdChhLCI9IikuY29uY2F0KHMpfSkuam9pbihVdCl9ZnVuY3Rpb24gYWkobil7dmFyIHI9e307cmV0dXJuIEJyKG4pJiZuLnNwbGl0KFV0KS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBzPW5pLmV4ZWMoYSk7aWYocyE9PW51bGwpe3ZhciBsPXNbMV0sZD1zWzJdO3JbbF09ZH19KSxyfWZ1bmN0aW9uIEJyKG4pe3JldHVybiEhbiYmKG4uaW5kZXhPZihVdCkhPT0tMXx8bmkudGVzdChuKSl9dmFyIEZyPSJfZGQiLExyPSJfZGRfciIsa3I9Il9kZF9sIix6cj0icnVtIixScj0ibG9ncyI7ZnVuY3Rpb24gT3Iobil7dmFyIHI9YWUoU2UpO2lmKCFyKXt2YXIgYT1hZShGcikscz1hZShMciksbD1hZShrciksZD17fTthJiYoZC5pZD1hKSxsJiYvXlswMV0kLy50ZXN0KGwpJiYoZFtScl09bCkscyYmL15bMDEyXSQvLnRlc3QocykmJihkW3pyXT1zKSxzaShkKSYmKG9pKGQpLG4ucGVyc2lzdFNlc3Npb24oZCkpfX1mdW5jdGlvbiBQcihuKXt2YXIgcj1IcihuKTtyZXR1cm4gQXIocik/e3R5cGU6IkNvb2tpZSIsY29va2llT3B0aW9uczpyfTp2b2lkIDB9ZnVuY3Rpb24gRHIobil7dmFyIHI9e2lzTG9ja0VuYWJsZWQ6VXIoKSxwZXJzaXN0U2Vzc2lvbjpOcihuKSxyZXRyaWV2ZVNlc3Npb246R3IsZXhwaXJlU2Vzc2lvbjpmdW5jdGlvbigpe3JldHVybiBNcihuKX19O3JldHVybiBPcihyKSxyfWZ1bmN0aW9uIE5yKG4pe3JldHVybiBmdW5jdGlvbihyKXtMZShTZSx3dChyKSxyaSxuKX19ZnVuY3Rpb24gTXIobil7TGUoU2Usd3QoZmUoKSkseHQsbil9ZnVuY3Rpb24gR3IoKXt2YXIgbj1tdChTZSk7cmV0dXJuIGFpKG4pfWZ1bmN0aW9uIEhyKG4pe3ZhciByPXt9O3JldHVybiByLnNlY3VyZT0hIW4udXNlU2VjdXJlU2Vzc2lvbkNvb2tpZXx8ISFuLnVzZVBhcnRpdGlvbmVkQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZXx8ISFuLnVzZUNyb3NzU2l0ZVNlc3Npb25Db29raWUsci5jcm9zc1NpdGU9ISFuLnVzZVBhcnRpdGlvbmVkQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZXx8ISFuLnVzZUNyb3NzU2l0ZVNlc3Npb25Db29raWUsci5wYXJ0aXRpb25lZD0hIW4udXNlUGFydGl0aW9uZWRDcm9zc1NpdGVTZXNzaW9uQ29va2llLG4udHJhY2tTZXNzaW9uQWNyb3NzU3ViZG9tYWlucyYmKHIuZG9tYWluPUNyKCkpLHJ9dmFyIFlyPSJfZGRfdGVzdF8iO2Z1bmN0aW9uIFZyKCl7dHJ5e3ZhciBuPW9lKCkscj0iIi5jb25jYXQoWXIpLmNvbmNhdChuKTtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShyLG4pO3ZhciBhPWxvY2FsU3RvcmFnZS5nZXRJdGVtKHIpO3JldHVybiBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShyKSxuPT09YT97dHlwZToiTG9jYWxTdG9yYWdlIn06dm9pZCAwfWNhdGNoe3JldHVybn19ZnVuY3Rpb24ganIoKXtyZXR1cm57aXNMb2NrRW5hYmxlZDohMSxwZXJzaXN0U2Vzc2lvbjpmaSxyZXRyaWV2ZVNlc3Npb246S3IsZXhwaXJlU2Vzc2lvbjpxcn19ZnVuY3Rpb24gZmkobil7bG9jYWxTdG9yYWdlLnNldEl0ZW0oU2Usd3QobikpfWZ1bmN0aW9uIEtyKCl7dmFyIG49bG9jYWxTdG9yYWdlLmdldEl0ZW0oU2UpO3JldHVybiBhaShuKX1mdW5jdGlvbiBxcigpe2ZpKGZlKCkpfXZhciBXcj0xMCxYcj0xMDAsbGk9W10sS2U7ZnVuY3Rpb24gbGUobixyLGEpe3ZhciBzO2E9PT12b2lkIDAmJihhPTApO3ZhciBsPXIuaXNMb2NrRW5hYmxlZCxkPXIucGVyc2lzdFNlc3Npb24saD1yLmV4cGlyZVNlc3Npb24sbz1mdW5jdGlvbihlKXtyZXR1cm4gZChPKHt9LGUse2xvY2s6cH0pKX0sXz1mdW5jdGlvbigpe3ZhciBlPXIucmV0cmlldmVTZXNzaW9uKCksdD1lLmxvY2s7cmV0dXJuIGUubG9jayYmZGVsZXRlIGUubG9jayx7c2Vzc2lvbjplLGxvY2s6dH19O2lmKEtlfHwoS2U9biksbiE9PUtlKXtsaS5wdXNoKG4pO3JldHVybn1pZihsJiZhPj1Ycil7dWkocik7cmV0dXJufXZhciBwLGM9XygpO2lmKGwpe2lmKGMubG9jayl7cWUobixyLGEpO3JldHVybn1pZihwPW9lKCksbyhjLnNlc3Npb24pLGM9XygpLGMubG9jayE9PXApe3FlKG4scixhKTtyZXR1cm59fXZhciBnPW4ucHJvY2VzcyhjLnNlc3Npb24pO2lmKGwmJihjPV8oKSxjLmxvY2shPT1wKSl7cWUobixyLGEpO3JldHVybn1pZihnJiYoamUoZyk/aCgpOihvaShnKSxsP28oZyk6ZChnKSkpLGwmJiEoZyYmamUoZykpKXtpZihjPV8oKSxjLmxvY2shPT1wKXtxZShuLHIsYSk7cmV0dXJufWQoYy5zZXNzaW9uKSxnPWMuc2Vzc2lvbn0ocz1uLmFmdGVyKT09PW51bGx8fHM9PT12b2lkIDB8fHMuY2FsbChuLGd8fGMuc2Vzc2lvbiksdWkocil9ZnVuY3Rpb24gcWUobixyLGEpe0ZlKGZ1bmN0aW9uKCl7bGUobixyLGErMSl9LFdyKX1mdW5jdGlvbiB1aShuKXtLZT12b2lkIDA7dmFyIHI9bGkuc2hpZnQoKTtyJiZsZShyLG4pfXZhciBkaT1UZTtmdW5jdGlvbiBKcihuKXt2YXIgcj1QcihuKTtyZXR1cm4hciYmbi5hbGxvd0ZhbGxiYWNrVG9Mb2NhbFN0b3JhZ2UmJihyPVZyKCkpLHJ9ZnVuY3Rpb24gJHIobixyLGEpe3ZhciBzPW5ldyBSLGw9bmV3IFIsZD1uZXcgUixoPW4udHlwZT09PSJDb29raWUiP0RyKG4uY29va2llT3B0aW9ucyk6anIoKSxvPWguZXhwaXJlU2Vzc2lvbixfPXl0KGksZGkpLHA7dSgpO3ZhciBjPXRpKGZ1bmN0aW9uKCl7bGUoe3Byb2Nlc3M6ZnVuY3Rpb24oVSl7aWYoIVZlKFUpKXt2YXIgRT1mKFUpO3JldHVybiB2KEUpLEV9fSxhZnRlcjpmdW5jdGlvbihVKXtzaShVKSYmIXkoKSYmeChVKSxwPVV9fSxoKX0sZGkpLGc9Yy50aHJvdHRsZWQsZT1jLmNhbmNlbDtmdW5jdGlvbiB0KCl7bGUoe3Byb2Nlc3M6ZnVuY3Rpb24oVSl7cmV0dXJuIHkoKT9mKFUpOnZvaWQgMH19LGgpfWZ1bmN0aW9uIGkoKXtsZSh7cHJvY2VzczpmdW5jdGlvbihVKXtyZXR1cm4gamUoVSk/ZmUoKTp2b2lkIDB9LGFmdGVyOmZ9LGgpfWZ1bmN0aW9uIGYoVSl7cmV0dXJuIGplKFUpJiYoVT1mZSgpKSx5KCkmJihtKFUpP2IoKTooZC5ub3RpZnkoe3ByZXZpb3VzU3RhdGU6cCxuZXdTdGF0ZTpVfSkscD1VKSksVX1mdW5jdGlvbiB1KCl7bGUoe3Byb2Nlc3M6ZnVuY3Rpb24oVSl7aWYoVmUoVSkpcmV0dXJuIGZlKCl9LGFmdGVyOmZ1bmN0aW9uKFUpe3A9VX19LGgpfWZ1bmN0aW9uIHYoVSl7aWYoVmUoVSkpcmV0dXJuITE7dmFyIEU9YShVW3JdKSx3PUUudHJhY2tpbmdUeXBlLEE9RS5pc1RyYWNrZWQ7VVtyXT13LGRlbGV0ZSBVLmlzRXhwaXJlZCxBJiYhVS5pZCYmKFUuaWQ9b2UoKSxVLmNyZWF0ZWQ9U3RyaW5nKEllKCkpKX1mdW5jdGlvbiB5KCl7cmV0dXJuIHBbcl0hPT12b2lkIDB9ZnVuY3Rpb24gbShVKXtyZXR1cm4gcC5pZCE9PVUuaWR8fHBbcl0hPT1VW3JdfWZ1bmN0aW9uIGIoKXtwPWZlKCksbC5ub3RpZnkoKX1mdW5jdGlvbiB4KFUpe3A9VSxzLm5vdGlmeSgpfWZ1bmN0aW9uIFMoVSl7bGUoe3Byb2Nlc3M6ZnVuY3Rpb24oRSl7cmV0dXJuIE8oe30sRSxVKX0sYWZ0ZXI6Zn0saCl9cmV0dXJue2V4cGFuZE9yUmVuZXdTZXNzaW9uOmcsZXhwYW5kU2Vzc2lvbjp0LGdldFNlc3Npb246ZnVuY3Rpb24oKXtyZXR1cm4gcH0scmVuZXdPYnNlcnZhYmxlOnMsZXhwaXJlT2JzZXJ2YWJsZTpsLHNlc3Npb25TdGF0ZVVwZGF0ZU9ic2VydmFibGU6ZCxyZXN0YXJ0U2Vzc2lvbjp1LGV4cGlyZTpmdW5jdGlvbigpe2UoKSxvKCksZihmZSgpKX0sc3RvcDpmdW5jdGlvbigpe1F0KF8pfSx1cGRhdGVTZXNzaW9uU3RhdGU6U319dmFyIEV0PXtHUkFOVEVEOiJncmFudGVkIixOT1RfR1JBTlRFRDoibm90LWdyYW50ZWQifTtmdW5jdGlvbiBacihuKXt2YXIgcj1uZXcgUjtyZXR1cm57dHJ5VG9Jbml0OmZ1bmN0aW9uKGEpe258fChuPWEpfSx1cGRhdGU6ZnVuY3Rpb24oYSl7bj1hLHIubm90aWZ5KCl9LGlzR3JhbnRlZDpmdW5jdGlvbigpe3JldHVybiBuPT09RXQuR1JBTlRFRH0sb2JzZXJ2YWJsZTpyfX1mdW5jdGlvbiB1ZShuLHIsYSl7aWYodHlwZW9mIG4hPSJvYmplY3QifHxuPT09bnVsbClyZXR1cm4gSlNPTi5zdHJpbmdpZnkobik7dmFyIHM9eGUoT2JqZWN0LnByb3RvdHlwZSksbD14ZShBcnJheS5wcm90b3R5cGUpLGQ9eGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG4pKSxoPXhlKG4pO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkobixyLGEpfWNhdGNoe3JldHVybiI8ZXJyb3I6IHVuYWJsZSB0byBzZXJpYWxpemUgb2JqZWN0PiJ9ZmluYWxseXtzKCksbCgpLGQoKSxoKCl9fWZ1bmN0aW9uIHhlKG4pe3ZhciByPW4sYT1yLnRvSlNPTjtyZXR1cm4gYT8oZGVsZXRlIHIudG9KU09OLGZ1bmN0aW9uKCl7ci50b0pTT049YX0pOmllfWZ1bmN0aW9uIEF0KG4pe3JldHVybiBRcihuLGxvY2F0aW9uLmhyZWYpLmhyZWZ9ZnVuY3Rpb24gUXIobixyKXt2YXIgYT1lbigpO2lmKGEpdHJ5e3JldHVybiByIT09dm9pZCAwP25ldyBhKG4scik6bmV3IGEobil9Y2F0Y2goaCl7dGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY29uc3RydWN0IFVSTDogIi5jb25jYXQoU3RyaW5nKGgpLCIgIikuY29uY2F0KHVlKHt1cmw6bixiYXNlOnJ9KSkpfWlmKHI9PT12b2lkIDAmJiEvOi8udGVzdChuKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgVVJMOiAnIi5jb25jYXQobiwiJyIpKTt2YXIgcz1kb2N1bWVudCxsPXMuY3JlYXRlRWxlbWVudCgiYSIpO2lmKHIhPT12b2lkIDApe3M9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKTt2YXIgZD1zLmNyZWF0ZUVsZW1lbnQoImJhc2UiKTtkLmhyZWY9cixzLmhlYWQuYXBwZW5kQ2hpbGQoZCkscy5ib2R5LmFwcGVuZENoaWxkKGwpfXJldHVybiBsLmhyZWY9bixsfXZhciBoaT1VUkwsV2U7ZnVuY3Rpb24gZW4oKXtpZihXZT09PXZvaWQgMCl0cnl7dmFyIG49bmV3IGhpKCJodHRwOi8vdGVzdC9wYXRoIik7V2U9bi5ocmVmPT09Imh0dHA6Ly90ZXN0L3BhdGgifWNhdGNoe1dlPSExfXJldHVybiBXZT9oaTp2b2lkIDB9dmFyIHRuPSJkYXRhZDBnLmNvbSIscm49ImRkMGctZ292LmNvbSIsZGU9ImRhdGFkb2docS5jb20iLG5uPSJkZG9nLWdvdi5jb20iLGNpPSJwY2kuYnJvd3Nlci1pbnRha2UtZGF0YWRvZ2hxLmNvbSI7ZnVuY3Rpb24ga2UobixyLGEpe3ZhciBzPXNuKG4scik7cmV0dXJue2J1aWxkOmZ1bmN0aW9uKGwsZCl7dmFyIGg9YW4obixyLGEsbCxkKTtyZXR1cm4gcyhoKX0sdXJsUHJlZml4OnMoIiIpLHRyYWNrVHlwZTpyfX1mdW5jdGlvbiBzbihuLHIpe3ZhciBhPSIvYXBpL3YyLyIuY29uY2F0KHIpLHM9bi5wcm94eTtpZih0eXBlb2Ygcz09InN0cmluZyIpe3ZhciBsPUF0KHMpO3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4iIi5jb25jYXQobCwiP2RkZm9yd2FyZD0iKS5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KCIiLmNvbmNhdChhLCI/IikuY29uY2F0KGgpKSl9fWlmKHR5cGVvZiBzPT0iZnVuY3Rpb24iKXJldHVybiBmdW5jdGlvbihoKXtyZXR1cm4gcyh7cGF0aDphLHBhcmFtZXRlcnM6aH0pfTt2YXIgZD1vbihyLG4pO3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4iaHR0cHM6Ly8iLmNvbmNhdChkKS5jb25jYXQoYSwiPyIpLmNvbmNhdChoKX19ZnVuY3Rpb24gb24obixyKXt2YXIgYT1yLnNpdGUscz1hPT09dm9pZCAwP2RlOmEsbD1yLmludGVybmFsQW5hbHl0aWNzU3ViZG9tYWluO2lmKG49PT0ibG9ncyImJnIudXNlUGNpSW50YWtlJiZzPT09ZGUpcmV0dXJuIGNpO2lmKGwmJnM9PT1kZSlyZXR1cm4iIi5jb25jYXQobCwiLiIpLmNvbmNhdChkZSk7aWYocz09PXJuKXJldHVybiJodHRwLWludGFrZS5sb2dzLiIuY29uY2F0KHMpO3ZhciBkPXMuc3BsaXQoIi4iKSxoPWQucG9wKCk7cmV0dXJuImJyb3dzZXItaW50YWtlLSIuY29uY2F0KGQuam9pbigiLSIpLCIuIikuY29uY2F0KGgpfWZ1bmN0aW9uIGFuKG4scixhLHMsbCl7dmFyIGQ9bi5jbGllbnRUb2tlbixoPW4uaW50ZXJuYWxBbmFseXRpY3NTdWJkb21haW4sbz1sLnJldHJ5LF89bC5lbmNvZGluZyxwPVsic2RrX3ZlcnNpb246Ii5jb25jYXQoIjUuMjkuMSIpLCJhcGk6Ii5jb25jYXQocyldLmNvbmNhdChhKTtvJiZwLnB1c2goInJldHJ5X2NvdW50OiIuY29uY2F0KG8uY291bnQpLCJyZXRyeV9hZnRlcjoiLmNvbmNhdChvLmxhc3RGYWlsdXJlU3RhdHVzKSk7dmFyIGM9WyJkZHNvdXJjZT1icm93c2VyIiwiZGR0YWdzPSIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChwLmpvaW4oIiwiKSkpLCJkZC1hcGkta2V5PSIuY29uY2F0KGQpLCJkZC1ldnAtb3JpZ2luLXZlcnNpb249Ii5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KCI1LjI5LjEiKSksImRkLWV2cC1vcmlnaW49YnJvd3NlciIsImRkLXJlcXVlc3QtaWQ9Ii5jb25jYXQob2UoKSldO3JldHVybiBfJiZjLnB1c2goImRkLWV2cC1lbmNvZGluZz0iLmNvbmNhdChfKSkscj09PSJydW0iJiZjLnB1c2goImJhdGNoX3RpbWU9Ii5jb25jYXQoUSgpKSksaCYmYy5yZXZlcnNlKCksYy5qb2luKCImIil9dmFyIGZuPTIwMDtmdW5jdGlvbiBsbihuKXt2YXIgcj1uLmVudixhPW4uc2VydmljZSxzPW4udmVyc2lvbixsPW4uZGF0YWNlbnRlcixkPVtdO3JldHVybiByJiZkLnB1c2goWGUoImVudiIscikpLGEmJmQucHVzaChYZSgic2VydmljZSIsYSkpLHMmJmQucHVzaChYZSgidmVyc2lvbiIscykpLGwmJmQucHVzaChYZSgiZGF0YWNlbnRlciIsbCkpLGR9ZnVuY3Rpb24gWGUobixyKXt2YXIgYT1mbi1uLmxlbmd0aC0xOyhyLmxlbmd0aD5hfHx1bihyKSkmJnoud2FybigiIi5jb25jYXQobiwiIHZhbHVlIGRvZXNuJ3QgbWVldCB0YWcgcmVxdWlyZW1lbnRzIGFuZCB3aWxsIGJlIHNhbml0aXplZC4gIikuY29uY2F0KERlLCIgIikuY29uY2F0KGR0LCIvZ2V0dGluZ19zdGFydGVkL3RhZ2dpbmcvI2RlZmluaW5nLXRhZ3MiKSk7dmFyIHM9ci5yZXBsYWNlKC8sL2csIl8iKTtyZXR1cm4iIi5jb25jYXQobiwiOiIpLmNvbmNhdChzKX1mdW5jdGlvbiB1bihuKXtyZXR1cm4gZG4oKT9uZXcgUmVnRXhwKCJbXlxccHtMbH1cXHB7TG99MC05XzouLy1dIiwidSIpLnRlc3Qobik6ITF9ZnVuY3Rpb24gZG4oKXt0cnl7cmV0dXJuIG5ldyBSZWdFeHAoIltcXHB7TGx9XSIsInUiKSwhMH1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gaG4obil7dmFyIHI9bi5zaXRlfHxkZSxhPWxuKG4pLHM9Y24obixhKSxsPV9uKHMsciksZD1wbihuLGwsYSk7cmV0dXJuIE8oe2lzSW50YWtlVXJsOmZ1bmN0aW9uKGgpe3JldHVybiBsLnNvbWUoZnVuY3Rpb24obyl7cmV0dXJuIGguaW5kZXhPZihvKT09PTB9KX0scmVwbGljYTpkLHNpdGU6cn0scyl9ZnVuY3Rpb24gY24obixyKXtyZXR1cm57bG9nc0VuZHBvaW50QnVpbGRlcjprZShuLCJsb2dzIixyKSxydW1FbmRwb2ludEJ1aWxkZXI6a2UobiwicnVtIixyKSxzZXNzaW9uUmVwbGF5RW5kcG9pbnRCdWlsZGVyOmtlKG4sInJlcGxheSIscil9fWZ1bmN0aW9uIHBuKG4scixhKXtpZihuLnJlcGxpY2Epe3ZhciBzPU8oe30sbix7c2l0ZTpkZSxjbGllbnRUb2tlbjpuLnJlcGxpY2EuY2xpZW50VG9rZW59KSxsPXtsb2dzRW5kcG9pbnRCdWlsZGVyOmtlKHMsImxvZ3MiLGEpLHJ1bUVuZHBvaW50QnVpbGRlcjprZShzLCJydW0iLGEpfTtyZXR1cm4gci5wdXNoLmFwcGx5KHIsbWUobCkubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkLnVybFByZWZpeH0pKSxPKHthcHBsaWNhdGlvbklkOm4ucmVwbGljYS5hcHBsaWNhdGlvbklkfSxsKX19ZnVuY3Rpb24gX24obixyKXt2YXIgYT1tZShuKS5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIHMudXJsUHJlZml4fSk7cmV0dXJuIHI9PT1kZSYmYS5wdXNoKCJodHRwczovLyIuY29uY2F0KGNpLCIvIikpLGF9ZnVuY3Rpb24gQ3QobixyKXtyZXR1cm4gbiE9bnVsbCYmdHlwZW9mIG4hPSJzdHJpbmciPyh6LmVycm9yKCIiLmNvbmNhdChyLCIgbXVzdCBiZSBkZWZpbmVkIGFzIGEgc3RyaW5nIikpLCExKTohMH1mdW5jdGlvbiB2bihuKXtyZXR1cm4gbiYmdHlwZW9mIG49PSJzdHJpbmciJiYhLyhkYXRhZG9nfGRkb2d8ZGF0YWQwZ3xkZDBnKS8udGVzdChuKT8oei5lcnJvcigiU2l0ZSBzaG91bGQgYmUgYSB2YWxpZCBEYXRhZG9nIHNpdGUuICIuY29uY2F0KERlLCIgIikuY29uY2F0KGR0LCIvZ2V0dGluZ19zdGFydGVkL3NpdGUvLiIpKSwhMSk6ITB9ZnVuY3Rpb24gSmUobixyKXtyZXR1cm4gbiE9PXZvaWQgMCYmIW5yKG4pPyh6LmVycm9yKCIiLmNvbmNhdChyLCIgU2FtcGxlIFJhdGUgc2hvdWxkIGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAwIikpLCExKTohMH1mdW5jdGlvbiBnbihuKXt2YXIgcixhLHMsbCxkO2lmKCFufHwhbi5jbGllbnRUb2tlbil7ei5lcnJvcigiQ2xpZW50IFRva2VuIGlzIG5vdCBjb25maWd1cmVkLCB3ZSB3aWxsIG5vdCBzZW5kIGFueSBkYXRhLiIpO3JldHVybn1pZighKCF2bihuLnNpdGUpfHwhSmUobi5zZXNzaW9uU2FtcGxlUmF0ZSwiU2Vzc2lvbiIpfHwhSmUobi50ZWxlbWV0cnlTYW1wbGVSYXRlLCJUZWxlbWV0cnkiKXx8IUplKG4udGVsZW1ldHJ5Q29uZmlndXJhdGlvblNhbXBsZVJhdGUsIlRlbGVtZXRyeSBDb25maWd1cmF0aW9uIil8fCFKZShuLnRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZSwiVGVsZW1ldHJ5IFVzYWdlIil8fCFDdChuLnZlcnNpb24sIlZlcnNpb24iKXx8IUN0KG4uZW52LCJFbnYiKXx8IUN0KG4uc2VydmljZSwiU2VydmljZSIpKSl7aWYobi50cmFja2luZ0NvbnNlbnQhPT12b2lkIDAmJiFKdChFdCxuLnRyYWNraW5nQ29uc2VudCkpe3ouZXJyb3IoJ1RyYWNraW5nIENvbnNlbnQgc2hvdWxkIGJlIGVpdGhlciAiZ3JhbnRlZCIgb3IgIm5vdC1ncmFudGVkIicpO3JldHVybn1yZXR1cm4gTyh7YmVmb3JlU2VuZDpuLmJlZm9yZVNlbmQmJnF0KG4uYmVmb3JlU2VuZCwiYmVmb3JlU2VuZCB0aHJldyBhbiBlcnJvcjoiKSxzZXNzaW9uU3RvcmVTdHJhdGVneVR5cGU6SnIobiksc2Vzc2lvblNhbXBsZVJhdGU6KHI9bi5zZXNzaW9uU2FtcGxlUmF0ZSkhPT1udWxsJiZyIT09dm9pZCAwP3I6MTAwLHRlbGVtZXRyeVNhbXBsZVJhdGU6KGE9bi50ZWxlbWV0cnlTYW1wbGVSYXRlKSE9PW51bGwmJmEhPT12b2lkIDA/YToyMCx0ZWxlbWV0cnlDb25maWd1cmF0aW9uU2FtcGxlUmF0ZToocz1uLnRlbGVtZXRyeUNvbmZpZ3VyYXRpb25TYW1wbGVSYXRlKSE9PW51bGwmJnMhPT12b2lkIDA/czo1LHRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZToobD1uLnRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZSkhPT1udWxsJiZsIT09dm9pZCAwP2w6NSxzZXJ2aWNlOm4uc2VydmljZXx8dm9pZCAwLHNpbGVudE11bHRpcGxlSW5pdDohIW4uc2lsZW50TXVsdGlwbGVJbml0LGFsbG93VW50cnVzdGVkRXZlbnRzOiEhbi5hbGxvd1VudHJ1c3RlZEV2ZW50cyx0cmFja2luZ0NvbnNlbnQ6KGQ9bi50cmFja2luZ0NvbnNlbnQpIT09bnVsbCYmZCE9PXZvaWQgMD9kOkV0LkdSQU5URUQsc3RvcmVDb250ZXh0c0Fjcm9zc1BhZ2VzOiEhbi5zdG9yZUNvbnRleHRzQWNyb3NzUGFnZXMsYmF0Y2hCeXRlc0xpbWl0OjE2KlgsZXZlbnRSYXRlTGltaXRlclRocmVzaG9sZDozZTMsbWF4VGVsZW1ldHJ5RXZlbnRzUGVyUGFnZToxNSxmbHVzaFRpbWVvdXQ6MzAqVGUsYmF0Y2hNZXNzYWdlc0xpbWl0OjUwLG1lc3NhZ2VCeXRlc0xpbWl0OjI1NipYfSxobihuKSl9fWZ1bmN0aW9uIHluKG4pe3JldHVybntzZXNzaW9uX3NhbXBsZV9yYXRlOm4uc2Vzc2lvblNhbXBsZVJhdGUsdGVsZW1ldHJ5X3NhbXBsZV9yYXRlOm4udGVsZW1ldHJ5U2FtcGxlUmF0ZSx0ZWxlbWV0cnlfY29uZmlndXJhdGlvbl9zYW1wbGVfcmF0ZTpuLnRlbGVtZXRyeUNvbmZpZ3VyYXRpb25TYW1wbGVSYXRlLHRlbGVtZXRyeV91c2FnZV9zYW1wbGVfcmF0ZTpuLnRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZSx1c2VfYmVmb3JlX3NlbmQ6ISFuLmJlZm9yZVNlbmQsdXNlX2Nyb3NzX3NpdGVfc2Vzc2lvbl9jb29raWU6bi51c2VDcm9zc1NpdGVTZXNzaW9uQ29va2llLHVzZV9wYXJ0aXRpb25lZF9jcm9zc19zaXRlX3Nlc3Npb25fY29va2llOm4udXNlUGFydGl0aW9uZWRDcm9zc1NpdGVTZXNzaW9uQ29va2llLHVzZV9zZWN1cmVfc2Vzc2lvbl9jb29raWU6bi51c2VTZWN1cmVTZXNzaW9uQ29va2llLHVzZV9wcm94eTohIW4ucHJveHksc2lsZW50X211bHRpcGxlX2luaXQ6bi5zaWxlbnRNdWx0aXBsZUluaXQsdHJhY2tfc2Vzc2lvbl9hY3Jvc3Nfc3ViZG9tYWluczpuLnRyYWNrU2Vzc2lvbkFjcm9zc1N1YmRvbWFpbnMsYWxsb3dfZmFsbGJhY2tfdG9fbG9jYWxfc3RvcmFnZTohIW4uYWxsb3dGYWxsYmFja1RvTG9jYWxTdG9yYWdlLHN0b3JlX2NvbnRleHRzX2Fjcm9zc19wYWdlczohIW4uc3RvcmVDb250ZXh0c0Fjcm9zc1BhZ2VzLGFsbG93X3VudHJ1c3RlZF9ldmVudHM6ISFuLmFsbG93VW50cnVzdGVkRXZlbnRzLHRyYWNraW5nX2NvbnNlbnQ6bi50cmFja2luZ0NvbnNlbnR9fXZhciBUdDsoZnVuY3Rpb24obil7bi5XUklUQUJMRV9SRVNPVVJDRV9HUkFQSFFMPSJ3cml0YWJsZV9yZXNvdXJjZV9ncmFwaHFsIixuLlJFTU9URV9DT05GSUdVUkFUSU9OPSJyZW1vdGVfY29uZmlndXJhdGlvbiIsbi5VUERBVEVfVklFV19OQU1FPSJ1cGRhdGVfdmlld19uYW1lIixuLkxPTkdfQU5JTUFUSU9OX0ZSQU1FPSJsb25nX2FuaW1hdGlvbl9mcmFtZSJ9KShUdHx8KFR0PXt9KSk7dmFyIHBpPW5ldyBTZXQ7ZnVuY3Rpb24gbW4obil7QXJyYXkuaXNBcnJheShuKSYmYm4obi5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIEp0KFR0LHIpfSkpfWZ1bmN0aW9uIGJuKG4pe24uZm9yRWFjaChmdW5jdGlvbihyKXtwaS5hZGQocil9KX1mdW5jdGlvbiBTbigpe3JldHVybiBwaX12YXIgemU9Ij8iO2Z1bmN0aW9uIEoobil7dmFyIHI9W10sYT1JdChuLCJzdGFjayIpLHM9U3RyaW5nKG4pO3JldHVybiBhJiZfdChhLHMpJiYoYT1hLnNsaWNlKHMubGVuZ3RoKSksYSYmYS5zcGxpdChgCmApLmZvckVhY2goZnVuY3Rpb24obCl7dmFyIGQ9d24obCl8fEFuKGwpfHxUbihsKXx8Rm4obCk7ZCYmKCFkLmZ1bmMmJmQubGluZSYmKGQuZnVuYz16ZSksci5wdXNoKGQpKX0pLHttZXNzYWdlOkl0KG4sIm1lc3NhZ2UiKSxuYW1lOkl0KG4sIm5hbWUiKSxzdGFjazpyfX12YXIgX2k9IigoPzpmaWxlfGh0dHBzP3xibG9ifGNocm9tZS1leHRlbnNpb258bmF0aXZlfGV2YWx8d2VicGFja3xzbmlwcGV0fDxhbm9ueW1vdXM+fFxcdytcXC58XFwvKS4qPykiLFVlPSIoPzo6KFxcZCspKSIseG49bmV3IFJlZ0V4cCgiXlxccyphdCAoLio/KSA/XFwoIi5jb25jYXQoX2kpLmNvbmNhdChVZSwiPyIpLmNvbmNhdChVZSwiP1xcKT9cXHMqJCIpLCJpIiksVW49bmV3IFJlZ0V4cCgiXFwoKFxcUyopIi5jb25jYXQoVWUpLmNvbmNhdChVZSwiXFwpIikpO2Z1bmN0aW9uIHduKG4pe3ZhciByPXhuLmV4ZWMobik7aWYocil7dmFyIGE9clsyXSYmclsyXS5pbmRleE9mKCJuYXRpdmUiKT09PTAscz1yWzJdJiZyWzJdLmluZGV4T2YoImV2YWwiKT09PTAsbD1Vbi5leGVjKHJbMl0pO3JldHVybiBzJiZsJiYoclsyXT1sWzFdLHJbM109bFsyXSxyWzRdPWxbM10pLHthcmdzOmE/W3JbMl1dOltdLGNvbHVtbjpyWzRdPytyWzRdOnZvaWQgMCxmdW5jOnJbMV18fHplLGxpbmU6clszXT8rclszXTp2b2lkIDAsdXJsOmE/dm9pZCAwOnJbMl19fX12YXIgRW49bmV3IFJlZ0V4cCgiXlxccyphdCA/Ii5jb25jYXQoX2kpLmNvbmNhdChVZSwiPyIpLmNvbmNhdChVZSwiPz9cXHMqJCIpLCJpIik7ZnVuY3Rpb24gQW4obil7dmFyIHI9RW4uZXhlYyhuKTtpZihyKXJldHVybnthcmdzOltdLGNvbHVtbjpyWzNdPytyWzNdOnZvaWQgMCxmdW5jOnplLGxpbmU6clsyXT8rclsyXTp2b2lkIDAsdXJsOnJbMV19fXZhciBDbj0vXlxzKmF0ICg/OigoPzpcW29iamVjdCBvYmplY3RcXSk/LispICk/XCg/KCg/OmZpbGV8bXMtYXBweHxodHRwcz98d2VicGFja3xibG9iKTouKj8pOihcZCspKD86OihcZCspKT9cKT9ccyokL2k7ZnVuY3Rpb24gVG4obil7dmFyIHI9Q24uZXhlYyhuKTtpZihyKXJldHVybnthcmdzOltdLGNvbHVtbjpyWzRdPytyWzRdOnZvaWQgMCxmdW5jOnJbMV18fHplLGxpbmU6K3JbM10sdXJsOnJbMl19fXZhciBJbj0vXlxzKiguKj8pKD86XCgoLio/KVwpKT8oPzpefEApKCg/OmZpbGV8aHR0cHM/fGJsb2J8Y2hyb21lfHdlYnBhY2t8cmVzb3VyY2V8Y2FwYWNpdG9yfFxbbmF0aXZlKS4qP3xbXkBdKmJ1bmRsZSkoPzo6KFxkKykpPyg/OjooXGQrKSk/XHMqJC9pLEJuPS8oXFMrKSBsaW5lIChcZCspKD86ID4gZXZhbCBsaW5lIFxkKykqID4gZXZhbC9pO2Z1bmN0aW9uIEZuKG4pe3ZhciByPUluLmV4ZWMobik7aWYocil7dmFyIGE9clszXSYmclszXS5pbmRleE9mKCIgPiBldmFsIik+LTEscz1Cbi5leGVjKHJbM10pO3JldHVybiBhJiZzJiYoclszXT1zWzFdLHJbNF09c1syXSxyWzVdPXZvaWQgMCkse2FyZ3M6clsyXT9yWzJdLnNwbGl0KCIsIik6W10sY29sdW1uOnJbNV0/K3JbNV06dm9pZCAwLGZ1bmM6clsxXXx8emUsbGluZTpyWzRdPytyWzRdOnZvaWQgMCx1cmw6clszXX19fWZ1bmN0aW9uIEl0KG4scil7aWYoISh0eXBlb2YgbiE9Im9iamVjdCJ8fCFufHwhKHIgaW4gbikpKXt2YXIgYT1uW3JdO3JldHVybiB0eXBlb2YgYT09InN0cmluZyI/YTp2b2lkIDB9fWZ1bmN0aW9uIExuKG4scixhLHMpe3ZhciBsPVt7dXJsOnIsY29sdW1uOnMsbGluZTphfV0sZD16bihuKSxoPWQubmFtZSxvPWQubWVzc2FnZTtyZXR1cm57bmFtZTpoLG1lc3NhZ2U6byxzdGFjazpsfX12YXIga249L14oPzpbVXVdbmNhdWdodCAoPzpleGNlcHRpb246ICk/KT8oPzooKD86RXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJfClFcnJvcik6ICk/KFtcc1xTXSopJC87ZnVuY3Rpb24gem4obil7dmFyIHIsYSxzO3JldHVybnt9LnRvU3RyaW5nLmNhbGwobik9PT0iW29iamVjdCBTdHJpbmddIiYmKHI9a24uZXhlYyhuKSxhPXJbMV0scz1yWzJdKSx7bmFtZTphLG1lc3NhZ2U6c319ZnVuY3Rpb24gJGUoKXt2YXIgbj0yLHI9bmV3IEVycm9yLGE7aWYoIXIuc3RhY2spdHJ5e3Rocm93IHJ9Y2F0Y2h7fXJldHVybiBCZShmdW5jdGlvbigpe3ZhciBzPUoocik7cy5zdGFjaz1zLnN0YWNrLnNsaWNlKG4pLGE9aGUocyl9KSxhfWZ1bmN0aW9uIGhlKG4pe3ZhciByPXZpKG4pO3JldHVybiBuLnN0YWNrLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIHM9YS5mdW5jPT09Ij8iPyI8YW5vbnltb3VzPiI6YS5mdW5jLGw9YS5hcmdzJiZhLmFyZ3MubGVuZ3RoPjA/IigiLmNvbmNhdChhLmFyZ3Muam9pbigiLCAiKSwiKSIpOiIiLGQ9YS5saW5lPyI6Ii5jb25jYXQoYS5saW5lKToiIixoPWEubGluZSYmYS5jb2x1bW4/IjoiLmNvbmNhdChhLmNvbHVtbik6IiI7cis9YAogIGF0IGAuY29uY2F0KHMpLmNvbmNhdChsLCIgQCAiKS5jb25jYXQoYS51cmwpLmNvbmNhdChkKS5jb25jYXQoaCl9KSxyfWZ1bmN0aW9uIHZpKG4pe3JldHVybiIiLmNvbmNhdChuLm5hbWV8fCJFcnJvciIsIjogIikuY29uY2F0KG4ubWVzc2FnZSl9ZnVuY3Rpb24gY2UobixyLGEscyl7dmFyIGw9cz09PXZvaWQgMD97fTpzLGQ9bC5jb21wdXRlSGFuZGxpbmdTdGFjayxoPW5bcl07aWYodHlwZW9mIGghPSJmdW5jdGlvbiIpaWYociBpbiBuJiZfdChyLCJvbiIpKWg9aWU7ZWxzZSByZXR1cm57c3RvcDppZX07dmFyIG89ITEsXz1mdW5jdGlvbigpe2lmKG8pcmV0dXJuIGguYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBwPXB0KGFyZ3VtZW50cyksYztCZShhLG51bGwsW3t0YXJnZXQ6dGhpcyxwYXJhbWV0ZXJzOnAsb25Qb3N0Q2FsbDpmdW5jdGlvbihlKXtjPWV9LGhhbmRsaW5nU3RhY2s6ZD8kZSgpOnZvaWQgMH1dKTt2YXIgZz1oLmFwcGx5KHRoaXMscCk7cmV0dXJuIGMmJkJlKGMsbnVsbCxbZ10pLGd9O3JldHVybiBuW3JdPV8se3N0b3A6ZnVuY3Rpb24oKXtvPSEwLG5bcl09PT1fJiYobltyXT1oKX19fXZhciBSbj0yMjAqWCxPbj0iJCIsUG49MztmdW5jdGlvbiAkKG4scil7cj09PXZvaWQgMCYmKHI9Um4pO3ZhciBhPXhlKE9iamVjdC5wcm90b3R5cGUpLHM9eGUoQXJyYXkucHJvdG90eXBlKSxsPVtdLGQ9bmV3IFdlYWtNYXAsaD1CdChuLE9uLHZvaWQgMCxsLGQpLG89SlNPTi5zdHJpbmdpZnkoaCksXz1vP28ubGVuZ3RoOjA7aWYoXz5yKXtGdChyLCJkaXNjYXJkZWQiLG4pO3JldHVybn1mb3IoO2wubGVuZ3RoPjAmJl88cjspe3ZhciBwPWwuc2hpZnQoKSxjPTA7aWYoQXJyYXkuaXNBcnJheShwLnNvdXJjZSkpZm9yKHZhciBnPTA7ZzxwLnNvdXJjZS5sZW5ndGg7ZysrKXt2YXIgZT1CdChwLnNvdXJjZVtnXSxwLnBhdGgsZyxsLGQpO2lmKGUhPT12b2lkIDA/Xys9SlNPTi5zdHJpbmdpZnkoZSkubGVuZ3RoOl8rPTQsXys9YyxjPTEsXz5yKXtGdChyLCJ0cnVuY2F0ZWQiLG4pO2JyZWFrfXAudGFyZ2V0W2ddPWV9ZWxzZSBmb3IodmFyIGcgaW4gcC5zb3VyY2UpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHAuc291cmNlLGcpKXt2YXIgZT1CdChwLnNvdXJjZVtnXSxwLnBhdGgsZyxsLGQpO2lmKGUhPT12b2lkIDAmJihfKz1KU09OLnN0cmluZ2lmeShlKS5sZW5ndGgrYytnLmxlbmd0aCtQbixjPTEpLF8+cil7RnQociwidHJ1bmNhdGVkIixuKTticmVha31wLnRhcmdldFtnXT1lfX1yZXR1cm4gYSgpLHMoKSxofWZ1bmN0aW9uIEJ0KG4scixhLHMsbCl7dmFyIGQ9TW4obik7aWYoIWR8fHR5cGVvZiBkIT0ib2JqZWN0IilyZXR1cm4gRG4oZCk7dmFyIGg9Tm4oZCk7aWYoaCE9PSJbT2JqZWN0XSImJmghPT0iW0FycmF5XSImJmghPT0iW0Vycm9yXSIpcmV0dXJuIGg7dmFyIG89bjtpZihsLmhhcyhvKSlyZXR1cm4iW1JlZmVyZW5jZSBzZWVuIGF0ICIuY29uY2F0KGwuZ2V0KG8pLCJdIik7dmFyIF89YSE9PXZvaWQgMD8iIi5jb25jYXQociwiLiIpLmNvbmNhdChhKTpyLHA9QXJyYXkuaXNBcnJheShkKT9bXTp7fTtyZXR1cm4gbC5zZXQobyxfKSxzLnB1c2goe3NvdXJjZTpkLHRhcmdldDpwLHBhdGg6X30pLHB9ZnVuY3Rpb24gRG4obil7cmV0dXJuIHR5cGVvZiBuPT0iYmlnaW50Ij8iW0JpZ0ludF0gIi5jb25jYXQobi50b1N0cmluZygpKTp0eXBlb2Ygbj09ImZ1bmN0aW9uIj8iW0Z1bmN0aW9uXSAiLmNvbmNhdChuLm5hbWV8fCJ1bmtub3duIik6dHlwZW9mIG49PSJzeW1ib2wiPyJbU3ltYm9sXSAiLmNvbmNhdChuLmRlc2NyaXB0aW9ufHxuLnRvU3RyaW5nKCkpOm59ZnVuY3Rpb24gTm4obil7dHJ5e2lmKG4gaW5zdGFuY2VvZiBFdmVudClyZXR1cm57aXNUcnVzdGVkOm4uaXNUcnVzdGVkfTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobiksYT1yLm1hdGNoKC9cW29iamVjdCAoLiopXF0vKTtpZihhJiZhWzFdKXJldHVybiJbIi5jb25jYXQoYVsxXSwiXSIpfWNhdGNoe31yZXR1cm4iW1Vuc2VyaWFsaXphYmxlXSJ9ZnVuY3Rpb24gTW4obil7dmFyIHI9bjtpZihyJiZ0eXBlb2Ygci50b0pTT049PSJmdW5jdGlvbiIpdHJ5e3JldHVybiByLnRvSlNPTigpfWNhdGNoe31yZXR1cm4gbn1mdW5jdGlvbiBGdChuLHIsYSl7ei53YXJuKCJUaGUgZGF0YSBwcm92aWRlZCBoYXMgYmVlbiAiLmNvbmNhdChyLCIgYXMgaXQgaXMgb3ZlciB0aGUgbGltaXQgb2YgIikuY29uY2F0KG4sIiBjaGFyYWN0ZXJzOiIpLGEpfXZhciBnaT0iTm8gc3RhY2ssIGNvbnNpZGVyIHVzaW5nIGFuIGluc3RhbmNlIG9mIEVycm9yIjtmdW5jdGlvbiB5aShuKXt2YXIgcj1uLnN0YWNrVHJhY2UsYT1uLm9yaWdpbmFsRXJyb3Iscz1uLmhhbmRsaW5nU3RhY2ssbD1uLnN0YXJ0Q2xvY2tzLGQ9bi5ub25FcnJvclByZWZpeCxoPW4uc291cmNlLG89bi5oYW5kbGluZyxfPWEgaW5zdGFuY2VvZiBFcnJvcixwPUduKHIsXyxkLGEpLGM9SG4oXyxyKT9oZShyKTpnaSxnPV8/YmkoYSxoKTp2b2lkIDAsZT1yP3IubmFtZTp2b2lkIDAsdD1taShhKTtyZXR1cm57c3RhcnRDbG9ja3M6bCxzb3VyY2U6aCxoYW5kbGluZzpvLGhhbmRsaW5nU3RhY2s6cyxvcmlnaW5hbEVycm9yOmEsdHlwZTplLG1lc3NhZ2U6cCxzdGFjazpjLGNhdXNlczpnLGZpbmdlcnByaW50OnR9fWZ1bmN0aW9uIEduKG4scixhLHMpe3JldHVybiBuIT1udWxsJiZuLm1lc3NhZ2UmJihuIT1udWxsJiZuLm5hbWUpP24ubWVzc2FnZTpyPyJFbXB0eSBtZXNzYWdlIjoiIi5jb25jYXQoYSwiICIpLmNvbmNhdCh1ZSgkKHMpKSl9ZnVuY3Rpb24gSG4obixyKXtyZXR1cm4gcj09PXZvaWQgMD8hMTpuPyEwOnIuc3RhY2subGVuZ3RoPjAmJihyLnN0YWNrLmxlbmd0aD4xfHxyLnN0YWNrWzBdLnVybCE9PXZvaWQgMCl9ZnVuY3Rpb24gbWkobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBFcnJvciYmImRkX2ZpbmdlcnByaW50ImluIG4/U3RyaW5nKG4uZGRfZmluZ2VycHJpbnQpOnZvaWQgMH1mdW5jdGlvbiBZbihuKXt2YXIgcjtyZXR1cm4ocj0vQCAoLispLy5leGVjKG4pKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnJbMV19ZnVuY3Rpb24gYmkobixyKXtmb3IodmFyIGE9bixzPVtdOyhhPT1udWxsP3ZvaWQgMDphLmNhdXNlKWluc3RhbmNlb2YgRXJyb3ImJnMubGVuZ3RoPDEwOyl7dmFyIGw9SihhLmNhdXNlKTtzLnB1c2goe21lc3NhZ2U6YS5jYXVzZS5tZXNzYWdlLHNvdXJjZTpyLHR5cGU6bD09bnVsbD92b2lkIDA6bC5uYW1lLHN0YWNrOmwmJmhlKGwpfSksYT1hLmNhdXNlfXJldHVybiBzLmxlbmd0aD9zOnZvaWQgMH12YXIgSD17QUdFTlQ6ImFnZW50IixDT05TT0xFOiJjb25zb2xlIixDVVNUT006ImN1c3RvbSIsTE9HR0VSOiJsb2dnZXIiLE5FVFdPUks6Im5ldHdvcmsiLFNPVVJDRToic291cmNlIixSRVBPUlQ6InJlcG9ydCJ9O2Z1bmN0aW9uIFZuKG4pe3ZhciByPWZ1bmN0aW9uKGwsZCl7dmFyIGg9eWkoe3N0YWNrVHJhY2U6bCxvcmlnaW5hbEVycm9yOmQsc3RhcnRDbG9ja3M6ZWUoKSxub25FcnJvclByZWZpeDoiVW5jYXVnaHQiLHNvdXJjZTpILlNPVVJDRSxoYW5kbGluZzoidW5oYW5kbGVkIn0pO24ubm90aWZ5KGgpfSxhPWpuKHIpLnN0b3Ascz1LbihyKS5zdG9wO3JldHVybntzdG9wOmZ1bmN0aW9uKCl7YSgpLHMoKX19fWZ1bmN0aW9uIGpuKG4pe3JldHVybiBjZSh3aW5kb3csIm9uZXJyb3IiLGZ1bmN0aW9uKHIpe3ZhciBhPXIucGFyYW1ldGVycyxzPWFbMF0sbD1hWzFdLGQ9YVsyXSxoPWFbM10sbz1hWzRdLF87byBpbnN0YW5jZW9mIEVycm9yP189SihvKTpfPUxuKHMsbCxkLGgpLG4oXyxvPz9zKX0pfWZ1bmN0aW9uIEtuKG4pe3JldHVybiBjZSh3aW5kb3csIm9udW5oYW5kbGVkcmVqZWN0aW9uIixmdW5jdGlvbihyKXt2YXIgYT1yLnBhcmFtZXRlcnNbMF0scz1hLnJlYXNvbnx8IkVtcHR5IHJlYXNvbiIsbD1KKHMpO24obCxzKX0pfWZ1bmN0aW9uIHFuKG4pe3ZhciByPU8oe3ZlcnNpb246IjUuMjkuMSIsb25SZWFkeTpmdW5jdGlvbihhKXthKCl9fSxuKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsIl9zZXREZWJ1ZyIse2dldDpmdW5jdGlvbigpe3JldHVybiB5cn0sZW51bWVyYWJsZTohMX0pLHJ9ZnVuY3Rpb24gV24obixyLGEpe3ZhciBzPW5bcl07cyYmIXMucSYmcy52ZXJzaW9uJiZ6Lndhcm4oIlNESyBpcyBsb2FkZWQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgaXMgdW5zdXBwb3J0ZWQgYW5kIG1pZ2h0IGhhdmUgdW5leHBlY3RlZCBiZWhhdmlvci4iKSxuW3JdPWEscyYmcy5xJiZzLnEuZm9yRWFjaChmdW5jdGlvbihsKXtyZXR1cm4gcXQobCwib25SZWFkeSBjYWxsYmFjayB0aHJldyBhbiBlcnJvcjoiKSgpfSl9ZnVuY3Rpb24gU2kobixyKXtyLnNpbGVudE11bHRpcGxlSW5pdHx8ei5lcnJvcigiIi5jb25jYXQobiwiIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpfWZ1bmN0aW9uIHBlKG4scixhLHMsbCl7cmV0dXJuIEx0KG4scixbYV0scyxsKX1mdW5jdGlvbiBMdChuLHIsYSxzLGwpe3ZhciBkPWw9PT12b2lkIDA/e306bCxoPWQub25jZSxvPWQuY2FwdHVyZSxfPWQucGFzc2l2ZSxwPUIoZnVuY3Rpb24odCl7IXQuaXNUcnVzdGVkJiYhdC5fX2RkSXNUcnVzdGVkJiYhbi5hbGxvd1VudHJ1c3RlZEV2ZW50c3x8KGgmJmUoKSxzKHQpKX0pLGM9Xz97Y2FwdHVyZTpvLHBhc3NpdmU6X306byxnPWJlKHIsImFkZEV2ZW50TGlzdGVuZXIiKTthLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGcuY2FsbChyLHQscCxjKX0pO2Z1bmN0aW9uIGUoKXt2YXIgdD1iZShyLCJyZW1vdmVFdmVudExpc3RlbmVyIik7YS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3JldHVybiB0LmNhbGwocixpLHAsYyl9KX1yZXR1cm57c3RvcDplfX12YXIgWmU9e2ludGVydmVudGlvbjoiaW50ZXJ2ZW50aW9uIixkZXByZWNhdGlvbjoiZGVwcmVjYXRpb24iLGNzcFZpb2xhdGlvbjoiY3NwX3Zpb2xhdGlvbiJ9O2Z1bmN0aW9uIFhuKG4scil7dmFyIGE9W107eWUocixaZS5jc3BWaW9sYXRpb24pJiZhLnB1c2goJG4obikpO3ZhciBzPXIuZmlsdGVyKGZ1bmN0aW9uKGwpe3JldHVybiBsIT09WmUuY3NwVmlvbGF0aW9ufSk7cmV0dXJuIHMubGVuZ3RoJiZhLnB1c2goSm4ocykpLGVpLmFwcGx5KHZvaWQgMCxhKX1mdW5jdGlvbiBKbihuKXtyZXR1cm4gbmV3IFIoZnVuY3Rpb24ocil7aWYod2luZG93LlJlcG9ydGluZ09ic2VydmVyKXt2YXIgYT1CKGZ1bmN0aW9uKGwsZCl7cmV0dXJuIGwuZm9yRWFjaChmdW5jdGlvbihoKXtyZXR1cm4gci5ub3RpZnkoWm4oaCkpfSl9KSxzPW5ldyB3aW5kb3cuUmVwb3J0aW5nT2JzZXJ2ZXIoYSx7dHlwZXM6bixidWZmZXJlZDohMH0pO3JldHVybiBzLm9ic2VydmUoKSxmdW5jdGlvbigpe3MuZGlzY29ubmVjdCgpfX19KX1mdW5jdGlvbiAkbihuKXtyZXR1cm4gbmV3IFIoZnVuY3Rpb24ocil7dmFyIGE9cGUobixkb2N1bWVudCwic2VjdXJpdHlwb2xpY3l2aW9sYXRpb24iLGZ1bmN0aW9uKHMpe3Iubm90aWZ5KFFuKHMpKX0pLnN0b3A7cmV0dXJuIGF9KX1mdW5jdGlvbiBabihuKXt2YXIgcj1uLnR5cGUsYT1uLmJvZHk7cmV0dXJuIHhpKHt0eXBlOmEuaWQsbWVzc2FnZToiIi5jb25jYXQociwiOiAiKS5jb25jYXQoYS5tZXNzYWdlKSxvcmlnaW5hbEVycm9yOm4sc3RhY2s6VWkoYS5pZCxhLm1lc3NhZ2UsYS5zb3VyY2VGaWxlLGEubGluZU51bWJlcixhLmNvbHVtbk51bWJlcil9KX1mdW5jdGlvbiBRbihuKXt2YXIgcj0iJyIuY29uY2F0KG4uYmxvY2tlZFVSSSwiJyBibG9ja2VkIGJ5ICciKS5jb25jYXQobi5lZmZlY3RpdmVEaXJlY3RpdmUsIicgZGlyZWN0aXZlIik7cmV0dXJuIHhpKHt0eXBlOm4uZWZmZWN0aXZlRGlyZWN0aXZlLG1lc3NhZ2U6IiIuY29uY2F0KFplLmNzcFZpb2xhdGlvbiwiOiAiKS5jb25jYXQociksb3JpZ2luYWxFcnJvcjpuLGNzcDp7ZGlzcG9zaXRpb246bi5kaXNwb3NpdGlvbn0sc3RhY2s6VWkobi5lZmZlY3RpdmVEaXJlY3RpdmUsbi5vcmlnaW5hbFBvbGljeT8iIi5jb25jYXQociwnIG9mIHRoZSBwb2xpY3kgIicpLmNvbmNhdCh4cihuLm9yaWdpbmFsUG9saWN5LDEwMCwiLi4uIiksJyInKToibm8gcG9saWN5IixuLnNvdXJjZUZpbGUsbi5saW5lTnVtYmVyLG4uY29sdW1uTnVtYmVyKX0pfWZ1bmN0aW9uIHhpKG4pe3JldHVybiBPKHtzdGFydENsb2NrczplZSgpLHNvdXJjZTpILlJFUE9SVCxoYW5kbGluZzoidW5oYW5kbGVkIn0sbil9ZnVuY3Rpb24gVWkobixyLGEscyxsKXtyZXR1cm4gYT9oZSh7bmFtZTpuLG1lc3NhZ2U6cixzdGFjazpbe2Z1bmM6Ij8iLHVybDphLGxpbmU6cz8/dm9pZCAwLGNvbHVtbjpsPz92b2lkIDB9XX0pOnZvaWQgMH1mdW5jdGlvbiB3aShuLHIpe3ZhciBhPXdpbmRvdy5fX2RkQnJvd3NlclNka0V4dGVuc2lvbkNhbGxiYWNrO2EmJmEoe3R5cGU6bixwYXlsb2FkOnJ9KX1mdW5jdGlvbiBrdChuKXtyZXR1cm4gbj09PW51bGw/Im51bGwiOkFycmF5LmlzQXJyYXkobik/ImFycmF5Ijp0eXBlb2Ygbn1mdW5jdGlvbiBRZShuLHIsYSl7aWYoYT09PXZvaWQgMCYmKGE9ZXMoKSkscj09PXZvaWQgMClyZXR1cm4gbjtpZih0eXBlb2YgciE9Im9iamVjdCJ8fHI9PT1udWxsKXJldHVybiByO2lmKHIgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuZXcgRGF0ZShyLmdldFRpbWUoKSk7aWYociBpbnN0YW5jZW9mIFJlZ0V4cCl7dmFyIHM9ci5mbGFnc3x8W3IuZ2xvYmFsPyJnIjoiIixyLmlnbm9yZUNhc2U/ImkiOiIiLHIubXVsdGlsaW5lPyJtIjoiIixyLnN0aWNreT8ieSI6IiIsci51bmljb2RlPyJ1IjoiIl0uam9pbigiIik7cmV0dXJuIG5ldyBSZWdFeHAoci5zb3VyY2Uscyl9aWYoIWEuaGFzQWxyZWFkeUJlZW5TZWVuKHIpKXtpZihBcnJheS5pc0FycmF5KHIpKXtmb3IodmFyIGw9QXJyYXkuaXNBcnJheShuKT9uOltdLGQ9MDtkPHIubGVuZ3RoOysrZClsW2RdPVFlKGxbZF0scltkXSxhKTtyZXR1cm4gbH12YXIgaD1rdChuKT09PSJvYmplY3QiP246e307Zm9yKHZhciBvIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbykmJihoW29dPVFlKGhbb10scltvXSxhKSk7cmV0dXJuIGh9fWZ1bmN0aW9uIEVpKG4pe3JldHVybiBRZSh2b2lkIDAsbil9ZnVuY3Rpb24gd2UoKXtmb3IodmFyIG49W10scj0wO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyXT1hcmd1bWVudHNbcl07Zm9yKHZhciBhLHM9MCxsPW47czxsLmxlbmd0aDtzKyspe3ZhciBkPWxbc107ZCE9bnVsbCYmKGE9UWUoYSxkKSl9cmV0dXJuIGF9ZnVuY3Rpb24gZXMoKXtpZih0eXBlb2YgV2Vha1NldDwidSIpe3ZhciBuPW5ldyBXZWFrU2V0O3JldHVybntoYXNBbHJlYWR5QmVlblNlZW46ZnVuY3Rpb24oYSl7dmFyIHM9bi5oYXMoYSk7cmV0dXJuIHN8fG4uYWRkKGEpLHN9fX12YXIgcj1bXTtyZXR1cm57aGFzQWxyZWFkeUJlZW5TZWVuOmZ1bmN0aW9uKGEpe3ZhciBzPXIuaW5kZXhPZihhKT49MDtyZXR1cm4gc3x8ci5wdXNoKGEpLHN9fX1mdW5jdGlvbiB0cygpe3ZhciBuLHI9d2luZG93Lm5hdmlnYXRvcjtyZXR1cm57c3RhdHVzOnIub25MaW5lPyJjb25uZWN0ZWQiOiJub3RfY29ubmVjdGVkIixpbnRlcmZhY2VzOnIuY29ubmVjdGlvbiYmci5jb25uZWN0aW9uLnR5cGU/W3IuY29ubmVjdGlvbi50eXBlXTp2b2lkIDAsZWZmZWN0aXZlX3R5cGU6KG49ci5jb25uZWN0aW9uKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4uZWZmZWN0aXZlVHlwZX19ZnVuY3Rpb24gaXMobil7dmFyIHI9bmV3IFNldDtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiByLmFkZChhKX0pLHB0KHIpfWZ1bmN0aW9uIEFpKG4scil7dmFyIGE9bi5pbmRleE9mKHIpO2E+PTAmJm4uc3BsaWNlKGEsMSl9dmFyIHJzPTUwMDtmdW5jdGlvbiBDaSgpe3ZhciBuPVtdLHI9ZnVuY3Rpb24obCl7dmFyIGQ9bi5wdXNoKGwpO2Q+cnMmJm4uc3BsaWNlKDAsMSl9LGE9ZnVuY3Rpb24obCl7QWkobixsKX0scz1mdW5jdGlvbihsKXtuLmZvckVhY2goZnVuY3Rpb24oZCl7cmV0dXJuIGQobCl9KSxuLmxlbmd0aD0wfTtyZXR1cm57YWRkOnIscmVtb3ZlOmEsZHJhaW46c319dmFyIF9lPXtsb2c6ImxvZyIsY29uZmlndXJhdGlvbjoiY29uZmlndXJhdGlvbiIsdXNhZ2U6InVzYWdlIn0sbnM9WyJodHRwczovL3d3dy5kYXRhZG9naHEtYnJvd3Nlci1hZ2VudC5jb20iLCJodHRwczovL3d3dy5kYXRhZDBnLWJyb3dzZXItYWdlbnQuY29tIiwiaHR0cHM6Ly9kM3VjMDY5ZmNuN3V4dy5jbG91ZGZyb250Lm5ldCIsImh0dHBzOi8vZDIweHR6d3pjbDBjZWIuY2xvdWRmcm9udC5uZXQiLCJodHRwOi8vbG9jYWxob3N0IiwiPGFub255bW91cz4iXSxzcz1bbm5dLFRpPUNpKCksRWU9ZnVuY3Rpb24obil7VGkuYWRkKGZ1bmN0aW9uKCl7cmV0dXJuIEVlKG4pfSl9O2Z1bmN0aW9uIG9zKG4scil7dmFyIGEscyxsPW5ldyBSLGQ9bmV3IFNldCxoPSF5ZShzcyxyLnNpdGUpJiZOZShyLnRlbGVtZXRyeVNhbXBsZVJhdGUpLG89KGE9e30sYVtfZS5sb2ddPWgsYVtfZS5jb25maWd1cmF0aW9uXT1oJiZOZShyLnRlbGVtZXRyeUNvbmZpZ3VyYXRpb25TYW1wbGVSYXRlKSxhW19lLnVzYWdlXT1oJiZOZShyLnRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZSksYSksXz1hcygpO0VlPWZ1bmN0aW9uKGMpe3ZhciBnPXVlKGMpO2lmKG9bYy50eXBlXSYmZC5zaXplPHIubWF4VGVsZW1ldHJ5RXZlbnRzUGVyUGFnZSYmIWQuaGFzKGcpKXt2YXIgZT1wKG4sYyxfKTtsLm5vdGlmeShlKSx3aSgidGVsZW1ldHJ5IixlKSxkLmFkZChnKX19LGdyKEJpKTtmdW5jdGlvbiBwKGMsZyxlKXtyZXR1cm4gd2Uoe3R5cGU6InRlbGVtZXRyeSIsZGF0ZTpRKCksc2VydmljZTpjLHZlcnNpb246IjUuMjkuMSIsc291cmNlOiJicm93c2VyIixfZGQ6e2Zvcm1hdF92ZXJzaW9uOjJ9LHRlbGVtZXRyeTp3ZShnLHtydW50aW1lX2VudjplLGNvbm5lY3Rpdml0eTp0cygpLHNka19zZXR1cDoibnBtIn0pLGV4cGVyaW1lbnRhbF9mZWF0dXJlczpwdChTbigpKX0scyE9PXZvaWQgMD9zKCk6e30pfXJldHVybntzZXRDb250ZXh0UHJvdmlkZXI6ZnVuY3Rpb24oYyl7cz1jfSxvYnNlcnZhYmxlOmwsZW5hYmxlZDpofX1mdW5jdGlvbiBhcygpe3JldHVybntpc19sb2NhbF9maWxlOndpbmRvdy5sb2NhdGlvbi5wcm90b2NvbD09PSJmaWxlOiIsaXNfd29ya2VyOiJXb3JrZXJHbG9iYWxTY29wZSJpbiBzZWxmfX1mdW5jdGlvbiBmcygpe1RpLmRyYWluKCl9ZnVuY3Rpb24gbHMobil7cmV0dXJuIG4uc2l0ZT09PXRufWZ1bmN0aW9uIElpKG4scil7Z3QoTC5kZWJ1ZyxuLHIpLEVlKE8oe3R5cGU6X2UubG9nLG1lc3NhZ2U6bixzdGF0dXM6ImRlYnVnIn0scikpfWZ1bmN0aW9uIEJpKG4scil7RWUoTyh7dHlwZTpfZS5sb2csc3RhdHVzOiJlcnJvciJ9LGhzKG4pLHIpKX1mdW5jdGlvbiB1cyhuKXtFZSh7dHlwZTpfZS5jb25maWd1cmF0aW9uLGNvbmZpZ3VyYXRpb246bn0pfWZ1bmN0aW9uIGRzKG4pe0VlKHt0eXBlOl9lLnVzYWdlLHVzYWdlOm59KX1mdW5jdGlvbiBocyhuKXtpZihuIGluc3RhbmNlb2YgRXJyb3Ipe3ZhciByPUoobik7cmV0dXJue2Vycm9yOntraW5kOnIubmFtZSxzdGFjazpoZShjcyhyKSl9LG1lc3NhZ2U6ci5tZXNzYWdlfX1yZXR1cm57ZXJyb3I6e3N0YWNrOmdpfSxtZXNzYWdlOiIiLmNvbmNhdCgiVW5jYXVnaHQiLCIgIikuY29uY2F0KHVlKG4pKX19ZnVuY3Rpb24gY3Mobil7cmV0dXJuIG4uc3RhY2s9bi5zdGFjay5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIXIudXJsfHxucy5zb21lKGZ1bmN0aW9uKGEpe3JldHVybiBfdChyLnVybCxhKX0pfSksbn12YXIgZXQ9MS8wLHBzPXNlO2Z1bmN0aW9uIF9zKG4pe3ZhciByPW4uZXhwaXJlRGVsYXksYT1uLm1heEVudHJpZXMscz1bXSxsPXl0KGZ1bmN0aW9uKCl7cmV0dXJuIGQoKX0scHMpO2Z1bmN0aW9uIGQoKXtmb3IodmFyIGU9TWUoKS1yO3MubGVuZ3RoPjAmJnNbcy5sZW5ndGgtMV0uZW5kVGltZTxlOylzLnBvcCgpfWZ1bmN0aW9uIGgoZSx0KXt2YXIgaT17dmFsdWU6ZSxzdGFydFRpbWU6dCxlbmRUaW1lOmV0LHJlbW92ZTpmdW5jdGlvbigpe0FpKHMsaSl9LGNsb3NlOmZ1bmN0aW9uKGYpe2kuZW5kVGltZT1mfX07cmV0dXJuIGEmJnMubGVuZ3RoPj1hJiZzLnBvcCgpLHMudW5zaGlmdChpKSxpfWZ1bmN0aW9uIG8oZSx0KXtlPT09dm9pZCAwJiYoZT1ldCksdD09PXZvaWQgMCYmKHQ9e3JldHVybkluYWN0aXZlOiExfSk7Zm9yKHZhciBpPTAsZj1zO2k8Zi5sZW5ndGg7aSsrKXt2YXIgdT1mW2ldO2lmKHUuc3RhcnRUaW1lPD1lKXtpZih0LnJldHVybkluYWN0aXZlfHxlPD11LmVuZFRpbWUpcmV0dXJuIHUudmFsdWU7YnJlYWt9fX1mdW5jdGlvbiBfKGUpe3ZhciB0PXNbMF07dCYmdC5lbmRUaW1lPT09ZXQmJnQuY2xvc2UoZSl9ZnVuY3Rpb24gcChlLHQpe2U9PT12b2lkIDAmJihlPWV0KSx0PT09dm9pZCAwJiYodD0wKTt2YXIgaT1scihlLHQpO3JldHVybiBzLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZi5zdGFydFRpbWU8PWkmJmU8PWYuZW5kVGltZX0pLm1hcChmdW5jdGlvbihmKXtyZXR1cm4gZi52YWx1ZX0pfWZ1bmN0aW9uIGMoKXtzPVtdfWZ1bmN0aW9uIGcoKXtRdChsKX1yZXR1cm57YWRkOmgsZmluZDpvLGNsb3NlQWN0aXZlOl8sZmluZEFsbDpwLHJlc2V0OmMsc3RvcDpnfX12YXIgdnM9c2UsZ3M9eHQ7ZnVuY3Rpb24geXMobixyLGEscyl7dmFyIGw9bmV3IFIsZD1uZXcgUixoPSRyKG4uc2Vzc2lvblN0b3JlU3RyYXRlZ3lUeXBlLHIsYSksbz1fcyh7ZXhwaXJlRGVsYXk6Z3N9KTtoLnJlbmV3T2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtvLmFkZChfKCksTWUoKSksbC5ub3RpZnkoKX0pLGguZXhwaXJlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtkLm5vdGlmeSgpLG8uY2xvc2VBY3RpdmUoTWUoKSl9KSxoLmV4cGFuZE9yUmVuZXdTZXNzaW9uKCksby5hZGQoXygpLGFyKCkucmVsYXRpdmUpLHMub2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtzLmlzR3JhbnRlZCgpP2guZXhwYW5kT3JSZW5ld1Nlc3Npb24oKTpoLmV4cGlyZSgpfSksbXMobixmdW5jdGlvbigpe3MuaXNHcmFudGVkKCkmJmguZXhwYW5kT3JSZW5ld1Nlc3Npb24oKX0pLGJzKG4sZnVuY3Rpb24oKXtyZXR1cm4gaC5leHBhbmRTZXNzaW9uKCl9KSxTcyhuLGZ1bmN0aW9uKCl7cmV0dXJuIGgucmVzdGFydFNlc3Npb24oKX0pO2Z1bmN0aW9uIF8oKXtyZXR1cm57aWQ6aC5nZXRTZXNzaW9uKCkuaWQsdHJhY2tpbmdUeXBlOmguZ2V0U2Vzc2lvbigpW3JdLGlzUmVwbGF5Rm9yY2VkOiEhaC5nZXRTZXNzaW9uKCkuZm9yY2VkUmVwbGF5fX1yZXR1cm57ZmluZFNlc3Npb246ZnVuY3Rpb24ocCxjKXtyZXR1cm4gby5maW5kKHAsYyl9LHJlbmV3T2JzZXJ2YWJsZTpsLGV4cGlyZU9ic2VydmFibGU6ZCxzZXNzaW9uU3RhdGVVcGRhdGVPYnNlcnZhYmxlOmguc2Vzc2lvblN0YXRlVXBkYXRlT2JzZXJ2YWJsZSxleHBpcmU6aC5leHBpcmUsdXBkYXRlU2Vzc2lvblN0YXRlOmgudXBkYXRlU2Vzc2lvblN0YXRlfX1mdW5jdGlvbiBtcyhuLHIpe0x0KG4sd2luZG93LFsiY2xpY2siLCJ0b3VjaHN0YXJ0Iiwia2V5ZG93biIsInNjcm9sbCJdLHIse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pLnN0b3B9ZnVuY3Rpb24gYnMobixyKXt2YXIgYT1mdW5jdGlvbigpe2RvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJ2aXNpYmxlIiYmcigpfTtwZShuLGRvY3VtZW50LCJ2aXNpYmlsaXR5Y2hhbmdlIixhKS5zdG9wLHl0KGEsdnMpfWZ1bmN0aW9uIFNzKG4scil7cGUobix3aW5kb3csInJlc3VtZSIscix7Y2FwdHVyZTohMH0pLnN0b3B9ZnVuY3Rpb24gRmkobil7cmV0dXJuIG4+PTUwMH1mdW5jdGlvbiB4cyhuKXt0cnl7cmV0dXJuIG4uY2xvbmUoKX1jYXRjaHtyZXR1cm59fXZhciBVcz04MCpYLHdzPTMyLExpPTMqWHQsRXM9c2Usa2k9VGU7ZnVuY3Rpb24gemkobixyLGEscyxsKXtyLnRyYW5zcG9ydFN0YXR1cz09PTAmJnIucXVldWVkUGF5bG9hZHMuc2l6ZSgpPT09MCYmci5iYW5kd2lkdGhNb25pdG9yLmNhbkhhbmRsZShuKT9PaShuLHIsYSx7b25TdWNjZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIFBpKDAscixhLHMsbCl9LG9uRmFpbHVyZTpmdW5jdGlvbigpe3IucXVldWVkUGF5bG9hZHMuZW5xdWV1ZShuKSxSaShyLGEscyxsKX19KTpyLnF1ZXVlZFBheWxvYWRzLmVucXVldWUobil9ZnVuY3Rpb24gUmkobixyLGEscyl7bi50cmFuc3BvcnRTdGF0dXM9PT0yJiZGZShmdW5jdGlvbigpe3ZhciBsPW4ucXVldWVkUGF5bG9hZHMuZmlyc3QoKTtPaShsLG4scix7b25TdWNjZXNzOmZ1bmN0aW9uKCl7bi5xdWV1ZWRQYXlsb2Fkcy5kZXF1ZXVlKCksbi5jdXJyZW50QmFja29mZlRpbWU9a2ksUGkoMSxuLHIsYSxzKX0sb25GYWlsdXJlOmZ1bmN0aW9uKCl7bi5jdXJyZW50QmFja29mZlRpbWU9TWF0aC5taW4oRXMsbi5jdXJyZW50QmFja29mZlRpbWUqMiksUmkobixyLGEscyl9fSl9LG4uY3VycmVudEJhY2tvZmZUaW1lKX1mdW5jdGlvbiBPaShuLHIsYSxzKXt2YXIgbD1zLm9uU3VjY2VzcyxkPXMub25GYWlsdXJlO3IuYmFuZHdpZHRoTW9uaXRvci5hZGQobiksYShuLGZ1bmN0aW9uKGgpe3IuYmFuZHdpZHRoTW9uaXRvci5yZW1vdmUobiksQXMoaCk/KHIudHJhbnNwb3J0U3RhdHVzPXIuYmFuZHdpZHRoTW9uaXRvci5vbmdvaW5nUmVxdWVzdENvdW50PjA/MToyLG4ucmV0cnk9e2NvdW50Om4ucmV0cnk/bi5yZXRyeS5jb3VudCsxOjEsbGFzdEZhaWx1cmVTdGF0dXM6aC5zdGF0dXN9LGQoKSk6KHIudHJhbnNwb3J0U3RhdHVzPTAsbCgpKX0pfWZ1bmN0aW9uIFBpKG4scixhLHMsbCl7bj09PTAmJnIucXVldWVkUGF5bG9hZHMuaXNGdWxsKCkmJiFyLnF1ZXVlRnVsbFJlcG9ydGVkJiYobCh7bWVzc2FnZToiUmVhY2hlZCBtYXggIi5jb25jYXQocywiIGV2ZW50cyBzaXplIHF1ZXVlZCBmb3IgdXBsb2FkOiAiKS5jb25jYXQoTGkvWHQsIk1pQiIpLHNvdXJjZTpILkFHRU5ULHN0YXJ0Q2xvY2tzOmVlKCl9KSxyLnF1ZXVlRnVsbFJlcG9ydGVkPSEwKTt2YXIgZD1yLnF1ZXVlZFBheWxvYWRzO2ZvcihyLnF1ZXVlZFBheWxvYWRzPURpKCk7ZC5zaXplKCk+MDspemkoZC5kZXF1ZXVlKCkscixhLHMsbCl9ZnVuY3Rpb24gQXMobil7cmV0dXJuIG4udHlwZSE9PSJvcGFxdWUiJiYobi5zdGF0dXM9PT0wJiYhbmF2aWdhdG9yLm9uTGluZXx8bi5zdGF0dXM9PT00MDh8fG4uc3RhdHVzPT09NDI5fHxGaShuLnN0YXR1cykpfWZ1bmN0aW9uIENzKCl7cmV0dXJue3RyYW5zcG9ydFN0YXR1czowLGN1cnJlbnRCYWNrb2ZmVGltZTpraSxiYW5kd2lkdGhNb25pdG9yOlRzKCkscXVldWVkUGF5bG9hZHM6RGkoKSxxdWV1ZUZ1bGxSZXBvcnRlZDohMX19ZnVuY3Rpb24gRGkoKXt2YXIgbj1bXTtyZXR1cm57Ynl0ZXNDb3VudDowLGVucXVldWU6ZnVuY3Rpb24ocil7dGhpcy5pc0Z1bGwoKXx8KG4ucHVzaChyKSx0aGlzLmJ5dGVzQ291bnQrPXIuYnl0ZXNDb3VudCl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIG5bMF19LGRlcXVldWU6ZnVuY3Rpb24oKXt2YXIgcj1uLnNoaWZ0KCk7cmV0dXJuIHImJih0aGlzLmJ5dGVzQ291bnQtPXIuYnl0ZXNDb3VudCkscn0sc2l6ZTpmdW5jdGlvbigpe3JldHVybiBuLmxlbmd0aH0saXNGdWxsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnl0ZXNDb3VudD49TGl9fX1mdW5jdGlvbiBUcygpe3JldHVybntvbmdvaW5nUmVxdWVzdENvdW50OjAsb25nb2luZ0J5dGVDb3VudDowLGNhbkhhbmRsZTpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5vbmdvaW5nUmVxdWVzdENvdW50PT09MHx8dGhpcy5vbmdvaW5nQnl0ZUNvdW50K24uYnl0ZXNDb3VudDw9VXMmJnRoaXMub25nb2luZ1JlcXVlc3RDb3VudDx3c30sYWRkOmZ1bmN0aW9uKG4pe3RoaXMub25nb2luZ1JlcXVlc3RDb3VudCs9MSx0aGlzLm9uZ29pbmdCeXRlQ291bnQrPW4uYnl0ZXNDb3VudH0scmVtb3ZlOmZ1bmN0aW9uKG4pe3RoaXMub25nb2luZ1JlcXVlc3RDb3VudC09MSx0aGlzLm9uZ29pbmdCeXRlQ291bnQtPW4uYnl0ZXNDb3VudH19fWZ1bmN0aW9uIElzKG4scixhLHMpe3ZhciBsPUNzKCksZD1mdW5jdGlvbihoLG8pe3JldHVybiBMcyhuLHIsYSxoLG8pfTtyZXR1cm57c2VuZDpmdW5jdGlvbihoKXt6aShoLGwsZCxyLnRyYWNrVHlwZSxzKX0sc2VuZE9uRXhpdDpmdW5jdGlvbihoKXtCcyhuLHIsYSxoKX19fWZ1bmN0aW9uIEJzKG4scixhLHMpe3ZhciBsPSEhbmF2aWdhdG9yLnNlbmRCZWFjb24mJnMuYnl0ZXNDb3VudDxhO2lmKGwpdHJ5e3ZhciBkPXIuYnVpbGQoImJlYWNvbiIscyksaD1uYXZpZ2F0b3Iuc2VuZEJlYWNvbihkLHMuZGF0YSk7aWYoaClyZXR1cm59Y2F0Y2goXyl7RnMoXyl9dmFyIG89ci5idWlsZCgieGhyIixzKTt6dChuLG8scy5kYXRhKX12YXIgTmk9ITE7ZnVuY3Rpb24gRnMobil7Tml8fChOaT0hMCxCaShuKSl9ZnVuY3Rpb24gTHMobixyLGEscyxsKXt2YXIgZD1rcygpJiZzLmJ5dGVzQ291bnQ8YTtpZihkKXt2YXIgaD1yLmJ1aWxkKCJmZXRjaCIscyk7ZmV0Y2goaCx7bWV0aG9kOiJQT1NUIixib2R5OnMuZGF0YSxrZWVwYWxpdmU6ITAsbW9kZToiY29ycyJ9KS50aGVuKEIoZnVuY3Rpb24oXyl7cmV0dXJuIGw9PW51bGw/dm9pZCAwOmwoe3N0YXR1czpfLnN0YXR1cyx0eXBlOl8udHlwZX0pfSksQihmdW5jdGlvbigpe3ZhciBfPXIuYnVpbGQoInhociIscyk7enQobixfLHMuZGF0YSxsKX0pKX1lbHNle3ZhciBvPXIuYnVpbGQoInhociIscyk7enQobixvLHMuZGF0YSxsKX19ZnVuY3Rpb24ga3MoKXt0cnl7cmV0dXJuIHdpbmRvdy5SZXF1ZXN0JiYia2VlcGFsaXZlImluIG5ldyBSZXF1ZXN0KCJodHRwOi8vYSIpfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiB6dChuLHIsYSxzKXt2YXIgbD1uZXcgWE1MSHR0cFJlcXVlc3Q7bC5vcGVuKCJQT1NUIixyLCEwKSxhIGluc3RhbmNlb2YgQmxvYiYmbC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGEudHlwZSkscGUobixsLCJsb2FkZW5kIixmdW5jdGlvbigpe3M9PW51bGx8fHMoe3N0YXR1czpsLnN0YXR1c30pfSx7b25jZTohMH0pLGwuc2VuZChhKX1mdW5jdGlvbiBSdCgpe3ZhciBuPXpzKCk7aWYobilyZXR1cm57Z2V0Q2FwYWJpbGl0aWVzOmZ1bmN0aW9uKCl7dmFyIHI7cmV0dXJuIEpTT04ucGFyc2UoKChyPW4uZ2V0Q2FwYWJpbGl0aWVzKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIuY2FsbChuKSl8fCJbXSIpfSxnZXRQcml2YWN5TGV2ZWw6ZnVuY3Rpb24oKXt2YXIgcjtyZXR1cm4ocj1uLmdldFByaXZhY3lMZXZlbCk9PT1udWxsfHxyPT09dm9pZCAwP3ZvaWQgMDpyLmNhbGwobil9LGdldEFsbG93ZWRXZWJWaWV3SG9zdHM6ZnVuY3Rpb24oKXtyZXR1cm4gSlNPTi5wYXJzZShuLmdldEFsbG93ZWRXZWJWaWV3SG9zdHMoKSl9LHNlbmQ6ZnVuY3Rpb24ocixhLHMpe3ZhciBsPXM/e2lkOnN9OnZvaWQgMDtuLnNlbmQoSlNPTi5zdHJpbmdpZnkoe2V2ZW50VHlwZTpyLGV2ZW50OmEsdmlldzpsfSkpfX19ZnVuY3Rpb24gdHQobil7dmFyIHI7bj09PXZvaWQgMCYmKG49KHI9dGUoKS5sb2NhdGlvbik9PT1udWxsfHxyPT09dm9pZCAwP3ZvaWQgMDpyLmhvc3RuYW1lKTt2YXIgYT1SdCgpO3JldHVybiEhYSYmYS5nZXRBbGxvd2VkV2ViVmlld0hvc3RzKCkuc29tZShmdW5jdGlvbihzKXtyZXR1cm4gbj09PXN8fHByKG4sIi4iLmNvbmNhdChzKSl9KX1mdW5jdGlvbiB6cygpe3JldHVybiB0ZSgpLkRhdGFkb2dFdmVudEJyaWRnZX12YXIgaXQ9e0hJRERFTjoidmlzaWJpbGl0eV9oaWRkZW4iLFVOTE9BRElORzoiYmVmb3JlX3VubG9hZCIsUEFHRUhJREU6InBhZ2VfaGlkZSIsRlJPWkVOOiJwYWdlX2Zyb3plbiJ9O2Z1bmN0aW9uIFJzKG4pe3JldHVybiBuZXcgUihmdW5jdGlvbihyKXt2YXIgYT1MdChuLHdpbmRvdyxbInZpc2liaWxpdHljaGFuZ2UiLCJmcmVlemUiXSxmdW5jdGlvbihsKXtsLnR5cGU9PT0idmlzaWJpbGl0eWNoYW5nZSImJmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJoaWRkZW4iP3Iubm90aWZ5KHtyZWFzb246aXQuSElEREVOfSk6bC50eXBlPT09ImZyZWV6ZSImJnIubm90aWZ5KHtyZWFzb246aXQuRlJPWkVOfSl9LHtjYXB0dXJlOiEwfSkuc3RvcCxzPXBlKG4sd2luZG93LCJiZWZvcmV1bmxvYWQiLGZ1bmN0aW9uKCl7ci5ub3RpZnkoe3JlYXNvbjppdC5VTkxPQURJTkd9KX0pLnN0b3A7cmV0dXJuIGZ1bmN0aW9uKCl7YSgpLHMoKX19KX1mdW5jdGlvbiBPcyhuKXtyZXR1cm4geWUobWUoaXQpLG4pfWZ1bmN0aW9uIFBzKG4pe3ZhciByPW4uZW5jb2RlcixhPW4ucmVxdWVzdCxzPW4uZmx1c2hDb250cm9sbGVyLGw9bi5tZXNzYWdlQnl0ZXNMaW1pdCxkPXt9LGg9cy5mbHVzaE9ic2VydmFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKGUpe3JldHVybiBnKGUpfSk7ZnVuY3Rpb24gbyhlLHQsaSl7cy5ub3RpZnlCZWZvcmVBZGRNZXNzYWdlKHQpLGkhPT12b2lkIDA/KGRbaV09ZSxzLm5vdGlmeUFmdGVyQWRkTWVzc2FnZSgpKTpyLndyaXRlKHIuaXNFbXB0eT9lOmAKYC5jb25jYXQoZSksZnVuY3Rpb24oZil7cy5ub3RpZnlBZnRlckFkZE1lc3NhZ2UoZi10KX0pfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIGUhPT12b2lkIDAmJmRbZV0hPT12b2lkIDB9ZnVuY3Rpb24gcChlKXt2YXIgdD1kW2VdO2RlbGV0ZSBkW2VdO3ZhciBpPXIuZXN0aW1hdGVFbmNvZGVkQnl0ZXNDb3VudCh0KTtzLm5vdGlmeUFmdGVyUmVtb3ZlTWVzc2FnZShpKX1mdW5jdGlvbiBjKGUsdCl7dmFyIGk9dWUoZSksZj1yLmVzdGltYXRlRW5jb2RlZEJ5dGVzQ291bnQoaSk7aWYoZj49bCl7ei53YXJuKCJEaXNjYXJkZWQgYSBtZXNzYWdlIHdob3NlIHNpemUgd2FzIGJpZ2dlciB0aGFuIHRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSAiLmNvbmNhdChsLCJLQi4gIikuY29uY2F0KERlLCIgIikuY29uY2F0KEt0LCIvI3RlY2huaWNhbC1saW1pdGF0aW9ucyIpKTtyZXR1cm59Xyh0KSYmcCh0KSxvKGksZix0KX1mdW5jdGlvbiBnKGUpe3ZhciB0PW1lKGQpLmpvaW4oYApgKTtkPXt9O3ZhciBpPU9zKGUucmVhc29uKSxmPWk/YS5zZW5kT25FeGl0OmEuc2VuZDtpZihpJiZyLmlzQXN5bmMpe3ZhciB1PXIuZmluaXNoU3luYygpO3Uub3V0cHV0Qnl0ZXNDb3VudCYmZihNaSh1KSk7dmFyIHY9W3UucGVuZGluZ0RhdGEsdF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oYApgKTt2JiZmKHtkYXRhOnYsYnl0ZXNDb3VudDpjdCh2KX0pfWVsc2UgdCYmci53cml0ZShyLmlzRW1wdHk/dDpgCmAuY29uY2F0KHQpKSxyLmZpbmlzaChmdW5jdGlvbih5KXtmKE1pKHkpKX0pfXJldHVybntmbHVzaENvbnRyb2xsZXI6cyxhZGQ6Yyx1cHNlcnQ6YyxzdG9wOmgudW5zdWJzY3JpYmV9fWZ1bmN0aW9uIE1pKG4pe3ZhciByO3JldHVybiB0eXBlb2Ygbi5vdXRwdXQ9PSJzdHJpbmciP3I9bi5vdXRwdXQ6cj1uZXcgQmxvYihbbi5vdXRwdXRdLHt0eXBlOiJ0ZXh0L3BsYWluIn0pLHtkYXRhOnIsYnl0ZXNDb3VudDpuLm91dHB1dEJ5dGVzQ291bnQsZW5jb2Rpbmc6bi5lbmNvZGluZ319ZnVuY3Rpb24gRHMobil7dmFyIHI9bi5tZXNzYWdlc0xpbWl0LGE9bi5ieXRlc0xpbWl0LHM9bi5kdXJhdGlvbkxpbWl0LGw9bi5wYWdlRXhpdE9ic2VydmFibGUsZD1uLnNlc3Npb25FeHBpcmVPYnNlcnZhYmxlLGg9bC5zdWJzY3JpYmUoZnVuY3Rpb24oZil7cmV0dXJuIGcoZi5yZWFzb24pfSksbz1kLnN1YnNjcmliZShmdW5jdGlvbigpe3JldHVybiBnKCJzZXNzaW9uX2V4cGlyZSIpfSksXz1uZXcgUihmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2gudW5zdWJzY3JpYmUoKSxvLnVuc3Vic2NyaWJlKCl9fSkscD0wLGM9MDtmdW5jdGlvbiBnKGYpe2lmKGMhPT0wKXt2YXIgdT1jLHY9cDtjPTAscD0wLGkoKSxfLm5vdGlmeSh7cmVhc29uOmYsbWVzc2FnZXNDb3VudDp1LGJ5dGVzQ291bnQ6dn0pfX12YXIgZTtmdW5jdGlvbiB0KCl7ZT09PXZvaWQgMCYmKGU9RmUoZnVuY3Rpb24oKXtnKCJkdXJhdGlvbl9saW1pdCIpfSxzKSl9ZnVuY3Rpb24gaSgpe1p0KGUpLGU9dm9pZCAwfXJldHVybntmbHVzaE9ic2VydmFibGU6XyxnZXQgbWVzc2FnZXNDb3VudCgpe3JldHVybiBjfSxub3RpZnlCZWZvcmVBZGRNZXNzYWdlOmZ1bmN0aW9uKGYpe3ArZj49YSYmZygiYnl0ZXNfbGltaXQiKSxjKz0xLHArPWYsdCgpfSxub3RpZnlBZnRlckFkZE1lc3NhZ2U6ZnVuY3Rpb24oZil7Zj09PXZvaWQgMCYmKGY9MCkscCs9ZixjPj1yP2coIm1lc3NhZ2VzX2xpbWl0Iik6cD49YSYmZygiYnl0ZXNfbGltaXQiKX0sbm90aWZ5QWZ0ZXJSZW1vdmVNZXNzYWdlOmZ1bmN0aW9uKGYpe3AtPWYsYy09MSxjPT09MCYmaSgpfX19ZnVuY3Rpb24gR2kobixyLGEscyxsLGQsaCl7aD09PXZvaWQgMCYmKGg9UHMpO3ZhciBvPXAobixyKSxfPWEmJnAobixhKTtmdW5jdGlvbiBwKGMsZyl7dmFyIGU9Zy5lbmRwb2ludCx0PWcuZW5jb2RlcjtyZXR1cm4gaCh7ZW5jb2Rlcjp0LHJlcXVlc3Q6SXMoYyxlLGMuYmF0Y2hCeXRlc0xpbWl0LHMpLGZsdXNoQ29udHJvbGxlcjpEcyh7bWVzc2FnZXNMaW1pdDpjLmJhdGNoTWVzc2FnZXNMaW1pdCxieXRlc0xpbWl0OmMuYmF0Y2hCeXRlc0xpbWl0LGR1cmF0aW9uTGltaXQ6Yy5mbHVzaFRpbWVvdXQscGFnZUV4aXRPYnNlcnZhYmxlOmwsc2Vzc2lvbkV4cGlyZU9ic2VydmFibGU6ZH0pLG1lc3NhZ2VCeXRlc0xpbWl0OmMubWVzc2FnZUJ5dGVzTGltaXR9KX1yZXR1cm57Zmx1c2hPYnNlcnZhYmxlOm8uZmx1c2hDb250cm9sbGVyLmZsdXNoT2JzZXJ2YWJsZSxhZGQ6ZnVuY3Rpb24oYyxnKXtnPT09dm9pZCAwJiYoZz0hMCksby5hZGQoYyksXyYmZyYmXy5hZGQoYS50cmFuc2Zvcm1NZXNzYWdlP2EudHJhbnNmb3JtTWVzc2FnZShjKTpjKX0sdXBzZXJ0OmZ1bmN0aW9uKGMsZyl7by51cHNlcnQoYyxnKSxfJiZfLnVwc2VydChhLnRyYW5zZm9ybU1lc3NhZ2U/YS50cmFuc2Zvcm1NZXNzYWdlKGMpOmMsZyl9LHN0b3A6ZnVuY3Rpb24oKXtvLnN0b3AoKSxfJiZfLnN0b3AoKX19fWZ1bmN0aW9uIHJ0KCl7dmFyIG49IiIscj0wO3JldHVybntpc0FzeW5jOiExLGdldCBpc0VtcHR5KCl7cmV0dXJuIW59LHdyaXRlOmZ1bmN0aW9uKGEscyl7dmFyIGw9Y3QoYSk7cis9bCxuKz1hLHMmJnMobCl9LGZpbmlzaDpmdW5jdGlvbihhKXthKHRoaXMuZmluaXNoU3luYygpKX0sZmluaXNoU3luYzpmdW5jdGlvbigpe3ZhciBhPXtvdXRwdXQ6bixvdXRwdXRCeXRlc0NvdW50OnIscmF3Qnl0ZXNDb3VudDpyLHBlbmRpbmdEYXRhOiIifTtyZXR1cm4gbj0iIixyPTAsYX0sZXN0aW1hdGVFbmNvZGVkQnl0ZXNDb3VudDpmdW5jdGlvbihhKXtyZXR1cm4gYS5sZW5ndGh9fX12YXIgTnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dGhpcy5jYWxsYmFja3M9e319cmV0dXJuIG4ucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbihyLGEpe3ZhciBzPXRoaXMuY2FsbGJhY2tzW3JdO3MmJnMuZm9yRWFjaChmdW5jdGlvbihsKXtyZXR1cm4gbChhKX0pfSxuLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24ocixhKXt2YXIgcz10aGlzO3JldHVybiB0aGlzLmNhbGxiYWNrc1tyXXx8KHRoaXMuY2FsbGJhY2tzW3JdPVtdKSx0aGlzLmNhbGxiYWNrc1tyXS5wdXNoKGEpLHt1bnN1YnNjcmliZTpmdW5jdGlvbigpe3MuY2FsbGJhY2tzW3JdPXMuY2FsbGJhY2tzW3JdLmZpbHRlcihmdW5jdGlvbihsKXtyZXR1cm4gYSE9PWx9KX19fSxufSgpO2Z1bmN0aW9uIE1zKG4scixhKXt2YXIgcz0wLGw9ITE7cmV0dXJue2lzTGltaXRSZWFjaGVkOmZ1bmN0aW9uKCl7aWYocz09PTAmJkZlKGZ1bmN0aW9uKCl7cz0wfSxzZSkscys9MSxzPD1yfHxsKXJldHVybiBsPSExLCExO2lmKHM9PT1yKzEpe2w9ITA7dHJ5e2Eoe21lc3NhZ2U6IlJlYWNoZWQgbWF4IG51bWJlciBvZiAiLmNvbmNhdChuLCJzIGJ5IG1pbnV0ZTogIikuY29uY2F0KHIpLHNvdXJjZTpILkFHRU5ULHN0YXJ0Q2xvY2tzOmVlKCl9KX1maW5hbGx5e2w9ITF9fXJldHVybiEwfX19dmFyIE90LFB0PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEdzKG4pe3JldHVybiBPdHx8KE90PUhzKG4pKSxPdH1mdW5jdGlvbiBIcyhuKXtyZXR1cm4gbmV3IFIoZnVuY3Rpb24ocil7dmFyIGE9Y2UoWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJvcGVuIixZcykuc3RvcCxzPWNlKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwic2VuZCIsZnVuY3Rpb24oZCl7VnMoZCxuLHIpfSx7Y29tcHV0ZUhhbmRsaW5nU3RhY2s6ITB9KS5zdG9wLGw9Y2UoWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJhYm9ydCIsanMpLnN0b3A7cmV0dXJuIGZ1bmN0aW9uKCl7YSgpLHMoKSxsKCl9fSl9ZnVuY3Rpb24gWXMobil7dmFyIHI9bi50YXJnZXQsYT1uLnBhcmFtZXRlcnMscz1hWzBdLGw9YVsxXTtQdC5zZXQocix7c3RhdGU6Im9wZW4iLG1ldGhvZDpTdHJpbmcocykudG9VcHBlckNhc2UoKSx1cmw6QXQoU3RyaW5nKGwpKX0pfWZ1bmN0aW9uIFZzKG4scixhKXt2YXIgcz1uLnRhcmdldCxsPW4uaGFuZGxpbmdTdGFjayxkPVB0LmdldChzKTtpZihkKXt2YXIgaD1kO2guc3RhdGU9InN0YXJ0IixoLnN0YXJ0Q2xvY2tzPWVlKCksaC5pc0Fib3J0ZWQ9ITEsaC54aHI9cyxoLmhhbmRsaW5nU3RhY2s9bDt2YXIgbz0hMSxfPWNlKHMsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsZnVuY3Rpb24oKXtzLnJlYWR5U3RhdGU9PT1YTUxIdHRwUmVxdWVzdC5ET05FJiZwKCl9KS5zdG9wLHA9ZnVuY3Rpb24oKXtpZihjKCksXygpLCFvKXtvPSEwO3ZhciBnPWQ7Zy5zdGF0ZT0iY29tcGxldGUiLGcuZHVyYXRpb249ZnIoaC5zdGFydENsb2Nrcy50aW1lU3RhbXAsUSgpKSxnLnN0YXR1cz1zLnN0YXR1cyxhLm5vdGlmeShfcihnKSl9fSxjPXBlKHIscywibG9hZGVuZCIscCkuc3RvcDthLm5vdGlmeShoKX19ZnVuY3Rpb24ganMobil7dmFyIHI9bi50YXJnZXQsYT1QdC5nZXQocik7YSYmKGEuaXNBYm9ydGVkPSEwKX12YXIgRHQ7ZnVuY3Rpb24gSGkoKXtyZXR1cm4gRHR8fChEdD1LcygpKSxEdH1mdW5jdGlvbiBLcygpe3JldHVybiBuZXcgUihmdW5jdGlvbihuKXtpZih3aW5kb3cuZmV0Y2gpe3ZhciByPWNlKHdpbmRvdywiZmV0Y2giLGZ1bmN0aW9uKGEpe3JldHVybiBxcyhhLG4pfSx7Y29tcHV0ZUhhbmRsaW5nU3RhY2s6ITB9KS5zdG9wO3JldHVybiByfX0pfWZ1bmN0aW9uIHFzKG4scil7dmFyIGE9bi5wYXJhbWV0ZXJzLHM9bi5vblBvc3RDYWxsLGw9bi5oYW5kbGluZ1N0YWNrLGQ9YVswXSxoPWFbMV0sbz1oJiZoLm1ldGhvZDtvPT09dm9pZCAwJiZkIGluc3RhbmNlb2YgUmVxdWVzdCYmKG89ZC5tZXRob2QpO3ZhciBfPW8hPT12b2lkIDA/U3RyaW5nKG8pLnRvVXBwZXJDYXNlKCk6IkdFVCIscD1kIGluc3RhbmNlb2YgUmVxdWVzdD9kLnVybDpBdChTdHJpbmcoZCkpLGM9ZWUoKSxnPXtzdGF0ZToic3RhcnQiLGluaXQ6aCxpbnB1dDpkLG1ldGhvZDpfLHN0YXJ0Q2xvY2tzOmMsdXJsOnAsaGFuZGxpbmdTdGFjazpsfTtyLm5vdGlmeShnKSxhWzBdPWcuaW5wdXQsYVsxXT1nLmluaXQscyhmdW5jdGlvbihlKXtyZXR1cm4gV3MocixlLGcpfSl9ZnVuY3Rpb24gV3MobixyLGEpe3ZhciBzPWE7ZnVuY3Rpb24gbChkKXtzLnN0YXRlPSJyZXNvbHZlIixPKHMsZCksbi5ub3RpZnkocyl9ci50aGVuKEIoZnVuY3Rpb24oZCl7bCh7cmVzcG9uc2U6ZCxyZXNwb25zZVR5cGU6ZC50eXBlLHN0YXR1czpkLnN0YXR1cyxpc0Fib3J0ZWQ6ITF9KX0pLEIoZnVuY3Rpb24oZCl7dmFyIGgsbztsKHtzdGF0dXM6MCxpc0Fib3J0ZWQ6KChvPShoPXMuaW5pdCk9PT1udWxsfHxoPT09dm9pZCAwP3ZvaWQgMDpoLnNpZ25hbCk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLmFib3J0ZWQpfHxkIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiZkLmNvZGU9PT1ET01FeGNlcHRpb24uQUJPUlRfRVJSLGVycm9yOmR9KX0pKX12YXIgTnQ9e307ZnVuY3Rpb24gWHMobil7dmFyIHI9bi5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIE50W2FdfHwoTnRbYV09SnMoYSkpLE50W2FdfSk7cmV0dXJuIGVpLmFwcGx5KHZvaWQgMCxyKX1mdW5jdGlvbiBKcyhuKXtyZXR1cm4gbmV3IFIoZnVuY3Rpb24ocil7dmFyIGE9V1tuXTtyZXR1cm4gV1tuXT1mdW5jdGlvbigpe2Zvcih2YXIgcz1bXSxsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKylzW2xdPWFyZ3VtZW50c1tsXTthLmFwcGx5KGNvbnNvbGUscyk7dmFyIGQ9JGUoKTtCZShmdW5jdGlvbigpe3Iubm90aWZ5KCRzKHMsbixkKSl9KX0sZnVuY3Rpb24oKXtXW25dPWF9fSl9ZnVuY3Rpb24gJHMobixyLGEpe3ZhciBzPW4ubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBacyhoKX0pLmpvaW4oIiAiKSxsO2lmKHI9PT1MLmVycm9yKXt2YXIgZD1ocihuLGZ1bmN0aW9uKGgpe3JldHVybiBoIGluc3RhbmNlb2YgRXJyb3J9KTtsPXtzdGFjazpkP2hlKEooZCkpOnZvaWQgMCxmaW5nZXJwcmludDptaShkKSxjYXVzZXM6ZD9iaShkLCJjb25zb2xlIik6dm9pZCAwLHN0YXJ0Q2xvY2tzOmVlKCksbWVzc2FnZTpzLHNvdXJjZTpILkNPTlNPTEUsaGFuZGxpbmc6ImhhbmRsZWQiLGhhbmRsaW5nU3RhY2s6YX19cmV0dXJue2FwaTpyLG1lc3NhZ2U6cyxlcnJvcjpsLGhhbmRsaW5nU3RhY2s6YX19ZnVuY3Rpb24gWnMobil7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIj8kKG4pOm4gaW5zdGFuY2VvZiBFcnJvcj92aShKKG4pKTp1ZSgkKG4pLHZvaWQgMCwyKX1mdW5jdGlvbiBNdChuKXt2YXIgcj17fSxhPW5ldyBSLHM9e2dldENvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gRWkocil9LHNldENvbnRleHQ6ZnVuY3Rpb24obCl7a3QobCk9PT0ib2JqZWN0Ij8ocj0kKGwpLG4mJm4udXBkYXRlQ3VzdG9tZXJEYXRhKHIpKTpzLmNsZWFyQ29udGV4dCgpLGEubm90aWZ5KCl9LHNldENvbnRleHRQcm9wZXJ0eTpmdW5jdGlvbihsLGQpe3JbbF09JChkKSxuJiZuLnVwZGF0ZUN1c3RvbWVyRGF0YShyKSxhLm5vdGlmeSgpfSxyZW1vdmVDb250ZXh0UHJvcGVydHk6ZnVuY3Rpb24obCl7ZGVsZXRlIHJbbF0sbiYmbi51cGRhdGVDdXN0b21lckRhdGEociksYS5ub3RpZnkoKX0sY2xlYXJDb250ZXh0OmZ1bmN0aW9uKCl7cj17fSxuJiZuLnJlc2V0Q3VzdG9tZXJEYXRhKCksYS5ub3RpZnkoKX0sY2hhbmdlT2JzZXJ2YWJsZTphfTtyZXR1cm4gc312YXIgUXM9Il9kZF9jIixlbz1bXTtmdW5jdGlvbiBZaShuLHIsYSxzKXt2YXIgbD10byhhLHMpO2VvLnB1c2gocGUobix3aW5kb3csInN0b3JhZ2UiLGZ1bmN0aW9uKF8pe3ZhciBwPV8ua2V5O2w9PT1wJiZkKCl9KSksci5jaGFuZ2VPYnNlcnZhYmxlLnN1YnNjcmliZShoKSxyLnNldENvbnRleHQod2UobygpLHIuZ2V0Q29udGV4dCgpKSk7ZnVuY3Rpb24gZCgpe3Iuc2V0Q29udGV4dChvKCkpfWZ1bmN0aW9uIGgoKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsLEpTT04uc3RyaW5naWZ5KHIuZ2V0Q29udGV4dCgpKSl9ZnVuY3Rpb24gbygpe3ZhciBfPWxvY2FsU3RvcmFnZS5nZXRJdGVtKGwpO3JldHVybiBfIT09bnVsbD9KU09OLnBhcnNlKF8pOnt9fX1mdW5jdGlvbiB0byhuLHIpe3JldHVybiIiLmNvbmNhdChRcywiXyIpLmNvbmNhdChuLCJfIikuY29uY2F0KHIpfXZhciBpbz0zKlgscm89MTYqWCxubz0yMDA7ZnVuY3Rpb24gc28obil7bj09PXZvaWQgMCYmKG49Mik7dmFyIHI9bmV3IE1hcCxhPSExO2Z1bmN0aW9uIHMobCl7aWYobD09PXZvaWQgMCYmKGw9MCksIShhfHxuPT09MCkpe3ZhciBkPW49PT0yP2lvOnJvLGg9bDtyLmZvckVhY2goZnVuY3Rpb24obyl7aCs9by5nZXRCeXRlc0NvdW50KCl9KSxoPmQmJihvbyhkKSxhPSEwKX19cmV0dXJue2NyZWF0ZURldGFjaGVkVHJhY2tlcjpmdW5jdGlvbigpe3ZhciBsPVZpKGZ1bmN0aW9uKCl7cmV0dXJuIHMobC5nZXRCeXRlc0NvdW50KCkpfSk7cmV0dXJuIGx9LGdldE9yQ3JlYXRlVHJhY2tlcjpmdW5jdGlvbihsKXtyZXR1cm4gci5oYXMobCl8fHIuc2V0KGwsVmkocykpLHIuZ2V0KGwpfSxzZXRDb21wcmVzc2lvblN0YXR1czpmdW5jdGlvbihsKXtuPT09MCYmKG49bCxzKCkpfSxnZXRDb21wcmVzc2lvblN0YXR1czpmdW5jdGlvbigpe3JldHVybiBufSxzdG9wOmZ1bmN0aW9uKCl7ci5mb3JFYWNoKGZ1bmN0aW9uKGwpe3JldHVybiBsLnN0b3AoKX0pLHIuY2xlYXIoKX19fWZ1bmN0aW9uIFZpKG4pe3ZhciByPTAsYT10aShmdW5jdGlvbihoKXtyPWN0KHVlKGgpKSxuKCl9LG5vKSxzPWEudGhyb3R0bGVkLGw9YS5jYW5jZWwsZD1mdW5jdGlvbigpe2woKSxyPTB9O3JldHVybnt1cGRhdGVDdXN0b21lckRhdGE6ZnVuY3Rpb24oaCl7dnQoaCk/ZCgpOnMoaCl9LHJlc2V0Q3VzdG9tZXJEYXRhOmQsZ2V0Qnl0ZXNDb3VudDpmdW5jdGlvbigpe3JldHVybiByfSxzdG9wOmZ1bmN0aW9uKCl7bCgpfX19ZnVuY3Rpb24gb28obil7ei53YXJuKCJDdXN0b21lciBkYXRhIGV4Y2VlZHMgdGhlIHJlY29tbWVuZGVkICIuY29uY2F0KG4vWCwiS2lCIHRocmVzaG9sZC4gIikuY29uY2F0KERlLCIgIikuY29uY2F0KEt0LCIvI2N1c3RvbWVyLWRhdGEtZXhjZWVkcy10aGUtcmVjb21tZW5kZWQtdGhyZXNob2xkLXdhcm5pbmciKSl9ZnVuY3Rpb24gYW8obixyLGEpe3ZhciBzPW4uZ2V0UmVhZGVyKCksbD1bXSxkPTA7aCgpO2Z1bmN0aW9uIGgoKXtzLnJlYWQoKS50aGVuKEIoZnVuY3Rpb24oXyl7aWYoXy5kb25lKXtvKCk7cmV0dXJufWwucHVzaChfLnZhbHVlKSxkKz1fLnZhbHVlLmxlbmd0aCxkPmEuYnl0ZXNMaW1pdD9vKCk6aCgpfSksQihmdW5jdGlvbihfKXtyZXR1cm4gcihfKX0pKX1mdW5jdGlvbiBvKCl7cy5jYW5jZWwoKS5jYXRjaChpZSk7dmFyIF8scDt7dmFyIGM7aWYobC5sZW5ndGg9PT0xKWM9bFswXTtlbHNle2M9bmV3IFVpbnQ4QXJyYXkoZCk7dmFyIGc9MDtsLmZvckVhY2goZnVuY3Rpb24oZSl7Yy5zZXQoZSxnKSxnKz1lLmxlbmd0aH0pfV89Yy5zbGljZSgwLGEuYnl0ZXNMaW1pdCkscD1jLmxlbmd0aD5hLmJ5dGVzTGltaXR9cih2b2lkIDAsXyxwKX19dmFyIGZvPSJkYXRhZG9nLXN5bnRoZXRpY3MtcHVibGljLWlkIixsbz0iZGF0YWRvZy1zeW50aGV0aWNzLXJlc3VsdC1pZCIsdW89ImRhdGFkb2ctc3ludGhldGljcy1pbmplY3RzLXJ1bSI7ZnVuY3Rpb24gamkoKXtyZXR1cm4hISh3aW5kb3cuX0RBVEFET0dfU1lOVEhFVElDU19JTkpFQ1RTX1JVTXx8YWUodW8pKX1mdW5jdGlvbiBobygpe3ZhciBuPXdpbmRvdy5fREFUQURPR19TWU5USEVUSUNTX1BVQkxJQ19JRHx8YWUoZm8pO3JldHVybiB0eXBlb2Ygbj09InN0cmluZyI/bjp2b2lkIDB9ZnVuY3Rpb24gY28oKXt2YXIgbj13aW5kb3cuX0RBVEFET0dfU1lOVEhFVElDU19SRVNVTFRfSUR8fGFlKGxvKTtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciP246dm9pZCAwfWZ1bmN0aW9uIEtpKG4pe3ZhciByPU8oe30sbiksYT1bImlkIiwibmFtZSIsImVtYWlsIl07cmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihzKXtzIGluIHImJihyW3NdPVN0cmluZyhyW3NdKSl9KSxyfWZ1bmN0aW9uIHBvKG4pe3ZhciByPWt0KG4pPT09Im9iamVjdCI7cmV0dXJuIHJ8fHouZXJyb3IoIlVuc3VwcG9ydGVkIHVzZXI6IixuKSxyfXZhciBWO2Z1bmN0aW9uIG50KG4scixhKXt2YXIgcz1hLmdldEhhbmRsZXIoKSxsPUFycmF5LmlzQXJyYXkocyk/czpbc107cmV0dXJuIHFpW25dPj1xaVthLmdldExldmVsKCldJiZ5ZShsLHIpfXZhciBDPXtvazoib2siLGRlYnVnOiJkZWJ1ZyIsaW5mbzoiaW5mbyIsbm90aWNlOiJub3RpY2UiLHdhcm46Indhcm4iLGVycm9yOiJlcnJvciIsY3JpdGljYWw6ImNyaXRpY2FsIixhbGVydDoiYWxlcnQiLGVtZXJnOiJlbWVyZyJ9LHFpPShWPXt9LFZbQy5va109MCxWW0MuZGVidWddPTEsVltDLmluZm9dPTIsVltDLm5vdGljZV09NCxWW0Mud2Fybl09NSxWW0MuZXJyb3JdPTYsVltDLmNyaXRpY2FsXT03LFZbQy5hbGVydF09OCxWW0MuZW1lcmddPTksVik7ZnVuY3Rpb24gc3QobixyKXt2YXIgYT1yPT09dm9pZCAwP3t9OnIscz1hLmluY2x1ZGVNZXNzYWdlLGw9cz09PXZvaWQgMD8hMTpzO3JldHVybntzdGFjazpuLnN0YWNrLGtpbmQ6bi50eXBlLG1lc3NhZ2U6bD9uLm1lc3NhZ2U6dm9pZCAwLGNhdXNlczpuLmNhdXNlcyxmaW5nZXJwcmludDpuLmZpbmdlcnByaW50LGhhbmRsaW5nOm4uaGFuZGxpbmd9fXZhciBfbz1mdW5jdGlvbihuLHIsYSxzKXt2YXIgbD1hcmd1bWVudHMubGVuZ3RoLGQ9bDwzP3I6cz09PW51bGw/cz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsYSk6cyxoO2lmKHR5cGVvZiBSZWZsZWN0PT0ib2JqZWN0IiYmdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGU9PSJmdW5jdGlvbiIpZD1SZWZsZWN0LmRlY29yYXRlKG4scixhLHMpO2Vsc2UgZm9yKHZhciBvPW4ubGVuZ3RoLTE7bz49MDtvLS0pKGg9bltvXSkmJihkPShsPDM/aChkKTpsPjM/aChyLGEsZCk6aChyLGEpKXx8ZCk7cmV0dXJuIGw+MyYmZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsYSxkKSxkfSxSZT17Y29uc29sZToiY29uc29sZSIsaHR0cDoiaHR0cCIsc2lsZW50OiJzaWxlbnQifSx2bz1PYmplY3Qua2V5cyhDKSxqPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihyLGEscyxsLGQsaCl7bD09PXZvaWQgMCYmKGw9UmUuaHR0cCksZD09PXZvaWQgMCYmKGQ9Qy5kZWJ1ZyksaD09PXZvaWQgMCYmKGg9e30pLHRoaXMuaGFuZGxlTG9nU3RyYXRlZ3k9cix0aGlzLmhhbmRsZXJUeXBlPWwsdGhpcy5sZXZlbD1kLHRoaXMuY29udGV4dE1hbmFnZXI9TXQoYSksdGhpcy5jb250ZXh0TWFuYWdlci5zZXRDb250ZXh0KGgpLHMmJnRoaXMuY29udGV4dE1hbmFnZXIuc2V0Q29udGV4dFByb3BlcnR5KCJsb2dnZXIiLHtuYW1lOnN9KX1yZXR1cm4gbi5wcm90b3R5cGUubG9nSW1wbGVtZW50YXRpb249ZnVuY3Rpb24ocixhLHMsbCxkKXtzPT09dm9pZCAwJiYocz1DLmluZm8pO3ZhciBoPSQoYSksbztpZihsIT1udWxsKXt2YXIgXz15aSh7c3RhY2tUcmFjZTpsIGluc3RhbmNlb2YgRXJyb3I/SihsKTp2b2lkIDAsb3JpZ2luYWxFcnJvcjpsLG5vbkVycm9yUHJlZml4OiJQcm92aWRlZCIsc291cmNlOkguTE9HR0VSLGhhbmRsaW5nOiJoYW5kbGVkIixzdGFydENsb2NrczplZSgpfSk7bz13ZSh7ZXJyb3I6c3QoXyx7aW5jbHVkZU1lc3NhZ2U6ITB9KX0saCl9ZWxzZSBvPWg7dGhpcy5oYW5kbGVMb2dTdHJhdGVneSh7bWVzc2FnZTokKHIpLGNvbnRleHQ6byxzdGF0dXM6c30sdGhpcyxkKX0sbi5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHIsYSxzLGwpe3M9PT12b2lkIDAmJihzPUMuaW5mbyk7dmFyIGQ7bnQocyxSZS5odHRwLHRoaXMpJiYoZD0kZSgpKSx0aGlzLmxvZ0ltcGxlbWVudGF0aW9uKHIsYSxzLGwsZCl9LG4ucHJvdG90eXBlLnNldENvbnRleHQ9ZnVuY3Rpb24ocil7dGhpcy5jb250ZXh0TWFuYWdlci5zZXRDb250ZXh0KHIpfSxuLnByb3RvdHlwZS5nZXRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dE1hbmFnZXIuZ2V0Q29udGV4dCgpfSxuLnByb3RvdHlwZS5zZXRDb250ZXh0UHJvcGVydHk9ZnVuY3Rpb24ocixhKXt0aGlzLmNvbnRleHRNYW5hZ2VyLnNldENvbnRleHRQcm9wZXJ0eShyLGEpfSxuLnByb3RvdHlwZS5yZW1vdmVDb250ZXh0UHJvcGVydHk9ZnVuY3Rpb24ocil7dGhpcy5jb250ZXh0TWFuYWdlci5yZW1vdmVDb250ZXh0UHJvcGVydHkocil9LG4ucHJvdG90eXBlLmNsZWFyQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuY29udGV4dE1hbmFnZXIuY2xlYXJDb250ZXh0KCl9LG4ucHJvdG90eXBlLnNldEhhbmRsZXI9ZnVuY3Rpb24ocil7dGhpcy5oYW5kbGVyVHlwZT1yfSxuLnByb3RvdHlwZS5nZXRIYW5kbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFuZGxlclR5cGV9LG4ucHJvdG90eXBlLnNldExldmVsPWZ1bmN0aW9uKHIpe3RoaXMubGV2ZWw9cn0sbi5wcm90b3R5cGUuZ2V0TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZXZlbH0sX28oW21yXSxuLnByb3RvdHlwZSwibG9nSW1wbGVtZW50YXRpb24iLG51bGwpLG59KCk7ai5wcm90b3R5cGUub2s9WihDLm9rKSxqLnByb3RvdHlwZS5kZWJ1Zz1aKEMuZGVidWcpLGoucHJvdG90eXBlLmluZm89WihDLmluZm8pLGoucHJvdG90eXBlLm5vdGljZT1aKEMubm90aWNlKSxqLnByb3RvdHlwZS53YXJuPVooQy53YXJuKSxqLnByb3RvdHlwZS5lcnJvcj1aKEMuZXJyb3IpLGoucHJvdG90eXBlLmNyaXRpY2FsPVooQy5jcml0aWNhbCksai5wcm90b3R5cGUuYWxlcnQ9WihDLmFsZXJ0KSxqLnByb3RvdHlwZS5lbWVyZz1aKEMuZW1lcmcpO2Z1bmN0aW9uIFoobil7cmV0dXJuIGZ1bmN0aW9uKHIsYSxzKXt2YXIgbDtudChuLFJlLmh0dHAsdGhpcykmJihsPSRlKCkpLHRoaXMubG9nSW1wbGVtZW50YXRpb24ocixhLG4scyxsKX19ZnVuY3Rpb24gZ28obixyKXtyZXR1cm57dmlldzp7cmVmZXJyZXI6ZG9jdW1lbnQucmVmZXJyZXIsdXJsOndpbmRvdy5sb2NhdGlvbi5ocmVmfSxjb250ZXh0Om4uZ2V0Q29udGV4dCgpLHVzZXI6ci5nZXRDb250ZXh0KCl9fXZhciB5bz0zMipYO2Z1bmN0aW9uIG1vKG4pe24udXNlUGNpSW50YWtlPT09ITAmJm4uc2l0ZSYmbi5zaXRlIT09ImRhdGFkb2docS5jb20iJiZ6Lndhcm4oIlBDSSBjb21wbGlhbmNlIGZvciBMb2dzIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBEYXRhZG9nIG9yZ2FuaXphdGlvbnMgaW4gdGhlIFVTMSBzaXRlLiBEZWZhdWx0IGludGFrZSB3aWxsIGJlIHVzZWQuIik7dmFyIHI9Z24obiksYT1XaShuLmZvcndhcmRDb25zb2xlTG9ncyxtZShMKSwiRm9yd2FyZCBDb25zb2xlIExvZ3MiKSxzPVdpKG4uZm9yd2FyZFJlcG9ydHMsbWUoWmUpLCJGb3J3YXJkIFJlcG9ydHMiKTtpZighKCFyfHwhYXx8IXMpKXJldHVybiBuLmZvcndhcmRFcnJvcnNUb0xvZ3MmJiF5ZShhLEwuZXJyb3IpJiZhLnB1c2goTC5lcnJvciksTyh7Zm9yd2FyZEVycm9yc1RvTG9nczpuLmZvcndhcmRFcnJvcnNUb0xvZ3MhPT0hMSxmb3J3YXJkQ29uc29sZUxvZ3M6YSxmb3J3YXJkUmVwb3J0czpzLHJlcXVlc3RFcnJvclJlc3BvbnNlTGVuZ3RoTGltaXQ6eW8sc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9uOiEhbi5zZW5kTG9nc0FmdGVyU2Vzc2lvbkV4cGlyYXRpb259LHIpfWZ1bmN0aW9uIFdpKG4scixhKXtpZihuPT09dm9pZCAwKXJldHVybltdO2lmKCEobj09PSJhbGwifHxBcnJheS5pc0FycmF5KG4pJiZuLmV2ZXJ5KGZ1bmN0aW9uKHMpe3JldHVybiB5ZShyLHMpfSkpKXt6LmVycm9yKCIiLmNvbmNhdChhLCcgc2hvdWxkIGJlICJhbGwiIG9yIGFuIGFycmF5IHdpdGggYWxsb3dlZCB2YWx1ZXMgIicpLmNvbmNhdChyLmpvaW4oJyIsICInKSwnIicpKTtyZXR1cm59cmV0dXJuIG49PT0iYWxsIj9yOmlzKG4pfWZ1bmN0aW9uIGJvKG4pe3ZhciByPXluKG4pO3JldHVybiBPKHtmb3J3YXJkX2Vycm9yc190b19sb2dzOm4uZm9yd2FyZEVycm9yc1RvTG9ncyxmb3J3YXJkX2NvbnNvbGVfbG9nczpuLmZvcndhcmRDb25zb2xlTG9ncyxmb3J3YXJkX3JlcG9ydHM6bi5mb3J3YXJkUmVwb3J0cyx1c2VfcGNpX2ludGFrZTpuLnVzZVBjaUludGFrZSxzZW5kX2xvZ3NfYWZ0ZXJfc2Vzc2lvbl9leHBpcmF0aW9uOm4uc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9ufSxyKX1mdW5jdGlvbiBTbyhuLHIsYSl7dmFyIHM9Q2koKSxsLGQsaD1yLm9ic2VydmFibGUuc3Vic2NyaWJlKG8pO2Z1bmN0aW9uIG8oKXtpZighKCFkfHwhbHx8IXIuaXNHcmFudGVkKCkpKXtoLnVuc3Vic2NyaWJlKCk7dmFyIF89YShsLGQpO3MuZHJhaW4oXyl9fXJldHVybntpbml0OmZ1bmN0aW9uKF8pe2lmKCFfKXt6LmVycm9yKCJNaXNzaW5nIGNvbmZpZ3VyYXRpb24iKTtyZXR1cm59aWYobW4oXy5lbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyksdHQoKSYmKF89eG8oXykpLGw9XyxkKXtTaSgiRERfTE9HUyIsXyk7cmV0dXJufXZhciBwPW1vKF8pO3AmJihkPXAsSGkoKS5zdWJzY3JpYmUoaWUpLHIudHJ5VG9Jbml0KHAudHJhY2tpbmdDb25zZW50KSxvKCkpfSxnZXQgaW5pdENvbmZpZ3VyYXRpb24oKXtyZXR1cm4gbH0sZ2V0SW50ZXJuYWxDb250ZXh0OmllLGhhbmRsZUxvZzpmdW5jdGlvbihfLHAsYyxnLGUpe2c9PT12b2lkIDAmJihnPW4oKSksZT09PXZvaWQgMCYmKGU9USgpKSxzLmFkZChmdW5jdGlvbih0KXtyZXR1cm4gdC5oYW5kbGVMb2coXyxwLGMsZyxlKX0pfX19ZnVuY3Rpb24geG8obil7cmV0dXJuIE8oe30sbix7Y2xpZW50VG9rZW46ImVtcHR5In0pfXZhciBYaT0ibG9ncyI7ZnVuY3Rpb24gVW8obil7dmFyIHI9c28oKSxhPU10KHIuZ2V0T3JDcmVhdGVUcmFja2VyKDIpKSxzPU10KHIuZ2V0T3JDcmVhdGVUcmFja2VyKDEpKSxsPVpyKCk7ZnVuY3Rpb24gZCgpe3JldHVybiBnbyhhLHMpfXZhciBoPVNvKGQsbCxmdW5jdGlvbihwLGMpe3Auc3RvcmVDb250ZXh0c0Fjcm9zc1BhZ2VzJiYoWWkoYyxhLFhpLDIpLFlpKGMscyxYaSwxKSk7dmFyIGc9bihwLGMsZCxsKTtyZXR1cm4gaD13byhwLGcpLGd9KSxvPXt9LF89bmV3IGooZnVuY3Rpb24oKXtmb3IodmFyIHA9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspcFtjXT1hcmd1bWVudHNbY107cmV0dXJuIGguaGFuZGxlTG9nLmFwcGx5KGgscCl9LHIuY3JlYXRlRGV0YWNoZWRUcmFja2VyKCkpO3JldHVybiBxbih7bG9nZ2VyOl8saW5pdDpCKGZ1bmN0aW9uKHApe3JldHVybiBoLmluaXQocCl9KSxzZXRUcmFja2luZ0NvbnNlbnQ6QihmdW5jdGlvbihwKXtsLnVwZGF0ZShwKSxkcyh7ZmVhdHVyZToic2V0LXRyYWNraW5nLWNvbnNlbnQiLHRyYWNraW5nX2NvbnNlbnQ6cH0pfSksZ2V0R2xvYmFsQ29udGV4dDpCKGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0Q29udGV4dCgpfSksc2V0R2xvYmFsQ29udGV4dDpCKGZ1bmN0aW9uKHApe3JldHVybiBhLnNldENvbnRleHQocCl9KSxzZXRHbG9iYWxDb250ZXh0UHJvcGVydHk6QihmdW5jdGlvbihwLGMpe3JldHVybiBhLnNldENvbnRleHRQcm9wZXJ0eShwLGMpfSkscmVtb3ZlR2xvYmFsQ29udGV4dFByb3BlcnR5OkIoZnVuY3Rpb24ocCl7cmV0dXJuIGEucmVtb3ZlQ29udGV4dFByb3BlcnR5KHApfSksY2xlYXJHbG9iYWxDb250ZXh0OkIoZnVuY3Rpb24oKXtyZXR1cm4gYS5jbGVhckNvbnRleHQoKX0pLGNyZWF0ZUxvZ2dlcjpCKGZ1bmN0aW9uKHAsYyl7cmV0dXJuIGM9PT12b2lkIDAmJihjPXt9KSxvW3BdPW5ldyBqKGZ1bmN0aW9uKCl7Zm9yKHZhciBnPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKWdbZV09YXJndW1lbnRzW2VdO3JldHVybiBoLmhhbmRsZUxvZy5hcHBseShoLGcpfSxyLmNyZWF0ZURldGFjaGVkVHJhY2tlcigpLCQocCksYy5oYW5kbGVyLGMubGV2ZWwsJChjLmNvbnRleHQpKSxvW3BdfSksZ2V0TG9nZ2VyOkIoZnVuY3Rpb24ocCl7cmV0dXJuIG9bcF19KSxnZXRJbml0Q29uZmlndXJhdGlvbjpCKGZ1bmN0aW9uKCl7cmV0dXJuIEVpKGguaW5pdENvbmZpZ3VyYXRpb24pfSksZ2V0SW50ZXJuYWxDb250ZXh0OkIoZnVuY3Rpb24ocCl7cmV0dXJuIGguZ2V0SW50ZXJuYWxDb250ZXh0KHApfSksc2V0VXNlcjpCKGZ1bmN0aW9uKHApe3BvKHApJiZzLnNldENvbnRleHQoS2kocCkpfSksZ2V0VXNlcjpCKGZ1bmN0aW9uKCl7cmV0dXJuIHMuZ2V0Q29udGV4dCgpfSksc2V0VXNlclByb3BlcnR5OkIoZnVuY3Rpb24ocCxjKXt2YXIgZyxlPUtpKChnPXt9LGdbcF09YyxnKSlbcF07cy5zZXRDb250ZXh0UHJvcGVydHkocCxlKX0pLHJlbW92ZVVzZXJQcm9wZXJ0eTpCKGZ1bmN0aW9uKHApe3JldHVybiBzLnJlbW92ZUNvbnRleHRQcm9wZXJ0eShwKX0pLGNsZWFyVXNlcjpCKGZ1bmN0aW9uKCl7cmV0dXJuIHMuY2xlYXJDb250ZXh0KCl9KX0pfWZ1bmN0aW9uIHdvKG4scil7cmV0dXJuIE8oe2luaXQ6ZnVuY3Rpb24oYSl7U2koIkREX0xPR1MiLGEpfSxpbml0Q29uZmlndXJhdGlvbjpufSxyKX12YXIgRW89ImxvZ3MiO2Z1bmN0aW9uIEFvKG4scil7dmFyIGE9eXMobixFbyxmdW5jdGlvbihzKXtyZXR1cm4gVG8obixzKX0scik7cmV0dXJue2ZpbmRUcmFja2VkU2Vzc2lvbjpmdW5jdGlvbihzLGwpe2w9PT12b2lkIDAmJihsPXtyZXR1cm5JbmFjdGl2ZTohMX0pO3ZhciBkPWEuZmluZFNlc3Npb24ocyxsKTtyZXR1cm4gZCYmZC50cmFja2luZ1R5cGU9PT0iMSI/e2lkOmQuaWR9OnZvaWQgMH0sZXhwaXJlT2JzZXJ2YWJsZTphLmV4cGlyZU9ic2VydmFibGV9fWZ1bmN0aW9uIENvKG4pe3ZhciByPUppKG4pPT09IjEiLGE9cj97fTp2b2lkIDA7cmV0dXJue2ZpbmRUcmFja2VkU2Vzc2lvbjpmdW5jdGlvbigpe3JldHVybiBhfSxleHBpcmVPYnNlcnZhYmxlOm5ldyBSfX1mdW5jdGlvbiBKaShuKXtyZXR1cm4gTmUobi5zZXNzaW9uU2FtcGxlUmF0ZSk/IjEiOiIwIn1mdW5jdGlvbiBUbyhuLHIpe3ZhciBhPUlvKHIpP3I6Smkobik7cmV0dXJue3RyYWNraW5nVHlwZTphLGlzVHJhY2tlZDphPT09IjEifX1mdW5jdGlvbiBJbyhuKXtyZXR1cm4gbj09PSIwInx8bj09PSIxIn12YXIgJGk9ITE7ZnVuY3Rpb24gb3Qobil7dmFyIHI9d2luZG93O2lmKGppKCkpe3ZhciBhPXMoci5ERF9SVU1fU1lOVEhFVElDUyk7cmV0dXJuIWEmJiEkaSYmKCRpPSEwLElpKCJMb2dzIHNlbnQgYmVmb3JlIFJVTSBpcyBpbmplY3RlZCBieSB0aGUgc3ludGhldGljcyB3b3JrZXIiLHt0ZXN0SWQ6aG8oKSxyZXN1bHRJZDpjbygpfSkpLGF9cmV0dXJuIHMoci5ERF9SVU0pO2Z1bmN0aW9uIHMobCl7aWYobCYmbC5nZXRJbnRlcm5hbENvbnRleHQpcmV0dXJuIGwuZ2V0SW50ZXJuYWxDb250ZXh0KG4pfX1mdW5jdGlvbiBCbyhuLHIsYSxzLGwpe3ZhciBkPXZvLmNvbmNhdChbImN1c3RvbSJdKSxoPXt9O2QuZm9yRWFjaChmdW5jdGlvbihvKXtoW29dPU1zKG8sci5ldmVudFJhdGVMaW1pdGVyVGhyZXNob2xkLGwpfSksYS5zdWJzY3JpYmUoMCxmdW5jdGlvbihvKXt2YXIgXyxwLGM9by5yYXdMb2dzRXZlbnQsZz1vLm1lc3NhZ2VDb250ZXh0LGU9Zz09PXZvaWQgMD92b2lkIDA6Zyx0PW8uc2F2ZWRDb21tb25Db250ZXh0LGk9dD09PXZvaWQgMD92b2lkIDA6dCxmPW8uZG9tYWluQ29udGV4dCx1PXVyKGMuZGF0ZSksdj1uLmZpbmRUcmFja2VkU2Vzc2lvbih1KTtpZighKCF2JiYoIXIuc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9ufHwhbi5maW5kVHJhY2tlZFNlc3Npb24odSx7cmV0dXJuSW5hY3RpdmU6ITB9KSkpKXt2YXIgeT1pfHxzKCksbT13ZSh7c2VydmljZTpyLnNlcnZpY2Usc2Vzc2lvbl9pZDp2P3YuaWQ6dm9pZCAwLHVzcjp2dCh5LnVzZXIpP3ZvaWQgMDp5LnVzZXIsdmlldzp5LnZpZXd9LHkuY29udGV4dCxvdCh1KSxjLGUpOygoXz1yLmJlZm9yZVNlbmQpPT09bnVsbHx8Xz09PXZvaWQgMD92b2lkIDA6Xy5jYWxsKHIsbSxmKSk9PT0hMXx8bS5vcmlnaW4hPT1ILkFHRU5UJiYoKHA9aFttLnN0YXR1c10pIT09bnVsbCYmcCE9PXZvaWQgMD9wOmguY3VzdG9tKS5pc0xpbWl0UmVhY2hlZCgpfHxhLm5vdGlmeSgxLG0pfX0pfXZhciB2ZSxGbz0odmU9e30sdmVbTC5sb2ddPUMuaW5mbyx2ZVtMLmRlYnVnXT1DLmRlYnVnLHZlW0wuaW5mb109Qy5pbmZvLHZlW0wud2Fybl09Qy53YXJuLHZlW0wuZXJyb3JdPUMuZXJyb3IsdmUpO2Z1bmN0aW9uIExvKG4scil7dmFyIGE9WHMobi5mb3J3YXJkQ29uc29sZUxvZ3MpLnN1YnNjcmliZShmdW5jdGlvbihzKXt2YXIgbD17cmF3TG9nc0V2ZW50OntkYXRlOlEoKSxtZXNzYWdlOnMubWVzc2FnZSxvcmlnaW46SC5DT05TT0xFLGVycm9yOnMuZXJyb3ImJnN0KHMuZXJyb3IpLHN0YXR1czpGb1tzLmFwaV19LGRvbWFpbkNvbnRleHQ6e2hhbmRsaW5nU3RhY2s6cy5oYW5kbGluZ1N0YWNrfX07ci5ub3RpZnkoMCxsKX0pO3JldHVybntzdG9wOmZ1bmN0aW9uKCl7YS51bnN1YnNjcmliZSgpfX19ZnVuY3Rpb24ga28obixyKXt2YXIgYT1YbihuLG4uZm9yd2FyZFJlcG9ydHMpLnN1YnNjcmliZShmdW5jdGlvbihzKXt2YXIgbD1zLm1lc3NhZ2UsZCxoPXMub3JpZ2luYWxFcnJvci50eXBlPT09ImRlcHJlY2F0aW9uIj9DLndhcm46Qy5lcnJvcjtoPT09Qy5lcnJvcj9kPXN0KHMpOnMuc3RhY2smJihsKz0iIEZvdW5kIGluICIuY29uY2F0KFluKHMuc3RhY2spKSksci5ub3RpZnkoMCx7cmF3TG9nc0V2ZW50OntkYXRlOlEoKSxtZXNzYWdlOmwsb3JpZ2luOkguUkVQT1JULGVycm9yOmQsc3RhdHVzOmh9fSl9KTtyZXR1cm57c3RvcDpmdW5jdGlvbigpe2EudW5zdWJzY3JpYmUoKX19fWZ1bmN0aW9uIHpvKG4scil7aWYoIW4uZm9yd2FyZEVycm9yc1RvTG9ncylyZXR1cm57c3RvcDppZX07dmFyIGE9R3Mobikuc3Vic2NyaWJlKGZ1bmN0aW9uKGQpe2Quc3RhdGU9PT0iY29tcGxldGUiJiZsKCJ4aHIiLGQpfSkscz1IaSgpLnN1YnNjcmliZShmdW5jdGlvbihkKXtkLnN0YXRlPT09InJlc29sdmUiJiZsKCJmZXRjaCIsZCl9KTtmdW5jdGlvbiBsKGQsaCl7IW4uaXNJbnRha2VVcmwoaC51cmwpJiYoRG8oaCl8fEZpKGguc3RhdHVzKSkmJigieGhyImluIGg/Um8oaC54aHIsbixvKTpoLnJlc3BvbnNlP1BvKGgucmVzcG9uc2UsbixvKTpoLmVycm9yJiZPbyhoLmVycm9yLG4sbykpO2Z1bmN0aW9uIG8oXyl7dmFyIHA9e2lzQWJvcnRlZDpoLmlzQWJvcnRlZCxoYW5kbGluZ1N0YWNrOmguaGFuZGxpbmdTdGFja307ci5ub3RpZnkoMCx7cmF3TG9nc0V2ZW50OnttZXNzYWdlOiIiLmNvbmNhdChObyhkKSwiIGVycm9yICIpLmNvbmNhdChoLm1ldGhvZCwiICIpLmNvbmNhdChoLnVybCksZGF0ZTpoLnN0YXJ0Q2xvY2tzLnRpbWVTdGFtcCxlcnJvcjp7c3RhY2s6X3x8IkZhaWxlZCB0byBsb2FkIixoYW5kbGluZzp2b2lkIDB9LGh0dHA6e21ldGhvZDpoLm1ldGhvZCxzdGF0dXNfY29kZTpoLnN0YXR1cyx1cmw6aC51cmx9LHN0YXR1czpDLmVycm9yLG9yaWdpbjpILk5FVFdPUkt9LGRvbWFpbkNvbnRleHQ6cH0pfX1yZXR1cm57c3RvcDpmdW5jdGlvbigpe2EudW5zdWJzY3JpYmUoKSxzLnVuc3Vic2NyaWJlKCl9fX1mdW5jdGlvbiBSbyhuLHIsYSl7dHlwZW9mIG4ucmVzcG9uc2U9PSJzdHJpbmciP2EoR3Qobi5yZXNwb25zZSxyKSk6YShuLnJlc3BvbnNlKX1mdW5jdGlvbiBPbyhuLHIsYSl7YShHdChoZShKKG4pKSxyKSl9ZnVuY3Rpb24gUG8obixyLGEpe3ZhciBzPXhzKG4pOyFzfHwhcy5ib2R5P2EoKTp3aW5kb3cuVGV4dERlY29kZXI/TW8ocy5ib2R5LHIucmVxdWVzdEVycm9yUmVzcG9uc2VMZW5ndGhMaW1pdCxmdW5jdGlvbihsLGQpe2EobD8iVW5hYmxlIHRvIHJldHJpZXZlIHJlc3BvbnNlOiAiLmNvbmNhdChsKTpkKX0pOnMudGV4dCgpLnRoZW4oQihmdW5jdGlvbihsKXtyZXR1cm4gYShHdChsLHIpKX0pLEIoZnVuY3Rpb24obCl7cmV0dXJuIGEoIlVuYWJsZSB0byByZXRyaWV2ZSByZXNwb25zZTogIi5jb25jYXQobCkpfSkpfWZ1bmN0aW9uIERvKG4pe3JldHVybiBuLnN0YXR1cz09PTAmJm4ucmVzcG9uc2VUeXBlIT09Im9wYXF1ZSJ9ZnVuY3Rpb24gR3QobixyKXtyZXR1cm4gbi5sZW5ndGg+ci5yZXF1ZXN0RXJyb3JSZXNwb25zZUxlbmd0aExpbWl0PyIiLmNvbmNhdChuLnN1YnN0cmluZygwLHIucmVxdWVzdEVycm9yUmVzcG9uc2VMZW5ndGhMaW1pdCksIi4uLiIpOm59ZnVuY3Rpb24gTm8obil7cmV0dXJuIG49PT0ieGhyIj8iWEhSIjoiRmV0Y2gifWZ1bmN0aW9uIE1vKG4scixhKXthbyhuLGZ1bmN0aW9uKHMsbCxkKXtpZihzKWEocyk7ZWxzZXt2YXIgaD1uZXcgVGV4dERlY29kZXIoKS5kZWNvZGUobCk7ZCYmKGgrPSIuLi4iKSxhKHZvaWQgMCxoKX19LHtieXRlc0xpbWl0OnIsY29sbGVjdFN0cmVhbUJvZHk6ITB9KX1mdW5jdGlvbiBHbyhuLHIpe2lmKCFuLmZvcndhcmRFcnJvcnNUb0xvZ3MpcmV0dXJue3N0b3A6aWV9O3ZhciBhPW5ldyBSLHM9Vm4oYSkuc3RvcCxsPWEuc3Vic2NyaWJlKGZ1bmN0aW9uKGQpe3Iubm90aWZ5KDAse3Jhd0xvZ3NFdmVudDp7bWVzc2FnZTpkLm1lc3NhZ2UsZGF0ZTpkLnN0YXJ0Q2xvY2tzLnRpbWVTdGFtcCxlcnJvcjpzdChkKSxvcmlnaW46SC5TT1VSQ0Usc3RhdHVzOkMuZXJyb3J9fSl9KTtyZXR1cm57c3RvcDpmdW5jdGlvbigpe3MoKSxsLnVuc3Vic2NyaWJlKCl9fX12YXIgSG89TnMsSztmdW5jdGlvbiBZbyhuKXtmdW5jdGlvbiByKGEscyxsLGQsaCl7dmFyIG89d2Uocy5nZXRDb250ZXh0KCksYS5jb250ZXh0KTtpZihudChhLnN0YXR1cyxSZS5jb25zb2xlLHMpJiZqbyhhLG8pLG50KGEuc3RhdHVzLFJlLmh0dHAscykpe3ZhciBfPXtyYXdMb2dzRXZlbnQ6e2RhdGU6aHx8USgpLG1lc3NhZ2U6YS5tZXNzYWdlLHN0YXR1czphLnN0YXR1cyxvcmlnaW46SC5MT0dHRVJ9LG1lc3NhZ2VDb250ZXh0Om8sc2F2ZWRDb21tb25Db250ZXh0OmR9O2wmJihfLmRvbWFpbkNvbnRleHQ9e2hhbmRsaW5nU3RhY2s6bH0pLG4ubm90aWZ5KDAsXyl9fXJldHVybntoYW5kbGVMb2c6cn19dmFyIFZvPShLPXt9LEtbQy5va109TC5kZWJ1ZyxLW0MuZGVidWddPUwuZGVidWcsS1tDLmluZm9dPUwuaW5mbyxLW0Mubm90aWNlXT1MLmluZm8sS1tDLndhcm5dPUwud2FybixLW0MuZXJyb3JdPUwuZXJyb3IsS1tDLmNyaXRpY2FsXT1MLmVycm9yLEtbQy5hbGVydF09TC5lcnJvcixLW0MuZW1lcmddPUwuZXJyb3IsSyk7ZnVuY3Rpb24gam8obixyKXt2YXIgYT1uLnN0YXR1cyxzPW4ubWVzc2FnZTtuZVtWb1thXV0uY2FsbChXLHMscil9ZnVuY3Rpb24gS28obixyLGEscyxsKXt2YXIgZD1HaShuLHtlbmRwb2ludDpuLmxvZ3NFbmRwb2ludEJ1aWxkZXIsZW5jb2RlcjpydCgpfSxuLnJlcGxpY2EmJntlbmRwb2ludDpuLnJlcGxpY2EubG9nc0VuZHBvaW50QnVpbGRlcixlbmNvZGVyOnJ0KCl9LGEscyxsLmV4cGlyZU9ic2VydmFibGUpO3JldHVybiByLnN1YnNjcmliZSgxLGZ1bmN0aW9uKGgpe2QuYWRkKGgpfSksZH1mdW5jdGlvbiBxbyhuKXt2YXIgcj1SdCgpO24uc3Vic2NyaWJlKDEsZnVuY3Rpb24oYSl7ci5zZW5kKCJsb2ciLGEpfSl9ZnVuY3Rpb24gV28obil7cmV0dXJue2dldDpmdW5jdGlvbihyKXt2YXIgYT1uLmZpbmRUcmFja2VkU2Vzc2lvbihyKTtpZihhKXJldHVybntzZXNzaW9uX2lkOmEuaWR9fX19ZnVuY3Rpb24gWG8obil7cmV0dXJuIGZ1bmN0aW9uKHIpe24ubm90aWZ5KDAse3Jhd0xvZ3NFdmVudDp7bWVzc2FnZTpyLm1lc3NhZ2UsZGF0ZTpyLnN0YXJ0Q2xvY2tzLnRpbWVTdGFtcCxvcmlnaW46SC5BR0VOVCxzdGF0dXM6Qy5lcnJvcn19KSxJaSgiRXJyb3IgcmVwb3J0ZWQgdG8gY3VzdG9tZXIiLHsiZXJyb3IubWVzc2FnZSI6ci5tZXNzYWdlfSl9fWZ1bmN0aW9uIEpvKG4scixhLHMsbCl7dmFyIGQ9b3MoImJyb3dzZXItbG9ncy1zZGsiLHIpO2Quc2V0Q29udGV4dFByb3ZpZGVyKGZ1bmN0aW9uKCl7dmFyIGcsZSx0LGksZix1O3JldHVybnthcHBsaWNhdGlvbjp7aWQ6KGc9b3QoKSk9PT1udWxsfHxnPT09dm9pZCAwP3ZvaWQgMDpnLmFwcGxpY2F0aW9uX2lkfSxzZXNzaW9uOntpZDooZT1sLmZpbmRUcmFja2VkU2Vzc2lvbigpKT09PW51bGx8fGU9PT12b2lkIDA/dm9pZCAwOmUuaWR9LHZpZXc6e2lkOihpPSh0PW90KCkpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC52aWV3KT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkuaWR9LGFjdGlvbjp7aWQ6KHU9KGY9b3QoKSk9PT1udWxsfHxmPT09dm9pZCAwP3ZvaWQgMDpmLnVzZXJfYWN0aW9uKT09PW51bGx8fHU9PT12b2lkIDA/dm9pZCAwOnUuaWR9fX0pO3ZhciBoPVtdO2lmKHR0KCkpe3ZhciBvPVJ0KCksXz1kLm9ic2VydmFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKGcpe3JldHVybiBvLnNlbmQoImludGVybmFsX3RlbGVtZXRyeSIsZyl9KTtoLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gXy51bnN1YnNjcmliZSgpfSl9ZWxzZXt2YXIgcD1HaShyLHtlbmRwb2ludDpyLnJ1bUVuZHBvaW50QnVpbGRlcixlbmNvZGVyOnJ0KCl9LHIucmVwbGljYSYme2VuZHBvaW50OnIucmVwbGljYS5ydW1FbmRwb2ludEJ1aWxkZXIsZW5jb2RlcjpydCgpfSxhLHMsbC5leHBpcmVPYnNlcnZhYmxlKTtoLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gcC5zdG9wKCl9KTt2YXIgYz1kLm9ic2VydmFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKGcpe3JldHVybiBwLmFkZChnLGxzKHIpKX0pO2gucHVzaChmdW5jdGlvbigpe3JldHVybiBjLnVuc3Vic2NyaWJlKCl9KX1yZXR1cm4gZnMoKSx1cyhibyhuKSkse3RlbGVtZXRyeTpkLHN0b3A6ZnVuY3Rpb24oKXtoLmZvckVhY2goZnVuY3Rpb24oZyl7cmV0dXJuIGcoKX0pfX19ZnVuY3Rpb24gJG8obixyLGEscyl7dmFyIGw9bmV3IEhvLGQ9W107bC5zdWJzY3JpYmUoMSxmdW5jdGlvbih0KXtyZXR1cm4gd2koImxvZ3MiLHQpfSk7dmFyIGg9WG8obCksbz1ScyhyKSxfPXIuc2Vzc2lvblN0b3JlU3RyYXRlZ3lUeXBlJiYhdHQoKSYmIWppKCk/QW8ocixzKTpDbyhyKSxwPUpvKG4scixoLG8sXykuc3RvcDtkLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gcCgpfSksem8ocixsKSxHbyhyLGwpLExvKHIsbCksa28ocixsKTt2YXIgYz1ZbyhsKS5oYW5kbGVMb2c7aWYoQm8oXyxyLGwsYSxoKSx0dCgpKXFvKGwpO2Vsc2V7dmFyIGc9S28ocixsLGgsbyxfKS5zdG9wO2QucHVzaChmdW5jdGlvbigpe3JldHVybiBnKCl9KX12YXIgZT1XbyhfKTtyZXR1cm57aGFuZGxlTG9nOmMsZ2V0SW50ZXJuYWxDb250ZXh0OmUuZ2V0LHN0b3A6ZnVuY3Rpb24oKXtkLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pfX19dmFyIGF0PVVvKCRvKTtXbih0ZSgpLCJERF9MT0dTIixhdCksYXQuaW5pdCh7Y2xpZW50VG9rZW46InB1YjQ4NDQ4OTVhYzMwMDY3YWMyYzRhYWEwMjVkYmMzOWQ3IixzaXRlOiJ1czMuZGF0YWRvZ2hxLmNvbSIsZm9yd2FyZEVycm9yc1RvTG9nczohMCxzZXNzaW9uU2FtcGxlUmF0ZToxMDB9KTtjb25zdCBaaT17SW5mbzoiaW5mbyIsV2Fybjoid2FybiIsRXJyb3I6ImVycm9yIn0sT2U9ZnVuY3Rpb24obixyKXtjb25zb2xlLmxvZygiJWNPVFRQbGF5ZXI6ICIrbiwiY29sb3I6ICM1OWFjZmYiKSxRaSgpP3Bvc3RNZXNzYWdlKHthY3Rpb246ImxvZyIscGF5bG9hZDp7c3RhdHVzOlppLkluZm8sbWVzc2FnZToiV2ViIGxvZzogIituLHBheWxvYWQ6cn19KTphdC5sb2dnZXIuaW5mbygiV2ViIGxvZzogIituLHIpfSxBZT1mdW5jdGlvbihuLHIpe2NvbnNvbGUuZXJyb3IoIk9UVFBsYXllcjogIituKSxyJiZjb25zb2xlLmVycm9yKHIpLFFpKCk/cG9zdE1lc3NhZ2Uoe2FjdGlvbjoibG9nIixwYXlsb2FkOntzdGF0dXM6WmkuRXJyb3IsbWVzc2FnZTpuLHBheWxvYWQ6cn19KTphdC5sb2dnZXIuZXJyb3IobixudWxsLHIpfSxRaT0oKT0+dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlO2NsYXNzIFpve2FzeW5jIGhhbmRsZURhdGEocixhKXtjb25zdCBzPXJyLnBhcnNlKHIpO2lmKHNbImFscGhhLm1wNCJdfHxzWyJhbHBoYS53ZWJtIl0pe2F3YWl0IHRoaXMuZGVjb2RlQWxwaGFNYXNrVmlkZW8ocyxhKTtyZXR1cm59bGV0IGw9T2JqZWN0LmtleXMocykuc29ydCgpO2Zvcihjb25zdCBkIG9mIGwpaWYoZC5lbmRzV2l0aCgiLmpzb24iKSl7bGV0IGg9W107Y29uc3Qgbz1KU09OLnBhcnNlKG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShzW2RdKSksXz1vLnRpbWVjb2RlLnJlcGxhY2UoLzovZywiXyIpO2lmKG8ucGxhY2Vob2xkZXJzJiYiaXNMaXZlImluIG8mJm8uaXNMaXZlPT09ITApZm9yKGNvbnN0IHAgaW4gby5wbGFjZWhvbGRlcnMpe2xldCBjPWAke199XyR7cH0uYWxwaGFgO3NbY10mJihvLnBsYWNlaG9sZGVyc1twXS5hbHBoYUFzVWludDhBcnJheT1zW2NdLGgucHVzaChzW2NdLmJ1ZmZlcikpfXBvc3RNZXNzYWdlKHthY3Rpb246Im1ldGFkYXRhIixwYXlsb2FkOm99LGgpfX1nZXREZXNjcmlwdGlvbihyKXtmb3IoY29uc3QgYSBvZiByLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllcyl7Y29uc3Qgcz1hLmF2Y0N8fGEuaHZjQ3x8YS52cGNDfHxhLmF2MUM7aWYocyl7Y29uc3QgbD1uZXcgUGUuRGF0YVN0cmVhbSh2b2lkIDAsMCxQZS5EYXRhU3RyZWFtLkJJR19FTkRJQU4pO3JldHVybiBzLndyaXRlKGwpLG5ldyBVaW50OEFycmF5KGwuYnVmZmVyLDgpfX1yZXR1cm4gQWUoImF2Y0MsIGh2Y0MsIHZwY0MsIG9yIGF2MUMgYm94IG5vdCBmb3VuZCBvbiAiLHIpLG51bGx9bnVtZXJpY0ZpbGVDb21wYXJhdG9yKHIsYSl7Y29uc3Qgcz0vXihcZHsyfSlfKFxkezJ9KV8oXGR7Mn0pXyhcZHsyfSkoPzpcLihcZCspKT9cLiguKykkLyxsPXIubWF0Y2gocyksZD1hLm1hdGNoKHMpO2lmKCFsfHwhZClyZXR1cm4gMDtjb25zdFssaCxvLF8scCxjPSIwIixnXT1sLFssZSx0LGksZix1PSIwIix2XT1kO3JldHVybiBwYXJzZUludChoLDEwKS1wYXJzZUludChlLDEwKXx8cGFyc2VJbnQobywxMCktcGFyc2VJbnQodCwxMCl8fHBhcnNlSW50KF8sMTApLXBhcnNlSW50KGksMTApfHxwYXJzZUludChwLDEwKS1wYXJzZUludChmLDEwKXx8cGFyc2VJbnQoYywxMCktcGFyc2VJbnQodSwxMCl8fGcubG9jYWxlQ29tcGFyZSh2KX1hc3luYyBkZWNvZGVBbHBoYU1hc2tWaWRlbyhyLGEpe2xldCBzPU9iamVjdC5rZXlzKHIpLmZpbHRlcihnPT5nLmVuZHNXaXRoKCIuanNvbiIpKS5zb3J0KHRoaXMubnVtZXJpY0ZpbGVDb21wYXJhdG9yKS5tYXAoZz0+SlNPTi5wYXJzZShuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUocltnXSkpKS5maWx0ZXIoZz0+Zy5wbGFjZWhvbGRlcnMpO2NvbnN0IGw9cGVyZm9ybWFuY2Uubm93KCksZD1zLmxlbmd0aDtPZShgV2UgbmVlZCB0byBkZWNvZGUgJHtkfSBmcmFtZXNgKTtjb25zdCBvPWF3YWl0IG5ldyBCbG9iKFtyWyJhbHBoYS5tcDQiXXx8clsiYWxwaGEud2VibSJdXSx7dHlwZTpyWyJhbHBoYS5tcDQiXT8idmlkZW8vbXA0IjoidmlkZW8vd2VibSJ9KS5hcnJheUJ1ZmZlcigpO28uZmlsZVN0YXJ0PTA7bGV0IF89MDtjb25zdCBwPW5ldyBWaWRlb0RlY29kZXIoe291dHB1dDpnPT57c1tfXS5hbHBoYU1hc2s9Zyxwb3N0TWVzc2FnZSh7YWN0aW9uOiJtZXRhZGF0YSIscGF5bG9hZDpzW19dfSxbZ10pLGcuY2xvc2UoKSxfKyssXz49ZCYmT2UoYCR7YX0gRGVjb2RlZCAke199IGZyYW1lcyBpbiAke3BlcmZvcm1hbmNlLm5vdygpLWx9IG1pbGxpc2Vjb25kcy5gKX0sZXJyb3I6Zz0+QWUoIkFscGhhIG1hc2sgbXA0IGRlY29kZXIgZXJyb3I6IixnKX0pLGM9dHIuY3JlYXRlRmlsZSgpO2Mub25FcnJvcj1nPT5CQmVycm9yKCJNUDQgcGFyc2luZyBlcnJvcjoiLGcpLGMub25SZWFkeT1nPT57Y29uc3QgZT1nLnRyYWNrcy5maW5kKHQ9PnQudHlwZT09PSJ2aWRlbyIpO2UmJihwLmNvbmZpZ3VyZSh7Y29kZWM6ZS5jb2RlYyx3aWR0aDplLnZpZGVvLndpZHRoLGhlaWdodDplLnZpZGVvLmhlaWdodCxkZXNjcmlwdGlvbjp0aGlzLmdldERlc2NyaXB0aW9uKGMuZ2V0VHJhY2tCeUlkKGUuaWQpKX0pLGMuc2V0RXh0cmFjdGlvbk9wdGlvbnMoZS5pZCksYy5zdGFydCgpKX0sYy5vblNhbXBsZXM9KGcsZSx0KT0+e3QuZm9yRWFjaChpPT57Y29uc3QgZj1uZXcgRW5jb2RlZFZpZGVvQ2h1bmsoe3R5cGU6aS5pc19zeW5jPyJrZXkiOiJkZWx0YSIsdGltZXN0YW1wOmkuY3RzLGRhdGE6bmV3IFVpbnQ4QXJyYXkoaS5kYXRhKX0pO3AuZGVjb2RlKGYpfSl9LGMuYXBwZW5kQnVmZmVyKG8pfX1jb25zdCBIdD0iOiIsZnQ9KG4scik9Pntjb25zdCBhPW4uc3BsaXQocik7cmV0dXJue2g6cGFyc2VJbnQoYVswXSksbTpwYXJzZUludChhWzFdKSxzOnBhcnNlSW50KGFbMl0pLGY6cGFyc2VJbnQoYVszXSl9fSxsdD1uPT4oIjAiK24uaCkuc2xpY2UoLTIpK0h0KygiMCIrbi5tKS5zbGljZSgtMikrSHQrKCIwIituLnMpLnNsaWNlKC0yKStIdCsoIjAiK24uZikuc2xpY2UoLTIpLHV0PShuLHIpPT57bGV0IGE9ey4uLm59O3JldHVybiBhLnMrPXIsYS5zPj02MCYmKGEucz0wLGEubSsrLGEubT49NjAmJihhLm09MCxhLmgrKykpLGF9LGVyPShuLHI9MCk9PntsZXQgYT1mdChuLCI6Iik7cmV0dXJuIHImJihhPXV0KGEscikpLGF9LFFvPShuLHI9MCk9PntsZXQgYT1lcihuLHIpO3JldHVybiBsdChhKX0sWXQ9KG4scik9Pm4uaD5yLmg/ITA6bi5oPHIuaD8hMTpuLm0+ci5tPyEwOm4ubTxyLm0/ITE6bi5zPnIucz8hMDpuLnM8ci5zPyExOm4uZj5yLmY7dHJ5e2xldCBuPSExLHI9IiIsYT0iIixzPXt9LGw9bnVsbCxkPVtdLGg9e30sbz0hMCxfPSExO2NvbnN0IHA9bmV3IFpvO2xldCBjO2NvbnN0IGc9aT0+e28mJihpPjAmJll0KGVyKHMudGMsaSksaCk/c2V0VGltZW91dCgoKT0+e2coaSl9LDEwMCk6c2V0VGltZW91dCgoKT0+e3MudGM9UW8ocy50YyxpKSx0KCl9LDApKX0sZT1pPT57Y29uc3QgZj1pLnRjLnJlcGxhY2VBbGwoIjoiLCJfIik7cmV0dXJuIGM/YCR7aS5wYXRofS9tYW5pZmVzdHMvNTkuOTQvJHtmfS56aXBgOmAke2kucGF0aH0vJHtmfS56aXBgfSx0PWFzeW5jKCk9PntfPSEwO2NvbnN0IGk9cyxmPWUoaSk7dHJ5e2NvbnN0IHU9YXdhaXQgZmV0Y2goZik7aWYodS5zdGF0dXM+PTQwMCl7bGV0IFU9KHBlcmZvcm1hbmNlLm5vdygpLWwpLzFlMztVPjQ/KEFlKCJEaWRuJ3QgZmluZCB0aW1lY29kZSAiK2kudGMrIiwgbm93IGZvciAiK1UudG9GaXhlZCgyKSsiIHNlY29uZHMgLSBnaXZlIHVwICEiKSxnKDIpKTooQWUoIkRpZG4ndCBmaW5kIHRpbWVjb2RlICIraS50YysiLCBub3cgZm9yICIrVS50b0ZpeGVkKDIpKyIgc2Vjb25kcyIpLGcoMCkpLF89ITE7cmV0dXJufWxldCB2PXBlcmZvcm1hbmNlLm5vdygpLHk9MDtpZihsKWZvcih5PXYtbCxkLnB1c2goeSk7ZC5sZW5ndGg+MWUzOylkLnNoaWZ0KCk7bD12O2NvbnN0IG09YXdhaXQgdS5hcnJheUJ1ZmZlcigpO2F3YWl0IHAuaGFuZGxlRGF0YShtLGkudGMpO2NvbnN0IGI9cGVyZm9ybWFuY2Uubm93KCl9Y2F0Y2godSl7QWUoYEVycm9yIG9uIHVybCAke2Z9YCx1KX1fPSExLGcoMil9O2FkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGk9PntpZighbiYmaS5kYXRhLmNsb3VkRnJvbnRVUkwpe249ITAsYz1pLmRhdGEubWFza01QND8/ITEscj1pLmRhdGEuY2xvdWRGcm9udFVSTCxhPWkuZGF0YS5mb2xkZXJOYW1lO2xldCBmPWZ0KGkuZGF0YS50YywiOiIpO2g9dXQoZiw0KSxmLmY9MCxmLnM9Zi5zJTI9PT0wP2YuczpmLnMtMSxzPXt0YzpsdChmKSxwYXRoOmAke3J9LyR7YX1gfSxPZShgTWV0YS1kYXRhIHdvcmtlciBzdGFydGluZyBmcm9tIHRoaXMgdGltZS1jb2RlOiAke3MudGN9YCksdCgpfWVsc2V7bGV0IGY9ZnQoaS5kYXRhLnRjLCI6Iik7Zi5mPTAsZi5zPWYucyUyPT09MD9mLnM6Zi5zLTEsWXQoZixoKSYmKHMudGM9bHQoZiksT2UoYE1ldGEtZGF0YSB3b3JrZXIganVtcHMgZm9yd2FyZCB0byB0aGlzIHRpbWUtY29kZTogJHtzLnRjfWApKSxZdChmdChzLnRjLCI6IiksdXQoZiw0KSkmJihzLnRjPWx0KGYpLE9lKGBNZXRhLWRhdGEgd29ya2VyIGp1bXBzIGJhY2sgdG8gdGhpcyB0aW1lLWNvZGU6ICR7cy50Y31gKSksaD11dChmLDQpLCFvJiZpLmRhdGEuZW5hYmxlZD8obz0hMCxffHx0KCkpOm89aS5kYXRhLmVuYWJsZWR9fSl9Y2F0Y2gobil7QWUobil9fSkoKTsK",kY=l=>Uint8Array.from(atob(l),W=>W.charCodeAt(0)),$e=typeof self<"u"&&self.Blob&&new Blob([kY(qe)],{type:"text/javascript;charset=utf-8"});function xY(l){let W;try{if(W=$e&&(self.URL||self.webkitURL).createObjectURL($e),!W)throw"";const d=new Worker(W,{name:l==null?void 0:l.name});return d.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(W)}),d}catch{return new Worker("data:text/javascript;base64,"+qe,{name:l==null?void 0:l.name})}finally{W&&(self.URL||self.webkitURL).revokeObjectURL(W)}}class yY{constructor(W,d){this.options=W,this.composer=d,this.sourceFPS=6e4/1001,this.lastFrames,this.metadataWorker=null,this.setMetaDataFolderName(W.gameId)}setMetaDataFolderName(W){this.folderName=W,this.lastFrames&&this.loadMetaData(this.lastFrames)}setLastFrame(W){this.lastFrames=W,this.folderName&&this.loadMetaData(this.lastFrames)}loadMetaData(W){if(this.metadataWorker){let d=Bm(hl(this.lastFrames,this.sourceFPS,!0));this.metadataWorker.postMessage({tc:Xl(d,!1),enabled:this.options.enabled})}else{const d=new xY;this.metadataWorker=d,d.onerror=function(t){Ml("Error from worker:",t)},d.addEventListener("message",t=>{switch(t.data.action){case"metadata":this.composer.onMetaData(t.data.payload);break;case"log":Ae(t.data.payload);break;default:SW("unknown action from meta worker")}});let b=Bm(hl(W,this.sourceFPS,!0));d.postMessage({cloudFrontURL:this.options.cloudFrontURL,folderName:this.folderName,tc:Xl(b,!1),maskMP4:this.options.maskMP4})}}}class HY{constructor(W){O(this,"adTexture",null);O(this,"place2AdTexture",{});O(this,"place2ad",{});O(this,"ad2place",{});O(this,"currentAds2BoundingRect",[]);O(this,"lastTimeReportedIncomingTC",0);O(this,"autoAddIndex",null);O(this,"digitImg",{});O(this,"sourceFPS",6e4/1001);O(this,"metadataArr",[]);O(this,"metadataMap",{});O(this,"videoStarted",!1);O(this,"advertisementMap",{});O(this,"ad2Url",{});O(this,"videoCopier",null);O(this,"autoAddIndex",null);if(W.renderTimecodes)for(let d=0;d<10;++d){let b=d+".1",t=d+".2";this.digitImg[b]=this.createDigitImg(b),this.digitImg[t]=this.createDigitImg(t)}this.options=Object.assign({adLoopTime:5e3,isAdLoop:!1},W||{}),this.metaDataFetcher=new yY(this.options,this)}setLastFrame(W){this.metaDataFetcher.setLastFrame(W)}onUserClickOnCanvas(W){console.log("fix me")}texUnitForGenericAd(){return 0}texUnitForAdInPlace(W){let d=Object.keys(this.place2ad);for(let b=0;b<d.length;++b)if(W==d[b])return b+1;return 0}texUnitForPlaceHolder(W){let d=Object.keys(this.place2ad);for(let b=0;b<d.length;++b){let t=d[b];if(W.name.indexOf(t)>=0)return b}return 0}adNameForPlaceHolder(W){let d=Object.keys(this.place2ad);for(let b=0;b<d.length;++b){let t=d[b];if(W.name.indexOf(t)>=0&&this.place2AdTexture&&this.place2AdTexture[t]&&this.place2AdTexture[t].name)return this.place2AdTexture[t].name}return this.lastAdName}texUnitBaseForAlpha(){return 1+Object.keys(this.place2ad).length}initGL(){const W=this.options.maskMP4?[bV,Dl]:[cW,ym];this.program=wm(this.ctx,W),this.ctx.useProgram(this.program),this.counter=0,this.cleanGL()}cleanGL(){this.ctx.clearColor(0,0,0,0),this.ctx.clear(this.ctx.COLOR_BUFFER_BIT)}generateTexture(W,d,b,t,e,n,i,h=!1,G=!1){i?this.ctx.pixelStorei(this.ctx.UNPACK_ALIGNMENT,1):this.ctx.pixelStorei(this.ctx.UNPACK_ALIGNMENT,4),this.ctx.pixelStorei(this.ctx.UNPACK_FLIP_Y_WEBGL,h);const p=this.ctx.createTexture();this.ctx.activeTexture(this.ctx.TEXTURE0+d),this.ctx.bindTexture(this.ctx.TEXTURE_2D,p);try{e&&n?this.ctx.texImage2D(this.ctx.TEXTURE_2D,0,t??this.ctx.RGBA,e,n,0,t??this.ctx.RGBA,this.ctx.UNSIGNED_BYTE,W):this.ctx.texImage2D(this.ctx.TEXTURE_2D,0,t??this.ctx.RGBA,this.ctx.RGBA,this.ctx.UNSIGNED_BYTE,W)}catch(X){return Ml(X),null}if(G){let X=e||W.width,o=n||W.height;X&&gm(X)&&o&&gm(o)?this.ctx.generateMipmap(this.ctx.TEXTURE_2D):(this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_S,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_T,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_MIN_FILTER,this.ctx.LINEAR))}else this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_S,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_WRAP_T,this.ctx.CLAMP_TO_EDGE),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_MIN_FILTER,this.ctx.LINEAR),this.ctx.texParameteri(this.ctx.TEXTURE_2D,this.ctx.TEXTURE_MAG_FILTER,this.ctx.LINEAR);let s=this.ctx.getUniformLocation(this.program,b);return s&&this.ctx.uniform1i(s,d),p}_nextAdvertisement(){this.autoAddIndex=setTimeout(()=>{const W=Object.keys(this.advertisementMap);W.length&&(this.selectAd(W[Math.floor(Math.random()*W.length)]),this._nextAdvertisement())},this.options.adLoopTime)}makeSureAdPerPlace(){if(this.place2ad){let W=Object.keys(this.place2ad);for(let d=0;d<W.length;++d){let b=W[d];!this.place2AdTexture[b]&&this.place2ad[b].length>0&&(il("MakeSureAdPerPlace: Set default image "+this.place2ad[b][0]+" for place "+b),this.selectAd("#"+this.place2ad[b][0]))}}}selectAd(W){il(`composer::SelectAd: selected ad is ${W}`,{media_url:W});let d=this.advertisementMap[W];if(!d)Ml("SelectAd: Failed to find image '"+W+"'");else if(this.ad2place&&this.ad2place[W]){let b=this.ad2place[W];il("composer::SelectAd: The selected ad should be in place "+b);let t=this.texUnitForAdInPlace(b),e="ad"+(t-1);this.place2AdTexture[b]&&this.ctx.deleteTexture(this.place2AdTexture[b].tex);const n=this.generateTexture(d,t,e,null,null,null,!1,!1,!0);this.place2AdTexture[b]={tex:n,texUnitId:t,texName:e,name:W}}else this.adTexture&&this.ctx.deleteTexture(this.adTexture),this.adTexture=this.generateTexture(d,this.texUnitForGenericAd(),"ad0",null,null,null,!1,!1,!0),this.lastAd=d,this.lastAdName=W}onMetaData(W){this.metadataMap[W.timecode]=W,this.metadataArr.push(W.timecode)}renderFrame(){let W=this.ctx.getAttribLocation(this.program,"a_position"),d=this.ctx.getAttribLocation(this.program,"a_uv"),b=this.ctx.getUniformLocation(this.program,"u_resolution");this.ctx.uniform2f(b,this.ctx.canvas.width,this.ctx.canvas.height),b=this.ctx.getUniformLocation(this.program,"u_resolution2"),this.ctx.uniform2f(b,this.ctx.canvas.width,this.ctx.canvas.height);let t=this.ctx.createBuffer();this.ctx.enableVertexAttribArray(W),this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,t);let e=2,n=this.ctx.FLOAT,i=!1,h=0,G=0;this.ctx.vertexAttribPointer(W,e,n,i,h,G);let p=this.ctx.createBuffer();this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,p),this.ctx.bufferData(this.ctx.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),this.ctx.STATIC_DRAW),this.ctx.enableVertexAttribArray(d),e=2,n=this.ctx.FLOAT,i=!1,h=0,G=0,this.ctx.vertexAttribPointer(d,e,n,i,h,G),this.ctx.viewport(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.clearColor(0,0,0,0),this.ctx.clear(this.ctx.COLOR_BUFFER_BIT|this.ctx.DEPTH_BUFFER_BIT),this.ctx.bindBuffer(this.ctx.ARRAY_BUFFER,t),this.setRectangle(0,0,this.canvas.width,this.canvas.height);let s=this.ctx.TRIANGLES;this.ctx.drawArrays(s,G,6)}setRectangle(W,d,b,t){let e=W,n=W+b,i=d,h=d+t;this.ctx.bufferData(this.ctx.ARRAY_BUFFER,new Float32Array([e,i,n,i,e,h,e,h,n,i,n,h]),this.ctx.STATIC_DRAW)}renderAugmentation(W){this.canvas.width=1280,this.canvas.height=720,this.options.maskMP4?this.renderAugmentationMP4(W):this.renderAugmentationOld(W)}renderAugmentationMP4(W){this.videoStarted=!0;let d=null;if(this.metadataMap[W]){d=this.metadataMap[W];const n=this.metadataArr.indexOf(W);n>-5&&this.metadataArr.splice(0,n-4).forEach(i=>{delete this.metadataMap[i]})}else this.counter++,this.counter>60&&(this.counter=0,Ml("Missing meta data at time code "+W));let b=[],t=0;if(this.currentAds2BoundingRect=[],d!=null&&d.alphaMask){let n=this.texUnitBaseForAlpha();const i=this.generateTexture(d.alphaMask,n,"u_alphaMask",this.ctx.RGBA,null,null,!1,!0);b.push(i);for(const h in d.placeholders){const G=d.placeholders[h];let p="hasLogo"+t,s=this.ctx.getUniformLocation(this.program,p);this.ctx.uniform1i(s,1);let X="adForLogo"+t,o=this.ctx.getUniformLocation(this.program,X);this.ctx.uniform1i(o,this.texUnitForPlaceHolder(G));let r="u_matrix"+t,M=this.ctx.getUniformLocation(this.program,r);this.ctx.uniformMatrix3fv(M,!1,G.tranform);let L={l:-1,t:-1,r:-1,b:-1};for(let J of G.corners)(J.x<L.l||L.l==-1)&&(L.l=J.x),(J.x>L.r||L.r==-1)&&(L.r=J.x),(J.y<L.t||L.t==-1)&&(L.t=J.y),(J.y>L.b||L.b==-1)&&(L.b=J.y);L.l/=d.canvasSize.width,L.r/=d.canvasSize.width,L.t/=d.canvasSize.height,L.b/=d.canvasSize.height,this.currentAds2BoundingRect.push({name:this.adNameForPlaceHolder(G),rect:L}),t++}}const e=4;for(;t<e;++t){let n="hasLogo"+t,i=this.ctx.getUniformLocation(this.program,n);this.ctx.uniform1i(i,0)}this.renderTimecodes(W),this.renderFrame();for(const n of b)this.ctx.deleteTexture(n)}renderAugmentationOld(W){this.videoStarted=!0;let d=null;if(this.metadataMap[W]){d=this.metadataMap[W];const n=this.metadataArr.indexOf(W);n>-5&&this.metadataArr.splice(0,n-4).forEach(i=>{delete this.metadataMap[i]})}else this.counter++,this.counter>60&&(this.counter=0,Ml("Missing meta data at time code "+W));let b=[],t=0;this.currentAds2BoundingRect=[];for(const n in d==null?void 0:d.placeholders){const i=d.placeholders[n];if(!i.alphaAsUint8Array)continue;let h="alpha"+t,G=this.texUnitBaseForAlpha()+t;if(i.alphaTex=this.generateTexture(i.alphaAsUint8Array,G,h,this.ctx.ALPHA,i.width,i.height,!0),i.alphaAsUint8Array=null,!i.alphaTex){Ml("Failed to create alpha texture");continue}b.push(i.alphaTex);let p="hasLogo"+t,s=this.ctx.getUniformLocation(this.program,p);this.ctx.uniform1i(s,1);let X="adForLogo"+t,o=this.ctx.getUniformLocation(this.program,X),r=!1;i.name.indexOf("blur")>=0?(this.ctx.uniform1i(o,99),r=!0):this.ctx.uniform1i(o,this.texUnitForPlaceHolder(i));let M="u_alpha"+t+"TopLeft",L=this.ctx.getUniformLocation(this.program,M);this.ctx.uniform2fv(L,[i.maskX,i.maskY]);let J="u_alpha"+t+"Size",w=this.ctx.getUniformLocation(this.program,J);this.ctx.uniform2fv(w,[i.width,i.height]);let K="u_matrix"+t,x=this.ctx.getUniformLocation(this.program,K);if(this.ctx.uniformMatrix3fv(x,!1,i.tranform),!r){let z={l:-1,t:-1,r:-1,b:-1};for(let I of i.corners)(I.x<z.l||z.l==-1)&&(z.l=I.x),(I.x>z.r||z.r==-1)&&(z.r=I.x),(I.y<z.t||z.t==-1)&&(z.t=I.y),(I.y>z.b||z.b==-1)&&(z.b=I.y);z.l/=d.canvasSize.width,z.r/=d.canvasSize.width,z.t/=d.canvasSize.height,z.b/=d.canvasSize.height,this.currentAds2BoundingRect.push({name:this.adNameForPlaceHolder(i),rect:z})}t++}const e=4;for(;t<e;++t){let n="hasLogo"+t,i=this.ctx.getUniformLocation(this.program,n);this.ctx.uniform1i(i,0)}this.renderTimecodes(W),this.renderFrame();for(const n of b)this.ctx.deleteTexture(n)}renderTimecodes(W){if(this.options.renderTimecodes){let d=W.split(":")[3],b=d.indexOf(".")>=0?2:1,e=parseInt(d.split(".")[0])%10+"."+b,n=this.texUnitBaseForAlpha()+5,i=this.generateTexture(this.digitImg[e],n,"digitTex");texturesForThisFrame.push(i);let G=this.ctx.getUniformLocation(this.program,"hasDigit");this.ctx.uniform1i(G,1);let s=this.ctx.getUniformLocation(this.program,"u_digitTopLeft");this.ctx.uniform2fv(s,[0,0]);let o=this.ctx.getUniformLocation(this.program,"u_digitSize");this.ctx.uniform2fv(o,[200,200])}else{let b=this.ctx.getUniformLocation(this.program,"hasDigit");this.ctx.uniform1i(b,0)}}toggleFullscreen(){(this.requestFullscreen||this.webkitRequestFullscreen).call(this).catch(W=>{Ml(W)})}}class zY extends HY{constructor(W,d){super(W),this.canvas=document.createElement("canvas"),this.ctx=this.canvas.getContext("webgl",{premultipliedAlpha:!1,antialias:!1});let b=d.getElementsByTagName("video")[0];this.canvas.style.top=0,this.canvas.style.left=0,this.canvas.style.width="100%",this.canvas.style.zIndex=1e5,this.canvas.width=d.clientWidth,this.canvas.height=d.clientHeight,this.canvas.style.position="absolute",this.canvas.width=1280,this.canvas.height=720,this.elementToForceRender=document.createElement("span"),this.elementToForceRender.id="elementToForceRender",this.canvas.appendChild(this.elementToForceRender);let t=b.nextSibling;t?d.insertBefore(this.canvas,t):d.appendChild(this.canvas),this.canvas.style["pointer-events"]="none",b.addEventListener("click",e=>{this.onUserClickOnCanvas(e)}),this.canvas.addEventListener("dblclick",this.ToggleFullscreen),this.initGL()}initGL(){const W=this.options.maskMP4?[bV,Dl]:[cW,ym];this.program=wm(this.ctx,W),this.ctx.useProgram(this.program),this.counter=0,this.cleanGL()}createDigitImg(W){let d=document.createElement("canvas");d.width=50,d.height=50;let b=d.getContext("2d");b.fillStyle="black",b.fillRect(0,0,d.width,d.height),b.font="30px Arial",b.fillStyle="white",b.fillText(W,10,35);let t=d.toDataURL(),e=document.createElement("img");return e.src=t,e}cleanGL(){super.cleanGL()}getCanvas(){return this.canvas}addAdvertisement(W,d,b=null){if(W.indexOf(".json")>-1){fetch(d).then(async e=>{this.place2ad=await e.json(),this.ad2place={};let n=Object.keys(this.place2ad);for(let i=0;i<n.length;++i){let h=n[i];if(h=="urls"){this.ad2Url=this.place2ad[h],delete this.place2ad[h];continue}let G=this.place2ad[h];for(let p=0;p<G.length;++p){let s=G[p];this.ad2place["#"+s]=h}}Object.keys(this.place2ad).length>0&&(il(`composer::AddAdvertisement: place-to-ads mapping: ${this.place2ad}`),il(`composer::AddAdvertisement: ads-to-place mapping: ${this.ad2place}`),setTimeout(()=>{this.makeSureAdPerPlace()},3e3))}),b&&b();return}const t=new Image;return t.crossOrigin="Anonymous",t.onload=()=>{let e=Object.keys(this.advertisementMap).length===0;this.advertisementMap[W]=t,il("composer::AddAdvertisement",W),e&&(this.selectAd(W),this.options.isAdLoop&&(clearTimeout(this.autoAddIndex),this._nextAdvertisement())),b&&b()},t.onerror=()=>{alert(`( Security ) We cant reach ${d} .`)},t.src=d,t}}const ln="dmFyIHVSPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgaVI9KFRuLGFuLGFjKT0+YW4gaW4gVG4/dVIoVG4sYW4se2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmFjfSk6VG5bYW5dPWFjO3ZhciB5bD0oVG4sYW4sYWMpPT5pUihUbix0eXBlb2YgYW4hPSJzeW1ib2wiP2FuKyIiOmFuLGFjKTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgVG49YAp1bmlmb3JtIHZlYzIgdV9yZXNvbHV0aW9uOwphdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOwphdHRyaWJ1dGUgdmVjMiBhX3V2OwoKdmFyeWluZyB2ZWMyIHZfdXY7Cgp2b2lkIG1haW4oKSB7CiAgdl91diA9IGFfdXY7CgogIC8vIGNvbnZlcnQgdGhlIHJlY3RhbmdsZSBmcm9tIHBpeGVscyB0byAwLjAgdG8gMS4wCiAgdmVjMiBjbGlwU3BhY2UgPSAyLjAgKiAoYV9wb3NpdGlvbiAvIHVfcmVzb2x1dGlvbikgLSAxLjA7CgogIGdsX1Bvc2l0aW9uID0gdmVjNChjbGlwU3BhY2UsIDAuMCwgMS4wKTsKfQpgLGFuPWAKI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdICnByZWNpc2lvbiBoaWdocCBmbG9hdDsKI2Vsc2UKcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiNlbmRpZgoKCnVuaWZvcm0gdmVjMiB1X3Jlc29sdXRpb247CnVuaWZvcm0gc2FtcGxlcjJEIGFkMDsKdW5pZm9ybSBzYW1wbGVyMkQgYWQxOwp1bmlmb3JtIHNhbXBsZXIyRCB1X2FscGhhTWFzazsKCnZhcnlpbmcgdmVjMiB2X3V2OwoKdW5pZm9ybSBpbnQgaGFzTG9nbzA7CnVuaWZvcm0gbWF0MyB1X21hdHJpeDA7Cgp1bmlmb3JtIGludCBoYXNMb2dvMTsKdW5pZm9ybSBtYXQzIHVfbWF0cml4MTsvL3RoZSByZXZlcnNlIGhvbW9ncmFwaHkKCmNvbnN0IGZsb2F0IERpcmVjdGlvbnMgPSAxNi4wOyAvLyBCTFVSIERJUkVDVElPTlMgKERlZmF1bHQgMTYuMCAtIE1vcmUgaXMgYmV0dGVyIGJ1dCBzbG93ZXIpCmNvbnN0IGZsb2F0IFF1YWxpdHlBZCA9IDMuMDsgLy8gQkxVUiBRVUFMSVRZIChEZWZhdWx0IDMuMCAtIE1vcmUgaXMgYmV0dGVyIGJ1dCBzbG93ZXIpCmNvbnN0IGZsb2F0IFF1YWxpdHlBbHBoYSA9IDUuMDsgLy8gQkxVUiBRVUFMSVRZIChEZWZhdWx0IDMuMCAtIE1vcmUgaXMgYmV0dGVyIGJ1dCBzbG93ZXIpCmNvbnN0IGZsb2F0IEJsdXJSYWRpdXNBZCA9IDEwLjA7CmNvbnN0IGZsb2F0IEJsdXJSYWRpdXNBbHBoYSA9IDEwLjA7CmNvbnN0IGZsb2F0IFBpID0gNi4yODMxODUzMDcxODsgLy8gUGkqMgoKdmVjNCBCbHVyQWQoc2FtcGxlcjJEIGFkVGV4dHVyZSwgdmVjMiBhZFRleENvb3JkKSB7CiAgdmVjMiBSYWRpdXMgPSBCbHVyUmFkaXVzQWQvdV9yZXNvbHV0aW9uLnh5OwogIHZlYzQgcmVzID0gdGV4dHVyZTJEKGFkVGV4dHVyZSwgYWRUZXhDb29yZCk7CiAgIAogIGZvciggZmxvYXQgZD0wLjA7IGQ8UGk7IGQrPVBpL0RpcmVjdGlvbnMpIHsKCQlmb3IoZmxvYXQgaT0xLjAvUXVhbGl0eUFkOyBpPD0xLjA7IGkrPTEuMC9RdWFsaXR5QWQpIHsKCQkJcmVzICs9IHRleHR1cmUyRChhZFRleHR1cmUsIGFkVGV4Q29vcmQrdmVjMihjb3MoZCksc2luKGQpKSpSYWRpdXMqaSk7CiAgICB9CiAgfQoKICByZXMgLz0gUXVhbGl0eUFkICogRGlyZWN0aW9ucyAtIDUuMDsKCiAgcmV0dXJuIHJlczsKfQoKdm9pZCBCbGVuZFdpdGhMb2dvKHNhbXBsZXIyRCBhZCwgbWF0MyBtYXRyaXgpIHsKICB2ZWMyIGN1ckNvb3JkID0gZ2xfRnJhZ0Nvb3JkLnh5OwogIGN1ckNvb3JkLnkgPSB1X3Jlc29sdXRpb25bMV0gLSBjdXJDb29yZC55OwoKICB2ZWMyIHRleENvb3JkOwogIHRleENvb3JkLnggPSAobWF0cml4WzBdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMF1bMV0qY3VyQ29vcmQueSArIG1hdHJpeFswXVsyXSkgLyAobWF0cml4WzJdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMl1bMV0qY3VyQ29vcmQueSArIDEuMCk7CiAgdGV4Q29vcmQueSA9IChtYXRyaXhbMV1bMF0qY3VyQ29vcmQueCArIG1hdHJpeFsxXVsxXSpjdXJDb29yZC55ICsgbWF0cml4WzFdWzJdKSAvIChtYXRyaXhbMl1bMF0qY3VyQ29vcmQueCArIG1hdHJpeFsyXVsxXSpjdXJDb29yZC55ICsgMS4wKTsKICB0ZXhDb29yZCAvPSB1X3Jlc29sdXRpb247CgogIHZlYzQgbWFza0FscGhhID0gdGV4dHVyZTJEKHVfYWxwaGFNYXNrLCB2X3V2KTsKICB2ZWM0IGFkQ29sb3IgPSBCbHVyQWQoYWQsIHRleENvb3JkKTsKICBmbG9hdCBhZEFscGhhID0gdGV4dHVyZTJEKGFkMCwgdGV4Q29vcmQpLmE7CgogIGZsb2F0IGZpbmFsQWxwaGEgPSBtYXNrQWxwaGEucjsKICBpZiAoZmluYWxBbHBoYSA8IDAuMykgCiAgICBmaW5hbEFscGhhID0gMC4wOwogIGZpbmFsQWxwaGEgKj0gYWRDb2xvci5hOwogIGdsX0ZyYWdDb2xvciA9IHZlYzQoYWRDb2xvci5yZ2IsIGZpbmFsQWxwaGEpOwogIGdsX0ZyYWdDb2xvci5yZ2IgKj0gZmluYWxBbHBoYTsKfQoKdm9pZCBtYWluKCkgeyAKICBpZiAoaGFzTG9nbzAgPT0gMSkgewogICAgQmxlbmRXaXRoTG9nbyhhZDAsIHVfbWF0cml4MCk7CiAgfSAKICBpZiAoaGFzTG9nbzEgPT0gMSkgewogICAgQmxlbmRXaXRoTG9nbyhhZDEsICB1X21hdHJpeDEpOwogIH0gCn0KYCxhYz1gCgovL0hpZ2ggcHJlY2lzaW9uIG1vZGUKcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwoKLy8gYW4gYXR0cmlidXRlIGlzIGFuIGlucHV0IChpbikgdG8gYSB2ZXJ0ZXggc2hhZGVyLgovLyBJdCB3aWxsIHJlY2VpdmUgdmVydGV4IGRhdGEgZnJvbSB0aGUgYnVmZmVyCmF0dHJpYnV0ZSB2ZWMyIGFfcG9zaXRpb247CmF0dHJpYnV0ZSB2ZWMyIGFfdXY7CnVuaWZvcm0gdmVjMiB1X3Jlc29sdXRpb247CnZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwoKCi8vIE1haW4gdmVydGV4IHNoYWRlcgp2b2lkIG1haW4oKSB7CiAgLy8gY29udmVydCB0aGUgcmVjdGFuZ2xlIGZyb20gcGl4ZWxzIHRvIDAuMCB0byAxLjAKICAgdmVjMiB6ZXJvVG9PbmUgPSBhX3Bvc2l0aW9uIC8gdV9yZXNvbHV0aW9uOwoKICAgLy8gY29udmVydCBmcm9tIDAtPjEgdG8gMC0+MgogICB2ZWMyIHplcm9Ub1R3byA9IHplcm9Ub09uZSAqIDIuMDsKCiAgIC8vIGNvbnZlcnQgZnJvbSAwLT4yIHRvIC0xLT4rMSAoY2xpcHNwYWNlKQogICB2ZWMyIGNsaXBTcGFjZSA9IHplcm9Ub1R3byAtIDEuMDsKCiAgIGdsX1Bvc2l0aW9uID0gdmVjNChjbGlwU3BhY2UgKiB2ZWMyKDEsIC0xKSwgMCwgMSk7CgogICAvLyBwYXNzIHRoZSB0ZXhDb29yZCB0byB0aGUgZnJhZ21lbnQgc2hhZGVyCiAgIC8vIFRoZSBHUFUgd2lsbCBpbnRlcnBvbGF0ZSB0aGlzIHZhbHVlIGJldHdlZW4gcG9pbnRzLgogICB2X3RleENvb3JkID0gYV91djsKfQpgLHphPWAKCi8vSGlnaCBwcmVjaXNpb24gbW9kZQpwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CgovL1RoZSB0ZXh0dXJlcwp1bmlmb3JtIHNhbXBsZXIyRCB1X2ltYWdlOy8vdmlkZW8gZnJhbWUncyB0ZXh0dXJlMkQKdW5pZm9ybSBzYW1wbGVyMkQgYWQwOy8vdGhlIGFkIHRleHR1cmUyRAp1bmlmb3JtIHNhbXBsZXIyRCBhZDE7Ly90aGUgYWQgdGV4dHVyZTJECnVuaWZvcm0gc2FtcGxlcjJEIGFkMjsvL3RoZSBhZCB0ZXh0dXJlMkQKdW5pZm9ybSBzYW1wbGVyMkQgYWQzOy8vdGhlIGFkIHRleHR1cmUyRAoKdW5pZm9ybSB2ZWMyIHVfcmVzb2x1dGlvbjI7Ly9yZXNvbHV0aW9uIG9mIHRoZSBjYW52YXMKCi8vdl90ZXhDb29yZCBmcm9tIHRoZSB2ZXJ0ZXggc2hhZGVyCnZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwoKLy9Mb2dvcycgc3RhZmYKdW5pZm9ybSBpbnQgaGFzTG9nbzA7Ly9oYXMgbG9nbyA/CnVuaWZvcm0gaW50IGFkRm9yTG9nbzA7CnVuaWZvcm0gc2FtcGxlcjJEIGFscGhhMDsvL3RoZSBhbHBoYSdzIG1hdGUKdW5pZm9ybSBtYXQzIHVfbWF0cml4MDsvL3RoZSByZXZlcnNlIGhvbW9ncmFwaHkKdW5pZm9ybSB2ZWMyIHVfYWxwaGEwVG9wTGVmdDsvL3RoZSBhbHBoYSBtYXRlJ3MgdG9wLWxlZnQKdW5pZm9ybSB2ZWMyIHVfYWxwaGEwU2l6ZTsvL3RoZSBhbHBoYSBtYXRlJ3Mgc2l6ZQoKdW5pZm9ybSBpbnQgaGFzTG9nbzE7Ly9oYXMgbG9nbyA/CnVuaWZvcm0gaW50IGFkRm9yTG9nbzE7CnVuaWZvcm0gc2FtcGxlcjJEIGFscGhhMTsvL3RoZSBhbHBoYSdzIG1hdGUKdW5pZm9ybSBtYXQzIHVfbWF0cml4MTsvL3RoZSByZXZlcnNlIGhvbW9ncmFwaHkKdW5pZm9ybSB2ZWMyIHVfYWxwaGExVG9wTGVmdDsvL3RoZSBhbHBoYSBtYXRlJ3MgdG9wLWxlZnQKdW5pZm9ybSB2ZWMyIHVfYWxwaGExU2l6ZTsvL3RoZSBhbHBoYSBtYXRlJ3Mgc2l6ZQoKdW5pZm9ybSBpbnQgaGFzTG9nbzI7Ly9oYXMgbG9nbyA/CnVuaWZvcm0gaW50IGFkRm9yTG9nbzI7CnVuaWZvcm0gc2FtcGxlcjJEIGFscGhhMjsvL3RoZSBhbHBoYSdzIG1hdGUKdW5pZm9ybSBtYXQzIHVfbWF0cml4MjsvL3RoZSByZXZlcnNlIGhvbW9ncmFwaHkKdW5pZm9ybSB2ZWMyIHVfYWxwaGEyVG9wTGVmdDsvL3RoZSBhbHBoYSBtYXRlJ3MgdG9wLWxlZnQKdW5pZm9ybSB2ZWMyIHVfYWxwaGEyU2l6ZTsvL3RoZSBhbHBoYSBtYXRlJ3Mgc2l6ZQoKdW5pZm9ybSBpbnQgaGFzTG9nbzM7Ly9oYXMgbG9nbyA/CnVuaWZvcm0gaW50IGFkRm9yTG9nbzM7CnVuaWZvcm0gc2FtcGxlcjJEIGFscGhhMzsvL3RoZSBhbHBoYSdzIG1hdGUKdW5pZm9ybSBtYXQzIHVfbWF0cml4MzsvL3RoZSByZXZlcnNlIGhvbW9ncmFwaHkKdW5pZm9ybSB2ZWMyIHVfYWxwaGEzVG9wTGVmdDsvL3RoZSBhbHBoYSBtYXRlJ3MgdG9wLWxlZnQKdW5pZm9ybSB2ZWMyIHVfYWxwaGEzU2l6ZTsvL3RoZSBhbHBoYSBtYXRlJ3Mgc2l6ZQoKY29uc3QgZmxvYXQgRGlyZWN0aW9ucyA9IDE2LjA7IC8vIEJMVVIgRElSRUNUSU9OUyAoRGVmYXVsdCAxNi4wIC0gTW9yZSBpcyBiZXR0ZXIgYnV0IHNsb3dlcikKY29uc3QgZmxvYXQgUXVhbGl0eUFkID0gMy4wOyAvLyBCTFVSIFFVQUxJVFkgKERlZmF1bHQgMy4wIC0gTW9yZSBpcyBiZXR0ZXIgYnV0IHNsb3dlcikKY29uc3QgZmxvYXQgUXVhbGl0eUFscGhhID0gNS4wOyAvLyBCTFVSIFFVQUxJVFkgKERlZmF1bHQgMy4wIC0gTW9yZSBpcyBiZXR0ZXIgYnV0IHNsb3dlcikKY29uc3QgZmxvYXQgQmx1clJhZGl1c0FkID0gMTAuMDsKY29uc3QgZmxvYXQgQmx1clJhZGl1c0FscGhhID0gMTAuMDsKY29uc3QgZmxvYXQgUGkgPSA2LjI4MzE4NTMwNzE4OyAvLyBQaSoyCgpmbG9hdCBCbHVyQWxwaGEoc2FtcGxlcjJEIGFscGhhVGV4dHVyZSwgdmVjMiBhbHBoYUNvb3JkKSB7CglmbG9hdCByZXMgPSB0ZXh0dXJlMkQoYWxwaGFUZXh0dXJlLCBhbHBoYUNvb3JkKS5hOwogIHZlYzIgUmFkaXVzID0gQmx1clJhZGl1c0FscGhhL3VfcmVzb2x1dGlvbjIueHk7CiAgIAogIGZvciggZmxvYXQgZD0wLjA7IGQ8UGk7IGQrPVBpL0RpcmVjdGlvbnMpIHsKCQlmb3IoZmxvYXQgaT0xLjAvUXVhbGl0eUFscGhhOyBpPD0xLjA7IGkrPTEuMC9RdWFsaXR5QWxwaGEpIHsKCQkJcmVzICs9IHRleHR1cmUyRChhbHBoYVRleHR1cmUsIGFscGhhQ29vcmQrdmVjMihjb3MoZCksc2luKGQpKSpSYWRpdXMqaSkuYTsKICAgIH0KICB9CgogIHJlcyAvPSBRdWFsaXR5QWxwaGEgKiBEaXJlY3Rpb25zIC0gMTUuMDsKCiAgcmV0dXJuIHJlczsKfQoKdmVjNCBCbHVyQWQoc2FtcGxlcjJEIGFkVGV4dHVyZSwgdmVjMiBhZFRleENvb3JkKSB7CiAgdmVjMiBSYWRpdXMgPSBCbHVyUmFkaXVzQWQvdV9yZXNvbHV0aW9uMi54eTsKICB2ZWM0IHJlcyA9IHRleHR1cmUyRChhZFRleHR1cmUsIGFkVGV4Q29vcmQpOwogICAKICBmb3IoIGZsb2F0IGQ9MC4wOyBkPFBpOyBkKz1QaS9EaXJlY3Rpb25zKSB7CgkJZm9yKGZsb2F0IGk9MS4wL1F1YWxpdHlBZDsgaTw9MS4wOyBpKz0xLjAvUXVhbGl0eUFkKSB7CgkJCXJlcyArPSB0ZXh0dXJlMkQoYWRUZXh0dXJlLCBhZFRleENvb3JkK3ZlYzIoY29zKGQpLHNpbihkKSkqUmFkaXVzKmkpOwogICAgfQogIH0KCiAgcmVzIC89IFF1YWxpdHlBZCAqIERpcmVjdGlvbnMgLSA1LjA7CgogIHJldHVybiByZXM7Cn0KCmJvb2wgQmxlbmRXaXRoTG9nbyhpbnQgYWRVbml0LCBzYW1wbGVyMkQgYWxwaGFUZXh0dXJlLCBtYXQzIG1hdHJpeCwgdmVjMiBjdXJDb29yZCwgdmVjMiBhbHBoYVRvcExlZnQsIHZlYzIgYWxwaGFTaXplLCB2ZWM0IHZpZGVvSW1hZ2VQaXgpIHsKCiAgdmVjMiB0ZXhDb29yZDsKICB0ZXhDb29yZC54ID0gKG1hdHJpeFswXVswXSpjdXJDb29yZC54ICsgbWF0cml4WzBdWzFdKmN1ckNvb3JkLnkgKyBtYXRyaXhbMF1bMl0pIC8gKG1hdHJpeFsyXVswXSpjdXJDb29yZC54ICsgbWF0cml4WzJdWzFdKmN1ckNvb3JkLnkgKyAxLjApOwogIHRleENvb3JkLnkgPSAobWF0cml4WzFdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMV1bMV0qY3VyQ29vcmQueSArIG1hdHJpeFsxXVsyXSkgLyAobWF0cml4WzJdWzBdKmN1ckNvb3JkLnggKyBtYXRyaXhbMl1bMV0qY3VyQ29vcmQueSArIDEuMCk7CiAgdGV4Q29vcmQgLz0gdV9yZXNvbHV0aW9uMjsKCiAgLy9pZiB3ZSdyZSBpbiB0aGUgYm91bmRpbmcgcmVjdCBvZiB0aGUgbG9nbwogIGlmICh0ZXhDb29yZC54ID49IDAuMCAmJiB0ZXhDb29yZC55ID49IDAuMCAmJiB0ZXhDb29yZC54IDw9IDEuMCAmJiB0ZXhDb29yZC55IDw9IDEuMCkgewoJCWZsb2F0IG1hc2tBbHBoYSA9IDEuMDsKICAgIHZlYzIgYWxwaGFDb29yZCA9IChjdXJDb29yZCAtIGFscGhhVG9wTGVmdCkvYWxwaGFTaXplOy8vZ2V0IHRoZSBjb29yZGluYXRlIG9uIHRoZSBhbHBoYSBtYXRlCiAgICBpZiAoYWxwaGFDb29yZC54ID49IDAuMCAmJiBhbHBoYUNvb3JkLnkgPj0gMC4wICYmIGFscGhhQ29vcmQueCA8PSAxLjAgJiYgYWxwaGFDb29yZC55IDw9IDEuMCkgewogICAgICAvLyBtYXNrQWxwaGEgPSBCbHVyQWxwaGEoYWxwaGFUZXh0dXJlLCBhbHBoYUNvb3JkKTsKICAgICAgbWFza0FscGhhID0gdGV4dHVyZTJEKGFscGhhVGV4dHVyZSwgYWxwaGFDb29yZCkuYTsKICAgIH0KCiAgICB2ZWM0IGFkQ29sb3IgPSAKICAgICAgYWRVbml0ID09IDAgPyBCbHVyQWQoYWQwLCB0ZXhDb29yZCkgOgogICAgICBhZFVuaXQgPT0gMSA/IEJsdXJBZChhZDEsIHRleENvb3JkKSA6CiAgICAgIGFkVW5pdCA9PSAyID8gQmx1ckFkKGFkMiwgdGV4Q29vcmQpIDoKCQkJCQkgICAgICAgICAgQmx1ckFkKGFkMywgdGV4Q29vcmQpOyAvL2dldCB0aGUgbG9nbydzIHRleGVsCgogICAgZmxvYXQgYWRBbHBoYSA9IAogICAgICBhZFVuaXQgPT0gMCA/IHRleHR1cmUyRChhZDAsIHRleENvb3JkKS5hIDoKICAgICAgYWRVbml0ID09IDEgPyB0ZXh0dXJlMkQoYWQxLCB0ZXhDb29yZCkuYSA6CiAgICAgIGFkVW5pdCA9PSAyID8gdGV4dHVyZTJEKGFkMiwgdGV4Q29vcmQpLmEgOgogICAgICAgICAgICAgICAgICAgIHRleHR1cmUyRChhZDMsIHRleENvb3JkKS5hOyAvL2dldCB0aGUgbG9nbydzIHRleGVsICAgICAgICAgICAgIAoKICAgIGZsb2F0IGZpbmFsQWxwaGEgPSBtYXNrQWxwaGEgKiBhZENvbG9yLmE7CiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGFkQ29sb3IucmdiLCBmaW5hbEFscGhhKTsKICAgIGdsX0ZyYWdDb2xvci5yZ2IgKj0gZmluYWxBbHBoYTsKICAgIHJldHVybiB0cnVlOwogIH0gZWxzZSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQp9CnZvaWQgbWFpbigpCnsKICAvL2NhbGN1bGF0ZSBjdXItY29vcmQgKHdpdGggcGl4ZWxzIHVuaXRzKQogIHZlYzIgY3VyQ29vcmQgPSBnbF9GcmFnQ29vcmQueHk7CiAgY3VyQ29vcmQueSA9IHVfcmVzb2x1dGlvbjJbMV0gLSBjdXJDb29yZC55OwoKICB2ZWM0IHZpZGVvSW1hZ2VQaXggPSB0ZXh0dXJlMkQodV9pbWFnZSwgdl90ZXhDb29yZCk7CgogIGlmIChoYXNMb2dvMCA9PSAxKSB7CiAgICBCbGVuZFdpdGhMb2dvKGFkRm9yTG9nbzAsYWxwaGEwLCB1X21hdHJpeDAsIGN1ckNvb3JkLHVfYWxwaGEwVG9wTGVmdCwgdV9hbHBoYTBTaXplLCB2aWRlb0ltYWdlUGl4KTsKICAgIHJldHVybjsKICB9IGVsc2UgaWYgKGhhc0xvZ28xID09IDEpIHsKICAgIEJsZW5kV2l0aExvZ28oYWRGb3JMb2dvMSwgYWxwaGExLCB1X21hdHJpeDEsIGN1ckNvb3JkLHVfYWxwaGExVG9wTGVmdCwgdV9hbHBoYTFTaXplLCB2aWRlb0ltYWdlUGl4KTsKICAgIHJldHVybjsKICB9IGVsc2UgaWYgKGhhc0xvZ28yID09IDEpIHsKICAgIEJsZW5kV2l0aExvZ28oYWRGb3JMb2dvMiwgYWxwaGEyLCB1X21hdHJpeDIsIGN1ckNvb3JkLHVfYWxwaGEyVG9wTGVmdCwgdV9hbHBoYTJTaXplLCB2aWRlb0ltYWdlUGl4KTsKICAgIHJldHVybjsKICB9IGVsc2UgaWYgKGhhc0xvZ28zID09IDEpIHsKICAgIEJsZW5kV2l0aExvZ28oYWRGb3JMb2dvMywgYWxwaGEzLCB1X21hdHJpeDMsIGN1ckNvb3JkLHVfYWxwaGEzVG9wTGVmdCwgdV9hbHBoYTNTaXplLCB2aWRlb0ltYWdlUGl4KTsKICAgIHJldHVybjsKICB9Cn0KYDsvKiBAbGljZW5zZSB0d2dsLmpzIDUuNS40IENvcHlyaWdodCAoYykgMjAxNSwgR3JlZ2cgVGF2YXJlcyBBbGwgUmlnaHRzIFJlc2VydmVkLgpBdmFpbGFibGUgdmlhIHRoZSBNSVQgbGljZW5zZS4Kc2VlOiBodHRwOi8vZ2l0aHViLmNvbS9ncmVnZ21hbi90d2dsLmpzIGZvciBkZXRhaWxzICovY29uc3QgdmE9e307e2NvbnN0IGM9dmE7Y1s1MTIwXT1JbnQ4QXJyYXksY1s1MTIxXT1VaW50OEFycmF5LGNbNTEyMl09SW50MTZBcnJheSxjWzUxMjNdPVVpbnQxNkFycmF5LGNbNTEyNF09SW50MzJBcnJheSxjWzUxMjVdPVVpbnQzMkFycmF5LGNbNTEyNl09RmxvYXQzMkFycmF5LGNbMzI4MTldPVVpbnQxNkFycmF5LGNbMzI4MjBdPVVpbnQxNkFycmF5LGNbMzM2MzVdPVVpbnQxNkFycmF5LGNbNTEzMV09VWludDE2QXJyYXksY1szMzY0MF09VWludDMyQXJyYXksY1szNTg5OV09VWludDMyQXJyYXksY1szNTkwMl09VWludDMyQXJyYXksY1szNjI2OV09VWludDMyQXJyYXksY1szNDA0Ml09VWludDMyQXJyYXl9ZnVuY3Rpb24gSGEoLi4uYyl7Y29uc29sZS5lcnJvciguLi5jKX1jb25zdCBrYT1mdW5jdGlvbigpe2NvbnN0IGM9e30sWj17fTtmdW5jdGlvbiB0KGkpe2NvbnN0IGU9aS5jb25zdHJ1Y3Rvci5uYW1lO2lmKCFjW2VdKXtmb3IoY29uc3QgRyBpbiBpKWlmKHR5cGVvZiBpW0ddPT0ibnVtYmVyIil7Y29uc3Qgbz1aW2lbR11dO1pbaVtHXV09bz9gJHtvfSB8ICR7R31gOkd9Y1tlXT0hMH19cmV0dXJuIGZ1bmN0aW9uKGUsRyl7cmV0dXJuIHQoZSksWltHXXx8KHR5cGVvZiBHPT0ibnVtYmVyIj9gMHgke0cudG9TdHJpbmcoMTYpfWA6Ryl9fSgpLGdhPTY0MDYsVXU9NjQwNyxNdT02NDA4LFVhPTY0MDksTWE9NjQxMCxUYT02NDAyLENhPTM0MDQxLHdhPTMzMzE5LFBhPTMzMzIwLEJhPTY0MDMsUWE9MzYyNDQsRWE9MzYyNDgsamE9MzYyNDksRGE9e307e2NvbnN0IGM9RGE7Y1tnYV09e251bUNvbG9yQ29tcG9uZW50czoxfSxjW1VhXT17bnVtQ29sb3JDb21wb25lbnRzOjF9LGNbTWFdPXtudW1Db2xvckNvbXBvbmVudHM6Mn0sY1tVdV09e251bUNvbG9yQ29tcG9uZW50czozfSxjW011XT17bnVtQ29sb3JDb21wb25lbnRzOjR9LGNbQmFdPXtudW1Db2xvckNvbXBvbmVudHM6MX0sY1tRYV09e251bUNvbG9yQ29tcG9uZW50czoxfSxjW3dhXT17bnVtQ29sb3JDb21wb25lbnRzOjJ9LGNbUGFdPXtudW1Db2xvckNvbXBvbmVudHM6Mn0sY1tVdV09e251bUNvbG9yQ29tcG9uZW50czozfSxjW0VhXT17bnVtQ29sb3JDb21wb25lbnRzOjN9LGNbTXVdPXtudW1Db2xvckNvbXBvbmVudHM6NH0sY1tqYV09e251bUNvbG9yQ29tcG9uZW50czo0fSxjW1RhXT17bnVtQ29sb3JDb21wb25lbnRzOjF9LGNbQ2FdPXtudW1Db2xvckNvbXBvbmVudHM6Mn19Y29uc3QgSFo9SGE7ZnVuY3Rpb24gT2EoYyl7cmV0dXJuIHR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmdldEVsZW1lbnRCeUlkP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGMpOm51bGx9Y29uc3QgQWE9MzU3MTMsX2E9MzU3MTQscWE9MzU2MzIsJGE9MzU2MzMsbGI9MzU5ODEsbmI9L0VSUk9SOlxzKlxkKzooXGQrKS9naTtmdW5jdGlvbiBjYihjLFo9IiIsdD0wKXtjb25zdCBpPVsuLi5aLm1hdGNoQWxsKG5iKV0sZT1uZXcgTWFwKGkubWFwKChHLG8pPT57Y29uc3Qgcz1wYXJzZUludChHWzFdKSxWPWlbbysxXSxoPVY/Vi5pbmRleDpaLmxlbmd0aCx5PVouc3Vic3RyaW5nKEcuaW5kZXgsaCk7cmV0dXJuW3MtMSx5XX0pKTtyZXR1cm4gYy5zcGxpdChgCmApLm1hcCgoRyxvKT0+e2NvbnN0IHM9ZS5nZXQobyk7cmV0dXJuYCR7bysxK3R9OiAke0d9JHtzP2AKCl5eXiAke3N9YDoiIn1gfSkuam9pbihgCmApfWNvbnN0IFR1PS9eWyBcdF0qXG4vO2Z1bmN0aW9uIEN1KGMpe2xldCBaPTA7cmV0dXJuIFR1LnRlc3QoYykmJihaPTEsYz1jLnJlcGxhY2UoVHUsIiIpKSx7bGluZU9mZnNldDpaLHNoYWRlclNvdXJjZTpjfX1mdW5jdGlvbiBkYihjLFosdCxpKXtpZihpPWl8fEhaLCFjLmdldFNoYWRlclBhcmFtZXRlcih0LEFhKSl7Y29uc3QgRz1jLmdldFNoYWRlckluZm9Mb2codCkse2xpbmVPZmZzZXQ6byxzaGFkZXJTb3VyY2U6c309Q3UoYy5nZXRTaGFkZXJTb3VyY2UodCkpLFY9YCR7Y2IocyxHLG8pfQpFcnJvciBjb21waWxpbmcgJHtrYShjLFopfTogJHtHfWA7cmV0dXJuIGkoViksVn1yZXR1cm4iIn1mdW5jdGlvbiB3dShjLFosdCl7bGV0IGksZSxHO2lmKHR5cGVvZiBaPT0iZnVuY3Rpb24iJiYodD1aLFo9dm9pZCAwKSx0eXBlb2YgYz09ImZ1bmN0aW9uIil0PWMsYz12b2lkIDA7ZWxzZSBpZihjJiYhQXJyYXkuaXNBcnJheShjKSl7Y29uc3QgaD1jO3Q9aC5lcnJvckNhbGxiYWNrLGM9aC5hdHRyaWJMb2NhdGlvbnMsaT1oLnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MsZT1oLnRyYW5zZm9ybUZlZWRiYWNrTW9kZSxHPWguY2FsbGJhY2t9Y29uc3Qgbz10fHxIWixzPVtdLFY9e2Vycm9yQ2FsbGJhY2soaCwuLi55KXtzLnB1c2goaCksbyhoLC4uLnkpfSx0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOmksdHJhbnNmb3JtRmVlZGJhY2tNb2RlOmUsY2FsbGJhY2s6RyxlcnJvcnM6c307e2xldCBoPXt9O0FycmF5LmlzQXJyYXkoYyk/Yy5mb3JFYWNoKGZ1bmN0aW9uKHksTCl7aFt5XT1aP1pbTF06TH0pOmg9Y3x8e30sVi5hdHRyaWJMb2NhdGlvbnM9aH1yZXR1cm4gVn1jb25zdCBaYj1bIlZFUlRFWF9TSEFERVIiLCJGUkFHTUVOVF9TSEFERVIiXTtmdW5jdGlvbiB0YihjLFope2lmKFouaW5kZXhPZigiZnJhZyIpPj0wKXJldHVybiBxYTtpZihaLmluZGV4T2YoInZlcnQiKT49MClyZXR1cm4gJGF9ZnVuY3Rpb24gdWIoYyxaLHQpe2NvbnN0IGk9Yy5nZXRBdHRhY2hlZFNoYWRlcnMoWik7Zm9yKGNvbnN0IGUgb2YgaSl0LmhhcyhlKSYmYy5kZWxldGVTaGFkZXIoZSk7Yy5kZWxldGVQcm9ncmFtKFopfWNvbnN0IGliPShjPTApPT5uZXcgUHJvbWlzZShaPT5zZXRUaW1lb3V0KFosYykpO2Z1bmN0aW9uIGViKGMsWix0KXtjb25zdCBpPWMuY3JlYXRlUHJvZ3JhbSgpLHthdHRyaWJMb2NhdGlvbnM6ZSx0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOkcsdHJhbnNmb3JtRmVlZGJhY2tNb2RlOm99PXd1KHQpO2ZvcihsZXQgcz0wO3M8Wi5sZW5ndGg7KytzKXtsZXQgVj1aW3NdO2lmKHR5cGVvZiBWPT0ic3RyaW5nIil7Y29uc3QgaD1PYShWKSx5PWg/aC50ZXh0OlY7bGV0IEw9Y1taYltzXV07aCYmaC50eXBlJiYoTD10YihjLGgudHlwZSl8fEwpLFY9Yy5jcmVhdGVTaGFkZXIoTCksYy5zaGFkZXJTb3VyY2UoVixDdSh5KS5zaGFkZXJTb3VyY2UpLGMuY29tcGlsZVNoYWRlcihWKSxjLmF0dGFjaFNoYWRlcihpLFYpfX1PYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChbcyxWXSk9PmMuYmluZEF0dHJpYkxvY2F0aW9uKGksVixzKSk7e2xldCBzPUc7cyYmKHMuYXR0cmlicyYmKHM9cy5hdHRyaWJzKSxBcnJheS5pc0FycmF5KHMpfHwocz1PYmplY3Qua2V5cyhzKSksYy50cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGkscyxvfHxsYikpfXJldHVybiBjLmxpbmtQcm9ncmFtKGkpLGl9ZnVuY3Rpb24gbWIoYyxaLHQsaSxlKXtjb25zdCBHPXd1KHQsaSxlKSxvPW5ldyBTZXQoWikscz1lYihjLFosRyk7ZnVuY3Rpb24gVihoLHkpe2NvbnN0IEw9YmIoaCx5LEcuZXJyb3JDYWxsYmFjayk7cmV0dXJuIEwmJnViKGgseSxvKSxMfWlmKEcuY2FsbGJhY2spe2FiKGMscykudGhlbigoKT0+e2NvbnN0IGg9VihjLHMpO0cuY2FsbGJhY2soaCxoP3ZvaWQgMDpzKX0pO3JldHVybn1yZXR1cm4gVihjLHMpP3ZvaWQgMDpzfWFzeW5jIGZ1bmN0aW9uIGFiKGMsWil7Y29uc3QgdD1jLmdldEV4dGVuc2lvbigiS0hSX3BhcmFsbGVsX3NoYWRlcl9jb21waWxlIiksaT10PyhHLG8pPT5HLmdldFByb2dyYW1QYXJhbWV0ZXIobyx0LkNPTVBMRVRJT05fU1RBVFVTX0tIUik6KCk9PiEwO2xldCBlPTA7ZG8gYXdhaXQgaWIoZSksZT0xZTMvNjA7d2hpbGUoIWkoYyxaKSl9ZnVuY3Rpb24gYmIoYyxaLHQpe2lmKHQ9dHx8SFosIWMuZ2V0UHJvZ3JhbVBhcmFtZXRlcihaLF9hKSl7Y29uc3QgZT1jLmdldFByb2dyYW1JbmZvTG9nKFopO3QoYEVycm9yIGluIHByb2dyYW0gbGlua2luZzogJHtlfWApO2NvbnN0IG89Yy5nZXRBdHRhY2hlZFNoYWRlcnMoWikubWFwKHM9PmRiKGMsYy5nZXRTaGFkZXJQYXJhbWV0ZXIocyxjLlNIQURFUl9UWVBFKSxzLHQpKTtyZXR1cm5gJHtlfQoke28uZmlsdGVyKHM9PnMpLmpvaW4oYApgKX1gfX1mdW5jdGlvbiBHYihjLFosdCxpLGUpe3JldHVybiBtYihjLFosdCxpLGUpfWNvbnN0IHBkPWM9PmMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksa1o9IjoiLFB1PShjLFosdCk9PntsZXQgaT0iIjtyZXR1cm4gQXJyYXkuaXNBcnJheShjKT8oaT1bcGQoY1swXSkscGQoY1sxXSkscGQoY1syXSkscGQoY1szXSldLmpvaW4oIjoiKSxjWzRdPT0xJiZaJiYoaSs9Ii4xIikpOmk9KCIwIitjLmgpLnNsaWNlKC0yKStrWisoIjAiK2MubSkuc2xpY2UoLTIpK2taKygiMCIrYy5zKS5zbGljZSgtMikra1orKCIwIitjLmYpLnNsaWNlKC0yKSxpfSxCdT0oYyxaLHQpPT57bGV0IGk9NjAsZT0wO01hdGguZmxvb3IoWik9PTYwPyhpPTYwLGU9MCk6TWF0aC5mbG9vcihaKT09NTk/KGk9NjAsZT00KTpNYXRoLmZsb29yKFopPT0zMD8oaT0zMCxlPTApOk1hdGguZmxvb3IoWik9PTI5JiYoaT0zMCxlPTIpO2xldCBHPU1hdGguZmxvb3IoWio2MCksbz1NYXRoLmZsb29yKFoqNjAqMTApLHM9byo2LFY9YyxoPU1hdGguZmxvb3IoVi9zKTtWLT1oKnM7bGV0IHk9TWF0aC5mbG9vcihWL28pO1YtPXkqbyxWPj1pKjYwJiYoVis9ZSooTWF0aC5mbG9vcigoVi1pKjYwKS9HKSsxKSk7bGV0IEw9TWF0aC5mbG9vcihWLyhpKjYwKSk7Vi09TCooaSo2MCk7bGV0IHg9TWF0aC5mbG9vcihWL2kpO1YtPXgqaTtsZXQgST1WO0wrPXkqMTA7bGV0IHY9MDtyZXR1cm4gdj1JJTIsST1NYXRoLmZsb29yKEkvMiksW2gsTCx4LEksdl19LFF1PWM9Pih7aDpjWzBdLG06Y1sxXSxzOmNbMl0sZjpjWzNdLGZpZWxkOmNbNF19KSxFdT1jPT4oYyZjLTEpPT0wO3ZhciBtbD17bG9nOiJsb2ciLGRlYnVnOiJkZWJ1ZyIsaW5mbzoiaW5mbyIsd2Fybjoid2FybiIsZXJyb3I6ImVycm9yIn0sZG49Y29uc29sZSxDbj17fTtPYmplY3Qua2V5cyhtbCkuZm9yRWFjaChmdW5jdGlvbihjKXtDbltjXT1kbltjXX0pO3ZhciBrYz0iRGF0YWRvZyBCcm93c2VyIFNESzoiLGJsPXtkZWJ1ZzpDbi5kZWJ1Zy5iaW5kKGRuLGtjKSxsb2c6Q24ubG9nLmJpbmQoZG4sa2MpLGluZm86Q24uaW5mby5iaW5kKGRuLGtjKSx3YXJuOkNuLndhcm4uYmluZChkbixrYyksZXJyb3I6Q24uZXJyb3IuYmluZChkbixrYyl9LGdaPSJodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbSIsanU9IiIuY29uY2F0KGdaLCIvcmVhbF91c2VyX21vbml0b3JpbmcvYnJvd3Nlci90cm91Ymxlc2hvb3RpbmciKSxXZD0iTW9yZSBkZXRhaWxzOiI7ZnVuY3Rpb24gRHUoYyxaKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10saT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspdFtpXT1hcmd1bWVudHNbaV07dHJ5e3JldHVybiBjLmFwcGx5KHZvaWQgMCx0KX1jYXRjaChlKXtibC5lcnJvcihaLGUpfX19ZnVuY3Rpb24gcmQoYyl7cmV0dXJuIGMhPT0wJiZNYXRoLnJhbmRvbSgpKjEwMDw9Y31mdW5jdGlvbiBvYihjKXtyZXR1cm4gWGIoYykmJmM+PTAmJmM8PTEwMH1mdW5jdGlvbiBYYihjKXtyZXR1cm4gdHlwZW9mIGM9PSJudW1iZXIifXZhciBnYz0xZTMsd249NjAqZ2Msc2I9NjAqd247ZnVuY3Rpb24gVWMoKXtyZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCl9ZnVuY3Rpb24geG4oKXtyZXR1cm4gVWMoKX1mdW5jdGlvbiBoZCgpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX1mdW5jdGlvbiBmbigpe3JldHVybntyZWxhdGl2ZTpoZCgpLHRpbWVTdGFtcDp4bigpfX1mdW5jdGlvbiBwYigpe3JldHVybntyZWxhdGl2ZTowLHRpbWVTdGFtcDpPdSgpfX1mdW5jdGlvbiBXYihjLFope3JldHVybiBaLWN9ZnVuY3Rpb24gcmIoYyxaKXtyZXR1cm4gYytafWZ1bmN0aW9uIGhiKGMpe3JldHVybiBjLU91KCl9dmFyIFVaO2Z1bmN0aW9uIE91KCl7cmV0dXJuIFVaPT09dm9pZCAwJiYoVVo9cGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCksVVp9dmFyIGJuPTEwMjQsQXU9MTAyNCpibixWYj0vW15cdTAwMDAtXHUwMDdGXS87ZnVuY3Rpb24gTVooYyl7cmV0dXJuIFZiLnRlc3QoYyk/d2luZG93LlRleHRFbmNvZGVyIT09dm9pZCAwP25ldyBUZXh0RW5jb2RlcigpLmVuY29kZShjKS5sZW5ndGg6bmV3IEJsb2IoW2NdKS5zaXplOmMubGVuZ3RofWZ1bmN0aW9uIGJjKGMsWil7cmV0dXJuIGMuaW5kZXhPZihaKSE9PS0xfWZ1bmN0aW9uIFRaKGMpe2lmKEFycmF5LmZyb20pcmV0dXJuIEFycmF5LmZyb20oYyk7dmFyIFo9W107aWYoYyBpbnN0YW5jZW9mIFNldCljLmZvckVhY2goZnVuY3Rpb24oaSl7cmV0dXJuIFoucHVzaChpKX0pO2Vsc2UgZm9yKHZhciB0PTA7dDxjLmxlbmd0aDt0KyspWi5wdXNoKGNbdF0pO3JldHVybiBafWZ1bmN0aW9uIHliKGMsWil7Zm9yKHZhciB0PTA7dDxjLmxlbmd0aDt0Kz0xKXt2YXIgaT1jW3RdO2lmKFooaSx0KSlyZXR1cm4gaX19ZnVuY3Rpb24gR2MoYyl7cmV0dXJuIE9iamVjdC5rZXlzKGMpLm1hcChmdW5jdGlvbihaKXtyZXR1cm4gY1taXX0pfWZ1bmN0aW9uIFJiKGMpe3JldHVybiBPYmplY3Qua2V5cyhjKS5tYXAoZnVuY3Rpb24oWil7cmV0dXJuW1osY1taXV19KX1mdW5jdGlvbiBDWihjLFope3JldHVybiBjLnNsaWNlKDAsWi5sZW5ndGgpPT09Wn1mdW5jdGlvbiBMYihjLFope3JldHVybiBjLnNsaWNlKC1aLmxlbmd0aCk9PT1afWZ1bmN0aW9uIFdsKGMpe2Zvcih2YXIgWj1bXSx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylaW3QtMV09YXJndW1lbnRzW3RdO3JldHVybiBaLmZvckVhY2goZnVuY3Rpb24oaSl7Zm9yKHZhciBlIGluIGkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGksZSkmJihjW2VdPWlbZV0pfSksY31mdW5jdGlvbiBZYihjKXtyZXR1cm4gV2woe30sYyl9ZnVuY3Rpb24gX3UoYyxaKXtyZXR1cm4gT2JqZWN0LmtleXMoYykuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gY1t0XT09PVp9KX1mdW5jdGlvbiB3WihjKXtyZXR1cm4gT2JqZWN0LmtleXMoYykubGVuZ3RoPT09MH1mdW5jdGlvbiBKbigpe2lmKHR5cGVvZiBnbG9iYWxUaGlzPT0ib2JqZWN0IilyZXR1cm4gZ2xvYmFsVGhpcztPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwiX2RkX3RlbXBfIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGNvbmZpZ3VyYWJsZTohMH0pO3ZhciBjPV9kZF90ZW1wXztyZXR1cm4gZGVsZXRlIE9iamVjdC5wcm90b3R5cGUuX2RkX3RlbXBfLHR5cGVvZiBjIT0ib2JqZWN0IiYmKHR5cGVvZiBzZWxmPT0ib2JqZWN0Ij9jPXNlbGY6dHlwZW9mIHdpbmRvdz09Im9iamVjdCI/Yz13aW5kb3c6Yz17fSksY31mdW5jdGlvbiBvYyhjLFope3ZhciB0PUpuKCksaTtyZXR1cm4gdC5ab25lJiZ0eXBlb2YgdC5ab25lLl9fc3ltYm9sX189PSJmdW5jdGlvbiImJihpPWNbdC5ab25lLl9fc3ltYm9sX18oWildKSxpfHwoaT1jW1pdKSxpfXZhciBTYj1mdW5jdGlvbihjLFosdCl7aWYodHx8YXJndW1lbnRzLmxlbmd0aD09PTIpZm9yKHZhciBpPTAsZT1aLmxlbmd0aCxHO2k8ZTtpKyspKEd8fCEoaSBpbiBaKSkmJihHfHwoRz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChaLDAsaSkpLEdbaV09WltpXSk7cmV0dXJuIGMuY29uY2F0KEd8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFopKX0sVmQscXU9ITE7ZnVuY3Rpb24geGIoYyl7VmQ9Y31mdW5jdGlvbiBmYihjKXtxdT1jfWZ1bmN0aW9uIEpiKGMsWix0KXt2YXIgaT10LnZhbHVlO3QudmFsdWU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sRz0wO0c8YXJndW1lbnRzLmxlbmd0aDtHKyspZVtHXT1hcmd1bWVudHNbR107dmFyIG89VmQ/JChpKTppO3JldHVybiBvLmFwcGx5KHRoaXMsZSl9fWZ1bmN0aW9uICQoYyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1jKGMsdGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBNYyhjLFosdCl7dHJ5e3JldHVybiBjLmFwcGx5KFosdCl9Y2F0Y2goaSl7aWYoUFooaSksVmQpdHJ5e1ZkKGkpfWNhdGNoKGUpe1BaKGUpfX19ZnVuY3Rpb24gUFooKXtmb3IodmFyIGM9W10sWj0wO1o8YXJndW1lbnRzLmxlbmd0aDtaKyspY1taXT1hcmd1bWVudHNbWl07cXUmJmJsLmVycm9yLmFwcGx5KGJsLFNiKFsiW01PTklUT1JdIl0sYywhMSkpfWZ1bmN0aW9uIFRjKGMsWil7cmV0dXJuIG9jKEpuKCksInNldFRpbWVvdXQiKSgkKGMpLFopfWZ1bmN0aW9uICR1KGMpe29jKEpuKCksImNsZWFyVGltZW91dCIpKGMpfWZ1bmN0aW9uIEJaKGMsWil7cmV0dXJuIG9jKEpuKCksInNldEludGVydmFsIikoJChjKSxaKX1mdW5jdGlvbiBsaShjKXtvYyhKbigpLCJjbGVhckludGVydmFsIikoYyl9dmFyIHNsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhaKXt0aGlzLm9uRmlyc3RTdWJzY3JpYmU9Wix0aGlzLm9ic2VydmVycz1bXX1yZXR1cm4gYy5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKFope3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMub2JzZXJ2ZXJzLnB1c2goWiksdGhpcy5vYnNlcnZlcnMubGVuZ3RoPT09MSYmdGhpcy5vbkZpcnN0U3Vic2NyaWJlJiYodGhpcy5vbkxhc3RVbnN1YnNjcmliZT10aGlzLm9uRmlyc3RTdWJzY3JpYmUodGhpcyl8fHZvaWQgMCkse3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7dC5vYnNlcnZlcnM9dC5vYnNlcnZlcnMuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBaIT09aX0pLCF0Lm9ic2VydmVycy5sZW5ndGgmJnQub25MYXN0VW5zdWJzY3JpYmUmJnQub25MYXN0VW5zdWJzY3JpYmUoKX19fSxjLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oWil7dGhpcy5vYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdChaKX0pfSxjfSgpO2Z1bmN0aW9uIG5pKCl7Zm9yKHZhciBjPVtdLFo9MDtaPGFyZ3VtZW50cy5sZW5ndGg7WisrKWNbWl09YXJndW1lbnRzW1pdO3JldHVybiBuZXcgc2woZnVuY3Rpb24odCl7dmFyIGk9Yy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3Vic2NyaWJlKGZ1bmN0aW9uKEcpe3JldHVybiB0Lm5vdGlmeShHKX0pfSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZS51bnN1YnNjcmliZSgpfSl9fSl9ZnVuY3Rpb24gY2koYyxaLHQpe3ZhciBpPSExLGUsRztyZXR1cm57dGhyb3R0bGVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBvPVtdLHM9MDtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKW9bc109YXJndW1lbnRzW3NdO2lmKGkpe2U9bztyZXR1cm59Yy5hcHBseSh2b2lkIDAsbyksaT0hMCxHPVRjKGZ1bmN0aW9uKCl7ZSYmYy5hcHBseSh2b2lkIDAsZSksaT0hMSxlPXZvaWQgMH0sWil9LGNhbmNlbDpmdW5jdGlvbigpeyR1KEcpLGk9ITEsZT12b2lkIDB9fX1mdW5jdGlvbiBJbigpe31mdW5jdGlvbiBQbihjKXtyZXR1cm4gYz8ocGFyc2VJbnQoYywxMCleTWF0aC5yYW5kb20oKSoxNj4+cGFyc2VJbnQoYywxMCkvNCkudG9TdHJpbmcoMTYpOiIiLmNvbmNhdCgxZTcsIi0iKS5jb25jYXQoMWUzLCItIikuY29uY2F0KDRlMywiLSIpLmNvbmNhdCg4ZTMsIi0iKS5jb25jYXQoMWUxMSkucmVwbGFjZSgvWzAxOF0vZyxQbil9dmFyIHlkPS8oW1x3LV0rKVxzKj1ccyooW147XSspL2c7ZnVuY3Rpb24gSWIoYyxaKXtmb3IoeWQubGFzdEluZGV4PTA7Oyl7dmFyIHQ9eWQuZXhlYyhjKTtpZih0KXtpZih0WzFdPT09WilyZXR1cm4gdFsyXX1lbHNlIGJyZWFrfX1mdW5jdGlvbiBLYihjKXt2YXIgWj1uZXcgTWFwO2Zvcih5ZC5sYXN0SW5kZXg9MDs7KXt2YXIgdD15ZC5leGVjKGMpO2lmKHQpWi5zZXQodFsxXSx0WzJdKTtlbHNlIGJyZWFrfXJldHVybiBafWZ1bmN0aW9uIEZiKGMsWix0KXt2YXIgaT1jLmNoYXJDb2RlQXQoWi0xKSxlPWk+PTU1Mjk2JiZpPD01NjMxOSxHPWU/WisxOlo7cmV0dXJuIGMubGVuZ3RoPD1HP2M6IiIuY29uY2F0KGMuc2xpY2UoMCxHKSkuY29uY2F0KHQpfWZ1bmN0aW9uIE5iKCl7cmV0dXJuIHpiKCk9PT0xfXZhciBSZDtmdW5jdGlvbiB6Yigpe3JldHVybiBSZD8/KFJkPXZiKCkpfWZ1bmN0aW9uIHZiKGMpe3ZhciBaO2M9PT12b2lkIDAmJihjPXdpbmRvdyk7dmFyIHQ9Yy5uYXZpZ2F0b3IudXNlckFnZW50O3JldHVybiBjLmNocm9tZXx8L0hlYWRsZXNzQ2hyb21lLy50ZXN0KHQpPzE6KChaPWMubmF2aWdhdG9yLnZlbmRvcik9PT1udWxsfHxaPT09dm9pZCAwP3ZvaWQgMDpaLmluZGV4T2YoIkFwcGxlIikpPT09MHx8L3NhZmFyaS9pLnRlc3QodCkmJiEvY2hyb21lfGFuZHJvaWQvaS50ZXN0KHQpPzI6Yy5kb2N1bWVudC5kb2N1bWVudE1vZGU/MDozfWZ1bmN0aW9uIENjKGMsWix0LGkpe3ZhciBlPW5ldyBEYXRlO2Uuc2V0VGltZShlLmdldFRpbWUoKSt0KTt2YXIgRz0iZXhwaXJlcz0iLmNvbmNhdChlLnRvVVRDU3RyaW5nKCkpLG89aSYmaS5jcm9zc1NpdGU/Im5vbmUiOiJzdHJpY3QiLHM9aSYmaS5kb21haW4/Ijtkb21haW49Ii5jb25jYXQoaS5kb21haW4pOiIiLFY9aSYmaS5zZWN1cmU/IjtzZWN1cmUiOiIiLGg9aSYmaS5wYXJ0aXRpb25lZD8iO3BhcnRpdGlvbmVkIjoiIjtkb2N1bWVudC5jb29raWU9IiIuY29uY2F0KGMsIj0iKS5jb25jYXQoWiwiOyIpLmNvbmNhdChHLCI7cGF0aD0vO3NhbWVzaXRlPSIpLmNvbmNhdChvKS5jb25jYXQocykuY29uY2F0KFYpLmNvbmNhdChoKX1mdW5jdGlvbiBRWihjKXtyZXR1cm4gSWIoZG9jdW1lbnQuY29va2llLGMpfXZhciBFWjtmdW5jdGlvbiBCbihjKXtyZXR1cm4gRVp8fChFWj1LYihkb2N1bWVudC5jb29raWUpKSxFWi5nZXQoYyl9ZnVuY3Rpb24gZGkoYyxaKXtDYyhjLCIiLDAsWil9ZnVuY3Rpb24gSGIoYyl7aWYoZG9jdW1lbnQuY29va2llPT09dm9pZCAwfHxkb2N1bWVudC5jb29raWU9PT1udWxsKXJldHVybiExO3RyeXt2YXIgWj0iZGRfY29va2llX3Rlc3RfIi5jb25jYXQoUG4oKSksdD0idGVzdCI7Q2MoWix0LHduLGMpO3ZhciBpPVFaKFopPT09dDtyZXR1cm4gZGkoWixjKSxpfWNhdGNoKGUpe3JldHVybiBibC5lcnJvcihlKSwhMX19dmFyIGpaO2Z1bmN0aW9uIGtiKCl7aWYoalo9PT12b2lkIDApe2Zvcih2YXIgYz0iZGRfc2l0ZV90ZXN0XyIuY29uY2F0KFBuKCkpLFo9InRlc3QiLHQ9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnNwbGl0KCIuIiksaT10LnBvcCgpO3QubGVuZ3RoJiYhUVooYyk7KWk9IiIuY29uY2F0KHQucG9wKCksIi4iKS5jb25jYXQoaSksQ2MoYyxaLGdjLHtkb21haW46aX0pO2RpKGMse2RvbWFpbjppfSksalo9aX1yZXR1cm4galp9dmFyIFhjPSJfZGRfcyIsRFo9NCpzYixaaT0xNSp3bix0aT0vXihbYS16QS1aXSspPShbYS16MC05LV0rKSQvLE9aPSImIixnYj0iMSI7ZnVuY3Rpb24gUW4oKXtyZXR1cm57aXNFeHBpcmVkOmdifX1mdW5jdGlvbiBMZChjKXtyZXR1cm4gd1ooYyl9ZnVuY3Rpb24gdWkoYyl7cmV0dXJuIUxkKGMpfWZ1bmN0aW9uIFlkKGMpe3JldHVybiBjLmlzRXhwaXJlZCE9PXZvaWQgMHx8IVViKGMpfWZ1bmN0aW9uIFViKGMpe3JldHVybihjLmNyZWF0ZWQ9PT12b2lkIDB8fFVjKCktTnVtYmVyKGMuY3JlYXRlZCk8RFopJiYoYy5leHBpcmU9PT12b2lkIDB8fFVjKCk8TnVtYmVyKGMuZXhwaXJlKSl9ZnVuY3Rpb24gaWkoYyl7Yy5leHBpcmU9U3RyaW5nKFVjKCkrWmkpfWZ1bmN0aW9uIEFaKGMpe3JldHVybiBSYihjKS5tYXAoZnVuY3Rpb24oWil7dmFyIHQ9WlswXSxpPVpbMV07cmV0dXJuIiIuY29uY2F0KHQsIj0iKS5jb25jYXQoaSl9KS5qb2luKE9aKX1mdW5jdGlvbiBlaShjKXt2YXIgWj17fTtyZXR1cm4gTWIoYykmJmMuc3BsaXQoT1opLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGk9dGkuZXhlYyh0KTtpZihpIT09bnVsbCl7dmFyIGU9aVsxXSxHPWlbMl07WltlXT1HfX0pLFp9ZnVuY3Rpb24gTWIoYyl7cmV0dXJuISFjJiYoYy5pbmRleE9mKE9aKSE9PS0xfHx0aS50ZXN0KGMpKX12YXIgVGI9Il9kZCIsQ2I9Il9kZF9yIix3Yj0iX2RkX2wiLFBiPSJydW0iLEJiPSJsb2dzIjtmdW5jdGlvbiBRYihjKXt2YXIgWj1CbihYYyk7aWYoIVope3ZhciB0PUJuKFRiKSxpPUJuKENiKSxlPUJuKHdiKSxHPXt9O3QmJihHLmlkPXQpLGUmJi9eWzAxXSQvLnRlc3QoZSkmJihHW0JiXT1lKSxpJiYvXlswMTJdJC8udGVzdChpKSYmKEdbUGJdPWkpLHVpKEcpJiYoaWkoRyksYy5wZXJzaXN0U2Vzc2lvbihHKSl9fWZ1bmN0aW9uIEViKGMpe3ZhciBaPV9iKGMpO3JldHVybiBIYihaKT97dHlwZToiQ29va2llIixjb29raWVPcHRpb25zOlp9OnZvaWQgMH1mdW5jdGlvbiBqYihjKXt2YXIgWj17aXNMb2NrRW5hYmxlZDpOYigpLHBlcnNpc3RTZXNzaW9uOkRiKGMpLHJldHJpZXZlU2Vzc2lvbjpBYixleHBpcmVTZXNzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIE9iKGMpfX07cmV0dXJuIFFiKFopLFp9ZnVuY3Rpb24gRGIoYyl7cmV0dXJuIGZ1bmN0aW9uKFope0NjKFhjLEFaKFopLFppLGMpfX1mdW5jdGlvbiBPYihjKXtDYyhYYyxBWihRbigpKSxEWixjKX1mdW5jdGlvbiBBYigpe3ZhciBjPVFaKFhjKTtyZXR1cm4gZWkoYyl9ZnVuY3Rpb24gX2IoYyl7dmFyIFo9e307cmV0dXJuIFouc2VjdXJlPSEhYy51c2VTZWN1cmVTZXNzaW9uQ29va2llfHwhIWMudXNlUGFydGl0aW9uZWRDcm9zc1NpdGVTZXNzaW9uQ29va2llfHwhIWMudXNlQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZSxaLmNyb3NzU2l0ZT0hIWMudXNlUGFydGl0aW9uZWRDcm9zc1NpdGVTZXNzaW9uQ29va2llfHwhIWMudXNlQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZSxaLnBhcnRpdGlvbmVkPSEhYy51c2VQYXJ0aXRpb25lZENyb3NzU2l0ZVNlc3Npb25Db29raWUsYy50cmFja1Nlc3Npb25BY3Jvc3NTdWJkb21haW5zJiYoWi5kb21haW49a2IoKSksWn12YXIgcWI9Il9kZF90ZXN0XyI7ZnVuY3Rpb24gJGIoKXt0cnl7dmFyIGM9UG4oKSxaPSIiLmNvbmNhdChxYikuY29uY2F0KGMpO2xvY2FsU3RvcmFnZS5zZXRJdGVtKFosYyk7dmFyIHQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oWik7cmV0dXJuIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFopLGM9PT10P3t0eXBlOiJMb2NhbFN0b3JhZ2UifTp2b2lkIDB9Y2F0Y2h7cmV0dXJufX1mdW5jdGlvbiBsRygpe3JldHVybntpc0xvY2tFbmFibGVkOiExLHBlcnNpc3RTZXNzaW9uOm1pLHJldHJpZXZlU2Vzc2lvbjpuRyxleHBpcmVTZXNzaW9uOmNHfX1mdW5jdGlvbiBtaShjKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShYYyxBWihjKSl9ZnVuY3Rpb24gbkcoKXt2YXIgYz1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShYYyk7cmV0dXJuIGVpKGMpfWZ1bmN0aW9uIGNHKCl7bWkoUW4oKSl9dmFyIGRHPTEwLFpHPTEwMCxhaT1bXSxTZDtmdW5jdGlvbiBFbihjLFosdCl7dmFyIGk7dD09PXZvaWQgMCYmKHQ9MCk7dmFyIGU9Wi5pc0xvY2tFbmFibGVkLEc9Wi5wZXJzaXN0U2Vzc2lvbixvPVouZXhwaXJlU2Vzc2lvbixzPWZ1bmN0aW9uKHgpe3JldHVybiBHKFdsKHt9LHgse2xvY2s6aH0pKX0sVj1mdW5jdGlvbigpe3ZhciB4PVoucmV0cmlldmVTZXNzaW9uKCksST14LmxvY2s7cmV0dXJuIHgubG9jayYmZGVsZXRlIHgubG9jayx7c2Vzc2lvbjp4LGxvY2s6SX19O2lmKFNkfHwoU2Q9YyksYyE9PVNkKXthaS5wdXNoKGMpO3JldHVybn1pZihlJiZ0Pj1aRyl7YmkoWik7cmV0dXJufXZhciBoLHk9VigpO2lmKGUpe2lmKHkubG9jayl7eGQoYyxaLHQpO3JldHVybn1pZihoPVBuKCkscyh5LnNlc3Npb24pLHk9VigpLHkubG9jayE9PWgpe3hkKGMsWix0KTtyZXR1cm59fXZhciBMPWMucHJvY2Vzcyh5LnNlc3Npb24pO2lmKGUmJih5PVYoKSx5LmxvY2shPT1oKSl7eGQoYyxaLHQpO3JldHVybn1pZihMJiYoWWQoTCk/bygpOihpaShMKSxlP3MoTCk6RyhMKSkpLGUmJiEoTCYmWWQoTCkpKXtpZih5PVYoKSx5LmxvY2shPT1oKXt4ZChjLFosdCk7cmV0dXJufUcoeS5zZXNzaW9uKSxMPXkuc2Vzc2lvbn0oaT1jLmFmdGVyKT09PW51bGx8fGk9PT12b2lkIDB8fGkuY2FsbChjLEx8fHkuc2Vzc2lvbiksYmkoWil9ZnVuY3Rpb24geGQoYyxaLHQpe1RjKGZ1bmN0aW9uKCl7RW4oYyxaLHQrMSl9LGRHKX1mdW5jdGlvbiBiaShjKXtTZD12b2lkIDA7dmFyIFo9YWkuc2hpZnQoKTtaJiZFbihaLGMpfXZhciBHaT1nYztmdW5jdGlvbiB0RyhjKXt2YXIgWj1FYihjKTtyZXR1cm4hWiYmYy5hbGxvd0ZhbGxiYWNrVG9Mb2NhbFN0b3JhZ2UmJihaPSRiKCkpLFp9ZnVuY3Rpb24gdUcoYyxaLHQpe3ZhciBpPW5ldyBzbCxlPW5ldyBzbCxHPW5ldyBzbCxvPWMudHlwZT09PSJDb29raWUiP2piKGMuY29va2llT3B0aW9ucyk6bEcoKSxzPW8uZXhwaXJlU2Vzc2lvbixWPUJaKHYsR2kpLGg7SCgpO3ZhciB5PWNpKGZ1bmN0aW9uKCl7RW4oe3Byb2Nlc3M6ZnVuY3Rpb24oTSl7aWYoIUxkKE0pKXt2YXIgemw9eihNKTtyZXR1cm4gQSh6bCksemx9fSxhZnRlcjpmdW5jdGlvbihNKXt1aShNKSYmIVlsKCkmJl8oTSksaD1NfX0sbyl9LEdpKSxMPXkudGhyb3R0bGVkLHg9eS5jYW5jZWw7ZnVuY3Rpb24gSSgpe0VuKHtwcm9jZXNzOmZ1bmN0aW9uKE0pe3JldHVybiBZbCgpP3ooTSk6dm9pZCAwfX0sbyl9ZnVuY3Rpb24gdigpe0VuKHtwcm9jZXNzOmZ1bmN0aW9uKE0pe3JldHVybiBZZChNKT9RbigpOnZvaWQgMH0sYWZ0ZXI6en0sbyl9ZnVuY3Rpb24geihNKXtyZXR1cm4gWWQoTSkmJihNPVFuKCkpLFlsKCkmJihHbChNKT9abigpOihHLm5vdGlmeSh7cHJldmlvdXNTdGF0ZTpoLG5ld1N0YXRlOk19KSxoPU0pKSxNfWZ1bmN0aW9uIEgoKXtFbih7cHJvY2VzczpmdW5jdGlvbihNKXtpZihMZChNKSlyZXR1cm4gUW4oKX0sYWZ0ZXI6ZnVuY3Rpb24oTSl7aD1NfX0sbyl9ZnVuY3Rpb24gQShNKXtpZihMZChNKSlyZXR1cm4hMTt2YXIgemw9dChNW1pdKSxqYz16bC50cmFja2luZ1R5cGUscHQ9emwuaXNUcmFja2VkO01bWl09amMsZGVsZXRlIE0uaXNFeHBpcmVkLHB0JiYhTS5pZCYmKE0uaWQ9UG4oKSxNLmNyZWF0ZWQ9U3RyaW5nKFVjKCkpKX1mdW5jdGlvbiBZbCgpe3JldHVybiBoW1pdIT09dm9pZCAwfWZ1bmN0aW9uIEdsKE0pe3JldHVybiBoLmlkIT09TS5pZHx8aFtaXSE9PU1bWl19ZnVuY3Rpb24gWm4oKXtoPVFuKCksZS5ub3RpZnkoKX1mdW5jdGlvbiBfKE0pe2g9TSxpLm5vdGlmeSgpfWZ1bmN0aW9uIHJsKE0pe0VuKHtwcm9jZXNzOmZ1bmN0aW9uKHpsKXtyZXR1cm4gV2woe30semwsTSl9LGFmdGVyOnp9LG8pfXJldHVybntleHBhbmRPclJlbmV3U2Vzc2lvbjpMLGV4cGFuZFNlc3Npb246SSxnZXRTZXNzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LHJlbmV3T2JzZXJ2YWJsZTppLGV4cGlyZU9ic2VydmFibGU6ZSxzZXNzaW9uU3RhdGVVcGRhdGVPYnNlcnZhYmxlOkcscmVzdGFydFNlc3Npb246SCxleHBpcmU6ZnVuY3Rpb24oKXt4KCkscygpLHooUW4oKSl9LHN0b3A6ZnVuY3Rpb24oKXtsaShWKX0sdXBkYXRlU2Vzc2lvblN0YXRlOnJsfX12YXIgX1o9e0dSQU5URUQ6ImdyYW50ZWQiLE5PVF9HUkFOVEVEOiJub3QtZ3JhbnRlZCJ9O2Z1bmN0aW9uIGlHKGMpe3ZhciBaPW5ldyBzbDtyZXR1cm57dHJ5VG9Jbml0OmZ1bmN0aW9uKHQpe2N8fChjPXQpfSx1cGRhdGU6ZnVuY3Rpb24odCl7Yz10LFoubm90aWZ5KCl9LGlzR3JhbnRlZDpmdW5jdGlvbigpe3JldHVybiBjPT09X1ouR1JBTlRFRH0sb2JzZXJ2YWJsZTpafX1mdW5jdGlvbiBqbihjLFosdCl7aWYodHlwZW9mIGMhPSJvYmplY3QifHxjPT09bnVsbClyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYyk7dmFyIGk9c2MoT2JqZWN0LnByb3RvdHlwZSksZT1zYyhBcnJheS5wcm90b3R5cGUpLEc9c2MoT2JqZWN0LmdldFByb3RvdHlwZU9mKGMpKSxvPXNjKGMpO3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYyxaLHQpfWNhdGNoe3JldHVybiI8ZXJyb3I6IHVuYWJsZSB0byBzZXJpYWxpemUgb2JqZWN0PiJ9ZmluYWxseXtpKCksZSgpLEcoKSxvKCl9fWZ1bmN0aW9uIHNjKGMpe3ZhciBaPWMsdD1aLnRvSlNPTjtyZXR1cm4gdD8oZGVsZXRlIFoudG9KU09OLGZ1bmN0aW9uKCl7Wi50b0pTT049dH0pOklufWZ1bmN0aW9uIHFaKGMpe3JldHVybiBlRyhjLGxvY2F0aW9uLmhyZWYpLmhyZWZ9ZnVuY3Rpb24gZUcoYyxaKXt2YXIgdD1tRygpO2lmKHQpdHJ5e3JldHVybiBaIT09dm9pZCAwP25ldyB0KGMsWik6bmV3IHQoYyl9Y2F0Y2gobyl7dGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY29uc3RydWN0IFVSTDogIi5jb25jYXQoU3RyaW5nKG8pLCIgIikuY29uY2F0KGpuKHt1cmw6YyxiYXNlOlp9KSkpfWlmKFo9PT12b2lkIDAmJiEvOi8udGVzdChjKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgVVJMOiAnIi5jb25jYXQoYywiJyIpKTt2YXIgaT1kb2N1bWVudCxlPWkuY3JlYXRlRWxlbWVudCgiYSIpO2lmKFohPT12b2lkIDApe2k9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKTt2YXIgRz1pLmNyZWF0ZUVsZW1lbnQoImJhc2UiKTtHLmhyZWY9WixpLmhlYWQuYXBwZW5kQ2hpbGQoRyksaS5ib2R5LmFwcGVuZENoaWxkKGUpfXJldHVybiBlLmhyZWY9YyxlfXZhciBvaT1VUkwsZmQ7ZnVuY3Rpb24gbUcoKXtpZihmZD09PXZvaWQgMCl0cnl7dmFyIGM9bmV3IG9pKCJodHRwOi8vdGVzdC9wYXRoIik7ZmQ9Yy5ocmVmPT09Imh0dHA6Ly90ZXN0L3BhdGgifWNhdGNoe2ZkPSExfXJldHVybiBmZD9vaTp2b2lkIDB9dmFyIGFHPSJkYXRhZDBnLmNvbSIsYkc9ImRkMGctZ292LmNvbSIsRG49ImRhdGFkb2docS5jb20iLEdHPSJkZG9nLWdvdi5jb20iLFhpPSJwY2kuYnJvd3Nlci1pbnRha2UtZGF0YWRvZ2hxLmNvbSI7ZnVuY3Rpb24gd2MoYyxaLHQpe3ZhciBpPW9HKGMsWik7cmV0dXJue2J1aWxkOmZ1bmN0aW9uKGUsRyl7dmFyIG89c0coYyxaLHQsZSxHKTtyZXR1cm4gaShvKX0sdXJsUHJlZml4OmkoIiIpLHRyYWNrVHlwZTpafX1mdW5jdGlvbiBvRyhjLFope3ZhciB0PSIvYXBpL3YyLyIuY29uY2F0KFopLGk9Yy5wcm94eTtpZih0eXBlb2YgaT09InN0cmluZyIpe3ZhciBlPXFaKGkpO3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4iIi5jb25jYXQoZSwiP2RkZm9yd2FyZD0iKS5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KCIiLmNvbmNhdCh0LCI/IikuY29uY2F0KG8pKSl9fWlmKHR5cGVvZiBpPT0iZnVuY3Rpb24iKXJldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gaSh7cGF0aDp0LHBhcmFtZXRlcnM6b30pfTt2YXIgRz1YRyhaLGMpO3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4iaHR0cHM6Ly8iLmNvbmNhdChHKS5jb25jYXQodCwiPyIpLmNvbmNhdChvKX19ZnVuY3Rpb24gWEcoYyxaKXt2YXIgdD1aLnNpdGUsaT10PT09dm9pZCAwP0RuOnQsZT1aLmludGVybmFsQW5hbHl0aWNzU3ViZG9tYWluO2lmKGM9PT0ibG9ncyImJloudXNlUGNpSW50YWtlJiZpPT09RG4pcmV0dXJuIFhpO2lmKGUmJmk9PT1EbilyZXR1cm4iIi5jb25jYXQoZSwiLiIpLmNvbmNhdChEbik7aWYoaT09PWJHKXJldHVybiJodHRwLWludGFrZS5sb2dzLiIuY29uY2F0KGkpO3ZhciBHPWkuc3BsaXQoIi4iKSxvPUcucG9wKCk7cmV0dXJuImJyb3dzZXItaW50YWtlLSIuY29uY2F0KEcuam9pbigiLSIpLCIuIikuY29uY2F0KG8pfWZ1bmN0aW9uIHNHKGMsWix0LGksZSl7dmFyIEc9Yy5jbGllbnRUb2tlbixvPWMuaW50ZXJuYWxBbmFseXRpY3NTdWJkb21haW4scz1lLnJldHJ5LFY9ZS5lbmNvZGluZyxoPVsic2RrX3ZlcnNpb246Ii5jb25jYXQoIjUuMjkuMSIpLCJhcGk6Ii5jb25jYXQoaSldLmNvbmNhdCh0KTtzJiZoLnB1c2goInJldHJ5X2NvdW50OiIuY29uY2F0KHMuY291bnQpLCJyZXRyeV9hZnRlcjoiLmNvbmNhdChzLmxhc3RGYWlsdXJlU3RhdHVzKSk7dmFyIHk9WyJkZHNvdXJjZT1icm93c2VyIiwiZGR0YWdzPSIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChoLmpvaW4oIiwiKSkpLCJkZC1hcGkta2V5PSIuY29uY2F0KEcpLCJkZC1ldnAtb3JpZ2luLXZlcnNpb249Ii5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KCI1LjI5LjEiKSksImRkLWV2cC1vcmlnaW49YnJvd3NlciIsImRkLXJlcXVlc3QtaWQ9Ii5jb25jYXQoUG4oKSldO3JldHVybiBWJiZ5LnB1c2goImRkLWV2cC1lbmNvZGluZz0iLmNvbmNhdChWKSksWj09PSJydW0iJiZ5LnB1c2goImJhdGNoX3RpbWU9Ii5jb25jYXQoeG4oKSkpLG8mJnkucmV2ZXJzZSgpLHkuam9pbigiJiIpfXZhciBwRz0yMDA7ZnVuY3Rpb24gV0coYyl7dmFyIFo9Yy5lbnYsdD1jLnNlcnZpY2UsaT1jLnZlcnNpb24sZT1jLmRhdGFjZW50ZXIsRz1bXTtyZXR1cm4gWiYmRy5wdXNoKEpkKCJlbnYiLFopKSx0JiZHLnB1c2goSmQoInNlcnZpY2UiLHQpKSxpJiZHLnB1c2goSmQoInZlcnNpb24iLGkpKSxlJiZHLnB1c2goSmQoImRhdGFjZW50ZXIiLGUpKSxHfWZ1bmN0aW9uIEpkKGMsWil7dmFyIHQ9cEctYy5sZW5ndGgtMTsoWi5sZW5ndGg+dHx8ckcoWikpJiZibC53YXJuKCIiLmNvbmNhdChjLCIgdmFsdWUgZG9lc24ndCBtZWV0IHRhZyByZXF1aXJlbWVudHMgYW5kIHdpbGwgYmUgc2FuaXRpemVkLiAiKS5jb25jYXQoV2QsIiAiKS5jb25jYXQoZ1osIi9nZXR0aW5nX3N0YXJ0ZWQvdGFnZ2luZy8jZGVmaW5pbmctdGFncyIpKTt2YXIgaT1aLnJlcGxhY2UoLywvZywiXyIpO3JldHVybiIiLmNvbmNhdChjLCI6IikuY29uY2F0KGkpfWZ1bmN0aW9uIHJHKGMpe3JldHVybiBoRygpP25ldyBSZWdFeHAoIlteXFxwe0xsfVxccHtMb30wLTlfOi4vLV0iLCJ1IikudGVzdChjKTohMX1mdW5jdGlvbiBoRygpe3RyeXtyZXR1cm4gbmV3IFJlZ0V4cCgiW1xccHtMbH1dIiwidSIpLCEwfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBWRyhjKXt2YXIgWj1jLnNpdGV8fERuLHQ9V0coYyksaT15RyhjLHQpLGU9TEcoaSxaKSxHPVJHKGMsZSx0KTtyZXR1cm4gV2woe2lzSW50YWtlVXJsOmZ1bmN0aW9uKG8pe3JldHVybiBlLnNvbWUoZnVuY3Rpb24ocyl7cmV0dXJuIG8uaW5kZXhPZihzKT09PTB9KX0scmVwbGljYTpHLHNpdGU6Wn0saSl9ZnVuY3Rpb24geUcoYyxaKXtyZXR1cm57bG9nc0VuZHBvaW50QnVpbGRlcjp3YyhjLCJsb2dzIixaKSxydW1FbmRwb2ludEJ1aWxkZXI6d2MoYywicnVtIixaKSxzZXNzaW9uUmVwbGF5RW5kcG9pbnRCdWlsZGVyOndjKGMsInJlcGxheSIsWil9fWZ1bmN0aW9uIFJHKGMsWix0KXtpZihjLnJlcGxpY2Epe3ZhciBpPVdsKHt9LGMse3NpdGU6RG4sY2xpZW50VG9rZW46Yy5yZXBsaWNhLmNsaWVudFRva2VufSksZT17bG9nc0VuZHBvaW50QnVpbGRlcjp3YyhpLCJsb2dzIix0KSxydW1FbmRwb2ludEJ1aWxkZXI6d2MoaSwicnVtIix0KX07cmV0dXJuIFoucHVzaC5hcHBseShaLEdjKGUpLm1hcChmdW5jdGlvbihHKXtyZXR1cm4gRy51cmxQcmVmaXh9KSksV2woe2FwcGxpY2F0aW9uSWQ6Yy5yZXBsaWNhLmFwcGxpY2F0aW9uSWR9LGUpfX1mdW5jdGlvbiBMRyhjLFope3ZhciB0PUdjKGMpLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gaS51cmxQcmVmaXh9KTtyZXR1cm4gWj09PURuJiZ0LnB1c2goImh0dHBzOi8vIi5jb25jYXQoWGksIi8iKSksdH1mdW5jdGlvbiAkWihjLFope3JldHVybiBjIT1udWxsJiZ0eXBlb2YgYyE9InN0cmluZyI/KGJsLmVycm9yKCIiLmNvbmNhdChaLCIgbXVzdCBiZSBkZWZpbmVkIGFzIGEgc3RyaW5nIikpLCExKTohMH1mdW5jdGlvbiBZRyhjKXtyZXR1cm4gYyYmdHlwZW9mIGM9PSJzdHJpbmciJiYhLyhkYXRhZG9nfGRkb2d8ZGF0YWQwZ3xkZDBnKS8udGVzdChjKT8oYmwuZXJyb3IoIlNpdGUgc2hvdWxkIGJlIGEgdmFsaWQgRGF0YWRvZyBzaXRlLiAiLmNvbmNhdChXZCwiICIpLmNvbmNhdChnWiwiL2dldHRpbmdfc3RhcnRlZC9zaXRlLy4iKSksITEpOiEwfWZ1bmN0aW9uIElkKGMsWil7cmV0dXJuIGMhPT12b2lkIDAmJiFvYihjKT8oYmwuZXJyb3IoIiIuY29uY2F0KFosIiBTYW1wbGUgUmF0ZSBzaG91bGQgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMDAiKSksITEpOiEwfWZ1bmN0aW9uIFNHKGMpe3ZhciBaLHQsaSxlLEc7aWYoIWN8fCFjLmNsaWVudFRva2VuKXtibC5lcnJvcigiQ2xpZW50IFRva2VuIGlzIG5vdCBjb25maWd1cmVkLCB3ZSB3aWxsIG5vdCBzZW5kIGFueSBkYXRhLiIpO3JldHVybn1pZighKCFZRyhjLnNpdGUpfHwhSWQoYy5zZXNzaW9uU2FtcGxlUmF0ZSwiU2Vzc2lvbiIpfHwhSWQoYy50ZWxlbWV0cnlTYW1wbGVSYXRlLCJUZWxlbWV0cnkiKXx8IUlkKGMudGVsZW1ldHJ5Q29uZmlndXJhdGlvblNhbXBsZVJhdGUsIlRlbGVtZXRyeSBDb25maWd1cmF0aW9uIil8fCFJZChjLnRlbGVtZXRyeVVzYWdlU2FtcGxlUmF0ZSwiVGVsZW1ldHJ5IFVzYWdlIil8fCEkWihjLnZlcnNpb24sIlZlcnNpb24iKXx8ISRaKGMuZW52LCJFbnYiKXx8ISRaKGMuc2VydmljZSwiU2VydmljZSIpKSl7aWYoYy50cmFja2luZ0NvbnNlbnQhPT12b2lkIDAmJiFfdShfWixjLnRyYWNraW5nQ29uc2VudCkpe2JsLmVycm9yKCdUcmFja2luZyBDb25zZW50IHNob3VsZCBiZSBlaXRoZXIgImdyYW50ZWQiIG9yICJub3QtZ3JhbnRlZCInKTtyZXR1cm59cmV0dXJuIFdsKHtiZWZvcmVTZW5kOmMuYmVmb3JlU2VuZCYmRHUoYy5iZWZvcmVTZW5kLCJiZWZvcmVTZW5kIHRocmV3IGFuIGVycm9yOiIpLHNlc3Npb25TdG9yZVN0cmF0ZWd5VHlwZTp0RyhjKSxzZXNzaW9uU2FtcGxlUmF0ZTooWj1jLnNlc3Npb25TYW1wbGVSYXRlKSE9PW51bGwmJlohPT12b2lkIDA/WjoxMDAsdGVsZW1ldHJ5U2FtcGxlUmF0ZToodD1jLnRlbGVtZXRyeVNhbXBsZVJhdGUpIT09bnVsbCYmdCE9PXZvaWQgMD90OjIwLHRlbGVtZXRyeUNvbmZpZ3VyYXRpb25TYW1wbGVSYXRlOihpPWMudGVsZW1ldHJ5Q29uZmlndXJhdGlvblNhbXBsZVJhdGUpIT09bnVsbCYmaSE9PXZvaWQgMD9pOjUsdGVsZW1ldHJ5VXNhZ2VTYW1wbGVSYXRlOihlPWMudGVsZW1ldHJ5VXNhZ2VTYW1wbGVSYXRlKSE9PW51bGwmJmUhPT12b2lkIDA/ZTo1LHNlcnZpY2U6Yy5zZXJ2aWNlfHx2b2lkIDAsc2lsZW50TXVsdGlwbGVJbml0OiEhYy5zaWxlbnRNdWx0aXBsZUluaXQsYWxsb3dVbnRydXN0ZWRFdmVudHM6ISFjLmFsbG93VW50cnVzdGVkRXZlbnRzLHRyYWNraW5nQ29uc2VudDooRz1jLnRyYWNraW5nQ29uc2VudCkhPT1udWxsJiZHIT09dm9pZCAwP0c6X1ouR1JBTlRFRCxzdG9yZUNvbnRleHRzQWNyb3NzUGFnZXM6ISFjLnN0b3JlQ29udGV4dHNBY3Jvc3NQYWdlcyxiYXRjaEJ5dGVzTGltaXQ6MTYqYm4sZXZlbnRSYXRlTGltaXRlclRocmVzaG9sZDozZTMsbWF4VGVsZW1ldHJ5RXZlbnRzUGVyUGFnZToxNSxmbHVzaFRpbWVvdXQ6MzAqZ2MsYmF0Y2hNZXNzYWdlc0xpbWl0OjUwLG1lc3NhZ2VCeXRlc0xpbWl0OjI1Nipibn0sVkcoYykpfX1mdW5jdGlvbiB4RyhjKXtyZXR1cm57c2Vzc2lvbl9zYW1wbGVfcmF0ZTpjLnNlc3Npb25TYW1wbGVSYXRlLHRlbGVtZXRyeV9zYW1wbGVfcmF0ZTpjLnRlbGVtZXRyeVNhbXBsZVJhdGUsdGVsZW1ldHJ5X2NvbmZpZ3VyYXRpb25fc2FtcGxlX3JhdGU6Yy50ZWxlbWV0cnlDb25maWd1cmF0aW9uU2FtcGxlUmF0ZSx0ZWxlbWV0cnlfdXNhZ2Vfc2FtcGxlX3JhdGU6Yy50ZWxlbWV0cnlVc2FnZVNhbXBsZVJhdGUsdXNlX2JlZm9yZV9zZW5kOiEhYy5iZWZvcmVTZW5kLHVzZV9jcm9zc19zaXRlX3Nlc3Npb25fY29va2llOmMudXNlQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZSx1c2VfcGFydGl0aW9uZWRfY3Jvc3Nfc2l0ZV9zZXNzaW9uX2Nvb2tpZTpjLnVzZVBhcnRpdGlvbmVkQ3Jvc3NTaXRlU2Vzc2lvbkNvb2tpZSx1c2Vfc2VjdXJlX3Nlc3Npb25fY29va2llOmMudXNlU2VjdXJlU2Vzc2lvbkNvb2tpZSx1c2VfcHJveHk6ISFjLnByb3h5LHNpbGVudF9tdWx0aXBsZV9pbml0OmMuc2lsZW50TXVsdGlwbGVJbml0LHRyYWNrX3Nlc3Npb25fYWNyb3NzX3N1YmRvbWFpbnM6Yy50cmFja1Nlc3Npb25BY3Jvc3NTdWJkb21haW5zLGFsbG93X2ZhbGxiYWNrX3RvX2xvY2FsX3N0b3JhZ2U6ISFjLmFsbG93RmFsbGJhY2tUb0xvY2FsU3RvcmFnZSxzdG9yZV9jb250ZXh0c19hY3Jvc3NfcGFnZXM6ISFjLnN0b3JlQ29udGV4dHNBY3Jvc3NQYWdlcyxhbGxvd191bnRydXN0ZWRfZXZlbnRzOiEhYy5hbGxvd1VudHJ1c3RlZEV2ZW50cyx0cmFja2luZ19jb25zZW50OmMudHJhY2tpbmdDb25zZW50fX12YXIgbHQ7KGZ1bmN0aW9uKGMpe2MuV1JJVEFCTEVfUkVTT1VSQ0VfR1JBUEhRTD0id3JpdGFibGVfcmVzb3VyY2VfZ3JhcGhxbCIsYy5SRU1PVEVfQ09ORklHVVJBVElPTj0icmVtb3RlX2NvbmZpZ3VyYXRpb24iLGMuVVBEQVRFX1ZJRVdfTkFNRT0idXBkYXRlX3ZpZXdfbmFtZSIsYy5MT05HX0FOSU1BVElPTl9GUkFNRT0ibG9uZ19hbmltYXRpb25fZnJhbWUifSkobHR8fChsdD17fSkpO3ZhciBzaT1uZXcgU2V0O2Z1bmN0aW9uIGZHKGMpe0FycmF5LmlzQXJyYXkoYykmJkpHKGMuZmlsdGVyKGZ1bmN0aW9uKFope3JldHVybiBfdShsdCxaKX0pKX1mdW5jdGlvbiBKRyhjKXtjLmZvckVhY2goZnVuY3Rpb24oWil7c2kuYWRkKFopfSl9ZnVuY3Rpb24gSUcoKXtyZXR1cm4gc2l9dmFyIFBjPSI/IjtmdW5jdGlvbiBHbihjKXt2YXIgWj1bXSx0PW50KGMsInN0YWNrIiksaT1TdHJpbmcoYyk7cmV0dXJuIHQmJkNaKHQsaSkmJih0PXQuc2xpY2UoaS5sZW5ndGgpKSx0JiZ0LnNwbGl0KGAKYCkuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgRz1ORyhlKXx8dkcoZSl8fGtHKGUpfHxNRyhlKTtHJiYoIUcuZnVuYyYmRy5saW5lJiYoRy5mdW5jPVBjKSxaLnB1c2goRykpfSkse21lc3NhZ2U6bnQoYywibWVzc2FnZSIpLG5hbWU6bnQoYywibmFtZSIpLHN0YWNrOlp9fXZhciBwaT0iKCg/OmZpbGV8aHR0cHM/fGJsb2J8Y2hyb21lLWV4dGVuc2lvbnxuYXRpdmV8ZXZhbHx3ZWJwYWNrfHNuaXBwZXR8PGFub255bW91cz58XFx3K1xcLnxcXC8pLio/KSIscGM9Iig/OjooXFxkKykpIixLRz1uZXcgUmVnRXhwKCJeXFxzKmF0ICguKj8pID9cXCgiLmNvbmNhdChwaSkuY29uY2F0KHBjLCI/IikuY29uY2F0KHBjLCI/XFwpP1xccyokIiksImkiKSxGRz1uZXcgUmVnRXhwKCJcXCgoXFxTKikiLmNvbmNhdChwYykuY29uY2F0KHBjLCJcXCkiKSk7ZnVuY3Rpb24gTkcoYyl7dmFyIFo9S0cuZXhlYyhjKTtpZihaKXt2YXIgdD1aWzJdJiZaWzJdLmluZGV4T2YoIm5hdGl2ZSIpPT09MCxpPVpbMl0mJlpbMl0uaW5kZXhPZigiZXZhbCIpPT09MCxlPUZHLmV4ZWMoWlsyXSk7cmV0dXJuIGkmJmUmJihaWzJdPWVbMV0sWlszXT1lWzJdLFpbNF09ZVszXSkse2FyZ3M6dD9bWlsyXV06W10sY29sdW1uOlpbNF0/K1pbNF06dm9pZCAwLGZ1bmM6WlsxXXx8UGMsbGluZTpaWzNdPytaWzNdOnZvaWQgMCx1cmw6dD92b2lkIDA6WlsyXX19fXZhciB6Rz1uZXcgUmVnRXhwKCJeXFxzKmF0ID8iLmNvbmNhdChwaSkuY29uY2F0KHBjLCI/IikuY29uY2F0KHBjLCI/P1xccyokIiksImkiKTtmdW5jdGlvbiB2RyhjKXt2YXIgWj16Ry5leGVjKGMpO2lmKFopcmV0dXJue2FyZ3M6W10sY29sdW1uOlpbM10/K1pbM106dm9pZCAwLGZ1bmM6UGMsbGluZTpaWzJdPytaWzJdOnZvaWQgMCx1cmw6WlsxXX19dmFyIEhHPS9eXHMqYXQgKD86KCg/Olxbb2JqZWN0IG9iamVjdFxdKT8uKykgKT9cKD8oKD86ZmlsZXxtcy1hcHB4fGh0dHBzP3x3ZWJwYWNrfGJsb2IpOi4qPyk6KFxkKykoPzo6KFxkKykpP1wpP1xzKiQvaTtmdW5jdGlvbiBrRyhjKXt2YXIgWj1IRy5leGVjKGMpO2lmKFopcmV0dXJue2FyZ3M6W10sY29sdW1uOlpbNF0/K1pbNF06dm9pZCAwLGZ1bmM6WlsxXXx8UGMsbGluZTorWlszXSx1cmw6WlsyXX19dmFyIGdHPS9eXHMqKC4qPykoPzpcKCguKj8pXCkpPyg/Ol58QCkoKD86ZmlsZXxodHRwcz98YmxvYnxjaHJvbWV8d2VicGFja3xyZXNvdXJjZXxjYXBhY2l0b3J8XFtuYXRpdmUpLio/fFteQF0qYnVuZGxlKSg/OjooXGQrKSk/KD86OihcZCspKT9ccyokL2ksVUc9LyhcUyspIGxpbmUgKFxkKykoPzogPiBldmFsIGxpbmUgXGQrKSogPiBldmFsL2k7ZnVuY3Rpb24gTUcoYyl7dmFyIFo9Z0cuZXhlYyhjKTtpZihaKXt2YXIgdD1aWzNdJiZaWzNdLmluZGV4T2YoIiA+IGV2YWwiKT4tMSxpPVVHLmV4ZWMoWlszXSk7cmV0dXJuIHQmJmkmJihaWzNdPWlbMV0sWls0XT1pWzJdLFpbNV09dm9pZCAwKSx7YXJnczpaWzJdP1pbMl0uc3BsaXQoIiwiKTpbXSxjb2x1bW46Wls1XT8rWls1XTp2b2lkIDAsZnVuYzpaWzFdfHxQYyxsaW5lOlpbNF0/K1pbNF06dm9pZCAwLHVybDpaWzNdfX19ZnVuY3Rpb24gbnQoYyxaKXtpZighKHR5cGVvZiBjIT0ib2JqZWN0Inx8IWN8fCEoWiBpbiBjKSkpe3ZhciB0PWNbWl07cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90OnZvaWQgMH19ZnVuY3Rpb24gVEcoYyxaLHQsaSl7dmFyIGU9W3t1cmw6Wixjb2x1bW46aSxsaW5lOnR9XSxHPXdHKGMpLG89Ry5uYW1lLHM9Ry5tZXNzYWdlO3JldHVybntuYW1lOm8sbWVzc2FnZTpzLHN0YWNrOmV9fXZhciBDRz0vXig/OltVdV1uY2F1Z2h0ICg/OmV4Y2VwdGlvbjogKT8pPyg/OigoPzpFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkl8KUVycm9yKTogKT8oW1xzXFNdKikkLztmdW5jdGlvbiB3RyhjKXt2YXIgWix0LGk7cmV0dXJue30udG9TdHJpbmcuY2FsbChjKT09PSJbb2JqZWN0IFN0cmluZ10iJiYoWj1DRy5leGVjKGMpLHQ9WlsxXSxpPVpbMl0pLHtuYW1lOnQsbWVzc2FnZTppfX1mdW5jdGlvbiBLZCgpe3ZhciBjPTIsWj1uZXcgRXJyb3IsdDtpZighWi5zdGFjayl0cnl7dGhyb3cgWn1jYXRjaHt9cmV0dXJuIE1jKGZ1bmN0aW9uKCl7dmFyIGk9R24oWik7aS5zdGFjaz1pLnN0YWNrLnNsaWNlKGMpLHQ9T24oaSl9KSx0fWZ1bmN0aW9uIE9uKGMpe3ZhciBaPVdpKGMpO3JldHVybiBjLnN0YWNrLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGk9dC5mdW5jPT09Ij8iPyI8YW5vbnltb3VzPiI6dC5mdW5jLGU9dC5hcmdzJiZ0LmFyZ3MubGVuZ3RoPjA/IigiLmNvbmNhdCh0LmFyZ3Muam9pbigiLCAiKSwiKSIpOiIiLEc9dC5saW5lPyI6Ii5jb25jYXQodC5saW5lKToiIixvPXQubGluZSYmdC5jb2x1bW4/IjoiLmNvbmNhdCh0LmNvbHVtbik6IiI7Wis9YAogIGF0IGAuY29uY2F0KGkpLmNvbmNhdChlLCIgQCAiKS5jb25jYXQodC51cmwpLmNvbmNhdChHKS5jb25jYXQobyl9KSxafWZ1bmN0aW9uIFdpKGMpe3JldHVybiIiLmNvbmNhdChjLm5hbWV8fCJFcnJvciIsIjogIikuY29uY2F0KGMubWVzc2FnZSl9ZnVuY3Rpb24gQW4oYyxaLHQsaSl7dmFyIGU9aT09PXZvaWQgMD97fTppLEc9ZS5jb21wdXRlSGFuZGxpbmdTdGFjayxvPWNbWl07aWYodHlwZW9mIG8hPSJmdW5jdGlvbiIpaWYoWiBpbiBjJiZDWihaLCJvbiIpKW89SW47ZWxzZSByZXR1cm57c3RvcDpJbn07dmFyIHM9ITEsVj1mdW5jdGlvbigpe2lmKHMpcmV0dXJuIG8uYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBoPVRaKGFyZ3VtZW50cykseTtNYyh0LG51bGwsW3t0YXJnZXQ6dGhpcyxwYXJhbWV0ZXJzOmgsb25Qb3N0Q2FsbDpmdW5jdGlvbih4KXt5PXh9LGhhbmRsaW5nU3RhY2s6Rz9LZCgpOnZvaWQgMH1dKTt2YXIgTD1vLmFwcGx5KHRoaXMsaCk7cmV0dXJuIHkmJk1jKHksbnVsbCxbTF0pLEx9O3JldHVybiBjW1pdPVYse3N0b3A6ZnVuY3Rpb24oKXtzPSEwLGNbWl09PT1WJiYoY1taXT1vKX19fXZhciBQRz0yMjAqYm4sQkc9IiQiLFFHPTM7ZnVuY3Rpb24gb24oYyxaKXtaPT09dm9pZCAwJiYoWj1QRyk7dmFyIHQ9c2MoT2JqZWN0LnByb3RvdHlwZSksaT1zYyhBcnJheS5wcm90b3R5cGUpLGU9W10sRz1uZXcgV2Vha01hcCxvPWN0KGMsQkcsdm9pZCAwLGUsRykscz1KU09OLnN0cmluZ2lmeShvKSxWPXM/cy5sZW5ndGg6MDtpZihWPlope2R0KFosImRpc2NhcmRlZCIsYyk7cmV0dXJufWZvcig7ZS5sZW5ndGg+MCYmVjxaOyl7dmFyIGg9ZS5zaGlmdCgpLHk9MDtpZihBcnJheS5pc0FycmF5KGguc291cmNlKSlmb3IodmFyIEw9MDtMPGguc291cmNlLmxlbmd0aDtMKyspe3ZhciB4PWN0KGguc291cmNlW0xdLGgucGF0aCxMLGUsRyk7aWYoeCE9PXZvaWQgMD9WKz1KU09OLnN0cmluZ2lmeSh4KS5sZW5ndGg6Vis9NCxWKz15LHk9MSxWPlope2R0KFosInRydW5jYXRlZCIsYyk7YnJlYWt9aC50YXJnZXRbTF09eH1lbHNlIGZvcih2YXIgTCBpbiBoLnNvdXJjZSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaC5zb3VyY2UsTCkpe3ZhciB4PWN0KGguc291cmNlW0xdLGgucGF0aCxMLGUsRyk7aWYoeCE9PXZvaWQgMCYmKFYrPUpTT04uc3RyaW5naWZ5KHgpLmxlbmd0aCt5K0wubGVuZ3RoK1FHLHk9MSksVj5aKXtkdChaLCJ0cnVuY2F0ZWQiLGMpO2JyZWFrfWgudGFyZ2V0W0xdPXh9fXJldHVybiB0KCksaSgpLG99ZnVuY3Rpb24gY3QoYyxaLHQsaSxlKXt2YXIgRz1ERyhjKTtpZighR3x8dHlwZW9mIEchPSJvYmplY3QiKXJldHVybiBFRyhHKTt2YXIgbz1qRyhHKTtpZihvIT09IltPYmplY3RdIiYmbyE9PSJbQXJyYXldIiYmbyE9PSJbRXJyb3JdIilyZXR1cm4gbzt2YXIgcz1jO2lmKGUuaGFzKHMpKXJldHVybiJbUmVmZXJlbmNlIHNlZW4gYXQgIi5jb25jYXQoZS5nZXQocyksIl0iKTt2YXIgVj10IT09dm9pZCAwPyIiLmNvbmNhdChaLCIuIikuY29uY2F0KHQpOlosaD1BcnJheS5pc0FycmF5KEcpP1tdOnt9O3JldHVybiBlLnNldChzLFYpLGkucHVzaCh7c291cmNlOkcsdGFyZ2V0OmgscGF0aDpWfSksaH1mdW5jdGlvbiBFRyhjKXtyZXR1cm4gdHlwZW9mIGM9PSJiaWdpbnQiPyJbQmlnSW50XSAiLmNvbmNhdChjLnRvU3RyaW5nKCkpOnR5cGVvZiBjPT0iZnVuY3Rpb24iPyJbRnVuY3Rpb25dICIuY29uY2F0KGMubmFtZXx8InVua25vd24iKTp0eXBlb2YgYz09InN5bWJvbCI/IltTeW1ib2xdICIuY29uY2F0KGMuZGVzY3JpcHRpb258fGMudG9TdHJpbmcoKSk6Y31mdW5jdGlvbiBqRyhjKXt0cnl7aWYoYyBpbnN0YW5jZW9mIEV2ZW50KXJldHVybntpc1RydXN0ZWQ6Yy5pc1RydXN0ZWR9O3ZhciBaPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjKSx0PVoubWF0Y2goL1xbb2JqZWN0ICguKilcXS8pO2lmKHQmJnRbMV0pcmV0dXJuIlsiLmNvbmNhdCh0WzFdLCJdIil9Y2F0Y2h7fXJldHVybiJbVW5zZXJpYWxpemFibGVdIn1mdW5jdGlvbiBERyhjKXt2YXIgWj1jO2lmKFomJnR5cGVvZiBaLnRvSlNPTj09ImZ1bmN0aW9uIil0cnl7cmV0dXJuIFoudG9KU09OKCl9Y2F0Y2h7fXJldHVybiBjfWZ1bmN0aW9uIGR0KGMsWix0KXtibC53YXJuKCJUaGUgZGF0YSBwcm92aWRlZCBoYXMgYmVlbiAiLmNvbmNhdChaLCIgYXMgaXQgaXMgb3ZlciB0aGUgbGltaXQgb2YgIikuY29uY2F0KGMsIiBjaGFyYWN0ZXJzOiIpLHQpfXZhciByaT0iTm8gc3RhY2ssIGNvbnNpZGVyIHVzaW5nIGFuIGluc3RhbmNlIG9mIEVycm9yIjtmdW5jdGlvbiBoaShjKXt2YXIgWj1jLnN0YWNrVHJhY2UsdD1jLm9yaWdpbmFsRXJyb3IsaT1jLmhhbmRsaW5nU3RhY2ssZT1jLnN0YXJ0Q2xvY2tzLEc9Yy5ub25FcnJvclByZWZpeCxvPWMuc291cmNlLHM9Yy5oYW5kbGluZyxWPXQgaW5zdGFuY2VvZiBFcnJvcixoPU9HKFosVixHLHQpLHk9QUcoVixaKT9PbihaKTpyaSxMPVY/eWkodCxvKTp2b2lkIDAseD1aP1oubmFtZTp2b2lkIDAsST1WaSh0KTtyZXR1cm57c3RhcnRDbG9ja3M6ZSxzb3VyY2U6byxoYW5kbGluZzpzLGhhbmRsaW5nU3RhY2s6aSxvcmlnaW5hbEVycm9yOnQsdHlwZTp4LG1lc3NhZ2U6aCxzdGFjazp5LGNhdXNlczpMLGZpbmdlcnByaW50Okl9fWZ1bmN0aW9uIE9HKGMsWix0LGkpe3JldHVybiBjIT1udWxsJiZjLm1lc3NhZ2UmJihjIT1udWxsJiZjLm5hbWUpP2MubWVzc2FnZTpaPyJFbXB0eSBtZXNzYWdlIjoiIi5jb25jYXQodCwiICIpLmNvbmNhdChqbihvbihpKSkpfWZ1bmN0aW9uIEFHKGMsWil7cmV0dXJuIFo9PT12b2lkIDA/ITE6Yz8hMDpaLnN0YWNrLmxlbmd0aD4wJiYoWi5zdGFjay5sZW5ndGg+MXx8Wi5zdGFja1swXS51cmwhPT12b2lkIDApfWZ1bmN0aW9uIFZpKGMpe3JldHVybiBjIGluc3RhbmNlb2YgRXJyb3ImJiJkZF9maW5nZXJwcmludCJpbiBjP1N0cmluZyhjLmRkX2ZpbmdlcnByaW50KTp2b2lkIDB9ZnVuY3Rpb24gX0coYyl7dmFyIFo7cmV0dXJuKFo9L0AgKC4rKS8uZXhlYyhjKSk9PT1udWxsfHxaPT09dm9pZCAwP3ZvaWQgMDpaWzFdfWZ1bmN0aW9uIHlpKGMsWil7Zm9yKHZhciB0PWMsaT1bXTsodD09bnVsbD92b2lkIDA6dC5jYXVzZSlpbnN0YW5jZW9mIEVycm9yJiZpLmxlbmd0aDwxMDspe3ZhciBlPUduKHQuY2F1c2UpO2kucHVzaCh7bWVzc2FnZTp0LmNhdXNlLm1lc3NhZ2Usc291cmNlOlosdHlwZTplPT1udWxsP3ZvaWQgMDplLm5hbWUsc3RhY2s6ZSYmT24oZSl9KSx0PXQuY2F1c2V9cmV0dXJuIGkubGVuZ3RoP2k6dm9pZCAwfXZhciBObD17QUdFTlQ6ImFnZW50IixDT05TT0xFOiJjb25zb2xlIixDVVNUT006ImN1c3RvbSIsTE9HR0VSOiJsb2dnZXIiLE5FVFdPUks6Im5ldHdvcmsiLFNPVVJDRToic291cmNlIixSRVBPUlQ6InJlcG9ydCJ9O2Z1bmN0aW9uIHFHKGMpe3ZhciBaPWZ1bmN0aW9uKGUsRyl7dmFyIG89aGkoe3N0YWNrVHJhY2U6ZSxvcmlnaW5hbEVycm9yOkcsc3RhcnRDbG9ja3M6Zm4oKSxub25FcnJvclByZWZpeDoiVW5jYXVnaHQiLHNvdXJjZTpObC5TT1VSQ0UsaGFuZGxpbmc6InVuaGFuZGxlZCJ9KTtjLm5vdGlmeShvKX0sdD0kRyhaKS5zdG9wLGk9bDAoWikuc3RvcDtyZXR1cm57c3RvcDpmdW5jdGlvbigpe3QoKSxpKCl9fX1mdW5jdGlvbiAkRyhjKXtyZXR1cm4gQW4od2luZG93LCJvbmVycm9yIixmdW5jdGlvbihaKXt2YXIgdD1aLnBhcmFtZXRlcnMsaT10WzBdLGU9dFsxXSxHPXRbMl0sbz10WzNdLHM9dFs0XSxWO3MgaW5zdGFuY2VvZiBFcnJvcj9WPUduKHMpOlY9VEcoaSxlLEcsbyksYyhWLHM/P2kpfSl9ZnVuY3Rpb24gbDAoYyl7cmV0dXJuIEFuKHdpbmRvdywib251bmhhbmRsZWRyZWplY3Rpb24iLGZ1bmN0aW9uKFope3ZhciB0PVoucGFyYW1ldGVyc1swXSxpPXQucmVhc29ufHwiRW1wdHkgcmVhc29uIixlPUduKGkpO2MoZSxpKX0pfWZ1bmN0aW9uIG4wKGMpe3ZhciBaPVdsKHt2ZXJzaW9uOiI1LjI5LjEiLG9uUmVhZHk6ZnVuY3Rpb24odCl7dCgpfX0sYyk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShaLCJfc2V0RGVidWciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZmJ9LGVudW1lcmFibGU6ITF9KSxafWZ1bmN0aW9uIGMwKGMsWix0KXt2YXIgaT1jW1pdO2kmJiFpLnEmJmkudmVyc2lvbiYmYmwud2FybigiU0RLIGlzIGxvYWRlZCBtb3JlIHRoYW4gb25jZS4gVGhpcyBpcyB1bnN1cHBvcnRlZCBhbmQgbWlnaHQgaGF2ZSB1bmV4cGVjdGVkIGJlaGF2aW9yLiIpLGNbWl09dCxpJiZpLnEmJmkucS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBEdShlLCJvblJlYWR5IGNhbGxiYWNrIHRocmV3IGFuIGVycm9yOiIpKCl9KX1mdW5jdGlvbiBSaShjLFope1ouc2lsZW50TXVsdGlwbGVJbml0fHxibC5lcnJvcigiIi5jb25jYXQoYywiIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpfWZ1bmN0aW9uIF9uKGMsWix0LGksZSl7cmV0dXJuIFp0KGMsWixbdF0saSxlKX1mdW5jdGlvbiBadChjLFosdCxpLGUpe3ZhciBHPWU9PT12b2lkIDA/e306ZSxvPUcub25jZSxzPUcuY2FwdHVyZSxWPUcucGFzc2l2ZSxoPSQoZnVuY3Rpb24oSSl7IUkuaXNUcnVzdGVkJiYhSS5fX2RkSXNUcnVzdGVkJiYhYy5hbGxvd1VudHJ1c3RlZEV2ZW50c3x8KG8mJngoKSxpKEkpKX0pLHk9Vj97Y2FwdHVyZTpzLHBhc3NpdmU6Vn06cyxMPW9jKFosImFkZEV2ZW50TGlzdGVuZXIiKTt0LmZvckVhY2goZnVuY3Rpb24oSSl7cmV0dXJuIEwuY2FsbChaLEksaCx5KX0pO2Z1bmN0aW9uIHgoKXt2YXIgST1vYyhaLCJyZW1vdmVFdmVudExpc3RlbmVyIik7dC5mb3JFYWNoKGZ1bmN0aW9uKHYpe3JldHVybiBJLmNhbGwoWix2LGgseSl9KX1yZXR1cm57c3RvcDp4fX12YXIgRmQ9e2ludGVydmVudGlvbjoiaW50ZXJ2ZW50aW9uIixkZXByZWNhdGlvbjoiZGVwcmVjYXRpb24iLGNzcFZpb2xhdGlvbjoiY3NwX3Zpb2xhdGlvbiJ9O2Z1bmN0aW9uIGQwKGMsWil7dmFyIHQ9W107YmMoWixGZC5jc3BWaW9sYXRpb24pJiZ0LnB1c2godDAoYykpO3ZhciBpPVouZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09RmQuY3NwVmlvbGF0aW9ufSk7cmV0dXJuIGkubGVuZ3RoJiZ0LnB1c2goWjAoaSkpLG5pLmFwcGx5KHZvaWQgMCx0KX1mdW5jdGlvbiBaMChjKXtyZXR1cm4gbmV3IHNsKGZ1bmN0aW9uKFope2lmKHdpbmRvdy5SZXBvcnRpbmdPYnNlcnZlcil7dmFyIHQ9JChmdW5jdGlvbihlLEcpe3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24obyl7cmV0dXJuIFoubm90aWZ5KHUwKG8pKX0pfSksaT1uZXcgd2luZG93LlJlcG9ydGluZ09ic2VydmVyKHQse3R5cGVzOmMsYnVmZmVyZWQ6ITB9KTtyZXR1cm4gaS5vYnNlcnZlKCksZnVuY3Rpb24oKXtpLmRpc2Nvbm5lY3QoKX19fSl9ZnVuY3Rpb24gdDAoYyl7cmV0dXJuIG5ldyBzbChmdW5jdGlvbihaKXt2YXIgdD1fbihjLGRvY3VtZW50LCJzZWN1cml0eXBvbGljeXZpb2xhdGlvbiIsZnVuY3Rpb24oaSl7Wi5ub3RpZnkoaTAoaSkpfSkuc3RvcDtyZXR1cm4gdH0pfWZ1bmN0aW9uIHUwKGMpe3ZhciBaPWMudHlwZSx0PWMuYm9keTtyZXR1cm4gTGkoe3R5cGU6dC5pZCxtZXNzYWdlOiIiLmNvbmNhdChaLCI6ICIpLmNvbmNhdCh0Lm1lc3NhZ2UpLG9yaWdpbmFsRXJyb3I6YyxzdGFjazpZaSh0LmlkLHQubWVzc2FnZSx0LnNvdXJjZUZpbGUsdC5saW5lTnVtYmVyLHQuY29sdW1uTnVtYmVyKX0pfWZ1bmN0aW9uIGkwKGMpe3ZhciBaPSInIi5jb25jYXQoYy5ibG9ja2VkVVJJLCInIGJsb2NrZWQgYnkgJyIpLmNvbmNhdChjLmVmZmVjdGl2ZURpcmVjdGl2ZSwiJyBkaXJlY3RpdmUiKTtyZXR1cm4gTGkoe3R5cGU6Yy5lZmZlY3RpdmVEaXJlY3RpdmUsbWVzc2FnZToiIi5jb25jYXQoRmQuY3NwVmlvbGF0aW9uLCI6ICIpLmNvbmNhdChaKSxvcmlnaW5hbEVycm9yOmMsY3NwOntkaXNwb3NpdGlvbjpjLmRpc3Bvc2l0aW9ufSxzdGFjazpZaShjLmVmZmVjdGl2ZURpcmVjdGl2ZSxjLm9yaWdpbmFsUG9saWN5PyIiLmNvbmNhdChaLCcgb2YgdGhlIHBvbGljeSAiJykuY29uY2F0KEZiKGMub3JpZ2luYWxQb2xpY3ksMTAwLCIuLi4iKSwnIicpOiJubyBwb2xpY3kiLGMuc291cmNlRmlsZSxjLmxpbmVOdW1iZXIsYy5jb2x1bW5OdW1iZXIpfSl9ZnVuY3Rpb24gTGkoYyl7cmV0dXJuIFdsKHtzdGFydENsb2NrczpmbigpLHNvdXJjZTpObC5SRVBPUlQsaGFuZGxpbmc6InVuaGFuZGxlZCJ9LGMpfWZ1bmN0aW9uIFlpKGMsWix0LGksZSl7cmV0dXJuIHQ/T24oe25hbWU6YyxtZXNzYWdlOlosc3RhY2s6W3tmdW5jOiI/Iix1cmw6dCxsaW5lOmk/P3ZvaWQgMCxjb2x1bW46ZT8/dm9pZCAwfV19KTp2b2lkIDB9ZnVuY3Rpb24gU2koYyxaKXt2YXIgdD13aW5kb3cuX19kZEJyb3dzZXJTZGtFeHRlbnNpb25DYWxsYmFjazt0JiZ0KHt0eXBlOmMscGF5bG9hZDpafSl9ZnVuY3Rpb24gdHQoYyl7cmV0dXJuIGM9PT1udWxsPyJudWxsIjpBcnJheS5pc0FycmF5KGMpPyJhcnJheSI6dHlwZW9mIGN9ZnVuY3Rpb24gTmQoYyxaLHQpe2lmKHQ9PT12b2lkIDAmJih0PWUwKCkpLFo9PT12b2lkIDApcmV0dXJuIGM7aWYodHlwZW9mIFohPSJvYmplY3QifHxaPT09bnVsbClyZXR1cm4gWjtpZihaIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUoWi5nZXRUaW1lKCkpO2lmKFogaW5zdGFuY2VvZiBSZWdFeHApe3ZhciBpPVouZmxhZ3N8fFtaLmdsb2JhbD8iZyI6IiIsWi5pZ25vcmVDYXNlPyJpIjoiIixaLm11bHRpbGluZT8ibSI6IiIsWi5zdGlja3k/InkiOiIiLFoudW5pY29kZT8idSI6IiJdLmpvaW4oIiIpO3JldHVybiBuZXcgUmVnRXhwKFouc291cmNlLGkpfWlmKCF0Lmhhc0FscmVhZHlCZWVuU2VlbihaKSl7aWYoQXJyYXkuaXNBcnJheShaKSl7Zm9yKHZhciBlPUFycmF5LmlzQXJyYXkoYyk/YzpbXSxHPTA7RzxaLmxlbmd0aDsrK0cpZVtHXT1OZChlW0ddLFpbR10sdCk7cmV0dXJuIGV9dmFyIG89dHQoYyk9PT0ib2JqZWN0Ij9jOnt9O2Zvcih2YXIgcyBpbiBaKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChaLHMpJiYob1tzXT1OZChvW3NdLFpbc10sdCkpO3JldHVybiBvfX1mdW5jdGlvbiB4aShjKXtyZXR1cm4gTmQodm9pZCAwLGMpfWZ1bmN0aW9uIFdjKCl7Zm9yKHZhciBjPVtdLFo9MDtaPGFyZ3VtZW50cy5sZW5ndGg7WisrKWNbWl09YXJndW1lbnRzW1pdO2Zvcih2YXIgdCxpPTAsZT1jO2k8ZS5sZW5ndGg7aSsrKXt2YXIgRz1lW2ldO0chPW51bGwmJih0PU5kKHQsRykpfXJldHVybiB0fWZ1bmN0aW9uIGUwKCl7aWYodHlwZW9mIFdlYWtTZXQ8InUiKXt2YXIgYz1uZXcgV2Vha1NldDtyZXR1cm57aGFzQWxyZWFkeUJlZW5TZWVuOmZ1bmN0aW9uKHQpe3ZhciBpPWMuaGFzKHQpO3JldHVybiBpfHxjLmFkZCh0KSxpfX19dmFyIFo9W107cmV0dXJue2hhc0FscmVhZHlCZWVuU2VlbjpmdW5jdGlvbih0KXt2YXIgaT1aLmluZGV4T2YodCk+PTA7cmV0dXJuIGl8fFoucHVzaCh0KSxpfX19ZnVuY3Rpb24gbTAoKXt2YXIgYyxaPXdpbmRvdy5uYXZpZ2F0b3I7cmV0dXJue3N0YXR1czpaLm9uTGluZT8iY29ubmVjdGVkIjoibm90X2Nvbm5lY3RlZCIsaW50ZXJmYWNlczpaLmNvbm5lY3Rpb24mJlouY29ubmVjdGlvbi50eXBlP1taLmNvbm5lY3Rpb24udHlwZV06dm9pZCAwLGVmZmVjdGl2ZV90eXBlOihjPVouY29ubmVjdGlvbik9PT1udWxsfHxjPT09dm9pZCAwP3ZvaWQgMDpjLmVmZmVjdGl2ZVR5cGV9fWZ1bmN0aW9uIGEwKGMpe3ZhciBaPW5ldyBTZXQ7cmV0dXJuIGMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gWi5hZGQodCl9KSxUWihaKX1mdW5jdGlvbiBmaShjLFope3ZhciB0PWMuaW5kZXhPZihaKTt0Pj0wJiZjLnNwbGljZSh0LDEpfXZhciBiMD01MDA7ZnVuY3Rpb24gSmkoKXt2YXIgYz1bXSxaPWZ1bmN0aW9uKGUpe3ZhciBHPWMucHVzaChlKTtHPmIwJiZjLnNwbGljZSgwLDEpfSx0PWZ1bmN0aW9uKGUpe2ZpKGMsZSl9LGk9ZnVuY3Rpb24oZSl7Yy5mb3JFYWNoKGZ1bmN0aW9uKEcpe3JldHVybiBHKGUpfSksYy5sZW5ndGg9MH07cmV0dXJue2FkZDpaLHJlbW92ZTp0LGRyYWluOml9fXZhciBxbj17bG9nOiJsb2ciLGNvbmZpZ3VyYXRpb246ImNvbmZpZ3VyYXRpb24iLHVzYWdlOiJ1c2FnZSJ9LEcwPVsiaHR0cHM6Ly93d3cuZGF0YWRvZ2hxLWJyb3dzZXItYWdlbnQuY29tIiwiaHR0cHM6Ly93d3cuZGF0YWQwZy1icm93c2VyLWFnZW50LmNvbSIsImh0dHBzOi8vZDN1YzA2OWZjbjd1eHcuY2xvdWRmcm9udC5uZXQiLCJodHRwczovL2QyMHh0end6Y2wwY2ViLmNsb3VkZnJvbnQubmV0IiwiaHR0cDovL2xvY2FsaG9zdCIsIjxhbm9ueW1vdXM+Il0sbzA9W0dHXSxJaT1KaSgpLHJjPWZ1bmN0aW9uKGMpe0lpLmFkZChmdW5jdGlvbigpe3JldHVybiByYyhjKX0pfTtmdW5jdGlvbiBYMChjLFope3ZhciB0LGksZT1uZXcgc2wsRz1uZXcgU2V0LG89IWJjKG8wLFouc2l0ZSkmJnJkKFoudGVsZW1ldHJ5U2FtcGxlUmF0ZSkscz0odD17fSx0W3FuLmxvZ109byx0W3FuLmNvbmZpZ3VyYXRpb25dPW8mJnJkKFoudGVsZW1ldHJ5Q29uZmlndXJhdGlvblNhbXBsZVJhdGUpLHRbcW4udXNhZ2VdPW8mJnJkKFoudGVsZW1ldHJ5VXNhZ2VTYW1wbGVSYXRlKSx0KSxWPXMwKCk7cmM9ZnVuY3Rpb24oeSl7dmFyIEw9am4oeSk7aWYoc1t5LnR5cGVdJiZHLnNpemU8Wi5tYXhUZWxlbWV0cnlFdmVudHNQZXJQYWdlJiYhRy5oYXMoTCkpe3ZhciB4PWgoYyx5LFYpO2Uubm90aWZ5KHgpLFNpKCJ0ZWxlbWV0cnkiLHgpLEcuYWRkKEwpfX0seGIoRmkpO2Z1bmN0aW9uIGgoeSxMLHgpe3JldHVybiBXYyh7dHlwZToidGVsZW1ldHJ5IixkYXRlOnhuKCksc2VydmljZTp5LHZlcnNpb246IjUuMjkuMSIsc291cmNlOiJicm93c2VyIixfZGQ6e2Zvcm1hdF92ZXJzaW9uOjJ9LHRlbGVtZXRyeTpXYyhMLHtydW50aW1lX2Vudjp4LGNvbm5lY3Rpdml0eTptMCgpLHNka19zZXR1cDoibnBtIn0pLGV4cGVyaW1lbnRhbF9mZWF0dXJlczpUWihJRygpKX0saSE9PXZvaWQgMD9pKCk6e30pfXJldHVybntzZXRDb250ZXh0UHJvdmlkZXI6ZnVuY3Rpb24oeSl7aT15fSxvYnNlcnZhYmxlOmUsZW5hYmxlZDpvfX1mdW5jdGlvbiBzMCgpe3JldHVybntpc19sb2NhbF9maWxlOndpbmRvdy5sb2NhdGlvbi5wcm90b2NvbD09PSJmaWxlOiIsaXNfd29ya2VyOiJXb3JrZXJHbG9iYWxTY29wZSJpbiBzZWxmfX1mdW5jdGlvbiBwMCgpe0lpLmRyYWluKCl9ZnVuY3Rpb24gVzAoYyl7cmV0dXJuIGMuc2l0ZT09PWFHfWZ1bmN0aW9uIEtpKGMsWil7UFoobWwuZGVidWcsYyxaKSxyYyhXbCh7dHlwZTpxbi5sb2csbWVzc2FnZTpjLHN0YXR1czoiZGVidWcifSxaKSl9ZnVuY3Rpb24gRmkoYyxaKXtyYyhXbCh7dHlwZTpxbi5sb2csc3RhdHVzOiJlcnJvciJ9LFYwKGMpLFopKX1mdW5jdGlvbiByMChjKXtyYyh7dHlwZTpxbi5jb25maWd1cmF0aW9uLGNvbmZpZ3VyYXRpb246Y30pfWZ1bmN0aW9uIGgwKGMpe3JjKHt0eXBlOnFuLnVzYWdlLHVzYWdlOmN9KX1mdW5jdGlvbiBWMChjKXtpZihjIGluc3RhbmNlb2YgRXJyb3Ipe3ZhciBaPUduKGMpO3JldHVybntlcnJvcjp7a2luZDpaLm5hbWUsc3RhY2s6T24oeTAoWikpfSxtZXNzYWdlOloubWVzc2FnZX19cmV0dXJue2Vycm9yOntzdGFjazpyaX0sbWVzc2FnZToiIi5jb25jYXQoIlVuY2F1Z2h0IiwiICIpLmNvbmNhdChqbihjKSl9fWZ1bmN0aW9uIHkwKGMpe3JldHVybiBjLnN0YWNrPWMuc3RhY2suZmlsdGVyKGZ1bmN0aW9uKFope3JldHVybiFaLnVybHx8RzAuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gQ1ooWi51cmwsdCl9KX0pLGN9dmFyIHpkPTEvMCxSMD13bjtmdW5jdGlvbiBMMChjKXt2YXIgWj1jLmV4cGlyZURlbGF5LHQ9Yy5tYXhFbnRyaWVzLGk9W10sZT1CWihmdW5jdGlvbigpe3JldHVybiBHKCl9LFIwKTtmdW5jdGlvbiBHKCl7Zm9yKHZhciB4PWhkKCktWjtpLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdLmVuZFRpbWU8eDspaS5wb3AoKX1mdW5jdGlvbiBvKHgsSSl7dmFyIHY9e3ZhbHVlOngsc3RhcnRUaW1lOkksZW5kVGltZTp6ZCxyZW1vdmU6ZnVuY3Rpb24oKXtmaShpLHYpfSxjbG9zZTpmdW5jdGlvbih6KXt2LmVuZFRpbWU9en19O3JldHVybiB0JiZpLmxlbmd0aD49dCYmaS5wb3AoKSxpLnVuc2hpZnQodiksdn1mdW5jdGlvbiBzKHgsSSl7eD09PXZvaWQgMCYmKHg9emQpLEk9PT12b2lkIDAmJihJPXtyZXR1cm5JbmFjdGl2ZTohMX0pO2Zvcih2YXIgdj0wLHo9aTt2PHoubGVuZ3RoO3YrKyl7dmFyIEg9elt2XTtpZihILnN0YXJ0VGltZTw9eCl7aWYoSS5yZXR1cm5JbmFjdGl2ZXx8eDw9SC5lbmRUaW1lKXJldHVybiBILnZhbHVlO2JyZWFrfX19ZnVuY3Rpb24gVih4KXt2YXIgST1pWzBdO0kmJkkuZW5kVGltZT09PXpkJiZJLmNsb3NlKHgpfWZ1bmN0aW9uIGgoeCxJKXt4PT09dm9pZCAwJiYoeD16ZCksST09PXZvaWQgMCYmKEk9MCk7dmFyIHY9cmIoeCxJKTtyZXR1cm4gaS5maWx0ZXIoZnVuY3Rpb24oeil7cmV0dXJuIHouc3RhcnRUaW1lPD12JiZ4PD16LmVuZFRpbWV9KS5tYXAoZnVuY3Rpb24oeil7cmV0dXJuIHoudmFsdWV9KX1mdW5jdGlvbiB5KCl7aT1bXX1mdW5jdGlvbiBMKCl7bGkoZSl9cmV0dXJue2FkZDpvLGZpbmQ6cyxjbG9zZUFjdGl2ZTpWLGZpbmRBbGw6aCxyZXNldDp5LHN0b3A6TH19dmFyIFkwPXduLFMwPURaO2Z1bmN0aW9uIHgwKGMsWix0LGkpe3ZhciBlPW5ldyBzbCxHPW5ldyBzbCxvPXVHKGMuc2Vzc2lvblN0b3JlU3RyYXRlZ3lUeXBlLFosdCkscz1MMCh7ZXhwaXJlRGVsYXk6UzB9KTtvLnJlbmV3T2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtzLmFkZChWKCksaGQoKSksZS5ub3RpZnkoKX0pLG8uZXhwaXJlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtHLm5vdGlmeSgpLHMuY2xvc2VBY3RpdmUoaGQoKSl9KSxvLmV4cGFuZE9yUmVuZXdTZXNzaW9uKCkscy5hZGQoVigpLHBiKCkucmVsYXRpdmUpLGkub2JzZXJ2YWJsZS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtpLmlzR3JhbnRlZCgpP28uZXhwYW5kT3JSZW5ld1Nlc3Npb24oKTpvLmV4cGlyZSgpfSksZjAoYyxmdW5jdGlvbigpe2kuaXNHcmFudGVkKCkmJm8uZXhwYW5kT3JSZW5ld1Nlc3Npb24oKX0pLEowKGMsZnVuY3Rpb24oKXtyZXR1cm4gby5leHBhbmRTZXNzaW9uKCl9KSxJMChjLGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVzdGFydFNlc3Npb24oKX0pO2Z1bmN0aW9uIFYoKXtyZXR1cm57aWQ6by5nZXRTZXNzaW9uKCkuaWQsdHJhY2tpbmdUeXBlOm8uZ2V0U2Vzc2lvbigpW1pdLGlzUmVwbGF5Rm9yY2VkOiEhby5nZXRTZXNzaW9uKCkuZm9yY2VkUmVwbGF5fX1yZXR1cm57ZmluZFNlc3Npb246ZnVuY3Rpb24oaCx5KXtyZXR1cm4gcy5maW5kKGgseSl9LHJlbmV3T2JzZXJ2YWJsZTplLGV4cGlyZU9ic2VydmFibGU6RyxzZXNzaW9uU3RhdGVVcGRhdGVPYnNlcnZhYmxlOm8uc2Vzc2lvblN0YXRlVXBkYXRlT2JzZXJ2YWJsZSxleHBpcmU6by5leHBpcmUsdXBkYXRlU2Vzc2lvblN0YXRlOm8udXBkYXRlU2Vzc2lvblN0YXRlfX1mdW5jdGlvbiBmMChjLFope1p0KGMsd2luZG93LFsiY2xpY2siLCJ0b3VjaHN0YXJ0Iiwia2V5ZG93biIsInNjcm9sbCJdLFose2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pLnN0b3B9ZnVuY3Rpb24gSjAoYyxaKXt2YXIgdD1mdW5jdGlvbigpe2RvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJ2aXNpYmxlIiYmWigpfTtfbihjLGRvY3VtZW50LCJ2aXNpYmlsaXR5Y2hhbmdlIix0KS5zdG9wLEJaKHQsWTApfWZ1bmN0aW9uIEkwKGMsWil7X24oYyx3aW5kb3csInJlc3VtZSIsWix7Y2FwdHVyZTohMH0pLnN0b3B9ZnVuY3Rpb24gTmkoYyl7cmV0dXJuIGM+PTUwMH1mdW5jdGlvbiBLMChjKXt0cnl7cmV0dXJuIGMuY2xvbmUoKX1jYXRjaHtyZXR1cm59fXZhciBGMD04MCpibixOMD0zMix6aT0zKkF1LHowPXduLHZpPWdjO2Z1bmN0aW9uIEhpKGMsWix0LGksZSl7Wi50cmFuc3BvcnRTdGF0dXM9PT0wJiZaLnF1ZXVlZFBheWxvYWRzLnNpemUoKT09PTAmJlouYmFuZHdpZHRoTW9uaXRvci5jYW5IYW5kbGUoYyk/Z2koYyxaLHQse29uU3VjY2VzczpmdW5jdGlvbigpe3JldHVybiBVaSgwLFosdCxpLGUpfSxvbkZhaWx1cmU6ZnVuY3Rpb24oKXtaLnF1ZXVlZFBheWxvYWRzLmVucXVldWUoYyksa2koWix0LGksZSl9fSk6Wi5xdWV1ZWRQYXlsb2Fkcy5lbnF1ZXVlKGMpfWZ1bmN0aW9uIGtpKGMsWix0LGkpe2MudHJhbnNwb3J0U3RhdHVzPT09MiYmVGMoZnVuY3Rpb24oKXt2YXIgZT1jLnF1ZXVlZFBheWxvYWRzLmZpcnN0KCk7Z2koZSxjLFose29uU3VjY2VzczpmdW5jdGlvbigpe2MucXVldWVkUGF5bG9hZHMuZGVxdWV1ZSgpLGMuY3VycmVudEJhY2tvZmZUaW1lPXZpLFVpKDEsYyxaLHQsaSl9LG9uRmFpbHVyZTpmdW5jdGlvbigpe2MuY3VycmVudEJhY2tvZmZUaW1lPU1hdGgubWluKHowLGMuY3VycmVudEJhY2tvZmZUaW1lKjIpLGtpKGMsWix0LGkpfX0pfSxjLmN1cnJlbnRCYWNrb2ZmVGltZSl9ZnVuY3Rpb24gZ2koYyxaLHQsaSl7dmFyIGU9aS5vblN1Y2Nlc3MsRz1pLm9uRmFpbHVyZTtaLmJhbmR3aWR0aE1vbml0b3IuYWRkKGMpLHQoYyxmdW5jdGlvbihvKXtaLmJhbmR3aWR0aE1vbml0b3IucmVtb3ZlKGMpLHYwKG8pPyhaLnRyYW5zcG9ydFN0YXR1cz1aLmJhbmR3aWR0aE1vbml0b3Iub25nb2luZ1JlcXVlc3RDb3VudD4wPzE6MixjLnJldHJ5PXtjb3VudDpjLnJldHJ5P2MucmV0cnkuY291bnQrMToxLGxhc3RGYWlsdXJlU3RhdHVzOm8uc3RhdHVzfSxHKCkpOihaLnRyYW5zcG9ydFN0YXR1cz0wLGUoKSl9KX1mdW5jdGlvbiBVaShjLFosdCxpLGUpe2M9PT0wJiZaLnF1ZXVlZFBheWxvYWRzLmlzRnVsbCgpJiYhWi5xdWV1ZUZ1bGxSZXBvcnRlZCYmKGUoe21lc3NhZ2U6IlJlYWNoZWQgbWF4ICIuY29uY2F0KGksIiBldmVudHMgc2l6ZSBxdWV1ZWQgZm9yIHVwbG9hZDogIikuY29uY2F0KHppL0F1LCJNaUIiKSxzb3VyY2U6TmwuQUdFTlQsc3RhcnRDbG9ja3M6Zm4oKX0pLFoucXVldWVGdWxsUmVwb3J0ZWQ9ITApO3ZhciBHPVoucXVldWVkUGF5bG9hZHM7Zm9yKFoucXVldWVkUGF5bG9hZHM9TWkoKTtHLnNpemUoKT4wOylIaShHLmRlcXVldWUoKSxaLHQsaSxlKX1mdW5jdGlvbiB2MChjKXtyZXR1cm4gYy50eXBlIT09Im9wYXF1ZSImJihjLnN0YXR1cz09PTAmJiFuYXZpZ2F0b3Iub25MaW5lfHxjLnN0YXR1cz09PTQwOHx8Yy5zdGF0dXM9PT00Mjl8fE5pKGMuc3RhdHVzKSl9ZnVuY3Rpb24gSDAoKXtyZXR1cm57dHJhbnNwb3J0U3RhdHVzOjAsY3VycmVudEJhY2tvZmZUaW1lOnZpLGJhbmR3aWR0aE1vbml0b3I6azAoKSxxdWV1ZWRQYXlsb2FkczpNaSgpLHF1ZXVlRnVsbFJlcG9ydGVkOiExfX1mdW5jdGlvbiBNaSgpe3ZhciBjPVtdO3JldHVybntieXRlc0NvdW50OjAsZW5xdWV1ZTpmdW5jdGlvbihaKXt0aGlzLmlzRnVsbCgpfHwoYy5wdXNoKFopLHRoaXMuYnl0ZXNDb3VudCs9Wi5ieXRlc0NvdW50KX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gY1swXX0sZGVxdWV1ZTpmdW5jdGlvbigpe3ZhciBaPWMuc2hpZnQoKTtyZXR1cm4gWiYmKHRoaXMuYnl0ZXNDb3VudC09Wi5ieXRlc0NvdW50KSxafSxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGMubGVuZ3RofSxpc0Z1bGw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ieXRlc0NvdW50Pj16aX19fWZ1bmN0aW9uIGswKCl7cmV0dXJue29uZ29pbmdSZXF1ZXN0Q291bnQ6MCxvbmdvaW5nQnl0ZUNvdW50OjAsY2FuSGFuZGxlOmZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLm9uZ29pbmdSZXF1ZXN0Q291bnQ9PT0wfHx0aGlzLm9uZ29pbmdCeXRlQ291bnQrYy5ieXRlc0NvdW50PD1GMCYmdGhpcy5vbmdvaW5nUmVxdWVzdENvdW50PE4wfSxhZGQ6ZnVuY3Rpb24oYyl7dGhpcy5vbmdvaW5nUmVxdWVzdENvdW50Kz0xLHRoaXMub25nb2luZ0J5dGVDb3VudCs9Yy5ieXRlc0NvdW50fSxyZW1vdmU6ZnVuY3Rpb24oYyl7dGhpcy5vbmdvaW5nUmVxdWVzdENvdW50LT0xLHRoaXMub25nb2luZ0J5dGVDb3VudC09Yy5ieXRlc0NvdW50fX19ZnVuY3Rpb24gZzAoYyxaLHQsaSl7dmFyIGU9SDAoKSxHPWZ1bmN0aW9uKG8scyl7cmV0dXJuIFQwKGMsWix0LG8scyl9O3JldHVybntzZW5kOmZ1bmN0aW9uKG8pe0hpKG8sZSxHLFoudHJhY2tUeXBlLGkpfSxzZW5kT25FeGl0OmZ1bmN0aW9uKG8pe1UwKGMsWix0LG8pfX19ZnVuY3Rpb24gVTAoYyxaLHQsaSl7dmFyIGU9ISFuYXZpZ2F0b3Iuc2VuZEJlYWNvbiYmaS5ieXRlc0NvdW50PHQ7aWYoZSl0cnl7dmFyIEc9Wi5idWlsZCgiYmVhY29uIixpKSxvPW5hdmlnYXRvci5zZW5kQmVhY29uKEcsaS5kYXRhKTtpZihvKXJldHVybn1jYXRjaChWKXtNMChWKX12YXIgcz1aLmJ1aWxkKCJ4aHIiLGkpO3V0KGMscyxpLmRhdGEpfXZhciBUaT0hMTtmdW5jdGlvbiBNMChjKXtUaXx8KFRpPSEwLEZpKGMpKX1mdW5jdGlvbiBUMChjLFosdCxpLGUpe3ZhciBHPUMwKCkmJmkuYnl0ZXNDb3VudDx0O2lmKEcpe3ZhciBvPVouYnVpbGQoImZldGNoIixpKTtmZXRjaChvLHttZXRob2Q6IlBPU1QiLGJvZHk6aS5kYXRhLGtlZXBhbGl2ZTohMCxtb2RlOiJjb3JzIn0pLnRoZW4oJChmdW5jdGlvbihWKXtyZXR1cm4gZT09bnVsbD92b2lkIDA6ZSh7c3RhdHVzOlYuc3RhdHVzLHR5cGU6Vi50eXBlfSl9KSwkKGZ1bmN0aW9uKCl7dmFyIFY9Wi5idWlsZCgieGhyIixpKTt1dChjLFYsaS5kYXRhLGUpfSkpfWVsc2V7dmFyIHM9Wi5idWlsZCgieGhyIixpKTt1dChjLHMsaS5kYXRhLGUpfX1mdW5jdGlvbiBDMCgpe3RyeXtyZXR1cm4gd2luZG93LlJlcXVlc3QmJiJrZWVwYWxpdmUiaW4gbmV3IFJlcXVlc3QoImh0dHA6Ly9hIil9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIHV0KGMsWix0LGkpe3ZhciBlPW5ldyBYTUxIdHRwUmVxdWVzdDtlLm9wZW4oIlBPU1QiLFosITApLHQgaW5zdGFuY2VvZiBCbG9iJiZlLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsdC50eXBlKSxfbihjLGUsImxvYWRlbmQiLGZ1bmN0aW9uKCl7aT09bnVsbHx8aSh7c3RhdHVzOmUuc3RhdHVzfSl9LHtvbmNlOiEwfSksZS5zZW5kKHQpfWZ1bmN0aW9uIGl0KCl7dmFyIGM9dzAoKTtpZihjKXJldHVybntnZXRDYXBhYmlsaXRpZXM6ZnVuY3Rpb24oKXt2YXIgWjtyZXR1cm4gSlNPTi5wYXJzZSgoKFo9Yy5nZXRDYXBhYmlsaXRpZXMpPT09bnVsbHx8Wj09PXZvaWQgMD92b2lkIDA6Wi5jYWxsKGMpKXx8IltdIil9LGdldFByaXZhY3lMZXZlbDpmdW5jdGlvbigpe3ZhciBaO3JldHVybihaPWMuZ2V0UHJpdmFjeUxldmVsKT09PW51bGx8fFo9PT12b2lkIDA/dm9pZCAwOlouY2FsbChjKX0sZ2V0QWxsb3dlZFdlYlZpZXdIb3N0czpmdW5jdGlvbigpe3JldHVybiBKU09OLnBhcnNlKGMuZ2V0QWxsb3dlZFdlYlZpZXdIb3N0cygpKX0sc2VuZDpmdW5jdGlvbihaLHQsaSl7dmFyIGU9aT97aWQ6aX06dm9pZCAwO2Muc2VuZChKU09OLnN0cmluZ2lmeSh7ZXZlbnRUeXBlOlosZXZlbnQ6dCx2aWV3OmV9KSl9fX1mdW5jdGlvbiB2ZChjKXt2YXIgWjtjPT09dm9pZCAwJiYoYz0oWj1KbigpLmxvY2F0aW9uKT09PW51bGx8fFo9PT12b2lkIDA/dm9pZCAwOlouaG9zdG5hbWUpO3ZhciB0PWl0KCk7cmV0dXJuISF0JiZ0LmdldEFsbG93ZWRXZWJWaWV3SG9zdHMoKS5zb21lKGZ1bmN0aW9uKGkpe3JldHVybiBjPT09aXx8TGIoYywiLiIuY29uY2F0KGkpKX0pfWZ1bmN0aW9uIHcwKCl7cmV0dXJuIEpuKCkuRGF0YWRvZ0V2ZW50QnJpZGdlfXZhciBIZD17SElEREVOOiJ2aXNpYmlsaXR5X2hpZGRlbiIsVU5MT0FESU5HOiJiZWZvcmVfdW5sb2FkIixQQUdFSElERToicGFnZV9oaWRlIixGUk9aRU46InBhZ2VfZnJvemVuIn07ZnVuY3Rpb24gUDAoYyl7cmV0dXJuIG5ldyBzbChmdW5jdGlvbihaKXt2YXIgdD1adChjLHdpbmRvdyxbInZpc2liaWxpdHljaGFuZ2UiLCJmcmVlemUiXSxmdW5jdGlvbihlKXtlLnR5cGU9PT0idmlzaWJpbGl0eWNoYW5nZSImJmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJoaWRkZW4iP1oubm90aWZ5KHtyZWFzb246SGQuSElEREVOfSk6ZS50eXBlPT09ImZyZWV6ZSImJloubm90aWZ5KHtyZWFzb246SGQuRlJPWkVOfSl9LHtjYXB0dXJlOiEwfSkuc3RvcCxpPV9uKGMsd2luZG93LCJiZWZvcmV1bmxvYWQiLGZ1bmN0aW9uKCl7Wi5ub3RpZnkoe3JlYXNvbjpIZC5VTkxPQURJTkd9KX0pLnN0b3A7cmV0dXJuIGZ1bmN0aW9uKCl7dCgpLGkoKX19KX1mdW5jdGlvbiBCMChjKXtyZXR1cm4gYmMoR2MoSGQpLGMpfWZ1bmN0aW9uIFEwKGMpe3ZhciBaPWMuZW5jb2Rlcix0PWMucmVxdWVzdCxpPWMuZmx1c2hDb250cm9sbGVyLGU9Yy5tZXNzYWdlQnl0ZXNMaW1pdCxHPXt9LG89aS5mbHVzaE9ic2VydmFibGUuc3Vic2NyaWJlKGZ1bmN0aW9uKHgpe3JldHVybiBMKHgpfSk7ZnVuY3Rpb24gcyh4LEksdil7aS5ub3RpZnlCZWZvcmVBZGRNZXNzYWdlKEkpLHYhPT12b2lkIDA/KEdbdl09eCxpLm5vdGlmeUFmdGVyQWRkTWVzc2FnZSgpKTpaLndyaXRlKFouaXNFbXB0eT94OmAKYC5jb25jYXQoeCksZnVuY3Rpb24oeil7aS5ub3RpZnlBZnRlckFkZE1lc3NhZ2Uoei1JKX0pfWZ1bmN0aW9uIFYoeCl7cmV0dXJuIHghPT12b2lkIDAmJkdbeF0hPT12b2lkIDB9ZnVuY3Rpb24gaCh4KXt2YXIgST1HW3hdO2RlbGV0ZSBHW3hdO3ZhciB2PVouZXN0aW1hdGVFbmNvZGVkQnl0ZXNDb3VudChJKTtpLm5vdGlmeUFmdGVyUmVtb3ZlTWVzc2FnZSh2KX1mdW5jdGlvbiB5KHgsSSl7dmFyIHY9am4oeCksej1aLmVzdGltYXRlRW5jb2RlZEJ5dGVzQ291bnQodik7aWYoej49ZSl7Ymwud2FybigiRGlzY2FyZGVkIGEgbWVzc2FnZSB3aG9zZSBzaXplIHdhcyBiaWdnZXIgdGhhbiB0aGUgbWF4aW11bSBhbGxvd2VkIHNpemUgIi5jb25jYXQoZSwiS0IuICIpLmNvbmNhdChXZCwiICIpLmNvbmNhdChqdSwiLyN0ZWNobmljYWwtbGltaXRhdGlvbnMiKSk7cmV0dXJufVYoSSkmJmgoSSkscyh2LHosSSl9ZnVuY3Rpb24gTCh4KXt2YXIgST1HYyhHKS5qb2luKGAKYCk7Rz17fTt2YXIgdj1CMCh4LnJlYXNvbiksej12P3Quc2VuZE9uRXhpdDp0LnNlbmQ7aWYodiYmWi5pc0FzeW5jKXt2YXIgSD1aLmZpbmlzaFN5bmMoKTtILm91dHB1dEJ5dGVzQ291bnQmJnooQ2koSCkpO3ZhciBBPVtILnBlbmRpbmdEYXRhLEldLmZpbHRlcihCb29sZWFuKS5qb2luKGAKYCk7QSYmeih7ZGF0YTpBLGJ5dGVzQ291bnQ6TVooQSl9KX1lbHNlIEkmJloud3JpdGUoWi5pc0VtcHR5P0k6YApgLmNvbmNhdChJKSksWi5maW5pc2goZnVuY3Rpb24oWWwpe3ooQ2koWWwpKX0pfXJldHVybntmbHVzaENvbnRyb2xsZXI6aSxhZGQ6eSx1cHNlcnQ6eSxzdG9wOm8udW5zdWJzY3JpYmV9fWZ1bmN0aW9uIENpKGMpe3ZhciBaO3JldHVybiB0eXBlb2YgYy5vdXRwdXQ9PSJzdHJpbmciP1o9Yy5vdXRwdXQ6Wj1uZXcgQmxvYihbYy5vdXRwdXRdLHt0eXBlOiJ0ZXh0L3BsYWluIn0pLHtkYXRhOlosYnl0ZXNDb3VudDpjLm91dHB1dEJ5dGVzQ291bnQsZW5jb2Rpbmc6Yy5lbmNvZGluZ319ZnVuY3Rpb24gRTAoYyl7dmFyIFo9Yy5tZXNzYWdlc0xpbWl0LHQ9Yy5ieXRlc0xpbWl0LGk9Yy5kdXJhdGlvbkxpbWl0LGU9Yy5wYWdlRXhpdE9ic2VydmFibGUsRz1jLnNlc3Npb25FeHBpcmVPYnNlcnZhYmxlLG89ZS5zdWJzY3JpYmUoZnVuY3Rpb24oeil7cmV0dXJuIEwoei5yZWFzb24pfSkscz1HLnN1YnNjcmliZShmdW5jdGlvbigpe3JldHVybiBMKCJzZXNzaW9uX2V4cGlyZSIpfSksVj1uZXcgc2woZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtvLnVuc3Vic2NyaWJlKCkscy51bnN1YnNjcmliZSgpfX0pLGg9MCx5PTA7ZnVuY3Rpb24gTCh6KXtpZih5IT09MCl7dmFyIEg9eSxBPWg7eT0wLGg9MCx2KCksVi5ub3RpZnkoe3JlYXNvbjp6LG1lc3NhZ2VzQ291bnQ6SCxieXRlc0NvdW50OkF9KX19dmFyIHg7ZnVuY3Rpb24gSSgpe3g9PT12b2lkIDAmJih4PVRjKGZ1bmN0aW9uKCl7TCgiZHVyYXRpb25fbGltaXQiKX0saSkpfWZ1bmN0aW9uIHYoKXskdSh4KSx4PXZvaWQgMH1yZXR1cm57Zmx1c2hPYnNlcnZhYmxlOlYsZ2V0IG1lc3NhZ2VzQ291bnQoKXtyZXR1cm4geX0sbm90aWZ5QmVmb3JlQWRkTWVzc2FnZTpmdW5jdGlvbih6KXtoK3o+PXQmJkwoImJ5dGVzX2xpbWl0IikseSs9MSxoKz16LEkoKX0sbm90aWZ5QWZ0ZXJBZGRNZXNzYWdlOmZ1bmN0aW9uKHope3o9PT12b2lkIDAmJih6PTApLGgrPXoseT49Wj9MKCJtZXNzYWdlc19saW1pdCIpOmg+PXQmJkwoImJ5dGVzX2xpbWl0Iil9LG5vdGlmeUFmdGVyUmVtb3ZlTWVzc2FnZTpmdW5jdGlvbih6KXtoLT16LHktPTEseT09PTAmJnYoKX19fWZ1bmN0aW9uIHdpKGMsWix0LGksZSxHLG8pe289PT12b2lkIDAmJihvPVEwKTt2YXIgcz1oKGMsWiksVj10JiZoKGMsdCk7ZnVuY3Rpb24gaCh5LEwpe3ZhciB4PUwuZW5kcG9pbnQsST1MLmVuY29kZXI7cmV0dXJuIG8oe2VuY29kZXI6SSxyZXF1ZXN0OmcwKHkseCx5LmJhdGNoQnl0ZXNMaW1pdCxpKSxmbHVzaENvbnRyb2xsZXI6RTAoe21lc3NhZ2VzTGltaXQ6eS5iYXRjaE1lc3NhZ2VzTGltaXQsYnl0ZXNMaW1pdDp5LmJhdGNoQnl0ZXNMaW1pdCxkdXJhdGlvbkxpbWl0OnkuZmx1c2hUaW1lb3V0LHBhZ2VFeGl0T2JzZXJ2YWJsZTplLHNlc3Npb25FeHBpcmVPYnNlcnZhYmxlOkd9KSxtZXNzYWdlQnl0ZXNMaW1pdDp5Lm1lc3NhZ2VCeXRlc0xpbWl0fSl9cmV0dXJue2ZsdXNoT2JzZXJ2YWJsZTpzLmZsdXNoQ29udHJvbGxlci5mbHVzaE9ic2VydmFibGUsYWRkOmZ1bmN0aW9uKHksTCl7TD09PXZvaWQgMCYmKEw9ITApLHMuYWRkKHkpLFYmJkwmJlYuYWRkKHQudHJhbnNmb3JtTWVzc2FnZT90LnRyYW5zZm9ybU1lc3NhZ2UoeSk6eSl9LHVwc2VydDpmdW5jdGlvbih5LEwpe3MudXBzZXJ0KHksTCksViYmVi51cHNlcnQodC50cmFuc2Zvcm1NZXNzYWdlP3QudHJhbnNmb3JtTWVzc2FnZSh5KTp5LEwpfSxzdG9wOmZ1bmN0aW9uKCl7cy5zdG9wKCksViYmVi5zdG9wKCl9fX1mdW5jdGlvbiBrZCgpe3ZhciBjPSIiLFo9MDtyZXR1cm57aXNBc3luYzohMSxnZXQgaXNFbXB0eSgpe3JldHVybiFjfSx3cml0ZTpmdW5jdGlvbih0LGkpe3ZhciBlPU1aKHQpO1orPWUsYys9dCxpJiZpKGUpfSxmaW5pc2g6ZnVuY3Rpb24odCl7dCh0aGlzLmZpbmlzaFN5bmMoKSl9LGZpbmlzaFN5bmM6ZnVuY3Rpb24oKXt2YXIgdD17b3V0cHV0OmMsb3V0cHV0Qnl0ZXNDb3VudDpaLHJhd0J5dGVzQ291bnQ6WixwZW5kaW5nRGF0YToiIn07cmV0dXJuIGM9IiIsWj0wLHR9LGVzdGltYXRlRW5jb2RlZEJ5dGVzQ291bnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofX19dmFyIGowPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYygpe3RoaXMuY2FsbGJhY2tzPXt9fXJldHVybiBjLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oWix0KXt2YXIgaT10aGlzLmNhbGxiYWNrc1taXTtpJiZpLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KX0sYy5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKFosdCl7dmFyIGk9dGhpcztyZXR1cm4gdGhpcy5jYWxsYmFja3NbWl18fCh0aGlzLmNhbGxiYWNrc1taXT1bXSksdGhpcy5jYWxsYmFja3NbWl0ucHVzaCh0KSx7dW5zdWJzY3JpYmU6ZnVuY3Rpb24oKXtpLmNhbGxiYWNrc1taXT1pLmNhbGxiYWNrc1taXS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHQhPT1lfSl9fX0sY30oKTtmdW5jdGlvbiBEMChjLFosdCl7dmFyIGk9MCxlPSExO3JldHVybntpc0xpbWl0UmVhY2hlZDpmdW5jdGlvbigpe2lmKGk9PT0wJiZUYyhmdW5jdGlvbigpe2k9MH0sd24pLGkrPTEsaTw9Wnx8ZSlyZXR1cm4gZT0hMSwhMTtpZihpPT09WisxKXtlPSEwO3RyeXt0KHttZXNzYWdlOiJSZWFjaGVkIG1heCBudW1iZXIgb2YgIi5jb25jYXQoYywicyBieSBtaW51dGU6ICIpLmNvbmNhdChaKSxzb3VyY2U6TmwuQUdFTlQsc3RhcnRDbG9ja3M6Zm4oKX0pfWZpbmFsbHl7ZT0hMX19cmV0dXJuITB9fX12YXIgZXQsbXQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gTzAoYyl7cmV0dXJuIGV0fHwoZXQ9QTAoYykpLGV0fWZ1bmN0aW9uIEEwKGMpe3JldHVybiBuZXcgc2woZnVuY3Rpb24oWil7dmFyIHQ9QW4oWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJvcGVuIixfMCkuc3RvcCxpPUFuKFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZSwic2VuZCIsZnVuY3Rpb24oRyl7cTAoRyxjLFopfSx7Y29tcHV0ZUhhbmRsaW5nU3RhY2s6ITB9KS5zdG9wLGU9QW4oWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLCJhYm9ydCIsJDApLnN0b3A7cmV0dXJuIGZ1bmN0aW9uKCl7dCgpLGkoKSxlKCl9fSl9ZnVuY3Rpb24gXzAoYyl7dmFyIFo9Yy50YXJnZXQsdD1jLnBhcmFtZXRlcnMsaT10WzBdLGU9dFsxXTttdC5zZXQoWix7c3RhdGU6Im9wZW4iLG1ldGhvZDpTdHJpbmcoaSkudG9VcHBlckNhc2UoKSx1cmw6cVooU3RyaW5nKGUpKX0pfWZ1bmN0aW9uIHEwKGMsWix0KXt2YXIgaT1jLnRhcmdldCxlPWMuaGFuZGxpbmdTdGFjayxHPW10LmdldChpKTtpZihHKXt2YXIgbz1HO28uc3RhdGU9InN0YXJ0IixvLnN0YXJ0Q2xvY2tzPWZuKCksby5pc0Fib3J0ZWQ9ITEsby54aHI9aSxvLmhhbmRsaW5nU3RhY2s9ZTt2YXIgcz0hMSxWPUFuKGksIm9ucmVhZHlzdGF0ZWNoYW5nZSIsZnVuY3Rpb24oKXtpLnJlYWR5U3RhdGU9PT1YTUxIdHRwUmVxdWVzdC5ET05FJiZoKCl9KS5zdG9wLGg9ZnVuY3Rpb24oKXtpZih5KCksVigpLCFzKXtzPSEwO3ZhciBMPUc7TC5zdGF0ZT0iY29tcGxldGUiLEwuZHVyYXRpb249V2Ioby5zdGFydENsb2Nrcy50aW1lU3RhbXAseG4oKSksTC5zdGF0dXM9aS5zdGF0dXMsdC5ub3RpZnkoWWIoTCkpfX0seT1fbihaLGksImxvYWRlbmQiLGgpLnN0b3A7dC5ub3RpZnkobyl9fWZ1bmN0aW9uICQwKGMpe3ZhciBaPWMudGFyZ2V0LHQ9bXQuZ2V0KFopO3QmJih0LmlzQWJvcnRlZD0hMCl9dmFyIGF0O2Z1bmN0aW9uIFBpKCl7cmV0dXJuIGF0fHwoYXQ9bG8oKSksYXR9ZnVuY3Rpb24gbG8oKXtyZXR1cm4gbmV3IHNsKGZ1bmN0aW9uKGMpe2lmKHdpbmRvdy5mZXRjaCl7dmFyIFo9QW4od2luZG93LCJmZXRjaCIsZnVuY3Rpb24odCl7cmV0dXJuIG5vKHQsYyl9LHtjb21wdXRlSGFuZGxpbmdTdGFjazohMH0pLnN0b3A7cmV0dXJuIFp9fSl9ZnVuY3Rpb24gbm8oYyxaKXt2YXIgdD1jLnBhcmFtZXRlcnMsaT1jLm9uUG9zdENhbGwsZT1jLmhhbmRsaW5nU3RhY2ssRz10WzBdLG89dFsxXSxzPW8mJm8ubWV0aG9kO3M9PT12b2lkIDAmJkcgaW5zdGFuY2VvZiBSZXF1ZXN0JiYocz1HLm1ldGhvZCk7dmFyIFY9cyE9PXZvaWQgMD9TdHJpbmcocykudG9VcHBlckNhc2UoKToiR0VUIixoPUcgaW5zdGFuY2VvZiBSZXF1ZXN0P0cudXJsOnFaKFN0cmluZyhHKSkseT1mbigpLEw9e3N0YXRlOiJzdGFydCIsaW5pdDpvLGlucHV0OkcsbWV0aG9kOlYsc3RhcnRDbG9ja3M6eSx1cmw6aCxoYW5kbGluZ1N0YWNrOmV9O1oubm90aWZ5KEwpLHRbMF09TC5pbnB1dCx0WzFdPUwuaW5pdCxpKGZ1bmN0aW9uKHgpe3JldHVybiBjbyhaLHgsTCl9KX1mdW5jdGlvbiBjbyhjLFosdCl7dmFyIGk9dDtmdW5jdGlvbiBlKEcpe2kuc3RhdGU9InJlc29sdmUiLFdsKGksRyksYy5ub3RpZnkoaSl9Wi50aGVuKCQoZnVuY3Rpb24oRyl7ZSh7cmVzcG9uc2U6RyxyZXNwb25zZVR5cGU6Ry50eXBlLHN0YXR1czpHLnN0YXR1cyxpc0Fib3J0ZWQ6ITF9KX0pLCQoZnVuY3Rpb24oRyl7dmFyIG8scztlKHtzdGF0dXM6MCxpc0Fib3J0ZWQ6KChzPShvPWkuaW5pdCk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLnNpZ25hbCk9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzLmFib3J0ZWQpfHxHIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiZHLmNvZGU9PT1ET01FeGNlcHRpb24uQUJPUlRfRVJSLGVycm9yOkd9KX0pKX12YXIgYnQ9e307ZnVuY3Rpb24gWm8oYyl7dmFyIFo9Yy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGJ0W3RdfHwoYnRbdF09dG8odCkpLGJ0W3RdfSk7cmV0dXJuIG5pLmFwcGx5KHZvaWQgMCxaKX1mdW5jdGlvbiB0byhjKXtyZXR1cm4gbmV3IHNsKGZ1bmN0aW9uKFope3ZhciB0PWRuW2NdO3JldHVybiBkbltjXT1mdW5jdGlvbigpe2Zvcih2YXIgaT1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylpW2VdPWFyZ3VtZW50c1tlXTt0LmFwcGx5KGNvbnNvbGUsaSk7dmFyIEc9S2QoKTtNYyhmdW5jdGlvbigpe1oubm90aWZ5KHVvKGksYyxHKSl9KX0sZnVuY3Rpb24oKXtkbltjXT10fX0pfWZ1bmN0aW9uIHVvKGMsWix0KXt2YXIgaT1jLm1hcChmdW5jdGlvbihvKXtyZXR1cm4gaW8obyl9KS5qb2luKCIgIiksZTtpZihaPT09bWwuZXJyb3Ipe3ZhciBHPXliKGMsZnVuY3Rpb24obyl7cmV0dXJuIG8gaW5zdGFuY2VvZiBFcnJvcn0pO2U9e3N0YWNrOkc/T24oR24oRykpOnZvaWQgMCxmaW5nZXJwcmludDpWaShHKSxjYXVzZXM6Rz95aShHLCJjb25zb2xlIik6dm9pZCAwLHN0YXJ0Q2xvY2tzOmZuKCksbWVzc2FnZTppLHNvdXJjZTpObC5DT05TT0xFLGhhbmRsaW5nOiJoYW5kbGVkIixoYW5kbGluZ1N0YWNrOnR9fXJldHVybnthcGk6WixtZXNzYWdlOmksZXJyb3I6ZSxoYW5kbGluZ1N0YWNrOnR9fWZ1bmN0aW9uIGlvKGMpe3JldHVybiB0eXBlb2YgYz09InN0cmluZyI/b24oYyk6YyBpbnN0YW5jZW9mIEVycm9yP1dpKEduKGMpKTpqbihvbihjKSx2b2lkIDAsMil9ZnVuY3Rpb24gR3QoYyl7dmFyIFo9e30sdD1uZXcgc2wsaT17Z2V0Q29udGV4dDpmdW5jdGlvbigpe3JldHVybiB4aShaKX0sc2V0Q29udGV4dDpmdW5jdGlvbihlKXt0dChlKT09PSJvYmplY3QiPyhaPW9uKGUpLGMmJmMudXBkYXRlQ3VzdG9tZXJEYXRhKFopKTppLmNsZWFyQ29udGV4dCgpLHQubm90aWZ5KCl9LHNldENvbnRleHRQcm9wZXJ0eTpmdW5jdGlvbihlLEcpe1pbZV09b24oRyksYyYmYy51cGRhdGVDdXN0b21lckRhdGEoWiksdC5ub3RpZnkoKX0scmVtb3ZlQ29udGV4dFByb3BlcnR5OmZ1bmN0aW9uKGUpe2RlbGV0ZSBaW2VdLGMmJmMudXBkYXRlQ3VzdG9tZXJEYXRhKFopLHQubm90aWZ5KCl9LGNsZWFyQ29udGV4dDpmdW5jdGlvbigpe1o9e30sYyYmYy5yZXNldEN1c3RvbWVyRGF0YSgpLHQubm90aWZ5KCl9LGNoYW5nZU9ic2VydmFibGU6dH07cmV0dXJuIGl9dmFyIGVvPSJfZGRfYyIsbW89W107ZnVuY3Rpb24gQmkoYyxaLHQsaSl7dmFyIGU9YW8odCxpKTttby5wdXNoKF9uKGMsd2luZG93LCJzdG9yYWdlIixmdW5jdGlvbihWKXt2YXIgaD1WLmtleTtlPT09aCYmRygpfSkpLFouY2hhbmdlT2JzZXJ2YWJsZS5zdWJzY3JpYmUobyksWi5zZXRDb250ZXh0KFdjKHMoKSxaLmdldENvbnRleHQoKSkpO2Z1bmN0aW9uIEcoKXtaLnNldENvbnRleHQocygpKX1mdW5jdGlvbiBvKCl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oZSxKU09OLnN0cmluZ2lmeShaLmdldENvbnRleHQoKSkpfWZ1bmN0aW9uIHMoKXt2YXIgVj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShlKTtyZXR1cm4gViE9PW51bGw/SlNPTi5wYXJzZShWKTp7fX19ZnVuY3Rpb24gYW8oYyxaKXtyZXR1cm4iIi5jb25jYXQoZW8sIl8iKS5jb25jYXQoYywiXyIpLmNvbmNhdChaKX12YXIgYm89MypibixHbz0xNipibixvbz0yMDA7ZnVuY3Rpb24gWG8oYyl7Yz09PXZvaWQgMCYmKGM9Mik7dmFyIFo9bmV3IE1hcCx0PSExO2Z1bmN0aW9uIGkoZSl7aWYoZT09PXZvaWQgMCYmKGU9MCksISh0fHxjPT09MCkpe3ZhciBHPWM9PT0yP2JvOkdvLG89ZTtaLmZvckVhY2goZnVuY3Rpb24ocyl7bys9cy5nZXRCeXRlc0NvdW50KCl9KSxvPkcmJihzbyhHKSx0PSEwKX19cmV0dXJue2NyZWF0ZURldGFjaGVkVHJhY2tlcjpmdW5jdGlvbigpe3ZhciBlPVFpKGZ1bmN0aW9uKCl7cmV0dXJuIGkoZS5nZXRCeXRlc0NvdW50KCkpfSk7cmV0dXJuIGV9LGdldE9yQ3JlYXRlVHJhY2tlcjpmdW5jdGlvbihlKXtyZXR1cm4gWi5oYXMoZSl8fFouc2V0KGUsUWkoaSkpLFouZ2V0KGUpfSxzZXRDb21wcmVzc2lvblN0YXR1czpmdW5jdGlvbihlKXtjPT09MCYmKGM9ZSxpKCkpfSxnZXRDb21wcmVzc2lvblN0YXR1czpmdW5jdGlvbigpe3JldHVybiBjfSxzdG9wOmZ1bmN0aW9uKCl7Wi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0b3AoKX0pLFouY2xlYXIoKX19fWZ1bmN0aW9uIFFpKGMpe3ZhciBaPTAsdD1jaShmdW5jdGlvbihvKXtaPU1aKGpuKG8pKSxjKCl9LG9vKSxpPXQudGhyb3R0bGVkLGU9dC5jYW5jZWwsRz1mdW5jdGlvbigpe2UoKSxaPTB9O3JldHVybnt1cGRhdGVDdXN0b21lckRhdGE6ZnVuY3Rpb24obyl7d1oobyk/RygpOmkobyl9LHJlc2V0Q3VzdG9tZXJEYXRhOkcsZ2V0Qnl0ZXNDb3VudDpmdW5jdGlvbigpe3JldHVybiBafSxzdG9wOmZ1bmN0aW9uKCl7ZSgpfX19ZnVuY3Rpb24gc28oYyl7Ymwud2FybigiQ3VzdG9tZXIgZGF0YSBleGNlZWRzIHRoZSByZWNvbW1lbmRlZCAiLmNvbmNhdChjL2JuLCJLaUIgdGhyZXNob2xkLiAiKS5jb25jYXQoV2QsIiAiKS5jb25jYXQoanUsIi8jY3VzdG9tZXItZGF0YS1leGNlZWRzLXRoZS1yZWNvbW1lbmRlZC10aHJlc2hvbGQtd2FybmluZyIpKX1mdW5jdGlvbiBwbyhjLFosdCl7dmFyIGk9Yy5nZXRSZWFkZXIoKSxlPVtdLEc9MDtvKCk7ZnVuY3Rpb24gbygpe2kucmVhZCgpLnRoZW4oJChmdW5jdGlvbihWKXtpZihWLmRvbmUpe3MoKTtyZXR1cm59ZS5wdXNoKFYudmFsdWUpLEcrPVYudmFsdWUubGVuZ3RoLEc+dC5ieXRlc0xpbWl0P3MoKTpvKCl9KSwkKGZ1bmN0aW9uKFYpe3JldHVybiBaKFYpfSkpfWZ1bmN0aW9uIHMoKXtpLmNhbmNlbCgpLmNhdGNoKEluKTt2YXIgVixoO3t2YXIgeTtpZihlLmxlbmd0aD09PTEpeT1lWzBdO2Vsc2V7eT1uZXcgVWludDhBcnJheShHKTt2YXIgTD0wO2UuZm9yRWFjaChmdW5jdGlvbih4KXt5LnNldCh4LEwpLEwrPXgubGVuZ3RofSl9Vj15LnNsaWNlKDAsdC5ieXRlc0xpbWl0KSxoPXkubGVuZ3RoPnQuYnl0ZXNMaW1pdH1aKHZvaWQgMCxWLGgpfX12YXIgV289ImRhdGFkb2ctc3ludGhldGljcy1wdWJsaWMtaWQiLHJvPSJkYXRhZG9nLXN5bnRoZXRpY3MtcmVzdWx0LWlkIixobz0iZGF0YWRvZy1zeW50aGV0aWNzLWluamVjdHMtcnVtIjtmdW5jdGlvbiBFaSgpe3JldHVybiEhKHdpbmRvdy5fREFUQURPR19TWU5USEVUSUNTX0lOSkVDVFNfUlVNfHxCbihobykpfWZ1bmN0aW9uIFZvKCl7dmFyIGM9d2luZG93Ll9EQVRBRE9HX1NZTlRIRVRJQ1NfUFVCTElDX0lEfHxCbihXbyk7cmV0dXJuIHR5cGVvZiBjPT0ic3RyaW5nIj9jOnZvaWQgMH1mdW5jdGlvbiB5bygpe3ZhciBjPXdpbmRvdy5fREFUQURPR19TWU5USEVUSUNTX1JFU1VMVF9JRHx8Qm4ocm8pO3JldHVybiB0eXBlb2YgYz09InN0cmluZyI/Yzp2b2lkIDB9ZnVuY3Rpb24gamkoYyl7dmFyIFo9V2woe30sYyksdD1bImlkIiwibmFtZSIsImVtYWlsIl07cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihpKXtpIGluIFomJihaW2ldPVN0cmluZyhaW2ldKSl9KSxafWZ1bmN0aW9uIFJvKGMpe3ZhciBaPXR0KGMpPT09Im9iamVjdCI7cmV0dXJuIFp8fGJsLmVycm9yKCJVbnN1cHBvcnRlZCB1c2VyOiIsYyksWn12YXIgRGw7ZnVuY3Rpb24gZ2QoYyxaLHQpe3ZhciBpPXQuZ2V0SGFuZGxlcigpLGU9QXJyYXkuaXNBcnJheShpKT9pOltpXTtyZXR1cm4gRGlbY10+PURpW3QuZ2V0TGV2ZWwoKV0mJmJjKGUsWil9dmFyIHc9e29rOiJvayIsZGVidWc6ImRlYnVnIixpbmZvOiJpbmZvIixub3RpY2U6Im5vdGljZSIsd2Fybjoid2FybiIsZXJyb3I6ImVycm9yIixjcml0aWNhbDoiY3JpdGljYWwiLGFsZXJ0OiJhbGVydCIsZW1lcmc6ImVtZXJnIn0sRGk9KERsPXt9LERsW3cub2tdPTAsRGxbdy5kZWJ1Z109MSxEbFt3LmluZm9dPTIsRGxbdy5ub3RpY2VdPTQsRGxbdy53YXJuXT01LERsW3cuZXJyb3JdPTYsRGxbdy5jcml0aWNhbF09NyxEbFt3LmFsZXJ0XT04LERsW3cuZW1lcmddPTksRGwpO2Z1bmN0aW9uIFVkKGMsWil7dmFyIHQ9Wj09PXZvaWQgMD97fTpaLGk9dC5pbmNsdWRlTWVzc2FnZSxlPWk9PT12b2lkIDA/ITE6aTtyZXR1cm57c3RhY2s6Yy5zdGFjayxraW5kOmMudHlwZSxtZXNzYWdlOmU/Yy5tZXNzYWdlOnZvaWQgMCxjYXVzZXM6Yy5jYXVzZXMsZmluZ2VycHJpbnQ6Yy5maW5nZXJwcmludCxoYW5kbGluZzpjLmhhbmRsaW5nfX12YXIgTG89ZnVuY3Rpb24oYyxaLHQsaSl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aCxHPWU8Mz9aOmk9PT1udWxsP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihaLHQpOmksbztpZih0eXBlb2YgUmVmbGVjdD09Im9iamVjdCImJnR5cGVvZiBSZWZsZWN0LmRlY29yYXRlPT0iZnVuY3Rpb24iKUc9UmVmbGVjdC5kZWNvcmF0ZShjLFosdCxpKTtlbHNlIGZvcih2YXIgcz1jLmxlbmd0aC0xO3M+PTA7cy0tKShvPWNbc10pJiYoRz0oZTwzP28oRyk6ZT4zP28oWix0LEcpOm8oWix0KSl8fEcpO3JldHVybiBlPjMmJkcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShaLHQsRyksR30sQmM9e2NvbnNvbGU6ImNvbnNvbGUiLGh0dHA6Imh0dHAiLHNpbGVudDoic2lsZW50In0sWW89T2JqZWN0LmtleXModyksT2w9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKFosdCxpLGUsRyxvKXtlPT09dm9pZCAwJiYoZT1CYy5odHRwKSxHPT09dm9pZCAwJiYoRz13LmRlYnVnKSxvPT09dm9pZCAwJiYobz17fSksdGhpcy5oYW5kbGVMb2dTdHJhdGVneT1aLHRoaXMuaGFuZGxlclR5cGU9ZSx0aGlzLmxldmVsPUcsdGhpcy5jb250ZXh0TWFuYWdlcj1HdCh0KSx0aGlzLmNvbnRleHRNYW5hZ2VyLnNldENvbnRleHQobyksaSYmdGhpcy5jb250ZXh0TWFuYWdlci5zZXRDb250ZXh0UHJvcGVydHkoImxvZ2dlciIse25hbWU6aX0pfXJldHVybiBjLnByb3RvdHlwZS5sb2dJbXBsZW1lbnRhdGlvbj1mdW5jdGlvbihaLHQsaSxlLEcpe2k9PT12b2lkIDAmJihpPXcuaW5mbyk7dmFyIG89b24odCkscztpZihlIT1udWxsKXt2YXIgVj1oaSh7c3RhY2tUcmFjZTplIGluc3RhbmNlb2YgRXJyb3I/R24oZSk6dm9pZCAwLG9yaWdpbmFsRXJyb3I6ZSxub25FcnJvclByZWZpeDoiUHJvdmlkZWQiLHNvdXJjZTpObC5MT0dHRVIsaGFuZGxpbmc6ImhhbmRsZWQiLHN0YXJ0Q2xvY2tzOmZuKCl9KTtzPVdjKHtlcnJvcjpVZChWLHtpbmNsdWRlTWVzc2FnZTohMH0pfSxvKX1lbHNlIHM9bzt0aGlzLmhhbmRsZUxvZ1N0cmF0ZWd5KHttZXNzYWdlOm9uKFopLGNvbnRleHQ6cyxzdGF0dXM6aX0sdGhpcyxHKX0sYy5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKFosdCxpLGUpe2k9PT12b2lkIDAmJihpPXcuaW5mbyk7dmFyIEc7Z2QoaSxCYy5odHRwLHRoaXMpJiYoRz1LZCgpKSx0aGlzLmxvZ0ltcGxlbWVudGF0aW9uKFosdCxpLGUsRyl9LGMucHJvdG90eXBlLnNldENvbnRleHQ9ZnVuY3Rpb24oWil7dGhpcy5jb250ZXh0TWFuYWdlci5zZXRDb250ZXh0KFopfSxjLnByb3RvdHlwZS5nZXRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dE1hbmFnZXIuZ2V0Q29udGV4dCgpfSxjLnByb3RvdHlwZS5zZXRDb250ZXh0UHJvcGVydHk9ZnVuY3Rpb24oWix0KXt0aGlzLmNvbnRleHRNYW5hZ2VyLnNldENvbnRleHRQcm9wZXJ0eShaLHQpfSxjLnByb3RvdHlwZS5yZW1vdmVDb250ZXh0UHJvcGVydHk9ZnVuY3Rpb24oWil7dGhpcy5jb250ZXh0TWFuYWdlci5yZW1vdmVDb250ZXh0UHJvcGVydHkoWil9LGMucHJvdG90eXBlLmNsZWFyQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuY29udGV4dE1hbmFnZXIuY2xlYXJDb250ZXh0KCl9LGMucHJvdG90eXBlLnNldEhhbmRsZXI9ZnVuY3Rpb24oWil7dGhpcy5oYW5kbGVyVHlwZT1afSxjLnByb3RvdHlwZS5nZXRIYW5kbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFuZGxlclR5cGV9LGMucHJvdG90eXBlLnNldExldmVsPWZ1bmN0aW9uKFope3RoaXMubGV2ZWw9Wn0sYy5wcm90b3R5cGUuZ2V0TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZXZlbH0sTG8oW0piXSxjLnByb3RvdHlwZSwibG9nSW1wbGVtZW50YXRpb24iLG51bGwpLGN9KCk7T2wucHJvdG90eXBlLm9rPVhuKHcub2spLE9sLnByb3RvdHlwZS5kZWJ1Zz1Ybih3LmRlYnVnKSxPbC5wcm90b3R5cGUuaW5mbz1Ybih3LmluZm8pLE9sLnByb3RvdHlwZS5ub3RpY2U9WG4ody5ub3RpY2UpLE9sLnByb3RvdHlwZS53YXJuPVhuKHcud2FybiksT2wucHJvdG90eXBlLmVycm9yPVhuKHcuZXJyb3IpLE9sLnByb3RvdHlwZS5jcml0aWNhbD1Ybih3LmNyaXRpY2FsKSxPbC5wcm90b3R5cGUuYWxlcnQ9WG4ody5hbGVydCksT2wucHJvdG90eXBlLmVtZXJnPVhuKHcuZW1lcmcpO2Z1bmN0aW9uIFhuKGMpe3JldHVybiBmdW5jdGlvbihaLHQsaSl7dmFyIGU7Z2QoYyxCYy5odHRwLHRoaXMpJiYoZT1LZCgpKSx0aGlzLmxvZ0ltcGxlbWVudGF0aW9uKFosdCxjLGksZSl9fWZ1bmN0aW9uIFNvKGMsWil7cmV0dXJue3ZpZXc6e3JlZmVycmVyOmRvY3VtZW50LnJlZmVycmVyLHVybDp3aW5kb3cubG9jYXRpb24uaHJlZn0sY29udGV4dDpjLmdldENvbnRleHQoKSx1c2VyOlouZ2V0Q29udGV4dCgpfX12YXIgeG89MzIqYm47ZnVuY3Rpb24gZm8oYyl7Yy51c2VQY2lJbnRha2U9PT0hMCYmYy5zaXRlJiZjLnNpdGUhPT0iZGF0YWRvZ2hxLmNvbSImJmJsLndhcm4oIlBDSSBjb21wbGlhbmNlIGZvciBMb2dzIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBEYXRhZG9nIG9yZ2FuaXphdGlvbnMgaW4gdGhlIFVTMSBzaXRlLiBEZWZhdWx0IGludGFrZSB3aWxsIGJlIHVzZWQuIik7dmFyIFo9U0coYyksdD1PaShjLmZvcndhcmRDb25zb2xlTG9ncyxHYyhtbCksIkZvcndhcmQgQ29uc29sZSBMb2dzIiksaT1PaShjLmZvcndhcmRSZXBvcnRzLEdjKEZkKSwiRm9yd2FyZCBSZXBvcnRzIik7aWYoISghWnx8IXR8fCFpKSlyZXR1cm4gYy5mb3J3YXJkRXJyb3JzVG9Mb2dzJiYhYmModCxtbC5lcnJvcikmJnQucHVzaChtbC5lcnJvciksV2woe2ZvcndhcmRFcnJvcnNUb0xvZ3M6Yy5mb3J3YXJkRXJyb3JzVG9Mb2dzIT09ITEsZm9yd2FyZENvbnNvbGVMb2dzOnQsZm9yd2FyZFJlcG9ydHM6aSxyZXF1ZXN0RXJyb3JSZXNwb25zZUxlbmd0aExpbWl0OnhvLHNlbmRMb2dzQWZ0ZXJTZXNzaW9uRXhwaXJhdGlvbjohIWMuc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9ufSxaKX1mdW5jdGlvbiBPaShjLFosdCl7aWYoYz09PXZvaWQgMClyZXR1cm5bXTtpZighKGM9PT0iYWxsInx8QXJyYXkuaXNBcnJheShjKSYmYy5ldmVyeShmdW5jdGlvbihpKXtyZXR1cm4gYmMoWixpKX0pKSl7YmwuZXJyb3IoIiIuY29uY2F0KHQsJyBzaG91bGQgYmUgImFsbCIgb3IgYW4gYXJyYXkgd2l0aCBhbGxvd2VkIHZhbHVlcyAiJykuY29uY2F0KFouam9pbignIiwgIicpLCciJykpO3JldHVybn1yZXR1cm4gYz09PSJhbGwiP1o6YTAoYyl9ZnVuY3Rpb24gSm8oYyl7dmFyIFo9eEcoYyk7cmV0dXJuIFdsKHtmb3J3YXJkX2Vycm9yc190b19sb2dzOmMuZm9yd2FyZEVycm9yc1RvTG9ncyxmb3J3YXJkX2NvbnNvbGVfbG9nczpjLmZvcndhcmRDb25zb2xlTG9ncyxmb3J3YXJkX3JlcG9ydHM6Yy5mb3J3YXJkUmVwb3J0cyx1c2VfcGNpX2ludGFrZTpjLnVzZVBjaUludGFrZSxzZW5kX2xvZ3NfYWZ0ZXJfc2Vzc2lvbl9leHBpcmF0aW9uOmMuc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9ufSxaKX1mdW5jdGlvbiBJbyhjLFosdCl7dmFyIGk9SmkoKSxlLEcsbz1aLm9ic2VydmFibGUuc3Vic2NyaWJlKHMpO2Z1bmN0aW9uIHMoKXtpZighKCFHfHwhZXx8IVouaXNHcmFudGVkKCkpKXtvLnVuc3Vic2NyaWJlKCk7dmFyIFY9dChlLEcpO2kuZHJhaW4oVil9fXJldHVybntpbml0OmZ1bmN0aW9uKFYpe2lmKCFWKXtibC5lcnJvcigiTWlzc2luZyBjb25maWd1cmF0aW9uIik7cmV0dXJufWlmKGZHKFYuZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMpLHZkKCkmJihWPUtvKFYpKSxlPVYsRyl7UmkoIkREX0xPR1MiLFYpO3JldHVybn12YXIgaD1mbyhWKTtoJiYoRz1oLFBpKCkuc3Vic2NyaWJlKEluKSxaLnRyeVRvSW5pdChoLnRyYWNraW5nQ29uc2VudCkscygpKX0sZ2V0IGluaXRDb25maWd1cmF0aW9uKCl7cmV0dXJuIGV9LGdldEludGVybmFsQ29udGV4dDpJbixoYW5kbGVMb2c6ZnVuY3Rpb24oVixoLHksTCx4KXtMPT09dm9pZCAwJiYoTD1jKCkpLHg9PT12b2lkIDAmJih4PXhuKCkpLGkuYWRkKGZ1bmN0aW9uKEkpe3JldHVybiBJLmhhbmRsZUxvZyhWLGgseSxMLHgpfSl9fX1mdW5jdGlvbiBLbyhjKXtyZXR1cm4gV2woe30sYyx7Y2xpZW50VG9rZW46ImVtcHR5In0pfXZhciBBaT0ibG9ncyI7ZnVuY3Rpb24gRm8oYyl7dmFyIFo9WG8oKSx0PUd0KFouZ2V0T3JDcmVhdGVUcmFja2VyKDIpKSxpPUd0KFouZ2V0T3JDcmVhdGVUcmFja2VyKDEpKSxlPWlHKCk7ZnVuY3Rpb24gRygpe3JldHVybiBTbyh0LGkpfXZhciBvPUlvKEcsZSxmdW5jdGlvbihoLHkpe2guc3RvcmVDb250ZXh0c0Fjcm9zc1BhZ2VzJiYoQmkoeSx0LEFpLDIpLEJpKHksaSxBaSwxKSk7dmFyIEw9YyhoLHksRyxlKTtyZXR1cm4gbz1ObyhoLEwpLEx9KSxzPXt9LFY9bmV3IE9sKGZ1bmN0aW9uKCl7Zm9yKHZhciBoPVtdLHk9MDt5PGFyZ3VtZW50cy5sZW5ndGg7eSsrKWhbeV09YXJndW1lbnRzW3ldO3JldHVybiBvLmhhbmRsZUxvZy5hcHBseShvLGgpfSxaLmNyZWF0ZURldGFjaGVkVHJhY2tlcigpKTtyZXR1cm4gbjAoe2xvZ2dlcjpWLGluaXQ6JChmdW5jdGlvbihoKXtyZXR1cm4gby5pbml0KGgpfSksc2V0VHJhY2tpbmdDb25zZW50OiQoZnVuY3Rpb24oaCl7ZS51cGRhdGUoaCksaDAoe2ZlYXR1cmU6InNldC10cmFja2luZy1jb25zZW50Iix0cmFja2luZ19jb25zZW50Omh9KX0pLGdldEdsb2JhbENvbnRleHQ6JChmdW5jdGlvbigpe3JldHVybiB0LmdldENvbnRleHQoKX0pLHNldEdsb2JhbENvbnRleHQ6JChmdW5jdGlvbihoKXtyZXR1cm4gdC5zZXRDb250ZXh0KGgpfSksc2V0R2xvYmFsQ29udGV4dFByb3BlcnR5OiQoZnVuY3Rpb24oaCx5KXtyZXR1cm4gdC5zZXRDb250ZXh0UHJvcGVydHkoaCx5KX0pLHJlbW92ZUdsb2JhbENvbnRleHRQcm9wZXJ0eTokKGZ1bmN0aW9uKGgpe3JldHVybiB0LnJlbW92ZUNvbnRleHRQcm9wZXJ0eShoKX0pLGNsZWFyR2xvYmFsQ29udGV4dDokKGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2xlYXJDb250ZXh0KCl9KSxjcmVhdGVMb2dnZXI6JChmdW5jdGlvbihoLHkpe3JldHVybiB5PT09dm9pZCAwJiYoeT17fSksc1toXT1uZXcgT2woZnVuY3Rpb24oKXtmb3IodmFyIEw9W10seD0wO3g8YXJndW1lbnRzLmxlbmd0aDt4KyspTFt4XT1hcmd1bWVudHNbeF07cmV0dXJuIG8uaGFuZGxlTG9nLmFwcGx5KG8sTCl9LFouY3JlYXRlRGV0YWNoZWRUcmFja2VyKCksb24oaCkseS5oYW5kbGVyLHkubGV2ZWwsb24oeS5jb250ZXh0KSksc1toXX0pLGdldExvZ2dlcjokKGZ1bmN0aW9uKGgpe3JldHVybiBzW2hdfSksZ2V0SW5pdENvbmZpZ3VyYXRpb246JChmdW5jdGlvbigpe3JldHVybiB4aShvLmluaXRDb25maWd1cmF0aW9uKX0pLGdldEludGVybmFsQ29udGV4dDokKGZ1bmN0aW9uKGgpe3JldHVybiBvLmdldEludGVybmFsQ29udGV4dChoKX0pLHNldFVzZXI6JChmdW5jdGlvbihoKXtSbyhoKSYmaS5zZXRDb250ZXh0KGppKGgpKX0pLGdldFVzZXI6JChmdW5jdGlvbigpe3JldHVybiBpLmdldENvbnRleHQoKX0pLHNldFVzZXJQcm9wZXJ0eTokKGZ1bmN0aW9uKGgseSl7dmFyIEwseD1qaSgoTD17fSxMW2hdPXksTCkpW2hdO2kuc2V0Q29udGV4dFByb3BlcnR5KGgseCl9KSxyZW1vdmVVc2VyUHJvcGVydHk6JChmdW5jdGlvbihoKXtyZXR1cm4gaS5yZW1vdmVDb250ZXh0UHJvcGVydHkoaCl9KSxjbGVhclVzZXI6JChmdW5jdGlvbigpe3JldHVybiBpLmNsZWFyQ29udGV4dCgpfSl9KX1mdW5jdGlvbiBObyhjLFope3JldHVybiBXbCh7aW5pdDpmdW5jdGlvbih0KXtSaSgiRERfTE9HUyIsdCl9LGluaXRDb25maWd1cmF0aW9uOmN9LFopfXZhciB6bz0ibG9ncyI7ZnVuY3Rpb24gdm8oYyxaKXt2YXIgdD14MChjLHpvLGZ1bmN0aW9uKGkpe3JldHVybiBrbyhjLGkpfSxaKTtyZXR1cm57ZmluZFRyYWNrZWRTZXNzaW9uOmZ1bmN0aW9uKGksZSl7ZT09PXZvaWQgMCYmKGU9e3JldHVybkluYWN0aXZlOiExfSk7dmFyIEc9dC5maW5kU2Vzc2lvbihpLGUpO3JldHVybiBHJiZHLnRyYWNraW5nVHlwZT09PSIxIj97aWQ6Ry5pZH06dm9pZCAwfSxleHBpcmVPYnNlcnZhYmxlOnQuZXhwaXJlT2JzZXJ2YWJsZX19ZnVuY3Rpb24gSG8oYyl7dmFyIFo9X2koYyk9PT0iMSIsdD1aP3t9OnZvaWQgMDtyZXR1cm57ZmluZFRyYWNrZWRTZXNzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV4cGlyZU9ic2VydmFibGU6bmV3IHNsfX1mdW5jdGlvbiBfaShjKXtyZXR1cm4gcmQoYy5zZXNzaW9uU2FtcGxlUmF0ZSk/IjEiOiIwIn1mdW5jdGlvbiBrbyhjLFope3ZhciB0PWdvKFopP1o6X2koYyk7cmV0dXJue3RyYWNraW5nVHlwZTp0LGlzVHJhY2tlZDp0PT09IjEifX1mdW5jdGlvbiBnbyhjKXtyZXR1cm4gYz09PSIwInx8Yz09PSIxIn12YXIgcWk9ITE7ZnVuY3Rpb24gTWQoYyl7dmFyIFo9d2luZG93O2lmKEVpKCkpe3ZhciB0PWkoWi5ERF9SVU1fU1lOVEhFVElDUyk7cmV0dXJuIXQmJiFxaSYmKHFpPSEwLEtpKCJMb2dzIHNlbnQgYmVmb3JlIFJVTSBpcyBpbmplY3RlZCBieSB0aGUgc3ludGhldGljcyB3b3JrZXIiLHt0ZXN0SWQ6Vm8oKSxyZXN1bHRJZDp5bygpfSkpLHR9cmV0dXJuIGkoWi5ERF9SVU0pO2Z1bmN0aW9uIGkoZSl7aWYoZSYmZS5nZXRJbnRlcm5hbENvbnRleHQpcmV0dXJuIGUuZ2V0SW50ZXJuYWxDb250ZXh0KGMpfX1mdW5jdGlvbiBVbyhjLFosdCxpLGUpe3ZhciBHPVlvLmNvbmNhdChbImN1c3RvbSJdKSxvPXt9O0cuZm9yRWFjaChmdW5jdGlvbihzKXtvW3NdPUQwKHMsWi5ldmVudFJhdGVMaW1pdGVyVGhyZXNob2xkLGUpfSksdC5zdWJzY3JpYmUoMCxmdW5jdGlvbihzKXt2YXIgVixoLHk9cy5yYXdMb2dzRXZlbnQsTD1zLm1lc3NhZ2VDb250ZXh0LHg9TD09PXZvaWQgMD92b2lkIDA6TCxJPXMuc2F2ZWRDb21tb25Db250ZXh0LHY9ST09PXZvaWQgMD92b2lkIDA6SSx6PXMuZG9tYWluQ29udGV4dCxIPWhiKHkuZGF0ZSksQT1jLmZpbmRUcmFja2VkU2Vzc2lvbihIKTtpZighKCFBJiYoIVouc2VuZExvZ3NBZnRlclNlc3Npb25FeHBpcmF0aW9ufHwhYy5maW5kVHJhY2tlZFNlc3Npb24oSCx7cmV0dXJuSW5hY3RpdmU6ITB9KSkpKXt2YXIgWWw9dnx8aSgpLEdsPVdjKHtzZXJ2aWNlOlouc2VydmljZSxzZXNzaW9uX2lkOkE/QS5pZDp2b2lkIDAsdXNyOndaKFlsLnVzZXIpP3ZvaWQgMDpZbC51c2VyLHZpZXc6WWwudmlld30sWWwuY29udGV4dCxNZChIKSx5LHgpOygoVj1aLmJlZm9yZVNlbmQpPT09bnVsbHx8Vj09PXZvaWQgMD92b2lkIDA6Vi5jYWxsKFosR2wseikpPT09ITF8fEdsLm9yaWdpbiE9PU5sLkFHRU5UJiYoKGg9b1tHbC5zdGF0dXNdKSE9PW51bGwmJmghPT12b2lkIDA/aDpvLmN1c3RvbSkuaXNMaW1pdFJlYWNoZWQoKXx8dC5ub3RpZnkoMSxHbCl9fSl9dmFyICRuLE1vPSgkbj17fSwkblttbC5sb2ddPXcuaW5mbywkblttbC5kZWJ1Z109dy5kZWJ1ZywkblttbC5pbmZvXT13LmluZm8sJG5bbWwud2Fybl09dy53YXJuLCRuW21sLmVycm9yXT13LmVycm9yLCRuKTtmdW5jdGlvbiBUbyhjLFope3ZhciB0PVpvKGMuZm9yd2FyZENvbnNvbGVMb2dzKS5zdWJzY3JpYmUoZnVuY3Rpb24oaSl7dmFyIGU9e3Jhd0xvZ3NFdmVudDp7ZGF0ZTp4bigpLG1lc3NhZ2U6aS5tZXNzYWdlLG9yaWdpbjpObC5DT05TT0xFLGVycm9yOmkuZXJyb3ImJlVkKGkuZXJyb3IpLHN0YXR1czpNb1tpLmFwaV19LGRvbWFpbkNvbnRleHQ6e2hhbmRsaW5nU3RhY2s6aS5oYW5kbGluZ1N0YWNrfX07Wi5ub3RpZnkoMCxlKX0pO3JldHVybntzdG9wOmZ1bmN0aW9uKCl7dC51bnN1YnNjcmliZSgpfX19ZnVuY3Rpb24gQ28oYyxaKXt2YXIgdD1kMChjLGMuZm9yd2FyZFJlcG9ydHMpLnN1YnNjcmliZShmdW5jdGlvbihpKXt2YXIgZT1pLm1lc3NhZ2UsRyxvPWkub3JpZ2luYWxFcnJvci50eXBlPT09ImRlcHJlY2F0aW9uIj93Lndhcm46dy5lcnJvcjtvPT09dy5lcnJvcj9HPVVkKGkpOmkuc3RhY2smJihlKz0iIEZvdW5kIGluICIuY29uY2F0KF9HKGkuc3RhY2spKSksWi5ub3RpZnkoMCx7cmF3TG9nc0V2ZW50OntkYXRlOnhuKCksbWVzc2FnZTplLG9yaWdpbjpObC5SRVBPUlQsZXJyb3I6RyxzdGF0dXM6b319KX0pO3JldHVybntzdG9wOmZ1bmN0aW9uKCl7dC51bnN1YnNjcmliZSgpfX19ZnVuY3Rpb24gd28oYyxaKXtpZighYy5mb3J3YXJkRXJyb3JzVG9Mb2dzKXJldHVybntzdG9wOklufTt2YXIgdD1PMChjKS5zdWJzY3JpYmUoZnVuY3Rpb24oRyl7Ry5zdGF0ZT09PSJjb21wbGV0ZSImJmUoInhociIsRyl9KSxpPVBpKCkuc3Vic2NyaWJlKGZ1bmN0aW9uKEcpe0cuc3RhdGU9PT0icmVzb2x2ZSImJmUoImZldGNoIixHKX0pO2Z1bmN0aW9uIGUoRyxvKXshYy5pc0ludGFrZVVybChvLnVybCkmJihFbyhvKXx8Tmkoby5zdGF0dXMpKSYmKCJ4aHIiaW4gbz9QbyhvLnhocixjLHMpOm8ucmVzcG9uc2U/UW8oby5yZXNwb25zZSxjLHMpOm8uZXJyb3ImJkJvKG8uZXJyb3IsYyxzKSk7ZnVuY3Rpb24gcyhWKXt2YXIgaD17aXNBYm9ydGVkOm8uaXNBYm9ydGVkLGhhbmRsaW5nU3RhY2s6by5oYW5kbGluZ1N0YWNrfTtaLm5vdGlmeSgwLHtyYXdMb2dzRXZlbnQ6e21lc3NhZ2U6IiIuY29uY2F0KGpvKEcpLCIgZXJyb3IgIikuY29uY2F0KG8ubWV0aG9kLCIgIikuY29uY2F0KG8udXJsKSxkYXRlOm8uc3RhcnRDbG9ja3MudGltZVN0YW1wLGVycm9yOntzdGFjazpWfHwiRmFpbGVkIHRvIGxvYWQiLGhhbmRsaW5nOnZvaWQgMH0saHR0cDp7bWV0aG9kOm8ubWV0aG9kLHN0YXR1c19jb2RlOm8uc3RhdHVzLHVybDpvLnVybH0sc3RhdHVzOncuZXJyb3Isb3JpZ2luOk5sLk5FVFdPUkt9LGRvbWFpbkNvbnRleHQ6aH0pfX1yZXR1cm57c3RvcDpmdW5jdGlvbigpe3QudW5zdWJzY3JpYmUoKSxpLnVuc3Vic2NyaWJlKCl9fX1mdW5jdGlvbiBQbyhjLFosdCl7dHlwZW9mIGMucmVzcG9uc2U9PSJzdHJpbmciP3Qob3QoYy5yZXNwb25zZSxaKSk6dChjLnJlc3BvbnNlKX1mdW5jdGlvbiBCbyhjLFosdCl7dChvdChPbihHbihjKSksWikpfWZ1bmN0aW9uIFFvKGMsWix0KXt2YXIgaT1LMChjKTshaXx8IWkuYm9keT90KCk6d2luZG93LlRleHREZWNvZGVyP0RvKGkuYm9keSxaLnJlcXVlc3RFcnJvclJlc3BvbnNlTGVuZ3RoTGltaXQsZnVuY3Rpb24oZSxHKXt0KGU/IlVuYWJsZSB0byByZXRyaWV2ZSByZXNwb25zZTogIi5jb25jYXQoZSk6Ryl9KTppLnRleHQoKS50aGVuKCQoZnVuY3Rpb24oZSl7cmV0dXJuIHQob3QoZSxaKSl9KSwkKGZ1bmN0aW9uKGUpe3JldHVybiB0KCJVbmFibGUgdG8gcmV0cmlldmUgcmVzcG9uc2U6ICIuY29uY2F0KGUpKX0pKX1mdW5jdGlvbiBFbyhjKXtyZXR1cm4gYy5zdGF0dXM9PT0wJiZjLnJlc3BvbnNlVHlwZSE9PSJvcGFxdWUifWZ1bmN0aW9uIG90KGMsWil7cmV0dXJuIGMubGVuZ3RoPloucmVxdWVzdEVycm9yUmVzcG9uc2VMZW5ndGhMaW1pdD8iIi5jb25jYXQoYy5zdWJzdHJpbmcoMCxaLnJlcXVlc3RFcnJvclJlc3BvbnNlTGVuZ3RoTGltaXQpLCIuLi4iKTpjfWZ1bmN0aW9uIGpvKGMpe3JldHVybiBjPT09InhociI/IlhIUiI6IkZldGNoIn1mdW5jdGlvbiBEbyhjLFosdCl7cG8oYyxmdW5jdGlvbihpLGUsRyl7aWYoaSl0KGkpO2Vsc2V7dmFyIG89bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGUpO0cmJihvKz0iLi4uIiksdCh2b2lkIDAsbyl9fSx7Ynl0ZXNMaW1pdDpaLGNvbGxlY3RTdHJlYW1Cb2R5OiEwfSl9ZnVuY3Rpb24gT28oYyxaKXtpZighYy5mb3J3YXJkRXJyb3JzVG9Mb2dzKXJldHVybntzdG9wOklufTt2YXIgdD1uZXcgc2wsaT1xRyh0KS5zdG9wLGU9dC5zdWJzY3JpYmUoZnVuY3Rpb24oRyl7Wi5ub3RpZnkoMCx7cmF3TG9nc0V2ZW50OnttZXNzYWdlOkcubWVzc2FnZSxkYXRlOkcuc3RhcnRDbG9ja3MudGltZVN0YW1wLGVycm9yOlVkKEcpLG9yaWdpbjpObC5TT1VSQ0Usc3RhdHVzOncuZXJyb3J9fSl9KTtyZXR1cm57c3RvcDpmdW5jdGlvbigpe2koKSxlLnVuc3Vic2NyaWJlKCl9fX12YXIgQW89ajAsQWw7ZnVuY3Rpb24gX28oYyl7ZnVuY3Rpb24gWih0LGksZSxHLG8pe3ZhciBzPVdjKGkuZ2V0Q29udGV4dCgpLHQuY29udGV4dCk7aWYoZ2QodC5zdGF0dXMsQmMuY29uc29sZSxpKSYmJG8odCxzKSxnZCh0LnN0YXR1cyxCYy5odHRwLGkpKXt2YXIgVj17cmF3TG9nc0V2ZW50OntkYXRlOm98fHhuKCksbWVzc2FnZTp0Lm1lc3NhZ2Usc3RhdHVzOnQuc3RhdHVzLG9yaWdpbjpObC5MT0dHRVJ9LG1lc3NhZ2VDb250ZXh0OnMsc2F2ZWRDb21tb25Db250ZXh0Okd9O2UmJihWLmRvbWFpbkNvbnRleHQ9e2hhbmRsaW5nU3RhY2s6ZX0pLGMubm90aWZ5KDAsVil9fXJldHVybntoYW5kbGVMb2c6Wn19dmFyIHFvPShBbD17fSxBbFt3Lm9rXT1tbC5kZWJ1ZyxBbFt3LmRlYnVnXT1tbC5kZWJ1ZyxBbFt3LmluZm9dPW1sLmluZm8sQWxbdy5ub3RpY2VdPW1sLmluZm8sQWxbdy53YXJuXT1tbC53YXJuLEFsW3cuZXJyb3JdPW1sLmVycm9yLEFsW3cuY3JpdGljYWxdPW1sLmVycm9yLEFsW3cuYWxlcnRdPW1sLmVycm9yLEFsW3cuZW1lcmddPW1sLmVycm9yLEFsKTtmdW5jdGlvbiAkbyhjLFope3ZhciB0PWMuc3RhdHVzLGk9Yy5tZXNzYWdlO0NuW3FvW3RdXS5jYWxsKGRuLGksWil9ZnVuY3Rpb24gbFgoYyxaLHQsaSxlKXt2YXIgRz13aShjLHtlbmRwb2ludDpjLmxvZ3NFbmRwb2ludEJ1aWxkZXIsZW5jb2RlcjprZCgpfSxjLnJlcGxpY2EmJntlbmRwb2ludDpjLnJlcGxpY2EubG9nc0VuZHBvaW50QnVpbGRlcixlbmNvZGVyOmtkKCl9LHQsaSxlLmV4cGlyZU9ic2VydmFibGUpO3JldHVybiBaLnN1YnNjcmliZSgxLGZ1bmN0aW9uKG8pe0cuYWRkKG8pfSksR31mdW5jdGlvbiBuWChjKXt2YXIgWj1pdCgpO2Muc3Vic2NyaWJlKDEsZnVuY3Rpb24odCl7Wi5zZW5kKCJsb2ciLHQpfSl9ZnVuY3Rpb24gY1goYyl7cmV0dXJue2dldDpmdW5jdGlvbihaKXt2YXIgdD1jLmZpbmRUcmFja2VkU2Vzc2lvbihaKTtpZih0KXJldHVybntzZXNzaW9uX2lkOnQuaWR9fX19ZnVuY3Rpb24gZFgoYyl7cmV0dXJuIGZ1bmN0aW9uKFope2Mubm90aWZ5KDAse3Jhd0xvZ3NFdmVudDp7bWVzc2FnZTpaLm1lc3NhZ2UsZGF0ZTpaLnN0YXJ0Q2xvY2tzLnRpbWVTdGFtcCxvcmlnaW46TmwuQUdFTlQsc3RhdHVzOncuZXJyb3J9fSksS2koIkVycm9yIHJlcG9ydGVkIHRvIGN1c3RvbWVyIix7ImVycm9yLm1lc3NhZ2UiOloubWVzc2FnZX0pfX1mdW5jdGlvbiBaWChjLFosdCxpLGUpe3ZhciBHPVgwKCJicm93c2VyLWxvZ3Mtc2RrIixaKTtHLnNldENvbnRleHRQcm92aWRlcihmdW5jdGlvbigpe3ZhciBMLHgsSSx2LHosSDtyZXR1cm57YXBwbGljYXRpb246e2lkOihMPU1kKCkpPT09bnVsbHx8TD09PXZvaWQgMD92b2lkIDA6TC5hcHBsaWNhdGlvbl9pZH0sc2Vzc2lvbjp7aWQ6KHg9ZS5maW5kVHJhY2tlZFNlc3Npb24oKSk9PT1udWxsfHx4PT09dm9pZCAwP3ZvaWQgMDp4LmlkfSx2aWV3OntpZDoodj0oST1NZCgpKT09PW51bGx8fEk9PT12b2lkIDA/dm9pZCAwOkkudmlldyk9PT1udWxsfHx2PT09dm9pZCAwP3ZvaWQgMDp2LmlkfSxhY3Rpb246e2lkOihIPSh6PU1kKCkpPT09bnVsbHx8ej09PXZvaWQgMD92b2lkIDA6ei51c2VyX2FjdGlvbik9PT1udWxsfHxIPT09dm9pZCAwP3ZvaWQgMDpILmlkfX19KTt2YXIgbz1bXTtpZih2ZCgpKXt2YXIgcz1pdCgpLFY9Ry5vYnNlcnZhYmxlLnN1YnNjcmliZShmdW5jdGlvbihMKXtyZXR1cm4gcy5zZW5kKCJpbnRlcm5hbF90ZWxlbWV0cnkiLEwpfSk7by5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIFYudW5zdWJzY3JpYmUoKX0pfWVsc2V7dmFyIGg9d2koWix7ZW5kcG9pbnQ6Wi5ydW1FbmRwb2ludEJ1aWxkZXIsZW5jb2RlcjprZCgpfSxaLnJlcGxpY2EmJntlbmRwb2ludDpaLnJlcGxpY2EucnVtRW5kcG9pbnRCdWlsZGVyLGVuY29kZXI6a2QoKX0sdCxpLGUuZXhwaXJlT2JzZXJ2YWJsZSk7by5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIGguc3RvcCgpfSk7dmFyIHk9Ry5vYnNlcnZhYmxlLnN1YnNjcmliZShmdW5jdGlvbihMKXtyZXR1cm4gaC5hZGQoTCxXMChaKSl9KTtvLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4geS51bnN1YnNjcmliZSgpfSl9cmV0dXJuIHAwKCkscjAoSm8oYykpLHt0ZWxlbWV0cnk6RyxzdG9wOmZ1bmN0aW9uKCl7by5mb3JFYWNoKGZ1bmN0aW9uKEwpe3JldHVybiBMKCl9KX19fWZ1bmN0aW9uIHRYKGMsWix0LGkpe3ZhciBlPW5ldyBBbyxHPVtdO2Uuc3Vic2NyaWJlKDEsZnVuY3Rpb24oSSl7cmV0dXJuIFNpKCJsb2dzIixJKX0pO3ZhciBvPWRYKGUpLHM9UDAoWiksVj1aLnNlc3Npb25TdG9yZVN0cmF0ZWd5VHlwZSYmIXZkKCkmJiFFaSgpP3ZvKFosaSk6SG8oWiksaD1aWChjLFosbyxzLFYpLnN0b3A7Ry5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIGgoKX0pLHdvKFosZSksT28oWixlKSxUbyhaLGUpLENvKFosZSk7dmFyIHk9X28oZSkuaGFuZGxlTG9nO2lmKFVvKFYsWixlLHQsbyksdmQoKSluWChlKTtlbHNle3ZhciBMPWxYKFosZSxvLHMsVikuc3RvcDtHLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gTCgpfSl9dmFyIHg9Y1goVik7cmV0dXJue2hhbmRsZUxvZzp5LGdldEludGVybmFsQ29udGV4dDp4LmdldCxzdG9wOmZ1bmN0aW9uKCl7Ry5mb3JFYWNoKGZ1bmN0aW9uKEkpe3JldHVybiBJKCl9KX19fXZhciBRYz1Gbyh0WCk7YzAoSm4oKSwiRERfTE9HUyIsUWMpLFFjLmluaXQoe2NsaWVudFRva2VuOiJwdWI0ODQ0ODk1YWMzMDA2N2FjMmM0YWFhMDI1ZGJjMzlkNyIsc2l0ZToidXMzLmRhdGFkb2docS5jb20iLGZvcndhcmRFcnJvcnNUb0xvZ3M6ITAsc2Vzc2lvblNhbXBsZVJhdGU6MTAwfSk7Y29uc3QgaGM9e0luZm86ImluZm8iLFdhcm46Indhcm4iLEVycm9yOiJlcnJvciJ9LFRkPWZ1bmN0aW9uKGMsWil7Y29uc29sZS5sb2coIiVjT1RUUGxheWVyOiAiK2MsImNvbG9yOiAjNTlhY2ZmIiksc3QoKT9wb3N0TWVzc2FnZSh7YWN0aW9uOiJsb2ciLHBheWxvYWQ6e3N0YXR1czpoYy5JbmZvLG1lc3NhZ2U6IldlYiBsb2c6ICIrYyxwYXlsb2FkOlp9fSk6UWMubG9nZ2VyLmluZm8oIldlYiBsb2c6ICIrYyxaKX0sWHQ9ZnVuY3Rpb24oYyxaKXtjb25zb2xlLmxvZygiJWNPVFRQbGF5ZXI6ICIrYywiY29sb3I6ICNiNTk0MDAiKSxzdCgpP3Bvc3RNZXNzYWdlKHthY3Rpb246ImxvZyIscGF5bG9hZDp7c3RhdHVzOmhjLldhcm4sbWVzc2FnZTpjLHBheWxvYWQ6Wn19KTpRYy5sb2dnZXIud2FybihjLFopfSxzbj1mdW5jdGlvbihjLFope2NvbnNvbGUuZXJyb3IoIk9UVFBsYXllcjogIitjKSxaJiZjb25zb2xlLmVycm9yKFopLHN0KCk/cG9zdE1lc3NhZ2Uoe2FjdGlvbjoibG9nIixwYXlsb2FkOntzdGF0dXM6aGMuRXJyb3IsbWVzc2FnZTpjLHBheWxvYWQ6Wn19KTpRYy5sb2dnZXIuZXJyb3IoYyxudWxsLFopfSx1WD1jPT57Y29uc3R7bWVzc2FnZTpaLHBheWxvYWQ6dCxlcnJvcjppfT1jO3N3aXRjaChjLnN0YXR1cyl7Y2FzZSBoYy5JbmZvOlRkKFosdCk7YnJlYWs7Y2FzZSBoYy5XYXJuOlh0KFosdCk7YnJlYWs7Y2FzZSBoYy5FcnJvcjpzbihaLGkpO2JyZWFrO2RlZmF1bHQ6WHQoIlVua25vd24gbG9nIHR5cGUiKTticmVha319LHN0PSgpPT50eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGU7dmFyIEVjPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzp0eXBlb2YgZ2xvYmFsPCJ1Ij9nbG9iYWw6dHlwZW9mIHNlbGY8InUiP3NlbGY6e30sQ2Q9e2V4cG9ydHM6e319Oy8qKgogKiBAbGljZW5zZQogKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+CiAqIENvcHlyaWdodCBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL29wZW5qc2Yub3JnLz4KICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPgogKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPgogKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnMKICovQ2QuZXhwb3J0cyxmdW5jdGlvbihjLFopeyhmdW5jdGlvbigpe3ZhciB0LGk9IjQuMTcuMjEiLGU9MjAwLEc9IlVuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLiIsbz0iRXhwZWN0ZWQgYSBmdW5jdGlvbiIscz0iSW52YWxpZCBgdmFyaWFibGVgIG9wdGlvbiBwYXNzZWQgaW50byBgXy50ZW1wbGF0ZWAiLFY9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iLGg9NTAwLHk9Il9fbG9kYXNoX3BsYWNlaG9sZGVyX18iLEw9MSx4PTIsST00LHY9MSx6PTIsSD0xLEE9MixZbD00LEdsPTgsWm49MTYsXz0zMixybD02NCxNPTEyOCx6bD0yNTYsamM9NTEyLHB0PTMwLEdYPSIuLi4iLG9YPTgwMCxYWD0xNixuZT0xLHNYPTIscFg9MyxsYz0xLzAsS249OTAwNzE5OTI1NDc0MDk5MSxXWD0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsd2Q9TmFOLHRuPTQyOTQ5NjcyOTUsclg9dG4tMSxoWD10bj4+PjEsVlg9W1siYXJ5IixNXSxbImJpbmQiLEhdLFsiYmluZEtleSIsQV0sWyJjdXJyeSIsR2xdLFsiY3VycnlSaWdodCIsWm5dLFsiZmxpcCIsamNdLFsicGFydGlhbCIsX10sWyJwYXJ0aWFsUmlnaHQiLHJsXSxbInJlYXJnIix6bF1dLFZjPSJbb2JqZWN0IEFyZ3VtZW50c10iLFBkPSJbb2JqZWN0IEFycmF5XSIseVg9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLERjPSJbb2JqZWN0IEJvb2xlYW5dIixPYz0iW29iamVjdCBEYXRlXSIsUlg9IltvYmplY3QgRE9NRXhjZXB0aW9uXSIsQmQ9IltvYmplY3QgRXJyb3JdIixRZD0iW29iamVjdCBGdW5jdGlvbl0iLGNlPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsX2w9IltvYmplY3QgTWFwXSIsQWM9IltvYmplY3QgTnVtYmVyXSIsTFg9IltvYmplY3QgTnVsbF0iLHBuPSJbb2JqZWN0IE9iamVjdF0iLGRlPSJbb2JqZWN0IFByb21pc2VdIixZWD0iW29iamVjdCBQcm94eV0iLF9jPSJbb2JqZWN0IFJlZ0V4cF0iLHFsPSJbb2JqZWN0IFNldF0iLHFjPSJbb2JqZWN0IFN0cmluZ10iLEVkPSJbb2JqZWN0IFN5bWJvbF0iLFNYPSJbb2JqZWN0IFVuZGVmaW5lZF0iLCRjPSJbb2JqZWN0IFdlYWtNYXBdIix4WD0iW29iamVjdCBXZWFrU2V0XSIsbGQ9IltvYmplY3QgQXJyYXlCdWZmZXJdIix5Yz0iW29iamVjdCBEYXRhVmlld10iLFd0PSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iLHJ0PSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iLGh0PSJbb2JqZWN0IEludDhBcnJheV0iLFZ0PSJbb2JqZWN0IEludDE2QXJyYXldIix5dD0iW29iamVjdCBJbnQzMkFycmF5XSIsUnQ9IltvYmplY3QgVWludDhBcnJheV0iLEx0PSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsWXQ9IltvYmplY3QgVWludDE2QXJyYXldIixTdD0iW29iamVjdCBVaW50MzJBcnJheV0iLGZYPS9cYl9fcCBcKz0gJyc7L2csSlg9L1xiKF9fcCBcKz0pICcnIFwrL2csSVg9LyhfX2VcKC4qP1wpfFxiX190XCkpIFwrXG4nJzsvZyxaZT0vJig/OmFtcHxsdHxndHxxdW90fCMzOSk7L2csdGU9L1smPD4iJ10vZyxLWD1SZWdFeHAoWmUuc291cmNlKSxGWD1SZWdFeHAodGUuc291cmNlKSxOWD0vPCUtKFtcc1xTXSs/KSU+L2cselg9LzwlKFtcc1xTXSs/KSU+L2csdWU9LzwlPShbXHNcU10rPyklPi9nLHZYPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLEhYPS9eXHcqJC8sa1g9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2cseHQ9L1tcXF4kLiorPygpW1xde318XS9nLGdYPVJlZ0V4cCh4dC5zb3VyY2UpLGZ0PS9eXHMrLyxVWD0vXHMvLE1YPS9ceyg/OlxuXC9cKiBcW3dyYXBwZWQgd2l0aCAuK1xdIFwqXC8pP1xuPy8sVFg9L1x7XG5cL1wqIFxbd3JhcHBlZCB3aXRoICguKylcXSBcKi8sQ1g9Lyw/ICYgLyx3WD0vW15ceDAwLVx4MmZceDNhLVx4NDBceDViLVx4NjBceDdiLVx4N2ZdKy9nLFBYPS9bKCk9LHt9XFtcXVwvXHNdLyxCWD0vXFwoXFwpPy9nLFFYPS9cJFx7KFteXFx9XSooPzpcXC5bXlxcfV0qKSopXH0vZyxpZT0vXHcqJC8sRVg9L15bLStdMHhbMC05YS1mXSskL2ksalg9L14wYlswMV0rJC9pLERYPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLE9YPS9eMG9bMC03XSskL2ksQVg9L14oPzowfFsxLTldXGQqKSQvLF9YPS9bXHhjMC1ceGQ2XHhkOC1ceGY2XHhmOC1ceGZmXHUwMTAwLVx1MDE3Zl0vZyxqZD0vKCReKS8scVg9L1snXG5cclx1MjAyOFx1MjAyOVxcXS9nLERkPSJcXHVkODAwLVxcdWRmZmYiLCRYPSJcXHUwMzAwLVxcdTAzNmYiLGxzPSJcXHVmZTIwLVxcdWZlMmYiLG5zPSJcXHUyMGQwLVxcdTIwZmYiLGVlPSRYK2xzK25zLG1lPSJcXHUyNzAwLVxcdTI3YmYiLGFlPSJhLXpcXHhkZi1cXHhmNlxceGY4LVxceGZmIixjcz0iXFx4YWNcXHhiMVxceGQ3XFx4ZjciLGRzPSJcXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHhiZiIsWnM9IlxcdTIwMDAtXFx1MjA2ZiIsdHM9IiBcXHRcXHgwYlxcZlxceGEwXFx1ZmVmZlxcblxcclxcdTIwMjhcXHUyMDI5XFx1MTY4MFxcdTE4MGVcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwYVxcdTIwMmZcXHUyMDVmXFx1MzAwMCIsYmU9IkEtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGUiLEdlPSJcXHVmZTBlXFx1ZmUwZiIsb2U9Y3MrZHMrWnMrdHMsSnQ9Ilsn4oCZXSIsdXM9IlsiK0RkKyJdIixYZT0iWyIrb2UrIl0iLE9kPSJbIitlZSsiXSIsc2U9IlxcZCsiLGlzPSJbIittZSsiXSIscGU9IlsiK2FlKyJdIixXZT0iW14iK0RkK29lK3NlK21lK2FlK2JlKyJdIixJdD0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixlcz0iKD86IitPZCsifCIrSXQrIikiLHJlPSJbXiIrRGQrIl0iLEt0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixGdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsUmM9IlsiK2JlKyJdIixoZT0iXFx1MjAwZCIsVmU9Iig/OiIrcGUrInwiK1dlKyIpIixtcz0iKD86IitSYysifCIrV2UrIikiLHllPSIoPzoiK0p0KyIoPzpkfGxsfG18cmV8c3x0fHZlKSk/IixSZT0iKD86IitKdCsiKD86RHxMTHxNfFJFfFN8VHxWRSkpPyIsTGU9ZXMrIj8iLFllPSJbIitHZSsiXT8iLGFzPSIoPzoiK2hlKyIoPzoiK1tyZSxLdCxGdF0uam9pbigifCIpKyIpIitZZStMZSsiKSoiLGJzPSJcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxkdGgpKD89XFxifFtBLVpfXSkiLEdzPSJcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxkVEgpKD89XFxifFthLXpfXSkiLFNlPVllK0xlK2FzLG9zPSIoPzoiK1tpcyxLdCxGdF0uam9pbigifCIpKyIpIitTZSxYcz0iKD86IitbcmUrT2QrIj8iLE9kLEt0LEZ0LHVzXS5qb2luKCJ8IikrIikiLHNzPVJlZ0V4cChKdCwiZyIpLHBzPVJlZ0V4cChPZCwiZyIpLE50PVJlZ0V4cChJdCsiKD89IitJdCsiKXwiK1hzK1NlLCJnIiksV3M9UmVnRXhwKFtSYysiPyIrcGUrIisiK3llKyIoPz0iK1tYZSxSYywiJCJdLmpvaW4oInwiKSsiKSIsbXMrIisiK1JlKyIoPz0iK1tYZSxSYytWZSwiJCJdLmpvaW4oInwiKSsiKSIsUmMrIj8iK1ZlKyIrIit5ZSxSYysiKyIrUmUsR3MsYnMsc2Usb3NdLmpvaW4oInwiKSwiZyIpLHJzPVJlZ0V4cCgiWyIraGUrRGQrZWUrR2UrIl0iKSxocz0vW2Etel1bQS1aXXxbQS1aXXsyfVthLXpdfFswLTldW2EtekEtWl18W2EtekEtWl1bMC05XXxbXmEtekEtWjAtOSBdLyxWcz1bIkFycmF5IiwiQnVmZmVyIiwiRGF0YVZpZXciLCJEYXRlIiwiRXJyb3IiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiLCJGdW5jdGlvbiIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiTWFwIiwiTWF0aCIsIk9iamVjdCIsIlByb21pc2UiLCJSZWdFeHAiLCJTZXQiLCJTdHJpbmciLCJTeW1ib2wiLCJUeXBlRXJyb3IiLCJVaW50OEFycmF5IiwiVWludDhDbGFtcGVkQXJyYXkiLCJVaW50MTZBcnJheSIsIlVpbnQzMkFycmF5IiwiV2Vha01hcCIsIl8iLCJjbGVhclRpbWVvdXQiLCJpc0Zpbml0ZSIsInBhcnNlSW50Iiwic2V0VGltZW91dCJdLHlzPS0xLGRsPXt9O2RsW1d0XT1kbFtydF09ZGxbaHRdPWRsW1Z0XT1kbFt5dF09ZGxbUnRdPWRsW0x0XT1kbFtZdF09ZGxbU3RdPSEwLGRsW1ZjXT1kbFtQZF09ZGxbbGRdPWRsW0RjXT1kbFt5Y109ZGxbT2NdPWRsW0JkXT1kbFtRZF09ZGxbX2xdPWRsW0FjXT1kbFtwbl09ZGxbX2NdPWRsW3FsXT1kbFtxY109ZGxbJGNdPSExO3ZhciBjbD17fTtjbFtWY109Y2xbUGRdPWNsW2xkXT1jbFt5Y109Y2xbRGNdPWNsW09jXT1jbFtXdF09Y2xbcnRdPWNsW2h0XT1jbFtWdF09Y2xbeXRdPWNsW19sXT1jbFtBY109Y2xbcG5dPWNsW19jXT1jbFtxbF09Y2xbcWNdPWNsW0VkXT1jbFtSdF09Y2xbTHRdPWNsW1l0XT1jbFtTdF09ITAsY2xbQmRdPWNsW1FkXT1jbFskY109ITE7dmFyIFJzPXvDgDoiQSIsw4E6IkEiLMOCOiJBIizDgzoiQSIsw4Q6IkEiLMOFOiJBIizDoDoiYSIsw6E6ImEiLMOiOiJhIizDozoiYSIsw6Q6ImEiLMOlOiJhIizDhzoiQyIsw6c6ImMiLMOQOiJEIizDsDoiZCIsw4g6IkUiLMOJOiJFIizDijoiRSIsw4s6IkUiLMOoOiJlIizDqToiZSIsw6o6ImUiLMOrOiJlIizDjDoiSSIsw406IkkiLMOOOiJJIizDjzoiSSIsw6w6ImkiLMOtOiJpIizDrjoiaSIsw686ImkiLMOROiJOIizDsToibiIsw5I6Ik8iLMOTOiJPIizDlDoiTyIsw5U6Ik8iLMOWOiJPIizDmDoiTyIsw7I6Im8iLMOzOiJvIizDtDoibyIsw7U6Im8iLMO2OiJvIizDuDoibyIsw5k6IlUiLMOaOiJVIizDmzoiVSIsw5w6IlUiLMO5OiJ1IizDujoidSIsw7s6InUiLMO8OiJ1IizDnToiWSIsw706InkiLMO/OiJ5IizDhjoiQWUiLMOmOiJhZSIsw546IlRoIizDvjoidGgiLMOfOiJzcyIsxIA6IkEiLMSCOiJBIizEhDoiQSIsxIE6ImEiLMSDOiJhIizEhToiYSIsxIY6IkMiLMSIOiJDIizEijoiQyIsxIw6IkMiLMSHOiJjIizEiToiYyIsxIs6ImMiLMSNOiJjIizEjjoiRCIsxJA6IkQiLMSPOiJkIizEkToiZCIsxJI6IkUiLMSUOiJFIizEljoiRSIsxJg6IkUiLMSaOiJFIizEkzoiZSIsxJU6ImUiLMSXOiJlIizEmToiZSIsxJs6ImUiLMScOiJHIizEnjoiRyIsxKA6IkciLMSiOiJHIizEnToiZyIsxJ86ImciLMShOiJnIizEozoiZyIsxKQ6IkgiLMSmOiJIIizEpToiaCIsxKc6ImgiLMSoOiJJIizEqjoiSSIsxKw6IkkiLMSuOiJJIizEsDoiSSIsxKk6ImkiLMSrOiJpIizErToiaSIsxK86ImkiLMSxOiJpIizEtDoiSiIsxLU6ImoiLMS2OiJLIizEtzoiayIsxLg6ImsiLMS5OiJMIizEuzoiTCIsxL06IkwiLMS/OiJMIizFgToiTCIsxLo6ImwiLMS8OiJsIizEvjoibCIsxYA6ImwiLMWCOiJsIizFgzoiTiIsxYU6Ik4iLMWHOiJOIizFijoiTiIsxYQ6Im4iLMWGOiJuIizFiDoibiIsxYs6Im4iLMWMOiJPIizFjjoiTyIsxZA6Ik8iLMWNOiJvIizFjzoibyIsxZE6Im8iLMWUOiJSIizFljoiUiIsxZg6IlIiLMWVOiJyIizFlzoiciIsxZk6InIiLMWaOiJTIizFnDoiUyIsxZ46IlMiLMWgOiJTIizFmzoicyIsxZ06InMiLMWfOiJzIizFoToicyIsxaI6IlQiLMWkOiJUIizFpjoiVCIsxaM6InQiLMWlOiJ0IizFpzoidCIsxag6IlUiLMWqOiJVIizFrDoiVSIsxa46IlUiLMWwOiJVIizFsjoiVSIsxak6InUiLMWrOiJ1IizFrToidSIsxa86InUiLMWxOiJ1IizFszoidSIsxbQ6IlciLMW1OiJ3IizFtjoiWSIsxbc6InkiLMW4OiJZIizFuToiWiIsxbs6IloiLMW9OiJaIizFujoieiIsxbw6InoiLMW+OiJ6IizEsjoiSUoiLMSzOiJpaiIsxZI6Ik9lIizFkzoib2UiLMWJOiInbiIsxb86InMifSxMcz17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0sWXM9eyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiYjMzk7IjoiJyJ9LFNzPXsiXFwiOiJcXCIsIiciOiInIiwiXG4iOiJuIiwiXHIiOiJyIiwiXHUyMDI4IjoidTIwMjgiLCJcdTIwMjkiOiJ1MjAyOSJ9LHhzPXBhcnNlRmxvYXQsZnM9cGFyc2VJbnQseGU9dHlwZW9mIEVjPT0ib2JqZWN0IiYmRWMmJkVjLk9iamVjdD09PU9iamVjdCYmRWMsSnM9dHlwZW9mIHNlbGY9PSJvYmplY3QiJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixobD14ZXx8SnN8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksenQ9WiYmIVoubm9kZVR5cGUmJlosbmM9enQmJiEwJiZjJiYhYy5ub2RlVHlwZSYmYyxmZT1uYyYmbmMuZXhwb3J0cz09PXp0LHZ0PWZlJiZ4ZS5wcm9jZXNzLFRsPWZ1bmN0aW9uKCl7dHJ5e3ZhciBXPW5jJiZuYy5yZXF1aXJlJiZuYy5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIFd8fHZ0JiZ2dC5iaW5kaW5nJiZ2dC5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2h7fX0oKSxKZT1UbCYmVGwuaXNBcnJheUJ1ZmZlcixJZT1UbCYmVGwuaXNEYXRlLEtlPVRsJiZUbC5pc01hcCxGZT1UbCYmVGwuaXNSZWdFeHAsTmU9VGwmJlRsLmlzU2V0LHplPVRsJiZUbC5pc1R5cGVkQXJyYXk7ZnVuY3Rpb24gdmwoVyxZLFIpe3N3aXRjaChSLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBXLmNhbGwoWSk7Y2FzZSAxOnJldHVybiBXLmNhbGwoWSxSWzBdKTtjYXNlIDI6cmV0dXJuIFcuY2FsbChZLFJbMF0sUlsxXSk7Y2FzZSAzOnJldHVybiBXLmNhbGwoWSxSWzBdLFJbMV0sUlsyXSl9cmV0dXJuIFcuYXBwbHkoWSxSKX1mdW5jdGlvbiBJcyhXLFksUixGKXtmb3IodmFyIFQ9LTEsTz1XPT1udWxsPzA6Vy5sZW5ndGg7KytUPE87KXt2YXIgb2w9V1tUXTtZKEYsb2wsUihvbCksVyl9cmV0dXJuIEZ9ZnVuY3Rpb24gQ2woVyxZKXtmb3IodmFyIFI9LTEsRj1XPT1udWxsPzA6Vy5sZW5ndGg7KytSPEYmJlkoV1tSXSxSLFcpIT09ITE7KTtyZXR1cm4gV31mdW5jdGlvbiBLcyhXLFkpe2Zvcih2YXIgUj1XPT1udWxsPzA6Vy5sZW5ndGg7Ui0tJiZZKFdbUl0sUixXKSE9PSExOyk7cmV0dXJuIFd9ZnVuY3Rpb24gdmUoVyxZKXtmb3IodmFyIFI9LTEsRj1XPT1udWxsPzA6Vy5sZW5ndGg7KytSPEY7KWlmKCFZKFdbUl0sUixXKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBGbihXLFkpe2Zvcih2YXIgUj0tMSxGPVc9PW51bGw/MDpXLmxlbmd0aCxUPTAsTz1bXTsrK1I8Rjspe3ZhciBvbD1XW1JdO1kob2wsUixXKSYmKE9bVCsrXT1vbCl9cmV0dXJuIE99ZnVuY3Rpb24gQWQoVyxZKXt2YXIgUj1XPT1udWxsPzA6Vy5sZW5ndGg7cmV0dXJuISFSJiZMYyhXLFksMCk+LTF9ZnVuY3Rpb24gSHQoVyxZLFIpe2Zvcih2YXIgRj0tMSxUPVc9PW51bGw/MDpXLmxlbmd0aDsrK0Y8VDspaWYoUihZLFdbRl0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFpsKFcsWSl7Zm9yKHZhciBSPS0xLEY9Vz09bnVsbD8wOlcubGVuZ3RoLFQ9QXJyYXkoRik7KytSPEY7KVRbUl09WShXW1JdLFIsVyk7cmV0dXJuIFR9ZnVuY3Rpb24gTm4oVyxZKXtmb3IodmFyIFI9LTEsRj1ZLmxlbmd0aCxUPVcubGVuZ3RoOysrUjxGOylXW1QrUl09WVtSXTtyZXR1cm4gV31mdW5jdGlvbiBrdChXLFksUixGKXt2YXIgVD0tMSxPPVc9PW51bGw/MDpXLmxlbmd0aDtmb3IoRiYmTyYmKFI9V1srK1RdKTsrK1Q8TzspUj1ZKFIsV1tUXSxULFcpO3JldHVybiBSfWZ1bmN0aW9uIEZzKFcsWSxSLEYpe3ZhciBUPVc9PW51bGw/MDpXLmxlbmd0aDtmb3IoRiYmVCYmKFI9V1stLVRdKTtULS07KVI9WShSLFdbVF0sVCxXKTtyZXR1cm4gUn1mdW5jdGlvbiBndChXLFkpe2Zvcih2YXIgUj0tMSxGPVc9PW51bGw/MDpXLmxlbmd0aDsrK1I8RjspaWYoWShXW1JdLFIsVykpcmV0dXJuITA7cmV0dXJuITF9dmFyIE5zPVV0KCJsZW5ndGgiKTtmdW5jdGlvbiB6cyhXKXtyZXR1cm4gVy5zcGxpdCgiIil9ZnVuY3Rpb24gdnMoVyl7cmV0dXJuIFcubWF0Y2god1gpfHxbXX1mdW5jdGlvbiBIZShXLFksUil7dmFyIEY7cmV0dXJuIFIoVyxmdW5jdGlvbihULE8sb2wpe2lmKFkoVCxPLG9sKSlyZXR1cm4gRj1PLCExfSksRn1mdW5jdGlvbiBfZChXLFksUixGKXtmb3IodmFyIFQ9Vy5sZW5ndGgsTz1SKyhGPzE6LTEpO0Y/Ty0tOisrTzxUOylpZihZKFdbT10sTyxXKSlyZXR1cm4gTztyZXR1cm4tMX1mdW5jdGlvbiBMYyhXLFksUil7cmV0dXJuIFk9PT1ZP0VzKFcsWSxSKTpfZChXLGtlLFIpfWZ1bmN0aW9uIEhzKFcsWSxSLEYpe2Zvcih2YXIgVD1SLTEsTz1XLmxlbmd0aDsrK1Q8TzspaWYoRihXW1RdLFkpKXJldHVybiBUO3JldHVybi0xfWZ1bmN0aW9uIGtlKFcpe3JldHVybiBXIT09V31mdW5jdGlvbiBnZShXLFkpe3ZhciBSPVc9PW51bGw/MDpXLmxlbmd0aDtyZXR1cm4gUj9UdChXLFkpL1I6d2R9ZnVuY3Rpb24gVXQoVyl7cmV0dXJuIGZ1bmN0aW9uKFkpe3JldHVybiBZPT1udWxsP3Q6WVtXXX19ZnVuY3Rpb24gTXQoVyl7cmV0dXJuIGZ1bmN0aW9uKFkpe3JldHVybiBXPT1udWxsP3Q6V1tZXX19ZnVuY3Rpb24gVWUoVyxZLFIsRixUKXtyZXR1cm4gVChXLGZ1bmN0aW9uKE8sb2wsbmwpe1I9Rj8oRj0hMSxPKTpZKFIsTyxvbCxubCl9KSxSfWZ1bmN0aW9uIGtzKFcsWSl7dmFyIFI9Vy5sZW5ndGg7Zm9yKFcuc29ydChZKTtSLS07KVdbUl09V1tSXS52YWx1ZTtyZXR1cm4gV31mdW5jdGlvbiBUdChXLFkpe2Zvcih2YXIgUixGPS0xLFQ9Vy5sZW5ndGg7KytGPFQ7KXt2YXIgTz1ZKFdbRl0pO08hPT10JiYoUj1SPT09dD9POlIrTyl9cmV0dXJuIFJ9ZnVuY3Rpb24gQ3QoVyxZKXtmb3IodmFyIFI9LTEsRj1BcnJheShXKTsrK1I8VzspRltSXT1ZKFIpO3JldHVybiBGfWZ1bmN0aW9uIGdzKFcsWSl7cmV0dXJuIFpsKFksZnVuY3Rpb24oUil7cmV0dXJuW1IsV1tSXV19KX1mdW5jdGlvbiBNZShXKXtyZXR1cm4gVyYmVy5zbGljZSgwLFBlKFcpKzEpLnJlcGxhY2UoZnQsIiIpfWZ1bmN0aW9uIEhsKFcpe3JldHVybiBmdW5jdGlvbihZKXtyZXR1cm4gVyhZKX19ZnVuY3Rpb24gd3QoVyxZKXtyZXR1cm4gWmwoWSxmdW5jdGlvbihSKXtyZXR1cm4gV1tSXX0pfWZ1bmN0aW9uIG5kKFcsWSl7cmV0dXJuIFcuaGFzKFkpfWZ1bmN0aW9uIFRlKFcsWSl7Zm9yKHZhciBSPS0xLEY9Vy5sZW5ndGg7KytSPEYmJkxjKFksV1tSXSwwKT4tMTspO3JldHVybiBSfWZ1bmN0aW9uIENlKFcsWSl7Zm9yKHZhciBSPVcubGVuZ3RoO1ItLSYmTGMoWSxXW1JdLDApPi0xOyk7cmV0dXJuIFJ9ZnVuY3Rpb24gVXMoVyxZKXtmb3IodmFyIFI9Vy5sZW5ndGgsRj0wO1ItLTspV1tSXT09PVkmJisrRjtyZXR1cm4gRn12YXIgTXM9TXQoUnMpLFRzPU10KExzKTtmdW5jdGlvbiBDcyhXKXtyZXR1cm4iXFwiK1NzW1ddfWZ1bmN0aW9uIHdzKFcsWSl7cmV0dXJuIFc9PW51bGw/dDpXW1ldfWZ1bmN0aW9uIFljKFcpe3JldHVybiBycy50ZXN0KFcpfWZ1bmN0aW9uIFBzKFcpe3JldHVybiBocy50ZXN0KFcpfWZ1bmN0aW9uIEJzKFcpe2Zvcih2YXIgWSxSPVtdOyEoWT1XLm5leHQoKSkuZG9uZTspUi5wdXNoKFkudmFsdWUpO3JldHVybiBSfWZ1bmN0aW9uIFB0KFcpe3ZhciBZPS0xLFI9QXJyYXkoVy5zaXplKTtyZXR1cm4gVy5mb3JFYWNoKGZ1bmN0aW9uKEYsVCl7UlsrK1ldPVtULEZdfSksUn1mdW5jdGlvbiB3ZShXLFkpe3JldHVybiBmdW5jdGlvbihSKXtyZXR1cm4gVyhZKFIpKX19ZnVuY3Rpb24gem4oVyxZKXtmb3IodmFyIFI9LTEsRj1XLmxlbmd0aCxUPTAsTz1bXTsrK1I8Rjspe3ZhciBvbD1XW1JdOyhvbD09PVl8fG9sPT09eSkmJihXW1JdPXksT1tUKytdPVIpfXJldHVybiBPfWZ1bmN0aW9uIHFkKFcpe3ZhciBZPS0xLFI9QXJyYXkoVy5zaXplKTtyZXR1cm4gVy5mb3JFYWNoKGZ1bmN0aW9uKEYpe1JbKytZXT1GfSksUn1mdW5jdGlvbiBRcyhXKXt2YXIgWT0tMSxSPUFycmF5KFcuc2l6ZSk7cmV0dXJuIFcuZm9yRWFjaChmdW5jdGlvbihGKXtSWysrWV09W0YsRl19KSxSfWZ1bmN0aW9uIEVzKFcsWSxSKXtmb3IodmFyIEY9Ui0xLFQ9Vy5sZW5ndGg7KytGPFQ7KWlmKFdbRl09PT1ZKXJldHVybiBGO3JldHVybi0xfWZ1bmN0aW9uIGpzKFcsWSxSKXtmb3IodmFyIEY9UisxO0YtLTspaWYoV1tGXT09PVkpcmV0dXJuIEY7cmV0dXJuIEZ9ZnVuY3Rpb24gU2MoVyl7cmV0dXJuIFljKFcpP09zKFcpOk5zKFcpfWZ1bmN0aW9uICRsKFcpe3JldHVybiBZYyhXKT9BcyhXKTp6cyhXKX1mdW5jdGlvbiBQZShXKXtmb3IodmFyIFk9Vy5sZW5ndGg7WS0tJiZVWC50ZXN0KFcuY2hhckF0KFkpKTspO3JldHVybiBZfXZhciBEcz1NdChZcyk7ZnVuY3Rpb24gT3MoVyl7Zm9yKHZhciBZPU50Lmxhc3RJbmRleD0wO050LnRlc3QoVyk7KSsrWTtyZXR1cm4gWX1mdW5jdGlvbiBBcyhXKXtyZXR1cm4gVy5tYXRjaChOdCl8fFtdfWZ1bmN0aW9uIF9zKFcpe3JldHVybiBXLm1hdGNoKFdzKXx8W119dmFyIHFzPWZ1bmN0aW9uIFcoWSl7WT1ZPT1udWxsP2hsOnhjLmRlZmF1bHRzKGhsLk9iamVjdCgpLFkseGMucGljayhobCxWcykpO3ZhciBSPVkuQXJyYXksRj1ZLkRhdGUsVD1ZLkVycm9yLE89WS5GdW5jdGlvbixvbD1ZLk1hdGgsbmw9WS5PYmplY3QsQnQ9WS5SZWdFeHAsJHM9WS5TdHJpbmcsd2w9WS5UeXBlRXJyb3IsJGQ9Ui5wcm90b3R5cGUsbHA9Ty5wcm90b3R5cGUsZmM9bmwucHJvdG90eXBlLGxaPVlbIl9fY29yZS1qc19zaGFyZWRfXyJdLG5aPWxwLnRvU3RyaW5nLGxsPWZjLmhhc093blByb3BlcnR5LG5wPTAsQmU9ZnVuY3Rpb24oKXt2YXIgbD0vW14uXSskLy5leGVjKGxaJiZsWi5rZXlzJiZsWi5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGw/IlN5bWJvbChzcmMpXzEuIitsOiIifSgpLGNaPWZjLnRvU3RyaW5nLGNwPW5aLmNhbGwobmwpLGRwPWhsLl8sWnA9QnQoIl4iK25aLmNhbGwobGwpLnJlcGxhY2UoeHQsIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksZFo9ZmU/WS5CdWZmZXI6dCx2bj1ZLlN5bWJvbCxaWj1ZLlVpbnQ4QXJyYXksUWU9ZFo/ZFouYWxsb2NVbnNhZmU6dCx0Wj13ZShubC5nZXRQcm90b3R5cGVPZixubCksRWU9bmwuY3JlYXRlLGplPWZjLnByb3BlcnR5SXNFbnVtZXJhYmxlLHVaPSRkLnNwbGljZSxEZT12bj92bi5pc0NvbmNhdFNwcmVhZGFibGU6dCxjZD12bj92bi5pdGVyYXRvcjp0LGNjPXZuP3ZuLnRvU3RyaW5nVGFnOnQsaVo9ZnVuY3Rpb24oKXt0cnl7dmFyIGw9aWMobmwsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIGwoe30sIiIse30pLGx9Y2F0Y2h7fX0oKSx0cD1ZLmNsZWFyVGltZW91dCE9PWhsLmNsZWFyVGltZW91dCYmWS5jbGVhclRpbWVvdXQsdXA9RiYmRi5ub3chPT1obC5EYXRlLm5vdyYmRi5ub3csaXA9WS5zZXRUaW1lb3V0IT09aGwuc2V0VGltZW91dCYmWS5zZXRUaW1lb3V0LGVaPW9sLmNlaWwsbVo9b2wuZmxvb3IsUXQ9bmwuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGVwPWRaP2RaLmlzQnVmZmVyOnQsT2U9WS5pc0Zpbml0ZSxtcD0kZC5qb2luLGFwPXdlKG5sLmtleXMsbmwpLFhsPW9sLm1heCxSbD1vbC5taW4sYnA9Ri5ub3csR3A9WS5wYXJzZUludCxBZT1vbC5yYW5kb20sb3A9JGQucmV2ZXJzZSxFdD1pYyhZLCJEYXRhVmlldyIpLGRkPWljKFksIk1hcCIpLGp0PWljKFksIlByb21pc2UiKSxKYz1pYyhZLCJTZXQiKSxaZD1pYyhZLCJXZWFrTWFwIiksdGQ9aWMobmwsImNyZWF0ZSIpLGFaPVpkJiZuZXcgWmQsSWM9e30sWHA9ZWMoRXQpLHNwPWVjKGRkKSxwcD1lYyhqdCksV3A9ZWMoSmMpLHJwPWVjKFpkKSxiWj12bj92bi5wcm90b3R5cGU6dCx1ZD1iWj9iWi52YWx1ZU9mOnQsX2U9Ylo/YloudG9TdHJpbmc6dDtmdW5jdGlvbiBhKGwpe2lmKHVsKGwpJiYhQyhsKSYmIShsIGluc3RhbmNlb2Ygaikpe2lmKGwgaW5zdGFuY2VvZiBQbClyZXR1cm4gbDtpZihsbC5jYWxsKGwsIl9fd3JhcHBlZF9fIikpcmV0dXJuIHFtKGwpfXJldHVybiBuZXcgUGwobCl9dmFyIEtjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbCgpe31yZXR1cm4gZnVuY3Rpb24obil7aWYoIXRsKG4pKXJldHVybnt9O2lmKEVlKXJldHVybiBFZShuKTtsLnByb3RvdHlwZT1uO3ZhciBkPW5ldyBsO3JldHVybiBsLnByb3RvdHlwZT10LGR9fSgpO2Z1bmN0aW9uIEdaKCl7fWZ1bmN0aW9uIFBsKGwsbil7dGhpcy5fX3dyYXBwZWRfXz1sLHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2NoYWluX189ISFuLHRoaXMuX19pbmRleF9fPTAsdGhpcy5fX3ZhbHVlc19fPXR9YS50ZW1wbGF0ZVNldHRpbmdzPXtlc2NhcGU6TlgsZXZhbHVhdGU6elgsaW50ZXJwb2xhdGU6dWUsdmFyaWFibGU6IiIsaW1wb3J0czp7XzphfX0sYS5wcm90b3R5cGU9R1oucHJvdG90eXBlLGEucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEsUGwucHJvdG90eXBlPUtjKEdaLnByb3RvdHlwZSksUGwucHJvdG90eXBlLmNvbnN0cnVjdG9yPVBsO2Z1bmN0aW9uIGoobCl7dGhpcy5fX3dyYXBwZWRfXz1sLHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2Rpcl9fPTEsdGhpcy5fX2ZpbHRlcmVkX189ITEsdGhpcy5fX2l0ZXJhdGVlc19fPVtdLHRoaXMuX190YWtlQ291bnRfXz10bix0aGlzLl9fdmlld3NfXz1bXX1mdW5jdGlvbiBocCgpe3ZhciBsPW5ldyBqKHRoaXMuX193cmFwcGVkX18pO3JldHVybiBsLl9fYWN0aW9uc19fPUpsKHRoaXMuX19hY3Rpb25zX18pLGwuX19kaXJfXz10aGlzLl9fZGlyX18sbC5fX2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX18sbC5fX2l0ZXJhdGVlc19fPUpsKHRoaXMuX19pdGVyYXRlZXNfXyksbC5fX3Rha2VDb3VudF9fPXRoaXMuX190YWtlQ291bnRfXyxsLl9fdmlld3NfXz1KbCh0aGlzLl9fdmlld3NfXyksbH1mdW5jdGlvbiBWcCgpe2lmKHRoaXMuX19maWx0ZXJlZF9fKXt2YXIgbD1uZXcgaih0aGlzKTtsLl9fZGlyX189LTEsbC5fX2ZpbHRlcmVkX189ITB9ZWxzZSBsPXRoaXMuY2xvbmUoKSxsLl9fZGlyX18qPS0xO3JldHVybiBsfWZ1bmN0aW9uIHlwKCl7dmFyIGw9dGhpcy5fX3dyYXBwZWRfXy52YWx1ZSgpLG49dGhpcy5fX2Rpcl9fLGQ9QyhsKSx1PW48MCxtPWQ/bC5sZW5ndGg6MCxiPXpXKDAsbSx0aGlzLl9fdmlld3NfXyksWD1iLnN0YXJ0LHA9Yi5lbmQscj1wLVgsUz11P3A6WC0xLGY9dGhpcy5fX2l0ZXJhdGVlc19fLEo9Zi5sZW5ndGgsSz0wLE49Umwocix0aGlzLl9fdGFrZUNvdW50X18pO2lmKCFkfHwhdSYmbT09ciYmTj09cilyZXR1cm4geW0obCx0aGlzLl9fYWN0aW9uc19fKTt2YXIgZz1bXTtsOmZvcig7ci0tJiZLPE47KXtTKz1uO2Zvcih2YXIgQj0tMSxVPWxbU107KytCPEo7KXt2YXIgRT1mW0JdLEQ9RS5pdGVyYXRlZSxVbD1FLnR5cGUsZmw9RChVKTtpZihVbD09c1gpVT1mbDtlbHNlIGlmKCFmbCl7aWYoVWw9PW5lKWNvbnRpbnVlIGw7YnJlYWsgbH19Z1tLKytdPVV9cmV0dXJuIGd9ai5wcm90b3R5cGU9S2MoR1oucHJvdG90eXBlKSxqLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1qO2Z1bmN0aW9uIGRjKGwpe3ZhciBuPS0xLGQ9bD09bnVsbD8wOmwubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytuPGQ7KXt2YXIgdT1sW25dO3RoaXMuc2V0KHVbMF0sdVsxXSl9fWZ1bmN0aW9uIFJwKCl7dGhpcy5fX2RhdGFfXz10ZD90ZChudWxsKTp7fSx0aGlzLnNpemU9MH1mdW5jdGlvbiBMcChsKXt2YXIgbj10aGlzLmhhcyhsKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bbF07cmV0dXJuIHRoaXMuc2l6ZS09bj8xOjAsbn1mdW5jdGlvbiBZcChsKXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKHRkKXt2YXIgZD1uW2xdO3JldHVybiBkPT09Vj90OmR9cmV0dXJuIGxsLmNhbGwobixsKT9uW2xdOnR9ZnVuY3Rpb24gU3AobCl7dmFyIG49dGhpcy5fX2RhdGFfXztyZXR1cm4gdGQ/bltsXSE9PXQ6bGwuY2FsbChuLGwpfWZ1bmN0aW9uIHhwKGwsbil7dmFyIGQ9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyhsKT8wOjEsZFtsXT10ZCYmbj09PXQ/VjpuLHRoaXN9ZGMucHJvdG90eXBlLmNsZWFyPVJwLGRjLnByb3RvdHlwZS5kZWxldGU9THAsZGMucHJvdG90eXBlLmdldD1ZcCxkYy5wcm90b3R5cGUuaGFzPVNwLGRjLnByb3RvdHlwZS5zZXQ9eHA7ZnVuY3Rpb24gV24obCl7dmFyIG49LTEsZD1sPT1udWxsPzA6bC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK248ZDspe3ZhciB1PWxbbl07dGhpcy5zZXQodVswXSx1WzFdKX19ZnVuY3Rpb24gZnAoKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfWZ1bmN0aW9uIEpwKGwpe3ZhciBuPXRoaXMuX19kYXRhX18sZD1vWihuLGwpO2lmKGQ8MClyZXR1cm4hMTt2YXIgdT1uLmxlbmd0aC0xO3JldHVybiBkPT11P24ucG9wKCk6dVouY2FsbChuLGQsMSksLS10aGlzLnNpemUsITB9ZnVuY3Rpb24gSXAobCl7dmFyIG49dGhpcy5fX2RhdGFfXyxkPW9aKG4sbCk7cmV0dXJuIGQ8MD90Om5bZF1bMV19ZnVuY3Rpb24gS3AobCl7cmV0dXJuIG9aKHRoaXMuX19kYXRhX18sbCk+LTF9ZnVuY3Rpb24gRnAobCxuKXt2YXIgZD10aGlzLl9fZGF0YV9fLHU9b1ooZCxsKTtyZXR1cm4gdTwwPygrK3RoaXMuc2l6ZSxkLnB1c2goW2wsbl0pKTpkW3VdWzFdPW4sdGhpc31Xbi5wcm90b3R5cGUuY2xlYXI9ZnAsV24ucHJvdG90eXBlLmRlbGV0ZT1KcCxXbi5wcm90b3R5cGUuZ2V0PUlwLFduLnByb3RvdHlwZS5oYXM9S3AsV24ucHJvdG90eXBlLnNldD1GcDtmdW5jdGlvbiBybihsKXt2YXIgbj0tMSxkPWw9PW51bGw/MDpsLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrbjxkOyl7dmFyIHU9bFtuXTt0aGlzLnNldCh1WzBdLHVbMV0pfX1mdW5jdGlvbiBOcCgpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IGRjLG1hcDpuZXcoZGR8fFduKSxzdHJpbmc6bmV3IGRjfX1mdW5jdGlvbiB6cChsKXt2YXIgbj1TWih0aGlzLGwpLmRlbGV0ZShsKTtyZXR1cm4gdGhpcy5zaXplLT1uPzE6MCxufWZ1bmN0aW9uIHZwKGwpe3JldHVybiBTWih0aGlzLGwpLmdldChsKX1mdW5jdGlvbiBIcChsKXtyZXR1cm4gU1oodGhpcyxsKS5oYXMobCl9ZnVuY3Rpb24ga3AobCxuKXt2YXIgZD1TWih0aGlzLGwpLHU9ZC5zaXplO3JldHVybiBkLnNldChsLG4pLHRoaXMuc2l6ZSs9ZC5zaXplPT11PzA6MSx0aGlzfXJuLnByb3RvdHlwZS5jbGVhcj1OcCxybi5wcm90b3R5cGUuZGVsZXRlPXpwLHJuLnByb3RvdHlwZS5nZXQ9dnAscm4ucHJvdG90eXBlLmhhcz1IcCxybi5wcm90b3R5cGUuc2V0PWtwO2Z1bmN0aW9uIFpjKGwpe3ZhciBuPS0xLGQ9bD09bnVsbD8wOmwubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBybjsrK248ZDspdGhpcy5hZGQobFtuXSl9ZnVuY3Rpb24gZ3AobCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGwsViksdGhpc31mdW5jdGlvbiBVcChsKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMobCl9WmMucHJvdG90eXBlLmFkZD1aYy5wcm90b3R5cGUucHVzaD1ncCxaYy5wcm90b3R5cGUuaGFzPVVwO2Z1bmN0aW9uIGxuKGwpe3ZhciBuPXRoaXMuX19kYXRhX189bmV3IFduKGwpO3RoaXMuc2l6ZT1uLnNpemV9ZnVuY3Rpb24gTXAoKXt0aGlzLl9fZGF0YV9fPW5ldyBXbix0aGlzLnNpemU9MH1mdW5jdGlvbiBUcChsKXt2YXIgbj10aGlzLl9fZGF0YV9fLGQ9bi5kZWxldGUobCk7cmV0dXJuIHRoaXMuc2l6ZT1uLnNpemUsZH1mdW5jdGlvbiBDcChsKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQobCl9ZnVuY3Rpb24gd3AobCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGwpfWZ1bmN0aW9uIFBwKGwsbil7dmFyIGQ9dGhpcy5fX2RhdGFfXztpZihkIGluc3RhbmNlb2YgV24pe3ZhciB1PWQuX19kYXRhX187aWYoIWRkfHx1Lmxlbmd0aDxlLTEpcmV0dXJuIHUucHVzaChbbCxuXSksdGhpcy5zaXplPSsrZC5zaXplLHRoaXM7ZD10aGlzLl9fZGF0YV9fPW5ldyBybih1KX1yZXR1cm4gZC5zZXQobCxuKSx0aGlzLnNpemU9ZC5zaXplLHRoaXN9bG4ucHJvdG90eXBlLmNsZWFyPU1wLGxuLnByb3RvdHlwZS5kZWxldGU9VHAsbG4ucHJvdG90eXBlLmdldD1DcCxsbi5wcm90b3R5cGUuaGFzPXdwLGxuLnByb3RvdHlwZS5zZXQ9UHA7ZnVuY3Rpb24gcWUobCxuKXt2YXIgZD1DKGwpLHU9IWQmJm1jKGwpLG09IWQmJiF1JiZNbihsKSxiPSFkJiYhdSYmIW0mJnZjKGwpLFg9ZHx8dXx8bXx8YixwPVg/Q3QobC5sZW5ndGgsJHMpOltdLHI9cC5sZW5ndGg7Zm9yKHZhciBTIGluIGwpKG58fGxsLmNhbGwobCxTKSkmJiEoWCYmKFM9PSJsZW5ndGgifHxtJiYoUz09Im9mZnNldCJ8fFM9PSJwYXJlbnQiKXx8YiYmKFM9PSJidWZmZXIifHxTPT0iYnl0ZUxlbmd0aCJ8fFM9PSJieXRlT2Zmc2V0Iil8fFJuKFMscikpKSYmcC5wdXNoKFMpO3JldHVybiBwfWZ1bmN0aW9uICRlKGwpe3ZhciBuPWwubGVuZ3RoO3JldHVybiBuP2xbWnUoMCxuLTEpXTp0fWZ1bmN0aW9uIEJwKGwsbil7cmV0dXJuIHhaKEpsKGwpLHRjKG4sMCxsLmxlbmd0aCkpfWZ1bmN0aW9uIFFwKGwpe3JldHVybiB4WihKbChsKSl9ZnVuY3Rpb24gRHQobCxuLGQpeyhkIT09dCYmIW5uKGxbbl0sZCl8fGQ9PT10JiYhKG4gaW4gbCkpJiZobihsLG4sZCl9ZnVuY3Rpb24gaWQobCxuLGQpe3ZhciB1PWxbbl07KCEobGwuY2FsbChsLG4pJiZubih1LGQpKXx8ZD09PXQmJiEobiBpbiBsKSkmJmhuKGwsbixkKX1mdW5jdGlvbiBvWihsLG4pe2Zvcih2YXIgZD1sLmxlbmd0aDtkLS07KWlmKG5uKGxbZF1bMF0sbikpcmV0dXJuIGQ7cmV0dXJuLTF9ZnVuY3Rpb24gRXAobCxuLGQsdSl7cmV0dXJuIEhuKGwsZnVuY3Rpb24obSxiLFgpe24odSxtLGQobSksWCl9KSx1fWZ1bmN0aW9uIGxtKGwsbil7cmV0dXJuIGwmJmVuKG4scGwobiksbCl9ZnVuY3Rpb24ganAobCxuKXtyZXR1cm4gbCYmZW4obixLbChuKSxsKX1mdW5jdGlvbiBobihsLG4sZCl7bj09Il9fcHJvdG9fXyImJmlaP2laKGwsbix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZCx3cml0YWJsZTohMH0pOmxbbl09ZH1mdW5jdGlvbiBPdChsLG4pe2Zvcih2YXIgZD0tMSx1PW4ubGVuZ3RoLG09Uih1KSxiPWw9PW51bGw7KytkPHU7KW1bZF09Yj90Okl1KGwsbltkXSk7cmV0dXJuIG19ZnVuY3Rpb24gdGMobCxuLGQpe3JldHVybiBsPT09bCYmKGQhPT10JiYobD1sPD1kP2w6ZCksbiE9PXQmJihsPWw+PW4/bDpuKSksbH1mdW5jdGlvbiBCbChsLG4sZCx1LG0sYil7dmFyIFgscD1uJkwscj1uJngsUz1uJkk7aWYoZCYmKFg9bT9kKGwsdSxtLGIpOmQobCkpLFghPT10KXJldHVybiBYO2lmKCF0bChsKSlyZXR1cm4gbDt2YXIgZj1DKGwpO2lmKGYpe2lmKFg9SFcobCksIXApcmV0dXJuIEpsKGwsWCl9ZWxzZXt2YXIgSj1MbChsKSxLPUo9PVFkfHxKPT1jZTtpZihNbihsKSlyZXR1cm4gWW0obCxwKTtpZihKPT1wbnx8Sj09VmN8fEsmJiFtKXtpZihYPXJ8fEs/e306UG0obCksIXApcmV0dXJuIHI/WVcobCxqcChYLGwpKTpMVyhsLGxtKFgsbCkpfWVsc2V7aWYoIWNsW0pdKXJldHVybiBtP2w6e307WD1rVyhsLEoscCl9fWJ8fChiPW5ldyBsbik7dmFyIE49Yi5nZXQobCk7aWYoTilyZXR1cm4gTjtiLnNldChsLFgpLHJhKGwpP2wuZm9yRWFjaChmdW5jdGlvbihVKXtYLmFkZChCbChVLG4sZCxVLGwsYikpfSk6cGEobCkmJmwuZm9yRWFjaChmdW5jdGlvbihVLEUpe1guc2V0KEUsQmwoVSxuLGQsRSxsLGIpKX0pO3ZhciBnPVM/cj9zdTpYdTpyP0tsOnBsLEI9Zj90OmcobCk7cmV0dXJuIENsKEJ8fGwsZnVuY3Rpb24oVSxFKXtCJiYoRT1VLFU9bFtFXSksaWQoWCxFLEJsKFUsbixkLEUsbCxiKSl9KSxYfWZ1bmN0aW9uIERwKGwpe3ZhciBuPXBsKGwpO3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gbm0oZCxsLG4pfX1mdW5jdGlvbiBubShsLG4sZCl7dmFyIHU9ZC5sZW5ndGg7aWYobD09bnVsbClyZXR1cm4hdTtmb3IobD1ubChsKTt1LS07KXt2YXIgbT1kW3VdLGI9blttXSxYPWxbbV07aWYoWD09PXQmJiEobSBpbiBsKXx8IWIoWCkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gY20obCxuLGQpe2lmKHR5cGVvZiBsIT0iZnVuY3Rpb24iKXRocm93IG5ldyB3bChvKTtyZXR1cm4gWGQoZnVuY3Rpb24oKXtsLmFwcGx5KHQsZCl9LG4pfWZ1bmN0aW9uIGVkKGwsbixkLHUpe3ZhciBtPS0xLGI9QWQsWD0hMCxwPWwubGVuZ3RoLHI9W10sUz1uLmxlbmd0aDtpZighcClyZXR1cm4gcjtkJiYobj1abChuLEhsKGQpKSksdT8oYj1IdCxYPSExKTpuLmxlbmd0aD49ZSYmKGI9bmQsWD0hMSxuPW5ldyBaYyhuKSk7bDpmb3IoOysrbTxwOyl7dmFyIGY9bFttXSxKPWQ9PW51bGw/ZjpkKGYpO2lmKGY9dXx8ZiE9PTA/ZjowLFgmJko9PT1KKXtmb3IodmFyIEs9UztLLS07KWlmKG5bS109PT1KKWNvbnRpbnVlIGw7ci5wdXNoKGYpfWVsc2UgYihuLEosdSl8fHIucHVzaChmKX1yZXR1cm4gcn12YXIgSG49SW0odW4pLGRtPUltKF90LCEwKTtmdW5jdGlvbiBPcChsLG4pe3ZhciBkPSEwO3JldHVybiBIbihsLGZ1bmN0aW9uKHUsbSxiKXtyZXR1cm4gZD0hIW4odSxtLGIpLGR9KSxkfWZ1bmN0aW9uIFhaKGwsbixkKXtmb3IodmFyIHU9LTEsbT1sLmxlbmd0aDsrK3U8bTspe3ZhciBiPWxbdV0sWD1uKGIpO2lmKFghPW51bGwmJihwPT09dD9YPT09WCYmIWdsKFgpOmQoWCxwKSkpdmFyIHA9WCxyPWJ9cmV0dXJuIHJ9ZnVuY3Rpb24gQXAobCxuLGQsdSl7dmFyIG09bC5sZW5ndGg7Zm9yKGQ9UChkKSxkPDAmJihkPS1kPm0/MDptK2QpLHU9dT09PXR8fHU+bT9tOlAodSksdTwwJiYodSs9bSksdT1kPnU/MDpWYSh1KTtkPHU7KWxbZCsrXT1uO3JldHVybiBsfWZ1bmN0aW9uIFptKGwsbil7dmFyIGQ9W107cmV0dXJuIEhuKGwsZnVuY3Rpb24odSxtLGIpe24odSxtLGIpJiZkLnB1c2godSl9KSxkfWZ1bmN0aW9uIFZsKGwsbixkLHUsbSl7dmFyIGI9LTEsWD1sLmxlbmd0aDtmb3IoZHx8KGQ9VVcpLG18fChtPVtdKTsrK2I8WDspe3ZhciBwPWxbYl07bj4wJiZkKHApP24+MT9WbChwLG4tMSxkLHUsbSk6Tm4obSxwKTp1fHwobVttLmxlbmd0aF09cCl9cmV0dXJuIG19dmFyIEF0PUttKCksdG09S20oITApO2Z1bmN0aW9uIHVuKGwsbil7cmV0dXJuIGwmJkF0KGwsbixwbCl9ZnVuY3Rpb24gX3QobCxuKXtyZXR1cm4gbCYmdG0obCxuLHBsKX1mdW5jdGlvbiBzWihsLG4pe3JldHVybiBGbihuLGZ1bmN0aW9uKGQpe3JldHVybiBMbihsW2RdKX0pfWZ1bmN0aW9uIHVjKGwsbil7bj1nbihuLGwpO2Zvcih2YXIgZD0wLHU9bi5sZW5ndGg7bCE9bnVsbCYmZDx1OylsPWxbbW4obltkKytdKV07cmV0dXJuIGQmJmQ9PXU/bDp0fWZ1bmN0aW9uIHVtKGwsbixkKXt2YXIgdT1uKGwpO3JldHVybiBDKGwpP3U6Tm4odSxkKGwpKX1mdW5jdGlvbiBTbChsKXtyZXR1cm4gbD09bnVsbD9sPT09dD9TWDpMWDpjYyYmY2MgaW4gbmwobCk/TlcobCk6UVcobCl9ZnVuY3Rpb24gcXQobCxuKXtyZXR1cm4gbD5ufWZ1bmN0aW9uIF9wKGwsbil7cmV0dXJuIGwhPW51bGwmJmxsLmNhbGwobCxuKX1mdW5jdGlvbiBxcChsLG4pe3JldHVybiBsIT1udWxsJiZuIGluIG5sKGwpfWZ1bmN0aW9uICRwKGwsbixkKXtyZXR1cm4gbD49UmwobixkKSYmbDxYbChuLGQpfWZ1bmN0aW9uICR0KGwsbixkKXtmb3IodmFyIHU9ZD9IdDpBZCxtPWxbMF0ubGVuZ3RoLGI9bC5sZW5ndGgsWD1iLHA9UihiKSxyPTEvMCxTPVtdO1gtLTspe3ZhciBmPWxbWF07WCYmbiYmKGY9WmwoZixIbChuKSkpLHI9UmwoZi5sZW5ndGgscikscFtYXT0hZCYmKG58fG0+PTEyMCYmZi5sZW5ndGg+PTEyMCk/bmV3IFpjKFgmJmYpOnR9Zj1sWzBdO3ZhciBKPS0xLEs9cFswXTtsOmZvcig7KytKPG0mJlMubGVuZ3RoPHI7KXt2YXIgTj1mW0pdLGc9bj9uKE4pOk47aWYoTj1kfHxOIT09MD9OOjAsIShLP25kKEssZyk6dShTLGcsZCkpKXtmb3IoWD1iOy0tWDspe3ZhciBCPXBbWF07aWYoIShCP25kKEIsZyk6dShsW1hdLGcsZCkpKWNvbnRpbnVlIGx9SyYmSy5wdXNoKGcpLFMucHVzaChOKX19cmV0dXJuIFN9ZnVuY3Rpb24gbFcobCxuLGQsdSl7cmV0dXJuIHVuKGwsZnVuY3Rpb24obSxiLFgpe24odSxkKG0pLGIsWCl9KSx1fWZ1bmN0aW9uIG1kKGwsbixkKXtuPWduKG4sbCksbD1qbShsLG4pO3ZhciB1PWw9PW51bGw/bDpsW21uKEVsKG4pKV07cmV0dXJuIHU9PW51bGw/dDp2bCh1LGwsZCl9ZnVuY3Rpb24gaW0obCl7cmV0dXJuIHVsKGwpJiZTbChsKT09VmN9ZnVuY3Rpb24gblcobCl7cmV0dXJuIHVsKGwpJiZTbChsKT09bGR9ZnVuY3Rpb24gY1cobCl7cmV0dXJuIHVsKGwpJiZTbChsKT09T2N9ZnVuY3Rpb24gYWQobCxuLGQsdSxtKXtyZXR1cm4gbD09PW4/ITA6bD09bnVsbHx8bj09bnVsbHx8IXVsKGwpJiYhdWwobik/bCE9PWwmJm4hPT1uOmRXKGwsbixkLHUsYWQsbSl9ZnVuY3Rpb24gZFcobCxuLGQsdSxtLGIpe3ZhciBYPUMobCkscD1DKG4pLHI9WD9QZDpMbChsKSxTPXA/UGQ6TGwobik7cj1yPT1WYz9wbjpyLFM9Uz09VmM/cG46Uzt2YXIgZj1yPT1wbixKPVM9PXBuLEs9cj09UztpZihLJiZNbihsKSl7aWYoIU1uKG4pKXJldHVybiExO1g9ITAsZj0hMX1pZihLJiYhZilyZXR1cm4gYnx8KGI9bmV3IGxuKSxYfHx2YyhsKT9UbShsLG4sZCx1LG0sYik6S1cobCxuLHIsZCx1LG0sYik7aWYoIShkJnYpKXt2YXIgTj1mJiZsbC5jYWxsKGwsIl9fd3JhcHBlZF9fIiksZz1KJiZsbC5jYWxsKG4sIl9fd3JhcHBlZF9fIik7aWYoTnx8Zyl7dmFyIEI9Tj9sLnZhbHVlKCk6bCxVPWc/bi52YWx1ZSgpOm47cmV0dXJuIGJ8fChiPW5ldyBsbiksbShCLFUsZCx1LGIpfX1yZXR1cm4gSz8oYnx8KGI9bmV3IGxuKSxGVyhsLG4sZCx1LG0sYikpOiExfWZ1bmN0aW9uIFpXKGwpe3JldHVybiB1bChsKSYmTGwobCk9PV9sfWZ1bmN0aW9uIGx1KGwsbixkLHUpe3ZhciBtPWQubGVuZ3RoLGI9bSxYPSF1O2lmKGw9PW51bGwpcmV0dXJuIWI7Zm9yKGw9bmwobCk7bS0tOyl7dmFyIHA9ZFttXTtpZihYJiZwWzJdP3BbMV0hPT1sW3BbMF1dOiEocFswXWluIGwpKXJldHVybiExfWZvcig7KyttPGI7KXtwPWRbbV07dmFyIHI9cFswXSxTPWxbcl0sZj1wWzFdO2lmKFgmJnBbMl0pe2lmKFM9PT10JiYhKHIgaW4gbCkpcmV0dXJuITF9ZWxzZXt2YXIgSj1uZXcgbG47aWYodSl2YXIgSz11KFMsZixyLGwsbixKKTtpZighKEs9PT10P2FkKGYsUyx2fHosdSxKKTpLKSlyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gZW0obCl7aWYoIXRsKGwpfHxUVyhsKSlyZXR1cm4hMTt2YXIgbj1MbihsKT9acDpEWDtyZXR1cm4gbi50ZXN0KGVjKGwpKX1mdW5jdGlvbiB0VyhsKXtyZXR1cm4gdWwobCkmJlNsKGwpPT1fY31mdW5jdGlvbiB1VyhsKXtyZXR1cm4gdWwobCkmJkxsKGwpPT1xbH1mdW5jdGlvbiBpVyhsKXtyZXR1cm4gdWwobCkmJk5aKGwubGVuZ3RoKSYmISFkbFtTbChsKV19ZnVuY3Rpb24gbW0obCl7cmV0dXJuIHR5cGVvZiBsPT0iZnVuY3Rpb24iP2w6bD09bnVsbD9GbDp0eXBlb2YgbD09Im9iamVjdCI/QyhsKT9HbShsWzBdLGxbMV0pOmJtKGwpOkZhKGwpfWZ1bmN0aW9uIG51KGwpe2lmKCFvZChsKSlyZXR1cm4gYXAobCk7dmFyIG49W107Zm9yKHZhciBkIGluIG5sKGwpKWxsLmNhbGwobCxkKSYmZCE9ImNvbnN0cnVjdG9yIiYmbi5wdXNoKGQpO3JldHVybiBufWZ1bmN0aW9uIGVXKGwpe2lmKCF0bChsKSlyZXR1cm4gQlcobCk7dmFyIG49b2QobCksZD1bXTtmb3IodmFyIHUgaW4gbCl1PT0iY29uc3RydWN0b3IiJiYobnx8IWxsLmNhbGwobCx1KSl8fGQucHVzaCh1KTtyZXR1cm4gZH1mdW5jdGlvbiBjdShsLG4pe3JldHVybiBsPG59ZnVuY3Rpb24gYW0obCxuKXt2YXIgZD0tMSx1PUlsKGwpP1IobC5sZW5ndGgpOltdO3JldHVybiBIbihsLGZ1bmN0aW9uKG0sYixYKXt1WysrZF09bihtLGIsWCl9KSx1fWZ1bmN0aW9uIGJtKGwpe3ZhciBuPVd1KGwpO3JldHVybiBuLmxlbmd0aD09MSYmblswXVsyXT9RbShuWzBdWzBdLG5bMF1bMV0pOmZ1bmN0aW9uKGQpe3JldHVybiBkPT09bHx8bHUoZCxsLG4pfX1mdW5jdGlvbiBHbShsLG4pe3JldHVybiBodShsKSYmQm0obik/UW0obW4obCksbik6ZnVuY3Rpb24oZCl7dmFyIHU9SXUoZCxsKTtyZXR1cm4gdT09PXQmJnU9PT1uP0t1KGQsbCk6YWQobix1LHZ8eil9fWZ1bmN0aW9uIHBaKGwsbixkLHUsbSl7bCE9PW4mJkF0KG4sZnVuY3Rpb24oYixYKXtpZihtfHwobT1uZXcgbG4pLHRsKGIpKW1XKGwsbixYLGQscFosdSxtKTtlbHNle3ZhciBwPXU/dSh5dShsLFgpLGIsWCsiIixsLG4sbSk6dDtwPT09dCYmKHA9YiksRHQobCxYLHApfX0sS2wpfWZ1bmN0aW9uIG1XKGwsbixkLHUsbSxiLFgpe3ZhciBwPXl1KGwsZCkscj15dShuLGQpLFM9WC5nZXQocik7aWYoUyl7RHQobCxkLFMpO3JldHVybn12YXIgZj1iP2IocCxyLGQrIiIsbCxuLFgpOnQsSj1mPT09dDtpZihKKXt2YXIgSz1DKHIpLE49IUsmJk1uKHIpLGc9IUsmJiFOJiZ2YyhyKTtmPXIsS3x8Tnx8Zz9DKHApP2Y9cDppbChwKT9mPUpsKHApOk4/KEo9ITEsZj1ZbShyLCEwKSk6Zz8oSj0hMSxmPVNtKHIsITApKTpmPVtdOnNkKHIpfHxtYyhyKT8oZj1wLG1jKHApP2Y9eWEocCk6KCF0bChwKXx8TG4ocCkpJiYoZj1QbShyKSkpOko9ITF9SiYmKFguc2V0KHIsZiksbShmLHIsdSxiLFgpLFguZGVsZXRlKHIpKSxEdChsLGQsZil9ZnVuY3Rpb24gb20obCxuKXt2YXIgZD1sLmxlbmd0aDtpZihkKXJldHVybiBuKz1uPDA/ZDowLFJuKG4sZCk/bFtuXTp0fWZ1bmN0aW9uIFhtKGwsbixkKXtuLmxlbmd0aD9uPVpsKG4sZnVuY3Rpb24oYil7cmV0dXJuIEMoYik/ZnVuY3Rpb24oWCl7cmV0dXJuIHVjKFgsYi5sZW5ndGg9PT0xP2JbMF06Yil9OmJ9KTpuPVtGbF07dmFyIHU9LTE7bj1abChuLEhsKGsoKSkpO3ZhciBtPWFtKGwsZnVuY3Rpb24oYixYLHApe3ZhciByPVpsKG4sZnVuY3Rpb24oUyl7cmV0dXJuIFMoYil9KTtyZXR1cm57Y3JpdGVyaWE6cixpbmRleDorK3UsdmFsdWU6Yn19KTtyZXR1cm4ga3MobSxmdW5jdGlvbihiLFgpe3JldHVybiBSVyhiLFgsZCl9KX1mdW5jdGlvbiBhVyhsLG4pe3JldHVybiBzbShsLG4sZnVuY3Rpb24oZCx1KXtyZXR1cm4gS3UobCx1KX0pfWZ1bmN0aW9uIHNtKGwsbixkKXtmb3IodmFyIHU9LTEsbT1uLmxlbmd0aCxiPXt9OysrdTxtOyl7dmFyIFg9blt1XSxwPXVjKGwsWCk7ZChwLFgpJiZiZChiLGduKFgsbCkscCl9cmV0dXJuIGJ9ZnVuY3Rpb24gYlcobCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB1YyhuLGwpfX1mdW5jdGlvbiBkdShsLG4sZCx1KXt2YXIgbT11P0hzOkxjLGI9LTEsWD1uLmxlbmd0aCxwPWw7Zm9yKGw9PT1uJiYobj1KbChuKSksZCYmKHA9WmwobCxIbChkKSkpOysrYjxYOylmb3IodmFyIHI9MCxTPW5bYl0sZj1kP2QoUyk6Uzsocj1tKHAsZixyLHUpKT4tMTspcCE9PWwmJnVaLmNhbGwocCxyLDEpLHVaLmNhbGwobCxyLDEpO3JldHVybiBsfWZ1bmN0aW9uIHBtKGwsbil7Zm9yKHZhciBkPWw/bi5sZW5ndGg6MCx1PWQtMTtkLS07KXt2YXIgbT1uW2RdO2lmKGQ9PXV8fG0hPT1iKXt2YXIgYj1tO1JuKG0pP3VaLmNhbGwobCxtLDEpOml1KGwsbSl9fXJldHVybiBsfWZ1bmN0aW9uIFp1KGwsbil7cmV0dXJuIGwrbVooQWUoKSoobi1sKzEpKX1mdW5jdGlvbiBHVyhsLG4sZCx1KXtmb3IodmFyIG09LTEsYj1YbChlWigobi1sKS8oZHx8MSkpLDApLFg9UihiKTtiLS07KVhbdT9iOisrbV09bCxsKz1kO3JldHVybiBYfWZ1bmN0aW9uIHR1KGwsbil7dmFyIGQ9IiI7aWYoIWx8fG48MXx8bj5LbilyZXR1cm4gZDtkbyBuJTImJihkKz1sKSxuPW1aKG4vMiksbiYmKGwrPWwpO3doaWxlKG4pO3JldHVybiBkfWZ1bmN0aW9uIFEobCxuKXtyZXR1cm4gUnUoRW0obCxuLEZsKSxsKyIiKX1mdW5jdGlvbiBvVyhsKXtyZXR1cm4gJGUoSGMobCkpfWZ1bmN0aW9uIFhXKGwsbil7dmFyIGQ9SGMobCk7cmV0dXJuIHhaKGQsdGMobiwwLGQubGVuZ3RoKSl9ZnVuY3Rpb24gYmQobCxuLGQsdSl7aWYoIXRsKGwpKXJldHVybiBsO249Z24obixsKTtmb3IodmFyIG09LTEsYj1uLmxlbmd0aCxYPWItMSxwPWw7cCE9bnVsbCYmKyttPGI7KXt2YXIgcj1tbihuW21dKSxTPWQ7aWYocj09PSJfX3Byb3RvX18ifHxyPT09ImNvbnN0cnVjdG9yInx8cj09PSJwcm90b3R5cGUiKXJldHVybiBsO2lmKG0hPVgpe3ZhciBmPXBbcl07Uz11P3UoZixyLHApOnQsUz09PXQmJihTPXRsKGYpP2Y6Um4oblttKzFdKT9bXTp7fSl9aWQocCxyLFMpLHA9cFtyXX1yZXR1cm4gbH12YXIgV209YVo/ZnVuY3Rpb24obCxuKXtyZXR1cm4gYVouc2V0KGwsbiksbH06Rmwsc1c9aVo/ZnVuY3Rpb24obCxuKXtyZXR1cm4gaVoobCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpOdShuKSx3cml0YWJsZTohMH0pfTpGbDtmdW5jdGlvbiBwVyhsKXtyZXR1cm4geFooSGMobCkpfWZ1bmN0aW9uIFFsKGwsbixkKXt2YXIgdT0tMSxtPWwubGVuZ3RoO248MCYmKG49LW4+bT8wOm0rbiksZD1kPm0/bTpkLGQ8MCYmKGQrPW0pLG09bj5kPzA6ZC1uPj4+MCxuPj4+PTA7Zm9yKHZhciBiPVIobSk7Kyt1PG07KWJbdV09bFt1K25dO3JldHVybiBifWZ1bmN0aW9uIFdXKGwsbil7dmFyIGQ7cmV0dXJuIEhuKGwsZnVuY3Rpb24odSxtLGIpe3JldHVybiBkPW4odSxtLGIpLCFkfSksISFkfWZ1bmN0aW9uIFdaKGwsbixkKXt2YXIgdT0wLG09bD09bnVsbD91OmwubGVuZ3RoO2lmKHR5cGVvZiBuPT0ibnVtYmVyIiYmbj09PW4mJm08PWhYKXtmb3IoO3U8bTspe3ZhciBiPXUrbT4+PjEsWD1sW2JdO1ghPT1udWxsJiYhZ2woWCkmJihkP1g8PW46WDxuKT91PWIrMTptPWJ9cmV0dXJuIG19cmV0dXJuIHV1KGwsbixGbCxkKX1mdW5jdGlvbiB1dShsLG4sZCx1KXt2YXIgbT0wLGI9bD09bnVsbD8wOmwubGVuZ3RoO2lmKGI9PT0wKXJldHVybiAwO249ZChuKTtmb3IodmFyIFg9biE9PW4scD1uPT09bnVsbCxyPWdsKG4pLFM9bj09PXQ7bTxiOyl7dmFyIGY9bVooKG0rYikvMiksSj1kKGxbZl0pLEs9SiE9PXQsTj1KPT09bnVsbCxnPUo9PT1KLEI9Z2woSik7aWYoWCl2YXIgVT11fHxnO2Vsc2UgUz9VPWcmJih1fHxLKTpwP1U9ZyYmSyYmKHV8fCFOKTpyP1U9ZyYmSyYmIU4mJih1fHwhQik6Tnx8Qj9VPSExOlU9dT9KPD1uOko8bjtVP209ZisxOmI9Zn1yZXR1cm4gUmwoYixyWCl9ZnVuY3Rpb24gcm0obCxuKXtmb3IodmFyIGQ9LTEsdT1sLmxlbmd0aCxtPTAsYj1bXTsrK2Q8dTspe3ZhciBYPWxbZF0scD1uP24oWCk6WDtpZighZHx8IW5uKHAscikpe3ZhciByPXA7YlttKytdPVg9PT0wPzA6WH19cmV0dXJuIGJ9ZnVuY3Rpb24gaG0obCl7cmV0dXJuIHR5cGVvZiBsPT0ibnVtYmVyIj9sOmdsKGwpP3dkOitsfWZ1bmN0aW9uIGtsKGwpe2lmKHR5cGVvZiBsPT0ic3RyaW5nIilyZXR1cm4gbDtpZihDKGwpKXJldHVybiBabChsLGtsKSsiIjtpZihnbChsKSlyZXR1cm4gX2U/X2UuY2FsbChsKToiIjt2YXIgbj1sKyIiO3JldHVybiBuPT0iMCImJjEvbD09LWxjPyItMCI6bn1mdW5jdGlvbiBrbihsLG4sZCl7dmFyIHU9LTEsbT1BZCxiPWwubGVuZ3RoLFg9ITAscD1bXSxyPXA7aWYoZClYPSExLG09SHQ7ZWxzZSBpZihiPj1lKXt2YXIgUz1uP251bGw6SlcobCk7aWYoUylyZXR1cm4gcWQoUyk7WD0hMSxtPW5kLHI9bmV3IFpjfWVsc2Ugcj1uP1tdOnA7bDpmb3IoOysrdTxiOyl7dmFyIGY9bFt1XSxKPW4/bihmKTpmO2lmKGY9ZHx8ZiE9PTA/ZjowLFgmJko9PT1KKXtmb3IodmFyIEs9ci5sZW5ndGg7Sy0tOylpZihyW0tdPT09Siljb250aW51ZSBsO24mJnIucHVzaChKKSxwLnB1c2goZil9ZWxzZSBtKHIsSixkKXx8KHIhPT1wJiZyLnB1c2goSikscC5wdXNoKGYpKX1yZXR1cm4gcH1mdW5jdGlvbiBpdShsLG4pe3JldHVybiBuPWduKG4sbCksbD1qbShsLG4pLGw9PW51bGx8fGRlbGV0ZSBsW21uKEVsKG4pKV19ZnVuY3Rpb24gVm0obCxuLGQsdSl7cmV0dXJuIGJkKGwsbixkKHVjKGwsbikpLHUpfWZ1bmN0aW9uIHJaKGwsbixkLHUpe2Zvcih2YXIgbT1sLmxlbmd0aCxiPXU/bTotMTsodT9iLS06KytiPG0pJiZuKGxbYl0sYixsKTspO3JldHVybiBkP1FsKGwsdT8wOmIsdT9iKzE6bSk6UWwobCx1P2IrMTowLHU/bTpiKX1mdW5jdGlvbiB5bShsLG4pe3ZhciBkPWw7cmV0dXJuIGQgaW5zdGFuY2VvZiBqJiYoZD1kLnZhbHVlKCkpLGt0KG4sZnVuY3Rpb24odSxtKXtyZXR1cm4gbS5mdW5jLmFwcGx5KG0udGhpc0FyZyxObihbdV0sbS5hcmdzKSl9LGQpfWZ1bmN0aW9uIGV1KGwsbixkKXt2YXIgdT1sLmxlbmd0aDtpZih1PDIpcmV0dXJuIHU/a24obFswXSk6W107Zm9yKHZhciBtPS0xLGI9Uih1KTsrK208dTspZm9yKHZhciBYPWxbbV0scD0tMTsrK3A8dTspcCE9bSYmKGJbbV09ZWQoYlttXXx8WCxsW3BdLG4sZCkpO3JldHVybiBrbihWbChiLDEpLG4sZCl9ZnVuY3Rpb24gUm0obCxuLGQpe2Zvcih2YXIgdT0tMSxtPWwubGVuZ3RoLGI9bi5sZW5ndGgsWD17fTsrK3U8bTspe3ZhciBwPXU8Yj9uW3VdOnQ7ZChYLGxbdV0scCl9cmV0dXJuIFh9ZnVuY3Rpb24gbXUobCl7cmV0dXJuIGlsKGwpP2w6W119ZnVuY3Rpb24gYXUobCl7cmV0dXJuIHR5cGVvZiBsPT0iZnVuY3Rpb24iP2w6Rmx9ZnVuY3Rpb24gZ24obCxuKXtyZXR1cm4gQyhsKT9sOmh1KGwsbik/W2xdOl9tKHEobCkpfXZhciByVz1RO2Z1bmN0aW9uIFVuKGwsbixkKXt2YXIgdT1sLmxlbmd0aDtyZXR1cm4gZD1kPT09dD91OmQsIW4mJmQ+PXU/bDpRbChsLG4sZCl9dmFyIExtPXRwfHxmdW5jdGlvbihsKXtyZXR1cm4gaGwuY2xlYXJUaW1lb3V0KGwpfTtmdW5jdGlvbiBZbShsLG4pe2lmKG4pcmV0dXJuIGwuc2xpY2UoKTt2YXIgZD1sLmxlbmd0aCx1PVFlP1FlKGQpOm5ldyBsLmNvbnN0cnVjdG9yKGQpO3JldHVybiBsLmNvcHkodSksdX1mdW5jdGlvbiBidShsKXt2YXIgbj1uZXcgbC5jb25zdHJ1Y3RvcihsLmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgWloobikuc2V0KG5ldyBaWihsKSksbn1mdW5jdGlvbiBoVyhsLG4pe3ZhciBkPW4/YnUobC5idWZmZXIpOmwuYnVmZmVyO3JldHVybiBuZXcgbC5jb25zdHJ1Y3RvcihkLGwuYnl0ZU9mZnNldCxsLmJ5dGVMZW5ndGgpfWZ1bmN0aW9uIFZXKGwpe3ZhciBuPW5ldyBsLmNvbnN0cnVjdG9yKGwuc291cmNlLGllLmV4ZWMobCkpO3JldHVybiBuLmxhc3RJbmRleD1sLmxhc3RJbmRleCxufWZ1bmN0aW9uIHlXKGwpe3JldHVybiB1ZD9ubCh1ZC5jYWxsKGwpKTp7fX1mdW5jdGlvbiBTbShsLG4pe3ZhciBkPW4/YnUobC5idWZmZXIpOmwuYnVmZmVyO3JldHVybiBuZXcgbC5jb25zdHJ1Y3RvcihkLGwuYnl0ZU9mZnNldCxsLmxlbmd0aCl9ZnVuY3Rpb24geG0obCxuKXtpZihsIT09bil7dmFyIGQ9bCE9PXQsdT1sPT09bnVsbCxtPWw9PT1sLGI9Z2wobCksWD1uIT09dCxwPW49PT1udWxsLHI9bj09PW4sUz1nbChuKTtpZighcCYmIVMmJiFiJiZsPm58fGImJlgmJnImJiFwJiYhU3x8dSYmWCYmcnx8IWQmJnJ8fCFtKXJldHVybiAxO2lmKCF1JiYhYiYmIVMmJmw8bnx8UyYmZCYmbSYmIXUmJiFifHxwJiZkJiZtfHwhWCYmbXx8IXIpcmV0dXJuLTF9cmV0dXJuIDB9ZnVuY3Rpb24gUlcobCxuLGQpe2Zvcih2YXIgdT0tMSxtPWwuY3JpdGVyaWEsYj1uLmNyaXRlcmlhLFg9bS5sZW5ndGgscD1kLmxlbmd0aDsrK3U8WDspe3ZhciByPXhtKG1bdV0sYlt1XSk7aWYocil7aWYodT49cClyZXR1cm4gcjt2YXIgUz1kW3VdO3JldHVybiByKihTPT0iZGVzYyI/LTE6MSl9fXJldHVybiBsLmluZGV4LW4uaW5kZXh9ZnVuY3Rpb24gZm0obCxuLGQsdSl7Zm9yKHZhciBtPS0xLGI9bC5sZW5ndGgsWD1kLmxlbmd0aCxwPS0xLHI9bi5sZW5ndGgsUz1YbChiLVgsMCksZj1SKHIrUyksSj0hdTsrK3A8cjspZltwXT1uW3BdO2Zvcig7KyttPFg7KShKfHxtPGIpJiYoZltkW21dXT1sW21dKTtmb3IoO1MtLTspZltwKytdPWxbbSsrXTtyZXR1cm4gZn1mdW5jdGlvbiBKbShsLG4sZCx1KXtmb3IodmFyIG09LTEsYj1sLmxlbmd0aCxYPS0xLHA9ZC5sZW5ndGgscj0tMSxTPW4ubGVuZ3RoLGY9WGwoYi1wLDApLEo9UihmK1MpLEs9IXU7KyttPGY7KUpbbV09bFttXTtmb3IodmFyIE49bTsrK3I8UzspSltOK3JdPW5bcl07Zm9yKDsrK1g8cDspKEt8fG08YikmJihKW04rZFtYXV09bFttKytdKTtyZXR1cm4gSn1mdW5jdGlvbiBKbChsLG4pe3ZhciBkPS0xLHU9bC5sZW5ndGg7Zm9yKG58fChuPVIodSkpOysrZDx1OyluW2RdPWxbZF07cmV0dXJuIG59ZnVuY3Rpb24gZW4obCxuLGQsdSl7dmFyIG09IWQ7ZHx8KGQ9e30pO2Zvcih2YXIgYj0tMSxYPW4ubGVuZ3RoOysrYjxYOyl7dmFyIHA9bltiXSxyPXU/dShkW3BdLGxbcF0scCxkLGwpOnQ7cj09PXQmJihyPWxbcF0pLG0/aG4oZCxwLHIpOmlkKGQscCxyKX1yZXR1cm4gZH1mdW5jdGlvbiBMVyhsLG4pe3JldHVybiBlbihsLHJ1KGwpLG4pfWZ1bmN0aW9uIFlXKGwsbil7cmV0dXJuIGVuKGwsQ20obCksbil9ZnVuY3Rpb24gaFoobCxuKXtyZXR1cm4gZnVuY3Rpb24oZCx1KXt2YXIgbT1DKGQpP0lzOkVwLGI9bj9uKCk6e307cmV0dXJuIG0oZCxsLGsodSwyKSxiKX19ZnVuY3Rpb24gRmMobCl7cmV0dXJuIFEoZnVuY3Rpb24obixkKXt2YXIgdT0tMSxtPWQubGVuZ3RoLGI9bT4xP2RbbS0xXTp0LFg9bT4yP2RbMl06dDtmb3IoYj1sLmxlbmd0aD4zJiZ0eXBlb2YgYj09ImZ1bmN0aW9uIj8obS0tLGIpOnQsWCYmeGwoZFswXSxkWzFdLFgpJiYoYj1tPDM/dDpiLG09MSksbj1ubChuKTsrK3U8bTspe3ZhciBwPWRbdV07cCYmbChuLHAsdSxiKX1yZXR1cm4gbn0pfWZ1bmN0aW9uIEltKGwsbil7cmV0dXJuIGZ1bmN0aW9uKGQsdSl7aWYoZD09bnVsbClyZXR1cm4gZDtpZighSWwoZCkpcmV0dXJuIGwoZCx1KTtmb3IodmFyIG09ZC5sZW5ndGgsYj1uP206LTEsWD1ubChkKTsobj9iLS06KytiPG0pJiZ1KFhbYl0sYixYKSE9PSExOyk7cmV0dXJuIGR9fWZ1bmN0aW9uIEttKGwpe3JldHVybiBmdW5jdGlvbihuLGQsdSl7Zm9yKHZhciBtPS0xLGI9bmwobiksWD11KG4pLHA9WC5sZW5ndGg7cC0tOyl7dmFyIHI9WFtsP3A6KyttXTtpZihkKGJbcl0scixiKT09PSExKWJyZWFrfXJldHVybiBufX1mdW5jdGlvbiBTVyhsLG4sZCl7dmFyIHU9biZILG09R2QobCk7ZnVuY3Rpb24gYigpe3ZhciBYPXRoaXMmJnRoaXMhPT1obCYmdGhpcyBpbnN0YW5jZW9mIGI/bTpsO3JldHVybiBYLmFwcGx5KHU/ZDp0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGJ9ZnVuY3Rpb24gRm0obCl7cmV0dXJuIGZ1bmN0aW9uKG4pe249cShuKTt2YXIgZD1ZYyhuKT8kbChuKTp0LHU9ZD9kWzBdOm4uY2hhckF0KDApLG09ZD9VbihkLDEpLmpvaW4oIiIpOm4uc2xpY2UoMSk7cmV0dXJuIHVbbF0oKSttfX1mdW5jdGlvbiBOYyhsKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGt0KElhKEphKG4pLnJlcGxhY2Uoc3MsIiIpKSxsLCIiKX19ZnVuY3Rpb24gR2QobCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzO3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgbDtjYXNlIDE6cmV0dXJuIG5ldyBsKG5bMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IGwoblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyBsKG5bMF0sblsxXSxuWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyBsKG5bMF0sblsxXSxuWzJdLG5bM10pO2Nhc2UgNTpyZXR1cm4gbmV3IGwoblswXSxuWzFdLG5bMl0sblszXSxuWzRdKTtjYXNlIDY6cmV0dXJuIG5ldyBsKG5bMF0sblsxXSxuWzJdLG5bM10sbls0XSxuWzVdKTtjYXNlIDc6cmV0dXJuIG5ldyBsKG5bMF0sblsxXSxuWzJdLG5bM10sbls0XSxuWzVdLG5bNl0pfXZhciBkPUtjKGwucHJvdG90eXBlKSx1PWwuYXBwbHkoZCxuKTtyZXR1cm4gdGwodSk/dTpkfX1mdW5jdGlvbiB4VyhsLG4sZCl7dmFyIHU9R2QobCk7ZnVuY3Rpb24gbSgpe2Zvcih2YXIgYj1hcmd1bWVudHMubGVuZ3RoLFg9UihiKSxwPWIscj16YyhtKTtwLS07KVhbcF09YXJndW1lbnRzW3BdO3ZhciBTPWI8MyYmWFswXSE9PXImJlhbYi0xXSE9PXI/W106em4oWCxyKTtpZihiLT1TLmxlbmd0aCxiPGQpcmV0dXJuIGttKGwsbixWWixtLnBsYWNlaG9sZGVyLHQsWCxTLHQsdCxkLWIpO3ZhciBmPXRoaXMmJnRoaXMhPT1obCYmdGhpcyBpbnN0YW5jZW9mIG0/dTpsO3JldHVybiB2bChmLHRoaXMsWCl9cmV0dXJuIG19ZnVuY3Rpb24gTm0obCl7cmV0dXJuIGZ1bmN0aW9uKG4sZCx1KXt2YXIgbT1ubChuKTtpZighSWwobikpe3ZhciBiPWsoZCwzKTtuPXBsKG4pLGQ9ZnVuY3Rpb24ocCl7cmV0dXJuIGIobVtwXSxwLG0pfX12YXIgWD1sKG4sZCx1KTtyZXR1cm4gWD4tMT9tW2I/bltYXTpYXTp0fX1mdW5jdGlvbiB6bShsKXtyZXR1cm4geW4oZnVuY3Rpb24obil7dmFyIGQ9bi5sZW5ndGgsdT1kLG09UGwucHJvdG90eXBlLnRocnU7Zm9yKGwmJm4ucmV2ZXJzZSgpO3UtLTspe3ZhciBiPW5bdV07aWYodHlwZW9mIGIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHdsKG8pO2lmKG0mJiFYJiZZWihiKT09IndyYXBwZXIiKXZhciBYPW5ldyBQbChbXSwhMCl9Zm9yKHU9WD91OmQ7Kyt1PGQ7KXtiPW5bdV07dmFyIHA9WVooYikscj1wPT0id3JhcHBlciI/cHUoYik6dDtyJiZWdShyWzBdKSYmclsxXT09KE18R2x8X3x6bCkmJiFyWzRdLmxlbmd0aCYmcls5XT09MT9YPVhbWVooclswXSldLmFwcGx5KFgsclszXSk6WD1iLmxlbmd0aD09MSYmVnUoYik/WFtwXSgpOlgudGhydShiKX1yZXR1cm4gZnVuY3Rpb24oKXt2YXIgUz1hcmd1bWVudHMsZj1TWzBdO2lmKFgmJlMubGVuZ3RoPT0xJiZDKGYpKXJldHVybiBYLnBsYW50KGYpLnZhbHVlKCk7Zm9yKHZhciBKPTAsSz1kP25bSl0uYXBwbHkodGhpcyxTKTpmOysrSjxkOylLPW5bSl0uY2FsbCh0aGlzLEspO3JldHVybiBLfX0pfWZ1bmN0aW9uIFZaKGwsbixkLHUsbSxiLFgscCxyLFMpe3ZhciBmPW4mTSxKPW4mSCxLPW4mQSxOPW4mKEdsfFpuKSxnPW4mamMsQj1LP3Q6R2QobCk7ZnVuY3Rpb24gVSgpe2Zvcih2YXIgRT1hcmd1bWVudHMubGVuZ3RoLEQ9UihFKSxVbD1FO1VsLS07KURbVWxdPWFyZ3VtZW50c1tVbF07aWYoTil2YXIgZmw9emMoVSksTWw9VXMoRCxmbCk7aWYodSYmKEQ9Zm0oRCx1LG0sTikpLGImJihEPUptKEQsYixYLE4pKSxFLT1NbCxOJiZFPFMpe3ZhciBlbD16bihELGZsKTtyZXR1cm4ga20obCxuLFZaLFUucGxhY2Vob2xkZXIsZCxELGVsLHAscixTLUUpfXZhciBjbj1KP2Q6dGhpcyxTbj1LP2NuW2xdOmw7cmV0dXJuIEU9RC5sZW5ndGgscD9EPUVXKEQscCk6ZyYmRT4xJiZELnJldmVyc2UoKSxmJiZyPEUmJihELmxlbmd0aD1yKSx0aGlzJiZ0aGlzIT09aGwmJnRoaXMgaW5zdGFuY2VvZiBVJiYoU249Qnx8R2QoU24pKSxTbi5hcHBseShjbixEKX1yZXR1cm4gVX1mdW5jdGlvbiB2bShsLG4pe3JldHVybiBmdW5jdGlvbihkLHUpe3JldHVybiBsVyhkLGwsbih1KSx7fSl9fWZ1bmN0aW9uIHlaKGwsbil7cmV0dXJuIGZ1bmN0aW9uKGQsdSl7dmFyIG07aWYoZD09PXQmJnU9PT10KXJldHVybiBuO2lmKGQhPT10JiYobT1kKSx1IT09dCl7aWYobT09PXQpcmV0dXJuIHU7dHlwZW9mIGQ9PSJzdHJpbmcifHx0eXBlb2YgdT09InN0cmluZyI/KGQ9a2woZCksdT1rbCh1KSk6KGQ9aG0oZCksdT1obSh1KSksbT1sKGQsdSl9cmV0dXJuIG19fWZ1bmN0aW9uIEd1KGwpe3JldHVybiB5bihmdW5jdGlvbihuKXtyZXR1cm4gbj1abChuLEhsKGsoKSkpLFEoZnVuY3Rpb24oZCl7dmFyIHU9dGhpcztyZXR1cm4gbChuLGZ1bmN0aW9uKG0pe3JldHVybiB2bChtLHUsZCl9KX0pfSl9ZnVuY3Rpb24gUloobCxuKXtuPW49PT10PyIgIjprbChuKTt2YXIgZD1uLmxlbmd0aDtpZihkPDIpcmV0dXJuIGQ/dHUobixsKTpuO3ZhciB1PXR1KG4sZVoobC9TYyhuKSkpO3JldHVybiBZYyhuKT9VbigkbCh1KSwwLGwpLmpvaW4oIiIpOnUuc2xpY2UoMCxsKX1mdW5jdGlvbiBmVyhsLG4sZCx1KXt2YXIgbT1uJkgsYj1HZChsKTtmdW5jdGlvbiBYKCl7Zm9yKHZhciBwPS0xLHI9YXJndW1lbnRzLmxlbmd0aCxTPS0xLGY9dS5sZW5ndGgsSj1SKGYrciksSz10aGlzJiZ0aGlzIT09aGwmJnRoaXMgaW5zdGFuY2VvZiBYP2I6bDsrK1M8ZjspSltTXT11W1NdO2Zvcig7ci0tOylKW1MrK109YXJndW1lbnRzWysrcF07cmV0dXJuIHZsKEssbT9kOnRoaXMsSil9cmV0dXJuIFh9ZnVuY3Rpb24gSG0obCl7cmV0dXJuIGZ1bmN0aW9uKG4sZCx1KXtyZXR1cm4gdSYmdHlwZW9mIHUhPSJudW1iZXIiJiZ4bChuLGQsdSkmJihkPXU9dCksbj1ZbihuKSxkPT09dD8oZD1uLG49MCk6ZD1ZbihkKSx1PXU9PT10P248ZD8xOi0xOlluKHUpLEdXKG4sZCx1LGwpfX1mdW5jdGlvbiBMWihsKXtyZXR1cm4gZnVuY3Rpb24obixkKXtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciJiZ0eXBlb2YgZD09InN0cmluZyJ8fChuPWpsKG4pLGQ9amwoZCkpLGwobixkKX19ZnVuY3Rpb24ga20obCxuLGQsdSxtLGIsWCxwLHIsUyl7dmFyIGY9biZHbCxKPWY/WDp0LEs9Zj90OlgsTj1mP2I6dCxnPWY/dDpiO258PWY/XzpybCxuJj1+KGY/cmw6XyksbiZZbHx8KG4mPX4oSHxBKSk7dmFyIEI9W2wsbixtLE4sSixnLEsscCxyLFNdLFU9ZC5hcHBseSh0LEIpO3JldHVybiBWdShsKSYmRG0oVSxCKSxVLnBsYWNlaG9sZGVyPXUsT20oVSxsLG4pfWZ1bmN0aW9uIG91KGwpe3ZhciBuPW9sW2xdO3JldHVybiBmdW5jdGlvbihkLHUpe2lmKGQ9amwoZCksdT11PT1udWxsPzA6UmwoUCh1KSwyOTIpLHUmJk9lKGQpKXt2YXIgbT0ocShkKSsiZSIpLnNwbGl0KCJlIiksYj1uKG1bMF0rImUiKygrbVsxXSt1KSk7cmV0dXJuIG09KHEoYikrImUiKS5zcGxpdCgiZSIpLCsobVswXSsiZSIrKCttWzFdLXUpKX1yZXR1cm4gbihkKX19dmFyIEpXPUpjJiYxL3FkKG5ldyBKYyhbLC0wXSkpWzFdPT1sYz9mdW5jdGlvbihsKXtyZXR1cm4gbmV3IEpjKGwpfTpIdTtmdW5jdGlvbiBnbShsKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGQ9TGwobik7cmV0dXJuIGQ9PV9sP1B0KG4pOmQ9PXFsP1FzKG4pOmdzKG4sbChuKSl9fWZ1bmN0aW9uIFZuKGwsbixkLHUsbSxiLFgscCl7dmFyIHI9biZBO2lmKCFyJiZ0eXBlb2YgbCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7dmFyIFM9dT91Lmxlbmd0aDowO2lmKFN8fChuJj1+KF98cmwpLHU9bT10KSxYPVg9PT10P1g6WGwoUChYKSwwKSxwPXA9PT10P3A6UChwKSxTLT1tP20ubGVuZ3RoOjAsbiZybCl7dmFyIGY9dSxKPW07dT1tPXR9dmFyIEs9cj90OnB1KGwpLE49W2wsbixkLHUsbSxmLEosYixYLHBdO2lmKEsmJlBXKE4sSyksbD1OWzBdLG49TlsxXSxkPU5bMl0sdT1OWzNdLG09Tls0XSxwPU5bOV09Tls5XT09PXQ/cj8wOmwubGVuZ3RoOlhsKE5bOV0tUywwKSwhcCYmbiYoR2x8Wm4pJiYobiY9fihHbHxabikpLCFufHxuPT1IKXZhciBnPVNXKGwsbixkKTtlbHNlIG49PUdsfHxuPT1abj9nPXhXKGwsbixwKToobj09X3x8bj09KEh8XykpJiYhbS5sZW5ndGg/Zz1mVyhsLG4sZCx1KTpnPVZaLmFwcGx5KHQsTik7dmFyIEI9Sz9XbTpEbTtyZXR1cm4gT20oQihnLE4pLGwsbil9ZnVuY3Rpb24gVW0obCxuLGQsdSl7cmV0dXJuIGw9PT10fHxubihsLGZjW2RdKSYmIWxsLmNhbGwodSxkKT9uOmx9ZnVuY3Rpb24gTW0obCxuLGQsdSxtLGIpe3JldHVybiB0bChsKSYmdGwobikmJihiLnNldChuLGwpLHBaKGwsbix0LE1tLGIpLGIuZGVsZXRlKG4pKSxsfWZ1bmN0aW9uIElXKGwpe3JldHVybiBzZChsKT90Omx9ZnVuY3Rpb24gVG0obCxuLGQsdSxtLGIpe3ZhciBYPWQmdixwPWwubGVuZ3RoLHI9bi5sZW5ndGg7aWYocCE9ciYmIShYJiZyPnApKXJldHVybiExO3ZhciBTPWIuZ2V0KGwpLGY9Yi5nZXQobik7aWYoUyYmZilyZXR1cm4gUz09biYmZj09bDt2YXIgSj0tMSxLPSEwLE49ZCZ6P25ldyBaYzp0O2ZvcihiLnNldChsLG4pLGIuc2V0KG4sbCk7KytKPHA7KXt2YXIgZz1sW0pdLEI9bltKXTtpZih1KXZhciBVPVg/dShCLGcsSixuLGwsYik6dShnLEIsSixsLG4sYik7aWYoVSE9PXQpe2lmKFUpY29udGludWU7Sz0hMTticmVha31pZihOKXtpZighZ3QobixmdW5jdGlvbihFLEQpe2lmKCFuZChOLEQpJiYoZz09PUV8fG0oZyxFLGQsdSxiKSkpcmV0dXJuIE4ucHVzaChEKX0pKXtLPSExO2JyZWFrfX1lbHNlIGlmKCEoZz09PUJ8fG0oZyxCLGQsdSxiKSkpe0s9ITE7YnJlYWt9fXJldHVybiBiLmRlbGV0ZShsKSxiLmRlbGV0ZShuKSxLfWZ1bmN0aW9uIEtXKGwsbixkLHUsbSxiLFgpe3N3aXRjaChkKXtjYXNlIHljOmlmKGwuYnl0ZUxlbmd0aCE9bi5ieXRlTGVuZ3RofHxsLmJ5dGVPZmZzZXQhPW4uYnl0ZU9mZnNldClyZXR1cm4hMTtsPWwuYnVmZmVyLG49bi5idWZmZXI7Y2FzZSBsZDpyZXR1cm4hKGwuYnl0ZUxlbmd0aCE9bi5ieXRlTGVuZ3RofHwhYihuZXcgWloobCksbmV3IFpaKG4pKSk7Y2FzZSBEYzpjYXNlIE9jOmNhc2UgQWM6cmV0dXJuIG5uKCtsLCtuKTtjYXNlIEJkOnJldHVybiBsLm5hbWU9PW4ubmFtZSYmbC5tZXNzYWdlPT1uLm1lc3NhZ2U7Y2FzZSBfYzpjYXNlIHFjOnJldHVybiBsPT1uKyIiO2Nhc2UgX2w6dmFyIHA9UHQ7Y2FzZSBxbDp2YXIgcj11JnY7aWYocHx8KHA9cWQpLGwuc2l6ZSE9bi5zaXplJiYhcilyZXR1cm4hMTt2YXIgUz1YLmdldChsKTtpZihTKXJldHVybiBTPT1uO3V8PXosWC5zZXQobCxuKTt2YXIgZj1UbShwKGwpLHAobiksdSxtLGIsWCk7cmV0dXJuIFguZGVsZXRlKGwpLGY7Y2FzZSBFZDppZih1ZClyZXR1cm4gdWQuY2FsbChsKT09dWQuY2FsbChuKX1yZXR1cm4hMX1mdW5jdGlvbiBGVyhsLG4sZCx1LG0sYil7dmFyIFg9ZCZ2LHA9WHUobCkscj1wLmxlbmd0aCxTPVh1KG4pLGY9Uy5sZW5ndGg7aWYociE9ZiYmIVgpcmV0dXJuITE7Zm9yKHZhciBKPXI7Si0tOyl7dmFyIEs9cFtKXTtpZighKFg/SyBpbiBuOmxsLmNhbGwobixLKSkpcmV0dXJuITF9dmFyIE49Yi5nZXQobCksZz1iLmdldChuKTtpZihOJiZnKXJldHVybiBOPT1uJiZnPT1sO3ZhciBCPSEwO2Iuc2V0KGwsbiksYi5zZXQobixsKTtmb3IodmFyIFU9WDsrK0o8cjspe0s9cFtKXTt2YXIgRT1sW0tdLEQ9bltLXTtpZih1KXZhciBVbD1YP3UoRCxFLEssbixsLGIpOnUoRSxELEssbCxuLGIpO2lmKCEoVWw9PT10P0U9PT1EfHxtKEUsRCxkLHUsYik6VWwpKXtCPSExO2JyZWFrfVV8fChVPUs9PSJjb25zdHJ1Y3RvciIpfWlmKEImJiFVKXt2YXIgZmw9bC5jb25zdHJ1Y3RvcixNbD1uLmNvbnN0cnVjdG9yO2ZsIT1NbCYmImNvbnN0cnVjdG9yImluIGwmJiJjb25zdHJ1Y3RvciJpbiBuJiYhKHR5cGVvZiBmbD09ImZ1bmN0aW9uIiYmZmwgaW5zdGFuY2VvZiBmbCYmdHlwZW9mIE1sPT0iZnVuY3Rpb24iJiZNbCBpbnN0YW5jZW9mIE1sKSYmKEI9ITEpfXJldHVybiBiLmRlbGV0ZShsKSxiLmRlbGV0ZShuKSxCfWZ1bmN0aW9uIHluKGwpe3JldHVybiBSdShFbShsLHQsbmEpLGwrIiIpfWZ1bmN0aW9uIFh1KGwpe3JldHVybiB1bShsLHBsLHJ1KX1mdW5jdGlvbiBzdShsKXtyZXR1cm4gdW0obCxLbCxDbSl9dmFyIHB1PWFaP2Z1bmN0aW9uKGwpe3JldHVybiBhWi5nZXQobCl9Okh1O2Z1bmN0aW9uIFlaKGwpe2Zvcih2YXIgbj1sLm5hbWUrIiIsZD1JY1tuXSx1PWxsLmNhbGwoSWMsbik/ZC5sZW5ndGg6MDt1LS07KXt2YXIgbT1kW3VdLGI9bS5mdW5jO2lmKGI9PW51bGx8fGI9PWwpcmV0dXJuIG0ubmFtZX1yZXR1cm4gbn1mdW5jdGlvbiB6YyhsKXt2YXIgbj1sbC5jYWxsKGEsInBsYWNlaG9sZGVyIik/YTpsO3JldHVybiBuLnBsYWNlaG9sZGVyfWZ1bmN0aW9uIGsoKXt2YXIgbD1hLml0ZXJhdGVlfHx6dTtyZXR1cm4gbD1sPT09enU/bW06bCxhcmd1bWVudHMubGVuZ3RoP2woYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk6bH1mdW5jdGlvbiBTWihsLG4pe3ZhciBkPWwuX19kYXRhX187cmV0dXJuIE1XKG4pP2RbdHlwZW9mIG49PSJzdHJpbmciPyJzdHJpbmciOiJoYXNoIl06ZC5tYXB9ZnVuY3Rpb24gV3UobCl7Zm9yKHZhciBuPXBsKGwpLGQ9bi5sZW5ndGg7ZC0tOyl7dmFyIHU9bltkXSxtPWxbdV07bltkXT1bdSxtLEJtKG0pXX1yZXR1cm4gbn1mdW5jdGlvbiBpYyhsLG4pe3ZhciBkPXdzKGwsbik7cmV0dXJuIGVtKGQpP2Q6dH1mdW5jdGlvbiBOVyhsKXt2YXIgbj1sbC5jYWxsKGwsY2MpLGQ9bFtjY107dHJ5e2xbY2NdPXQ7dmFyIHU9ITB9Y2F0Y2h7fXZhciBtPWNaLmNhbGwobCk7cmV0dXJuIHUmJihuP2xbY2NdPWQ6ZGVsZXRlIGxbY2NdKSxtfXZhciBydT1RdD9mdW5jdGlvbihsKXtyZXR1cm4gbD09bnVsbD9bXToobD1ubChsKSxGbihRdChsKSxmdW5jdGlvbihuKXtyZXR1cm4gamUuY2FsbChsLG4pfSkpfTprdSxDbT1RdD9mdW5jdGlvbihsKXtmb3IodmFyIG49W107bDspTm4obixydShsKSksbD10WihsKTtyZXR1cm4gbn06a3UsTGw9U2w7KEV0JiZMbChuZXcgRXQobmV3IEFycmF5QnVmZmVyKDEpKSkhPXljfHxkZCYmTGwobmV3IGRkKSE9X2x8fGp0JiZMbChqdC5yZXNvbHZlKCkpIT1kZXx8SmMmJkxsKG5ldyBKYykhPXFsfHxaZCYmTGwobmV3IFpkKSE9JGMpJiYoTGw9ZnVuY3Rpb24obCl7dmFyIG49U2wobCksZD1uPT1wbj9sLmNvbnN0cnVjdG9yOnQsdT1kP2VjKGQpOiIiO2lmKHUpc3dpdGNoKHUpe2Nhc2UgWHA6cmV0dXJuIHljO2Nhc2Ugc3A6cmV0dXJuIF9sO2Nhc2UgcHA6cmV0dXJuIGRlO2Nhc2UgV3A6cmV0dXJuIHFsO2Nhc2UgcnA6cmV0dXJuICRjfXJldHVybiBufSk7ZnVuY3Rpb24gelcobCxuLGQpe2Zvcih2YXIgdT0tMSxtPWQubGVuZ3RoOysrdTxtOyl7dmFyIGI9ZFt1XSxYPWIuc2l6ZTtzd2l0Y2goYi50eXBlKXtjYXNlImRyb3AiOmwrPVg7YnJlYWs7Y2FzZSJkcm9wUmlnaHQiOm4tPVg7YnJlYWs7Y2FzZSJ0YWtlIjpuPVJsKG4sbCtYKTticmVhaztjYXNlInRha2VSaWdodCI6bD1YbChsLG4tWCk7YnJlYWt9fXJldHVybntzdGFydDpsLGVuZDpufX1mdW5jdGlvbiB2VyhsKXt2YXIgbj1sLm1hdGNoKFRYKTtyZXR1cm4gbj9uWzFdLnNwbGl0KENYKTpbXX1mdW5jdGlvbiB3bShsLG4sZCl7bj1nbihuLGwpO2Zvcih2YXIgdT0tMSxtPW4ubGVuZ3RoLGI9ITE7Kyt1PG07KXt2YXIgWD1tbihuW3VdKTtpZighKGI9bCE9bnVsbCYmZChsLFgpKSlicmVhaztsPWxbWF19cmV0dXJuIGJ8fCsrdSE9bT9iOihtPWw9PW51bGw/MDpsLmxlbmd0aCwhIW0mJk5aKG0pJiZSbihYLG0pJiYoQyhsKXx8bWMobCkpKX1mdW5jdGlvbiBIVyhsKXt2YXIgbj1sLmxlbmd0aCxkPW5ldyBsLmNvbnN0cnVjdG9yKG4pO3JldHVybiBuJiZ0eXBlb2YgbFswXT09InN0cmluZyImJmxsLmNhbGwobCwiaW5kZXgiKSYmKGQuaW5kZXg9bC5pbmRleCxkLmlucHV0PWwuaW5wdXQpLGR9ZnVuY3Rpb24gUG0obCl7cmV0dXJuIHR5cGVvZiBsLmNvbnN0cnVjdG9yPT0iZnVuY3Rpb24iJiYhb2QobCk/S2ModFoobCkpOnt9fWZ1bmN0aW9uIGtXKGwsbixkKXt2YXIgdT1sLmNvbnN0cnVjdG9yO3N3aXRjaChuKXtjYXNlIGxkOnJldHVybiBidShsKTtjYXNlIERjOmNhc2UgT2M6cmV0dXJuIG5ldyB1KCtsKTtjYXNlIHljOnJldHVybiBoVyhsLGQpO2Nhc2UgV3Q6Y2FzZSBydDpjYXNlIGh0OmNhc2UgVnQ6Y2FzZSB5dDpjYXNlIFJ0OmNhc2UgTHQ6Y2FzZSBZdDpjYXNlIFN0OnJldHVybiBTbShsLGQpO2Nhc2UgX2w6cmV0dXJuIG5ldyB1O2Nhc2UgQWM6Y2FzZSBxYzpyZXR1cm4gbmV3IHUobCk7Y2FzZSBfYzpyZXR1cm4gVlcobCk7Y2FzZSBxbDpyZXR1cm4gbmV3IHU7Y2FzZSBFZDpyZXR1cm4geVcobCl9fWZ1bmN0aW9uIGdXKGwsbil7dmFyIGQ9bi5sZW5ndGg7aWYoIWQpcmV0dXJuIGw7dmFyIHU9ZC0xO3JldHVybiBuW3VdPShkPjE/IiYgIjoiIikrblt1XSxuPW4uam9pbihkPjI/IiwgIjoiICIpLGwucmVwbGFjZShNWCxgewovKiBbd3JhcHBlZCB3aXRoIGArbitgXSAqLwpgKX1mdW5jdGlvbiBVVyhsKXtyZXR1cm4gQyhsKXx8bWMobCl8fCEhKERlJiZsJiZsW0RlXSl9ZnVuY3Rpb24gUm4obCxuKXt2YXIgZD10eXBlb2YgbDtyZXR1cm4gbj1uPz9LbiwhIW4mJihkPT0ibnVtYmVyInx8ZCE9InN5bWJvbCImJkFYLnRlc3QobCkpJiZsPi0xJiZsJTE9PTAmJmw8bn1mdW5jdGlvbiB4bChsLG4sZCl7aWYoIXRsKGQpKXJldHVybiExO3ZhciB1PXR5cGVvZiBuO3JldHVybih1PT0ibnVtYmVyIj9JbChkKSYmUm4obixkLmxlbmd0aCk6dT09InN0cmluZyImJm4gaW4gZCk/bm4oZFtuXSxsKTohMX1mdW5jdGlvbiBodShsLG4pe2lmKEMobCkpcmV0dXJuITE7dmFyIGQ9dHlwZW9mIGw7cmV0dXJuIGQ9PSJudW1iZXIifHxkPT0ic3ltYm9sInx8ZD09ImJvb2xlYW4ifHxsPT1udWxsfHxnbChsKT8hMDpIWC50ZXN0KGwpfHwhdlgudGVzdChsKXx8biE9bnVsbCYmbCBpbiBubChuKX1mdW5jdGlvbiBNVyhsKXt2YXIgbj10eXBlb2YgbDtyZXR1cm4gbj09InN0cmluZyJ8fG49PSJudW1iZXIifHxuPT0ic3ltYm9sInx8bj09ImJvb2xlYW4iP2whPT0iX19wcm90b19fIjpsPT09bnVsbH1mdW5jdGlvbiBWdShsKXt2YXIgbj1ZWihsKSxkPWFbbl07aWYodHlwZW9mIGQhPSJmdW5jdGlvbiJ8fCEobiBpbiBqLnByb3RvdHlwZSkpcmV0dXJuITE7aWYobD09PWQpcmV0dXJuITA7dmFyIHU9cHUoZCk7cmV0dXJuISF1JiZsPT09dVswXX1mdW5jdGlvbiBUVyhsKXtyZXR1cm4hIUJlJiZCZSBpbiBsfXZhciBDVz1sWj9MbjpndTtmdW5jdGlvbiBvZChsKXt2YXIgbj1sJiZsLmNvbnN0cnVjdG9yLGQ9dHlwZW9mIG49PSJmdW5jdGlvbiImJm4ucHJvdG90eXBlfHxmYztyZXR1cm4gbD09PWR9ZnVuY3Rpb24gQm0obCl7cmV0dXJuIGw9PT1sJiYhdGwobCl9ZnVuY3Rpb24gUW0obCxuKXtyZXR1cm4gZnVuY3Rpb24oZCl7cmV0dXJuIGQ9PW51bGw/ITE6ZFtsXT09PW4mJihuIT09dHx8bCBpbiBubChkKSl9fWZ1bmN0aW9uIHdXKGwpe3ZhciBuPUtaKGwsZnVuY3Rpb24odSl7cmV0dXJuIGQuc2l6ZT09PWgmJmQuY2xlYXIoKSx1fSksZD1uLmNhY2hlO3JldHVybiBufWZ1bmN0aW9uIFBXKGwsbil7dmFyIGQ9bFsxXSx1PW5bMV0sbT1kfHUsYj1tPChIfEF8TSksWD11PT1NJiZkPT1HbHx8dT09TSYmZD09emwmJmxbN10ubGVuZ3RoPD1uWzhdfHx1PT0oTXx6bCkmJm5bN10ubGVuZ3RoPD1uWzhdJiZkPT1HbDtpZighKGJ8fFgpKXJldHVybiBsO3UmSCYmKGxbMl09blsyXSxtfD1kJkg/MDpZbCk7dmFyIHA9blszXTtpZihwKXt2YXIgcj1sWzNdO2xbM109cj9mbShyLHAsbls0XSk6cCxsWzRdPXI/em4obFszXSx5KTpuWzRdfXJldHVybiBwPW5bNV0scCYmKHI9bFs1XSxsWzVdPXI/Sm0ocixwLG5bNl0pOnAsbFs2XT1yP3puKGxbNV0seSk6bls2XSkscD1uWzddLHAmJihsWzddPXApLHUmTSYmKGxbOF09bFs4XT09bnVsbD9uWzhdOlJsKGxbOF0sbls4XSkpLGxbOV09PW51bGwmJihsWzldPW5bOV0pLGxbMF09blswXSxsWzFdPW0sbH1mdW5jdGlvbiBCVyhsKXt2YXIgbj1bXTtpZihsIT1udWxsKWZvcih2YXIgZCBpbiBubChsKSluLnB1c2goZCk7cmV0dXJuIG59ZnVuY3Rpb24gUVcobCl7cmV0dXJuIGNaLmNhbGwobCl9ZnVuY3Rpb24gRW0obCxuLGQpe3JldHVybiBuPVhsKG49PT10P2wubGVuZ3RoLTE6biwwKSxmdW5jdGlvbigpe2Zvcih2YXIgdT1hcmd1bWVudHMsbT0tMSxiPVhsKHUubGVuZ3RoLW4sMCksWD1SKGIpOysrbTxiOylYW21dPXVbbittXTttPS0xO2Zvcih2YXIgcD1SKG4rMSk7KyttPG47KXBbbV09dVttXTtyZXR1cm4gcFtuXT1kKFgpLHZsKGwsdGhpcyxwKX19ZnVuY3Rpb24gam0obCxuKXtyZXR1cm4gbi5sZW5ndGg8Mj9sOnVjKGwsUWwobiwwLC0xKSl9ZnVuY3Rpb24gRVcobCxuKXtmb3IodmFyIGQ9bC5sZW5ndGgsdT1SbChuLmxlbmd0aCxkKSxtPUpsKGwpO3UtLTspe3ZhciBiPW5bdV07bFt1XT1SbihiLGQpP21bYl06dH1yZXR1cm4gbH1mdW5jdGlvbiB5dShsLG4pe2lmKCEobj09PSJjb25zdHJ1Y3RvciImJnR5cGVvZiBsW25dPT0iZnVuY3Rpb24iKSYmbiE9Il9fcHJvdG9fXyIpcmV0dXJuIGxbbl19dmFyIERtPUFtKFdtKSxYZD1pcHx8ZnVuY3Rpb24obCxuKXtyZXR1cm4gaGwuc2V0VGltZW91dChsLG4pfSxSdT1BbShzVyk7ZnVuY3Rpb24gT20obCxuLGQpe3ZhciB1PW4rIiI7cmV0dXJuIFJ1KGwsZ1codSxqVyh2Vyh1KSxkKSkpfWZ1bmN0aW9uIEFtKGwpe3ZhciBuPTAsZD0wO3JldHVybiBmdW5jdGlvbigpe3ZhciB1PWJwKCksbT1YWC0odS1kKTtpZihkPXUsbT4wKXtpZigrK24+PW9YKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSBuPTA7cmV0dXJuIGwuYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiB4WihsLG4pe3ZhciBkPS0xLHU9bC5sZW5ndGgsbT11LTE7Zm9yKG49bj09PXQ/dTpuOysrZDxuOyl7dmFyIGI9WnUoZCxtKSxYPWxbYl07bFtiXT1sW2RdLGxbZF09WH1yZXR1cm4gbC5sZW5ndGg9bixsfXZhciBfbT13VyhmdW5jdGlvbihsKXt2YXIgbj1bXTtyZXR1cm4gbC5jaGFyQ29kZUF0KDApPT09NDYmJm4ucHVzaCgiIiksbC5yZXBsYWNlKGtYLGZ1bmN0aW9uKGQsdSxtLGIpe24ucHVzaChtP2IucmVwbGFjZShCWCwiJDEiKTp1fHxkKX0pLG59KTtmdW5jdGlvbiBtbihsKXtpZih0eXBlb2YgbD09InN0cmluZyJ8fGdsKGwpKXJldHVybiBsO3ZhciBuPWwrIiI7cmV0dXJuIG49PSIwIiYmMS9sPT0tbGM/Ii0wIjpufWZ1bmN0aW9uIGVjKGwpe2lmKGwhPW51bGwpe3RyeXtyZXR1cm4gblouY2FsbChsKX1jYXRjaHt9dHJ5e3JldHVybiBsKyIifWNhdGNoe319cmV0dXJuIiJ9ZnVuY3Rpb24galcobCxuKXtyZXR1cm4gQ2woVlgsZnVuY3Rpb24oZCl7dmFyIHU9Il8uIitkWzBdO24mZFsxXSYmIUFkKGwsdSkmJmwucHVzaCh1KX0pLGwuc29ydCgpfWZ1bmN0aW9uIHFtKGwpe2lmKGwgaW5zdGFuY2VvZiBqKXJldHVybiBsLmNsb25lKCk7dmFyIG49bmV3IFBsKGwuX193cmFwcGVkX18sbC5fX2NoYWluX18pO3JldHVybiBuLl9fYWN0aW9uc19fPUpsKGwuX19hY3Rpb25zX18pLG4uX19pbmRleF9fPWwuX19pbmRleF9fLG4uX192YWx1ZXNfXz1sLl9fdmFsdWVzX18sbn1mdW5jdGlvbiBEVyhsLG4sZCl7KGQ/eGwobCxuLGQpOm49PT10KT9uPTE6bj1YbChQKG4pLDApO3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtpZighdXx8bjwxKXJldHVybltdO2Zvcih2YXIgbT0wLGI9MCxYPVIoZVoodS9uKSk7bTx1OylYW2IrK109UWwobCxtLG0rPW4pO3JldHVybiBYfWZ1bmN0aW9uIE9XKGwpe2Zvcih2YXIgbj0tMSxkPWw9PW51bGw/MDpsLmxlbmd0aCx1PTAsbT1bXTsrK248ZDspe3ZhciBiPWxbbl07YiYmKG1bdSsrXT1iKX1yZXR1cm4gbX1mdW5jdGlvbiBBVygpe3ZhciBsPWFyZ3VtZW50cy5sZW5ndGg7aWYoIWwpcmV0dXJuW107Zm9yKHZhciBuPVIobC0xKSxkPWFyZ3VtZW50c1swXSx1PWw7dS0tOyluW3UtMV09YXJndW1lbnRzW3VdO3JldHVybiBObihDKGQpP0psKGQpOltkXSxWbChuLDEpKX12YXIgX1c9UShmdW5jdGlvbihsLG4pe3JldHVybiBpbChsKT9lZChsLFZsKG4sMSxpbCwhMCkpOltdfSkscVc9UShmdW5jdGlvbihsLG4pe3ZhciBkPUVsKG4pO3JldHVybiBpbChkKSYmKGQ9dCksaWwobCk/ZWQobCxWbChuLDEsaWwsITApLGsoZCwyKSk6W119KSwkVz1RKGZ1bmN0aW9uKGwsbil7dmFyIGQ9RWwobik7cmV0dXJuIGlsKGQpJiYoZD10KSxpbChsKT9lZChsLFZsKG4sMSxpbCwhMCksdCxkKTpbXX0pO2Z1bmN0aW9uIGxyKGwsbixkKXt2YXIgdT1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIHU/KG49ZHx8bj09PXQ/MTpQKG4pLFFsKGwsbjwwPzA6bix1KSk6W119ZnVuY3Rpb24gbnIobCxuLGQpe3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtyZXR1cm4gdT8obj1kfHxuPT09dD8xOlAobiksbj11LW4sUWwobCwwLG48MD8wOm4pKTpbXX1mdW5jdGlvbiBjcihsLG4pe3JldHVybiBsJiZsLmxlbmd0aD9yWihsLGsobiwzKSwhMCwhMCk6W119ZnVuY3Rpb24gZHIobCxuKXtyZXR1cm4gbCYmbC5sZW5ndGg/cloobCxrKG4sMyksITApOltdfWZ1bmN0aW9uIFpyKGwsbixkLHUpe3ZhciBtPWw9PW51bGw/MDpsLmxlbmd0aDtyZXR1cm4gbT8oZCYmdHlwZW9mIGQhPSJudW1iZXIiJiZ4bChsLG4sZCkmJihkPTAsdT1tKSxBcChsLG4sZCx1KSk6W119ZnVuY3Rpb24gJG0obCxuLGQpe3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtpZighdSlyZXR1cm4tMTt2YXIgbT1kPT1udWxsPzA6UChkKTtyZXR1cm4gbTwwJiYobT1YbCh1K20sMCkpLF9kKGwsayhuLDMpLG0pfWZ1bmN0aW9uIGxhKGwsbixkKXt2YXIgdT1sPT1udWxsPzA6bC5sZW5ndGg7aWYoIXUpcmV0dXJuLTE7dmFyIG09dS0xO3JldHVybiBkIT09dCYmKG09UChkKSxtPWQ8MD9YbCh1K20sMCk6UmwobSx1LTEpKSxfZChsLGsobiwzKSxtLCEwKX1mdW5jdGlvbiBuYShsKXt2YXIgbj1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIG4/VmwobCwxKTpbXX1mdW5jdGlvbiB0cihsKXt2YXIgbj1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIG4/VmwobCxsYyk6W119ZnVuY3Rpb24gdXIobCxuKXt2YXIgZD1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIGQ/KG49bj09PXQ/MTpQKG4pLFZsKGwsbikpOltdfWZ1bmN0aW9uIGlyKGwpe2Zvcih2YXIgbj0tMSxkPWw9PW51bGw/MDpsLmxlbmd0aCx1PXt9OysrbjxkOyl7dmFyIG09bFtuXTt1W21bMF1dPW1bMV19cmV0dXJuIHV9ZnVuY3Rpb24gY2EobCl7cmV0dXJuIGwmJmwubGVuZ3RoP2xbMF06dH1mdW5jdGlvbiBlcihsLG4sZCl7dmFyIHU9bD09bnVsbD8wOmwubGVuZ3RoO2lmKCF1KXJldHVybi0xO3ZhciBtPWQ9PW51bGw/MDpQKGQpO3JldHVybiBtPDAmJihtPVhsKHUrbSwwKSksTGMobCxuLG0pfWZ1bmN0aW9uIG1yKGwpe3ZhciBuPWw9PW51bGw/MDpsLmxlbmd0aDtyZXR1cm4gbj9RbChsLDAsLTEpOltdfXZhciBhcj1RKGZ1bmN0aW9uKGwpe3ZhciBuPVpsKGwsbXUpO3JldHVybiBuLmxlbmd0aCYmblswXT09PWxbMF0/JHQobik6W119KSxicj1RKGZ1bmN0aW9uKGwpe3ZhciBuPUVsKGwpLGQ9WmwobCxtdSk7cmV0dXJuIG49PT1FbChkKT9uPXQ6ZC5wb3AoKSxkLmxlbmd0aCYmZFswXT09PWxbMF0/JHQoZCxrKG4sMikpOltdfSksR3I9UShmdW5jdGlvbihsKXt2YXIgbj1FbChsKSxkPVpsKGwsbXUpO3JldHVybiBuPXR5cGVvZiBuPT0iZnVuY3Rpb24iP246dCxuJiZkLnBvcCgpLGQubGVuZ3RoJiZkWzBdPT09bFswXT8kdChkLHQsbik6W119KTtmdW5jdGlvbiBvcihsLG4pe3JldHVybiBsPT1udWxsPyIiOm1wLmNhbGwobCxuKX1mdW5jdGlvbiBFbChsKXt2YXIgbj1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIG4/bFtuLTFdOnR9ZnVuY3Rpb24gWHIobCxuLGQpe3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtpZighdSlyZXR1cm4tMTt2YXIgbT11O3JldHVybiBkIT09dCYmKG09UChkKSxtPW08MD9YbCh1K20sMCk6UmwobSx1LTEpKSxuPT09bj9qcyhsLG4sbSk6X2QobCxrZSxtLCEwKX1mdW5jdGlvbiBzcihsLG4pe3JldHVybiBsJiZsLmxlbmd0aD9vbShsLFAobikpOnR9dmFyIHByPVEoZGEpO2Z1bmN0aW9uIGRhKGwsbil7cmV0dXJuIGwmJmwubGVuZ3RoJiZuJiZuLmxlbmd0aD9kdShsLG4pOmx9ZnVuY3Rpb24gV3IobCxuLGQpe3JldHVybiBsJiZsLmxlbmd0aCYmbiYmbi5sZW5ndGg/ZHUobCxuLGsoZCwyKSk6bH1mdW5jdGlvbiBycihsLG4sZCl7cmV0dXJuIGwmJmwubGVuZ3RoJiZuJiZuLmxlbmd0aD9kdShsLG4sdCxkKTpsfXZhciBocj15bihmdW5jdGlvbihsLG4pe3ZhciBkPWw9PW51bGw/MDpsLmxlbmd0aCx1PU90KGwsbik7cmV0dXJuIHBtKGwsWmwobixmdW5jdGlvbihtKXtyZXR1cm4gUm4obSxkKT8rbTptfSkuc29ydCh4bSkpLHV9KTtmdW5jdGlvbiBWcihsLG4pe3ZhciBkPVtdO2lmKCEobCYmbC5sZW5ndGgpKXJldHVybiBkO3ZhciB1PS0xLG09W10sYj1sLmxlbmd0aDtmb3Iobj1rKG4sMyk7Kyt1PGI7KXt2YXIgWD1sW3VdO24oWCx1LGwpJiYoZC5wdXNoKFgpLG0ucHVzaCh1KSl9cmV0dXJuIHBtKGwsbSksZH1mdW5jdGlvbiBMdShsKXtyZXR1cm4gbD09bnVsbD9sOm9wLmNhbGwobCl9ZnVuY3Rpb24geXIobCxuLGQpe3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtyZXR1cm4gdT8oZCYmdHlwZW9mIGQhPSJudW1iZXIiJiZ4bChsLG4sZCk/KG49MCxkPXUpOihuPW49PW51bGw/MDpQKG4pLGQ9ZD09PXQ/dTpQKGQpKSxRbChsLG4sZCkpOltdfWZ1bmN0aW9uIFJyKGwsbil7cmV0dXJuIFdaKGwsbil9ZnVuY3Rpb24gTHIobCxuLGQpe3JldHVybiB1dShsLG4sayhkLDIpKX1mdW5jdGlvbiBZcihsLG4pe3ZhciBkPWw9PW51bGw/MDpsLmxlbmd0aDtpZihkKXt2YXIgdT1XWihsLG4pO2lmKHU8ZCYmbm4obFt1XSxuKSlyZXR1cm4gdX1yZXR1cm4tMX1mdW5jdGlvbiBTcihsLG4pe3JldHVybiBXWihsLG4sITApfWZ1bmN0aW9uIHhyKGwsbixkKXtyZXR1cm4gdXUobCxuLGsoZCwyKSwhMCl9ZnVuY3Rpb24gZnIobCxuKXt2YXIgZD1sPT1udWxsPzA6bC5sZW5ndGg7aWYoZCl7dmFyIHU9V1oobCxuLCEwKS0xO2lmKG5uKGxbdV0sbikpcmV0dXJuIHV9cmV0dXJuLTF9ZnVuY3Rpb24gSnIobCl7cmV0dXJuIGwmJmwubGVuZ3RoP3JtKGwpOltdfWZ1bmN0aW9uIElyKGwsbil7cmV0dXJuIGwmJmwubGVuZ3RoP3JtKGwsayhuLDIpKTpbXX1mdW5jdGlvbiBLcihsKXt2YXIgbj1sPT1udWxsPzA6bC5sZW5ndGg7cmV0dXJuIG4/UWwobCwxLG4pOltdfWZ1bmN0aW9uIEZyKGwsbixkKXtyZXR1cm4gbCYmbC5sZW5ndGg/KG49ZHx8bj09PXQ/MTpQKG4pLFFsKGwsMCxuPDA/MDpuKSk6W119ZnVuY3Rpb24gTnIobCxuLGQpe3ZhciB1PWw9PW51bGw/MDpsLmxlbmd0aDtyZXR1cm4gdT8obj1kfHxuPT09dD8xOlAobiksbj11LW4sUWwobCxuPDA/MDpuLHUpKTpbXX1mdW5jdGlvbiB6cihsLG4pe3JldHVybiBsJiZsLmxlbmd0aD9yWihsLGsobiwzKSwhMSwhMCk6W119ZnVuY3Rpb24gdnIobCxuKXtyZXR1cm4gbCYmbC5sZW5ndGg/cloobCxrKG4sMykpOltdfXZhciBIcj1RKGZ1bmN0aW9uKGwpe3JldHVybiBrbihWbChsLDEsaWwsITApKX0pLGtyPVEoZnVuY3Rpb24obCl7dmFyIG49RWwobCk7cmV0dXJuIGlsKG4pJiYobj10KSxrbihWbChsLDEsaWwsITApLGsobiwyKSl9KSxncj1RKGZ1bmN0aW9uKGwpe3ZhciBuPUVsKGwpO3JldHVybiBuPXR5cGVvZiBuPT0iZnVuY3Rpb24iP246dCxrbihWbChsLDEsaWwsITApLHQsbil9KTtmdW5jdGlvbiBVcihsKXtyZXR1cm4gbCYmbC5sZW5ndGg/a24obCk6W119ZnVuY3Rpb24gTXIobCxuKXtyZXR1cm4gbCYmbC5sZW5ndGg/a24obCxrKG4sMikpOltdfWZ1bmN0aW9uIFRyKGwsbil7cmV0dXJuIG49dHlwZW9mIG49PSJmdW5jdGlvbiI/bjp0LGwmJmwubGVuZ3RoP2tuKGwsdCxuKTpbXX1mdW5jdGlvbiBZdShsKXtpZighKGwmJmwubGVuZ3RoKSlyZXR1cm5bXTt2YXIgbj0wO3JldHVybiBsPUZuKGwsZnVuY3Rpb24oZCl7aWYoaWwoZCkpcmV0dXJuIG49WGwoZC5sZW5ndGgsbiksITB9KSxDdChuLGZ1bmN0aW9uKGQpe3JldHVybiBabChsLFV0KGQpKX0pfWZ1bmN0aW9uIFphKGwsbil7aWYoIShsJiZsLmxlbmd0aCkpcmV0dXJuW107dmFyIGQ9WXUobCk7cmV0dXJuIG49PW51bGw/ZDpabChkLGZ1bmN0aW9uKHUpe3JldHVybiB2bChuLHQsdSl9KX12YXIgQ3I9UShmdW5jdGlvbihsLG4pe3JldHVybiBpbChsKT9lZChsLG4pOltdfSksd3I9UShmdW5jdGlvbihsKXtyZXR1cm4gZXUoRm4obCxpbCkpfSksUHI9UShmdW5jdGlvbihsKXt2YXIgbj1FbChsKTtyZXR1cm4gaWwobikmJihuPXQpLGV1KEZuKGwsaWwpLGsobiwyKSl9KSxCcj1RKGZ1bmN0aW9uKGwpe3ZhciBuPUVsKGwpO3JldHVybiBuPXR5cGVvZiBuPT0iZnVuY3Rpb24iP246dCxldShGbihsLGlsKSx0LG4pfSksUXI9UShZdSk7ZnVuY3Rpb24gRXIobCxuKXtyZXR1cm4gUm0obHx8W10sbnx8W10saWQpfWZ1bmN0aW9uIGpyKGwsbil7cmV0dXJuIFJtKGx8fFtdLG58fFtdLGJkKX12YXIgRHI9UShmdW5jdGlvbihsKXt2YXIgbj1sLmxlbmd0aCxkPW4+MT9sW24tMV06dDtyZXR1cm4gZD10eXBlb2YgZD09ImZ1bmN0aW9uIj8obC5wb3AoKSxkKTp0LFphKGwsZCl9KTtmdW5jdGlvbiB0YShsKXt2YXIgbj1hKGwpO3JldHVybiBuLl9fY2hhaW5fXz0hMCxufWZ1bmN0aW9uIE9yKGwsbil7cmV0dXJuIG4obCksbH1mdW5jdGlvbiBmWihsLG4pe3JldHVybiBuKGwpfXZhciBBcj15bihmdW5jdGlvbihsKXt2YXIgbj1sLmxlbmd0aCxkPW4/bFswXTowLHU9dGhpcy5fX3dyYXBwZWRfXyxtPWZ1bmN0aW9uKGIpe3JldHVybiBPdChiLGwpfTtyZXR1cm4gbj4xfHx0aGlzLl9fYWN0aW9uc19fLmxlbmd0aHx8ISh1IGluc3RhbmNlb2Ygail8fCFSbihkKT90aGlzLnRocnUobSk6KHU9dS5zbGljZShkLCtkKyhuPzE6MCkpLHUuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpmWixhcmdzOlttXSx0aGlzQXJnOnR9KSxuZXcgUGwodSx0aGlzLl9fY2hhaW5fXykudGhydShmdW5jdGlvbihiKXtyZXR1cm4gbiYmIWIubGVuZ3RoJiZiLnB1c2godCksYn0pKX0pO2Z1bmN0aW9uIF9yKCl7cmV0dXJuIHRhKHRoaXMpfWZ1bmN0aW9uIHFyKCl7cmV0dXJuIG5ldyBQbCh0aGlzLnZhbHVlKCksdGhpcy5fX2NoYWluX18pfWZ1bmN0aW9uICRyKCl7dGhpcy5fX3ZhbHVlc19fPT09dCYmKHRoaXMuX192YWx1ZXNfXz1oYSh0aGlzLnZhbHVlKCkpKTt2YXIgbD10aGlzLl9faW5kZXhfXz49dGhpcy5fX3ZhbHVlc19fLmxlbmd0aCxuPWw/dDp0aGlzLl9fdmFsdWVzX19bdGhpcy5fX2luZGV4X18rK107cmV0dXJue2RvbmU6bCx2YWx1ZTpufX1mdW5jdGlvbiBsaCgpe3JldHVybiB0aGlzfWZ1bmN0aW9uIG5oKGwpe2Zvcih2YXIgbixkPXRoaXM7ZCBpbnN0YW5jZW9mIEdaOyl7dmFyIHU9cW0oZCk7dS5fX2luZGV4X189MCx1Ll9fdmFsdWVzX189dCxuP20uX193cmFwcGVkX189dTpuPXU7dmFyIG09dTtkPWQuX193cmFwcGVkX199cmV0dXJuIG0uX193cmFwcGVkX189bCxufWZ1bmN0aW9uIGNoKCl7dmFyIGw9dGhpcy5fX3dyYXBwZWRfXztpZihsIGluc3RhbmNlb2Ygail7dmFyIG49bDtyZXR1cm4gdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgmJihuPW5ldyBqKHRoaXMpKSxuPW4ucmV2ZXJzZSgpLG4uX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpmWixhcmdzOltMdV0sdGhpc0FyZzp0fSksbmV3IFBsKG4sdGhpcy5fX2NoYWluX18pfXJldHVybiB0aGlzLnRocnUoTHUpfWZ1bmN0aW9uIGRoKCl7cmV0dXJuIHltKHRoaXMuX193cmFwcGVkX18sdGhpcy5fX2FjdGlvbnNfXyl9dmFyIFpoPWhaKGZ1bmN0aW9uKGwsbixkKXtsbC5jYWxsKGwsZCk/KytsW2RdOmhuKGwsZCwxKX0pO2Z1bmN0aW9uIHRoKGwsbixkKXt2YXIgdT1DKGwpP3ZlOk9wO3JldHVybiBkJiZ4bChsLG4sZCkmJihuPXQpLHUobCxrKG4sMykpfWZ1bmN0aW9uIHVoKGwsbil7dmFyIGQ9QyhsKT9GbjpabTtyZXR1cm4gZChsLGsobiwzKSl9dmFyIGloPU5tKCRtKSxlaD1ObShsYSk7ZnVuY3Rpb24gbWgobCxuKXtyZXR1cm4gVmwoSloobCxuKSwxKX1mdW5jdGlvbiBhaChsLG4pe3JldHVybiBWbChKWihsLG4pLGxjKX1mdW5jdGlvbiBiaChsLG4sZCl7cmV0dXJuIGQ9ZD09PXQ/MTpQKGQpLFZsKEpaKGwsbiksZCl9ZnVuY3Rpb24gdWEobCxuKXt2YXIgZD1DKGwpP0NsOkhuO3JldHVybiBkKGwsayhuLDMpKX1mdW5jdGlvbiBpYShsLG4pe3ZhciBkPUMobCk/S3M6ZG07cmV0dXJuIGQobCxrKG4sMykpfXZhciBHaD1oWihmdW5jdGlvbihsLG4sZCl7bGwuY2FsbChsLGQpP2xbZF0ucHVzaChuKTpobihsLGQsW25dKX0pO2Z1bmN0aW9uIG9oKGwsbixkLHUpe2w9SWwobCk/bDpIYyhsKSxkPWQmJiF1P1AoZCk6MDt2YXIgbT1sLmxlbmd0aDtyZXR1cm4gZDwwJiYoZD1YbChtK2QsMCkpLHpaKGwpP2Q8PW0mJmwuaW5kZXhPZihuLGQpPi0xOiEhbSYmTGMobCxuLGQpPi0xfXZhciBYaD1RKGZ1bmN0aW9uKGwsbixkKXt2YXIgdT0tMSxtPXR5cGVvZiBuPT0iZnVuY3Rpb24iLGI9SWwobCk/UihsLmxlbmd0aCk6W107cmV0dXJuIEhuKGwsZnVuY3Rpb24oWCl7YlsrK3VdPW0/dmwobixYLGQpOm1kKFgsbixkKX0pLGJ9KSxzaD1oWihmdW5jdGlvbihsLG4sZCl7aG4obCxkLG4pfSk7ZnVuY3Rpb24gSloobCxuKXt2YXIgZD1DKGwpP1psOmFtO3JldHVybiBkKGwsayhuLDMpKX1mdW5jdGlvbiBwaChsLG4sZCx1KXtyZXR1cm4gbD09bnVsbD9bXTooQyhuKXx8KG49bj09bnVsbD9bXTpbbl0pLGQ9dT90OmQsQyhkKXx8KGQ9ZD09bnVsbD9bXTpbZF0pLFhtKGwsbixkKSl9dmFyIFdoPWhaKGZ1bmN0aW9uKGwsbixkKXtsW2Q/MDoxXS5wdXNoKG4pfSxmdW5jdGlvbigpe3JldHVybltbXSxbXV19KTtmdW5jdGlvbiByaChsLG4sZCl7dmFyIHU9QyhsKT9rdDpVZSxtPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gdShsLGsobiw0KSxkLG0sSG4pfWZ1bmN0aW9uIGhoKGwsbixkKXt2YXIgdT1DKGwpP0ZzOlVlLG09YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiB1KGwsayhuLDQpLGQsbSxkbSl9ZnVuY3Rpb24gVmgobCxuKXt2YXIgZD1DKGwpP0ZuOlptO3JldHVybiBkKGwsRlooayhuLDMpKSl9ZnVuY3Rpb24geWgobCl7dmFyIG49QyhsKT8kZTpvVztyZXR1cm4gbihsKX1mdW5jdGlvbiBSaChsLG4sZCl7KGQ/eGwobCxuLGQpOm49PT10KT9uPTE6bj1QKG4pO3ZhciB1PUMobCk/QnA6WFc7cmV0dXJuIHUobCxuKX1mdW5jdGlvbiBMaChsKXt2YXIgbj1DKGwpP1FwOnBXO3JldHVybiBuKGwpfWZ1bmN0aW9uIFloKGwpe2lmKGw9PW51bGwpcmV0dXJuIDA7aWYoSWwobCkpcmV0dXJuIHpaKGwpP1NjKGwpOmwubGVuZ3RoO3ZhciBuPUxsKGwpO3JldHVybiBuPT1fbHx8bj09cWw/bC5zaXplOm51KGwpLmxlbmd0aH1mdW5jdGlvbiBTaChsLG4sZCl7dmFyIHU9QyhsKT9ndDpXVztyZXR1cm4gZCYmeGwobCxuLGQpJiYobj10KSx1KGwsayhuLDMpKX12YXIgeGg9UShmdW5jdGlvbihsLG4pe2lmKGw9PW51bGwpcmV0dXJuW107dmFyIGQ9bi5sZW5ndGg7cmV0dXJuIGQ+MSYmeGwobCxuWzBdLG5bMV0pP249W106ZD4yJiZ4bChuWzBdLG5bMV0sblsyXSkmJihuPVtuWzBdXSksWG0obCxWbChuLDEpLFtdKX0pLElaPXVwfHxmdW5jdGlvbigpe3JldHVybiBobC5EYXRlLm5vdygpfTtmdW5jdGlvbiBmaChsLG4pe2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyB3bChvKTtyZXR1cm4gbD1QKGwpLGZ1bmN0aW9uKCl7aWYoLS1sPDEpcmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBlYShsLG4sZCl7cmV0dXJuIG49ZD90Om4sbj1sJiZuPT1udWxsP2wubGVuZ3RoOm4sVm4obCxNLHQsdCx0LHQsbil9ZnVuY3Rpb24gbWEobCxuKXt2YXIgZDtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7cmV0dXJuIGw9UChsKSxmdW5jdGlvbigpe3JldHVybi0tbD4wJiYoZD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksbDw9MSYmKG49dCksZH19dmFyIFN1PVEoZnVuY3Rpb24obCxuLGQpe3ZhciB1PUg7aWYoZC5sZW5ndGgpe3ZhciBtPXpuKGQsemMoU3UpKTt1fD1ffXJldHVybiBWbihsLHUsbixkLG0pfSksYWE9UShmdW5jdGlvbihsLG4sZCl7dmFyIHU9SHxBO2lmKGQubGVuZ3RoKXt2YXIgbT16bihkLHpjKGFhKSk7dXw9X31yZXR1cm4gVm4obix1LGwsZCxtKX0pO2Z1bmN0aW9uIGJhKGwsbixkKXtuPWQ/dDpuO3ZhciB1PVZuKGwsR2wsdCx0LHQsdCx0LG4pO3JldHVybiB1LnBsYWNlaG9sZGVyPWJhLnBsYWNlaG9sZGVyLHV9ZnVuY3Rpb24gR2EobCxuLGQpe249ZD90Om47dmFyIHU9Vm4obCxabix0LHQsdCx0LHQsbik7cmV0dXJuIHUucGxhY2Vob2xkZXI9R2EucGxhY2Vob2xkZXIsdX1mdW5jdGlvbiBvYShsLG4sZCl7dmFyIHUsbSxiLFgscCxyLFM9MCxmPSExLEo9ITEsSz0hMDtpZih0eXBlb2YgbCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7bj1qbChuKXx8MCx0bChkKSYmKGY9ISFkLmxlYWRpbmcsSj0ibWF4V2FpdCJpbiBkLGI9Sj9YbChqbChkLm1heFdhaXQpfHwwLG4pOmIsSz0idHJhaWxpbmciaW4gZD8hIWQudHJhaWxpbmc6Syk7ZnVuY3Rpb24gTihlbCl7dmFyIGNuPXUsU249bTtyZXR1cm4gdT1tPXQsUz1lbCxYPWwuYXBwbHkoU24sY24pLFh9ZnVuY3Rpb24gZyhlbCl7cmV0dXJuIFM9ZWwscD1YZChFLG4pLGY/TihlbCk6WH1mdW5jdGlvbiBCKGVsKXt2YXIgY249ZWwtcixTbj1lbC1TLE5hPW4tY247cmV0dXJuIEo/UmwoTmEsYi1Tbik6TmF9ZnVuY3Rpb24gVShlbCl7dmFyIGNuPWVsLXIsU249ZWwtUztyZXR1cm4gcj09PXR8fGNuPj1ufHxjbjwwfHxKJiZTbj49Yn1mdW5jdGlvbiBFKCl7dmFyIGVsPUlaKCk7aWYoVShlbCkpcmV0dXJuIEQoZWwpO3A9WGQoRSxCKGVsKSl9ZnVuY3Rpb24gRChlbCl7cmV0dXJuIHA9dCxLJiZ1P04oZWwpOih1PW09dCxYKX1mdW5jdGlvbiBVbCgpe3AhPT10JiZMbShwKSxTPTAsdT1yPW09cD10fWZ1bmN0aW9uIGZsKCl7cmV0dXJuIHA9PT10P1g6RChJWigpKX1mdW5jdGlvbiBNbCgpe3ZhciBlbD1JWigpLGNuPVUoZWwpO2lmKHU9YXJndW1lbnRzLG09dGhpcyxyPWVsLGNuKXtpZihwPT09dClyZXR1cm4gZyhyKTtpZihKKXJldHVybiBMbShwKSxwPVhkKEUsbiksTihyKX1yZXR1cm4gcD09PXQmJihwPVhkKEUsbikpLFh9cmV0dXJuIE1sLmNhbmNlbD1VbCxNbC5mbHVzaD1mbCxNbH12YXIgSmg9UShmdW5jdGlvbihsLG4pe3JldHVybiBjbShsLDEsbil9KSxJaD1RKGZ1bmN0aW9uKGwsbixkKXtyZXR1cm4gY20obCxqbChuKXx8MCxkKX0pO2Z1bmN0aW9uIEtoKGwpe3JldHVybiBWbihsLGpjKX1mdW5jdGlvbiBLWihsLG4pe2lmKHR5cGVvZiBsIT0iZnVuY3Rpb24ifHxuIT1udWxsJiZ0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7dmFyIGQ9ZnVuY3Rpb24oKXt2YXIgdT1hcmd1bWVudHMsbT1uP24uYXBwbHkodGhpcyx1KTp1WzBdLGI9ZC5jYWNoZTtpZihiLmhhcyhtKSlyZXR1cm4gYi5nZXQobSk7dmFyIFg9bC5hcHBseSh0aGlzLHUpO3JldHVybiBkLmNhY2hlPWIuc2V0KG0sWCl8fGIsWH07cmV0dXJuIGQuY2FjaGU9bmV3KEtaLkNhY2hlfHxybiksZH1LWi5DYWNoZT1ybjtmdW5jdGlvbiBGWihsKXtpZih0eXBlb2YgbCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzO3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiFsLmNhbGwodGhpcyk7Y2FzZSAxOnJldHVybiFsLmNhbGwodGhpcyxuWzBdKTtjYXNlIDI6cmV0dXJuIWwuY2FsbCh0aGlzLG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiFsLmNhbGwodGhpcyxuWzBdLG5bMV0sblsyXSl9cmV0dXJuIWwuYXBwbHkodGhpcyxuKX19ZnVuY3Rpb24gRmgobCl7cmV0dXJuIG1hKDIsbCl9dmFyIE5oPXJXKGZ1bmN0aW9uKGwsbil7bj1uLmxlbmd0aD09MSYmQyhuWzBdKT9abChuWzBdLEhsKGsoKSkpOlpsKFZsKG4sMSksSGwoaygpKSk7dmFyIGQ9bi5sZW5ndGg7cmV0dXJuIFEoZnVuY3Rpb24odSl7Zm9yKHZhciBtPS0xLGI9UmwodS5sZW5ndGgsZCk7KyttPGI7KXVbbV09blttXS5jYWxsKHRoaXMsdVttXSk7cmV0dXJuIHZsKGwsdGhpcyx1KX0pfSkseHU9UShmdW5jdGlvbihsLG4pe3ZhciBkPXpuKG4semMoeHUpKTtyZXR1cm4gVm4obCxfLHQsbixkKX0pLFhhPVEoZnVuY3Rpb24obCxuKXt2YXIgZD16bihuLHpjKFhhKSk7cmV0dXJuIFZuKGwscmwsdCxuLGQpfSksemg9eW4oZnVuY3Rpb24obCxuKXtyZXR1cm4gVm4obCx6bCx0LHQsdCxuKX0pO2Z1bmN0aW9uIHZoKGwsbil7aWYodHlwZW9mIGwhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHdsKG8pO3JldHVybiBuPW49PT10P246UChuKSxRKGwsbil9ZnVuY3Rpb24gSGgobCxuKXtpZih0eXBlb2YgbCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgd2wobyk7cmV0dXJuIG49bj09bnVsbD8wOlhsKFAobiksMCksUShmdW5jdGlvbihkKXt2YXIgdT1kW25dLG09VW4oZCwwLG4pO3JldHVybiB1JiZObihtLHUpLHZsKGwsdGhpcyxtKX0pfWZ1bmN0aW9uIGtoKGwsbixkKXt2YXIgdT0hMCxtPSEwO2lmKHR5cGVvZiBsIT0iZnVuY3Rpb24iKXRocm93IG5ldyB3bChvKTtyZXR1cm4gdGwoZCkmJih1PSJsZWFkaW5nImluIGQ/ISFkLmxlYWRpbmc6dSxtPSJ0cmFpbGluZyJpbiBkPyEhZC50cmFpbGluZzptKSxvYShsLG4se2xlYWRpbmc6dSxtYXhXYWl0Om4sdHJhaWxpbmc6bX0pfWZ1bmN0aW9uIGdoKGwpe3JldHVybiBlYShsLDEpfWZ1bmN0aW9uIFVoKGwsbil7cmV0dXJuIHh1KGF1KG4pLGwpfWZ1bmN0aW9uIE1oKCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW107dmFyIGw9YXJndW1lbnRzWzBdO3JldHVybiBDKGwpP2w6W2xdfWZ1bmN0aW9uIFRoKGwpe3JldHVybiBCbChsLEkpfWZ1bmN0aW9uIENoKGwsbil7cmV0dXJuIG49dHlwZW9mIG49PSJmdW5jdGlvbiI/bjp0LEJsKGwsSSxuKX1mdW5jdGlvbiB3aChsKXtyZXR1cm4gQmwobCxMfEkpfWZ1bmN0aW9uIFBoKGwsbil7cmV0dXJuIG49dHlwZW9mIG49PSJmdW5jdGlvbiI/bjp0LEJsKGwsTHxJLG4pfWZ1bmN0aW9uIEJoKGwsbil7cmV0dXJuIG49PW51bGx8fG5tKGwsbixwbChuKSl9ZnVuY3Rpb24gbm4obCxuKXtyZXR1cm4gbD09PW58fGwhPT1sJiZuIT09bn12YXIgUWg9TFoocXQpLEVoPUxaKGZ1bmN0aW9uKGwsbil7cmV0dXJuIGw+PW59KSxtYz1pbShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP2ltOmZ1bmN0aW9uKGwpe3JldHVybiB1bChsKSYmbGwuY2FsbChsLCJjYWxsZWUiKSYmIWplLmNhbGwobCwiY2FsbGVlIil9LEM9Ui5pc0FycmF5LGpoPUplP0hsKEplKTpuVztmdW5jdGlvbiBJbChsKXtyZXR1cm4gbCE9bnVsbCYmTloobC5sZW5ndGgpJiYhTG4obCl9ZnVuY3Rpb24gaWwobCl7cmV0dXJuIHVsKGwpJiZJbChsKX1mdW5jdGlvbiBEaChsKXtyZXR1cm4gbD09PSEwfHxsPT09ITF8fHVsKGwpJiZTbChsKT09RGN9dmFyIE1uPWVwfHxndSxPaD1JZT9IbChJZSk6Y1c7ZnVuY3Rpb24gQWgobCl7cmV0dXJuIHVsKGwpJiZsLm5vZGVUeXBlPT09MSYmIXNkKGwpfWZ1bmN0aW9uIF9oKGwpe2lmKGw9PW51bGwpcmV0dXJuITA7aWYoSWwobCkmJihDKGwpfHx0eXBlb2YgbD09InN0cmluZyJ8fHR5cGVvZiBsLnNwbGljZT09ImZ1bmN0aW9uInx8TW4obCl8fHZjKGwpfHxtYyhsKSkpcmV0dXJuIWwubGVuZ3RoO3ZhciBuPUxsKGwpO2lmKG49PV9sfHxuPT1xbClyZXR1cm4hbC5zaXplO2lmKG9kKGwpKXJldHVybiFudShsKS5sZW5ndGg7Zm9yKHZhciBkIGluIGwpaWYobGwuY2FsbChsLGQpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHFoKGwsbil7cmV0dXJuIGFkKGwsbil9ZnVuY3Rpb24gJGgobCxuLGQpe2Q9dHlwZW9mIGQ9PSJmdW5jdGlvbiI/ZDp0O3ZhciB1PWQ/ZChsLG4pOnQ7cmV0dXJuIHU9PT10P2FkKGwsbix0LGQpOiEhdX1mdW5jdGlvbiBmdShsKXtpZighdWwobCkpcmV0dXJuITE7dmFyIG49U2wobCk7cmV0dXJuIG49PUJkfHxuPT1SWHx8dHlwZW9mIGwubWVzc2FnZT09InN0cmluZyImJnR5cGVvZiBsLm5hbWU9PSJzdHJpbmciJiYhc2QobCl9ZnVuY3Rpb24gbFYobCl7cmV0dXJuIHR5cGVvZiBsPT0ibnVtYmVyIiYmT2UobCl9ZnVuY3Rpb24gTG4obCl7aWYoIXRsKGwpKXJldHVybiExO3ZhciBuPVNsKGwpO3JldHVybiBuPT1RZHx8bj09Y2V8fG49PXlYfHxuPT1ZWH1mdW5jdGlvbiBzYShsKXtyZXR1cm4gdHlwZW9mIGw9PSJudW1iZXIiJiZsPT1QKGwpfWZ1bmN0aW9uIE5aKGwpe3JldHVybiB0eXBlb2YgbD09Im51bWJlciImJmw+LTEmJmwlMT09MCYmbDw9S259ZnVuY3Rpb24gdGwobCl7dmFyIG49dHlwZW9mIGw7cmV0dXJuIGwhPW51bGwmJihuPT0ib2JqZWN0Inx8bj09ImZ1bmN0aW9uIil9ZnVuY3Rpb24gdWwobCl7cmV0dXJuIGwhPW51bGwmJnR5cGVvZiBsPT0ib2JqZWN0In12YXIgcGE9S2U/SGwoS2UpOlpXO2Z1bmN0aW9uIG5WKGwsbil7cmV0dXJuIGw9PT1ufHxsdShsLG4sV3UobikpfWZ1bmN0aW9uIGNWKGwsbixkKXtyZXR1cm4gZD10eXBlb2YgZD09ImZ1bmN0aW9uIj9kOnQsbHUobCxuLFd1KG4pLGQpfWZ1bmN0aW9uIGRWKGwpe3JldHVybiBXYShsKSYmbCE9K2x9ZnVuY3Rpb24gWlYobCl7aWYoQ1cobCkpdGhyb3cgbmV3IFQoRyk7cmV0dXJuIGVtKGwpfWZ1bmN0aW9uIHRWKGwpe3JldHVybiBsPT09bnVsbH1mdW5jdGlvbiB1VihsKXtyZXR1cm4gbD09bnVsbH1mdW5jdGlvbiBXYShsKXtyZXR1cm4gdHlwZW9mIGw9PSJudW1iZXIifHx1bChsKSYmU2wobCk9PUFjfWZ1bmN0aW9uIHNkKGwpe2lmKCF1bChsKXx8U2wobCkhPXBuKXJldHVybiExO3ZhciBuPXRaKGwpO2lmKG49PT1udWxsKXJldHVybiEwO3ZhciBkPWxsLmNhbGwobiwiY29uc3RydWN0b3IiKSYmbi5jb25zdHJ1Y3RvcjtyZXR1cm4gdHlwZW9mIGQ9PSJmdW5jdGlvbiImJmQgaW5zdGFuY2VvZiBkJiZuWi5jYWxsKGQpPT1jcH12YXIgSnU9RmU/SGwoRmUpOnRXO2Z1bmN0aW9uIGlWKGwpe3JldHVybiBzYShsKSYmbD49LUtuJiZsPD1Lbn12YXIgcmE9TmU/SGwoTmUpOnVXO2Z1bmN0aW9uIHpaKGwpe3JldHVybiB0eXBlb2YgbD09InN0cmluZyJ8fCFDKGwpJiZ1bChsKSYmU2wobCk9PXFjfWZ1bmN0aW9uIGdsKGwpe3JldHVybiB0eXBlb2YgbD09InN5bWJvbCJ8fHVsKGwpJiZTbChsKT09RWR9dmFyIHZjPXplP0hsKHplKTppVztmdW5jdGlvbiBlVihsKXtyZXR1cm4gbD09PXR9ZnVuY3Rpb24gbVYobCl7cmV0dXJuIHVsKGwpJiZMbChsKT09JGN9ZnVuY3Rpb24gYVYobCl7cmV0dXJuIHVsKGwpJiZTbChsKT09eFh9dmFyIGJWPUxaKGN1KSxHVj1MWihmdW5jdGlvbihsLG4pe3JldHVybiBsPD1ufSk7ZnVuY3Rpb24gaGEobCl7aWYoIWwpcmV0dXJuW107aWYoSWwobCkpcmV0dXJuIHpaKGwpPyRsKGwpOkpsKGwpO2lmKGNkJiZsW2NkXSlyZXR1cm4gQnMobFtjZF0oKSk7dmFyIG49TGwobCksZD1uPT1fbD9QdDpuPT1xbD9xZDpIYztyZXR1cm4gZChsKX1mdW5jdGlvbiBZbihsKXtpZighbClyZXR1cm4gbD09PTA/bDowO2lmKGw9amwobCksbD09PWxjfHxsPT09LWxjKXt2YXIgbj1sPDA/LTE6MTtyZXR1cm4gbipXWH1yZXR1cm4gbD09PWw/bDowfWZ1bmN0aW9uIFAobCl7dmFyIG49WW4obCksZD1uJTE7cmV0dXJuIG49PT1uP2Q/bi1kOm46MH1mdW5jdGlvbiBWYShsKXtyZXR1cm4gbD90YyhQKGwpLDAsdG4pOjB9ZnVuY3Rpb24gamwobCl7aWYodHlwZW9mIGw9PSJudW1iZXIiKXJldHVybiBsO2lmKGdsKGwpKXJldHVybiB3ZDtpZih0bChsKSl7dmFyIG49dHlwZW9mIGwudmFsdWVPZj09ImZ1bmN0aW9uIj9sLnZhbHVlT2YoKTpsO2w9dGwobik/bisiIjpufWlmKHR5cGVvZiBsIT0ic3RyaW5nIilyZXR1cm4gbD09PTA/bDorbDtsPU1lKGwpO3ZhciBkPWpYLnRlc3QobCk7cmV0dXJuIGR8fE9YLnRlc3QobCk/ZnMobC5zbGljZSgyKSxkPzI6OCk6RVgudGVzdChsKT93ZDorbH1mdW5jdGlvbiB5YShsKXtyZXR1cm4gZW4obCxLbChsKSl9ZnVuY3Rpb24gb1YobCl7cmV0dXJuIGw/dGMoUChsKSwtS24sS24pOmw9PT0wP2w6MH1mdW5jdGlvbiBxKGwpe3JldHVybiBsPT1udWxsPyIiOmtsKGwpfXZhciBYVj1GYyhmdW5jdGlvbihsLG4pe2lmKG9kKG4pfHxJbChuKSl7ZW4obixwbChuKSxsKTtyZXR1cm59Zm9yKHZhciBkIGluIG4pbGwuY2FsbChuLGQpJiZpZChsLGQsbltkXSl9KSxSYT1GYyhmdW5jdGlvbihsLG4pe2VuKG4sS2wobiksbCl9KSx2Wj1GYyhmdW5jdGlvbihsLG4sZCx1KXtlbihuLEtsKG4pLGwsdSl9KSxzVj1GYyhmdW5jdGlvbihsLG4sZCx1KXtlbihuLHBsKG4pLGwsdSl9KSxwVj15bihPdCk7ZnVuY3Rpb24gV1YobCxuKXt2YXIgZD1LYyhsKTtyZXR1cm4gbj09bnVsbD9kOmxtKGQsbil9dmFyIHJWPVEoZnVuY3Rpb24obCxuKXtsPW5sKGwpO3ZhciBkPS0xLHU9bi5sZW5ndGgsbT11PjI/blsyXTp0O2ZvcihtJiZ4bChuWzBdLG5bMV0sbSkmJih1PTEpOysrZDx1Oylmb3IodmFyIGI9bltkXSxYPUtsKGIpLHA9LTEscj1YLmxlbmd0aDsrK3A8cjspe3ZhciBTPVhbcF0sZj1sW1NdOyhmPT09dHx8bm4oZixmY1tTXSkmJiFsbC5jYWxsKGwsUykpJiYobFtTXT1iW1NdKX1yZXR1cm4gbH0pLGhWPVEoZnVuY3Rpb24obCl7cmV0dXJuIGwucHVzaCh0LE1tKSx2bChMYSx0LGwpfSk7ZnVuY3Rpb24gVlYobCxuKXtyZXR1cm4gSGUobCxrKG4sMyksdW4pfWZ1bmN0aW9uIHlWKGwsbil7cmV0dXJuIEhlKGwsayhuLDMpLF90KX1mdW5jdGlvbiBSVihsLG4pe3JldHVybiBsPT1udWxsP2w6QXQobCxrKG4sMyksS2wpfWZ1bmN0aW9uIExWKGwsbil7cmV0dXJuIGw9PW51bGw/bDp0bShsLGsobiwzKSxLbCl9ZnVuY3Rpb24gWVYobCxuKXtyZXR1cm4gbCYmdW4obCxrKG4sMykpfWZ1bmN0aW9uIFNWKGwsbil7cmV0dXJuIGwmJl90KGwsayhuLDMpKX1mdW5jdGlvbiB4VihsKXtyZXR1cm4gbD09bnVsbD9bXTpzWihsLHBsKGwpKX1mdW5jdGlvbiBmVihsKXtyZXR1cm4gbD09bnVsbD9bXTpzWihsLEtsKGwpKX1mdW5jdGlvbiBJdShsLG4sZCl7dmFyIHU9bD09bnVsbD90OnVjKGwsbik7cmV0dXJuIHU9PT10P2Q6dX1mdW5jdGlvbiBKVihsLG4pe3JldHVybiBsIT1udWxsJiZ3bShsLG4sX3ApfWZ1bmN0aW9uIEt1KGwsbil7cmV0dXJuIGwhPW51bGwmJndtKGwsbixxcCl9dmFyIElWPXZtKGZ1bmN0aW9uKGwsbixkKXtuIT1udWxsJiZ0eXBlb2Ygbi50b1N0cmluZyE9ImZ1bmN0aW9uIiYmKG49Y1ouY2FsbChuKSksbFtuXT1kfSxOdShGbCkpLEtWPXZtKGZ1bmN0aW9uKGwsbixkKXtuIT1udWxsJiZ0eXBlb2Ygbi50b1N0cmluZyE9ImZ1bmN0aW9uIiYmKG49Y1ouY2FsbChuKSksbGwuY2FsbChsLG4pP2xbbl0ucHVzaChkKTpsW25dPVtkXX0sayksRlY9UShtZCk7ZnVuY3Rpb24gcGwobCl7cmV0dXJuIElsKGwpP3FlKGwpOm51KGwpfWZ1bmN0aW9uIEtsKGwpe3JldHVybiBJbChsKT9xZShsLCEwKTplVyhsKX1mdW5jdGlvbiBOVihsLG4pe3ZhciBkPXt9O3JldHVybiBuPWsobiwzKSx1bihsLGZ1bmN0aW9uKHUsbSxiKXtobihkLG4odSxtLGIpLHUpfSksZH1mdW5jdGlvbiB6VihsLG4pe3ZhciBkPXt9O3JldHVybiBuPWsobiwzKSx1bihsLGZ1bmN0aW9uKHUsbSxiKXtobihkLG0sbih1LG0sYikpfSksZH12YXIgdlY9RmMoZnVuY3Rpb24obCxuLGQpe3BaKGwsbixkKX0pLExhPUZjKGZ1bmN0aW9uKGwsbixkLHUpe3BaKGwsbixkLHUpfSksSFY9eW4oZnVuY3Rpb24obCxuKXt2YXIgZD17fTtpZihsPT1udWxsKXJldHVybiBkO3ZhciB1PSExO249WmwobixmdW5jdGlvbihiKXtyZXR1cm4gYj1nbihiLGwpLHV8fCh1PWIubGVuZ3RoPjEpLGJ9KSxlbihsLHN1KGwpLGQpLHUmJihkPUJsKGQsTHx4fEksSVcpKTtmb3IodmFyIG09bi5sZW5ndGg7bS0tOylpdShkLG5bbV0pO3JldHVybiBkfSk7ZnVuY3Rpb24ga1YobCxuKXtyZXR1cm4gWWEobCxGWihrKG4pKSl9dmFyIGdWPXluKGZ1bmN0aW9uKGwsbil7cmV0dXJuIGw9PW51bGw/e306YVcobCxuKX0pO2Z1bmN0aW9uIFlhKGwsbil7aWYobD09bnVsbClyZXR1cm57fTt2YXIgZD1abChzdShsKSxmdW5jdGlvbih1KXtyZXR1cm5bdV19KTtyZXR1cm4gbj1rKG4pLHNtKGwsZCxmdW5jdGlvbih1LG0pe3JldHVybiBuKHUsbVswXSl9KX1mdW5jdGlvbiBVVihsLG4sZCl7bj1nbihuLGwpO3ZhciB1PS0xLG09bi5sZW5ndGg7Zm9yKG18fChtPTEsbD10KTsrK3U8bTspe3ZhciBiPWw9PW51bGw/dDpsW21uKG5bdV0pXTtiPT09dCYmKHU9bSxiPWQpLGw9TG4oYik/Yi5jYWxsKGwpOmJ9cmV0dXJuIGx9ZnVuY3Rpb24gTVYobCxuLGQpe3JldHVybiBsPT1udWxsP2w6YmQobCxuLGQpfWZ1bmN0aW9uIFRWKGwsbixkLHUpe3JldHVybiB1PXR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6dCxsPT1udWxsP2w6YmQobCxuLGQsdSl9dmFyIFNhPWdtKHBsKSx4YT1nbShLbCk7ZnVuY3Rpb24gQ1YobCxuLGQpe3ZhciB1PUMobCksbT11fHxNbihsKXx8dmMobCk7aWYobj1rKG4sNCksZD09bnVsbCl7dmFyIGI9bCYmbC5jb25zdHJ1Y3RvcjttP2Q9dT9uZXcgYjpbXTp0bChsKT9kPUxuKGIpP0tjKHRaKGwpKTp7fTpkPXt9fXJldHVybihtP0NsOnVuKShsLGZ1bmN0aW9uKFgscCxyKXtyZXR1cm4gbihkLFgscCxyKX0pLGR9ZnVuY3Rpb24gd1YobCxuKXtyZXR1cm4gbD09bnVsbD8hMDppdShsLG4pfWZ1bmN0aW9uIFBWKGwsbixkKXtyZXR1cm4gbD09bnVsbD9sOlZtKGwsbixhdShkKSl9ZnVuY3Rpb24gQlYobCxuLGQsdSl7cmV0dXJuIHU9dHlwZW9mIHU9PSJmdW5jdGlvbiI/dTp0LGw9PW51bGw/bDpWbShsLG4sYXUoZCksdSl9ZnVuY3Rpb24gSGMobCl7cmV0dXJuIGw9PW51bGw/W106d3QobCxwbChsKSl9ZnVuY3Rpb24gUVYobCl7cmV0dXJuIGw9PW51bGw/W106d3QobCxLbChsKSl9ZnVuY3Rpb24gRVYobCxuLGQpe3JldHVybiBkPT09dCYmKGQ9bixuPXQpLGQhPT10JiYoZD1qbChkKSxkPWQ9PT1kP2Q6MCksbiE9PXQmJihuPWpsKG4pLG49bj09PW4/bjowKSx0YyhqbChsKSxuLGQpfWZ1bmN0aW9uIGpWKGwsbixkKXtyZXR1cm4gbj1ZbihuKSxkPT09dD8oZD1uLG49MCk6ZD1ZbihkKSxsPWpsKGwpLCRwKGwsbixkKX1mdW5jdGlvbiBEVihsLG4sZCl7aWYoZCYmdHlwZW9mIGQhPSJib29sZWFuIiYmeGwobCxuLGQpJiYobj1kPXQpLGQ9PT10JiYodHlwZW9mIG49PSJib29sZWFuIj8oZD1uLG49dCk6dHlwZW9mIGw9PSJib29sZWFuIiYmKGQ9bCxsPXQpKSxsPT09dCYmbj09PXQ/KGw9MCxuPTEpOihsPVluKGwpLG49PT10PyhuPWwsbD0wKTpuPVluKG4pKSxsPm4pe3ZhciB1PWw7bD1uLG49dX1pZihkfHxsJTF8fG4lMSl7dmFyIG09QWUoKTtyZXR1cm4gUmwobCttKihuLWwreHMoIjFlLSIrKChtKyIiKS5sZW5ndGgtMSkpKSxuKX1yZXR1cm4gWnUobCxuKX12YXIgT1Y9TmMoZnVuY3Rpb24obCxuLGQpe3JldHVybiBuPW4udG9Mb3dlckNhc2UoKSxsKyhkP2ZhKG4pOm4pfSk7ZnVuY3Rpb24gZmEobCl7cmV0dXJuIEZ1KHEobCkudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gSmEobCl7cmV0dXJuIGw9cShsKSxsJiZsLnJlcGxhY2UoX1gsTXMpLnJlcGxhY2UocHMsIiIpfWZ1bmN0aW9uIEFWKGwsbixkKXtsPXEobCksbj1rbChuKTt2YXIgdT1sLmxlbmd0aDtkPWQ9PT10P3U6dGMoUChkKSwwLHUpO3ZhciBtPWQ7cmV0dXJuIGQtPW4ubGVuZ3RoLGQ+PTAmJmwuc2xpY2UoZCxtKT09bn1mdW5jdGlvbiBfVihsKXtyZXR1cm4gbD1xKGwpLGwmJkZYLnRlc3QobCk/bC5yZXBsYWNlKHRlLFRzKTpsfWZ1bmN0aW9uIHFWKGwpe3JldHVybiBsPXEobCksbCYmZ1gudGVzdChsKT9sLnJlcGxhY2UoeHQsIlxcJCYiKTpsfXZhciAkVj1OYyhmdW5jdGlvbihsLG4sZCl7cmV0dXJuIGwrKGQ/Ii0iOiIiKStuLnRvTG93ZXJDYXNlKCl9KSxseT1OYyhmdW5jdGlvbihsLG4sZCl7cmV0dXJuIGwrKGQ/IiAiOiIiKStuLnRvTG93ZXJDYXNlKCl9KSxueT1GbSgidG9Mb3dlckNhc2UiKTtmdW5jdGlvbiBjeShsLG4sZCl7bD1xKGwpLG49UChuKTt2YXIgdT1uP1NjKGwpOjA7aWYoIW58fHU+PW4pcmV0dXJuIGw7dmFyIG09KG4tdSkvMjtyZXR1cm4gUloobVoobSksZCkrbCtSWihlWihtKSxkKX1mdW5jdGlvbiBkeShsLG4sZCl7bD1xKGwpLG49UChuKTt2YXIgdT1uP1NjKGwpOjA7cmV0dXJuIG4mJnU8bj9sK1JaKG4tdSxkKTpsfWZ1bmN0aW9uIFp5KGwsbixkKXtsPXEobCksbj1QKG4pO3ZhciB1PW4/U2MobCk6MDtyZXR1cm4gbiYmdTxuP1JaKG4tdSxkKStsOmx9ZnVuY3Rpb24gdHkobCxuLGQpe3JldHVybiBkfHxuPT1udWxsP249MDpuJiYobj0rbiksR3AocShsKS5yZXBsYWNlKGZ0LCIiKSxufHwwKX1mdW5jdGlvbiB1eShsLG4sZCl7cmV0dXJuKGQ/eGwobCxuLGQpOm49PT10KT9uPTE6bj1QKG4pLHR1KHEobCksbil9ZnVuY3Rpb24gaXkoKXt2YXIgbD1hcmd1bWVudHMsbj1xKGxbMF0pO3JldHVybiBsLmxlbmd0aDwzP246bi5yZXBsYWNlKGxbMV0sbFsyXSl9dmFyIGV5PU5jKGZ1bmN0aW9uKGwsbixkKXtyZXR1cm4gbCsoZD8iXyI6IiIpK24udG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIG15KGwsbixkKXtyZXR1cm4gZCYmdHlwZW9mIGQhPSJudW1iZXIiJiZ4bChsLG4sZCkmJihuPWQ9dCksZD1kPT09dD90bjpkPj4+MCxkPyhsPXEobCksbCYmKHR5cGVvZiBuPT0ic3RyaW5nInx8biE9bnVsbCYmIUp1KG4pKSYmKG49a2wobiksIW4mJlljKGwpKT9VbigkbChsKSwwLGQpOmwuc3BsaXQobixkKSk6W119dmFyIGF5PU5jKGZ1bmN0aW9uKGwsbixkKXtyZXR1cm4gbCsoZD8iICI6IiIpK0Z1KG4pfSk7ZnVuY3Rpb24gYnkobCxuLGQpe3JldHVybiBsPXEobCksZD1kPT1udWxsPzA6dGMoUChkKSwwLGwubGVuZ3RoKSxuPWtsKG4pLGwuc2xpY2UoZCxkK24ubGVuZ3RoKT09bn1mdW5jdGlvbiBHeShsLG4sZCl7dmFyIHU9YS50ZW1wbGF0ZVNldHRpbmdzO2QmJnhsKGwsbixkKSYmKG49dCksbD1xKGwpLG49dlooe30sbix1LFVtKTt2YXIgbT12Wih7fSxuLmltcG9ydHMsdS5pbXBvcnRzLFVtKSxiPXBsKG0pLFg9d3QobSxiKSxwLHIsUz0wLGY9bi5pbnRlcnBvbGF0ZXx8amQsSj0iX19wICs9ICciLEs9QnQoKG4uZXNjYXBlfHxqZCkuc291cmNlKyJ8IitmLnNvdXJjZSsifCIrKGY9PT11ZT9RWDpqZCkuc291cmNlKyJ8Iisobi5ldmFsdWF0ZXx8amQpLnNvdXJjZSsifCQiLCJnIiksTj0iLy8jIHNvdXJjZVVSTD0iKyhsbC5jYWxsKG4sInNvdXJjZVVSTCIpPyhuLnNvdXJjZVVSTCsiIikucmVwbGFjZSgvXHMvZywiICIpOiJsb2Rhc2gudGVtcGxhdGVTb3VyY2VzWyIrICsreXMrIl0iKStgCmA7bC5yZXBsYWNlKEssZnVuY3Rpb24oVSxFLEQsVWwsZmwsTWwpe3JldHVybiBEfHwoRD1VbCksSis9bC5zbGljZShTLE1sKS5yZXBsYWNlKHFYLENzKSxFJiYocD0hMCxKKz1gJyArCl9fZShgK0UrYCkgKwonYCksZmwmJihyPSEwLEorPWAnOwpgK2ZsK2A7Cl9fcCArPSAnYCksRCYmKEorPWAnICsKKChfX3QgPSAoYCtEK2ApKSA9PSBudWxsID8gJycgOiBfX3QpICsKJ2ApLFM9TWwrVS5sZW5ndGgsVX0pLEorPWAnOwpgO3ZhciBnPWxsLmNhbGwobiwidmFyaWFibGUiKSYmbi52YXJpYWJsZTtpZighZylKPWB3aXRoIChvYmopIHsKYCtKK2AKfQpgO2Vsc2UgaWYoUFgudGVzdChnKSl0aHJvdyBuZXcgVChzKTtKPShyP0oucmVwbGFjZShmWCwiIik6SikucmVwbGFjZShKWCwiJDEiKS5yZXBsYWNlKElYLCIkMTsiKSxKPSJmdW5jdGlvbigiKyhnfHwib2JqIikrYCkgewpgKyhnPyIiOmBvYmogfHwgKG9iaiA9IHt9KTsKYCkrInZhciBfX3QsIF9fcCA9ICcnIisocD8iLCBfX2UgPSBfLmVzY2FwZSI6IiIpKyhyP2AsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luOwpmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH0KYDpgOwpgKStKK2ByZXR1cm4gX19wCn1gO3ZhciBCPUthKGZ1bmN0aW9uKCl7cmV0dXJuIE8oYixOKyJyZXR1cm4gIitKKS5hcHBseSh0LFgpfSk7aWYoQi5zb3VyY2U9SixmdShCKSl0aHJvdyBCO3JldHVybiBCfWZ1bmN0aW9uIG95KGwpe3JldHVybiBxKGwpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gWHkobCl7cmV0dXJuIHEobCkudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBzeShsLG4sZCl7aWYobD1xKGwpLGwmJihkfHxuPT09dCkpcmV0dXJuIE1lKGwpO2lmKCFsfHwhKG49a2wobikpKXJldHVybiBsO3ZhciB1PSRsKGwpLG09JGwobiksYj1UZSh1LG0pLFg9Q2UodSxtKSsxO3JldHVybiBVbih1LGIsWCkuam9pbigiIil9ZnVuY3Rpb24gcHkobCxuLGQpe2lmKGw9cShsKSxsJiYoZHx8bj09PXQpKXJldHVybiBsLnNsaWNlKDAsUGUobCkrMSk7aWYoIWx8fCEobj1rbChuKSkpcmV0dXJuIGw7dmFyIHU9JGwobCksbT1DZSh1LCRsKG4pKSsxO3JldHVybiBVbih1LDAsbSkuam9pbigiIil9ZnVuY3Rpb24gV3kobCxuLGQpe2lmKGw9cShsKSxsJiYoZHx8bj09PXQpKXJldHVybiBsLnJlcGxhY2UoZnQsIiIpO2lmKCFsfHwhKG49a2wobikpKXJldHVybiBsO3ZhciB1PSRsKGwpLG09VGUodSwkbChuKSk7cmV0dXJuIFVuKHUsbSkuam9pbigiIil9ZnVuY3Rpb24gcnkobCxuKXt2YXIgZD1wdCx1PUdYO2lmKHRsKG4pKXt2YXIgbT0ic2VwYXJhdG9yImluIG4/bi5zZXBhcmF0b3I6bTtkPSJsZW5ndGgiaW4gbj9QKG4ubGVuZ3RoKTpkLHU9Im9taXNzaW9uImluIG4/a2wobi5vbWlzc2lvbik6dX1sPXEobCk7dmFyIGI9bC5sZW5ndGg7aWYoWWMobCkpe3ZhciBYPSRsKGwpO2I9WC5sZW5ndGh9aWYoZD49YilyZXR1cm4gbDt2YXIgcD1kLVNjKHUpO2lmKHA8MSlyZXR1cm4gdTt2YXIgcj1YP1VuKFgsMCxwKS5qb2luKCIiKTpsLnNsaWNlKDAscCk7aWYobT09PXQpcmV0dXJuIHIrdTtpZihYJiYocCs9ci5sZW5ndGgtcCksSnUobSkpe2lmKGwuc2xpY2UocCkuc2VhcmNoKG0pKXt2YXIgUyxmPXI7Zm9yKG0uZ2xvYmFsfHwobT1CdChtLnNvdXJjZSxxKGllLmV4ZWMobSkpKyJnIikpLG0ubGFzdEluZGV4PTA7Uz1tLmV4ZWMoZik7KXZhciBKPVMuaW5kZXg7cj1yLnNsaWNlKDAsSj09PXQ/cDpKKX19ZWxzZSBpZihsLmluZGV4T2Yoa2wobSkscCkhPXApe3ZhciBLPXIubGFzdEluZGV4T2YobSk7Sz4tMSYmKHI9ci5zbGljZSgwLEspKX1yZXR1cm4gcit1fWZ1bmN0aW9uIGh5KGwpe3JldHVybiBsPXEobCksbCYmS1gudGVzdChsKT9sLnJlcGxhY2UoWmUsRHMpOmx9dmFyIFZ5PU5jKGZ1bmN0aW9uKGwsbixkKXtyZXR1cm4gbCsoZD8iICI6IiIpK24udG9VcHBlckNhc2UoKX0pLEZ1PUZtKCJ0b1VwcGVyQ2FzZSIpO2Z1bmN0aW9uIElhKGwsbixkKXtyZXR1cm4gbD1xKGwpLG49ZD90Om4sbj09PXQ/UHMobCk/X3MobCk6dnMobCk6bC5tYXRjaChuKXx8W119dmFyIEthPVEoZnVuY3Rpb24obCxuKXt0cnl7cmV0dXJuIHZsKGwsdCxuKX1jYXRjaChkKXtyZXR1cm4gZnUoZCk/ZDpuZXcgVChkKX19KSx5eT15bihmdW5jdGlvbihsLG4pe3JldHVybiBDbChuLGZ1bmN0aW9uKGQpe2Q9bW4oZCksaG4obCxkLFN1KGxbZF0sbCkpfSksbH0pO2Z1bmN0aW9uIFJ5KGwpe3ZhciBuPWw9PW51bGw/MDpsLmxlbmd0aCxkPWsoKTtyZXR1cm4gbD1uP1psKGwsZnVuY3Rpb24odSl7aWYodHlwZW9mIHVbMV0hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHdsKG8pO3JldHVybltkKHVbMF0pLHVbMV1dfSk6W10sUShmdW5jdGlvbih1KXtmb3IodmFyIG09LTE7KyttPG47KXt2YXIgYj1sW21dO2lmKHZsKGJbMF0sdGhpcyx1KSlyZXR1cm4gdmwoYlsxXSx0aGlzLHUpfX0pfWZ1bmN0aW9uIEx5KGwpe3JldHVybiBEcChCbChsLEwpKX1mdW5jdGlvbiBOdShsKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbH19ZnVuY3Rpb24gWXkobCxuKXtyZXR1cm4gbD09bnVsbHx8bCE9PWw/bjpsfXZhciBTeT16bSgpLHh5PXptKCEwKTtmdW5jdGlvbiBGbChsKXtyZXR1cm4gbH1mdW5jdGlvbiB6dShsKXtyZXR1cm4gbW0odHlwZW9mIGw9PSJmdW5jdGlvbiI/bDpCbChsLEwpKX1mdW5jdGlvbiBmeShsKXtyZXR1cm4gYm0oQmwobCxMKSl9ZnVuY3Rpb24gSnkobCxuKXtyZXR1cm4gR20obCxCbChuLEwpKX12YXIgSXk9UShmdW5jdGlvbihsLG4pe3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gbWQoZCxsLG4pfX0pLEt5PVEoZnVuY3Rpb24obCxuKXtyZXR1cm4gZnVuY3Rpb24oZCl7cmV0dXJuIG1kKGwsZCxuKX19KTtmdW5jdGlvbiB2dShsLG4sZCl7dmFyIHU9cGwobiksbT1zWihuLHUpO2Q9PW51bGwmJiEodGwobikmJihtLmxlbmd0aHx8IXUubGVuZ3RoKSkmJihkPW4sbj1sLGw9dGhpcyxtPXNaKG4scGwobikpKTt2YXIgYj0hKHRsKGQpJiYiY2hhaW4iaW4gZCl8fCEhZC5jaGFpbixYPUxuKGwpO3JldHVybiBDbChtLGZ1bmN0aW9uKHApe3ZhciByPW5bcF07bFtwXT1yLFgmJihsLnByb3RvdHlwZVtwXT1mdW5jdGlvbigpe3ZhciBTPXRoaXMuX19jaGFpbl9fO2lmKGJ8fFMpe3ZhciBmPWwodGhpcy5fX3dyYXBwZWRfXyksSj1mLl9fYWN0aW9uc19fPUpsKHRoaXMuX19hY3Rpb25zX18pO3JldHVybiBKLnB1c2goe2Z1bmM6cixhcmdzOmFyZ3VtZW50cyx0aGlzQXJnOmx9KSxmLl9fY2hhaW5fXz1TLGZ9cmV0dXJuIHIuYXBwbHkobCxObihbdGhpcy52YWx1ZSgpXSxhcmd1bWVudHMpKX0pfSksbH1mdW5jdGlvbiBGeSgpe3JldHVybiBobC5fPT09dGhpcyYmKGhsLl89ZHApLHRoaXN9ZnVuY3Rpb24gSHUoKXt9ZnVuY3Rpb24gTnkobCl7cmV0dXJuIGw9UChsKSxRKGZ1bmN0aW9uKG4pe3JldHVybiBvbShuLGwpfSl9dmFyIHp5PUd1KFpsKSx2eT1HdSh2ZSksSHk9R3UoZ3QpO2Z1bmN0aW9uIEZhKGwpe3JldHVybiBodShsKT9VdChtbihsKSk6YlcobCl9ZnVuY3Rpb24ga3kobCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBsPT1udWxsP3Q6dWMobCxuKX19dmFyIGd5PUhtKCksVXk9SG0oITApO2Z1bmN0aW9uIGt1KCl7cmV0dXJuW119ZnVuY3Rpb24gZ3UoKXtyZXR1cm4hMX1mdW5jdGlvbiBNeSgpe3JldHVybnt9fWZ1bmN0aW9uIFR5KCl7cmV0dXJuIiJ9ZnVuY3Rpb24gQ3koKXtyZXR1cm4hMH1mdW5jdGlvbiB3eShsLG4pe2lmKGw9UChsKSxsPDF8fGw+S24pcmV0dXJuW107dmFyIGQ9dG4sdT1SbChsLHRuKTtuPWsobiksbC09dG47Zm9yKHZhciBtPUN0KHUsbik7KytkPGw7KW4oZCk7cmV0dXJuIG19ZnVuY3Rpb24gUHkobCl7cmV0dXJuIEMobCk/WmwobCxtbik6Z2wobCk/W2xdOkpsKF9tKHEobCkpKX1mdW5jdGlvbiBCeShsKXt2YXIgbj0rK25wO3JldHVybiBxKGwpK259dmFyIFF5PXlaKGZ1bmN0aW9uKGwsbil7cmV0dXJuIGwrbn0sMCksRXk9b3UoImNlaWwiKSxqeT15WihmdW5jdGlvbihsLG4pe3JldHVybiBsL259LDEpLER5PW91KCJmbG9vciIpO2Z1bmN0aW9uIE95KGwpe3JldHVybiBsJiZsLmxlbmd0aD9YWihsLEZsLHF0KTp0fWZ1bmN0aW9uIEF5KGwsbil7cmV0dXJuIGwmJmwubGVuZ3RoP1haKGwsayhuLDIpLHF0KTp0fWZ1bmN0aW9uIF95KGwpe3JldHVybiBnZShsLEZsKX1mdW5jdGlvbiBxeShsLG4pe3JldHVybiBnZShsLGsobiwyKSl9ZnVuY3Rpb24gJHkobCl7cmV0dXJuIGwmJmwubGVuZ3RoP1haKGwsRmwsY3UpOnR9ZnVuY3Rpb24gbFIobCxuKXtyZXR1cm4gbCYmbC5sZW5ndGg/WFoobCxrKG4sMiksY3UpOnR9dmFyIG5SPXlaKGZ1bmN0aW9uKGwsbil7cmV0dXJuIGwqbn0sMSksY1I9b3UoInJvdW5kIiksZFI9eVooZnVuY3Rpb24obCxuKXtyZXR1cm4gbC1ufSwwKTtmdW5jdGlvbiBaUihsKXtyZXR1cm4gbCYmbC5sZW5ndGg/VHQobCxGbCk6MH1mdW5jdGlvbiB0UihsLG4pe3JldHVybiBsJiZsLmxlbmd0aD9UdChsLGsobiwyKSk6MH1yZXR1cm4gYS5hZnRlcj1maCxhLmFyeT1lYSxhLmFzc2lnbj1YVixhLmFzc2lnbkluPVJhLGEuYXNzaWduSW5XaXRoPXZaLGEuYXNzaWduV2l0aD1zVixhLmF0PXBWLGEuYmVmb3JlPW1hLGEuYmluZD1TdSxhLmJpbmRBbGw9eXksYS5iaW5kS2V5PWFhLGEuY2FzdEFycmF5PU1oLGEuY2hhaW49dGEsYS5jaHVuaz1EVyxhLmNvbXBhY3Q9T1csYS5jb25jYXQ9QVcsYS5jb25kPVJ5LGEuY29uZm9ybXM9THksYS5jb25zdGFudD1OdSxhLmNvdW50Qnk9WmgsYS5jcmVhdGU9V1YsYS5jdXJyeT1iYSxhLmN1cnJ5UmlnaHQ9R2EsYS5kZWJvdW5jZT1vYSxhLmRlZmF1bHRzPXJWLGEuZGVmYXVsdHNEZWVwPWhWLGEuZGVmZXI9SmgsYS5kZWxheT1JaCxhLmRpZmZlcmVuY2U9X1csYS5kaWZmZXJlbmNlQnk9cVcsYS5kaWZmZXJlbmNlV2l0aD0kVyxhLmRyb3A9bHIsYS5kcm9wUmlnaHQ9bnIsYS5kcm9wUmlnaHRXaGlsZT1jcixhLmRyb3BXaGlsZT1kcixhLmZpbGw9WnIsYS5maWx0ZXI9dWgsYS5mbGF0TWFwPW1oLGEuZmxhdE1hcERlZXA9YWgsYS5mbGF0TWFwRGVwdGg9YmgsYS5mbGF0dGVuPW5hLGEuZmxhdHRlbkRlZXA9dHIsYS5mbGF0dGVuRGVwdGg9dXIsYS5mbGlwPUtoLGEuZmxvdz1TeSxhLmZsb3dSaWdodD14eSxhLmZyb21QYWlycz1pcixhLmZ1bmN0aW9ucz14VixhLmZ1bmN0aW9uc0luPWZWLGEuZ3JvdXBCeT1HaCxhLmluaXRpYWw9bXIsYS5pbnRlcnNlY3Rpb249YXIsYS5pbnRlcnNlY3Rpb25CeT1icixhLmludGVyc2VjdGlvbldpdGg9R3IsYS5pbnZlcnQ9SVYsYS5pbnZlcnRCeT1LVixhLmludm9rZU1hcD1YaCxhLml0ZXJhdGVlPXp1LGEua2V5Qnk9c2gsYS5rZXlzPXBsLGEua2V5c0luPUtsLGEubWFwPUpaLGEubWFwS2V5cz1OVixhLm1hcFZhbHVlcz16VixhLm1hdGNoZXM9ZnksYS5tYXRjaGVzUHJvcGVydHk9SnksYS5tZW1vaXplPUtaLGEubWVyZ2U9dlYsYS5tZXJnZVdpdGg9TGEsYS5tZXRob2Q9SXksYS5tZXRob2RPZj1LeSxhLm1peGluPXZ1LGEubmVnYXRlPUZaLGEubnRoQXJnPU55LGEub21pdD1IVixhLm9taXRCeT1rVixhLm9uY2U9RmgsYS5vcmRlckJ5PXBoLGEub3Zlcj16eSxhLm92ZXJBcmdzPU5oLGEub3ZlckV2ZXJ5PXZ5LGEub3ZlclNvbWU9SHksYS5wYXJ0aWFsPXh1LGEucGFydGlhbFJpZ2h0PVhhLGEucGFydGl0aW9uPVdoLGEucGljaz1nVixhLnBpY2tCeT1ZYSxhLnByb3BlcnR5PUZhLGEucHJvcGVydHlPZj1reSxhLnB1bGw9cHIsYS5wdWxsQWxsPWRhLGEucHVsbEFsbEJ5PVdyLGEucHVsbEFsbFdpdGg9cnIsYS5wdWxsQXQ9aHIsYS5yYW5nZT1neSxhLnJhbmdlUmlnaHQ9VXksYS5yZWFyZz16aCxhLnJlamVjdD1WaCxhLnJlbW92ZT1WcixhLnJlc3Q9dmgsYS5yZXZlcnNlPUx1LGEuc2FtcGxlU2l6ZT1SaCxhLnNldD1NVixhLnNldFdpdGg9VFYsYS5zaHVmZmxlPUxoLGEuc2xpY2U9eXIsYS5zb3J0Qnk9eGgsYS5zb3J0ZWRVbmlxPUpyLGEuc29ydGVkVW5pcUJ5PUlyLGEuc3BsaXQ9bXksYS5zcHJlYWQ9SGgsYS50YWlsPUtyLGEudGFrZT1GcixhLnRha2VSaWdodD1OcixhLnRha2VSaWdodFdoaWxlPXpyLGEudGFrZVdoaWxlPXZyLGEudGFwPU9yLGEudGhyb3R0bGU9a2gsYS50aHJ1PWZaLGEudG9BcnJheT1oYSxhLnRvUGFpcnM9U2EsYS50b1BhaXJzSW49eGEsYS50b1BhdGg9UHksYS50b1BsYWluT2JqZWN0PXlhLGEudHJhbnNmb3JtPUNWLGEudW5hcnk9Z2gsYS51bmlvbj1IcixhLnVuaW9uQnk9a3IsYS51bmlvbldpdGg9Z3IsYS51bmlxPVVyLGEudW5pcUJ5PU1yLGEudW5pcVdpdGg9VHIsYS51bnNldD13VixhLnVuemlwPVl1LGEudW56aXBXaXRoPVphLGEudXBkYXRlPVBWLGEudXBkYXRlV2l0aD1CVixhLnZhbHVlcz1IYyxhLnZhbHVlc0luPVFWLGEud2l0aG91dD1DcixhLndvcmRzPUlhLGEud3JhcD1VaCxhLnhvcj13cixhLnhvckJ5PVByLGEueG9yV2l0aD1CcixhLnppcD1RcixhLnppcE9iamVjdD1FcixhLnppcE9iamVjdERlZXA9anIsYS56aXBXaXRoPURyLGEuZW50cmllcz1TYSxhLmVudHJpZXNJbj14YSxhLmV4dGVuZD1SYSxhLmV4dGVuZFdpdGg9dlosdnUoYSxhKSxhLmFkZD1ReSxhLmF0dGVtcHQ9S2EsYS5jYW1lbENhc2U9T1YsYS5jYXBpdGFsaXplPWZhLGEuY2VpbD1FeSxhLmNsYW1wPUVWLGEuY2xvbmU9VGgsYS5jbG9uZURlZXA9d2gsYS5jbG9uZURlZXBXaXRoPVBoLGEuY2xvbmVXaXRoPUNoLGEuY29uZm9ybXNUbz1CaCxhLmRlYnVycj1KYSxhLmRlZmF1bHRUbz1ZeSxhLmRpdmlkZT1qeSxhLmVuZHNXaXRoPUFWLGEuZXE9bm4sYS5lc2NhcGU9X1YsYS5lc2NhcGVSZWdFeHA9cVYsYS5ldmVyeT10aCxhLmZpbmQ9aWgsYS5maW5kSW5kZXg9JG0sYS5maW5kS2V5PVZWLGEuZmluZExhc3Q9ZWgsYS5maW5kTGFzdEluZGV4PWxhLGEuZmluZExhc3RLZXk9eVYsYS5mbG9vcj1EeSxhLmZvckVhY2g9dWEsYS5mb3JFYWNoUmlnaHQ9aWEsYS5mb3JJbj1SVixhLmZvckluUmlnaHQ9TFYsYS5mb3JPd249WVYsYS5mb3JPd25SaWdodD1TVixhLmdldD1JdSxhLmd0PVFoLGEuZ3RlPUVoLGEuaGFzPUpWLGEuaGFzSW49S3UsYS5oZWFkPWNhLGEuaWRlbnRpdHk9RmwsYS5pbmNsdWRlcz1vaCxhLmluZGV4T2Y9ZXIsYS5pblJhbmdlPWpWLGEuaW52b2tlPUZWLGEuaXNBcmd1bWVudHM9bWMsYS5pc0FycmF5PUMsYS5pc0FycmF5QnVmZmVyPWpoLGEuaXNBcnJheUxpa2U9SWwsYS5pc0FycmF5TGlrZU9iamVjdD1pbCxhLmlzQm9vbGVhbj1EaCxhLmlzQnVmZmVyPU1uLGEuaXNEYXRlPU9oLGEuaXNFbGVtZW50PUFoLGEuaXNFbXB0eT1faCxhLmlzRXF1YWw9cWgsYS5pc0VxdWFsV2l0aD0kaCxhLmlzRXJyb3I9ZnUsYS5pc0Zpbml0ZT1sVixhLmlzRnVuY3Rpb249TG4sYS5pc0ludGVnZXI9c2EsYS5pc0xlbmd0aD1OWixhLmlzTWFwPXBhLGEuaXNNYXRjaD1uVixhLmlzTWF0Y2hXaXRoPWNWLGEuaXNOYU49ZFYsYS5pc05hdGl2ZT1aVixhLmlzTmlsPXVWLGEuaXNOdWxsPXRWLGEuaXNOdW1iZXI9V2EsYS5pc09iamVjdD10bCxhLmlzT2JqZWN0TGlrZT11bCxhLmlzUGxhaW5PYmplY3Q9c2QsYS5pc1JlZ0V4cD1KdSxhLmlzU2FmZUludGVnZXI9aVYsYS5pc1NldD1yYSxhLmlzU3RyaW5nPXpaLGEuaXNTeW1ib2w9Z2wsYS5pc1R5cGVkQXJyYXk9dmMsYS5pc1VuZGVmaW5lZD1lVixhLmlzV2Vha01hcD1tVixhLmlzV2Vha1NldD1hVixhLmpvaW49b3IsYS5rZWJhYkNhc2U9JFYsYS5sYXN0PUVsLGEubGFzdEluZGV4T2Y9WHIsYS5sb3dlckNhc2U9bHksYS5sb3dlckZpcnN0PW55LGEubHQ9YlYsYS5sdGU9R1YsYS5tYXg9T3ksYS5tYXhCeT1BeSxhLm1lYW49X3ksYS5tZWFuQnk9cXksYS5taW49JHksYS5taW5CeT1sUixhLnN0dWJBcnJheT1rdSxhLnN0dWJGYWxzZT1ndSxhLnN0dWJPYmplY3Q9TXksYS5zdHViU3RyaW5nPVR5LGEuc3R1YlRydWU9Q3ksYS5tdWx0aXBseT1uUixhLm50aD1zcixhLm5vQ29uZmxpY3Q9RnksYS5ub29wPUh1LGEubm93PUlaLGEucGFkPWN5LGEucGFkRW5kPWR5LGEucGFkU3RhcnQ9WnksYS5wYXJzZUludD10eSxhLnJhbmRvbT1EVixhLnJlZHVjZT1yaCxhLnJlZHVjZVJpZ2h0PWhoLGEucmVwZWF0PXV5LGEucmVwbGFjZT1peSxhLnJlc3VsdD1VVixhLnJvdW5kPWNSLGEucnVuSW5Db250ZXh0PVcsYS5zYW1wbGU9eWgsYS5zaXplPVloLGEuc25ha2VDYXNlPWV5LGEuc29tZT1TaCxhLnNvcnRlZEluZGV4PVJyLGEuc29ydGVkSW5kZXhCeT1McixhLnNvcnRlZEluZGV4T2Y9WXIsYS5zb3J0ZWRMYXN0SW5kZXg9U3IsYS5zb3J0ZWRMYXN0SW5kZXhCeT14cixhLnNvcnRlZExhc3RJbmRleE9mPWZyLGEuc3RhcnRDYXNlPWF5LGEuc3RhcnRzV2l0aD1ieSxhLnN1YnRyYWN0PWRSLGEuc3VtPVpSLGEuc3VtQnk9dFIsYS50ZW1wbGF0ZT1HeSxhLnRpbWVzPXd5LGEudG9GaW5pdGU9WW4sYS50b0ludGVnZXI9UCxhLnRvTGVuZ3RoPVZhLGEudG9Mb3dlcj1veSxhLnRvTnVtYmVyPWpsLGEudG9TYWZlSW50ZWdlcj1vVixhLnRvU3RyaW5nPXEsYS50b1VwcGVyPVh5LGEudHJpbT1zeSxhLnRyaW1FbmQ9cHksYS50cmltU3RhcnQ9V3ksYS50cnVuY2F0ZT1yeSxhLnVuZXNjYXBlPWh5LGEudW5pcXVlSWQ9QnksYS51cHBlckNhc2U9VnksYS51cHBlckZpcnN0PUZ1LGEuZWFjaD11YSxhLmVhY2hSaWdodD1pYSxhLmZpcnN0PWNhLHZ1KGEsZnVuY3Rpb24oKXt2YXIgbD17fTtyZXR1cm4gdW4oYSxmdW5jdGlvbihuLGQpe2xsLmNhbGwoYS5wcm90b3R5cGUsZCl8fChsW2RdPW4pfSksbH0oKSx7Y2hhaW46ITF9KSxhLlZFUlNJT049aSxDbChbImJpbmQiLCJiaW5kS2V5IiwiY3VycnkiLCJjdXJyeVJpZ2h0IiwicGFydGlhbCIsInBhcnRpYWxSaWdodCJdLGZ1bmN0aW9uKGwpe2FbbF0ucGxhY2Vob2xkZXI9YX0pLENsKFsiZHJvcCIsInRha2UiXSxmdW5jdGlvbihsLG4pe2oucHJvdG90eXBlW2xdPWZ1bmN0aW9uKGQpe2Q9ZD09PXQ/MTpYbChQKGQpLDApO3ZhciB1PXRoaXMuX19maWx0ZXJlZF9fJiYhbj9uZXcgaih0aGlzKTp0aGlzLmNsb25lKCk7cmV0dXJuIHUuX19maWx0ZXJlZF9fP3UuX190YWtlQ291bnRfXz1SbChkLHUuX190YWtlQ291bnRfXyk6dS5fX3ZpZXdzX18ucHVzaCh7c2l6ZTpSbChkLHRuKSx0eXBlOmwrKHUuX19kaXJfXzwwPyJSaWdodCI6IiIpfSksdX0sai5wcm90b3R5cGVbbCsiUmlnaHQiXT1mdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5yZXZlcnNlKClbbF0oZCkucmV2ZXJzZSgpfX0pLENsKFsiZmlsdGVyIiwibWFwIiwidGFrZVdoaWxlIl0sZnVuY3Rpb24obCxuKXt2YXIgZD1uKzEsdT1kPT1uZXx8ZD09cFg7ai5wcm90b3R5cGVbbF09ZnVuY3Rpb24obSl7dmFyIGI9dGhpcy5jbG9uZSgpO3JldHVybiBiLl9faXRlcmF0ZWVzX18ucHVzaCh7aXRlcmF0ZWU6ayhtLDMpLHR5cGU6ZH0pLGIuX19maWx0ZXJlZF9fPWIuX19maWx0ZXJlZF9ffHx1LGJ9fSksQ2woWyJoZWFkIiwibGFzdCJdLGZ1bmN0aW9uKGwsbil7dmFyIGQ9InRha2UiKyhuPyJSaWdodCI6IiIpO2oucHJvdG90eXBlW2xdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbZF0oMSkudmFsdWUoKVswXX19KSxDbChbImluaXRpYWwiLCJ0YWlsIl0sZnVuY3Rpb24obCxuKXt2YXIgZD0iZHJvcCIrKG4/IiI6IlJpZ2h0Iik7ai5wcm90b3R5cGVbbF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2ZpbHRlcmVkX18/bmV3IGoodGhpcyk6dGhpc1tkXSgxKX19KSxqLnByb3RvdHlwZS5jb21wYWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyKEZsKX0sai5wcm90b3R5cGUuZmluZD1mdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5maWx0ZXIobCkuaGVhZCgpfSxqLnByb3RvdHlwZS5maW5kTGFzdD1mdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZChsKX0sai5wcm90b3R5cGUuaW52b2tlTWFwPVEoZnVuY3Rpb24obCxuKXtyZXR1cm4gdHlwZW9mIGw9PSJmdW5jdGlvbiI/bmV3IGoodGhpcyk6dGhpcy5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIG1kKGQsbCxuKX0pfSksai5wcm90b3R5cGUucmVqZWN0PWZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmZpbHRlcihGWihrKGwpKSl9LGoucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGwsbil7bD1QKGwpO3ZhciBkPXRoaXM7cmV0dXJuIGQuX19maWx0ZXJlZF9fJiYobD4wfHxuPDApP25ldyBqKGQpOihsPDA/ZD1kLnRha2VSaWdodCgtbCk6bCYmKGQ9ZC5kcm9wKGwpKSxuIT09dCYmKG49UChuKSxkPW48MD9kLmRyb3BSaWdodCgtbik6ZC50YWtlKG4tbCkpLGQpfSxqLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKGwpLnJldmVyc2UoKX0sai5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRha2UodG4pfSx1bihqLnByb3RvdHlwZSxmdW5jdGlvbihsLG4pe3ZhciBkPS9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG4pLHU9L14oPzpoZWFkfGxhc3QpJC8udGVzdChuKSxtPWFbdT8idGFrZSIrKG49PSJsYXN0Ij8iUmlnaHQiOiIiKTpuXSxiPXV8fC9eZmluZC8udGVzdChuKTttJiYoYS5wcm90b3R5cGVbbl09ZnVuY3Rpb24oKXt2YXIgWD10aGlzLl9fd3JhcHBlZF9fLHA9dT9bMV06YXJndW1lbnRzLHI9WCBpbnN0YW5jZW9mIGosUz1wWzBdLGY9cnx8QyhYKSxKPWZ1bmN0aW9uKEUpe3ZhciBEPW0uYXBwbHkoYSxObihbRV0scCkpO3JldHVybiB1JiZLP0RbMF06RH07ZiYmZCYmdHlwZW9mIFM9PSJmdW5jdGlvbiImJlMubGVuZ3RoIT0xJiYocj1mPSExKTt2YXIgSz10aGlzLl9fY2hhaW5fXyxOPSEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsZz1iJiYhSyxCPXImJiFOO2lmKCFiJiZmKXtYPUI/WDpuZXcgaih0aGlzKTt2YXIgVT1sLmFwcGx5KFgscCk7cmV0dXJuIFUuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpmWixhcmdzOltKXSx0aGlzQXJnOnR9KSxuZXcgUGwoVSxLKX1yZXR1cm4gZyYmQj9sLmFwcGx5KHRoaXMscCk6KFU9dGhpcy50aHJ1KEopLGc/dT9VLnZhbHVlKClbMF06VS52YWx1ZSgpOlUpfSl9KSxDbChbInBvcCIsInB1c2giLCJzaGlmdCIsInNvcnQiLCJzcGxpY2UiLCJ1bnNoaWZ0Il0sZnVuY3Rpb24obCl7dmFyIG49JGRbbF0sZD0vXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QobCk/InRhcCI6InRocnUiLHU9L14oPzpwb3B8c2hpZnQpJC8udGVzdChsKTthLnByb3RvdHlwZVtsXT1mdW5jdGlvbigpe3ZhciBtPWFyZ3VtZW50cztpZih1JiYhdGhpcy5fX2NoYWluX18pe3ZhciBiPXRoaXMudmFsdWUoKTtyZXR1cm4gbi5hcHBseShDKGIpP2I6W10sbSl9cmV0dXJuIHRoaXNbZF0oZnVuY3Rpb24oWCl7cmV0dXJuIG4uYXBwbHkoQyhYKT9YOltdLG0pfSl9fSksdW4oai5wcm90b3R5cGUsZnVuY3Rpb24obCxuKXt2YXIgZD1hW25dO2lmKGQpe3ZhciB1PWQubmFtZSsiIjtsbC5jYWxsKEljLHUpfHwoSWNbdV09W10pLEljW3VdLnB1c2goe25hbWU6bixmdW5jOmR9KX19KSxJY1tWWih0LEEpLm5hbWVdPVt7bmFtZToid3JhcHBlciIsZnVuYzp0fV0sai5wcm90b3R5cGUuY2xvbmU9aHAsai5wcm90b3R5cGUucmV2ZXJzZT1WcCxqLnByb3RvdHlwZS52YWx1ZT15cCxhLnByb3RvdHlwZS5hdD1BcixhLnByb3RvdHlwZS5jaGFpbj1fcixhLnByb3RvdHlwZS5jb21taXQ9cXIsYS5wcm90b3R5cGUubmV4dD0kcixhLnByb3RvdHlwZS5wbGFudD1uaCxhLnByb3RvdHlwZS5yZXZlcnNlPWNoLGEucHJvdG90eXBlLnRvSlNPTj1hLnByb3RvdHlwZS52YWx1ZU9mPWEucHJvdG90eXBlLnZhbHVlPWRoLGEucHJvdG90eXBlLmZpcnN0PWEucHJvdG90eXBlLmhlYWQsY2QmJihhLnByb3RvdHlwZVtjZF09bGgpLGF9LHhjPXFzKCk7bmM/KChuYy5leHBvcnRzPXhjKS5fPXhjLHp0Ll89eGMpOmhsLl89eGN9KS5jYWxsKEVjKX0oQ2QsQ2QuZXhwb3J0cyksQ2QuZXhwb3J0cztjb25zdCAkaT0iS0daMWJtTjBhVzl1S0NsN0luVnpaU0J6ZEhKcFkzUWlPMloxYm1OMGFXOXVJRlowS0c0cGUzSmxkSFZ5YmlCdUppWnVMbDlmWlhOTmIyUjFiR1VtSms5aWFtVmpkQzV3Y205MGIzUjVjR1V1YUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNodUxDSmtaV1poZFd4MElpay9iaTVrWldaaGRXeDBPbTU5ZG1GeUlGQmxQWHQ5T3lobWRXNWpkR2x2YmlodUtYdDJZWElnY2oxbWRXNWpkR2x2YmlncGUzWmhjaUJsUFc1bGR5QkVZWFJsTEhROU5DeHBQVE1zWmoweUxIVTlNU3gyUFhRc2VUMTdjMlYwVEc5blRHVjJaV3c2Wm5WdVkzUnBiMjRvYlNsN2JUMDlkR2hwY3k1a1pXSjFaejkyUFhVNmJUMDlkR2hwY3k1cGJtWnZQM1k5WmpwdFBUMTBhR2x6TG5kaGNtNC9kajFwT2lodFBUMTBhR2x6TG1WeWNtOXlMSFk5ZENsOUxHUmxZblZuT21aMWJtTjBhVzl1S0cwc1lpbDdZMjl1YzI5c1pTNWtaV0oxWnowOVBYWnZhV1FnTUNZbUtHTnZibk52YkdVdVpHVmlkV2M5WTI5dWMyOXNaUzVzYjJjcExIVStQWFltSm1OdmJuTnZiR1V1WkdWaWRXY29JbHNpSzNJdVoyVjBSSFZ5WVhScGIyNVRkSEpwYm1jb2JtVjNJRVJoZEdVdFpTd3haVE1wS3lKZElpd2lXeUlyYlNzaVhTSXNZaWw5TEd4dlp6cG1kVzVqZEdsdmJpaHRMR0lwZTNSb2FYTXVaR1ZpZFdjb2JTNXRjMmNwZlN4cGJtWnZPbVoxYm1OMGFXOXVLRzBzWWlsN1pqNDlkaVltWTI5dWMyOXNaUzVwYm1adktDSmJJaXR5TG1kbGRFUjFjbUYwYVc5dVUzUnlhVzVuS0c1bGR5QkVZWFJsTFdVc01XVXpLU3NpWFNJc0lsc2lLMjBySWwwaUxHSXBmU3gzWVhKdU9tWjFibU4wYVc5dUtHMHNZaWw3YVQ0OWRpWW1ZMjl1YzI5c1pTNTNZWEp1S0NKYklpdHlMbWRsZEVSMWNtRjBhVzl1VTNSeWFXNW5LRzVsZHlCRVlYUmxMV1VzTVdVektTc2lYU0lzSWxzaUsyMHJJbDBpTEdJcGZTeGxjbkp2Y2pwbWRXNWpkR2x2YmlodExHSXBlM1ErUFhZbUptTnZibk52YkdVdVpYSnliM0lvSWxzaUszSXVaMlYwUkhWeVlYUnBiMjVUZEhKcGJtY29ibVYzSUVSaGRHVXRaU3d4WlRNcEt5SmRJaXdpV3lJcmJTc2lYU0lzWWlsOWZUdHlaWFIxY200Z2VYMG9LVHR5TG1kbGRFUjFjbUYwYVc5dVUzUnlhVzVuUFdaMWJtTjBhVzl1S0dVc2RDbDdkbUZ5SUdrN1puVnVZM1JwYjI0Z1ppaDRMRk1wZTJadmNpaDJZWElnVlQwaUlpdDRMRVU5VlM1emNHeHBkQ2dpTGlJcE8wVmJNRjB1YkdWdVozUm9QRk03S1VWYk1GMDlJakFpSzBWYk1GMDdjbVYwZFhKdUlFVXVhbTlwYmlnaUxpSXBmV1U4TUQ4b2FUMGhNQ3hsUFMxbEtUcHBQU0V4TzNaaGNpQjFQWFI4ZkRFc2RqMWxMM1VzZVQxTllYUm9MbVpzYjI5eUtIWXZNell3TUNrN2RpMDllU296TmpBd08zWmhjaUJ0UFUxaGRHZ3VabXh2YjNJb2RpODJNQ2s3ZGkwOWJTbzJNRHQyWVhJZ1lqMTJLakZsTXp0eVpYUjFjbTRnZGoxTllYUm9MbVpzYjI5eUtIWXBMR0l0UFhZcU1XVXpMR0k5VFdGMGFDNW1iRzl2Y2loaUtTd29hVDhpTFNJNklpSXBLM2tySWpvaUsyWW9iU3d5S1NzaU9pSXJaaWgyTERJcEt5SXVJaXRtS0dJc015bDlMSEl1Y0hKcGJuUlNZVzVuWlhNOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhROVpTNXNaVzVuZEdnN2FXWW9kRDR3S1h0bWIzSW9kbUZ5SUdrOUlpSXNaajB3TzJZOGREdG1LeXNwWmo0d0ppWW9hU3M5SWl3aUtTeHBLejBpV3lJcmNpNW5aWFJFZFhKaGRHbHZibE4wY21sdVp5aGxMbk4wWVhKMEtHWXBLU3NpTENJcmNpNW5aWFJFZFhKaGRHbHZibE4wY21sdVp5aGxMbVZ1WkNobUtTa3JJbDBpTzNKbGRIVnliaUJwZldWc2MyVWdjbVYwZFhKdUlpaGxiWEIwZVNraWZTeHVMa3h2WnoxeU8zWmhjaUJoUFdaMWJtTjBhVzl1S0dVcGUybG1LR1VnYVc1emRHRnVZMlZ2WmlCQmNuSmhlVUoxWm1abGNpbDBhR2x6TG1KMVptWmxjajFsTEhSb2FYTXVaR0YwWVhacFpYYzlibVYzSUVSaGRHRldhV1YzS0dVcE8yVnNjMlVnZEdoeWIzY2lUbVZsWkhNZ1lXNGdZWEp5WVhrZ1luVm1abVZ5SWp0MGFHbHpMbkJ2YzJsMGFXOXVQVEI5TzJFdWNISnZkRzkwZVhCbExtZGxkRkJ2YzJsMGFXOXVQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSFJvYVhNdWNHOXphWFJwYjI1OUxHRXVjSEp2ZEc5MGVYQmxMbWRsZEVWdVpGQnZjMmwwYVc5dVBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11WW5WbVptVnlMbUo1ZEdWTVpXNW5kR2g5TEdFdWNISnZkRzkwZVhCbExtZGxkRXhsYm1kMGFEMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6TG1KMVptWmxjaTVpZVhSbFRHVnVaM1JvZlN4aExuQnliM1J2ZEhsd1pTNXpaV1ZyUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFUxaGRHZ3ViV0Y0S0RBc1RXRjBhQzV0YVc0b2RHaHBjeTVpZFdabVpYSXVZbmwwWlV4bGJtZDBhQ3hsS1NrN2NtVjBkWEp1SUhSb2FYTXVjRzl6YVhScGIyNDlhWE5PWVU0b2RDbDhmQ0ZwYzBacGJtbDBaU2gwS1Q4d09uUXNJVEI5TEdFdWNISnZkRzkwZVhCbExtbHpSVzl6UFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVaMlYwVUc5emFYUnBiMjRvS1Q0OWRHaHBjeTVuWlhSRmJtUlFiM05wZEdsdmJpZ3BmU3hoTG5CeWIzUnZkSGx3WlM1eVpXRmtRVzU1U1c1MFBXWjFibU4wYVc5dUtHVXNkQ2w3ZG1GeUlHazlNRHRwWmloMGFHbHpMbkJ2YzJsMGFXOXVLMlU4UFhSb2FYTXVZblZtWm1WeUxtSjVkR1ZNWlc1bmRHZ3BlM04zYVhSamFDaGxLWHRqWVhObElERTZkRDlwUFhSb2FYTXVaR0YwWVhacFpYY3VaMlYwU1c1ME9DaDBhR2x6TG5CdmMybDBhVzl1S1RwcFBYUm9hWE11WkdGMFlYWnBaWGN1WjJWMFZXbHVkRGdvZEdocGN5NXdiM05wZEdsdmJpazdZbkpsWVdzN1kyRnpaU0F5T25RL2FUMTBhR2x6TG1SaGRHRjJhV1YzTG1kbGRFbHVkREUyS0hSb2FYTXVjRzl6YVhScGIyNHBPbWs5ZEdocGN5NWtZWFJoZG1sbGR5NW5aWFJWYVc1ME1UWW9kR2hwY3k1d2IzTnBkR2x2YmlrN1luSmxZV3M3WTJGelpTQXpPbWxtS0hRcGRHaHliM2NpVG04Z2JXVjBhRzlrSUdadmNpQnlaV0ZrYVc1bklITnBaMjVsWkNBeU5DQmlhWFJ6SUhaaGJIVmxjeUk3YVQxMGFHbHpMbVJoZEdGMmFXVjNMbWRsZEZWcGJuUTRLSFJvYVhNdWNHOXphWFJwYjI0cFBEd3hOaXhwZkQxMGFHbHpMbVJoZEdGMmFXVjNMbWRsZEZWcGJuUTRLSFJvYVhNdWNHOXphWFJwYjI0ck1TazhQRGdzYVh3OWRHaHBjeTVrWVhSaGRtbGxkeTVuWlhSVmFXNTBPQ2gwYUdsekxuQnZjMmwwYVc5dUt6SXBPMkp5WldGck8yTmhjMlVnTkRwMFAyazlkR2hwY3k1a1lYUmhkbWxsZHk1blpYUkpiblF6TWloMGFHbHpMbkJ2YzJsMGFXOXVLVHBwUFhSb2FYTXVaR0YwWVhacFpYY3VaMlYwVldsdWRETXlLSFJvYVhNdWNHOXphWFJwYjI0cE8ySnlaV0ZyTzJOaGMyVWdPRHBwWmloMEtYUm9jbTkzSWs1dklHMWxkR2h2WkNCbWIzSWdjbVZoWkdsdVp5QnphV2R1WldRZ05qUWdZbWwwY3lCMllXeDFaWE1pTzJrOWRHaHBjeTVrWVhSaGRtbGxkeTVuWlhSVmFXNTBNeklvZEdocGN5NXdiM05wZEdsdmJpazhQRE15TEdsOFBYUm9hWE11WkdGMFlYWnBaWGN1WjJWMFZXbHVkRE15S0hSb2FYTXVjRzl6YVhScGIyNHJOQ2s3WW5KbFlXczdaR1ZtWVhWc2REcDBhSEp2ZHlKeVpXRmtTVzUwSUcxbGRHaHZaQ0J1YjNRZ2FXMXdiR1Z0Wlc1MFpXUWdabTl5SUhOcGVtVTZJQ0lyWlgxeVpYUjFjbTRnZEdocGN5NXdiM05wZEdsdmJpczlaU3hwZldWc2MyVWdkR2h5YjNjaVRtOTBJR1Z1YjNWbmFDQmllWFJsY3lCcGJpQmlkV1ptWlhJaWZTeGhMbkJ5YjNSdmRIbHdaUzV5WldGa1ZXbHVkRGc5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NXlaV0ZrUVc1NVNXNTBLREVzSVRFcGZTeGhMbkJ5YjNSdmRIbHdaUzV5WldGa1ZXbHVkREUyUFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVjbVZoWkVGdWVVbHVkQ2d5TENFeEtYMHNZUzV3Y205MGIzUjVjR1V1Y21WaFpGVnBiblF5TkQxbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCMGFHbHpMbkpsWVdSQmJubEpiblFvTXl3aE1TbDlMR0V1Y0hKdmRHOTBlWEJsTG5KbFlXUlZhVzUwTXpJOVpuVnVZM1JwYjI0b0tYdHlaWFIxY200Z2RHaHBjeTV5WldGa1FXNTVTVzUwS0RRc0lURXBmU3hoTG5CeWIzUnZkSGx3WlM1eVpXRmtWV2x1ZERZMFBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11Y21WaFpFRnVlVWx1ZENnNExDRXhLWDBzWVM1d2NtOTBiM1I1Y0dVdWNtVmhaRk4wY21sdVp6MW1kVzVqZEdsdmJpaGxLWHRwWmloMGFHbHpMbkJ2YzJsMGFXOXVLMlU4UFhSb2FYTXVZblZtWm1WeUxtSjVkR1ZNWlc1bmRHZ3BlMlp2Y2loMllYSWdkRDBpSWl4cFBUQTdhVHhsTzJrckt5bDBLejFUZEhKcGJtY3Vabkp2YlVOb1lYSkRiMlJsS0hSb2FYTXVjbVZoWkZWcGJuUTRLQ2twTzNKbGRIVnliaUIwZldWc2MyVWdkR2h5YjNjaVRtOTBJR1Z1YjNWbmFDQmllWFJsY3lCcGJpQmlkV1ptWlhJaWZTeGhMbkJ5YjNSdmRIbHdaUzV5WldGa1ExTjBjbWx1WnoxbWRXNWpkR2x2YmlncGUyWnZjaWgyWVhJZ1pUMWJYVHM3S1h0MllYSWdkRDEwYUdsekxuSmxZV1JWYVc1ME9DZ3BPMmxtS0hRaFBUMHdLV1V1Y0hWemFDaDBLVHRsYkhObElHSnlaV0ZyZlhKbGRIVnliaUJUZEhKcGJtY3Vabkp2YlVOb1lYSkRiMlJsTG1Gd2NHeDVLRzUxYkd3c1pTbDlMR0V1Y0hKdmRHOTBlWEJsTG5KbFlXUkpiblE0UFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVjbVZoWkVGdWVVbHVkQ2d4TENFd0tYMHNZUzV3Y205MGIzUjVjR1V1Y21WaFpFbHVkREUyUFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVjbVZoWkVGdWVVbHVkQ2d5TENFd0tYMHNZUzV3Y205MGIzUjVjR1V1Y21WaFpFbHVkRE15UFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVjbVZoWkVGdWVVbHVkQ2cwTENFd0tYMHNZUzV3Y205MGIzUjVjR1V1Y21WaFpFbHVkRFkwUFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVjbVZoWkVGdWVVbHVkQ2c0TENFeEtYMHNZUzV3Y205MGIzUjVjR1V1Y21WaFpGVnBiblE0UVhKeVlYazlablZ1WTNScGIyNG9aU2w3Wm05eUtIWmhjaUIwUFc1bGR5QlZhVzUwT0VGeWNtRjVLR1VwTEdrOU1EdHBQR1U3YVNzcktYUmJhVjA5ZEdocGN5NXlaV0ZrVldsdWREZ29LVHR5WlhSMWNtNGdkSDBzWVM1d2NtOTBiM1I1Y0dVdWNtVmhaRWx1ZERFMlFYSnlZWGs5Wm5WdVkzUnBiMjRvWlNsN1ptOXlLSFpoY2lCMFBXNWxkeUJKYm5ReE5rRnljbUY1S0dVcExHazlNRHRwUEdVN2FTc3JLWFJiYVYwOWRHaHBjeTV5WldGa1NXNTBNVFlvS1R0eVpYUjFjbTRnZEgwc1lTNXdjbTkwYjNSNWNHVXVjbVZoWkZWcGJuUXhOa0Z5Y21GNVBXWjFibU4wYVc5dUtHVXBlMlp2Y2loMllYSWdkRDF1WlhjZ1NXNTBNVFpCY25KaGVTaGxLU3hwUFRBN2FUeGxPMmtyS3lsMFcybGRQWFJvYVhNdWNtVmhaRlZwYm5ReE5pZ3BPM0psZEhWeWJpQjBmU3hoTG5CeWIzUnZkSGx3WlM1eVpXRmtWV2x1ZERNeVFYSnlZWGs5Wm5WdVkzUnBiMjRvWlNsN1ptOXlLSFpoY2lCMFBXNWxkeUJWYVc1ME16SkJjbkpoZVNobEtTeHBQVEE3YVR4bE8ya3JLeWwwVzJsZFBYUm9hWE11Y21WaFpGVnBiblF6TWlncE8zSmxkSFZ5YmlCMGZTeGhMbkJ5YjNSdmRIbHdaUzV5WldGa1NXNTBNekpCY25KaGVUMW1kVzVqZEdsdmJpaGxLWHRtYjNJb2RtRnlJSFE5Ym1WM0lFbHVkRE15UVhKeVlYa29aU2tzYVQwd08yazhaVHRwS3lzcGRGdHBYVDEwYUdsekxuSmxZV1JKYm5Rek1pZ3BPM0psZEhWeWJpQjBmU3h1TGsxUU5FSnZlRk4wY21WaGJUMWhPM1poY2lCelBXWjFibU4wYVc5dUtHVXNkQ3hwS1h0MGFHbHpMbDlpZVhSbFQyWm1jMlYwUFhSOGZEQXNaU0JwYm5OMFlXNWpaVzltSUVGeWNtRjVRblZtWm1WeVAzUm9hWE11WW5WbVptVnlQV1U2ZEhsd1pXOW1JR1U5UFNKdlltcGxZM1FpUHloMGFHbHpMbVJoZEdGV2FXVjNQV1VzZENZbUtIUm9hWE11WDJKNWRHVlBabVp6WlhRclBYUXBLVHAwYUdsekxtSjFabVpsY2oxdVpYY2dRWEp5WVhsQ2RXWm1aWElvWlh4OE1Da3NkR2hwY3k1d2IzTnBkR2x2Ymowd0xIUm9hWE11Wlc1a2FXRnVibVZ6Y3oxcFB6OXpMa3hKVkZSTVJWOUZUa1JKUVU1OU8zTXVjSEp2ZEc5MGVYQmxQWHQ5TEhNdWNISnZkRzkwZVhCbExtZGxkRkJ2YzJsMGFXOXVQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSFJvYVhNdWNHOXphWFJwYjI1OUxITXVjSEp2ZEc5MGVYQmxMbDl5WldGc2JHOWpQV1oxYm1OMGFXOXVLR1VwZTJsbUtIUm9hWE11WDJSNWJtRnRhV05UYVhwbEtYdDJZWElnZEQxMGFHbHpMbDlpZVhSbFQyWm1jMlYwSzNSb2FYTXVjRzl6YVhScGIyNHJaU3hwUFhSb2FYTXVYMkoxWm1abGNpNWllWFJsVEdWdVozUm9PMmxtS0hROFBXa3BlM1ErZEdocGN5NWZZbmwwWlV4bGJtZDBhQ1ltS0hSb2FYTXVYMko1ZEdWTVpXNW5kR2c5ZENrN2NtVjBkWEp1ZldadmNpaHBQREVtSmlocFBURXBPM1ErYVRzcGFTbzlNanQyWVhJZ1pqMXVaWGNnUVhKeVlYbENkV1ptWlhJb2FTa3NkVDF1WlhjZ1ZXbHVkRGhCY25KaGVTaDBhR2x6TGw5aWRXWm1aWElwTEhZOWJtVjNJRlZwYm5RNFFYSnlZWGtvWml3d0xIVXViR1Z1WjNSb0tUdDJMbk5sZENoMUtTeDBhR2x6TG1KMVptWmxjajFtTEhSb2FYTXVYMko1ZEdWTVpXNW5kR2c5ZEgxOUxITXVjSEp2ZEc5MGVYQmxMbDkwY21sdFFXeHNiMk05Wm5WdVkzUnBiMjRvS1h0cFppaDBhR2x6TGw5aWVYUmxUR1Z1WjNSb0lUMTBhR2x6TGw5aWRXWm1aWEl1WW5sMFpVeGxibWQwYUNsN2RtRnlJR1U5Ym1WM0lFRnljbUY1UW5WbVptVnlLSFJvYVhNdVgySjVkR1ZNWlc1bmRHZ3BMSFE5Ym1WM0lGVnBiblE0UVhKeVlYa29aU2tzYVQxdVpYY2dWV2x1ZERoQmNuSmhlU2gwYUdsekxsOWlkV1ptWlhJc01DeDBMbXhsYm1kMGFDazdkQzV6WlhRb2FTa3NkR2hwY3k1aWRXWm1aWEk5WlgxOUxITXVRa2xIWDBWT1JFbEJUajBoTVN4ekxreEpWRlJNUlY5RlRrUkpRVTQ5SVRBc2N5NXdjbTkwYjNSNWNHVXVYMko1ZEdWTVpXNW5kR2c5TUN4UFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29jeTV3Y205MGIzUjVjR1VzSW1KNWRHVk1aVzVuZEdnaUxIdG5aWFE2Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NWZZbmwwWlV4bGJtZDBhQzEwYUdsekxsOWllWFJsVDJabWMyVjBmWDBwTEU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaHpMbkJ5YjNSdmRIbHdaU3dpWW5WbVptVnlJaXg3WjJWME9tWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11WDNSeWFXMUJiR3h2WXlncExIUm9hWE11WDJKMVptWmxjbjBzYzJWME9tWjFibU4wYVc5dUtHVXBlM1JvYVhNdVgySjFabVpsY2oxbExIUm9hWE11WDJSaGRHRldhV1YzUFc1bGR5QkVZWFJoVm1sbGR5aDBhR2x6TGw5aWRXWm1aWElzZEdocGN5NWZZbmwwWlU5bVpuTmxkQ2tzZEdocGN5NWZZbmwwWlV4bGJtZDBhRDEwYUdsekxsOWlkV1ptWlhJdVlubDBaVXhsYm1kMGFIMTlLU3hQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2N5NXdjbTkwYjNSNWNHVXNJbUo1ZEdWUFptWnpaWFFpTEh0blpYUTZablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdkR2hwY3k1ZllubDBaVTltWm5ObGRIMHNjMlYwT21aMWJtTjBhVzl1S0dVcGUzUm9hWE11WDJKNWRHVlBabVp6WlhROVpTeDBhR2x6TGw5a1lYUmhWbWxsZHoxdVpYY2dSR0YwWVZacFpYY29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVYMko1ZEdWUFptWnpaWFFwTEhSb2FYTXVYMko1ZEdWTVpXNW5kR2c5ZEdocGN5NWZZblZtWm1WeUxtSjVkR1ZNWlc1bmRHaDlmU2tzVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtITXVjSEp2ZEc5MGVYQmxMQ0prWVhSaFZtbGxkeUlzZTJkbGREcG1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6TGw5a1lYUmhWbWxsZDMwc2MyVjBPbVoxYm1OMGFXOXVLR1VwZTNSb2FYTXVYMko1ZEdWUFptWnpaWFE5WlM1aWVYUmxUMlptYzJWMExIUm9hWE11WDJKMVptWmxjajFsTG1KMVptWmxjaXgwYUdsekxsOWtZWFJoVm1sbGR6MXVaWGNnUkdGMFlWWnBaWGNvZEdocGN5NWZZblZtWm1WeUxIUm9hWE11WDJKNWRHVlBabVp6WlhRcExIUm9hWE11WDJKNWRHVk1aVzVuZEdnOWRHaHBjeTVmWW5sMFpVOW1abk5sZEN0bExtSjVkR1ZNWlc1bmRHaDlmU2tzY3k1d2NtOTBiM1I1Y0dVdWMyVmxhejFtZFc1amRHbHZiaWhsS1h0MllYSWdkRDFOWVhSb0xtMWhlQ2d3TEUxaGRHZ3ViV2x1S0hSb2FYTXVZbmwwWlV4bGJtZDBhQ3hsS1NrN2RHaHBjeTV3YjNOcGRHbHZiajFwYzA1aFRpaDBLWHg4SVdselJtbHVhWFJsS0hRcFB6QTZkSDBzY3k1d2NtOTBiM1I1Y0dVdWFYTkZiMlk5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NXdiM05wZEdsdmJqNDlkR2hwY3k1ZllubDBaVXhsYm1kMGFIMHNjeTV3Y205MGIzUjVjR1V1YldGd1ZXbHVkRGhCY25KaGVUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxsOXlaV0ZzYkc5aktHVXFNU2s3ZG1GeUlIUTlibVYzSUZWcGJuUTRRWEp5WVhrb2RHaHBjeTVmWW5WbVptVnlMSFJvYVhNdVlubDBaVTltWm5ObGRDdDBhR2x6TG5CdmMybDBhVzl1TEdVcE8zSmxkSFZ5YmlCMGFHbHpMbkJ2YzJsMGFXOXVLejFsS2pFc2RIMHNjeTV3Y205MGIzUjVjR1V1Y21WaFpFbHVkRE15UVhKeVlYazlablZ1WTNScGIyNG9aU3gwS1h0bFBXVS9QM1JvYVhNdVlubDBaVXhsYm1kMGFDMTBhR2x6TG5CdmMybDBhVzl1THpRN2RtRnlJR2s5Ym1WM0lFbHVkRE15UVhKeVlYa29aU2s3Y21WMGRYSnVJSE11YldWdFkzQjVLR2t1WW5WbVptVnlMREFzZEdocGN5NWlkV1ptWlhJc2RHaHBjeTVpZVhSbFQyWm1jMlYwSzNSb2FYTXVjRzl6YVhScGIyNHNaU3BwTGtKWlZFVlRYMUJGVWw5RlRFVk5SVTVVS1N4ekxtRnljbUY1Vkc5T1lYUnBkbVVvYVN4MFB6OTBhR2x6TG1WdVpHbGhibTVsYzNNcExIUm9hWE11Y0c5emFYUnBiMjRyUFdrdVlubDBaVXhsYm1kMGFDeHBmU3h6TG5CeWIzUnZkSGx3WlM1eVpXRmtTVzUwTVRaQmNuSmhlVDFtZFc1amRHbHZiaWhsTEhRcGUyVTlaVDgvZEdocGN5NWllWFJsVEdWdVozUm9MWFJvYVhNdWNHOXphWFJwYjI0dk1qdDJZWElnYVQxdVpYY2dTVzUwTVRaQmNuSmhlU2hsS1R0eVpYUjFjbTRnY3k1dFpXMWpjSGtvYVM1aWRXWm1aWElzTUN4MGFHbHpMbUoxWm1abGNpeDBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaXhsS21rdVFsbFVSVk5mVUVWU1gwVk1SVTFGVGxRcExITXVZWEp5WVhsVWIwNWhkR2wyWlNocExIUS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5a3NkR2hwY3k1d2IzTnBkR2x2YmlzOWFTNWllWFJsVEdWdVozUm9MR2w5TEhNdWNISnZkRzkwZVhCbExuSmxZV1JKYm5RNFFYSnlZWGs5Wm5WdVkzUnBiMjRvWlNsN1pUMWxQejkwYUdsekxtSjVkR1ZNWlc1bmRHZ3RkR2hwY3k1d2IzTnBkR2x2Ymp0MllYSWdkRDF1WlhjZ1NXNTBPRUZ5Y21GNUtHVXBPM0psZEhWeWJpQnpMbTFsYldOd2VTaDBMbUoxWm1abGNpd3dMSFJvYVhNdVluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXFkQzVDV1ZSRlUxOVFSVkpmUlV4RlRVVk9WQ2tzZEdocGN5NXdiM05wZEdsdmJpczlkQzVpZVhSbFRHVnVaM1JvTEhSOUxITXVjSEp2ZEc5MGVYQmxMbkpsWVdSVmFXNTBNekpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTJVOVpUOC9kR2hwY3k1aWVYUmxUR1Z1WjNSb0xYUm9hWE11Y0c5emFYUnBiMjR2TkR0MllYSWdhVDF1WlhjZ1ZXbHVkRE15UVhKeVlYa29aU2s3Y21WMGRYSnVJSE11YldWdFkzQjVLR2t1WW5WbVptVnlMREFzZEdocGN5NWlkV1ptWlhJc2RHaHBjeTVpZVhSbFQyWm1jMlYwSzNSb2FYTXVjRzl6YVhScGIyNHNaU3BwTGtKWlZFVlRYMUJGVWw5RlRFVk5SVTVVS1N4ekxtRnljbUY1Vkc5T1lYUnBkbVVvYVN4MFB6OTBhR2x6TG1WdVpHbGhibTVsYzNNcExIUm9hWE11Y0c5emFYUnBiMjRyUFdrdVlubDBaVXhsYm1kMGFDeHBmU3h6TG5CeWIzUnZkSGx3WlM1eVpXRmtWV2x1ZERFMlFYSnlZWGs5Wm5WdVkzUnBiMjRvWlN4MEtYdGxQV1UvUDNSb2FYTXVZbmwwWlV4bGJtZDBhQzEwYUdsekxuQnZjMmwwYVc5dUx6STdkbUZ5SUdrOWJtVjNJRlZwYm5ReE5rRnljbUY1S0dVcE8zSmxkSFZ5YmlCekxtMWxiV053ZVNocExtSjFabVpsY2l3d0xIUm9hWE11WW5WbVptVnlMSFJvYVhNdVlubDBaVTltWm5ObGRDdDBhR2x6TG5CdmMybDBhVzl1TEdVcWFTNUNXVlJGVTE5UVJWSmZSVXhGVFVWT1ZDa3NjeTVoY25KaGVWUnZUbUYwYVhabEtHa3NkRDgvZEdocGN5NWxibVJwWVc1dVpYTnpLU3gwYUdsekxuQnZjMmwwYVc5dUt6MXBMbUo1ZEdWTVpXNW5kR2dzYVgwc2N5NXdjbTkwYjNSNWNHVXVjbVZoWkZWcGJuUTRRWEp5WVhrOVpuVnVZM1JwYjI0b1pTbDdaVDFsUHo5MGFHbHpMbUo1ZEdWTVpXNW5kR2d0ZEdocGN5NXdiM05wZEdsdmJqdDJZWElnZEQxdVpYY2dWV2x1ZERoQmNuSmhlU2hsS1R0eVpYUjFjbTRnY3k1dFpXMWpjSGtvZEM1aWRXWm1aWElzTUN4MGFHbHpMbUoxWm1abGNpeDBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaXhsS25RdVFsbFVSVk5mVUVWU1gwVk1SVTFGVGxRcExIUm9hWE11Y0c5emFYUnBiMjRyUFhRdVlubDBaVXhsYm1kMGFDeDBmU3h6TG5CeWIzUnZkSGx3WlM1eVpXRmtSbXh2WVhRMk5FRnljbUY1UFdaMWJtTjBhVzl1S0dVc2RDbDdaVDFsUHo5MGFHbHpMbUo1ZEdWTVpXNW5kR2d0ZEdocGN5NXdiM05wZEdsdmJpODRPM1poY2lCcFBXNWxkeUJHYkc5aGREWTBRWEp5WVhrb1pTazdjbVYwZFhKdUlITXViV1Z0WTNCNUtHa3VZblZtWm1WeUxEQXNkR2hwY3k1aWRXWm1aWElzZEdocGN5NWllWFJsVDJabWMyVjBLM1JvYVhNdWNHOXphWFJwYjI0c1pTcHBMa0paVkVWVFgxQkZVbDlGVEVWTlJVNVVLU3h6TG1GeWNtRjVWRzlPWVhScGRtVW9hU3gwUHo5MGFHbHpMbVZ1WkdsaGJtNWxjM01wTEhSb2FYTXVjRzl6YVhScGIyNHJQV2t1WW5sMFpVeGxibWQwYUN4cGZTeHpMbkJ5YjNSdmRIbHdaUzV5WldGa1JteHZZWFF6TWtGeWNtRjVQV1oxYm1OMGFXOXVLR1VzZENsN1pUMWxQejkwYUdsekxtSjVkR1ZNWlc1bmRHZ3RkR2hwY3k1d2IzTnBkR2x2Ymk4ME8zWmhjaUJwUFc1bGR5QkdiRzloZERNeVFYSnlZWGtvWlNrN2NtVjBkWEp1SUhNdWJXVnRZM0I1S0drdVluVm1abVZ5TERBc2RHaHBjeTVpZFdabVpYSXNkR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRzWlNwcExrSlpWRVZUWDFCRlVsOUZURVZOUlU1VUtTeHpMbUZ5Y21GNVZHOU9ZWFJwZG1Vb2FTeDBQejkwYUdsekxtVnVaR2xoYm01bGMzTXBMSFJvYVhNdWNHOXphWFJwYjI0clBXa3VZbmwwWlV4bGJtZDBhQ3hwZlN4ekxuQnliM1J2ZEhsd1pTNXlaV0ZrU1c1ME16STlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlkR2hwY3k1ZlpHRjBZVlpwWlhjdVoyVjBTVzUwTXpJb2RHaHBjeTV3YjNOcGRHbHZiaXhsUHo5MGFHbHpMbVZ1WkdsaGJtNWxjM01wTzNKbGRIVnliaUIwYUdsekxuQnZjMmwwYVc5dUt6MDBMSFI5TEhNdWNISnZkRzkwZVhCbExuSmxZV1JKYm5ReE5qMW1kVzVqZEdsdmJpaGxLWHQyWVhJZ2REMTBhR2x6TGw5a1lYUmhWbWxsZHk1blpYUkpiblF4TmloMGFHbHpMbkJ2YzJsMGFXOXVMR1UvUDNSb2FYTXVaVzVrYVdGdWJtVnpjeWs3Y21WMGRYSnVJSFJvYVhNdWNHOXphWFJwYjI0clBUSXNkSDBzY3k1d2NtOTBiM1I1Y0dVdWNtVmhaRWx1ZERnOVpuVnVZM1JwYjI0b0tYdDJZWElnWlQxMGFHbHpMbDlrWVhSaFZtbGxkeTVuWlhSSmJuUTRLSFJvYVhNdWNHOXphWFJwYjI0cE8zSmxkSFZ5YmlCMGFHbHpMbkJ2YzJsMGFXOXVLejB4TEdWOUxITXVjSEp2ZEc5MGVYQmxMbkpsWVdSVmFXNTBNekk5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE5ZEdocGN5NWZaR0YwWVZacFpYY3VaMlYwVldsdWRETXlLSFJvYVhNdWNHOXphWFJwYjI0c1pUOC9kR2hwY3k1bGJtUnBZVzV1WlhOektUdHlaWFIxY200Z2RHaHBjeTV3YjNOcGRHbHZiaXM5TkN4MGZTeHpMbkJ5YjNSdmRIbHdaUzV5WldGa1ZXbHVkREUyUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFhSb2FYTXVYMlJoZEdGV2FXVjNMbWRsZEZWcGJuUXhOaWgwYUdsekxuQnZjMmwwYVc5dUxHVS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5azdjbVYwZFhKdUlIUm9hWE11Y0c5emFYUnBiMjRyUFRJc2RIMHNjeTV3Y205MGIzUjVjR1V1Y21WaFpGVnBiblE0UFdaMWJtTjBhVzl1S0NsN2RtRnlJR1U5ZEdocGN5NWZaR0YwWVZacFpYY3VaMlYwVldsdWREZ29kR2hwY3k1d2IzTnBkR2x2YmlrN2NtVjBkWEp1SUhSb2FYTXVjRzl6YVhScGIyNHJQVEVzWlgwc2N5NXdjbTkwYjNSNWNHVXVjbVZoWkVac2IyRjBNekk5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE5ZEdocGN5NWZaR0YwWVZacFpYY3VaMlYwUm14dllYUXpNaWgwYUdsekxuQnZjMmwwYVc5dUxHVS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5azdjbVYwZFhKdUlIUm9hWE11Y0c5emFYUnBiMjRyUFRRc2RIMHNjeTV3Y205MGIzUjVjR1V1Y21WaFpFWnNiMkYwTmpROVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhROWRHaHBjeTVmWkdGMFlWWnBaWGN1WjJWMFJteHZZWFEyTkNoMGFHbHpMbkJ2YzJsMGFXOXVMR1UvUDNSb2FYTXVaVzVrYVdGdWJtVnpjeWs3Y21WMGRYSnVJSFJvYVhNdWNHOXphWFJwYjI0clBUZ3NkSDBzY3k1bGJtUnBZVzV1WlhOelBXNWxkeUJKYm5RNFFYSnlZWGtvYm1WM0lFbHVkREUyUVhKeVlYa29XekZkS1M1aWRXWm1aWElwV3pCZFBqQXNjeTV0WlcxamNIazlablZ1WTNScGIyNG9aU3gwTEdrc1ppeDFLWHQyWVhJZ2RqMXVaWGNnVldsdWREaEJjbkpoZVNobExIUXNkU2tzZVQxdVpYY2dWV2x1ZERoQmNuSmhlU2hwTEdZc2RTazdkaTV6WlhRb2VTbDlMSE11WVhKeVlYbFViMDVoZEdsMlpUMW1kVzVqZEdsdmJpaGxMSFFwZTNKbGRIVnliaUIwUFQxMGFHbHpMbVZ1WkdsaGJtNWxjM00vWlRwMGFHbHpMbVpzYVhCQmNuSmhlVVZ1WkdsaGJtNWxjM01vWlNsOUxITXVibUYwYVhabFZHOUZibVJwWVc0OVpuVnVZM1JwYjI0b1pTeDBLWHR5WlhSMWNtNGdkR2hwY3k1bGJtUnBZVzV1WlhOelBUMTBQMlU2ZEdocGN5NW1iR2x3UVhKeVlYbEZibVJwWVc1dVpYTnpLR1VwZlN4ekxtWnNhWEJCY25KaGVVVnVaR2xoYm01bGMzTTlablZ1WTNScGIyNG9aU2w3Wm05eUtIWmhjaUIwUFc1bGR5QlZhVzUwT0VGeWNtRjVLR1V1WW5WbVptVnlMR1V1WW5sMFpVOW1abk5sZEN4bExtSjVkR1ZNWlc1bmRHZ3BMR2s5TUR0cFBHVXVZbmwwWlV4bGJtZDBhRHRwS3oxbExrSlpWRVZUWDFCRlVsOUZURVZOUlU1VUtXWnZjaWgyWVhJZ1pqMXBLMlV1UWxsVVJWTmZVRVZTWDBWTVJVMUZUbFF0TVN4MVBXazdaajUxTzJZdExTeDFLeXNwZTNaaGNpQjJQWFJiZFYwN2RGdDFYVDEwVzJaZExIUmJabDA5ZG4xeVpYUjFjbTRnWlgwc2N5NXdjbTkwYjNSNWNHVXVabUZwYkhWeVpWQnZjMmwwYVc5dVBUQXNVM1J5YVc1bkxtWnliMjFEYUdGeVEyOWtaVlZwYm5RNFBXWjFibU4wYVc5dUtHVXBlMlp2Y2loMllYSWdkRDFiWFN4cFBUQTdhVHhsTG14bGJtZDBhRHRwS3lzcGRGdHBYVDFsVzJsZE8zSmxkSFZ5YmlCVGRISnBibWN1Wm5KdmJVTm9ZWEpEYjJSbExtRndjR3g1S0c1MWJHd3NkQ2w5TEhNdWNISnZkRzkwZVhCbExuSmxZV1JUZEhKcGJtYzlablZ1WTNScGIyNG9aU3gwS1h0eVpYUjFjbTRnZEQwOWJuVnNiSHg4ZEQwOUlrRlRRMGxKSWo5VGRISnBibWN1Wm5KdmJVTm9ZWEpEYjJSbFZXbHVkRGd1WVhCd2JIa29iblZzYkN4YmRHaHBjeTV0WVhCVmFXNTBPRUZ5Y21GNUtHVS9QM1JvYVhNdVlubDBaVXhsYm1kMGFDMTBhR2x6TG5CdmMybDBhVzl1S1YwcE9tNWxkeUJVWlhoMFJHVmpiMlJsY2loMEtTNWtaV052WkdVb2RHaHBjeTV0WVhCVmFXNTBPRUZ5Y21GNUtHVXBLWDBzY3k1d2NtOTBiM1I1Y0dVdWNtVmhaRU5UZEhKcGJtYzlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlkR2hwY3k1aWVYUmxUR1Z1WjNSb0xYUm9hWE11Y0c5emFYUnBiMjRzYVQxdVpYY2dWV2x1ZERoQmNuSmhlU2gwYUdsekxsOWlkV1ptWlhJc2RHaHBjeTVmWW5sMFpVOW1abk5sZEN0MGFHbHpMbkJ2YzJsMGFXOXVLU3htUFhRN1pTRTliblZzYkNZbUtHWTlUV0YwYUM1dGFXNG9aU3gwS1NrN1ptOXlLSFpoY2lCMVBUQTdkVHhtSmlacFczVmRJVDA5TUR0MUt5c3BPM1poY2lCMlBWTjBjbWx1Wnk1bWNtOXRRMmhoY2tOdlpHVlZhVzUwT0M1aGNIQnNlU2h1ZFd4c0xGdDBhR2x6TG0xaGNGVnBiblE0UVhKeVlYa29kU2xkS1R0eVpYUjFjbTRnWlNFOWJuVnNiRDkwYUdsekxuQnZjMmwwYVc5dUt6MW1MWFU2ZFNFOWRDWW1LSFJvYVhNdWNHOXphWFJwYjI0clBURXBMSFo5TzNaaGNpQnNQVTFoZEdndWNHOTNLRElzTXpJcE8zTXVjSEp2ZEc5MGVYQmxMbkpsWVdSSmJuUTJORDFtZFc1amRHbHZiaWdwZTNKbGRIVnliaUIwYUdsekxuSmxZV1JKYm5Rek1pZ3BLbXdyZEdocGN5NXlaV0ZrVldsdWRETXlLQ2w5TEhNdWNISnZkRzkwZVhCbExuSmxZV1JWYVc1ME5qUTlablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdkR2hwY3k1eVpXRmtWV2x1ZERNeUtDa3FiQ3QwYUdsekxuSmxZV1JWYVc1ME16SW9LWDBzY3k1d2NtOTBiM1I1Y0dVdWNtVmhaRWx1ZERZMFBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11Y21WaFpGVnBiblF6TWlncEttd3JkR2hwY3k1eVpXRmtWV2x1ZERNeUtDbDlMSE11Y0hKdmRHOTBlWEJsTG5KbFlXUlZhVzUwTWpROVpuVnVZM1JwYjI0b0tYdHlaWFIxY200b2RHaHBjeTV5WldGa1ZXbHVkRGdvS1R3OE1UWXBLeWgwYUdsekxuSmxZV1JWYVc1ME9DZ3BQRHc0S1N0MGFHbHpMbkpsWVdSVmFXNTBPQ2dwZlN4dUxrUmhkR0ZUZEhKbFlXMDljeXh6TG5CeWIzUnZkSGx3WlM1ellYWmxQV1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQVzVsZHlCQ2JHOWlLRnQwYUdsekxtSjFabVpsY2wwcE8ybG1LSGRwYm1SdmR5NVZVa3dtSmxWU1RDNWpjbVZoZEdWUFltcGxZM1JWVWt3cGUzWmhjaUJwUFhkcGJtUnZkeTVWVWt3dVkzSmxZWFJsVDJKcVpXTjBWVkpNS0hRcExHWTlaRzlqZFcxbGJuUXVZM0psWVhSbFJXeGxiV1Z1ZENnaVlTSXBPMlJ2WTNWdFpXNTBMbUp2WkhrdVlYQndaVzVrUTJocGJHUW9aaWtzWmk1elpYUkJkSFJ5YVdKMWRHVW9JbWh5WldZaUxHa3BMR1l1YzJWMFFYUjBjbWxpZFhSbEtDSmtiM2R1Ykc5aFpDSXNaU2tzWmk1elpYUkJkSFJ5YVdKMWRHVW9JblJoY21kbGRDSXNJbDl6Wld4bUlpa3NaaTVqYkdsamF5Z3BMSGRwYm1SdmR5NVZVa3d1Y21WMmIydGxUMkpxWldOMFZWSk1LR2twZldWc2MyVWdkR2h5YjNjaVJHRjBZVk4wY21WaGJTNXpZWFpsT2lCRFlXNG5kQ0JqY21WaGRHVWdiMkpxWldOMElGVlNUQzRpZlN4ekxuQnliM1J2ZEhsd1pTNWZaSGx1WVcxcFkxTnBlbVU5SVRBc1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLSE11Y0hKdmRHOTBlWEJsTENKa2VXNWhiV2xqVTJsNlpTSXNlMmRsZERwbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCMGFHbHpMbDlrZVc1aGJXbGpVMmw2Wlgwc2MyVjBPbVoxYm1OMGFXOXVLR1VwZTJWOGZIUm9hWE11WDNSeWFXMUJiR3h2WXlncExIUm9hWE11WDJSNWJtRnRhV05UYVhwbFBXVjlmU2tzY3k1d2NtOTBiM1I1Y0dVdWMyaHBablE5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE5Ym1WM0lFRnljbUY1UW5WbVptVnlLSFJvYVhNdVgySjVkR1ZNWlc1bmRHZ3RaU2tzYVQxdVpYY2dWV2x1ZERoQmNuSmhlU2gwS1N4bVBXNWxkeUJWYVc1ME9FRnljbUY1S0hSb2FYTXVYMkoxWm1abGNpeGxMR2t1YkdWdVozUm9LVHRwTG5ObGRDaG1LU3gwYUdsekxtSjFabVpsY2oxMExIUm9hWE11Y0c5emFYUnBiMjR0UFdWOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFNXNTBNekpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTJsbUtIUm9hWE11WDNKbFlXeHNiMk1vWlM1c1pXNW5kR2dxTkNrc1pTQnBibk4wWVc1alpXOW1JRWx1ZERNeVFYSnlZWGttSm5Sb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUpXVXVRbGxVUlZOZlVFVlNYMFZNUlUxRlRsUTlQVDB3S1hNdWJXVnRZM0I1S0hSb2FYTXVYMkoxWm1abGNpeDBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaXhsTG1KMVptWmxjaXd3TEdVdVlubDBaVXhsYm1kMGFDa3NkR2hwY3k1dFlYQkpiblF6TWtGeWNtRjVLR1V1YkdWdVozUm9MSFFwTzJWc2MyVWdabTl5S0haaGNpQnBQVEE3YVR4bExteGxibWQwYUR0cEt5c3BkR2hwY3k1M2NtbDBaVWx1ZERNeUtHVmJhVjBzZENsOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFNXNTBNVFpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTJsbUtIUm9hWE11WDNKbFlXeHNiMk1vWlM1c1pXNW5kR2dxTWlrc1pTQnBibk4wWVc1alpXOW1JRWx1ZERFMlFYSnlZWGttSm5Sb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUpXVXVRbGxVUlZOZlVFVlNYMFZNUlUxRlRsUTlQVDB3S1hNdWJXVnRZM0I1S0hSb2FYTXVYMkoxWm1abGNpeDBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaXhsTG1KMVptWmxjaXd3TEdVdVlubDBaVXhsYm1kMGFDa3NkR2hwY3k1dFlYQkpiblF4TmtGeWNtRjVLR1V1YkdWdVozUm9MSFFwTzJWc2MyVWdabTl5S0haaGNpQnBQVEE3YVR4bExteGxibWQwYUR0cEt5c3BkR2hwY3k1M2NtbDBaVWx1ZERFMktHVmJhVjBzZENsOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFNXNTBPRUZ5Y21GNVBXWjFibU4wYVc5dUtHVXBlMmxtS0hSb2FYTXVYM0psWVd4c2IyTW9aUzVzWlc1bmRHZ3FNU2tzWlNCcGJuTjBZVzVqWlc5bUlFbHVkRGhCY25KaGVTWW1kR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRsWlM1Q1dWUkZVMTlRUlZKZlJVeEZUVVZPVkQwOVBUQXBjeTV0WlcxamNIa29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXVZblZtWm1WeUxEQXNaUzVpZVhSbFRHVnVaM1JvS1N4MGFHbHpMbTFoY0VsdWREaEJjbkpoZVNobExteGxibWQwYUNrN1pXeHpaU0JtYjNJb2RtRnlJSFE5TUR0MFBHVXViR1Z1WjNSb08zUXJLeWwwYUdsekxuZHlhWFJsU1c1ME9DaGxXM1JkS1gwc2N5NXdjbTkwYjNSNWNHVXVkM0pwZEdWVmFXNTBNekpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTJsbUtIUm9hWE11WDNKbFlXeHNiMk1vWlM1c1pXNW5kR2dxTkNrc1pTQnBibk4wWVc1alpXOW1JRlZwYm5Rek1rRnljbUY1SmlaMGFHbHpMbUo1ZEdWUFptWnpaWFFyZEdocGN5NXdiM05wZEdsdmJpVmxMa0paVkVWVFgxQkZVbDlGVEVWTlJVNVVQVDA5TUNsekxtMWxiV053ZVNoMGFHbHpMbDlpZFdabVpYSXNkR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRzWlM1aWRXWm1aWElzTUN4bExtSjVkR1ZNWlc1bmRHZ3BMSFJvYVhNdWJXRndWV2x1ZERNeVFYSnlZWGtvWlM1c1pXNW5kR2dzZENrN1pXeHpaU0JtYjNJb2RtRnlJR2s5TUR0cFBHVXViR1Z1WjNSb08ya3JLeWwwYUdsekxuZHlhWFJsVldsdWRETXlLR1ZiYVYwc2RDbDlMSE11Y0hKdmRHOTBlWEJsTG5keWFYUmxWV2x1ZERFMlFYSnlZWGs5Wm5WdVkzUnBiMjRvWlN4MEtYdHBaaWgwYUdsekxsOXlaV0ZzYkc5aktHVXViR1Z1WjNSb0tqSXBMR1VnYVc1emRHRnVZMlZ2WmlCVmFXNTBNVFpCY25KaGVTWW1kR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRsWlM1Q1dWUkZVMTlRUlZKZlJVeEZUVVZPVkQwOVBUQXBjeTV0WlcxamNIa29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXVZblZtWm1WeUxEQXNaUzVpZVhSbFRHVnVaM1JvS1N4MGFHbHpMbTFoY0ZWcGJuUXhOa0Z5Y21GNUtHVXViR1Z1WjNSb0xIUXBPMlZzYzJVZ1ptOXlLSFpoY2lCcFBUQTdhVHhsTG14bGJtZDBhRHRwS3lzcGRHaHBjeTUzY21sMFpWVnBiblF4TmlobFcybGRMSFFwZlN4ekxuQnliM1J2ZEhsd1pTNTNjbWwwWlZWcGJuUTRRWEp5WVhrOVpuVnVZM1JwYjI0b1pTbDdhV1lvZEdocGN5NWZjbVZoYkd4dll5aGxMbXhsYm1kMGFDb3hLU3hsSUdsdWMzUmhibU5sYjJZZ1ZXbHVkRGhCY25KaGVTWW1kR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRsWlM1Q1dWUkZVMTlRUlZKZlJVeEZUVVZPVkQwOVBUQXBjeTV0WlcxamNIa29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXVZblZtWm1WeUxEQXNaUzVpZVhSbFRHVnVaM1JvS1N4MGFHbHpMbTFoY0ZWcGJuUTRRWEp5WVhrb1pTNXNaVzVuZEdncE8yVnNjMlVnWm05eUtIWmhjaUIwUFRBN2REeGxMbXhsYm1kMGFEdDBLeXNwZEdocGN5NTNjbWwwWlZWcGJuUTRLR1ZiZEYwcGZTeHpMbkJ5YjNSdmRIbHdaUzUzY21sMFpVWnNiMkYwTmpSQmNuSmhlVDFtZFc1amRHbHZiaWhsTEhRcGUybG1LSFJvYVhNdVgzSmxZV3hzYjJNb1pTNXNaVzVuZEdncU9Da3NaU0JwYm5OMFlXNWpaVzltSUVac2IyRjBOalJCY25KaGVTWW1kR2hwY3k1aWVYUmxUMlptYzJWMEszUm9hWE11Y0c5emFYUnBiMjRsWlM1Q1dWUkZVMTlRUlZKZlJVeEZUVVZPVkQwOVBUQXBjeTV0WlcxamNIa29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXVZblZtWm1WeUxEQXNaUzVpZVhSbFRHVnVaM1JvS1N4MGFHbHpMbTFoY0Vac2IyRjBOalJCY25KaGVTaGxMbXhsYm1kMGFDeDBLVHRsYkhObElHWnZjaWgyWVhJZ2FUMHdPMms4WlM1c1pXNW5kR2c3YVNzcktYUm9hWE11ZDNKcGRHVkdiRzloZERZMEtHVmJhVjBzZENsOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFJteHZZWFF6TWtGeWNtRjVQV1oxYm1OMGFXOXVLR1VzZENsN2FXWW9kR2hwY3k1ZmNtVmhiR3h2WXlobExteGxibWQwYUNvMEtTeGxJR2x1YzNSaGJtTmxiMllnUm14dllYUXpNa0Z5Y21GNUppWjBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaVZsTGtKWlZFVlRYMUJGVWw5RlRFVk5SVTVVUFQwOU1DbHpMbTFsYldOd2VTaDBhR2x6TGw5aWRXWm1aWElzZEdocGN5NWllWFJsVDJabWMyVjBLM1JvYVhNdWNHOXphWFJwYjI0c1pTNWlkV1ptWlhJc01DeGxMbUo1ZEdWTVpXNW5kR2dwTEhSb2FYTXViV0Z3Um14dllYUXpNa0Z5Y21GNUtHVXViR1Z1WjNSb0xIUXBPMlZzYzJVZ1ptOXlLSFpoY2lCcFBUQTdhVHhsTG14bGJtZDBhRHRwS3lzcGRHaHBjeTUzY21sMFpVWnNiMkYwTXpJb1pWdHBYU3gwS1gwc2N5NXdjbTkwYjNSNWNHVXVkM0pwZEdWSmJuUXpNajFtZFc1amRHbHZiaWhsTEhRcGUzUm9hWE11WDNKbFlXeHNiMk1vTkNrc2RHaHBjeTVmWkdGMFlWWnBaWGN1YzJWMFNXNTBNeklvZEdocGN5NXdiM05wZEdsdmJpeGxMSFEvUDNSb2FYTXVaVzVrYVdGdWJtVnpjeWtzZEdocGN5NXdiM05wZEdsdmJpczlOSDBzY3k1d2NtOTBiM1I1Y0dVdWQzSnBkR1ZKYm5ReE5qMW1kVzVqZEdsdmJpaGxMSFFwZTNSb2FYTXVYM0psWVd4c2IyTW9NaWtzZEdocGN5NWZaR0YwWVZacFpYY3VjMlYwU1c1ME1UWW9kR2hwY3k1d2IzTnBkR2x2Yml4bExIUS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5a3NkR2hwY3k1d2IzTnBkR2x2YmlzOU1uMHNjeTV3Y205MGIzUjVjR1V1ZDNKcGRHVkpiblE0UFdaMWJtTjBhVzl1S0dVcGUzUm9hWE11WDNKbFlXeHNiMk1vTVNrc2RHaHBjeTVmWkdGMFlWWnBaWGN1YzJWMFNXNTBPQ2gwYUdsekxuQnZjMmwwYVc5dUxHVXBMSFJvYVhNdWNHOXphWFJwYjI0clBURjlMSE11Y0hKdmRHOTBlWEJsTG5keWFYUmxWV2x1ZERNeVBXWjFibU4wYVc5dUtHVXNkQ2w3ZEdocGN5NWZjbVZoYkd4dll5ZzBLU3gwYUdsekxsOWtZWFJoVm1sbGR5NXpaWFJWYVc1ME16SW9kR2hwY3k1d2IzTnBkR2x2Yml4bExIUS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5a3NkR2hwY3k1d2IzTnBkR2x2YmlzOU5IMHNjeTV3Y205MGIzUjVjR1V1ZDNKcGRHVlZhVzUwTVRZOVpuVnVZM1JwYjI0b1pTeDBLWHQwYUdsekxsOXlaV0ZzYkc5aktESXBMSFJvYVhNdVgyUmhkR0ZXYVdWM0xuTmxkRlZwYm5ReE5paDBhR2x6TG5CdmMybDBhVzl1TEdVc2REOC9kR2hwY3k1bGJtUnBZVzV1WlhOektTeDBhR2x6TG5CdmMybDBhVzl1S3oweWZTeHpMbkJ5YjNSdmRIbHdaUzUzY21sMFpWVnBiblE0UFdaMWJtTjBhVzl1S0dVcGUzUm9hWE11WDNKbFlXeHNiMk1vTVNrc2RHaHBjeTVmWkdGMFlWWnBaWGN1YzJWMFZXbHVkRGdvZEdocGN5NXdiM05wZEdsdmJpeGxLU3gwYUdsekxuQnZjMmwwYVc5dUt6MHhmU3h6TG5CeWIzUnZkSGx3WlM1M2NtbDBaVVpzYjJGME16STlablZ1WTNScGIyNG9aU3gwS1h0MGFHbHpMbDl5WldGc2JHOWpLRFFwTEhSb2FYTXVYMlJoZEdGV2FXVjNMbk5sZEVac2IyRjBNeklvZEdocGN5NXdiM05wZEdsdmJpeGxMSFEvUDNSb2FYTXVaVzVrYVdGdWJtVnpjeWtzZEdocGN5NXdiM05wZEdsdmJpczlOSDBzY3k1d2NtOTBiM1I1Y0dVdWQzSnBkR1ZHYkc5aGREWTBQV1oxYm1OMGFXOXVLR1VzZENsN2RHaHBjeTVmY21WaGJHeHZZeWc0S1N4MGFHbHpMbDlrWVhSaFZtbGxkeTV6WlhSR2JHOWhkRFkwS0hSb2FYTXVjRzl6YVhScGIyNHNaU3gwUHo5MGFHbHpMbVZ1WkdsaGJtNWxjM01wTEhSb2FYTXVjRzl6YVhScGIyNHJQVGg5TEhNdWNISnZkRzkwZVhCbExuZHlhWFJsVlVOVE1sTjBjbWx1WnoxbWRXNWpkR2x2YmlobExIUXNhU2w3YVQwOWJuVnNiQ1ltS0drOVpTNXNaVzVuZEdncE8yWnZjaWgyWVhJZ1pqMHdPMlk4WlM1c1pXNW5kR2dtSm1ZOGFUdG1LeXNwZEdocGN5NTNjbWwwWlZWcGJuUXhOaWhsTG1Ob1lYSkRiMlJsUVhRb1ppa3NkQ2s3Wm05eUtEdG1QR2s3WmlzcktYUm9hWE11ZDNKcGRHVlZhVzUwTVRZb01DbDlMSE11Y0hKdmRHOTBlWEJsTG5keWFYUmxVM1J5YVc1blBXWjFibU4wYVc5dUtHVXNkQ3hwS1h0MllYSWdaajB3TzJsbUtIUTlQVzUxYkd4OGZIUTlQU0pCVTBOSlNTSXBhV1lvYVNFOWJuVnNiQ2w3ZG1GeUlIVTlUV0YwYUM1dGFXNG9aUzVzWlc1bmRHZ3NhU2s3Wm05eUtHWTlNRHRtUEhVN1ppc3JLWFJvYVhNdWQzSnBkR1ZWYVc1ME9DaGxMbU5vWVhKRGIyUmxRWFFvWmlrcE8yWnZjaWc3Wmp4cE8yWXJLeWwwYUdsekxuZHlhWFJsVldsdWREZ29NQ2w5Wld4elpTQm1iM0lvWmowd08yWThaUzVzWlc1bmRHZzdaaXNyS1hSb2FYTXVkM0pwZEdWVmFXNTBPQ2hsTG1Ob1lYSkRiMlJsUVhRb1ppa3BPMlZzYzJVZ2RHaHBjeTUzY21sMFpWVnBiblE0UVhKeVlYa29ibVYzSUZSbGVIUkZibU52WkdWeUtIUXBMbVZ1WTI5a1pTaGxMbk4xWW5OMGNtbHVaeWd3TEdrcEtTbDlMSE11Y0hKdmRHOTBlWEJsTG5keWFYUmxRMU4wY21sdVp6MW1kVzVqZEdsdmJpaGxMSFFwZTNaaGNpQnBQVEE3YVdZb2RDRTliblZzYkNsN2RtRnlJR1k5VFdGMGFDNXRhVzRvWlM1c1pXNW5kR2dzZENrN1ptOXlLR2s5TUR0cFBHWTdhU3NyS1hSb2FYTXVkM0pwZEdWVmFXNTBPQ2hsTG1Ob1lYSkRiMlJsUVhRb2FTa3BPMlp2Y2lnN2FUeDBPMmtyS3lsMGFHbHpMbmR5YVhSbFZXbHVkRGdvTUNsOVpXeHpaWHRtYjNJb2FUMHdPMms4WlM1c1pXNW5kR2c3YVNzcktYUm9hWE11ZDNKcGRHVlZhVzUwT0NobExtTm9ZWEpEYjJSbFFYUW9hU2twTzNSb2FYTXVkM0pwZEdWVmFXNTBPQ2d3S1gxOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFUzUnlkV04wUFdaMWJtTjBhVzl1S0dVc2RDbDdabTl5S0haaGNpQnBQVEE3YVR4bExteGxibWQwYUR0cEt6MHlLWHQyWVhJZ1pqMWxXMmtyTVYwN2RHaHBjeTUzY21sMFpWUjVjR1VvWml4MFcyVmJhVjFkTEhRcGZYMHNjeTV3Y205MGIzUjVjR1V1ZDNKcGRHVlVlWEJsUFdaMWJtTjBhVzl1S0dVc2RDeHBLWHQyWVhJZ1pqdHBaaWgwZVhCbGIyWWdaVDA5SW1aMWJtTjBhVzl1SWlseVpYUjFjbTRnWlNoMGFHbHpMSFFwTzJsbUtIUjVjR1Z2WmlCbFBUMGliMkpxWldOMElpWW1JU2hsSUdsdWMzUmhibU5sYjJZZ1FYSnlZWGtwS1hKbGRIVnliaUJsTG5ObGRDaDBhR2x6TEhRc2FTazdkbUZ5SUhVOWJuVnNiQ3gyUFNKQlUwTkpTU0lzZVQxMGFHbHpMbkJ2YzJsMGFXOXVPM04zYVhSamFDaDBlWEJsYjJZZ1pUMDlJbk4wY21sdVp5SW1KaTg2THk1MFpYTjBLR1VwSmlZb1pqMWxMbk53YkdsMEtDSTZJaWtzWlQxbVd6QmRMSFU5Y0dGeWMyVkpiblFvWmxzeFhTa3BMSFI1Y0dWdlppQmxQVDBpYzNSeWFXNW5JaVltTHl3dkxuUmxjM1FvWlNrbUppaG1QV1V1YzNCc2FYUW9JaXdpS1N4bFBXWmJNRjBzZGoxd1lYSnpaVWx1ZENobVd6RmRLU2tzWlNsN1kyRnpaU0oxYVc1ME9DSTZkR2hwY3k1M2NtbDBaVlZwYm5RNEtIUXBPMkp5WldGck8yTmhjMlVpYVc1ME9DSTZkR2hwY3k1M2NtbDBaVWx1ZERnb2RDazdZbkpsWVdzN1kyRnpaU0oxYVc1ME1UWWlPblJvYVhNdWQzSnBkR1ZWYVc1ME1UWW9kQ3gwYUdsekxtVnVaR2xoYm01bGMzTXBPMkp5WldGck8yTmhjMlVpYVc1ME1UWWlPblJvYVhNdWQzSnBkR1ZKYm5ReE5paDBMSFJvYVhNdVpXNWthV0Z1Ym1WemN5azdZbkpsWVdzN1kyRnpaU0oxYVc1ME16SWlPblJvYVhNdWQzSnBkR1ZWYVc1ME16SW9kQ3gwYUdsekxtVnVaR2xoYm01bGMzTXBPMkp5WldGck8yTmhjMlVpYVc1ME16SWlPblJvYVhNdWQzSnBkR1ZKYm5Rek1paDBMSFJvYVhNdVpXNWthV0Z1Ym1WemN5azdZbkpsWVdzN1kyRnpaU0ptYkc5aGRETXlJanAwYUdsekxuZHlhWFJsUm14dllYUXpNaWgwTEhSb2FYTXVaVzVrYVdGdWJtVnpjeWs3WW5KbFlXczdZMkZ6WlNKbWJHOWhkRFkwSWpwMGFHbHpMbmR5YVhSbFJteHZZWFEyTkNoMExIUm9hWE11Wlc1a2FXRnVibVZ6Y3lrN1luSmxZV3M3WTJGelpTSjFhVzUwTVRaaVpTSTZkR2hwY3k1M2NtbDBaVlZwYm5ReE5paDBMSE11UWtsSFgwVk9SRWxCVGlrN1luSmxZV3M3WTJGelpTSnBiblF4Tm1KbElqcDBhR2x6TG5keWFYUmxTVzUwTVRZb2RDeHpMa0pKUjE5RlRrUkpRVTRwTzJKeVpXRnJPMk5oYzJVaWRXbHVkRE15WW1VaU9uUm9hWE11ZDNKcGRHVlZhVzUwTXpJb2RDeHpMa0pKUjE5RlRrUkpRVTRwTzJKeVpXRnJPMk5oYzJVaWFXNTBNekppWlNJNmRHaHBjeTUzY21sMFpVbHVkRE15S0hRc2N5NUNTVWRmUlU1RVNVRk9LVHRpY21WaGF6dGpZWE5sSW1ac2IyRjBNekppWlNJNmRHaHBjeTUzY21sMFpVWnNiMkYwTXpJb2RDeHpMa0pKUjE5RlRrUkpRVTRwTzJKeVpXRnJPMk5oYzJVaVpteHZZWFEyTkdKbElqcDBhR2x6TG5keWFYUmxSbXh2WVhRMk5DaDBMSE11UWtsSFgwVk9SRWxCVGlrN1luSmxZV3M3WTJGelpTSjFhVzUwTVRac1pTSTZkR2hwY3k1M2NtbDBaVlZwYm5ReE5paDBMSE11VEVsVVZFeEZYMFZPUkVsQlRpazdZbkpsWVdzN1kyRnpaU0pwYm5ReE5teGxJanAwYUdsekxuZHlhWFJsU1c1ME1UWW9kQ3h6TGt4SlZGUk1SVjlGVGtSSlFVNHBPMkp5WldGck8yTmhjMlVpZFdsdWRETXliR1VpT25Sb2FYTXVkM0pwZEdWVmFXNTBNeklvZEN4ekxreEpWRlJNUlY5RlRrUkpRVTRwTzJKeVpXRnJPMk5oYzJVaWFXNTBNekpzWlNJNmRHaHBjeTUzY21sMFpVbHVkRE15S0hRc2N5NU1TVlJVVEVWZlJVNUVTVUZPS1R0aWNtVmhhenRqWVhObEltWnNiMkYwTXpKc1pTSTZkR2hwY3k1M2NtbDBaVVpzYjJGME16SW9kQ3h6TGt4SlZGUk1SVjlGVGtSSlFVNHBPMkp5WldGck8yTmhjMlVpWm14dllYUTJOR3hsSWpwMGFHbHpMbmR5YVhSbFJteHZZWFEyTkNoMExITXVURWxVVkV4RlgwVk9SRWxCVGlrN1luSmxZV3M3WTJGelpTSmpjM1J5YVc1bklqcDBhR2x6TG5keWFYUmxRMU4wY21sdVp5aDBMSFVwTzJKeVpXRnJPMk5oYzJVaWMzUnlhVzVuSWpwMGFHbHpMbmR5YVhSbFUzUnlhVzVuS0hRc2RpeDFLVHRpY21WaGF6dGpZWE5sSW5VeE5uTjBjbWx1WnlJNmRHaHBjeTUzY21sMFpWVkRVekpUZEhKcGJtY29kQ3gwYUdsekxtVnVaR2xoYm01bGMzTXNkU2s3WW5KbFlXczdZMkZ6WlNKMU1UWnpkSEpwYm1kc1pTSTZkR2hwY3k1M2NtbDBaVlZEVXpKVGRISnBibWNvZEN4ekxreEpWRlJNUlY5RlRrUkpRVTRzZFNrN1luSmxZV3M3WTJGelpTSjFNVFp6ZEhKcGJtZGlaU0k2ZEdocGN5NTNjbWwwWlZWRFV6SlRkSEpwYm1jb2RDeHpMa0pKUjE5RlRrUkpRVTRzZFNrN1luSmxZV3M3WkdWbVlYVnNkRHBwWmlobExteGxibWQwYUQwOU15bDdabTl5S0haaGNpQnRQV1ZiTVYwc1lqMHdPMkk4ZEM1c1pXNW5kR2c3WWlzcktYUm9hWE11ZDNKcGRHVlVlWEJsS0cwc2RGdGlYU2s3WW5KbFlXdDlaV3h6Wlh0MGFHbHpMbmR5YVhSbFUzUnlkV04wS0dVc2RDazdZbkpsWVd0OWZYVWhQVzUxYkd3bUppaDBhR2x6TG5CdmMybDBhVzl1UFhrc2RHaHBjeTVmY21WaGJHeHZZeWgxS1N4MGFHbHpMbkJ2YzJsMGFXOXVQWGtyZFNsOUxITXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFZXbHVkRFkwUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFUxaGRHZ3VabXh2YjNJb1pTOXNLVHQwYUdsekxuZHlhWFJsVldsdWRETXlLSFFwTEhSb2FYTXVkM0pwZEdWVmFXNTBNeklvWlNZME1qazBPVFkzTWprMUtYMHNjeTV3Y205MGIzUjVjR1V1ZDNKcGRHVlZhVzUwTWpROVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1M2NtbDBaVlZwYm5RNEtDaGxKakUyTnpFeE5qZ3dLVDQrTVRZcExIUm9hWE11ZDNKcGRHVlZhVzUwT0Nnb1pTWTJOVEk0TUNrK1BqZ3BMSFJvYVhNdWQzSnBkR1ZWYVc1ME9DaGxKakkxTlNsOUxITXVjSEp2ZEc5MGVYQmxMbUZrYW5WemRGVnBiblF6TWoxbWRXNWpkR2x2YmlobExIUXBlM1poY2lCcFBYUm9hWE11Y0c5emFYUnBiMjQ3ZEdocGN5NXpaV1ZyS0dVcExIUm9hWE11ZDNKcGRHVlZhVzUwTXpJb2RDa3NkR2hwY3k1elpXVnJLR2twZlN4ekxuQnliM1J2ZEhsd1pTNXRZWEJKYm5Rek1rRnljbUY1UFdaMWJtTjBhVzl1S0dVc2RDbDdkR2hwY3k1ZmNtVmhiR3h2WXlobEtqUXBPM1poY2lCcFBXNWxkeUJKYm5Rek1rRnljbUY1S0hSb2FYTXVYMkoxWm1abGNpeDBhR2x6TG1KNWRHVlBabVp6WlhRcmRHaHBjeTV3YjNOcGRHbHZiaXhsS1R0eVpYUjFjbTRnY3k1aGNuSmhlVlJ2VG1GMGFYWmxLR2tzZEQ4L2RHaHBjeTVsYm1ScFlXNXVaWE56S1N4MGFHbHpMbkJ2YzJsMGFXOXVLejFsS2pRc2FYMHNjeTV3Y205MGIzUjVjR1V1YldGd1NXNTBNVFpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTNSb2FYTXVYM0psWVd4c2IyTW9aU295S1R0MllYSWdhVDF1WlhjZ1NXNTBNVFpCY25KaGVTaDBhR2x6TGw5aWRXWm1aWElzZEdocGN5NWllWFJsVDJabWMyVjBLM1JvYVhNdWNHOXphWFJwYjI0c1pTazdjbVYwZFhKdUlITXVZWEp5WVhsVWIwNWhkR2wyWlNocExIUS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5a3NkR2hwY3k1d2IzTnBkR2x2YmlzOVpTb3lMR2w5TEhNdWNISnZkRzkwZVhCbExtMWhjRWx1ZERoQmNuSmhlVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMbDl5WldGc2JHOWpLR1VxTVNrN2RtRnlJSFE5Ym1WM0lFbHVkRGhCY25KaGVTaDBhR2x6TGw5aWRXWm1aWElzZEdocGN5NWllWFJsVDJabWMyVjBLM1JvYVhNdWNHOXphWFJwYjI0c1pTazdjbVYwZFhKdUlIUm9hWE11Y0c5emFYUnBiMjRyUFdVcU1TeDBmU3h6TG5CeWIzUnZkSGx3WlM1dFlYQlZhVzUwTXpKQmNuSmhlVDFtZFc1amRHbHZiaWhsTEhRcGUzUm9hWE11WDNKbFlXeHNiMk1vWlNvMEtUdDJZWElnYVQxdVpYY2dWV2x1ZERNeVFYSnlZWGtvZEdocGN5NWZZblZtWm1WeUxIUm9hWE11WW5sMFpVOW1abk5sZEN0MGFHbHpMbkJ2YzJsMGFXOXVMR1VwTzNKbGRIVnliaUJ6TG1GeWNtRjVWRzlPWVhScGRtVW9hU3gwUHo5MGFHbHpMbVZ1WkdsaGJtNWxjM01wTEhSb2FYTXVjRzl6YVhScGIyNHJQV1VxTkN4cGZTeHpMbkJ5YjNSdmRIbHdaUzV0WVhCVmFXNTBNVFpCY25KaGVUMW1kVzVqZEdsdmJpaGxMSFFwZTNSb2FYTXVYM0psWVd4c2IyTW9aU295S1R0MllYSWdhVDF1WlhjZ1ZXbHVkREUyUVhKeVlYa29kR2hwY3k1ZlluVm1abVZ5TEhSb2FYTXVZbmwwWlU5bVpuTmxkQ3QwYUdsekxuQnZjMmwwYVc5dUxHVXBPM0psZEhWeWJpQnpMbUZ5Y21GNVZHOU9ZWFJwZG1Vb2FTeDBQejkwYUdsekxtVnVaR2xoYm01bGMzTXBMSFJvYVhNdWNHOXphWFJwYjI0clBXVXFNaXhwZlN4ekxuQnliM1J2ZEhsd1pTNXRZWEJHYkc5aGREWTBRWEp5WVhrOVpuVnVZM1JwYjI0b1pTeDBLWHQwYUdsekxsOXlaV0ZzYkc5aktHVXFPQ2s3ZG1GeUlHazlibVYzSUVac2IyRjBOalJCY25KaGVTaDBhR2x6TGw5aWRXWm1aWElzZEdocGN5NWllWFJsVDJabWMyVjBLM1JvYVhNdWNHOXphWFJwYjI0c1pTazdjbVYwZFhKdUlITXVZWEp5WVhsVWIwNWhkR2wyWlNocExIUS9QM1JvYVhNdVpXNWthV0Z1Ym1WemN5a3NkR2hwY3k1d2IzTnBkR2x2YmlzOVpTbzRMR2w5TEhNdWNISnZkRzkwZVhCbExtMWhjRVpzYjJGME16SkJjbkpoZVQxbWRXNWpkR2x2YmlobExIUXBlM1JvYVhNdVgzSmxZV3hzYjJNb1pTbzBLVHQyWVhJZ2FUMXVaWGNnUm14dllYUXpNa0Z5Y21GNUtIUm9hWE11WDJKMVptWmxjaXgwYUdsekxtSjVkR1ZQWm1aelpYUXJkR2hwY3k1d2IzTnBkR2x2Yml4bEtUdHlaWFIxY200Z2N5NWhjbkpoZVZSdlRtRjBhWFpsS0drc2REOC9kR2hwY3k1bGJtUnBZVzV1WlhOektTeDBhR2x6TG5CdmMybDBhVzl1S3oxbEtqUXNhWDA3ZG1GeUlHUTlablZ1WTNScGIyNG9aU2w3ZEdocGN5NWlkV1ptWlhKelBWdGRMSFJvYVhNdVluVm1abVZ5U1c1a1pYZzlMVEVzWlNZbUtIUm9hWE11YVc1elpYSjBRblZtWm1WeUtHVXBMSFJvYVhNdVluVm1abVZ5U1c1a1pYZzlNQ2w5TzJRdWNISnZkRzkwZVhCbFBXNWxkeUJ6S0c1bGR5QkJjbkpoZVVKMVptWmxjaXd3TEhNdVFrbEhYMFZPUkVsQlRpa3NaQzV3Y205MGIzUjVjR1V1YVc1cGRHbGhiR2w2WldROVpuVnVZM1JwYjI0b0tYdDJZWElnWlR0eVpYUjFjbTRnZEdocGN5NWlkV1ptWlhKSmJtUmxlRDR0TVQ4aE1EcDBhR2x6TG1KMVptWmxjbk11YkdWdVozUm9QakEvS0dVOWRHaHBjeTVpZFdabVpYSnpXekJkTEdVdVptbHNaVk4wWVhKMFBUMDlNRDhvZEdocGN5NWlkV1ptWlhJOVpTeDBhR2x6TG1KMVptWmxja2x1WkdWNFBUQXNjaTVrWldKMVp5Z2lUWFZzZEdsQ2RXWm1aWEpUZEhKbFlXMGlMQ0pUZEhKbFlXMGdjbVZoWkhrZ1ptOXlJSEJoY25OcGJtY2lLU3doTUNrNktISXVkMkZ5YmlnaVRYVnNkR2xDZFdabVpYSlRkSEpsWVcwaUxDSlVhR1VnWm1seWMzUWdZblZtWm1WeUlITm9iM1ZzWkNCb1lYWmxJR0VnWm1sc1pWTjBZWEowSUc5bUlEQWlLU3gwYUdsekxteHZaMEoxWm1abGNreGxkbVZzS0Nrc0lURXBLVG9vY2k1M1lYSnVLQ0pOZFd4MGFVSjFabVpsY2xOMGNtVmhiU0lzSWs1dklHSjFabVpsY2lCMGJ5QnpkR0Z5ZENCd1lYSnphVzVuSUdaeWIyMGlLU3gwYUdsekxteHZaMEoxWm1abGNreGxkbVZzS0Nrc0lURXBmU3hCY25KaGVVSjFabVpsY2k1amIyNWpZWFE5Wm5WdVkzUnBiMjRvWlN4MEtYdHlMbVJsWW5WbktDSkJjbkpoZVVKMVptWmxjaUlzSWxSeWVXbHVaeUIwYnlCamNtVmhkR1VnWVNCdVpYY2dZblZtWm1WeUlHOW1JSE5wZW1VNklDSXJLR1V1WW5sMFpVeGxibWQwYUN0MExtSjVkR1ZNWlc1bmRHZ3BLVHQyWVhJZ2FUMXVaWGNnVldsdWREaEJjbkpoZVNobExtSjVkR1ZNWlc1bmRHZ3JkQzVpZVhSbFRHVnVaM1JvS1R0eVpYUjFjbTRnYVM1elpYUW9ibVYzSUZWcGJuUTRRWEp5WVhrb1pTa3NNQ2tzYVM1elpYUW9ibVYzSUZWcGJuUTRRWEp5WVhrb2RDa3NaUzVpZVhSbFRHVnVaM1JvS1N4cExtSjFabVpsY24wc1pDNXdjbTkwYjNSNWNHVXVjbVZrZFdObFFuVm1abVZ5UFdaMWJtTjBhVzl1S0dVc2RDeHBLWHQyWVhJZ1pqdHlaWFIxY200Z1pqMXVaWGNnVldsdWREaEJjbkpoZVNocEtTeG1Mbk5sZENodVpYY2dWV2x1ZERoQmNuSmhlU2hsTEhRc2FTa3BMR1l1WW5WbVptVnlMbVpwYkdWVGRHRnlkRDFsTG1acGJHVlRkR0Z5ZEN0MExHWXVZblZtWm1WeUxuVnpaV1JDZVhSbGN6MHdMR1l1WW5WbVptVnlmU3hrTG5CeWIzUnZkSGx3WlM1cGJuTmxjblJDZFdabVpYSTlablZ1WTNScGIyNG9aU2w3Wm05eUtIWmhjaUIwUFNFd0xHazlNRHRwUEhSb2FYTXVZblZtWm1WeWN5NXNaVzVuZEdnN2FTc3JLWHQyWVhJZ1pqMTBhR2x6TG1KMVptWmxjbk5iYVYwN2FXWW9aUzVtYVd4bFUzUmhjblE4UFdZdVptbHNaVk4wWVhKMEtYdHBaaWhsTG1acGJHVlRkR0Z5ZEQwOVBXWXVabWxzWlZOMFlYSjBLV2xtS0dVdVlubDBaVXhsYm1kMGFENW1MbUo1ZEdWTVpXNW5kR2dwZTNSb2FYTXVZblZtWm1WeWN5NXpjR3hwWTJVb2FTd3hLU3hwTFMwN1kyOXVkR2x1ZFdWOVpXeHpaU0J5TG5kaGNtNG9JazExYkhScFFuVm1abVZ5VTNSeVpXRnRJaXdpUW5WbVptVnlJQ2htYVd4bFUzUmhjblE2SUNJclpTNW1hV3hsVTNSaGNuUXJJaUF0SUV4bGJtZDBhRG9nSWl0bExtSjVkR1ZNWlc1bmRHZ3JJaWtnWVd4eVpXRmtlU0JoY0hCbGJtUmxaQ3dnYVdkdWIzSnBibWNpS1R0bGJITmxJR1V1Wm1sc1pWTjBZWEowSzJVdVlubDBaVXhsYm1kMGFEdzlaaTVtYVd4bFUzUmhjblI4ZkNobFBYUm9hWE11Y21Wa2RXTmxRblZtWm1WeUtHVXNNQ3htTG1acGJHVlRkR0Z5ZEMxbExtWnBiR1ZUZEdGeWRDa3BMSEl1WkdWaWRXY29JazExYkhScFFuVm1abVZ5VTNSeVpXRnRJaXdpUVhCd1pXNWthVzVuSUc1bGR5QmlkV1ptWlhJZ0tHWnBiR1ZUZEdGeWREb2dJaXRsTG1acGJHVlRkR0Z5ZENzaUlDMGdUR1Z1WjNSb09pQWlLMlV1WW5sMFpVeGxibWQwYUNzaUtTSXBMSFJvYVhNdVluVm1abVZ5Y3k1emNHeHBZMlVvYVN3d0xHVXBMR2s5UFQwd0ppWW9kR2hwY3k1aWRXWm1aWEk5WlNrN2REMGhNVHRpY21WaGEzMWxiSE5sSUdsbUtHVXVabWxzWlZOMFlYSjBQR1l1Wm1sc1pWTjBZWEowSzJZdVlubDBaVXhsYm1kMGFDbDdkbUZ5SUhVOVppNW1hV3hsVTNSaGNuUXJaaTVpZVhSbFRHVnVaM1JvTFdVdVptbHNaVk4wWVhKMExIWTlaUzVpZVhSbFRHVnVaM1JvTFhVN2FXWW9kajR3S1dVOWRHaHBjeTV5WldSMVkyVkNkV1ptWlhJb1pTeDFMSFlwTzJWc2MyVjdkRDBoTVR0aWNtVmhhMzE5ZlhRbUppaHlMbVJsWW5WbktDSk5kV3gwYVVKMVptWmxjbE4wY21WaGJTSXNJa0Z3Y0dWdVpHbHVaeUJ1WlhjZ1luVm1abVZ5SUNobWFXeGxVM1JoY25RNklDSXJaUzVtYVd4bFUzUmhjblFySWlBdElFeGxibWQwYURvZ0lpdGxMbUo1ZEdWTVpXNW5kR2dySWlraUtTeDBhR2x6TG1KMVptWmxjbk11Y0hWemFDaGxLU3hwUFQwOU1DWW1LSFJvYVhNdVluVm1abVZ5UFdVcEtYMHNaQzV3Y205MGIzUjVjR1V1Ykc5blFuVm1abVZ5VEdWMlpXdzlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhU3htTEhVc2RqMWJYU3g1TEcwOUlpSTdabTl5S0dZOU1DeDFQVEFzZEQwd08zUThkR2hwY3k1aWRXWm1aWEp6TG14bGJtZDBhRHQwS3lzcGFUMTBhR2x6TG1KMVptWmxjbk5iZEYwc2REMDlQVEEvS0hrOWUzMHNkaTV3ZFhOb0tIa3BMSGt1YzNSaGNuUTlhUzVtYVd4bFUzUmhjblFzZVM1bGJtUTlhUzVtYVd4bFUzUmhjblFyYVM1aWVYUmxUR1Z1WjNSb0xHMHJQU0piSWl0NUxuTjBZWEowS3lJdElpazZlUzVsYm1ROVBUMXBMbVpwYkdWVGRHRnlkRDk1TG1WdVpEMXBMbVpwYkdWVGRHRnlkQ3RwTG1KNWRHVk1aVzVuZEdnNktIazllMzBzZVM1emRHRnlkRDFwTG1acGJHVlRkR0Z5ZEN4dEt6MTJXM1l1YkdWdVozUm9MVEZkTG1WdVpDMHhLeUpkTENCYklpdDVMbk4wWVhKMEt5SXRJaXg1TG1WdVpEMXBMbVpwYkdWVGRHRnlkQ3RwTG1KNWRHVk1aVzVuZEdnc2RpNXdkWE5vS0hrcEtTeG1LejFwTG5WelpXUkNlWFJsY3l4MUt6MXBMbUo1ZEdWTVpXNW5kR2c3ZGk1c1pXNW5kR2crTUNZbUtHMHJQWGt1Wlc1a0xURXJJbDBpS1R0MllYSWdZajFsUDNJdWFXNW1ienB5TG1SbFluVm5PM1JvYVhNdVluVm1abVZ5Y3k1c1pXNW5kR2c5UFQwd1AySW9JazExYkhScFFuVm1abVZ5VTNSeVpXRnRJaXdpVG04Z2JXOXlaU0JpZFdabVpYSWdhVzRnYldWdGIzSjVJaWs2WWlnaVRYVnNkR2xDZFdabVpYSlRkSEpsWVcwaUxDSWlLM1JvYVhNdVluVm1abVZ5Y3k1c1pXNW5kR2dySWlCemRHOXlaV1FnWW5WbVptVnlLSE1wSUNnaUsyWXJJaThpSzNVcklpQmllWFJsY3lrc0lHTnZiblJwYm5WdmRYTWdjbUZ1WjJWek9pQWlLMjBwZlN4a0xuQnliM1J2ZEhsd1pTNWpiR1ZoYmtKMVptWmxjbk05Wm5WdVkzUnBiMjRvS1h0MllYSWdaU3gwTzJadmNpaGxQVEE3WlR4MGFHbHpMbUoxWm1abGNuTXViR1Z1WjNSb08yVXJLeWwwUFhSb2FYTXVZblZtWm1WeWMxdGxYU3gwTG5WelpXUkNlWFJsY3owOVBYUXVZbmwwWlV4bGJtZDBhQ1ltS0hJdVpHVmlkV2NvSWsxMWJIUnBRblZtWm1WeVUzUnlaV0Z0SWl3aVVtVnRiM1pwYm1jZ1luVm1abVZ5SUNNaUsyVXBMSFJvYVhNdVluVm1abVZ5Y3k1emNHeHBZMlVvWlN3eEtTeGxMUzBwZlN4a0xuQnliM1J2ZEhsd1pTNXRaWEpuWlU1bGVIUkNkV1ptWlhJOVpuVnVZM1JwYjI0b0tYdDJZWElnWlR0cFppaDBhR2x6TG1KMVptWmxja2x1WkdWNEt6RThkR2hwY3k1aWRXWm1aWEp6TG14bGJtZDBhQ2xwWmlobFBYUm9hWE11WW5WbVptVnljMXQwYUdsekxtSjFabVpsY2tsdVpHVjRLekZkTEdVdVptbHNaVk4wWVhKMFBUMDlkR2hwY3k1aWRXWm1aWEl1Wm1sc1pWTjBZWEowSzNSb2FYTXVZblZtWm1WeUxtSjVkR1ZNWlc1bmRHZ3BlM1poY2lCMFBYUm9hWE11WW5WbVptVnlMbUo1ZEdWTVpXNW5kR2dzYVQxMGFHbHpMbUoxWm1abGNpNTFjMlZrUW5sMFpYTXNaajEwYUdsekxtSjFabVpsY2k1bWFXeGxVM1JoY25RN2NtVjBkWEp1SUhSb2FYTXVZblZtWm1WeWMxdDBhR2x6TG1KMVptWmxja2x1WkdWNFhUMUJjbkpoZVVKMVptWmxjaTVqYjI1allYUW9kR2hwY3k1aWRXWm1aWElzWlNrc2RHaHBjeTVpZFdabVpYSTlkR2hwY3k1aWRXWm1aWEp6VzNSb2FYTXVZblZtWm1WeVNXNWtaWGhkTEhSb2FYTXVZblZtWm1WeWN5NXpjR3hwWTJVb2RHaHBjeTVpZFdabVpYSkpibVJsZUNzeExERXBMSFJvYVhNdVluVm1abVZ5TG5WelpXUkNlWFJsY3oxcExIUm9hWE11WW5WbVptVnlMbVpwYkdWVGRHRnlkRDFtTEhJdVpHVmlkV2NvSWtsVFQwWnBiR1VpTENKRGIyNWpZWFJsYm1GMGFXNW5JR0oxWm1abGNpQm1iM0lnWW05NElIQmhjbk5wYm1jZ0tHeGxibWQwYURvZ0lpdDBLeUl0UGlJcmRHaHBjeTVpZFdabVpYSXVZbmwwWlV4bGJtZDBhQ3NpS1NJcExDRXdmV1ZzYzJVZ2NtVjBkWEp1SVRFN1pXeHpaU0J5WlhSMWNtNGhNWDBzWkM1d2NtOTBiM1I1Y0dVdVptbHVaRkJ2YzJsMGFXOXVQV1oxYm1OMGFXOXVLR1VzZEN4cEtYdDJZWElnWml4MVBXNTFiR3dzZGowdE1UdG1iM0lvWlQwOVBTRXdQMlk5TURwbVBYUm9hWE11WW5WbVptVnlTVzVrWlhnN1pqeDBhR2x6TG1KMVptWmxjbk11YkdWdVozUm9KaVlvZFQxMGFHbHpMbUoxWm1abGNuTmJabDBzZFM1bWFXeGxVM1JoY25ROFBYUXBPeWw3ZGoxbUxHa21KaWgxTG1acGJHVlRkR0Z5ZEN0MUxtSjVkR1ZNWlc1bmRHZzhQWFEvZFM1MWMyVmtRbmwwWlhNOWRTNWllWFJsVEdWdVozUm9PblV1ZFhObFpFSjVkR1Z6UFhRdGRTNW1hV3hsVTNSaGNuUXNkR2hwY3k1c2IyZENkV1ptWlhKTVpYWmxiQ2dwS1R0bUt5dDljbVYwZFhKdUlIWWhQVDB0TVQ4b2RUMTBhR2x6TG1KMVptWmxjbk5iZGwwc2RTNW1hV3hsVTNSaGNuUXJkUzVpZVhSbFRHVnVaM1JvUGoxMFB5aHlMbVJsWW5WbktDSk5kV3gwYVVKMVptWmxjbE4wY21WaGJTSXNJa1p2ZFc1a0lIQnZjMmwwYVc5dUlHbHVJR1Y0YVhOMGFXNW5JR0oxWm1abGNpQWpJaXQyS1N4MktUb3RNU2s2TFRGOUxHUXVjSEp2ZEc5MGVYQmxMbVpwYm1SRmJtUkRiMjUwYVdkMWIzVnpRblZtUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwTEdrc1ppeDFQV1VoUFQxMmIybGtJREEvWlRwMGFHbHpMbUoxWm1abGNrbHVaR1Y0TzJsbUtHazlkR2hwY3k1aWRXWm1aWEp6VzNWZExIUm9hWE11WW5WbVptVnljeTVzWlc1bmRHZytkU3N4S1dadmNpaDBQWFVyTVR0MFBIUm9hWE11WW5WbVptVnljeTVzWlc1bmRHZ21KaWhtUFhSb2FYTXVZblZtWm1WeWMxdDBYU3htTG1acGJHVlRkR0Z5ZEQwOVBXa3VabWxzWlZOMFlYSjBLMmt1WW5sMFpVeGxibWQwYUNrN2RDc3JLV2s5Wmp0eVpYUjFjbTRnYVM1bWFXeGxVM1JoY25RcmFTNWllWFJsVEdWdVozUm9mU3hrTG5CeWIzUnZkSGx3WlM1blpYUkZibVJHYVd4bFVHOXphWFJwYjI1QlpuUmxjajFtZFc1amRHbHZiaWhsS1h0MllYSWdkRDEwYUdsekxtWnBibVJRYjNOcGRHbHZiaWdoTUN4bExDRXhLVHR5WlhSMWNtNGdkQ0U5UFMweFAzUm9hWE11Wm1sdVpFVnVaRU52Ym5ScFozVnZkWE5DZFdZb2RDazZaWDBzWkM1d2NtOTBiM1I1Y0dVdVlXUmtWWE5sWkVKNWRHVnpQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVZblZtWm1WeUxuVnpaV1JDZVhSbGN5czlaU3gwYUdsekxteHZaMEoxWm1abGNreGxkbVZzS0NsOUxHUXVjSEp2ZEc5MGVYQmxMbk5sZEVGc2JGVnpaV1JDZVhSbGN6MW1kVzVqZEdsdmJpZ3BlM1JvYVhNdVluVm1abVZ5TG5WelpXUkNlWFJsY3oxMGFHbHpMbUoxWm1abGNpNWllWFJsVEdWdVozUm9MSFJvYVhNdWJHOW5RblZtWm1WeVRHVjJaV3dvS1gwc1pDNXdjbTkwYjNSNWNHVXVjMlZsYXoxbWRXNWpkR2x2YmlobExIUXNhU2w3ZG1GeUlHWTdjbVYwZFhKdUlHWTlkR2hwY3k1bWFXNWtVRzl6YVhScGIyNG9kQ3hsTEdrcExHWWhQVDB0TVQ4b2RHaHBjeTVpZFdabVpYSTlkR2hwY3k1aWRXWm1aWEp6VzJaZExIUm9hWE11WW5WbVptVnlTVzVrWlhnOVppeDBhR2x6TG5CdmMybDBhVzl1UFdVdGRHaHBjeTVpZFdabVpYSXVabWxzWlZOMFlYSjBMSEl1WkdWaWRXY29JazExYkhScFFuVm1abVZ5VTNSeVpXRnRJaXdpVW1Wd2IzTnBkR2x2Ym1sdVp5QndZWEp6WlhJZ1lYUWdZblZtWm1WeUlIQnZjMmwwYVc5dU9pQWlLM1JvYVhNdWNHOXphWFJwYjI0cExDRXdLVG9vY2k1a1pXSjFaeWdpVFhWc2RHbENkV1ptWlhKVGRISmxZVzBpTENKUWIzTnBkR2x2YmlBaUsyVXJJaUJ1YjNRZ1ptOTFibVFnYVc0Z1luVm1abVZ5WldRZ1pHRjBZU0lwTENFeEtYMHNaQzV3Y205MGIzUjVjR1V1WjJWMFVHOXphWFJwYjI0OVpuVnVZM1JwYjI0b0tYdHBaaWgwYUdsekxtSjFabVpsY2tsdVpHVjRQVDA5TFRGOGZIUm9hWE11WW5WbVptVnljMXQwYUdsekxtSjFabVpsY2tsdVpHVjRYVDA5UFc1MWJHd3BkR2h5YjNjaVJYSnliM0lnWVdOalpYTnphVzVuSUhCdmMybDBhVzl1SUdsdUlIUm9aU0JOZFd4MGFVSjFabVpsY2xOMGNtVmhiU0k3Y21WMGRYSnVJSFJvYVhNdVluVm1abVZ5YzF0MGFHbHpMbUoxWm1abGNrbHVaR1Y0WFM1bWFXeGxVM1JoY25RcmRHaHBjeTV3YjNOcGRHbHZibjBzWkM1d2NtOTBiM1I1Y0dVdVoyVjBUR1Z1WjNSb1BXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11WW5sMFpVeGxibWQwYUgwc1pDNXdjbTkwYjNSNWNHVXVaMlYwUlc1a1VHOXphWFJwYjI0OVpuVnVZM1JwYjI0b0tYdHBaaWgwYUdsekxtSjFabVpsY2tsdVpHVjRQVDA5TFRGOGZIUm9hWE11WW5WbVptVnljMXQwYUdsekxtSjFabVpsY2tsdVpHVjRYVDA5UFc1MWJHd3BkR2h5YjNjaVJYSnliM0lnWVdOalpYTnphVzVuSUhCdmMybDBhVzl1SUdsdUlIUm9aU0JOZFd4MGFVSjFabVpsY2xOMGNtVmhiU0k3Y21WMGRYSnVJSFJvYVhNdVluVm1abVZ5YzF0MGFHbHpMbUoxWm1abGNrbHVaR1Y0WFM1bWFXeGxVM1JoY25RcmRHaHBjeTVpZVhSbFRHVnVaM1JvZlN4dUxrMTFiSFJwUW5WbVptVnlVM1J5WldGdFBXUTdkbUZ5SUdnOVpuVnVZM1JwYjI0b0tYdDJZWElnWlQwekxIUTlOQ3hwUFRVc1pqMDJMSFU5VzEwN2RWdGxYVDBpUlZOZlJHVnpZM0pwY0hSdmNpSXNkVnQwWFQwaVJHVmpiMlJsY2tOdmJtWnBaMFJsYzJOeWFYQjBiM0lpTEhWYmFWMDlJa1JsWTI5a1pYSlRjR1ZqYVdacFkwbHVabThpTEhWYlpsMDlJbE5NUTI5dVptbG5SR1Z6WTNKcGNIUnZjaUlzZEdocGN5NW5aWFJFWlhOamNtbHdkRzl5VG1GdFpUMW1kVzVqZEdsdmJpaHRLWHR5WlhSMWNtNGdkVnR0WFgwN2RtRnlJSFk5ZEdocGN5eDVQWHQ5TzNKbGRIVnliaUIwYUdsekxuQmhjbk5sVDI1bFJHVnpZM0pwY0hSdmNqMW1kVzVqZEdsdmJpaHRLWHQyWVhJZ1lqMHdMSGdzVXl4Vk8yWnZjaWg0UFcwdWNtVmhaRlZwYm5RNEtDa3NWVDF0TG5KbFlXUlZhVzUwT0NncE8xVW1NVEk0T3lsaVBTaFZKakV5TnlrOFBEY3NWVDF0TG5KbFlXUlZhVzUwT0NncE8zSmxkSFZ5YmlCaUt6MVZKakV5Tnl4eUxtUmxZblZuS0NKTlVFVkhORVJsYzJOeWFYQjBiM0pRWVhKelpYSWlMQ0pHYjNWdVpDQWlLeWgxVzNoZGZId2lSR1Z6WTNKcGNIUnZjaUFpSzNncEt5SXNJSE5wZW1VZ0lpdGlLeUlnWVhRZ2NHOXphWFJwYjI0Z0lpdHRMbWRsZEZCdmMybDBhVzl1S0NrcExIVmJlRjAvVXoxdVpYY2dlVnQxVzNoZFhTaGlLVHBUUFc1bGR5QjVMa1JsYzJOeWFYQjBiM0lvWWlrc1V5NXdZWEp6WlNodEtTeFRmU3g1TGtSbGMyTnlhWEIwYjNJOVpuVnVZM1JwYjI0b2JTeGlLWHQwYUdsekxuUmhaejF0TEhSb2FYTXVjMmw2WlQxaUxIUm9hWE11WkdWelkzTTlXMTE5TEhrdVJHVnpZM0pwY0hSdmNpNXdjbTkwYjNSNWNHVXVjR0Z5YzJVOVpuVnVZM1JwYjI0b2JTbDdkR2hwY3k1a1lYUmhQVzB1Y21WaFpGVnBiblE0UVhKeVlYa29kR2hwY3k1emFYcGxLWDBzZVM1RVpYTmpjbWx3ZEc5eUxuQnliM1J2ZEhsd1pTNW1hVzVrUkdWelkzSnBjSFJ2Y2oxbWRXNWpkR2x2YmlodEtYdG1iM0lvZG1GeUlHSTlNRHRpUEhSb2FYTXVaR1Z6WTNNdWJHVnVaM1JvTzJJckt5bHBaaWgwYUdsekxtUmxjMk56VzJKZExuUmhaejA5YlNseVpYUjFjbTRnZEdocGN5NWtaWE5qYzF0aVhUdHlaWFIxY200Z2JuVnNiSDBzZVM1RVpYTmpjbWx3ZEc5eUxuQnliM1J2ZEhsd1pTNXdZWEp6WlZKbGJXRnBibWx1WjBSbGMyTnlhWEIwYjNKelBXWjFibU4wYVc5dUtHMHBlMlp2Y2loMllYSWdZajF0TG5CdmMybDBhVzl1TzIwdWNHOXphWFJwYjI0OFlpdDBhR2x6TG5OcGVtVTdLWHQyWVhJZ2VEMTJMbkJoY25ObFQyNWxSR1Z6WTNKcGNIUnZjaWh0S1R0MGFHbHpMbVJsYzJOekxuQjFjMmdvZUNsOWZTeDVMa1ZUWDBSbGMyTnlhWEIwYjNJOVpuVnVZM1JwYjI0b2JTbDdlUzVFWlhOamNtbHdkRzl5TG1OaGJHd29kR2hwY3l4bExHMHBmU3g1TGtWVFgwUmxjMk55YVhCMGIzSXVjSEp2ZEc5MGVYQmxQVzVsZHlCNUxrUmxjMk55YVhCMGIzSXNlUzVGVTE5RVpYTmpjbWx3ZEc5eUxuQnliM1J2ZEhsd1pTNXdZWEp6WlQxbWRXNWpkR2x2YmlodEtYdHBaaWgwYUdsekxrVlRYMGxFUFcwdWNtVmhaRlZwYm5ReE5pZ3BMSFJvYVhNdVpteGhaM005YlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG5OcGVtVXRQVE1zZEdocGN5NW1iR0ZuY3lZeE1qZy9LSFJvYVhNdVpHVndaVzVrYzA5dVgwVlRYMGxFUFcwdWNtVmhaRlZwYm5ReE5pZ3BMSFJvYVhNdWMybDZaUzA5TWlrNmRHaHBjeTVrWlhCbGJtUnpUMjVmUlZOZlNVUTlNQ3gwYUdsekxtWnNZV2R6SmpZMEtYdDJZWElnWWoxdExuSmxZV1JWYVc1ME9DZ3BPM1JvYVhNdVZWSk1QVzB1Y21WaFpGTjBjbWx1WnloaUtTeDBhR2x6TG5OcGVtVXRQV0lyTVgxbGJITmxJSFJvYVhNdVZWSk1QU0lpTzNSb2FYTXVabXhoWjNNbU16SS9LSFJvYVhNdVQwTlNYMFZUWDBsRVBXMHVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXVjMmw2WlMwOU1pazZkR2hwY3k1UFExSmZSVk5mU1VROU1DeDBhR2x6TG5CaGNuTmxVbVZ0WVdsdWFXNW5SR1Z6WTNKcGNIUnZjbk1vYlNsOUxIa3VSVk5mUkdWelkzSnBjSFJ2Y2k1d2NtOTBiM1I1Y0dVdVoyVjBUMVJKUFdaMWJtTjBhVzl1S0cwcGUzWmhjaUJpUFhSb2FYTXVabWx1WkVSbGMyTnlhWEIwYjNJb2RDazdjbVYwZFhKdUlHSS9ZaTV2ZEdrNk1IMHNlUzVGVTE5RVpYTmpjbWx3ZEc5eUxuQnliM1J2ZEhsd1pTNW5aWFJCZFdScGIwTnZibVpwWnoxbWRXNWpkR2x2YmlodEtYdDJZWElnWWoxMGFHbHpMbVpwYm1SRVpYTmpjbWx3ZEc5eUtIUXBPMmxtS0NGaUtYSmxkSFZ5YmlCdWRXeHNPM1poY2lCNFBXSXVabWx1WkVSbGMyTnlhWEIwYjNJb2FTazdhV1lvZUNZbWVDNWtZWFJoS1h0MllYSWdVejBvZUM1a1lYUmhXekJkSmpJME9DaytQak03Y21WMGRYSnVJRk05UFQwek1TWW1lQzVrWVhSaExteGxibWQwYUQ0OU1pWW1LRk05TXpJcktDaDRMbVJoZEdGYk1GMG1OeWs4UERNcEt5Z29lQzVrWVhSaFd6RmRKakl5TkNrK1BqVXBLU3hUZldWc2MyVWdjbVYwZFhKdUlHNTFiR3g5TEhrdVJHVmpiMlJsY2tOdmJtWnBaMFJsYzJOeWFYQjBiM0k5Wm5WdVkzUnBiMjRvYlNsN2VTNUVaWE5qY21sd2RHOXlMbU5oYkd3b2RHaHBjeXgwTEcwcGZTeDVMa1JsWTI5a1pYSkRiMjVtYVdkRVpYTmpjbWx3ZEc5eUxuQnliM1J2ZEhsd1pUMXVaWGNnZVM1RVpYTmpjbWx3ZEc5eUxIa3VSR1ZqYjJSbGNrTnZibVpwWjBSbGMyTnlhWEIwYjNJdWNISnZkRzkwZVhCbExuQmhjbk5sUFdaMWJtTjBhVzl1S0cwcGUzUm9hWE11YjNScFBXMHVjbVZoWkZWcGJuUTRLQ2tzZEdocGN5NXpkSEpsWVcxVWVYQmxQVzB1Y21WaFpGVnBiblE0S0Nrc2RHaHBjeTVpZFdabVpYSlRhWHBsUFcwdWNtVmhaRlZwYm5ReU5DZ3BMSFJvYVhNdWJXRjRRbWwwY21GMFpUMXRMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbUYyWjBKcGRISmhkR1U5YlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1emFYcGxMVDB4TXl4MGFHbHpMbkJoY25ObFVtVnRZV2x1YVc1blJHVnpZM0pwY0hSdmNuTW9iU2w5TEhrdVJHVmpiMlJsY2xOd1pXTnBabWxqU1c1bWJ6MW1kVzVqZEdsdmJpaHRLWHQ1TGtSbGMyTnlhWEIwYjNJdVkyRnNiQ2gwYUdsekxHa3NiU2w5TEhrdVJHVmpiMlJsY2xOd1pXTnBabWxqU1c1bWJ5NXdjbTkwYjNSNWNHVTlibVYzSUhrdVJHVnpZM0pwY0hSdmNpeDVMbE5NUTI5dVptbG5SR1Z6WTNKcGNIUnZjajFtZFc1amRHbHZiaWh0S1h0NUxrUmxjMk55YVhCMGIzSXVZMkZzYkNoMGFHbHpMR1lzYlNsOUxIa3VVMHhEYjI1bWFXZEVaWE5qY21sd2RHOXlMbkJ5YjNSdmRIbHdaVDF1WlhjZ2VTNUVaWE5qY21sd2RHOXlMSFJvYVhOOU8yNHVUVkJGUnpSRVpYTmpjbWx3ZEc5eVVHRnljMlZ5UFdnN2RtRnlJRzg5ZTBWU1VsOUpUbFpCVEVsRVgwUkJWRUU2TFRFc1JWSlNYMDVQVkY5RlRrOVZSMGhmUkVGVVFUb3dMRTlMT2pFc1FrRlRTVU5mUWs5WVJWTTZXeUp0WkdGMElpd2lhV1JoZENJc0ltWnlaV1VpTENKemEybHdJaXdpYldWamJ5SXNJbk4wY21zaVhTeEdWVXhNWDBKUFdFVlRPbHNpYUcxb1pDSXNJbTV0YUdRaUxDSnBiMlJ6SWl3aWVHMXNJQ0lzSW1KNGJXd2lMQ0pwY0hKdklpd2liV1Z5WlNKZExFTlBUbFJCU1U1RlVsOUNUMWhGVXpwYld5SnRiMjkySWl4YkluUnlZV3NpTENKd2MzTm9JbDFkTEZzaWRISmhheUpkTEZzaVpXUjBjeUpkTEZzaWJXUnBZU0pkTEZzaWJXbHVaaUpkTEZzaVpHbHVaaUpkTEZzaWMzUmliQ0lzV3lKelozQmtJaXdpYzJKbmNDSmRYU3hiSW0xMlpYZ2lMRnNpZEhKbGVDSmRYU3hiSW0xdmIyWWlMRnNpZEhKaFppSmRYU3hiSW5SeVlXWWlMRnNpZEhKMWJpSXNJbk5uY0dRaUxDSnpZbWR3SWwxZExGc2lkblIwWXlKZExGc2lkSEpsWmlKZExGc2lhWEpsWmlKZExGc2liV1p5WVNJc1d5SjBabkpoSWwxZExGc2liV1ZqYnlKZExGc2lhRzUwYVNKZExGc2lhR2x1WmlKZExGc2ljM1J5YXlKZExGc2ljM1J5WkNKZExGc2ljMmx1WmlKZExGc2ljbWx1WmlKZExGc2ljMk5vYVNKZExGc2lkSEpuY2lKZExGc2lkV1IwWVNJc1d5SnJhVzVrSWwxZExGc2lhWEJ5Y0NJc1d5SnBjRzFoSWwxZExGc2lhWEJqYnlKZFhTeGliM2hEYjJSbGN6cGJYU3htZFd4c1FtOTRRMjlrWlhNNlcxMHNZMjl1ZEdGcGJtVnlRbTk0UTI5a1pYTTZXMTBzYzJGdGNHeGxSVzUwY25sRGIyUmxjenA3ZlN4ellXMXdiR1ZIY205MWNFVnVkSEo1UTI5a1pYTTZXMTBzZEhKaFkydEhjbTkxY0ZSNWNHVnpPbHRkTEZWVlNVUkNiM2hsY3pwN2ZTeFZWVWxFY3pwYlhTeHBibWwwYVdGc2FYcGxPbVoxYm1OMGFXOXVLQ2w3Ynk1R2RXeHNRbTk0TG5CeWIzUnZkSGx3WlQxdVpYY2dieTVDYjNnc2J5NURiMjUwWVdsdVpYSkNiM2d1Y0hKdmRHOTBlWEJsUFc1bGR5QnZMa0p2ZUN4dkxsTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaVDF1WlhjZ2J5NUNiM2dzYnk1VWNtRmphMGR5YjNWd1ZIbHdaVUp2ZUM1d2NtOTBiM1I1Y0dVOWJtVjNJRzh1Um5Wc2JFSnZlQ3h2TGtKQlUwbERYMEpQV0VWVExtWnZja1ZoWTJnb1puVnVZM1JwYjI0b1pTbDdieTVqY21WaGRHVkNiM2hEZEc5eUtHVXBmU2tzYnk1R1ZVeE1YMEpQV0VWVExtWnZja1ZoWTJnb1puVnVZM1JwYjI0b1pTbDdieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWhsS1gwcExHOHVRMDlPVkVGSlRrVlNYMEpQV0VWVExtWnZja1ZoWTJnb1puVnVZM1JwYjI0b1pTbDdieTVqY21WaGRHVkRiMjUwWVdsdVpYSkNiM2hEZEc5eUtHVmJNRjBzYm5Wc2JDeGxXekZkS1gwcGZTeENiM2c2Wm5WdVkzUnBiMjRvWlN4MExHa3BlM1JvYVhNdWRIbHdaVDFsTEhSb2FYTXVjMmw2WlQxMExIUm9hWE11ZFhWcFpEMXBmU3hHZFd4c1FtOTRPbVoxYm1OMGFXOXVLR1VzZEN4cEtYdHZMa0p2ZUM1allXeHNLSFJvYVhNc1pTeDBMR2twTEhSb2FYTXVabXhoWjNNOU1DeDBhR2x6TG5abGNuTnBiMjQ5TUgwc1EyOXVkR0ZwYm1WeVFtOTRPbVoxYm1OMGFXOXVLR1VzZEN4cEtYdHZMa0p2ZUM1allXeHNLSFJvYVhNc1pTeDBMR2twTEhSb2FYTXVZbTk0WlhNOVcxMTlMRk5oYlhCc1pVVnVkSEo1T21aMWJtTjBhVzl1S0dVc2RDeHBMR1lwZTI4dVEyOXVkR0ZwYm1WeVFtOTRMbU5oYkd3b2RHaHBjeXhsTEhRcExIUm9hWE11YUdSeVgzTnBlbVU5YVN4MGFHbHpMbk4wWVhKMFBXWjlMRk5oYlhCc1pVZHliM1Z3Ulc1MGNuazZablZ1WTNScGIyNG9aU2w3ZEdocGN5NW5jbTkxY0dsdVoxOTBlWEJsUFdWOUxGUnlZV05yUjNKdmRYQlVlWEJsUW05NE9tWjFibU4wYVc5dUtHVXNkQ2w3Ynk1R2RXeHNRbTk0TG1OaGJHd29kR2hwY3l4bExIUXBmU3hqY21WaGRHVkNiM2hEZEc5eU9tWjFibU4wYVc5dUtHVXNkQ2w3Ynk1aWIzaERiMlJsY3k1d2RYTm9LR1VwTEc5YlpTc2lRbTk0SWwwOVpuVnVZM1JwYjI0b2FTbDdieTVDYjNndVkyRnNiQ2gwYUdsekxHVXNhU2w5TEc5YlpTc2lRbTk0SWwwdWNISnZkRzkwZVhCbFBXNWxkeUJ2TGtKdmVDeDBKaVlvYjF0bEt5SkNiM2dpWFM1d2NtOTBiM1I1Y0dVdWNHRnljMlU5ZENsOUxHTnlaV0YwWlVaMWJHeENiM2hEZEc5eU9tWjFibU4wYVc5dUtHVXNkQ2w3YjF0bEt5SkNiM2dpWFQxbWRXNWpkR2x2YmlocEtYdHZMa1oxYkd4Q2IzZ3VZMkZzYkNoMGFHbHpMR1VzYVNsOUxHOWJaU3NpUW05NElsMHVjSEp2ZEc5MGVYQmxQVzVsZHlCdkxrWjFiR3hDYjNnc2IxdGxLeUpDYjNnaVhTNXdjbTkwYjNSNWNHVXVjR0Z5YzJVOVpuVnVZM1JwYjI0b2FTbDdkR2hwY3k1d1lYSnpaVVoxYkd4SVpXRmtaWElvYVNrc2RDWW1kQzVqWVd4c0tIUm9hWE1zYVNsOWZTeGhaR1JUZFdKQ2IzaEJjbkpoZVhNNlpuVnVZM1JwYjI0b1pTbDdhV1lvWlNsN2RHaHBjeTV6ZFdKQ2IzaE9ZVzFsY3oxbE8yWnZjaWgyWVhJZ2REMWxMbXhsYm1kMGFDeHBQVEE3YVR4ME8ya3JLeWwwYUdselcyVmJhVjBySW5NaVhUMWJYWDE5TEdOeVpXRjBaVU52Ym5SaGFXNWxja0p2ZUVOMGIzSTZablZ1WTNScGIyNG9aU3gwTEdrcGUyOWJaU3NpUW05NElsMDlablZ1WTNScGIyNG9aaWw3Ynk1RGIyNTBZV2x1WlhKQ2IzZ3VZMkZzYkNoMGFHbHpMR1VzWmlrc2J5NWhaR1JUZFdKQ2IzaEJjbkpoZVhNdVkyRnNiQ2gwYUdsekxHa3BmU3h2VzJVcklrSnZlQ0pkTG5CeWIzUnZkSGx3WlQxdVpYY2dieTVEYjI1MFlXbHVaWEpDYjNnc2RDWW1LRzliWlNzaVFtOTRJbDB1Y0hKdmRHOTBlWEJsTG5CaGNuTmxQWFFwZlN4amNtVmhkR1ZOWldScFlWTmhiWEJzWlVWdWRISjVRM1J2Y2pwbWRXNWpkR2x2YmlobExIUXNhU2w3Ynk1ellXMXdiR1ZGYm5SeWVVTnZaR1Z6VzJWZFBWdGRMRzliWlNzaVUyRnRjR3hsUlc1MGNua2lYVDFtZFc1amRHbHZiaWhtTEhVcGUyOHVVMkZ0Y0d4bFJXNTBjbmt1WTJGc2JDaDBhR2x6TEdZc2RTa3NieTVoWkdSVGRXSkNiM2hCY25KaGVYTXVZMkZzYkNoMGFHbHpMR2twZlN4dlcyVXJJbE5oYlhCc1pVVnVkSEo1SWwwdWNISnZkRzkwZVhCbFBXNWxkeUJ2TGxOaGJYQnNaVVZ1ZEhKNUxIUW1KaWh2VzJVcklsTmhiWEJzWlVWdWRISjVJbDB1Y0hKdmRHOTBlWEJsTG5CaGNuTmxQWFFwZlN4amNtVmhkR1ZUWVcxd2JHVkZiblJ5ZVVOMGIzSTZablZ1WTNScGIyNG9aU3gwTEdrc1ppbDdieTV6WVcxd2JHVkZiblJ5ZVVOdlpHVnpXMlZkTG5CMWMyZ29kQ2tzYjF0MEt5SlRZVzF3YkdWRmJuUnllU0pkUFdaMWJtTjBhVzl1S0hVcGUyOWJaU3NpVTJGdGNHeGxSVzUwY25raVhTNWpZV3hzS0hSb2FYTXNkQ3gxS1N4dkxtRmtaRk4xWWtKdmVFRnljbUY1Y3k1allXeHNLSFJvYVhNc1ppbDlMRzliZENzaVUyRnRjR3hsUlc1MGNua2lYUzV3Y205MGIzUjVjR1U5Ym1WM0lHOWJaU3NpVTJGdGNHeGxSVzUwY25raVhTeHBKaVlvYjF0MEt5SlRZVzF3YkdWRmJuUnllU0pkTG5CeWIzUnZkSGx3WlM1d1lYSnpaVDFwS1gwc1kzSmxZWFJsUlc1amNubHdkR1ZrVTJGdGNHeGxSVzUwY25sRGRHOXlPbVoxYm1OMGFXOXVLR1VzZEN4cEtYdHZMbU55WldGMFpWTmhiWEJzWlVWdWRISjVRM1J2Y2k1allXeHNLSFJvYVhNc1pTeDBMR2tzV3lKemFXNW1JbDBwZlN4amNtVmhkR1ZUWVcxd2JHVkhjbTkxY0VOMGIzSTZablZ1WTNScGIyNG9aU3gwS1h0dlcyVXJJbE5oYlhCc1pVZHliM1Z3Ulc1MGNua2lYVDFtZFc1amRHbHZiaWhwS1h0dkxsTmhiWEJzWlVkeWIzVndSVzUwY25rdVkyRnNiQ2gwYUdsekxHVXNhU2w5TEc5YlpTc2lVMkZ0Y0d4bFIzSnZkWEJGYm5SeWVTSmRMbkJ5YjNSdmRIbHdaVDF1WlhjZ2J5NVRZVzF3YkdWSGNtOTFjRVZ1ZEhKNUxIUW1KaWh2VzJVcklsTmhiWEJzWlVkeWIzVndSVzUwY25raVhTNXdjbTkwYjNSNWNHVXVjR0Z5YzJVOWRDbDlMR055WldGMFpWUnlZV05yUjNKdmRYQkRkRzl5T21aMWJtTjBhVzl1S0dVc2RDbDdiMXRsS3lKVWNtRmphMGR5YjNWd1ZIbHdaVUp2ZUNKZFBXWjFibU4wYVc5dUtHa3BlMjh1VkhKaFkydEhjbTkxY0ZSNWNHVkNiM2d1WTJGc2JDaDBhR2x6TEdVc2FTbDlMRzliWlNzaVZISmhZMnRIY205MWNGUjVjR1ZDYjNnaVhTNXdjbTkwYjNSNWNHVTlibVYzSUc4dVZISmhZMnRIY205MWNGUjVjR1ZDYjNnc2RDWW1LRzliWlNzaVZISmhZMnRIY205MWNGUjVjR1ZDYjNnaVhTNXdjbTkwYjNSNWNHVXVjR0Z5YzJVOWRDbDlMR055WldGMFpWVlZTVVJDYjNnNlpuVnVZM1JwYjI0b1pTeDBMR2tzWmlsN2J5NVZWVWxFY3k1d2RYTm9LR1VwTEc4dVZWVkpSRUp2ZUdWelcyVmRQV1oxYm1OMGFXOXVLSFVwZTNRL2J5NUdkV3hzUW05NExtTmhiR3dvZEdocGN5d2lkWFZwWkNJc2RTeGxLVHBwUDI4dVEyOXVkR0ZwYm1WeVFtOTRMbU5oYkd3b2RHaHBjeXdpZFhWcFpDSXNkU3hsS1RwdkxrSnZlQzVqWVd4c0tIUm9hWE1zSW5WMWFXUWlMSFVzWlNsOUxHOHVWVlZKUkVKdmVHVnpXMlZkTG5CeWIzUnZkSGx3WlQxMFAyNWxkeUJ2TGtaMWJHeENiM2c2YVQ5dVpYY2dieTVEYjI1MFlXbHVaWEpDYjNnNmJtVjNJRzh1UW05NExHWW1KaWgwUDI4dVZWVkpSRUp2ZUdWelcyVmRMbkJ5YjNSdmRIbHdaUzV3WVhKelpUMW1kVzVqZEdsdmJpaDFLWHQwYUdsekxuQmhjbk5sUm5Wc2JFaGxZV1JsY2loMUtTeG1KaVptTG1OaGJHd29kR2hwY3l4MUtYMDZieTVWVlVsRVFtOTRaWE5iWlYwdWNISnZkRzkwZVhCbExuQmhjbk5sUFdZcGZYMDdieTVwYm1sMGFXRnNhWHBsS0Nrc2J5NVVTMGhFWDBaTVFVZGZSVTVCUWt4RlJEMHhMRzh1VkV0SVJGOUdURUZIWDBsT1gwMVBWa2xGUFRJc2J5NVVTMGhFWDBaTVFVZGZTVTVmVUZKRlZrbEZWejAwTEc4dVZFWklSRjlHVEVGSFgwSkJVMFZmUkVGVVFWOVBSa1pUUlZROU1TeHZMbFJHU0VSZlJreEJSMTlUUVUxUVRFVmZSRVZUUXoweUxHOHVWRVpJUkY5R1RFRkhYMU5CVFZCTVJWOUVWVkk5T0N4dkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlUwbGFSVDB4Tml4dkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJreEJSMU05TXpJc2J5NVVSa2hFWDBaTVFVZGZSRlZTWDBWTlVGUlpQVFkxTlRNMkxHOHVWRVpJUkY5R1RFRkhYMFJGUmtGVlRGUmZRa0ZUUlY5SlUxOU5UMDlHUFRFek1UQTNNaXh2TGxSU1ZVNWZSa3hCUjFOZlJFRlVRVjlQUmtaVFJWUTlNU3h2TGxSU1ZVNWZSa3hCUjFOZlJrbFNVMVJmUmt4QlJ6MDBMRzh1VkZKVlRsOUdURUZIVTE5RVZWSkJWRWxQVGoweU5UWXNieTVVVWxWT1gwWk1RVWRUWDFOSldrVTlOVEV5TEc4dVZGSlZUbDlHVEVGSFUxOUdURUZIVXoweE1ESTBMRzh1VkZKVlRsOUdURUZIVTE5RFZGTmZUMFpHVTBWVVBUSXdORGdzYnk1Q2IzZ3VjSEp2ZEc5MGVYQmxMbUZrWkQxbWRXNWpkR2x2YmlobEtYdHlaWFIxY200Z2RHaHBjeTVoWkdSQ2IzZ29ibVYzSUc5YlpTc2lRbTk0SWwwcGZTeHZMa0p2ZUM1d2NtOTBiM1I1Y0dVdVlXUmtRbTk0UFdaMWJtTjBhVzl1S0dVcGUzSmxkSFZ5YmlCMGFHbHpMbUp2ZUdWekxuQjFjMmdvWlNrc2RHaHBjMXRsTG5SNWNHVXJJbk1pWFQ5MGFHbHpXMlV1ZEhsd1pTc2ljeUpkTG5CMWMyZ29aU2s2ZEdocGMxdGxMblI1Y0dWZFBXVXNaWDBzYnk1Q2IzZ3VjSEp2ZEc5MGVYQmxMbk5sZEQxbWRXNWpkR2x2YmlobExIUXBlM0psZEhWeWJpQjBhR2x6VzJWZFBYUXNkR2hwYzMwc2J5NUNiM2d1Y0hKdmRHOTBlWEJsTG1Ga1pFVnVkSEo1UFdaMWJtTjBhVzl1S0dVc2RDbDdkbUZ5SUdrOWRIeDhJbVZ1ZEhKcFpYTWlPM0psZEhWeWJpQjBhR2x6VzJsZGZId29kR2hwYzF0cFhUMWJYU2tzZEdocGMxdHBYUzV3ZFhOb0tHVXBMSFJvYVhOOUxHNHVRbTk0VUdGeWMyVnlQVzhzYnk1d1lYSnpaVlZWU1VROVpuVnVZM1JwYjI0b1pTbDdjbVYwZFhKdUlHOHVjR0Z5YzJWSVpYZ3hOaWhsS1gwc2J5NXdZWEp6WlVobGVERTJQV1oxYm1OMGFXOXVLR1VwZTJadmNpaDJZWElnZEQwaUlpeHBQVEE3YVR3eE5qdHBLeXNwZTNaaGNpQm1QV1V1Y21WaFpGVnBiblE0S0NrdWRHOVRkSEpwYm1jb01UWXBPM1FyUFdZdWJHVnVaM1JvUFQwOU1UOGlNQ0lyWmpwbWZYSmxkSFZ5YmlCMGZTeHZMbkJoY25ObFQyNWxRbTk0UFdaMWJtTjBhVzl1S0dVc2RDeHBLWHQyWVhJZ1ppeDFQV1V1WjJWMFVHOXphWFJwYjI0b0tTeDJQVEFzZVN4dE8ybG1LR1V1WjJWMFJXNWtVRzl6YVhScGIyNG9LUzExUERncGNtVjBkWEp1SUhJdVpHVmlkV2NvSWtKdmVGQmhjbk5sY2lJc0lrNXZkQ0JsYm05MVoyZ2daR0YwWVNCcGJpQnpkSEpsWVcwZ2RHOGdjR0Z5YzJVZ2RHaGxJSFI1Y0dVZ1lXNWtJSE5wZW1VZ2IyWWdkR2hsSUdKdmVDSXBMSHRqYjJSbE9tOHVSVkpTWDA1UFZGOUZUazlWUjBoZlJFRlVRWDA3YVdZb2FTWW1hVHc0S1hKbGRIVnliaUJ5TG1SbFluVm5LQ0pDYjNoUVlYSnpaWElpTENKT2IzUWdaVzV2ZFdkb0lHSjVkR1Z6SUd4bFpuUWdhVzRnZEdobElIQmhjbVZ1ZENCaWIzZ2dkRzhnY0dGeWMyVWdZU0J1WlhjZ1ltOTRJaWtzZTJOdlpHVTZieTVGVWxKZlRrOVVYMFZPVDFWSFNGOUVRVlJCZlR0MllYSWdZajFsTG5KbFlXUlZhVzUwTXpJb0tTeDRQV1V1Y21WaFpGTjBjbWx1WnlnMEtTeFRQWGc3YVdZb2NpNWtaV0oxWnlnaVFtOTRVR0Z5YzJWeUlpd2lSbTkxYm1RZ1ltOTRJRzltSUhSNWNHVWdKeUlyZUNzaUp5QmhibVFnYzJsNlpTQWlLMklySWlCaGRDQndiM05wZEdsdmJpQWlLM1VwTEhZOU9DeDRQVDBpZFhWcFpDSXBlMmxtS0dVdVoyVjBSVzVrVUc5emFYUnBiMjRvS1MxbExtZGxkRkJ2YzJsMGFXOXVLQ2s4TVRaOGZHa3Rkand4TmlseVpYUjFjbTRnWlM1elpXVnJLSFVwTEhJdVpHVmlkV2NvSWtKdmVGQmhjbk5sY2lJc0lrNXZkQ0JsYm05MVoyZ2dZbmwwWlhNZ2JHVm1kQ0JwYmlCMGFHVWdjR0Z5Wlc1MElHSnZlQ0IwYnlCd1lYSnpaU0JoSUZWVlNVUWdZbTk0SWlrc2UyTnZaR1U2Ynk1RlVsSmZUazlVWDBWT1QxVkhTRjlFUVZSQmZUdHRQVzh1Y0dGeWMyVlZWVWxFS0dVcExIWXJQVEUyTEZNOWJYMXBaaWhpUFQweEtYdHBaaWhsTG1kbGRFVnVaRkJ2YzJsMGFXOXVLQ2t0WlM1blpYUlFiM05wZEdsdmJpZ3BQRGg4ZkdrbUpta3Rkanc0S1hKbGRIVnliaUJsTG5ObFpXc29kU2tzY2k1M1lYSnVLQ0pDYjNoUVlYSnpaWElpTENkT2IzUWdaVzV2ZFdkb0lHUmhkR0VnYVc0Z2MzUnlaV0Z0SUhSdklIQmhjbk5sSUhSb1pTQmxlSFJsYm1SbFpDQnphWHBsSUc5bUlIUm9aU0FpSnl0NEt5Y2lJR0p2ZUNjcExIdGpiMlJsT204dVJWSlNYMDVQVkY5RlRrOVZSMGhmUkVGVVFYMDdZajFsTG5KbFlXUlZhVzUwTmpRb0tTeDJLejA0ZldWc2MyVWdhV1lvWWowOVBUQXBlMmxtS0drcFlqMXBPMlZzYzJVZ2FXWW9lQ0U5UFNKdFpHRjBJaWx5WlhSMWNtNGdjaTVsY25KdmNpZ2lRbTk0VUdGeWMyVnlJaXdpVlc1c2FXMXBkR1ZrSUdKdmVDQnphWHBsSUc1dmRDQnpkWEJ3YjNKMFpXUWdabTl5SUhSNWNHVTZJQ2NpSzNncklpY2lLU3htUFc1bGR5QnZMa0p2ZUNoNExHSXBMSHRqYjJSbE9tOHVUMHNzWW05NE9tWXNjMmw2WlRwbUxuTnBlbVY5ZlhKbGRIVnliaUJpSVQwOU1DWW1ZangyUHloeUxtVnljbTl5S0NKQ2IzaFFZWEp6WlhJaUxDSkNiM2dnYjJZZ2RIbHdaU0FpSzNncklpQm9ZWE1nWVc0Z2FXNTJZV3hwWkNCemFYcGxJQ0lyWWlzaUlDaDBiMjhnYzIxaGJHd2dkRzhnWW1VZ1lTQmliM2dwSWlrc2UyTnZaR1U2Ynk1RlVsSmZUazlVWDBWT1QxVkhTRjlFUVZSQkxIUjVjR1U2ZUN4emFYcGxPbUlzYUdSeVgzTnBlbVU2ZGl4emRHRnlkRHAxZlNrNllpRTlQVEFtSm1rbUptSSthVDhvY2k1bGNuSnZjaWdpUW05NFVHRnljMlZ5SWl3aVFtOTRJRzltSUhSNWNHVWdKeUlyZUNzaUp5Qm9ZWE1nWVNCemFYcGxJQ0lyWWlzaUlHZHlaV0YwWlhJZ2RHaGhiaUJwZEhNZ1kyOXVkR0ZwYm1WeUlITnBlbVVnSWl0cEtTeDdZMjlrWlRwdkxrVlNVbDlPVDFSZlJVNVBWVWRJWDBSQlZFRXNkSGx3WlRwNExITnBlbVU2WWl4b1pISmZjMmw2WlRwMkxITjBZWEowT25WOUtUcGlJVDA5TUNZbWRTdGlQbVV1WjJWMFJXNWtVRzl6YVhScGIyNG9LVDhvWlM1elpXVnJLSFVwTEhJdWFXNW1ieWdpUW05NFVHRnljMlZ5SWl3aVRtOTBJR1Z1YjNWbmFDQmtZWFJoSUdsdUlITjBjbVZoYlNCMGJ5QndZWEp6WlNCMGFHVWdaVzUwYVhKbElDY2lLM2dySWljZ1ltOTRJaWtzZTJOdlpHVTZieTVGVWxKZlRrOVVYMFZPVDFWSFNGOUVRVlJCTEhSNWNHVTZlQ3h6YVhwbE9tSXNhR1J5WDNOcGVtVTZkaXh6ZEdGeWREcDFmU2s2ZEQ5N1kyOWtaVHB2TGs5TExIUjVjR1U2ZUN4emFYcGxPbUlzYUdSeVgzTnBlbVU2ZGl4emRHRnlkRHAxZlRvb2IxdDRLeUpDYjNnaVhUOW1QVzVsZHlCdlczZ3JJa0p2ZUNKZEtHSXBPbmdoUFQwaWRYVnBaQ0kvS0hJdWQyRnliaWdpUW05NFVHRnljMlZ5SWl3aVZXNXJibTkzYmlCaWIzZ2dkSGx3WlRvZ0p5SXJlQ3NpSnlJcExHWTlibVYzSUc4dVFtOTRLSGdzWWlrc1ppNW9ZWE5mZFc1d1lYSnpaV1JmWkdGMFlUMGhNQ2s2Ynk1VlZVbEVRbTk0WlhOYmJWMC9aajF1WlhjZ2J5NVZWVWxFUW05NFpYTmJiVjBvWWlrNktISXVkMkZ5YmlnaVFtOTRVR0Z5YzJWeUlpd2lWVzVyYm05M2JpQjFkV2xrSUhSNWNHVTZJQ2NpSzIwcklpY2lLU3htUFc1bGR5QnZMa0p2ZUNoNExHSXBMR1l1ZFhWcFpEMXRMR1l1YUdGelgzVnVjR0Z5YzJWa1gyUmhkR0U5SVRBcExHWXVhR1J5WDNOcGVtVTlkaXhtTG5OMFlYSjBQWFVzWmk1M2NtbDBaVDA5UFc4dVFtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpTWW1aaTUwZVhCbElUMDlJbTFrWVhRaUppWW9jaTVwYm1adktDSkNiM2hRWVhKelpYSWlMQ0luSWl0VEt5SW5JR0p2ZUNCM2NtbDBhVzVuSUc1dmRDQjVaWFFnYVcxd2JHVnRaVzUwWldRc0lHdGxaWEJwYm1jZ2RXNXdZWEp6WldRZ1pHRjBZU0JwYmlCdFpXMXZjbmtnWm05eUlHeGhkR1Z5SUhkeWFYUmxJaWtzWmk1d1lYSnpaVVJoZEdGQmJtUlNaWGRwYm1Rb1pTa3BMR1l1Y0dGeWMyVW9aU2tzZVQxbExtZGxkRkJ2YzJsMGFXOXVLQ2t0S0dZdWMzUmhjblFyWmk1emFYcGxLU3g1UERBL0tISXVkMkZ5YmlnaVFtOTRVR0Z5YzJWeUlpd2lVR0Z5YzJsdVp5QnZaaUJpYjNnZ0p5SXJVeXNpSnlCa2FXUWdibTkwSUhKbFlXUWdkR2hsSUdWdWRHbHlaU0JwYm1ScFkyRjBaV1FnWW05NElHUmhkR0VnYzJsNlpTQW9iV2x6YzJsdVp5QWlLeTE1S3lJZ1lubDBaWE1wTENCelpXVnJhVzVuSUdadmNuZGhjbVFpS1N4bExuTmxaV3NvWmk1emRHRnlkQ3RtTG5OcGVtVXBLVHA1UGpBbUppaHlMbVZ5Y205eUtDSkNiM2hRWVhKelpYSWlMQ0pRWVhKemFXNW5JRzltSUdKdmVDQW5JaXRUS3lJbklISmxZV1FnSWl0NUt5SWdiVzl5WlNCaWVYUmxjeUIwYUdGdUlIUm9aU0JwYm1ScFkyRjBaV1FnWW05NElHUmhkR0VnYzJsNlpTd2djMlZsYTJsdVp5QmlZV05yZDJGeVpITWlLU3htTG5OcGVtVWhQVDB3SmlabExuTmxaV3NvWmk1emRHRnlkQ3RtTG5OcGVtVXBLU3g3WTI5a1pUcHZMazlMTEdKdmVEcG1MSE5wZW1VNlppNXphWHBsZlNsOUxHOHVRbTk0TG5CeWIzUnZkSGx3WlM1d1lYSnpaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMblI1Y0dVaFBTSnRaR0YwSWo5MGFHbHpMbVJoZEdFOVpTNXlaV0ZrVldsdWREaEJjbkpoZVNoMGFHbHpMbk5wZW1VdGRHaHBjeTVvWkhKZmMybDZaU2s2ZEdocGN5NXphWHBsUFQwOU1EOWxMbk5sWldzb1pTNW5aWFJGYm1SUWIzTnBkR2x2YmlncEtUcGxMbk5sWldzb2RHaHBjeTV6ZEdGeWRDdDBhR2x6TG5OcGVtVXBmU3h2TGtKdmVDNXdjbTkwYjNSNWNHVXVjR0Z5YzJWRVlYUmhRVzVrVW1WM2FXNWtQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVaR0YwWVQxbExuSmxZV1JWYVc1ME9FRnljbUY1S0hSb2FYTXVjMmw2WlMxMGFHbHpMbWhrY2w5emFYcGxLU3hsTG5CdmMybDBhVzl1TFQxMGFHbHpMbk5wZW1VdGRHaHBjeTVvWkhKZmMybDZaWDBzYnk1R2RXeHNRbTk0TG5CeWIzUnZkSGx3WlM1d1lYSnpaVVJoZEdGQmJtUlNaWGRwYm1ROVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1d1lYSnpaVVoxYkd4SVpXRmtaWElvWlNrc2RHaHBjeTVrWVhSaFBXVXVjbVZoWkZWcGJuUTRRWEp5WVhrb2RHaHBjeTV6YVhwbExYUm9hWE11YUdSeVgzTnBlbVVwTEhSb2FYTXVhR1J5WDNOcGVtVXRQVFFzWlM1d2IzTnBkR2x2YmkwOWRHaHBjeTV6YVhwbExYUm9hWE11YUdSeVgzTnBlbVY5TEc4dVJuVnNiRUp2ZUM1d2NtOTBiM1I1Y0dVdWNHRnljMlZHZFd4c1NHVmhaR1Z5UFdaMWJtTjBhVzl1S0dVcGUzUm9hWE11ZG1WeWMybHZiajFsTG5KbFlXUlZhVzUwT0NncExIUm9hWE11Wm14aFozTTlaUzV5WldGa1ZXbHVkREkwS0Nrc2RHaHBjeTVvWkhKZmMybDZaU3M5Tkgwc2J5NUdkV3hzUW05NExuQnliM1J2ZEhsd1pTNXdZWEp6WlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5CaGNuTmxSblZzYkVobFlXUmxjaWhsS1N4MGFHbHpMbVJoZEdFOVpTNXlaV0ZrVldsdWREaEJjbkpoZVNoMGFHbHpMbk5wZW1VdGRHaHBjeTVvWkhKZmMybDZaU2w5TEc4dVEyOXVkR0ZwYm1WeVFtOTRMbkJ5YjNSdmRIbHdaUzV3WVhKelpUMW1kVzVqZEdsdmJpaGxLWHRtYjNJb2RtRnlJSFFzYVR0bExtZGxkRkJ2YzJsMGFXOXVLQ2s4ZEdocGN5NXpkR0Z5ZEN0MGFHbHpMbk5wZW1VN0tXbG1LSFE5Ynk1d1lYSnpaVTl1WlVKdmVDaGxMQ0V4TEhSb2FYTXVjMmw2WlMwb1pTNW5aWFJRYjNOcGRHbHZiaWdwTFhSb2FYTXVjM1JoY25RcEtTeDBMbU52WkdVOVBUMXZMazlMS1dsbUtHazlkQzVpYjNnc2RHaHBjeTVpYjNobGN5NXdkWE5vS0drcExIUm9hWE11YzNWaVFtOTRUbUZ0WlhNbUpuUm9hWE11YzNWaVFtOTRUbUZ0WlhNdWFXNWtaWGhQWmlocExuUjVjR1VwSVQwdE1TbDBhR2x6VzNSb2FYTXVjM1ZpUW05NFRtRnRaWE5iZEdocGN5NXpkV0pDYjNoT1lXMWxjeTVwYm1SbGVFOW1LR2t1ZEhsd1pTbGRLeUp6SWwwdWNIVnphQ2hwS1R0bGJITmxlM1poY2lCbVBXa3VkSGx3WlNFOVBTSjFkV2xrSWo5cExuUjVjR1U2YVM1MWRXbGtPM1JvYVhOYlpsMC9jaTUzWVhKdUtDSkNiM2dnYjJZZ2RIbHdaU0FpSzJZcklpQmhiSEpsWVdSNUlITjBiM0psWkNCcGJpQm1hV1ZzWkNCdlppQjBhR2x6SUhSNWNHVWlLVHAwYUdselcyWmRQV2w5Wld4elpTQnlaWFIxY201OUxHOHVRbTk0TG5CeWIzUnZkSGx3WlM1d1lYSnpaVXhoYm1kMVlXZGxQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXViR0Z1WjNWaFoyVTlaUzV5WldGa1ZXbHVkREUyS0NrN2RtRnlJSFE5VzEwN2RGc3dYVDEwYUdsekxteGhibWQxWVdkbFBqNHhNQ1l6TVN4MFd6RmRQWFJvYVhNdWJHRnVaM1ZoWjJVK1BqVW1NekVzZEZzeVhUMTBhR2x6TG14aGJtZDFZV2RsSmpNeExIUm9hWE11YkdGdVozVmhaMlZUZEhKcGJtYzlVM1J5YVc1bkxtWnliMjFEYUdGeVEyOWtaU2gwV3pCZEt6azJMSFJiTVYwck9UWXNkRnN5WFNzNU5pbDlMRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmVmtsVFZVRk1QU0pXYVhOMVlXd2lMRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmUVZWRVNVODlJa0YxWkdsdklpeHZMbE5CVFZCTVJWOUZUbFJTV1Y5VVdWQkZYMGhKVGxROUlraHBiblFpTEc4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlRVVlVRVVJCVkVFOUlrMWxkR0ZrWVhSaElpeHZMbE5CVFZCTVJWOUZUbFJTV1Y5VVdWQkZYMU5WUWxSSlZFeEZQU0pUZFdKMGFYUnNaU0lzYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5VFdWTlVSVTA5SWxONWMzUmxiU0lzYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5VVJWaFVQU0pVWlhoMElpeHZMbE5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1d1lYSnpaVWhsWVdSbGNqMW1kVzVqZEdsdmJpaGxLWHRsTG5KbFlXUlZhVzUwT0VGeWNtRjVLRFlwTEhSb2FYTXVaR0YwWVY5eVpXWmxjbVZ1WTJWZmFXNWtaWGc5WlM1eVpXRmtWV2x1ZERFMktDa3NkR2hwY3k1b1pISmZjMmw2WlNzOU9IMHNieTVUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdWNHRnljMlU5Wm5WdVkzUnBiMjRvWlNsN2RHaHBjeTV3WVhKelpVaGxZV1JsY2lobEtTeDBhR2x6TG1SaGRHRTlaUzV5WldGa1ZXbHVkRGhCY25KaGVTaDBhR2x6TG5OcGVtVXRkR2hwY3k1b1pISmZjMmw2WlNsOUxHOHVVMkZ0Y0d4bFJXNTBjbmt1Y0hKdmRHOTBlWEJsTG5CaGNuTmxSR0YwWVVGdVpGSmxkMmx1WkQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5CaGNuTmxTR1ZoWkdWeUtHVXBMSFJvYVhNdVpHRjBZVDFsTG5KbFlXUlZhVzUwT0VGeWNtRjVLSFJvYVhNdWMybDZaUzEwYUdsekxtaGtjbDl6YVhwbEtTeDBhR2x6TG1oa2NsOXphWHBsTFQwNExHVXVjRzl6YVhScGIyNHRQWFJvYVhNdWMybDZaUzEwYUdsekxtaGtjbDl6YVhwbGZTeHZMbE5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1d1lYSnpaVVp2YjNSbGNqMW1kVzVqZEdsdmJpaGxLWHR2TGtOdmJuUmhhVzVsY2tKdmVDNXdjbTkwYjNSNWNHVXVjR0Z5YzJVdVkyRnNiQ2gwYUdsekxHVXBmU3h2TG1OeVpXRjBaVTFsWkdsaFUyRnRjR3hsUlc1MGNubERkRzl5S0c4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlNFbE9WQ2tzYnk1amNtVmhkR1ZOWldScFlWTmhiWEJzWlVWdWRISjVRM1J2Y2lodkxsTkJUVkJNUlY5RlRsUlNXVjlVV1ZCRlgwMUZWRUZFUVZSQktTeHZMbU55WldGMFpVMWxaR2xoVTJGdGNHeGxSVzUwY25sRGRHOXlLRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmVTFWQ1ZFbFVURVVwTEc4dVkzSmxZWFJsVFdWa2FXRlRZVzF3YkdWRmJuUnllVU4wYjNJb2J5NVRRVTFRVEVWZlJVNVVVbGxmVkZsUVJWOVRXVk5VUlUwcExHOHVZM0psWVhSbFRXVmthV0ZUWVcxd2JHVkZiblJ5ZVVOMGIzSW9ieTVUUVUxUVRFVmZSVTVVVWxsZlZGbFFSVjlVUlZoVUtTeHZMbU55WldGMFpVMWxaR2xoVTJGdGNHeGxSVzUwY25sRGRHOXlLRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmVmtsVFZVRk1MR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBPM1JvYVhNdWNHRnljMlZJWldGa1pYSW9aU2tzWlM1eVpXRmtWV2x1ZERFMktDa3NaUzV5WldGa1ZXbHVkREUyS0Nrc1pTNXlaV0ZrVldsdWRETXlRWEp5WVhrb015a3NkR2hwY3k1M2FXUjBhRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG1obGFXZG9kRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG1odmNtbDZjbVZ6YjJ4MWRHbHZiajFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG5abGNuUnlaWE52YkhWMGFXOXVQV1V1Y21WaFpGVnBiblF6TWlncExHVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVabkpoYldWZlkyOTFiblE5WlM1eVpXRmtWV2x1ZERFMktDa3NkRDFOWVhSb0xtMXBiaWd6TVN4bExuSmxZV1JWYVc1ME9DZ3BLU3gwYUdsekxtTnZiWEJ5WlhOemIzSnVZVzFsUFdVdWNtVmhaRk4wY21sdVp5aDBLU3gwUERNeEppWmxMbkpsWVdSVGRISnBibWNvTXpFdGRDa3NkR2hwY3k1a1pYQjBhRDFsTG5KbFlXUlZhVzUwTVRZb0tTeGxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMbkJoY25ObFJtOXZkR1Z5S0dVcGZTa3NieTVqY21WaGRHVk5aV1JwWVZOaGJYQnNaVVZ1ZEhKNVEzUnZjaWh2TGxOQlRWQk1SVjlGVGxSU1dWOVVXVkJGWDBGVlJFbFBMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjR0Z5YzJWSVpXRmtaWElvWlNrc1pTNXlaV0ZrVldsdWRETXlRWEp5WVhrb01pa3NkR2hwY3k1amFHRnVibVZzWDJOdmRXNTBQV1V1Y21WaFpGVnBiblF4TmlncExIUm9hWE11YzJGdGNHeGxjMmw2WlQxbExuSmxZV1JWYVc1ME1UWW9LU3hsTG5KbFlXUlZhVzUwTVRZb0tTeGxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMbk5oYlhCc1pYSmhkR1U5WlM1eVpXRmtWV2x1ZERNeUtDa3ZOalUxTXpZc2RHaHBjeTV3WVhKelpVWnZiM1JsY2lobEtYMHBMRzh1WTNKbFlYUmxVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZWa2xUVlVGTUxDSmhkbU14SWlrc2J5NWpjbVZoZEdWVFlXMXdiR1ZGYm5SeWVVTjBiM0lvYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5V1NWTlZRVXdzSW1GMll6SWlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVVnVkSEo1UTNSdmNpaHZMbE5CVFZCTVJWOUZUbFJTV1Y5VVdWQkZYMVpKVTFWQlRDd2lZWFpqTXlJcExHOHVZM0psWVhSbFUyRnRjR3hsUlc1MGNubERkRzl5S0c4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlZrbFRWVUZNTENKaGRtTTBJaWtzYnk1amNtVmhkR1ZUWVcxd2JHVkZiblJ5ZVVOMGIzSW9ieTVUUVUxUVRFVmZSVTVVVWxsZlZGbFFSVjlXU1ZOVlFVd3NJbUYyTURFaUtTeHZMbU55WldGMFpWTmhiWEJzWlVWdWRISjVRM1J2Y2lodkxsTkJUVkJNUlY5RlRsUlNXVjlVV1ZCRlgxWkpVMVZCVEN3aWFIWmpNU0lwTEc4dVkzSmxZWFJsVTJGdGNHeGxSVzUwY25sRGRHOXlLRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmVmtsVFZVRk1MQ0pvWlhZeElpa3NieTVqY21WaGRHVlRZVzF3YkdWRmJuUnllVU4wYjNJb2J5NVRRVTFRVEVWZlJVNVVVbGxmVkZsUVJWOVdTVk5WUVV3c0luWjJZekVpS1N4dkxtTnlaV0YwWlZOaGJYQnNaVVZ1ZEhKNVEzUnZjaWh2TGxOQlRWQk1SVjlGVGxSU1dWOVVXVkJGWDFaSlUxVkJUQ3dpZG5acE1TSXBMRzh1WTNKbFlYUmxVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZWa2xUVlVGTUxDSjJkbk14SWlrc2J5NWpjbVZoZEdWVFlXMXdiR1ZGYm5SeWVVTjBiM0lvYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5V1NWTlZRVXdzSW5aMlkwNGlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVVnVkSEo1UTNSdmNpaHZMbE5CVFZCTVJWOUZUbFJTV1Y5VVdWQkZYMVpKVTFWQlRDd2lkbkF3T0NJcExHOHVZM0psWVhSbFUyRnRjR3hsUlc1MGNubERkRzl5S0c4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlZrbFRWVUZNTENKMmNEQTVJaWtzYnk1amNtVmhkR1ZUWVcxd2JHVkZiblJ5ZVVOMGIzSW9ieTVUUVUxUVRFVmZSVTVVVWxsZlZGbFFSVjlCVlVSSlR5d2liWEEwWVNJcExHOHVZM0psWVhSbFUyRnRjR3hsUlc1MGNubERkRzl5S0c4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlFWVkVTVThzSW1GakxUTWlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVVnVkSEo1UTNSdmNpaHZMbE5CVFZCTVJWOUZUbFJTV1Y5VVdWQkZYMEZWUkVsUExDSmxZeTB6SWlrc2J5NWpjbVZoZEdWVFlXMXdiR1ZGYm5SeWVVTjBiM0lvYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5QlZVUkpUeXdpVDNCMWN5SXBMRzh1WTNKbFlYUmxSVzVqY25sd2RHVmtVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZWa2xUVlVGTUxDSmxibU4ySWlrc2J5NWpjbVZoZEdWRmJtTnllWEIwWldSVFlXMXdiR1ZGYm5SeWVVTjBiM0lvYnk1VFFVMVFURVZmUlU1VVVsbGZWRmxRUlY5QlZVUkpUeXdpWlc1allTSXBMRzh1WTNKbFlYUmxSVzVqY25sd2RHVmtVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZVMVZDVkVsVVRFVXNJbVZ1WTNVaUtTeHZMbU55WldGMFpVVnVZM0o1Y0hSbFpGTmhiWEJzWlVWdWRISjVRM1J2Y2lodkxsTkJUVkJNUlY5RlRsUlNXVjlVV1ZCRlgxTlpVMVJGVFN3aVpXNWpjeUlwTEc4dVkzSmxZWFJsUlc1amNubHdkR1ZrVTJGdGNHeGxSVzUwY25sRGRHOXlLRzh1VTBGTlVFeEZYMFZPVkZKWlgxUlpVRVZmVkVWWVZDd2laVzVqZENJcExHOHVZM0psWVhSbFJXNWpjbmx3ZEdWa1UyRnRjR3hsUlc1MGNubERkRzl5S0c4dVUwRk5VRXhGWDBWT1ZGSlpYMVJaVUVWZlRVVlVRVVJCVkVFc0ltVnVZMjBpS1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW1FeGJIZ2lMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQV1V1Y21WaFpGVnBiblE0S0NrbU1TeHBQU2dvZENZeEtTc3hLU294Tmp0MGFHbHpMbXhoZVdWeVgzTnBlbVU5VzEwN1ptOXlLSFpoY2lCbVBUQTdaand6TzJZckt5bHBQVDB4Tmo5MGFHbHpMbXhoZVdWeVgzTnBlbVZiWmwwOVpTNXlaV0ZrVldsdWRERTJLQ2s2ZEdocGN5NXNZWGxsY2w5emFYcGxXMlpkUFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZDYjNoRGRHOXlLQ0poTVc5d0lpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtOXdYMmx1WkdWNFBXVXVjbVZoWkZWcGJuUTRLQ2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSmhkWGhESWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG1GMWVGOTBlWEJsUFdVdWNtVmhaRU5UZEhKcGJtY29LVHQyWVhJZ2REMTBhR2x6TG5OcGVtVXRkR2hwY3k1b1pISmZjMmw2WlMwb2RHaHBjeTVoZFhoZmRIbHdaUzVzWlc1bmRHZ3JNU2s3ZEdocGN5NWhkWGhmYzNWaWRIbHdaVDFsTG5KbFlXUlZhVzUwT0VGeWNtRjVLSFFwZlNrc2J5NWpjbVZoZEdWQ2IzaERkRzl5S0NKaGRqRkRJaXhtZFc1amRHbHZiaWhsS1h0MllYSWdkRDFsTG5KbFlXUlZhVzUwT0NncE8ybG1LSFErUGpjbUlURXBlM0l1WlhKeWIzSW9JbUYyTVVNZ2JXRnlhMlZ5SUhCeWIySnNaVzBpS1R0eVpYUjFjbTU5YVdZb2RHaHBjeTUyWlhKemFXOXVQWFFtTVRJM0xIUm9hWE11ZG1WeWMybHZiaUU5UFRFcGUzSXVaWEp5YjNJb0ltRjJNVU1nZG1WeWMybHZiaUFpSzNSb2FYTXVkbVZ5YzJsdmJpc2lJRzV2ZENCemRYQndiM0owWldRaUtUdHlaWFIxY201OWFXWW9kRDFsTG5KbFlXUlZhVzUwT0NncExIUm9hWE11YzJWeFgzQnliMlpwYkdVOWRENCtOU1kzTEhSb2FYTXVjMlZ4WDJ4bGRtVnNYMmxrZUY4d1BYUW1NekVzZEQxbExuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdWMyVnhYM1JwWlhKZk1EMTBQajQzSmpFc2RHaHBjeTVvYVdkb1gySnBkR1JsY0hSb1BYUStQalltTVN4MGFHbHpMblIzWld4MlpWOWlhWFE5ZEQ0K05TWXhMSFJvYVhNdWJXOXViMk5vY205dFpUMTBQajQwSmpFc2RHaHBjeTVqYUhKdmJXRmZjM1ZpYzJGdGNHeHBibWRmZUQxMFBqNHpKakVzZEdocGN5NWphSEp2YldGZmMzVmljMkZ0Y0d4cGJtZGZlVDEwUGo0eUpqRXNkR2hwY3k1amFISnZiV0ZmYzJGdGNHeGxYM0J2YzJsMGFXOXVQWFFtTXl4MFBXVXVjbVZoWkZWcGJuUTRLQ2tzZEdocGN5NXlaWE5sY25abFpGOHhQWFErUGpVbU55eDBhR2x6TG5KbGMyVnlkbVZrWHpFaFBUMHdLWHR5TG1WeWNtOXlLQ0poZGpGRElISmxjMlZ5ZG1Wa1h6RWdjR0Z5YzJsdVp5QndjbTlpYkdWdElpazdjbVYwZFhKdWZXbG1LSFJvYVhNdWFXNXBkR2xoYkY5d2NtVnpaVzUwWVhScGIyNWZaR1ZzWVhsZmNISmxjMlZ1ZEQxMFBqNDBKakVzZEdocGN5NXBibWwwYVdGc1gzQnlaWE5sYm5SaGRHbHZibDlrWld4aGVWOXdjbVZ6Wlc1MFBUMDlNU2wwYUdsekxtbHVhWFJwWVd4ZmNISmxjMlZ1ZEdGMGFXOXVYMlJsYkdGNVgyMXBiblZ6WDI5dVpUMTBKakUxTzJWc2MyVWdhV1lvZEdocGN5NXlaWE5sY25abFpGOHlQWFFtTVRVc2RHaHBjeTV5WlhObGNuWmxaRjh5SVQwOU1DbDdjaTVsY25KdmNpZ2lZWFl4UXlCeVpYTmxjblpsWkY4eUlIQmhjbk5wYm1jZ2NISnZZbXhsYlNJcE8zSmxkSFZ5Ym4xMllYSWdhVDEwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpTMDBPM1JvYVhNdVkyOXVabWxuVDBKVmN6MWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtHa3BmU2tzYnk1amNtVmhkR1ZDYjNoRGRHOXlLQ0poZG1ORElpeG1kVzVqZEdsdmJpaGxLWHQyWVhJZ2RDeHBPMlp2Y2loMGFHbHpMbU52Ym1acFozVnlZWFJwYjI1V1pYSnphVzl1UFdVdWNtVmhaRlZwYm5RNEtDa3NkR2hwY3k1QlZrTlFjbTltYVd4bFNXNWthV05oZEdsdmJqMWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVjSEp2Wm1sc1pWOWpiMjF3WVhScFltbHNhWFI1UFdVdWNtVmhaRlZwYm5RNEtDa3NkR2hwY3k1QlZrTk1aWFpsYkVsdVpHbGpZWFJwYjI0OVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxteGxibWQwYUZOcGVtVk5hVzUxYzA5dVpUMWxMbkpsWVdSVmFXNTBPQ2dwSmpNc2RHaHBjeTV1WWw5VFVGTmZibUZzZFhNOVpTNXlaV0ZrVldsdWREZ29LU1l6TVN4cFBYUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsTFRZc2RHaHBjeTVUVUZNOVcxMHNkRDB3TzNROGRHaHBjeTV1WWw5VFVGTmZibUZzZFhNN2RDc3JLWFJvYVhNdVUxQlRXM1JkUFh0OUxIUm9hWE11VTFCVFczUmRMbXhsYm1kMGFEMWxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMbE5RVTF0MFhTNXVZV3gxUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvZEdocGN5NVRVRk5iZEYwdWJHVnVaM1JvS1N4cExUMHlLM1JvYVhNdVUxQlRXM1JkTG14bGJtZDBhRHRtYjNJb2RHaHBjeTV1WWw5UVVGTmZibUZzZFhNOVpTNXlaV0ZrVldsdWREZ29LU3hwTFMwc2RHaHBjeTVRVUZNOVcxMHNkRDB3TzNROGRHaHBjeTV1WWw5UVVGTmZibUZzZFhNN2RDc3JLWFJvYVhNdVVGQlRXM1JkUFh0OUxIUm9hWE11VUZCVFczUmRMbXhsYm1kMGFEMWxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMbEJRVTF0MFhTNXVZV3gxUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvZEdocGN5NVFVRk5iZEYwdWJHVnVaM1JvS1N4cExUMHlLM1JvYVhNdVVGQlRXM1JkTG14bGJtZDBhRHRwUGpBbUppaDBhR2x6TG1WNGREMWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtHa3BLWDBwTEc4dVkzSmxZWFJsUW05NFEzUnZjaWdpWW5SeWRDSXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NWlkV1ptWlhKVGFYcGxSRUk5WlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1dFlYaENhWFJ5WVhSbFBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVZWFpuUW1sMGNtRjBaVDFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2lZMnhoY0NJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1amJHVmhia0Z3WlhKMGRYSmxWMmxrZEdoT1BXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVZMnhsWVc1QmNHVnlkSFZ5WlZkcFpIUm9SRDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1Oc1pXRnVRWEJsY25SMWNtVklaV2xuYUhST1BXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVZMnhsWVc1QmNHVnlkSFZ5WlVobGFXZG9kRVE5WlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1b2IzSnBlazltWms0OVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NW9iM0pwZWs5bVprUTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTUyWlhKMFQyWm1UajFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG5abGNuUlBabVpFUFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZDYjNoRGRHOXlLQ0pqYkd4cElpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtMWhlRjlqYjI1MFpXNTBYMnhwWjJoMFgyeGxkbVZzUFdVdWNtVmhaRlZwYm5ReE5pZ3BMSFJvYVhNdWJXRjRYM0JwWTE5aGRtVnlZV2RsWDJ4cFoyaDBYMnhsZG1Wc1BXVXVjbVZoWkZWcGJuUXhOaWdwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lZMjgyTkNJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhRc2FUdHBaaWgwUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdVkyaDFibXRmYjJabWMyVjBjejFiWFN4MGFHbHpMblpsY25OcGIyNDlQVDB3S1dadmNpaHBQVEE3YVR4ME8ya3JLeWwwYUdsekxtTm9kVzVyWDI5bVpuTmxkSE11Y0hWemFDaGxMbkpsWVdSVmFXNTBOalFvS1NsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0pEYjB4TUlpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtMWhlRU5NVEQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxtMWhlRVpCVEV3OVpTNXlaV0ZrVldsdWRERTJLQ2w5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW1OdmJISWlMR1oxYm1OMGFXOXVLR1VwZTJsbUtIUm9hWE11WTI5c2IzVnlYM1I1Y0dVOVpTNXlaV0ZrVTNSeWFXNW5LRFFwTEhSb2FYTXVZMjlzYjNWeVgzUjVjR1U5UFQwaWJtTnNlQ0lwZTNSb2FYTXVZMjlzYjNWeVgzQnlhVzFoY21sbGN6MWxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMblJ5WVc1elptVnlYMk5vWVhKaFkzUmxjbWx6ZEdsamN6MWxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMbTFoZEhKcGVGOWpiMlZtWm1samFXVnVkSE05WlM1eVpXRmtWV2x1ZERFMktDazdkbUZ5SUhROVpTNXlaV0ZrVldsdWREZ29LVHQwYUdsekxtWjFiR3hmY21GdVoyVmZabXhoWnoxMFBqNDNmV1ZzYzJVZ2RHaHBjeTVqYjJ4dmRYSmZkSGx3WlQwOVBTSnlTVU5ESWo5MGFHbHpMa2xEUTE5d2NtOW1hV3hsUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvZEdocGN5NXphWHBsTFRRcE9uUm9hWE11WTI5c2IzVnlYM1I1Y0dVOVBUMGljSEp2WmlJbUppaDBhR2x6TGtsRFExOXdjbTltYVd4bFBXVXVjbVZoWkZWcGJuUTRRWEp5WVhrb2RHaHBjeTV6YVhwbExUUXBLWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0ltTndjblFpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11Y0dGeWMyVk1ZVzVuZFdGblpTaGxLU3gwYUdsekxtNXZkR2xqWlQxbExuSmxZV1JEVTNSeWFXNW5LQ2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSmpjMnhuSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5UFQwd0ppWW9kR2hwY3k1amIyMXdiM05wZEdsdmJsUnZSRlJUVTJocFpuUTlaUzV5WldGa1NXNTBNeklvS1N4MGFHbHpMbXhsWVhOMFJHVmpiMlJsVkc5RWFYTndiR0Y1UkdWc2RHRTlaUzV5WldGa1NXNTBNeklvS1N4MGFHbHpMbWR5WldGMFpYTjBSR1ZqYjJSbFZHOUVhWE53YkdGNVJHVnNkR0U5WlM1eVpXRmtTVzUwTXpJb0tTeDBhR2x6TG1OdmJYQnZjMmwwYVc5dVUzUmhjblJVYVcxbFBXVXVjbVZoWkVsdWRETXlLQ2tzZEdocGN5NWpiMjF3YjNOcGRHbHZia1Z1WkZScGJXVTlaUzV5WldGa1NXNTBNeklvS1NsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0pqZEhSeklpeG1kVzVqZEdsdmJpaGxLWHQyWVhJZ2RDeHBPMmxtS0hROVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NXpZVzF3YkdWZlkyOTFiblJ6UFZ0ZExIUm9hWE11YzJGdGNHeGxYMjltWm5ObGRITTlXMTBzZEdocGN5NTJaWEp6YVc5dVBUMDlNQ2xtYjNJb2FUMHdPMms4ZER0cEt5c3BlM1JvYVhNdWMyRnRjR3hsWDJOdmRXNTBjeTV3ZFhOb0tHVXVjbVZoWkZWcGJuUXpNaWdwS1R0MllYSWdaajFsTG5KbFlXUkpiblF6TWlncE8yWThNQ1ltY2k1M1lYSnVLQ0pDYjNoUVlYSnpaWElpTENKamRIUnpJR0p2ZUNCMWMyVnpJRzVsWjJGMGFYWmxJSFpoYkhWbGN5QjNhWFJvYjNWMElIVnphVzVuSUhabGNuTnBiMjRnTVNJcExIUm9hWE11YzJGdGNHeGxYMjltWm5ObGRITXVjSFZ6YUNobUtYMWxiSE5sSUdsbUtIUm9hWE11ZG1WeWMybHZiajA5TVNsbWIzSW9hVDB3TzJrOGREdHBLeXNwZEdocGN5NXpZVzF3YkdWZlkyOTFiblJ6TG5CMWMyZ29aUzV5WldGa1ZXbHVkRE15S0NrcExIUm9hWE11YzJGdGNHeGxYMjltWm5ObGRITXVjSFZ6YUNobExuSmxZV1JKYm5Rek1pZ3BLWDBwTEc4dVkzSmxZWFJsUW05NFEzUnZjaWdpWkdGak15SXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlaUzV5WldGa1ZXbHVkRGdvS1N4cFBXVXVjbVZoWkZWcGJuUTRLQ2tzWmoxbExuSmxZV1JWYVc1ME9DZ3BPM1JvYVhNdVpuTmpiMlE5ZEQ0K05peDBhR2x6TG1KemFXUTlkRDQrTVNZek1TeDBhR2x6TG1KemJXOWtQU2gwSmpFcFBEd3lmR2srUGpZbU15eDBhR2x6TG1GamJXOWtQV2srUGpNbU55eDBhR2x6TG14bVpXOXVQV2srUGpJbU1TeDBhR2x6TG1KcGRGOXlZWFJsWDJOdlpHVTlhU1l6ZkdZK1BqVW1OMzBwTEc4dVkzSmxZWFJsUW05NFEzUnZjaWdpWkdWak15SXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlaUzV5WldGa1ZXbHVkREUyS0NrN2RHaHBjeTVrWVhSaFgzSmhkR1U5ZEQ0K015eDBhR2x6TG01MWJWOXBibVJmYzNWaVBYUW1OeXgwYUdsekxtbHVaRjl6ZFdKelBWdGRPMlp2Y2loMllYSWdhVDB3TzJrOGRHaHBjeTV1ZFcxZmFXNWtYM04xWWlzeE8ya3JLeWw3ZG1GeUlHWTllMzA3ZEdocGN5NXBibVJmYzNWaWN5NXdkWE5vS0dZcE8zWmhjaUIxUFdVdWNtVmhaRlZwYm5RNEtDa3NkajFsTG5KbFlXUlZhVzUwT0NncExIazlaUzV5WldGa1ZXbHVkRGdvS1R0bUxtWnpZMjlrUFhVK1BqWXNaaTVpYzJsa1BYVStQakVtTXpFc1ppNWljMjF2WkQwb2RTWXhLVHc4Tkh4MlBqNDBKakUxTEdZdVlXTnRiMlE5ZGo0K01TWTNMR1l1YkdabGIyNDlkaVl4TEdZdWJuVnRYMlJsY0Y5emRXSTllVDQrTVNZeE5TeG1MbTUxYlY5a1pYQmZjM1ZpUGpBbUppaG1MbU5vWVc1ZmJHOWpQU2g1SmpFcFBEdzRmR1V1Y21WaFpGVnBiblE0S0NrcGZYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW1SbVRHRWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQVEV5Tnl4cFBURXlPQ3htUFZ0ZExIVTlXeUpUVkZKRlFVMUpUa1pQSWl3aVVFRkVSRWxPUnlJc0lrRlFVRXhKUTBGVVNVOU9JaXdpVTBWRlMxUkJRa3hGSWl3aVZrOVNRa2xUWDBOUFRVMUZUbFFpTENKRFZVVlRTRVZGVkNJc0lsQkpRMVJWVWtVaUxDSlNSVk5GVWxaRlJDSmRPM1JvYVhNdWNHRnljMlZHZFd4c1NHVmhaR1Z5S0dVcE8yUnZlM1poY2lCMlBXVXVjbVZoWkZWcGJuUTRLQ2tzZVQxTllYUm9MbTFwYmloMkpuUXNkUzVzWlc1bmRHZ3RNU2s3YVdZb2VUOWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtHVXVjbVZoWkZWcGJuUXlOQ2dwS1Rvb1pTNXlaV0ZrVldsdWREaEJjbkpoZVNneE15a3NkR2hwY3k1ellXMXdiR1Z5WVhSbFBXVXVjbVZoWkZWcGJuUXpNaWdwUGo0eE1peGxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtESXdLU2tzWmk1d2RYTm9LSFZiZVYwcExIWW1hU2xpY21WaGEzMTNhR2xzWlNnaE1DazdkR2hwY3k1dWRXMU5aWFJoWkdGMFlVSnNiMk5yY3oxbUxteGxibWQwYUNzaUlDZ2lLMll1YW05cGJpZ2lMQ0FpS1NzaUtTSjlLU3h2TG1OeVpXRjBaVUp2ZUVOMGIzSW9JbVJwYlcwaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVlubDBaWE56Wlc1MFBXVXVjbVZoWkZWcGJuUTJOQ2dwZlNrc2J5NWpjbVZoZEdWQ2IzaERkRzl5S0NKa2JXRjRJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMblJwYldVOVpTNXlaV0ZrVldsdWRETXlLQ2w5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW1SdFpXUWlMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVZbmwwWlhOelpXNTBQV1V1Y21WaFpGVnBiblEyTkNncGZTa3NieTVqY21WaGRHVkNiM2hEZEc5eUtDSmtUM0J6SWl4bWRXNWpkR2x2YmlobEtYdHBaaWgwYUdsekxsWmxjbk5wYjI0OVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxrOTFkSEIxZEVOb1lXNXVaV3hEYjNWdWREMWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVVSEpsVTJ0cGNEMWxMbkpsWVdSVmFXNTBNVFlvS1N4MGFHbHpMa2x1Y0hWMFUyRnRjR3hsVW1GMFpUMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMazkxZEhCMWRFZGhhVzQ5WlM1eVpXRmtTVzUwTVRZb0tTeDBhR2x6TGtOb1lXNXVaV3hOWVhCd2FXNW5SbUZ0YVd4NVBXVXVjbVZoWkZWcGJuUTRLQ2tzZEdocGN5NURhR0Z1Ym1Wc1RXRndjR2x1WjBaaGJXbHNlU0U5UFRBcGUzUm9hWE11VTNSeVpXRnRRMjkxYm5ROVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxrTnZkWEJzWldSRGIzVnVkRDFsTG5KbFlXUlZhVzUwT0NncExIUm9hWE11UTJoaGJtNWxiRTFoY0hCcGJtYzlXMTA3Wm05eUtIWmhjaUIwUFRBN2REeDBhR2x6TGs5MWRIQjFkRU5vWVc1dVpXeERiM1Z1ZER0MEt5c3BkR2hwY3k1RGFHRnVibVZzVFdGd2NHbHVaMXQwWFQxbExuSmxZV1JWYVc1ME9DZ3BmWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0ltUnlaV1lpTEdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwTEdrN2RHaHBjeTVsYm5SeWFXVnpQVnRkTzJadmNpaDJZWElnWmoxbExuSmxZV1JWYVc1ME16SW9LU3gxUFRBN2RUeG1PM1VyS3lscFppaDBQVzh1Y0dGeWMyVlBibVZDYjNnb1pTd2hNU3gwYUdsekxuTnBlbVV0S0dVdVoyVjBVRzl6YVhScGIyNG9LUzEwYUdsekxuTjBZWEowS1Nrc2RDNWpiMlJsUFQwOWJ5NVBTeWxwUFhRdVltOTRMSFJvYVhNdVpXNTBjbWxsY3k1d2RYTm9LR2twTzJWc2MyVWdjbVYwZFhKdWZTa3NieTVqY21WaGRHVkNiM2hEZEc5eUtDSmtjbVZ3SWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG1KNWRHVnpjMlZ1ZEQxbExuSmxZV1JWYVc1ME5qUW9LWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0ltVnNibWNpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11WlhoMFpXNWtaV1JmYkdGdVozVmhaMlU5WlM1eVpXRmtVM1J5YVc1bktIUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbVZzYzNRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVpXNTBjbWxsY3oxYlhUdG1iM0lvZG1GeUlIUTlaUzV5WldGa1ZXbHVkRE15S0Nrc2FUMHdPMms4ZER0cEt5c3BlM1poY2lCbVBYdDlPM1JvYVhNdVpXNTBjbWxsY3k1d2RYTm9LR1lwTEhSb2FYTXVkbVZ5YzJsdmJqMDlQVEUvS0dZdWMyVm5iV1Z1ZEY5a2RYSmhkR2x2YmoxbExuSmxZV1JWYVc1ME5qUW9LU3htTG0xbFpHbGhYM1JwYldVOVpTNXlaV0ZrU1c1ME5qUW9LU2s2S0dZdWMyVm5iV1Z1ZEY5a2RYSmhkR2x2YmoxbExuSmxZV1JWYVc1ME16SW9LU3htTG0xbFpHbGhYM1JwYldVOVpTNXlaV0ZrU1c1ME16SW9LU2tzWmk1dFpXUnBZVjl5WVhSbFgybHVkR1ZuWlhJOVpTNXlaV0ZrU1c1ME1UWW9LU3htTG0xbFpHbGhYM0poZEdWZlpuSmhZM1JwYjI0OVpTNXlaV0ZrU1c1ME1UWW9LWDE5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSmxiWE5uSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5UFRFL0tIUm9hWE11ZEdsdFpYTmpZV3hsUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWNISmxjMlZ1ZEdGMGFXOXVYM1JwYldVOVpTNXlaV0ZrVldsdWREWTBLQ2tzZEdocGN5NWxkbVZ1ZEY5a2RYSmhkR2x2YmoxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxtbGtQV1V1Y21WaFpGVnBiblF6TWlncExIUm9hWE11YzJOb1pXMWxYMmxrWDNWeWFUMWxMbkpsWVdSRFUzUnlhVzVuS0Nrc2RHaHBjeTUyWVd4MVpUMWxMbkpsWVdSRFUzUnlhVzVuS0NrcE9paDBhR2x6TG5OamFHVnRaVjlwWkY5MWNtazlaUzV5WldGa1ExTjBjbWx1WnlncExIUm9hWE11ZG1Gc2RXVTlaUzV5WldGa1ExTjBjbWx1WnlncExIUm9hWE11ZEdsdFpYTmpZV3hsUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWNISmxjMlZ1ZEdGMGFXOXVYM1JwYldWZlpHVnNkR0U5WlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1bGRtVnVkRjlrZFhKaGRHbHZiajFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1sa1BXVXVjbVZoWkZWcGJuUXpNaWdwS1R0MllYSWdkRDEwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpTMG9OQ28wS3loMGFHbHpMbk5qYUdWdFpWOXBaRjkxY21rdWJHVnVaM1JvS3pFcEt5aDBhR2x6TG5aaGJIVmxMbXhsYm1kMGFDc3hLU2s3ZEdocGN5NTJaWEp6YVc5dVBUMHhKaVlvZEMwOU5Da3NkR2hwY3k1dFpYTnpZV2RsWDJSaGRHRTlaUzV5WldGa1ZXbHVkRGhCY25KaGVTaDBLWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0ltVnpaSE1pTEdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvZEdocGN5NXphWHBsTFhSb2FYTXVhR1J5WDNOcGVtVXBPMmxtS0hSNWNHVnZaaUJvUENKMUlpbDdkbUZ5SUdrOWJtVjNJR2c3ZEdocGN5NWxjMlE5YVM1d1lYSnpaVTl1WlVSbGMyTnlhWEIwYjNJb2JtVjNJSE1vZEM1aWRXWm1aWElzTUN4ekxrSkpSMTlGVGtSSlFVNHBLWDE5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW1acFpXd2lMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVabWxsYkdSRGIzVnVkRDFsTG5KbFlXUlZhVzUwT0NncExIUm9hWE11Wm1sbGJHUlBjbVJsY21sdVp6MWxMbkpsWVdSVmFXNTBPQ2dwZlNrc2J5NWpjbVZoZEdWQ2IzaERkRzl5S0NKbWNtMWhJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbVJoZEdGZlptOXliV0YwUFdVdWNtVmhaRk4wY21sdVp5ZzBLWDBwTEc4dVkzSmxZWFJsUW05NFEzUnZjaWdpWm5SNWNDSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlkR2hwY3k1emFYcGxMWFJvYVhNdWFHUnlYM05wZW1VN2RHaHBjeTV0WVdwdmNsOWljbUZ1WkQxbExuSmxZV1JUZEhKcGJtY29OQ2tzZEdocGN5NXRhVzV2Y2w5MlpYSnphVzl1UFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFF0UFRnc2RHaHBjeTVqYjIxd1lYUnBZbXhsWDJKeVlXNWtjejFiWFR0bWIzSW9kbUZ5SUdrOU1EdDBQajAwT3lsMGFHbHpMbU52YlhCaGRHbGliR1ZmWW5KaGJtUnpXMmxkUFdVdWNtVmhaRk4wY21sdVp5ZzBLU3gwTFQwMExHa3JLMzBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0ltaGtiSElpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11ZG1WeWMybHZiajA5UFRBbUppaGxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbWhoYm1Sc1pYSTlaUzV5WldGa1UzUnlhVzVuS0RRcExHVXVjbVZoWkZWcGJuUXpNa0Z5Y21GNUtETXBMSFJvYVhNdWJtRnRaVDFsTG5KbFlXUlRkSEpwYm1jb2RHaHBjeTV6YVhwbExYUm9hWE11YUdSeVgzTnBlbVV0TWpBcExIUm9hWE11Ym1GdFpWdDBhR2x6TG01aGJXVXViR1Z1WjNSb0xURmRQVDA5SWx3d0lpWW1LSFJvYVhNdWJtRnRaVDEwYUdsekxtNWhiV1V1YzJ4cFkyVW9NQ3d0TVNrcEtYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2lhSFpqUXlJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhRc2FTeG1MSFU3ZEdocGN5NWpiMjVtYVdkMWNtRjBhVzl1Vm1WeWMybHZiajFsTG5KbFlXUlZhVzUwT0NncExIVTlaUzV5WldGa1ZXbHVkRGdvS1N4MGFHbHpMbWRsYm1WeVlXeGZjSEp2Wm1sc1pWOXpjR0ZqWlQxMVBqNDJMSFJvYVhNdVoyVnVaWEpoYkY5MGFXVnlYMlpzWVdjOUtIVW1NeklwUGo0MUxIUm9hWE11WjJWdVpYSmhiRjl3Y205bWFXeGxYMmxrWXoxMUpqTXhMSFJvYVhNdVoyVnVaWEpoYkY5d2NtOW1hV3hsWDJOdmJYQmhkR2xpYVd4cGRIazlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVuWlc1bGNtRnNYMk52Ym5OMGNtRnBiblJmYVc1a2FXTmhkRzl5UFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvTmlrc2RHaHBjeTVuWlc1bGNtRnNYMnhsZG1Wc1gybGtZejFsTG5KbFlXUlZhVzUwT0NncExIUm9hWE11YldsdVgzTndZWFJwWVd4ZmMyVm5iV1Z1ZEdGMGFXOXVYMmxrWXoxbExuSmxZV1JWYVc1ME1UWW9LU1kwTURrMUxIUm9hWE11Y0dGeVlXeHNaV3hwYzIxVWVYQmxQV1V1Y21WaFpGVnBiblE0S0NrbU15eDBhR2x6TG1Ob2NtOXRZVjltYjNKdFlYUmZhV1JqUFdVdWNtVmhaRlZwYm5RNEtDa21NeXgwYUdsekxtSnBkRjlrWlhCMGFGOXNkVzFoWDIxcGJuVnpPRDFsTG5KbFlXUlZhVzUwT0NncEpqY3NkR2hwY3k1aWFYUmZaR1Z3ZEdoZlkyaHliMjFoWDIxcGJuVnpPRDFsTG5KbFlXUlZhVzUwT0NncEpqY3NkR2hwY3k1aGRtZEdjbUZ0WlZKaGRHVTlaUzV5WldGa1ZXbHVkREUyS0Nrc2RUMWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVZMjl1YzNSaGJuUkdjbUZ0WlZKaGRHVTlkVDQrTml4MGFHbHpMbTUxYlZSbGJYQnZjbUZzVEdGNVpYSnpQU2gxSmpFektUNCtNeXgwYUdsekxuUmxiWEJ2Y21Gc1NXUk9aWE4wWldROUtIVW1OQ2srUGpJc2RHaHBjeTVzWlc1bmRHaFRhWHBsVFdsdWRYTlBibVU5ZFNZekxIUm9hWE11Ym1Gc2RWOWhjbkpoZVhNOVcxMDdkbUZ5SUhZOVpTNXlaV0ZrVldsdWREZ29LVHRtYjNJb2REMHdPM1E4ZGp0MEt5c3BlM1poY2lCNVBWdGRPM1JvYVhNdWJtRnNkVjloY25KaGVYTXVjSFZ6YUNoNUtTeDFQV1V1Y21WaFpGVnBiblE0S0Nrc2VTNWpiMjF3YkdWMFpXNWxjM005S0hVbU1USTRLVDQrTnl4NUxtNWhiSFZmZEhsd1pUMTFKall6TzNaaGNpQnRQV1V1Y21WaFpGVnBiblF4TmlncE8yWnZjaWhwUFRBN2FUeHRPMmtyS3lsN2RtRnlJR0k5ZTMwN2VTNXdkWE5vS0dJcExHWTlaUzV5WldGa1ZXbHVkREUyS0Nrc1lpNWtZWFJoUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvWmlsOWZYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW1scGJtWWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBPM1JvYVhNdWRtVnljMmx2YmowOVBUQS9kR2hwY3k1bGJuUnllVjlqYjNWdWREMWxMbkpsWVdSVmFXNTBNVFlvS1RwMGFHbHpMbVZ1ZEhKNVgyTnZkVzUwUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWFYUmxiVjlwYm1admN6MWJYVHRtYjNJb2RtRnlJR2s5TUR0cFBIUm9hWE11Wlc1MGNubGZZMjkxYm5RN2FTc3JLV2xtS0hROWJ5NXdZWEp6WlU5dVpVSnZlQ2hsTENFeExIUm9hWE11YzJsNlpTMG9aUzVuWlhSUWIzTnBkR2x2YmlncExYUm9hWE11YzNSaGNuUXBLU3gwTG1OdlpHVTlQVDF2TGs5TEtYUXVZbTk0TG5SNWNHVWhQVDBpYVc1bVpTSW1Kbkl1WlhKeWIzSW9Ja0p2ZUZCaGNuTmxjaUlzSWtWNGNHVmpkR1ZrSUNkcGJtWmxKeUJpYjNnc0lHZHZkQ0FpSzNRdVltOTRMblI1Y0dVcExIUm9hWE11YVhSbGJWOXBibVp2YzF0cFhUMTBMbUp2ZUR0bGJITmxJSEpsZEhWeWJuMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW1sc2IyTWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBPM1E5WlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG05bVpuTmxkRjl6YVhwbFBYUStQalFtTVRVc2RHaHBjeTVzWlc1bmRHaGZjMmw2WlQxMEpqRTFMSFE5WlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG1KaGMyVmZiMlptYzJWMFgzTnBlbVU5ZEQ0K05DWXhOU3gwYUdsekxuWmxjbk5wYjI0OVBUMHhmSHgwYUdsekxuWmxjbk5wYjI0OVBUMHlQM1JvYVhNdWFXNWtaWGhmYzJsNlpUMTBKakUxT25Sb2FYTXVhVzVrWlhoZmMybDZaVDB3TEhSb2FYTXVhWFJsYlhNOVcxMDdkbUZ5SUdrOU1EdHBaaWgwYUdsekxuWmxjbk5wYjI0OE1pbHBQV1V1Y21WaFpGVnBiblF4TmlncE8yVnNjMlVnYVdZb2RHaHBjeTUyWlhKemFXOXVQVDA5TWlscFBXVXVjbVZoWkZWcGJuUXpNaWdwTzJWc2MyVWdkR2h5YjNjaWRtVnljMmx2YmlCdlppQnBiRzlqSUdKdmVDQnViM1FnYzNWd2NHOXlkR1ZrSWp0bWIzSW9kbUZ5SUdZOU1EdG1QR2s3WmlzcktYdDJZWElnZFQxN2ZUdHBaaWgwYUdsekxtbDBaVzF6TG5CMWMyZ29kU2tzZEdocGN5NTJaWEp6YVc5dVBESXBkUzVwZEdWdFgwbEVQV1V1Y21WaFpGVnBiblF4TmlncE8yVnNjMlVnYVdZb2RHaHBjeTUyWlhKemFXOXVQVDA5TWlsMUxtbDBaVzFmU1VROVpTNXlaV0ZrVldsdWRERTJLQ2s3Wld4elpTQjBhSEp2ZHlKMlpYSnphVzl1SUc5bUlHbHNiMk1nWW05NElHNXZkQ0J6ZFhCd2IzSjBaV1FpTzNOM2FYUmphQ2gwYUdsekxuWmxjbk5wYjI0OVBUMHhmSHgwYUdsekxuWmxjbk5wYjI0OVBUMHlQM1V1WTI5dWMzUnlkV04wYVc5dVgyMWxkR2h2WkQxbExuSmxZV1JWYVc1ME1UWW9LU1l4TlRwMUxtTnZibk4wY25WamRHbHZibDl0WlhSb2IyUTlNQ3gxTG1SaGRHRmZjbVZtWlhKbGJtTmxYMmx1WkdWNFBXVXVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXVZbUZ6WlY5dlptWnpaWFJmYzJsNlpTbDdZMkZ6WlNBd09uVXVZbUZ6WlY5dlptWnpaWFE5TUR0aWNtVmhhenRqWVhObElEUTZkUzVpWVhObFgyOW1abk5sZEQxbExuSmxZV1JWYVc1ME16SW9LVHRpY21WaGF6dGpZWE5sSURnNmRTNWlZWE5sWDI5bVpuTmxkRDFsTG5KbFlXUlZhVzUwTmpRb0tUdGljbVZoYXp0a1pXWmhkV3gwT25Sb2NtOTNJa1Z5Y205eUlISmxZV1JwYm1jZ1ltRnpaU0J2Wm1aelpYUWdjMmw2WlNKOWRtRnlJSFk5WlM1eVpXRmtWV2x1ZERFMktDazdkUzVsZUhSbGJuUnpQVnRkTzJadmNpaDJZWElnZVQwd08zazhkanQ1S3lzcGUzWmhjaUJ0UFh0OU8ybG1LSFV1WlhoMFpXNTBjeTV3ZFhOb0tHMHBMSFJvYVhNdWRtVnljMmx2YmowOVBURjhmSFJvYVhNdWRtVnljMmx2YmowOVBUSXBjM2RwZEdOb0tIUm9hWE11YVc1a1pYaGZjMmw2WlNsN1kyRnpaU0F3T20wdVpYaDBaVzUwWDJsdVpHVjRQVEE3WW5KbFlXczdZMkZ6WlNBME9tMHVaWGgwWlc1MFgybHVaR1Y0UFdVdWNtVmhaRlZwYm5Rek1pZ3BPMkp5WldGck8yTmhjMlVnT0RwdExtVjRkR1Z1ZEY5cGJtUmxlRDFsTG5KbFlXUlZhVzUwTmpRb0tUdGljbVZoYXp0a1pXWmhkV3gwT25Sb2NtOTNJa1Z5Y205eUlISmxZV1JwYm1jZ1pYaDBaVzUwSUdsdVpHVjRJbjF6ZDJsMFkyZ29kR2hwY3k1dlptWnpaWFJmYzJsNlpTbDdZMkZ6WlNBd09tMHVaWGgwWlc1MFgyOW1abk5sZEQwd08ySnlaV0ZyTzJOaGMyVWdORHB0TG1WNGRHVnVkRjl2Wm1aelpYUTlaUzV5WldGa1ZXbHVkRE15S0NrN1luSmxZV3M3WTJGelpTQTRPbTB1WlhoMFpXNTBYMjltWm5ObGREMWxMbkpsWVdSVmFXNTBOalFvS1R0aWNtVmhhenRrWldaaGRXeDBPblJvY205M0lrVnljbTl5SUhKbFlXUnBibWNnWlhoMFpXNTBJR2x1WkdWNEluMXpkMmwwWTJnb2RHaHBjeTVzWlc1bmRHaGZjMmw2WlNsN1kyRnpaU0F3T20wdVpYaDBaVzUwWDJ4bGJtZDBhRDB3TzJKeVpXRnJPMk5oYzJVZ05EcHRMbVY0ZEdWdWRGOXNaVzVuZEdnOVpTNXlaV0ZrVldsdWRETXlLQ2s3WW5KbFlXczdZMkZ6WlNBNE9tMHVaWGgwWlc1MFgyeGxibWQwYUQxbExuSmxZV1JWYVc1ME5qUW9LVHRpY21WaGF6dGtaV1poZFd4ME9uUm9jbTkzSWtWeWNtOXlJSEpsWVdScGJtY2daWGgwWlc1MElHbHVaR1Y0SW4xOWZYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2lhVzFwY2lJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhROVpTNXlaV0ZrVldsdWREZ29LVHQwYUdsekxuSmxjMlZ5ZG1Wa1BYUStQamNzZEdocGN5NWhlR2x6UFhRbU1YMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW1sdVptVWlMR1oxYm1OMGFXOXVLR1VwZTJsbUtDaDBhR2x6TG5abGNuTnBiMjQ5UFQwd2ZIeDBhR2x6TG5abGNuTnBiMjQ5UFQweEtTWW1LSFJvYVhNdWFYUmxiVjlKUkQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxtbDBaVzFmY0hKdmRHVmpkR2x2Ymw5cGJtUmxlRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG1sMFpXMWZibUZ0WlQxbExuSmxZV1JEVTNSeWFXNW5LQ2tzZEdocGN5NWpiMjUwWlc1MFgzUjVjR1U5WlM1eVpXRmtRMU4wY21sdVp5Z3BMSFJvYVhNdVkyOXVkR1Z1ZEY5bGJtTnZaR2x1WnoxbExuSmxZV1JEVTNSeWFXNW5LQ2twTEhSb2FYTXVkbVZ5YzJsdmJqMDlQVEVwZTNSb2FYTXVaWGgwWlc1emFXOXVYM1I1Y0dVOVpTNXlaV0ZrVTNSeWFXNW5LRFFwTEhJdWQyRnliaWdpUW05NFVHRnljMlZ5SWl3aVEyRnVibTkwSUhCaGNuTmxJR1Y0ZEdWdWMybHZiaUIwZVhCbElpa3NaUzV6WldWcktIUm9hWE11YzNSaGNuUXJkR2hwY3k1emFYcGxLVHR5WlhSMWNtNTlkR2hwY3k1MlpYSnphVzl1UGoweUppWW9kR2hwY3k1MlpYSnphVzl1UFQwOU1qOTBhR2x6TG1sMFpXMWZTVVE5WlM1eVpXRmtWV2x1ZERFMktDazZkR2hwY3k1MlpYSnphVzl1UFQwOU15WW1LSFJvYVhNdWFYUmxiVjlKUkQxbExuSmxZV1JWYVc1ME16SW9LU2tzZEdocGN5NXBkR1Z0WDNCeWIzUmxZM1JwYjI1ZmFXNWtaWGc5WlM1eVpXRmtWV2x1ZERFMktDa3NkR2hwY3k1cGRHVnRYM1I1Y0dVOVpTNXlaV0ZrVTNSeWFXNW5LRFFwTEhSb2FYTXVhWFJsYlY5dVlXMWxQV1V1Y21WaFpFTlRkSEpwYm1jb0tTeDBhR2x6TG1sMFpXMWZkSGx3WlQwOVBTSnRhVzFsSWo4b2RHaHBjeTVqYjI1MFpXNTBYM1I1Y0dVOVpTNXlaV0ZrUTFOMGNtbHVaeWdwTEhSb2FYTXVZMjl1ZEdWdWRGOWxibU52WkdsdVp6MWxMbkpsWVdSRFUzUnlhVzVuS0NrcE9uUm9hWE11YVhSbGJWOTBlWEJsUFQwOUluVnlhU0FpSmlZb2RHaHBjeTVwZEdWdFgzVnlhVjkwZVhCbFBXVXVjbVZoWkVOVGRISnBibWNvS1NrcGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpYVhCdFlTSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhVHRtYjNJb1pXNTBjbmxmWTI5MWJuUTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVoYzNOdlkybGhkR2x2Ym5NOVcxMHNkRDB3TzNROFpXNTBjbmxmWTI5MWJuUTdkQ3NyS1h0MllYSWdaajE3ZlR0MGFHbHpMbUZ6YzI5amFXRjBhVzl1Y3k1d2RYTm9LR1lwTEhSb2FYTXVkbVZ5YzJsdmJqd3hQMll1YVdROVpTNXlaV0ZrVldsdWRERTJLQ2s2Wmk1cFpEMWxMbkpsWVdSVmFXNTBNeklvS1R0MllYSWdkVDFsTG5KbFlXUlZhVzUwT0NncE8yWnZjaWhtTG5CeWIzQnpQVnRkTEdrOU1EdHBQSFU3YVNzcktYdDJZWElnZGoxbExuSmxZV1JWYVc1ME9DZ3BMSGs5ZTMwN1ppNXdjbTl3Y3k1d2RYTm9LSGtwTEhrdVpYTnpaVzUwYVdGc1BTaDJKakV5T0NrK1BqYzlQVDB4TEhSb2FYTXVabXhoWjNNbU1UOTVMbkJ5YjNCbGNuUjVYMmx1WkdWNFBTaDJKakV5TnlrOFBEaDhaUzV5WldGa1ZXbHVkRGdvS1RwNUxuQnliM0JsY25SNVgybHVaR1Y0UFhZbU1USTNmWDE5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSnBjbVZtSWl4bWRXNWpkR2x2YmlobEtYdDJZWElnZEN4cE8yWnZjaWgwYUdsekxuSmxabVZ5Wlc1alpYTTlXMTA3WlM1blpYUlFiM05wZEdsdmJpZ3BQSFJvYVhNdWMzUmhjblFyZEdocGN5NXphWHBsT3lscFppaDBQVzh1Y0dGeWMyVlBibVZDYjNnb1pTd2hNQ3gwYUdsekxuTnBlbVV0S0dVdVoyVjBVRzl6YVhScGIyNG9LUzEwYUdsekxuTjBZWEowS1Nrc2RDNWpiMlJsUFQwOWJ5NVBTeWwwYUdsekxuWmxjbk5wYjI0OVBUMHdQMms5Ym1WM0lHOHVVMmx1WjJ4bFNYUmxiVlI1Y0dWU1pXWmxjbVZ1WTJWQ2IzZ29kQzUwZVhCbExIUXVjMmw2WlN4MExtaGtjbDl6YVhwbExIUXVjM1JoY25RcE9tazlibVYzSUc4dVUybHVaMnhsU1hSbGJWUjVjR1ZTWldabGNtVnVZMlZDYjNoTVlYSm5aU2gwTG5SNWNHVXNkQzV6YVhwbExIUXVhR1J5WDNOcGVtVXNkQzV6ZEdGeWRDa3NhUzUzY21sMFpUMDlQVzh1UW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlNZbWFTNTBlWEJsSVQwOUltMWtZWFFpSmlZb2NpNTNZWEp1S0NKQ2IzaFFZWEp6WlhJaUxHa3VkSGx3WlNzaUlHSnZlQ0IzY21sMGFXNW5JRzV2ZENCNVpYUWdhVzF3YkdWdFpXNTBaV1FzSUd0bFpYQnBibWNnZFc1d1lYSnpaV1FnWkdGMFlTQnBiaUJ0WlcxdmNua2dabTl5SUd4aGRHVnlJSGR5YVhSbElpa3NhUzV3WVhKelpVUmhkR0ZCYm1SU1pYZHBibVFvWlNrcExHa3VjR0Z5YzJVb1pTa3NkR2hwY3k1eVpXWmxjbVZ1WTJWekxuQjFjMmdvYVNrN1pXeHpaU0J5WlhSMWNtNTlLU3h2TG1OeVpXRjBaVUp2ZUVOMGIzSW9JbWx5YjNRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVlXNW5iR1U5WlM1eVpXRmtWV2x1ZERnb0tTWXpmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWFYTndaU0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVwYldGblpWOTNhV1IwYUQxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxtbHRZV2RsWDJobGFXZG9kRDFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW10cGJtUWlMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjMk5vWlcxbFZWSkpQV1V1Y21WaFpFTlRkSEpwYm1jb0tTeDBhR2x6TG5aaGJIVmxQV1V1Y21WaFpFTlRkSEpwYm1jb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW14bGRtRWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQV1V1Y21WaFpGVnBiblE0S0NrN2RHaHBjeTVzWlhabGJITTlXMTA3Wm05eUtIWmhjaUJwUFRBN2FUeDBPMmtyS3lsN2RtRnlJR1k5ZTMwN2RHaHBjeTVzWlhabGJITmJhVjA5Wml4bUxuUnlZV05yWDBsRVBXVXVjbVZoWkZWcGJuUXpNaWdwTzNaaGNpQjFQV1V1Y21WaFpGVnBiblE0S0NrN2MzZHBkR05vS0dZdWNHRmtaR2x1WjE5bWJHRm5QWFUrUGpjc1ppNWhjM05wWjI1dFpXNTBYM1I1Y0dVOWRTWXhNamNzWmk1aGMzTnBaMjV0Wlc1MFgzUjVjR1VwZTJOaGMyVWdNRHBtTG1keWIzVndhVzVuWDNSNWNHVTlaUzV5WldGa1UzUnlhVzVuS0RRcE8ySnlaV0ZyTzJOaGMyVWdNVHBtTG1keWIzVndhVzVuWDNSNWNHVTlaUzV5WldGa1UzUnlhVzVuS0RRcExHWXVaM0p2ZFhCcGJtZGZkSGx3WlY5d1lYSmhiV1YwWlhJOVpTNXlaV0ZrVldsdWRETXlLQ2s3WW5KbFlXczdZMkZ6WlNBeU9tSnlaV0ZyTzJOaGMyVWdNenBpY21WaGF6dGpZWE5sSURRNlppNXpkV0pmZEhKaFkydGZhV1E5WlM1eVpXRmtWV2x1ZERNeUtDazdZbkpsWVdzN1pHVm1ZWFZzZERweUxuZGhjbTRvSWtKdmVGQmhjbk5sY2lJc0lsVnVhMjV2ZDI0Z2JHVjJZU0JoYzNOcFoyNWxiV1Z1ZENCMGVYQmxJaWw5ZlgwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWJITmxiQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVzWVhsbGNsOXBaRDFsTG5KbFlXUlZhVzUwTVRZb0tYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2liV0Y0Y2lJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1d1pYSnBiMlE5WlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1aWVYUmxjejFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2liV1JqZGlJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1a2FYTndiR0Y1WDNCeWFXMWhjbWxsY3oxYlhTeDBhR2x6TG1ScGMzQnNZWGxmY0hKcGJXRnlhV1Z6V3pCZFBYdDlMSFJvYVhNdVpHbHpjR3hoZVY5d2NtbHRZWEpwWlhOYk1GMHVlRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG1ScGMzQnNZWGxmY0hKcGJXRnlhV1Z6V3pCZExuazlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTVrYVhOd2JHRjVYM0J5YVcxaGNtbGxjMXN4WFQxN2ZTeDBhR2x6TG1ScGMzQnNZWGxmY0hKcGJXRnlhV1Z6V3pGZExuZzlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTVrYVhOd2JHRjVYM0J5YVcxaGNtbGxjMXN4WFM1NVBXVXVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXVaR2x6Y0d4aGVWOXdjbWx0WVhKcFpYTmJNbDA5ZTMwc2RHaHBjeTVrYVhOd2JHRjVYM0J5YVcxaGNtbGxjMXN5WFM1NFBXVXVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXVaR2x6Y0d4aGVWOXdjbWx0WVhKcFpYTmJNbDB1ZVQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxuZG9hWFJsWDNCdmFXNTBQWHQ5TEhSb2FYTXVkMmhwZEdWZmNHOXBiblF1ZUQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxuZG9hWFJsWDNCdmFXNTBMbms5WlM1eVpXRmtWV2x1ZERFMktDa3NkR2hwY3k1dFlYaGZaR2x6Y0d4aGVWOXRZWE4wWlhKcGJtZGZiSFZ0YVc1aGJtTmxQV1V1Y21WaFpGVnBiblF6TWlncExIUm9hWE11YldsdVgyUnBjM0JzWVhsZmJXRnpkR1Z5YVc1blgyeDFiV2x1WVc1alpUMWxMbkpsWVdSVmFXNTBNeklvS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbTFrYUdRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWRtVnljMmx2YmowOU1UOG9kR2hwY3k1amNtVmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblEyTkNncExIUm9hWE11Ylc5a2FXWnBZMkYwYVc5dVgzUnBiV1U5WlM1eVpXRmtWV2x1ZERZMEtDa3NkR2hwY3k1MGFXMWxjMk5oYkdVOVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NWtkWEpoZEdsdmJqMWxMbkpsWVdSVmFXNTBOalFvS1NrNktIUm9hWE11WTNKbFlYUnBiMjVmZEdsdFpUMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbTF2WkdsbWFXTmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblF6TWlncExIUm9hWE11ZEdsdFpYTmpZV3hsUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdVpIVnlZWFJwYjI0OVpTNXlaV0ZrVldsdWRETXlLQ2twTEhSb2FYTXVjR0Z5YzJWTVlXNW5kV0ZuWlNobEtTeGxMbkpsWVdSVmFXNTBNVFlvS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbTFsYUdRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVpteGhaM01tTVNZbUtISXVkMkZ5YmlnaVFtOTRVR0Z5YzJWeUlpd2liV1ZvWkNCaWIzZ2dhVzVqYjNKeVpXTjBiSGtnZFhObGN5Qm1iR0ZuY3lCelpYUWdkRzhnTVN3Z1kyOXVkbVZ5ZEdsdVp5QjJaWEp6YVc5dUlIUnZJREVpS1N4MGFHbHpMblpsY25OcGIyNDlNU2tzZEdocGN5NTJaWEp6YVc5dVBUMHhQM1JvYVhNdVpuSmhaMjFsYm5SZlpIVnlZWFJwYjI0OVpTNXlaV0ZrVldsdWREWTBLQ2s2ZEdocGN5NW1jbUZuYldWdWRGOWtkWEpoZEdsdmJqMWxMbkpsWVdSVmFXNTBNeklvS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbTFsZEdFaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVltOTRaWE05VzEwc2J5NURiMjUwWVdsdVpYSkNiM2d1Y0hKdmRHOTBlWEJsTG5CaGNuTmxMbU5oYkd3b2RHaHBjeXhsS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbTFtYUdRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWMyVnhkV1Z1WTJWZmJuVnRZbVZ5UFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWJXWnlieUlzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVmYzJsNlpUMWxMbkpsWVdSVmFXNTBNeklvS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbTEyYUdRaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWRtVnljMmx2YmowOU1UOG9kR2hwY3k1amNtVmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblEyTkNncExIUm9hWE11Ylc5a2FXWnBZMkYwYVc5dVgzUnBiV1U5WlM1eVpXRmtWV2x1ZERZMEtDa3NkR2hwY3k1MGFXMWxjMk5oYkdVOVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NWtkWEpoZEdsdmJqMWxMbkpsWVdSVmFXNTBOalFvS1NrNktIUm9hWE11WTNKbFlYUnBiMjVmZEdsdFpUMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbTF2WkdsbWFXTmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblF6TWlncExIUm9hWE11ZEdsdFpYTmpZV3hsUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdVpIVnlZWFJwYjI0OVpTNXlaV0ZrVldsdWRETXlLQ2twTEhSb2FYTXVjbUYwWlQxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxuWnZiSFZ0WlQxbExuSmxZV1JWYVc1ME1UWW9LVDQrT0N4bExuSmxZV1JWYVc1ME1UWW9LU3hsTG5KbFlXUlZhVzUwTXpKQmNuSmhlU2d5S1N4MGFHbHpMbTFoZEhKcGVEMWxMbkpsWVdSVmFXNTBNekpCY25KaGVTZzVLU3hsTG5KbFlXUlZhVzUwTXpKQmNuSmhlU2cyS1N4MGFHbHpMbTVsZUhSZmRISmhZMnRmYVdROVpTNXlaV0ZrVldsdWRETXlLQ2w5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW01d1kyc2lMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjR0ZqYTJWMGMzTmxiblE5WlM1eVpXRmtWV2x1ZERNeUtDbDlLU3h2TG1OeVpXRjBaVUp2ZUVOMGIzSW9JbTUxYlhBaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWNHRmphMlYwYzNObGJuUTlaUzV5WldGa1ZXbHVkRFkwS0NsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0p3WVdSaUlpeG1kVzVqZEdsdmJpaGxLWHQyWVhJZ2REMWxMbkpsWVdSVmFXNTBNeklvS1R0MGFHbHpMbkJoWkdKcGRITTlXMTA3Wm05eUtIWmhjaUJwUFRBN2FUeE5ZWFJvTG1ac2IyOXlLQ2gwS3pFcEx6SXBPMmtyS3lsMGFHbHpMbkJoWkdKcGRITTlaUzV5WldGa1ZXbHVkRGdvS1gwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWNHRnpjQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVvVTNCaFkybHVaejFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG5aVGNHRmphVzVuUFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZDYjNoRGRHOXlLQ0p3WVhsc0lpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxuUmxlSFE5WlM1eVpXRmtVM1J5YVc1bktIUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsS1gwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWNHRjVkQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTV3WVhsc2IyRmtTVVE5WlM1eVpXRmtWV2x1ZERNeUtDazdkbUZ5SUhROVpTNXlaV0ZrVldsdWREZ29LVHQwYUdsekxuSjBjRzFoY0Y5emRISnBibWM5WlM1eVpXRmtVM1J5YVc1bktIUXBmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWNHUnBiaUlzWm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE5S0hSb2FYTXVjMmw2WlMxMGFHbHpMbWhrY2w5emFYcGxLUzg0TzNSb2FYTXVjbUYwWlQxYlhTeDBhR2x6TG1sdWFYUnBZV3hmWkdWc1lYazlXMTA3Wm05eUtIWmhjaUJwUFRBN2FUeDBPMmtyS3lsMGFHbHpMbkpoZEdWYmFWMDlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVwYm1sMGFXRnNYMlJsYkdGNVcybGRQV1V1Y21WaFpGVnBiblF6TWlncGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpY0dsMGJTSXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NTJaWEp6YVc5dVBUMDlNRDkwYUdsekxtbDBaVzFmYVdROVpTNXlaV0ZrVldsdWRERTJLQ2s2ZEdocGN5NXBkR1Z0WDJsa1BXVXVjbVZoWkZWcGJuUXpNaWdwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljR2w0YVNJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhRN1ptOXlLSFJvYVhNdWJuVnRYMk5vWVc1dVpXeHpQV1V1Y21WaFpGVnBiblE0S0Nrc2RHaHBjeTVpYVhSelgzQmxjbDlqYUdGdWJtVnNjejFiWFN4MFBUQTdkRHgwYUdsekxtNTFiVjlqYUdGdWJtVnNjenQwS3lzcGRHaHBjeTVpYVhSelgzQmxjbDlqYUdGdWJtVnNjMXQwWFQxbExuSmxZV1JWYVc1ME9DZ3BmU2tzYnk1amNtVmhkR1ZDYjNoRGRHOXlLQ0p3YldGNElpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtSjVkR1Z6UFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWNISm1kQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTV5WldaZmRISmhZMnRmYVdROVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NXVkSEJmZEdsdFpYTjBZVzF3UFdVdWNtVmhaRlZwYm5RMk5DZ3BMSFJvYVhNdWRtVnljMmx2YmowOVBUQS9kR2hwY3k1dFpXUnBZVjkwYVcxbFBXVXVjbVZoWkZWcGJuUXpNaWdwT25Sb2FYTXViV1ZrYVdGZmRHbHRaVDFsTG5KbFlXUlZhVzUwTmpRb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5CemMyZ2lMR1oxYm1OMGFXOXVLR1VwZTJsbUtIUm9hWE11YzNsemRHVnRYMmxrUFc4dWNHRnljMlZJWlhneE5paGxLU3gwYUdsekxuWmxjbk5wYjI0K01DbDdkbUZ5SUhROVpTNXlaV0ZrVldsdWRETXlLQ2s3ZEdocGN5NXJhV1E5VzEwN1ptOXlLSFpoY2lCcFBUQTdhVHgwTzJrckt5bDBhR2x6TG10cFpGdHBYVDF2TG5CaGNuTmxTR1Y0TVRZb1pTbDlkbUZ5SUdZOVpTNXlaV0ZrVldsdWRETXlLQ2s3Wmo0d0ppWW9kR2hwY3k1a1lYUmhQV1V1Y21WaFpGVnBiblE0UVhKeVlYa29aaWtwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lZMnhsWmlJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1M2FXUjBhRDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1obGFXZG9kRDFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW1WdWIyWWlMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVkMmxrZEdnOVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NW9aV2xuYUhROVpTNXlaV0ZrVldsdWRETXlLQ2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSndjbTltSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5kcFpIUm9QV1V1Y21WaFpGVnBiblF6TWlncExIUm9hWE11YUdWcFoyaDBQV1V1Y21WaFpGVnBiblF6TWlncGZTa3NieTVqY21WaGRHVkRiMjUwWVdsdVpYSkNiM2hEZEc5eUtDSjBZWEIwSWl4dWRXeHNMRnNpWTJ4bFppSXNJbkJ5YjJZaUxDSmxibTltSWwwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWNuUndJQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVrWlhOamNtbHdkR2x2Ym1admNtMWhkRDFsTG5KbFlXUlRkSEpwYm1jb05Da3NkR2hwY3k1elpIQjBaWGgwUFdVdWNtVmhaRk4wY21sdVp5aDBhR2x6TG5OcGVtVXRkR2hwY3k1b1pISmZjMmw2WlMwMEtYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OaGFXOGlMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVabXhoWjNNbU1TWW1LSFJvYVhNdVlYVjRYMmx1Wm05ZmRIbHdaVDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1GMWVGOXBibVp2WDNSNWNHVmZjR0Z5WVcxbGRHVnlQV1V1Y21WaFpGVnBiblF6TWlncEtUdDJZWElnZEQxbExuSmxZV1JWYVc1ME16SW9LVHQwYUdsekxtOW1abk5sZEQxYlhUdG1iM0lvZG1GeUlHazlNRHRwUEhRN2FTc3JLWFJvYVhNdWRtVnljMmx2YmowOVBUQS9kR2hwY3k1dlptWnpaWFJiYVYwOVpTNXlaV0ZrVldsdWRETXlLQ2s2ZEdocGN5NXZabVp6WlhSYmFWMDlaUzV5WldGa1ZXbHVkRFkwS0NsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0p6WVdsNklpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtWnNZV2R6SmpFbUppaDBhR2x6TG1GMWVGOXBibVp2WDNSNWNHVTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVoZFhoZmFXNW1iMTkwZVhCbFgzQmhjbUZ0WlhSbGNqMWxMbkpsWVdSVmFXNTBNeklvS1Nrc2RHaHBjeTVrWldaaGRXeDBYM05oYlhCc1pWOXBibVp2WDNOcGVtVTlaUzV5WldGa1ZXbHVkRGdvS1R0MllYSWdkRDFsTG5KbFlXUlZhVzUwTXpJb0tUdHBaaWgwYUdsekxuTmhiWEJzWlY5cGJtWnZYM05wZW1VOVcxMHNkR2hwY3k1a1pXWmhkV3gwWDNOaGJYQnNaVjlwYm1adlgzTnBlbVU5UFQwd0tXWnZjaWgyWVhJZ2FUMHdPMms4ZER0cEt5c3BkR2hwY3k1ellXMXdiR1ZmYVc1bWIxOXphWHBsVzJsZFBXVXVjbVZoWkZWcGJuUTRLQ2w5S1N4dkxtTnlaV0YwWlZOaGJYQnNaVVZ1ZEhKNVEzUnZjaWh2TGxOQlRWQk1SVjlGVGxSU1dWOVVXVkJGWDAxRlZFRkVRVlJCTENKdFpYUjBJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbkJoY25ObFNHVmhaR1Z5S0dVcExIUm9hWE11WTI5dWRHVnVkRjlsYm1OdlpHbHVaejFsTG5KbFlXUkRVM1J5YVc1bktDa3NkR2hwY3k1dGFXMWxYMlp2Y20xaGREMWxMbkpsWVdSRFUzUnlhVzVuS0Nrc2RHaHBjeTV3WVhKelpVWnZiM1JsY2lobEtYMHBMRzh1WTNKbFlYUmxVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZUVVZVUVVSQlZFRXNJbTFsZEhnaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWNHRnljMlZJWldGa1pYSW9aU2tzZEdocGN5NWpiMjUwWlc1MFgyVnVZMjlrYVc1blBXVXVjbVZoWkVOVGRISnBibWNvS1N4MGFHbHpMbTVoYldWemNHRmpaVDFsTG5KbFlXUkRVM1J5YVc1bktDa3NkR2hwY3k1elkyaGxiV0ZmYkc5allYUnBiMjQ5WlM1eVpXRmtRMU4wY21sdVp5Z3BMSFJvYVhNdWNHRnljMlZHYjI5MFpYSW9aU2w5S1N4dkxtTnlaV0YwWlZOaGJYQnNaVVZ1ZEhKNVEzUnZjaWh2TGxOQlRWQk1SVjlGVGxSU1dWOVVXVkJGWDFOVlFsUkpWRXhGTENKelluUjBJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbkJoY25ObFNHVmhaR1Z5S0dVcExIUm9hWE11WTI5dWRHVnVkRjlsYm1OdlpHbHVaejFsTG5KbFlXUkRVM1J5YVc1bktDa3NkR2hwY3k1dGFXMWxYMlp2Y20xaGREMWxMbkpsWVdSRFUzUnlhVzVuS0Nrc2RHaHBjeTV3WVhKelpVWnZiM1JsY2lobEtYMHBMRzh1WTNKbFlYUmxVMkZ0Y0d4bFJXNTBjbmxEZEc5eUtHOHVVMEZOVUV4RlgwVk9WRkpaWDFSWlVFVmZVMVZDVkVsVVRFVXNJbk4wY0hBaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWNHRnljMlZJWldGa1pYSW9aU2tzZEdocGN5NXVZVzFsYzNCaFkyVTlaUzV5WldGa1ExTjBjbWx1WnlncExIUm9hWE11YzJOb1pXMWhYMnh2WTJGMGFXOXVQV1V1Y21WaFpFTlRkSEpwYm1jb0tTeDBhR2x6TG1GMWVHbHNhV0Z5ZVY5dGFXMWxYM1I1Y0dWelBXVXVjbVZoWkVOVGRISnBibWNvS1N4MGFHbHpMbkJoY25ObFJtOXZkR1Z5S0dVcGZTa3NieTVqY21WaGRHVlRZVzF3YkdWRmJuUnllVU4wYjNJb2J5NVRRVTFRVEVWZlJVNVVVbGxmVkZsUVJWOVRWVUpVU1ZSTVJTd2ljM1I0ZENJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1d1lYSnpaVWhsWVdSbGNpaGxLU3gwYUdsekxtTnZiblJsYm5SZlpXNWpiMlJwYm1jOVpTNXlaV0ZrUTFOMGNtbHVaeWdwTEhSb2FYTXViV2x0WlY5bWIzSnRZWFE5WlM1eVpXRmtRMU4wY21sdVp5Z3BMSFJvYVhNdWNHRnljMlZHYjI5MFpYSW9aU2w5S1N4dkxtTnlaV0YwWlZOaGJYQnNaVVZ1ZEhKNVEzUnZjaWh2TGxOQlRWQk1SVjlGVGxSU1dWOVVXVkJGWDFOVlFsUkpWRXhGTENKMGVETm5JaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbkJoY25ObFNHVmhaR1Z5S0dVcExIUm9hWE11WkdsemNHeGhlVVpzWVdkelBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVhRzl5YVhwdmJuUmhiRjlxZFhOMGFXWnBZMkYwYVc5dVBXVXVjbVZoWkVsdWREZ29LU3gwYUdsekxuWmxjblJwWTJGc1gycDFjM1JwWm1sallYUnBiMjQ5WlM1eVpXRmtTVzUwT0NncExIUm9hWE11WW1kZlkyOXNiM0pmY21kaVlUMWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtEUXBMSFJvYVhNdVltOTRYM0psWTI5eVpEMWxMbkpsWVdSSmJuUXhOa0Z5Y21GNUtEUXBMSFJvYVhNdWMzUjViR1ZmY21WamIzSmtQV1V1Y21WaFpGVnBiblE0UVhKeVlYa29NVElwTEhSb2FYTXVjR0Z5YzJWR2IyOTBaWElvWlNsOUtTeHZMbU55WldGMFpWTmhiWEJzWlVWdWRISjVRM1J2Y2lodkxsTkJUVkJNUlY5RlRsUlNXVjlVV1ZCRlgwMUZWRUZFUVZSQkxDSjNkblIwSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5CaGNuTmxTR1ZoWkdWeUtHVXBMSFJvYVhNdWNHRnljMlZHYjI5MFpYSW9aU2w5S1N4dkxtTnlaV0YwWlZOaGJYQnNaVWR5YjNWd1EzUnZjaWdpWVd4emRDSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhVDFsTG5KbFlXUlZhVzUwTVRZb0tUdG1iM0lvZEdocGN5NW1hWEp6ZEY5dmRYUndkWFJmYzJGdGNHeGxQV1V1Y21WaFpGVnBiblF4TmlncExIUm9hWE11YzJGdGNHeGxYMjltWm5ObGREMWJYU3gwUFRBN2REeHBPM1FyS3lsMGFHbHpMbk5oYlhCc1pWOXZabVp6WlhSYmRGMDlaUzV5WldGa1ZXbHVkRE15S0NrN2RtRnlJR1k5ZEdocGN5NWtaWE5qY21sd2RHbHZibDlzWlc1bmRHZ3ROQzAwS21rN1ptOXlLSFJvYVhNdWJuVnRYMjkxZEhCMWRGOXpZVzF3YkdWelBWdGRMSFJvYVhNdWJuVnRYM1J2ZEdGc1gzTmhiWEJzWlhNOVcxMHNkRDB3TzNROFppODBPM1FyS3lsMGFHbHpMbTUxYlY5dmRYUndkWFJmYzJGdGNHeGxjMXQwWFQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxtNTFiVjkwYjNSaGJGOXpZVzF3YkdWelczUmRQV1V1Y21WaFpGVnBiblF4TmlncGZTa3NieTVqY21WaGRHVlRZVzF3YkdWSGNtOTFjRU4wYjNJb0ltRjJiR3dpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11YkdGNVpYSk9kVzFpWlhJOVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxtRmpZM1Z5WVhSbFUzUmhkR2x6ZEdsamMwWnNZV2M5WlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG1GMlowSnBkRkpoZEdVOVpTNXlaV0ZrVldsdWRERTJLQ2tzZEdocGN5NWhkbWRHY21GdFpWSmhkR1U5WlM1eVpXRmtWV2x1ZERFMktDbDlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVZHliM1Z3UTNSdmNpZ2lZWFp6Y3lJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1emRXSlRaWEYxWlc1alpVbGtaVzUwYVdacFpYSTlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTVzWVhsbGNrNTFiV0psY2oxbExuSmxZV1JWYVc1ME9DZ3BPM1poY2lCMFBXVXVjbVZoWkZWcGJuUTRLQ2s3ZEdocGN5NWtkWEpoZEdsdmJrWnNZV2M5ZEQ0K055eDBhR2x6TG1GMloxSmhkR1ZHYkdGblBYUStQalltTVN4MGFHbHpMbVIxY21GMGFXOXVSbXhoWnlZbUtIUm9hWE11WkhWeVlYUnBiMjQ5WlM1eVpXRmtWV2x1ZERNeUtDa3BMSFJvYVhNdVlYWm5VbUYwWlVac1lXY21KaWgwYUdsekxtRmpZM1Z5WVhSbFUzUmhkR2x6ZEdsamMwWnNZV2M5WlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG1GMlowSnBkRkpoZEdVOVpTNXlaV0ZrVldsdWRERTJLQ2tzZEdocGN5NWhkbWRHY21GdFpWSmhkR1U5WlM1eVpXRmtWV2x1ZERFMktDa3BMSFJvYVhNdVpHVndaVzVrWlc1amVUMWJYVHRtYjNJb2RtRnlJR2s5WlM1eVpXRmtWV2x1ZERnb0tTeG1QVEE3Wmp4cE8yWXJLeWw3ZG1GeUlIVTllMzA3ZEdocGN5NWtaWEJsYm1SbGJtTjVMbkIxYzJnb2RTa3NkUzV6ZFdKVFpYRkVhWEpsWTNScGIyNUdiR0ZuUFdVdWNtVmhaRlZwYm5RNEtDa3NkUzVzWVhsbGNrNTFiV0psY2oxbExuSmxZV1JWYVc1ME9DZ3BMSFV1YzNWaVUyVnhkV1Z1WTJWSlpHVnVkR2xtYVdWeVBXVXVjbVZoWkZWcGJuUXhOaWdwZlgwcExHOHVZM0psWVhSbFUyRnRjR3hsUjNKdmRYQkRkRzl5S0NKa2RISjBJaXhtZFc1amRHbHZiaWhsS1h0eUxuZGhjbTRvSWtKdmVGQmhjbk5sY2lJc0lsTmhiWEJzWlNCSGNtOTFjQ0IwZVhCbE9pQWlLM1JvYVhNdVozSnZkWEJwYm1kZmRIbHdaU3NpSUc1dmRDQm1kV3hzZVNCd1lYSnpaV1FpS1gwcExHOHVZM0psWVhSbFUyRnRjR3hsUjNKdmRYQkRkRzl5S0NKdGRtbG1JaXhtZFc1amRHbHZiaWhsS1h0eUxuZGhjbTRvSWtKdmVGQmhjbk5sY2lJc0lsTmhiWEJzWlNCSGNtOTFjQ0IwZVhCbE9pQWlLM1JvYVhNdVozSnZkWEJwYm1kZmRIbHdaU3NpSUc1dmRDQm1kV3hzZVNCd1lYSnpaV1FpS1gwcExHOHVZM0psWVhSbFUyRnRjR3hsUjNKdmRYQkRkRzl5S0NKd2NtOXNJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbkp2Ykd4ZlpHbHpkR0Z1WTJVOVpTNXlaV0ZrU1c1ME1UWW9LWDBwTEc4dVkzSmxZWFJsVTJGdGNHeGxSM0p2ZFhCRGRHOXlLQ0p5WVhBZ0lpeG1kVzVqZEdsdmJpaGxLWHQyWVhJZ2REMWxMbkpsWVdSVmFXNTBPQ2dwTzNSb2FYTXViblZ0WDJ4bFlXUnBibWRmYzJGdGNHeGxjMTlyYm05M2JqMTBQajQzTEhSb2FYTXViblZ0WDJ4bFlXUnBibWRmYzJGdGNHeGxjejEwSmpFeU4zMHBMRzh1WTNKbFlYUmxVMkZ0Y0d4bFIzSnZkWEJEZEc5eUtDSnlZWE5vSWl4bWRXNWpkR2x2YmlobEtYdHBaaWgwYUdsekxtOXdaWEpoZEdsdmJsOXdiMmx1ZEY5amIzVnVkRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG1SbGMyTnlhWEIwYVc5dVgyeGxibWQwYUNFOVBUSXJLSFJvYVhNdWIzQmxjbUYwYVc5dVgzQnZhVzUwWDJOdmRXNTBQVDA5TVQ4eU9uUm9hWE11YjNCbGNtRjBhVzl1WDNCdmFXNTBYMk52ZFc1MEtqWXBLemtwY2k1M1lYSnVLQ0pDYjNoUVlYSnpaWElpTENKTmFYTnRZWFJqYUNCcGJpQWlLM1JvYVhNdVozSnZkWEJwYm1kZmRIbHdaU3NpSUhOaGJYQnNaU0JuY205MWNDQnNaVzVuZEdnaUtTeDBhR2x6TG1SaGRHRTlaUzV5WldGa1ZXbHVkRGhCY25KaGVTaDBhR2x6TG1SbGMyTnlhWEIwYVc5dVgyeGxibWQwYUMweUtUdGxiSE5sZTJsbUtIUm9hWE11YjNCbGNtRjBhVzl1WDNCdmFXNTBYMk52ZFc1MFBUMDlNU2wwYUdsekxuUmhjbWRsZEY5eVlYUmxYM05vWVhKbFBXVXVjbVZoWkZWcGJuUXhOaWdwTzJWc2MyVjdkR2hwY3k1MFlYSm5aWFJmY21GMFpWOXphR0Z5WlQxYlhTeDBhR2x6TG1GMllXbHNZV0pzWlY5aWFYUnlZWFJsUFZ0ZE8yWnZjaWgyWVhJZ2REMHdPM1E4ZEdocGN5NXZjR1Z5WVhScGIyNWZjRzlwYm5SZlkyOTFiblE3ZENzcktYUm9hWE11WVhaaGFXeGhZbXhsWDJKcGRISmhkR1ZiZEYwOVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NTBZWEpuWlhSZmNtRjBaVjl6YUdGeVpWdDBYVDFsTG5KbFlXUlZhVzUwTVRZb0tYMTBhR2x6TG0xaGVHbHRkVzFmWW1sMGNtRjBaVDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG0xcGJtbHRkVzFmWW1sMGNtRjBaVDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1ScGMyTmhjbVJmY0hKcGIzSnBkSGs5WlM1eVpXRmtWV2x1ZERnb0tYMTlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVZHliM1Z3UTNSdmNpZ2ljbTlzYkNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1eWIyeHNYMlJwYzNSaGJtTmxQV1V1Y21WaFpFbHVkREUyS0NsOUtTeHZMbE5oYlhCc1pVZHliM1Z3Ulc1MGNua3VjSEp2ZEc5MGVYQmxMbkJoY25ObFBXWjFibU4wYVc5dUtHVXBlM0l1ZDJGeWJpZ2lRbTk0VUdGeWMyVnlJaXdpVlc1cmJtOTNiaUJUWVcxd2JHVWdSM0p2ZFhBZ2RIbHdaVG9nSWl0MGFHbHpMbWR5YjNWd2FXNW5YM1I1Y0dVcExIUm9hWE11WkdGMFlUMWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtIUm9hWE11WkdWelkzSnBjSFJwYjI1ZmJHVnVaM1JvS1gwc2J5NWpjbVZoZEdWVFlXMXdiR1ZIY205MWNFTjBiM0lvSW5OamFXWWlMR1oxYm1OMGFXOXVLR1VwZTNJdWQyRnliaWdpUW05NFVHRnljMlZ5SWl3aVUyRnRjR3hsSUVkeWIzVndJSFI1Y0dVNklDSXJkR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxLeUlnYm05MElHWjFiR3g1SUhCaGNuTmxaQ0lwZlNrc2J5NWpjbVZoZEdWVFlXMXdiR1ZIY205MWNFTjBiM0lvSW5OamJtMGlMR1oxYm1OMGFXOXVLR1VwZTNJdWQyRnliaWdpUW05NFVHRnljMlZ5SWl3aVUyRnRjR3hsSUVkeWIzVndJSFI1Y0dVNklDSXJkR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxLeUlnYm05MElHWjFiR3g1SUhCaGNuTmxaQ0lwZlNrc2J5NWpjbVZoZEdWVFlXMXdiR1ZIY205MWNFTjBiM0lvSW5ObGFXY2lMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjbVZ6WlhKMlpXUTlaUzV5WldGa1ZXbHVkRGdvS1R0MllYSWdkRDFsTG5KbFlXUlZhVzUwT0NncE8zUm9hWE11WTNKNWNIUmZZbmwwWlY5aWJHOWphejEwUGo0MExIUm9hWE11YzJ0cGNGOWllWFJsWDJKc2IyTnJQWFFtTVRVc2RHaHBjeTVwYzFCeWIzUmxZM1JsWkQxbExuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdVVHVnlYMU5oYlhCc1pWOUpWbDlUYVhwbFBXVXVjbVZoWkZWcGJuUTRLQ2tzZEdocGN5NUxTVVE5Ynk1d1lYSnpaVWhsZURFMktHVXBMSFJvYVhNdVkyOXVjM1JoYm5SZlNWWmZjMmw2WlQwd0xIUm9hWE11WTI5dWMzUmhiblJmU1ZZOU1DeDBhR2x6TG1selVISnZkR1ZqZEdWa1BUMDlNU1ltZEdocGN5NVFaWEpmVTJGdGNHeGxYMGxXWDFOcGVtVTlQVDB3SmlZb2RHaHBjeTVqYjI1emRHRnVkRjlKVmw5emFYcGxQV1V1Y21WaFpGVnBiblE0S0Nrc2RHaHBjeTVqYjI1emRHRnVkRjlKVmoxbExuSmxZV1JWYVc1ME9FRnljbUY1S0hSb2FYTXVZMjl1YzNSaGJuUmZTVlpmYzJsNlpTa3BmU2tzYnk1amNtVmhkR1ZUWVcxd2JHVkhjbTkxY0VOMGIzSW9Jbk4wYzJFaUxHWjFibU4wYVc5dUtHVXBlM0l1ZDJGeWJpZ2lRbTk0VUdGeWMyVnlJaXdpVTJGdGNHeGxJRWR5YjNWd0lIUjVjR1U2SUNJcmRHaHBjeTVuY205MWNHbHVaMTkwZVhCbEt5SWdibTkwSUdaMWJHeDVJSEJoY25ObFpDSXBmU2tzYnk1amNtVmhkR1ZUWVcxd2JHVkhjbTkxY0VOMGIzSW9Jbk41Ym1NaUxHWjFibU4wYVc5dUtHVXBlM1poY2lCMFBXVXVjbVZoWkZWcGJuUTRLQ2s3ZEdocGN5NU9RVXhmZFc1cGRGOTBlWEJsUFhRbU5qTjlLU3h2TG1OeVpXRjBaVk5oYlhCc1pVZHliM1Z3UTNSdmNpZ2lkR1ZzWlNJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhROVpTNXlaV0ZrVldsdWREZ29LVHQwYUdsekxteGxkbVZzWDJsdVpHVndaVzVrWlc1MGJIbGZaR1ZqYjJSaFlteGxQWFErUGpkOUtTeHZMbU55WldGMFpWTmhiWEJzWlVkeWIzVndRM1J2Y2lnaWRITmhjeUlzWm5WdVkzUnBiMjRvWlNsN2NpNTNZWEp1S0NKQ2IzaFFZWEp6WlhJaUxDSlRZVzF3YkdVZ1IzSnZkWEFnZEhsd1pUb2dJaXQwYUdsekxtZHliM1Z3YVc1blgzUjVjR1VySWlCdWIzUWdablZzYkhrZ2NHRnljMlZrSWlsOUtTeHZMbU55WldGMFpWTmhiWEJzWlVkeWIzVndRM1J2Y2lnaWRITmpiQ0lzWm5WdVkzUnBiMjRvWlNsN2NpNTNZWEp1S0NKQ2IzaFFZWEp6WlhJaUxDSlRZVzF3YkdVZ1IzSnZkWEFnZEhsd1pUb2dJaXQwYUdsekxtZHliM1Z3YVc1blgzUjVjR1VySWlCdWIzUWdablZzYkhrZ2NHRnljMlZrSWlsOUtTeHZMbU55WldGMFpWTmhiWEJzWlVkeWIzVndRM1J2Y2lnaWRtbHdjaUlzWm5WdVkzUnBiMjRvWlNsN2NpNTNZWEp1S0NKQ2IzaFFZWEp6WlhJaUxDSlRZVzF3YkdVZ1IzSnZkWEFnZEhsd1pUb2dJaXQwYUdsekxtZHliM1Z3YVc1blgzUjVjR1VySWlCdWIzUWdablZzYkhrZ2NHRnljMlZrSWlsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0p6WW1kd0lpeG1kVzVqZEdsdmJpaGxLWHQwYUdsekxtZHliM1Z3YVc1blgzUjVjR1U5WlM1eVpXRmtVM1J5YVc1bktEUXBMSFJvYVhNdWRtVnljMmx2YmowOVBURS9kR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxYM0JoY21GdFpYUmxjajFsTG5KbFlXUlZhVzUwTXpJb0tUcDBhR2x6TG1keWIzVndhVzVuWDNSNWNHVmZjR0Z5WVcxbGRHVnlQVEFzZEdocGN5NWxiblJ5YVdWelBWdGRPMlp2Y2loMllYSWdkRDFsTG5KbFlXUlZhVzUwTXpJb0tTeHBQVEE3YVR4ME8ya3JLeWw3ZG1GeUlHWTllMzA3ZEdocGN5NWxiblJ5YVdWekxuQjFjMmdvWmlrc1ppNXpZVzF3YkdWZlkyOTFiblE5WlM1eVpXRmtTVzUwTXpJb0tTeG1MbWR5YjNWd1gyUmxjMk55YVhCMGFXOXVYMmx1WkdWNFBXVXVjbVZoWkVsdWRETXlLQ2w5ZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljMk5vYlNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1elkyaGxiV1ZmZEhsd1pUMWxMbkpsWVdSVGRISnBibWNvTkNrc2RHaHBjeTV6WTJobGJXVmZkbVZ5YzJsdmJqMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbVpzWVdkekpqRW1KaWgwYUdsekxuTmphR1Z0WlY5MWNtazlaUzV5WldGa1UzUnlhVzVuS0hSb2FYTXVjMmw2WlMxMGFHbHpMbWhrY2w5emFYcGxMVGdwS1gwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWMyUndJQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTV6WkhCMFpYaDBQV1V1Y21WaFpGTjBjbWx1WnloMGFHbHpMbk5wZW1VdGRHaHBjeTVvWkhKZmMybDZaU2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSnpaSFJ3SWl4bWRXNWpkR2x2YmlobEtYdDJZWElnZEN4cFBYUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsTzNSb2FYTXVhWE5mYkdWaFpHbHVaejFiWFN4MGFHbHpMbk5oYlhCc1pWOWtaWEJsYm1SelgyOXVQVnRkTEhSb2FYTXVjMkZ0Y0d4bFgybHpYMlJsY0dWdVpHVmtYMjl1UFZ0ZExIUm9hWE11YzJGdGNHeGxYMmhoYzE5eVpXUjFibVJoYm1ONVBWdGRPMlp2Y2loMllYSWdaajB3TzJZOGFUdG1LeXNwZEQxbExuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdWFYTmZiR1ZoWkdsdVoxdG1YVDEwUGo0MkxIUm9hWE11YzJGdGNHeGxYMlJsY0dWdVpITmZiMjViWmwwOWRENCtOQ1l6TEhSb2FYTXVjMkZ0Y0d4bFgybHpYMlJsY0dWdVpHVmtYMjl1VzJaZFBYUStQakltTXl4MGFHbHpMbk5oYlhCc1pWOW9ZWE5mY21Wa2RXNWtZVzVqZVZ0bVhUMTBKak45S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSnpaVzVqSWlrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljMmR3WkNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxQV1V1Y21WaFpGTjBjbWx1WnlnMEtTeHlMbVJsWW5WbktDSkNiM2hRWVhKelpYSWlMQ0pHYjNWdVpDQlRZVzF3YkdVZ1IzSnZkWEJ6SUc5bUlIUjVjR1VnSWl0MGFHbHpMbWR5YjNWd2FXNW5YM1I1Y0dVcExIUm9hWE11ZG1WeWMybHZiajA5UFRFL2RHaHBjeTVrWldaaGRXeDBYMnhsYm1kMGFEMWxMbkpsWVdSVmFXNTBNeklvS1RwMGFHbHpMbVJsWm1GMWJIUmZiR1Z1WjNSb1BUQXNkR2hwY3k1MlpYSnphVzl1UGoweUppWW9kR2hwY3k1a1pXWmhkV3gwWDJkeWIzVndYMlJsYzJOeWFYQjBhVzl1WDJsdVpHVjRQV1V1Y21WaFpGVnBiblF6TWlncEtTeDBhR2x6TG1WdWRISnBaWE05VzEwN1ptOXlLSFpoY2lCMFBXVXVjbVZoWkZWcGJuUXpNaWdwTEdrOU1EdHBQSFE3YVNzcktYdDJZWElnWmp0dlczUm9hWE11WjNKdmRYQnBibWRmZEhsd1pTc2lVMkZ0Y0d4bFIzSnZkWEJGYm5SeWVTSmRQMlk5Ym1WM0lHOWJkR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxLeUpUWVcxd2JHVkhjbTkxY0VWdWRISjVJbDBvZEdocGN5NW5jbTkxY0dsdVoxOTBlWEJsS1RwbVBXNWxkeUJ2TGxOaGJYQnNaVWR5YjNWd1JXNTBjbmtvZEdocGN5NW5jbTkxY0dsdVoxOTBlWEJsS1N4MGFHbHpMbVZ1ZEhKcFpYTXVjSFZ6YUNobUtTeDBhR2x6TG5abGNuTnBiMjQ5UFQweFAzUm9hWE11WkdWbVlYVnNkRjlzWlc1bmRHZzlQVDB3UDJZdVpHVnpZM0pwY0hScGIyNWZiR1Z1WjNSb1BXVXVjbVZoWkZWcGJuUXpNaWdwT21ZdVpHVnpZM0pwY0hScGIyNWZiR1Z1WjNSb1BYUm9hWE11WkdWbVlYVnNkRjlzWlc1bmRHZzZaaTVrWlhOamNtbHdkR2x2Ymw5c1pXNW5kR2c5ZEdocGN5NWtaV1poZFd4MFgyeGxibWQwYUN4bUxuZHlhWFJsUFQwOWJ5NVRZVzF3YkdWSGNtOTFjRVZ1ZEhKNUxuQnliM1J2ZEhsd1pTNTNjbWwwWlNZbUtISXVhVzVtYnlnaVFtOTRVR0Z5YzJWeUlpd2lVMkZ0Y0d4bFIzSnZkWEFnWm05eUlIUjVjR1VnSWl0MGFHbHpMbWR5YjNWd2FXNW5YM1I1Y0dVcklpQjNjbWwwYVc1bklHNXZkQ0I1WlhRZ2FXMXdiR1Z0Wlc1MFpXUXNJR3RsWlhCcGJtY2dkVzV3WVhKelpXUWdaR0YwWVNCcGJpQnRaVzF2Y25rZ1ptOXlJR3hoZEdWeUlIZHlhWFJsSWlrc1ppNWtZWFJoUFdVdWNtVmhaRlZwYm5RNFFYSnlZWGtvWmk1a1pYTmpjbWx3ZEdsdmJsOXNaVzVuZEdncExHVXVjRzl6YVhScGIyNHRQV1l1WkdWelkzSnBjSFJwYjI1ZmJHVnVaM1JvS1N4bUxuQmhjbk5sS0dVcGZYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OcFpIZ2lMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjbVZtWlhKbGJtTmxYMGxFUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWRHbHRaWE5qWVd4bFBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVkbVZ5YzJsdmJqMDlQVEEvS0hSb2FYTXVaV0Z5YkdsbGMzUmZjSEpsYzJWdWRHRjBhVzl1WDNScGJXVTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVtYVhKemRGOXZabVp6WlhROVpTNXlaV0ZrVldsdWRETXlLQ2twT2loMGFHbHpMbVZoY214cFpYTjBYM0J5WlhObGJuUmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblEyTkNncExIUm9hWE11Wm1seWMzUmZiMlptYzJWMFBXVXVjbVZoWkZWcGJuUTJOQ2dwS1N4bExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxuSmxabVZ5Wlc1alpYTTlXMTA3Wm05eUtIWmhjaUIwUFdVdWNtVmhaRlZwYm5ReE5pZ3BMR2s5TUR0cFBIUTdhU3NyS1h0MllYSWdaajE3ZlR0MGFHbHpMbkpsWm1WeVpXNWpaWE11Y0hWemFDaG1LVHQyWVhJZ2RUMWxMbkpsWVdSVmFXNTBNeklvS1R0bUxuSmxabVZ5Wlc1alpWOTBlWEJsUFhVK1BqTXhKakVzWmk1eVpXWmxjbVZ1WTJWa1gzTnBlbVU5ZFNZeU1UUTNORGd6TmpRM0xHWXVjM1ZpYzJWbmJXVnVkRjlrZFhKaGRHbHZiajFsTG5KbFlXUlZhVzUwTXpJb0tTeDFQV1V1Y21WaFpGVnBiblF6TWlncExHWXVjM1JoY25SelgzZHBkR2hmVTBGUVBYVStQak14SmpFc1ppNVRRVkJmZEhsd1pUMTFQajR5T0NZM0xHWXVVMEZRWDJSbGJIUmhYM1JwYldVOWRTWXlOamcwTXpVME5UVjlmU2tzYnk1VGFXNW5iR1ZKZEdWdFZIbHdaVkpsWm1WeVpXNWpaVUp2ZUQxbWRXNWpkR2x2YmlobExIUXNhU3htS1h0dkxrSnZlQzVqWVd4c0tIUm9hWE1zWlN4MEtTeDBhR2x6TG1oa2NsOXphWHBsUFdrc2RHaHBjeTV6ZEdGeWREMW1mU3h2TGxOcGJtZHNaVWwwWlcxVWVYQmxVbVZtWlhKbGJtTmxRbTk0TG5CeWIzUnZkSGx3WlQxdVpYY2dieTVDYjNnc2J5NVRhVzVuYkdWSmRHVnRWSGx3WlZKbFptVnlaVzVqWlVKdmVDNXdjbTkwYjNSNWNHVXVjR0Z5YzJVOVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1bWNtOXRYMmwwWlcxZlNVUTlaUzV5WldGa1ZXbHVkREUyS0NrN2RtRnlJSFE5WlM1eVpXRmtWV2x1ZERFMktDazdkR2hwY3k1eVpXWmxjbVZ1WTJWelBWdGRPMlp2Y2loMllYSWdhVDB3TzJrOGREdHBLeXNwZEdocGN5NXlaV1psY21WdVkyVnpXMmxkUFdVdWNtVmhaRlZwYm5ReE5pZ3BmU3h2TGxOcGJtZHNaVWwwWlcxVWVYQmxVbVZtWlhKbGJtTmxRbTk0VEdGeVoyVTlablZ1WTNScGIyNG9aU3gwTEdrc1ppbDdieTVDYjNndVkyRnNiQ2gwYUdsekxHVXNkQ2tzZEdocGN5NW9aSEpmYzJsNlpUMXBMSFJvYVhNdWMzUmhjblE5Wm4wc2J5NVRhVzVuYkdWSmRHVnRWSGx3WlZKbFptVnlaVzVqWlVKdmVFeGhjbWRsTG5CeWIzUnZkSGx3WlQxdVpYY2dieTVDYjNnc2J5NVRhVzVuYkdWSmRHVnRWSGx3WlZKbFptVnlaVzVqWlVKdmVFeGhjbWRsTG5CeWIzUnZkSGx3WlM1d1lYSnpaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMbVp5YjIxZmFYUmxiVjlKUkQxbExuSmxZV1JWYVc1ME16SW9LVHQyWVhJZ2REMWxMbkpsWVdSVmFXNTBNVFlvS1R0MGFHbHpMbkpsWm1WeVpXNWpaWE05VzEwN1ptOXlLSFpoY2lCcFBUQTdhVHgwTzJrckt5bDBhR2x6TG5KbFptVnlaVzVqWlhOYmFWMDlaUzV5WldGa1ZXbHVkRE15S0NsOUxHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JbE50UkcwaUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWNISnBiV0Z5ZVZKRGFISnZiV0YwYVdOcGRIbGZlRDFsTG5KbFlXUlZhVzUwTVRZb0tTeDBhR2x6TG5CeWFXMWhjbmxTUTJoeWIyMWhkR2xqYVhSNVgzazlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTV3Y21sdFlYSjVSME5vY205dFlYUnBZMmwwZVY5NFBXVXVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXVjSEpwYldGeWVVZERhSEp2YldGMGFXTnBkSGxmZVQxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxuQnlhVzFoY25sQ1EyaHliMjFoZEdsamFYUjVYM2c5WlM1eVpXRmtWV2x1ZERFMktDa3NkR2hwY3k1d2NtbHRZWEo1UWtOb2NtOXRZWFJwWTJsMGVWOTVQV1V1Y21WaFpGVnBiblF4TmlncExIUm9hWE11ZDJocGRHVlFiMmx1ZEVOb2NtOXRZWFJwWTJsMGVWOTRQV1V1Y21WaFpGVnBiblF4TmlncExIUm9hWE11ZDJocGRHVlFiMmx1ZEVOb2NtOXRZWFJwWTJsMGVWOTVQV1V1Y21WaFpGVnBiblF4TmlncExIUm9hWE11YkhWdGFXNWhibU5sVFdGNFBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXViSFZ0YVc1aGJtTmxUV2x1UFdVdWNtVmhaRlZwYm5Rek1pZ3BmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWMyMW9aQ0lzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVpWVd4aGJtTmxQV1V1Y21WaFpGVnBiblF4TmlncExHVXVjbVZoWkZWcGJuUXhOaWdwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljM05wZUNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1emRXSnpaV2R0Wlc1MGN6MWJYVHRtYjNJb2RtRnlJSFE5WlM1eVpXRmtWV2x1ZERNeUtDa3NhVDB3TzJrOGREdHBLeXNwZTNaaGNpQm1QWHQ5TzNSb2FYTXVjM1ZpYzJWbmJXVnVkSE11Y0hWemFDaG1LU3htTG5KaGJtZGxjejFiWFR0bWIzSW9kbUZ5SUhVOVpTNXlaV0ZrVldsdWRETXlLQ2tzZGowd08zWThkVHQyS3lzcGUzWmhjaUI1UFh0OU8yWXVjbUZ1WjJWekxuQjFjMmdvZVNrc2VTNXNaWFpsYkQxbExuSmxZV1JWYVc1ME9DZ3BMSGt1Y21GdVoyVmZjMmw2WlQxbExuSmxZV1JWYVc1ME1qUW9LWDE5ZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljM1JqYnlJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhRN2FXWW9kRDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1Ob2RXNXJYMjltWm5ObGRITTlXMTBzZEdocGN5NTJaWEp6YVc5dVBUMDlNQ2xtYjNJb2RtRnlJR2s5TUR0cFBIUTdhU3NyS1hSb2FYTXVZMmgxYm10ZmIyWm1jMlYwY3k1d2RYTm9LR1V1Y21WaFpGVnBiblF6TWlncEtYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OMFpIQWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQU2gwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpTa3ZNanQwYUdsekxuQnlhVzl5YVhSNVBWdGRPMlp2Y2loMllYSWdhVDB3TzJrOGREdHBLeXNwZEdocGN5NXdjbWx2Y21sMGVWdHBYVDFsTG5KbFlXUlZhVzUwTVRZb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OMGFHUWlLU3h2TG1OeVpXRjBaVVoxYkd4Q2IzaERkRzl5S0NKemRISnBJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbk4zYVhSamFGOW5jbTkxY0QxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxtRnNkR1Z5Ym1GMFpWOW5jbTkxY0QxbExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxuTjFZbDkwY21GamExOXBaRDFsTG5KbFlXUlZhVzUwTXpJb0tUdDJZWElnZEQwb2RHaHBjeTV6YVhwbExYUm9hWE11YUdSeVgzTnBlbVV0T0Nrdk5EdDBhR2x6TG1GMGRISnBZblYwWlY5c2FYTjBQVnRkTzJadmNpaDJZWElnYVQwd08yazhkRHRwS3lzcGRHaHBjeTVoZEhSeWFXSjFkR1ZmYkdsemRGdHBYVDFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OMGMyTWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBMR2s3YVdZb2REMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbVpwY25OMFgyTm9kVzVyUFZ0ZExIUm9hWE11YzJGdGNHeGxjMTl3WlhKZlkyaDFibXM5VzEwc2RHaHBjeTV6WVcxd2JHVmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZzlXMTBzZEdocGN5NTJaWEp6YVc5dVBUMDlNQ2xtYjNJb2FUMHdPMms4ZER0cEt5c3BkR2hwY3k1bWFYSnpkRjlqYUhWdWF5NXdkWE5vS0dVdWNtVmhaRlZwYm5Rek1pZ3BLU3gwYUdsekxuTmhiWEJzWlhOZmNHVnlYMk5vZFc1ckxuQjFjMmdvWlM1eVpXRmtWV2x1ZERNeUtDa3BMSFJvYVhNdWMyRnRjR3hsWDJSbGMyTnlhWEIwYVc5dVgybHVaR1Y0TG5CMWMyZ29aUzV5WldGa1ZXbHVkRE15S0NrcGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpYzNSelpDSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhU3htTEhVN1ptOXlLSFJvYVhNdVpXNTBjbWxsY3oxYlhTeG1QV1V1Y21WaFpGVnBiblF6TWlncExIUTlNVHQwUEQxbU8zUXJLeWxwWmlocFBXOHVjR0Z5YzJWUGJtVkNiM2dvWlN3aE1DeDBhR2x6TG5OcGVtVXRLR1V1WjJWMFVHOXphWFJwYjI0b0tTMTBhR2x6TG5OMFlYSjBLU2tzYVM1amIyUmxQVDA5Ynk1UFN5bHZXMmt1ZEhsd1pTc2lVMkZ0Y0d4bFJXNTBjbmtpWFQ4b2RUMXVaWGNnYjF0cExuUjVjR1VySWxOaGJYQnNaVVZ1ZEhKNUlsMG9hUzV6YVhwbEtTeDFMbWhrY2w5emFYcGxQV2t1YUdSeVgzTnBlbVVzZFM1emRHRnlkRDFwTG5OMFlYSjBLVG9vY2k1M1lYSnVLQ0pDYjNoUVlYSnpaWElpTENKVmJtdHViM2R1SUhOaGJYQnNaU0JsYm5SeWVTQjBlWEJsT2lBaUsya3VkSGx3WlNrc2RUMXVaWGNnYnk1VFlXMXdiR1ZGYm5SeWVTaHBMblI1Y0dVc2FTNXphWHBsTEdrdWFHUnlYM05wZW1Vc2FTNXpkR0Z5ZENrcExIVXVkM0pwZEdVOVBUMXZMbE5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1M2NtbDBaU1ltS0hJdWFXNW1ieWdpUW05NFVHRnljMlZ5SWl3aVUyRnRjR3hsUlc1MGNua2dJaXQxTG5SNWNHVXJJaUJpYjNnZ2QzSnBkR2x1WnlCdWIzUWdlV1YwSUdsdGNHeGxiV1Z1ZEdWa0xDQnJaV1Z3YVc1bklIVnVjR0Z5YzJWa0lHUmhkR0VnYVc0Z2JXVnRiM0o1SUdadmNpQnNZWFJsY2lCM2NtbDBaU0lwTEhVdWNHRnljMlZFWVhSaFFXNWtVbVYzYVc1a0tHVXBLU3gxTG5CaGNuTmxLR1VwTEhSb2FYTXVaVzUwY21sbGN5NXdkWE5vS0hVcE8yVnNjMlVnY21WMGRYSnVmU2tzYnk1amNtVmhkR1ZHZFd4c1FtOTRRM1J2Y2lnaWMzUnpaeUlzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTVuY205MWNHbHVaMTkwZVhCbFBXVXVjbVZoWkZWcGJuUXpNaWdwTzNaaGNpQjBQV1V1Y21WaFpGVnBiblF4TmlncE8zUm9hWE11WjNKdmRYQmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZzlXMTA3Wm05eUtIWmhjaUJwUFRBN2FUeDBPMmtyS3lsMGFHbHpMbWR5YjNWd1gyUmxjMk55YVhCMGFXOXVYMmx1WkdWNFcybGRQV1V1Y21WaFpGVnBiblF6TWlncGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpYzNSemFDSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhVHRwWmloMFBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVjMmhoWkc5M1pXUmZjMkZ0Y0d4bFgyNTFiV0psY25NOVcxMHNkR2hwY3k1emVXNWpYM05oYlhCc1pWOXVkVzFpWlhKelBWdGRMSFJvYVhNdWRtVnljMmx2YmowOVBUQXBabTl5S0drOU1EdHBQSFE3YVNzcktYUm9hWE11YzJoaFpHOTNaV1JmYzJGdGNHeGxYMjUxYldKbGNuTXVjSFZ6YUNobExuSmxZV1JWYVc1ME16SW9LU2tzZEdocGN5NXplVzVqWDNOaGJYQnNaVjl1ZFcxaVpYSnpMbkIxYzJnb1pTNXlaV0ZrVldsdWRETXlLQ2twZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljM1J6Y3lJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhRc2FUdHBaaWhwUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWRtVnljMmx2YmowOVBUQXBabTl5S0hSb2FYTXVjMkZ0Y0d4bFgyNTFiV0psY25NOVcxMHNkRDB3TzNROGFUdDBLeXNwZEdocGN5NXpZVzF3YkdWZmJuVnRZbVZ5Y3k1d2RYTm9LR1V1Y21WaFpGVnBiblF6TWlncEtYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5OMGMzb2lMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBPMmxtS0hSb2FYTXVjMkZ0Y0d4bFgzTnBlbVZ6UFZ0ZExIUm9hWE11ZG1WeWMybHZiajA5UFRBcFptOXlLSFJvYVhNdWMyRnRjR3hsWDNOcGVtVTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTV6WVcxd2JHVmZZMjkxYm5ROVpTNXlaV0ZrVldsdWRETXlLQ2tzZEQwd08zUThkR2hwY3k1ellXMXdiR1ZmWTI5MWJuUTdkQ3NyS1hSb2FYTXVjMkZ0Y0d4bFgzTnBlbVU5UFQwd1AzUm9hWE11YzJGdGNHeGxYM05wZW1WekxuQjFjMmdvWlM1eVpXRmtWV2x1ZERNeUtDa3BPblJvYVhNdWMyRnRjR3hsWDNOcGVtVnpXM1JkUFhSb2FYTXVjMkZ0Y0d4bFgzTnBlbVY5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSnpkSFJ6SWl4bWRXNWpkR2x2YmlobEtYdDJZWElnZEN4cExHWTdhV1lvZEQxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxuTmhiWEJzWlY5amIzVnVkSE05VzEwc2RHaHBjeTV6WVcxd2JHVmZaR1ZzZEdGelBWdGRMSFJvYVhNdWRtVnljMmx2YmowOVBUQXBabTl5S0drOU1EdHBQSFE3YVNzcktYUm9hWE11YzJGdGNHeGxYMk52ZFc1MGN5NXdkWE5vS0dVdWNtVmhaRlZwYm5Rek1pZ3BLU3htUFdVdWNtVmhaRWx1ZERNeUtDa3Naand3SmlZb2NpNTNZWEp1S0NKQ2IzaFFZWEp6WlhJaUxDSkdhV3hsSUhWelpYTWdibVZuWVhScGRtVWdjM1IwY3lCellXMXdiR1VnWkdWc2RHRXNJSFZ6YVc1bklIWmhiSFZsSURFZ2FXNXpkR1ZoWkN3Z2MzbHVZeUJ0WVhrZ1ltVWdiRzl6ZENFaUtTeG1QVEVwTEhSb2FYTXVjMkZ0Y0d4bFgyUmxiSFJoY3k1d2RYTm9LR1lwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2ljM1IyYVNJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhROVpTNXlaV0ZrVldsdWRETXlLQ2s3ZEdocGN5NXphVzVuYkdWZmRtbGxkMTloYkd4dmQyVmtQWFFtTXl4MGFHbHpMbk4wWlhKbGIxOXpZMmhsYldVOVpTNXlaV0ZrVldsdWRETXlLQ2s3ZG1GeUlHazlaUzV5WldGa1ZXbHVkRE15S0NrN2RHaHBjeTV6ZEdWeVpXOWZhVzVrYVdOaGRHbHZibDkwZVhCbFBXVXVjbVZoWkZOMGNtbHVaeWhwS1R0MllYSWdaaXgxTzJadmNpaDBhR2x6TG1KdmVHVnpQVnRkTzJVdVoyVjBVRzl6YVhScGIyNG9LVHgwYUdsekxuTjBZWEowSzNSb2FYTXVjMmw2WlRzcGFXWW9aajF2TG5CaGNuTmxUMjVsUW05NEtHVXNJVEVzZEdocGN5NXphWHBsTFNobExtZGxkRkJ2YzJsMGFXOXVLQ2t0ZEdocGN5NXpkR0Z5ZENrcExHWXVZMjlrWlQwOVBXOHVUMHNwZFQxbUxtSnZlQ3gwYUdsekxtSnZlR1Z6TG5CMWMyZ29kU2tzZEdocGMxdDFMblI1Y0dWZFBYVTdaV3h6WlNCeVpYUjFjbTU5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW5OMGVYQWlMR1oxYm1OMGFXOXVLR1VwZTI4dVpuUjVjRUp2ZUM1d2NtOTBiM1I1Y0dVdWNHRnljMlV1WTJGc2JDaDBhR2x6TEdVcGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpYzNSNk1pSXNablZ1WTNScGIyNG9aU2w3ZG1GeUlIUXNhVHRwWmloMGFHbHpMbk5oYlhCc1pWOXphWHBsY3oxYlhTeDBhR2x6TG5abGNuTnBiMjQ5UFQwd0tXbG1LSFJvYVhNdWNtVnpaWEoyWldROVpTNXlaV0ZrVldsdWRESTBLQ2tzZEdocGN5NW1hV1ZzWkY5emFYcGxQV1V1Y21WaFpGVnBiblE0S0Nrc2FUMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbVpwWld4a1gzTnBlbVU5UFQwMEtXWnZjaWgwUFRBN2REeHBPM1FyUFRJcGUzWmhjaUJtUFdVdWNtVmhaRlZwYm5RNEtDazdkR2hwY3k1ellXMXdiR1ZmYzJsNlpYTmJkRjA5Wmo0K05DWXhOU3gwYUdsekxuTmhiWEJzWlY5emFYcGxjMXQwS3pGZFBXWW1NVFY5Wld4elpTQnBaaWgwYUdsekxtWnBaV3hrWDNOcGVtVTlQVDA0S1dadmNpaDBQVEE3ZER4cE8zUXJLeWwwYUdsekxuTmhiWEJzWlY5emFYcGxjMXQwWFQxbExuSmxZV1JWYVc1ME9DZ3BPMlZzYzJVZ2FXWW9kR2hwY3k1bWFXVnNaRjl6YVhwbFBUMDlNVFlwWm05eUtIUTlNRHQwUEdrN2RDc3JLWFJvYVhNdWMyRnRjR3hsWDNOcGVtVnpXM1JkUFdVdWNtVmhaRlZwYm5ReE5pZ3BPMlZzYzJVZ2NpNWxjbkp2Y2lnaVFtOTRVR0Z5YzJWeUlpd2lSWEp5YjNJZ2FXNGdiR1Z1WjNSb0lHWnBaV3hrSUdsdUlITjBlaklnWW05NElpbDlLU3h2TG1OeVpXRjBaVVoxYkd4Q2IzaERkRzl5S0NKemRXSnpJaXhtZFc1amRHbHZiaWhsS1h0MllYSWdkQ3hwTEdZc2RUdG1iM0lvWmoxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxtVnVkSEpwWlhNOVcxMHNkRDB3TzNROFpqdDBLeXNwZTNaaGNpQjJQWHQ5TzJsbUtIUm9hWE11Wlc1MGNtbGxjMXQwWFQxMkxIWXVjMkZ0Y0d4bFgyUmxiSFJoUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFl1YzNWaWMyRnRjR3hsY3oxYlhTeDFQV1V1Y21WaFpGVnBiblF4TmlncExIVStNQ2xtYjNJb2FUMHdPMms4ZFR0cEt5c3BlM1poY2lCNVBYdDlPM1l1YzNWaWMyRnRjR3hsY3k1d2RYTm9LSGtwTEhSb2FYTXVkbVZ5YzJsdmJqMDlNVDk1TG5OcGVtVTlaUzV5WldGa1ZXbHVkRE15S0NrNmVTNXphWHBsUFdVdWNtVmhaRlZwYm5ReE5pZ3BMSGt1Y0hKcGIzSnBkSGs5WlM1eVpXRmtWV2x1ZERnb0tTeDVMbVJwYzJOaGNtUmhZbXhsUFdVdWNtVmhaRlZwYm5RNEtDa3NlUzVqYjJSbFkxOXpjR1ZqYVdacFkxOXdZWEpoYldWMFpYSnpQV1V1Y21WaFpGVnBiblF6TWlncGZYMTlLU3h2TG1OeVpXRjBaVVoxYkd4Q2IzaERkRzl5S0NKMFpXNWpJaXhtZFc1amRHbHZiaWhsS1h0cFppaGxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVkbVZ5YzJsdmJqMDlQVEFwWlM1eVpXRmtWV2x1ZERnb0tUdGxiSE5sZTNaaGNpQjBQV1V1Y21WaFpGVnBiblE0S0NrN2RHaHBjeTVrWldaaGRXeDBYMk55ZVhCMFgySjVkR1ZmWW14dlkyczlkRDQrTkNZeE5TeDBhR2x6TG1SbFptRjFiSFJmYzJ0cGNGOWllWFJsWDJKc2IyTnJQWFFtTVRWOWRHaHBjeTVrWldaaGRXeDBYMmx6VUhKdmRHVmpkR1ZrUFdVdWNtVmhaRlZwYm5RNEtDa3NkR2hwY3k1a1pXWmhkV3gwWDFCbGNsOVRZVzF3YkdWZlNWWmZVMmw2WlQxbExuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdVpHVm1ZWFZzZEY5TFNVUTlieTV3WVhKelpVaGxlREUyS0dVcExIUm9hWE11WkdWbVlYVnNkRjlwYzFCeWIzUmxZM1JsWkQwOVBURW1KblJvYVhNdVpHVm1ZWFZzZEY5UVpYSmZVMkZ0Y0d4bFgwbFdYMU5wZW1VOVBUMHdKaVlvZEdocGN5NWtaV1poZFd4MFgyTnZibk4wWVc1MFgwbFdYM05wZW1VOVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxtUmxabUYxYkhSZlkyOXVjM1JoYm5SZlNWWTlaUzV5WldGa1ZXbHVkRGhCY25KaGVTaDBhR2x6TG1SbFptRjFiSFJmWTI5dWMzUmhiblJmU1ZaZmMybDZaU2twZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lkR1prZENJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1MlpYSnphVzl1UFQweFAzUm9hWE11WW1GelpVMWxaR2xoUkdWamIyUmxWR2x0WlQxbExuSmxZV1JWYVc1ME5qUW9LVHAwYUdsekxtSmhjMlZOWldScFlVUmxZMjlrWlZScGJXVTlaUzV5WldGa1ZXbHVkRE15S0NsOUtTeHZMbU55WldGMFpVWjFiR3hDYjNoRGRHOXlLQ0owWm1oa0lpeG1kVzVqZEdsdmJpaGxLWHQyWVhJZ2REMHdPM1JvYVhNdWRISmhZMnRmYVdROVpTNXlaV0ZrVldsdWRETXlLQ2tzZEdocGN5NXphWHBsTFhSb2FYTXVhR1J5WDNOcGVtVStkQ1ltZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOUNRVk5GWDBSQlZFRmZUMFpHVTBWVVB5aDBhR2x6TG1KaGMyVmZaR0YwWVY5dlptWnpaWFE5WlM1eVpXRmtWV2x1ZERZMEtDa3NkQ3M5T0NrNmRHaHBjeTVpWVhObFgyUmhkR0ZmYjJabWMyVjBQVEFzZEdocGN5NXphWHBsTFhSb2FYTXVhR1J5WDNOcGVtVStkQ1ltZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJFVlRRejhvZEdocGN5NWtaV1poZFd4MFgzTmhiWEJzWlY5a1pYTmpjbWx3ZEdsdmJsOXBibVJsZUQxbExuSmxZV1JWYVc1ME16SW9LU3gwS3owMEtUcDBhR2x6TG1SbFptRjFiSFJmYzJGdGNHeGxYMlJsYzJOeWFYQjBhVzl1WDJsdVpHVjRQVEFzZEdocGN5NXphWHBsTFhSb2FYTXVhR1J5WDNOcGVtVStkQ1ltZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJGVlNQeWgwYUdsekxtUmxabUYxYkhSZmMyRnRjR3hsWDJSMWNtRjBhVzl1UFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFFyUFRRcE9uUm9hWE11WkdWbVlYVnNkRjl6WVcxd2JHVmZaSFZ5WVhScGIyNDlNQ3gwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpUNTBKaVowYUdsekxtWnNZV2R6Sm04dVZFWklSRjlHVEVGSFgxTkJUVkJNUlY5VFNWcEZQeWgwYUdsekxtUmxabUYxYkhSZmMyRnRjR3hsWDNOcGVtVTlaUzV5WldGa1ZXbHVkRE15S0Nrc2RDczlOQ2s2ZEdocGN5NWtaV1poZFd4MFgzTmhiWEJzWlY5emFYcGxQVEFzZEdocGN5NXphWHBsTFhSb2FYTXVhR1J5WDNOcGVtVStkQ1ltZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJreEJSMU0vS0hSb2FYTXVaR1ZtWVhWc2RGOXpZVzF3YkdWZlpteGhaM005WlM1eVpXRmtWV2x1ZERNeUtDa3NkQ3M5TkNrNmRHaHBjeTVrWldaaGRXeDBYM05oYlhCc1pWOW1iR0ZuY3owd2ZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpZEdaeVlTSXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NTBjbUZqYTE5SlJEMWxMbkpsWVdSVmFXNTBNeklvS1N4bExuSmxZV1JWYVc1ME1qUW9LVHQyWVhJZ2REMWxMbkpsWVdSVmFXNTBPQ2dwTzNSb2FYTXViR1Z1WjNSb1gzTnBlbVZmYjJaZmRISmhabDl1ZFcwOWRENCtOQ1l6TEhSb2FYTXViR1Z1WjNSb1gzTnBlbVZmYjJaZmRISjFibDl1ZFcwOWRENCtNaVl6TEhSb2FYTXViR1Z1WjNSb1gzTnBlbVZmYjJaZmMyRnRjR3hsWDI1MWJUMTBKak1zZEdocGN5NWxiblJ5YVdWelBWdGRPMlp2Y2loMllYSWdhVDFsTG5KbFlXUlZhVzUwTXpJb0tTeG1QVEE3Wmp4cE8yWXJLeWwwYUdsekxuWmxjbk5wYjI0OVBUMHhQeWgwYUdsekxuUnBiV1U5WlM1eVpXRmtWV2x1ZERZMEtDa3NkR2hwY3k1dGIyOW1YMjltWm5ObGREMWxMbkpsWVdSVmFXNTBOalFvS1NrNktIUm9hWE11ZEdsdFpUMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbTF2YjJaZmIyWm1jMlYwUFdVdWNtVmhaRlZwYm5Rek1pZ3BLU3gwYUdsekxuUnlZV1pmYm5WdFltVnlQV1ZiSW5KbFlXUlZhVzUwSWlzNEtpaDBhR2x6TG14bGJtZDBhRjl6YVhwbFgyOW1YM1J5WVdaZmJuVnRLekVwWFNncExIUm9hWE11ZEhKMWJsOXVkVzFpWlhJOVpWc2ljbVZoWkZWcGJuUWlLemdxS0hSb2FYTXViR1Z1WjNSb1gzTnBlbVZmYjJaZmRISjFibDl1ZFcwck1TbGRLQ2tzZEdocGN5NXpZVzF3YkdWZmJuVnRZbVZ5UFdWYkluSmxZV1JWYVc1MElpczRLaWgwYUdsekxteGxibWQwYUY5emFYcGxYMjltWDNOaGJYQnNaVjl1ZFcwck1TbGRLQ2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSjBhMmhrSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5UFRFL0tIUm9hWE11WTNKbFlYUnBiMjVmZEdsdFpUMWxMbkpsWVdSVmFXNTBOalFvS1N4MGFHbHpMbTF2WkdsbWFXTmhkR2x2Ymw5MGFXMWxQV1V1Y21WaFpGVnBiblEyTkNncExIUm9hWE11ZEhKaFkydGZhV1E5WlM1eVpXRmtWV2x1ZERNeUtDa3NaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVrZFhKaGRHbHZiajFsTG5KbFlXUlZhVzUwTmpRb0tTazZLSFJvYVhNdVkzSmxZWFJwYjI1ZmRHbHRaVDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG0xdlpHbG1hV05oZEdsdmJsOTBhVzFsUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdWRISmhZMnRmYVdROVpTNXlaV0ZrVldsdWRETXlLQ2tzWlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1a2RYSmhkR2x2YmoxbExuSmxZV1JWYVc1ME16SW9LU2tzWlM1eVpXRmtWV2x1ZERNeVFYSnlZWGtvTWlrc2RHaHBjeTVzWVhsbGNqMWxMbkpsWVdSSmJuUXhOaWdwTEhSb2FYTXVZV3gwWlhKdVlYUmxYMmR5YjNWd1BXVXVjbVZoWkVsdWRERTJLQ2tzZEdocGN5NTJiMngxYldVOVpTNXlaV0ZrU1c1ME1UWW9LVDQrT0N4bExuSmxZV1JWYVc1ME1UWW9LU3gwYUdsekxtMWhkSEpwZUQxbExuSmxZV1JKYm5Rek1rRnljbUY1S0RrcExIUm9hWE11ZDJsa2RHZzlaUzV5WldGa1ZXbHVkRE15S0Nrc2RHaHBjeTVvWldsbmFIUTlaUzV5WldGa1ZXbHVkRE15S0NsOUtTeHZMbU55WldGMFpVSnZlRU4wYjNJb0luUnRZWGdpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11ZEdsdFpUMWxMbkpsWVdSVmFXNTBNeklvS1gwcExHOHVZM0psWVhSbFFtOTRRM1J2Y2lnaWRHMXBiaUlzWm5WdVkzUnBiMjRvWlNsN2RHaHBjeTUwYVcxbFBXVXVjbVZoWkZWcGJuUXpNaWdwZlNrc2J5NWpjbVZoZEdWQ2IzaERkRzl5S0NKMGIzUnNJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMbUo1ZEdWemMyVnVkRDFsTG5KbFlXUlZhVzUwTXpJb0tYMHBMRzh1WTNKbFlYUmxRbTk0UTNSdmNpZ2lkSEJoZVNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1aWVYUmxjM05sYm5ROVpTNXlaV0ZrVldsdWRETXlLQ2w5S1N4dkxtTnlaV0YwWlVKdmVFTjBiM0lvSW5Sd2VXd2lMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVZbmwwWlhOelpXNTBQV1V1Y21WaFpGVnBiblEyTkNncGZTa3NieTVVY21GamEwZHliM1Z3Vkhsd1pVSnZlQzV3Y205MGIzUjVjR1V1Y0dGeWMyVTlablZ1WTNScGIyNG9aU2w3ZEdocGN5NXdZWEp6WlVaMWJHeElaV0ZrWlhJb1pTa3NkR2hwY3k1MGNtRmphMTluY205MWNGOXBaRDFsTG5KbFlXUlZhVzUwTXpJb0tYMHNieTVqY21WaGRHVlVjbUZqYTBkeWIzVndRM1J2Y2lnaWJYTnlZeUlwTEc4dVZISmhZMnRTWldabGNtVnVZMlZVZVhCbFFtOTRQV1oxYm1OMGFXOXVLR1VzZEN4cExHWXBlMjh1UW05NExtTmhiR3dvZEdocGN5eGxMSFFwTEhSb2FYTXVhR1J5WDNOcGVtVTlhU3gwYUdsekxuTjBZWEowUFdaOUxHOHVWSEpoWTJ0U1pXWmxjbVZ1WTJWVWVYQmxRbTk0TG5CeWIzUnZkSGx3WlQxdVpYY2dieTVDYjNnc2J5NVVjbUZqYTFKbFptVnlaVzVqWlZSNWNHVkNiM2d1Y0hKdmRHOTBlWEJsTG5CaGNuTmxQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVkSEpoWTJ0ZmFXUnpQV1V1Y21WaFpGVnBiblF6TWtGeWNtRjVLQ2gwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpTa3ZOQ2w5TEc4dWRISmxaa0p2ZUM1d2NtOTBiM1I1Y0dVdWNHRnljMlU5Wm5WdVkzUnBiMjRvWlNsN1ptOXlLSFpoY2lCMExHazdaUzVuWlhSUWIzTnBkR2x2YmlncFBIUm9hWE11YzNSaGNuUXJkR2hwY3k1emFYcGxPeWxwWmloMFBXOHVjR0Z5YzJWUGJtVkNiM2dvWlN3aE1DeDBhR2x6TG5OcGVtVXRLR1V1WjJWMFVHOXphWFJwYjI0b0tTMTBhR2x6TG5OMFlYSjBLU2tzZEM1amIyUmxQVDA5Ynk1UFN5bHBQVzVsZHlCdkxsUnlZV05yVW1WbVpYSmxibU5sVkhsd1pVSnZlQ2gwTG5SNWNHVXNkQzV6YVhwbExIUXVhR1J5WDNOcGVtVXNkQzV6ZEdGeWRDa3NhUzUzY21sMFpUMDlQVzh1UW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlNZbWFTNTBlWEJsSVQwOUltMWtZWFFpSmlZb2NpNXBibVp2S0NKQ2IzaFFZWEp6WlhJaUxDSlVjbUZqYTFKbFptVnlaVzVqWlNBaUsya3VkSGx3WlNzaUlHSnZlQ0IzY21sMGFXNW5JRzV2ZENCNVpYUWdhVzF3YkdWdFpXNTBaV1FzSUd0bFpYQnBibWNnZFc1d1lYSnpaV1FnWkdGMFlTQnBiaUJ0WlcxdmNua2dabTl5SUd4aGRHVnlJSGR5YVhSbElpa3NhUzV3WVhKelpVUmhkR0ZCYm1SU1pYZHBibVFvWlNrcExHa3VjR0Z5YzJVb1pTa3NkR2hwY3k1aWIzaGxjeTV3ZFhOb0tHa3BPMlZzYzJVZ2NtVjBkWEp1ZlN4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSjBjbVZ3SWl4bWRXNWpkR2x2YmlobEtYdG1iM0lvZEdocGN5NTBjbUZqYTE5SlJEMWxMbkpsWVdSVmFXNTBNeklvS1N4MGFHbHpMbUp2ZUdWelBWdGRPMlV1WjJWMFVHOXphWFJwYjI0b0tUeDBhR2x6TG5OMFlYSjBLM1JvYVhNdWMybDZaVHNwYVdZb2NtVjBQVzh1Y0dGeWMyVlBibVZDYjNnb1pTd2hNU3gwYUdsekxuTnBlbVV0S0dVdVoyVjBVRzl6YVhScGIyNG9LUzEwYUdsekxuTjBZWEowS1Nrc2NtVjBMbU52WkdVOVBUMXZMazlMS1dKdmVEMXlaWFF1WW05NExIUm9hWE11WW05NFpYTXVjSFZ6YUNoaWIzZ3BPMlZzYzJVZ2NtVjBkWEp1ZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lkSEpsZUNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1MGNtRmphMTlwWkQxbExuSmxZV1JWYVc1ME16SW9LU3gwYUdsekxtUmxabUYxYkhSZmMyRnRjR3hsWDJSbGMyTnlhWEIwYVc5dVgybHVaR1Y0UFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFJvYVhNdVpHVm1ZWFZzZEY5ellXMXdiR1ZmWkhWeVlYUnBiMjQ5WlM1eVpXRmtWV2x1ZERNeUtDa3NkR2hwY3k1a1pXWmhkV3gwWDNOaGJYQnNaVjl6YVhwbFBXVXVjbVZoWkZWcGJuUXpNaWdwTEhSb2FYTXVaR1ZtWVhWc2RGOXpZVzF3YkdWZlpteGhaM005WlM1eVpXRmtWV2x1ZERNeUtDbDlLU3h2TG1OeVpXRjBaVUp2ZUVOMGIzSW9JblJ5Y0hraUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdVlubDBaWE56Wlc1MFBXVXVjbVZoWkZWcGJuUTJOQ2dwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lkSEoxYmlJc1puVnVZM1JwYjI0b1pTbDdkbUZ5SUhROU1EdHBaaWgwYUdsekxuTmhiWEJzWlY5amIzVnVkRDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBLejAwTEhSb2FYTXVjMmw2WlMxMGFHbHpMbWhrY2w5emFYcGxQblFtSm5Sb2FYTXVabXhoWjNNbWJ5NVVVbFZPWDBaTVFVZFRYMFJCVkVGZlQwWkdVMFZVUHloMGFHbHpMbVJoZEdGZmIyWm1jMlYwUFdVdWNtVmhaRWx1ZERNeUtDa3NkQ3M5TkNrNmRHaHBjeTVrWVhSaFgyOW1abk5sZEQwd0xIUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsUG5RbUpuUm9hWE11Wm14aFozTW1ieTVVVWxWT1gwWk1RVWRUWDBaSlVsTlVYMFpNUVVjL0tIUm9hWE11Wm1seWMzUmZjMkZ0Y0d4bFgyWnNZV2R6UFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFFyUFRRcE9uUm9hWE11Wm1seWMzUmZjMkZ0Y0d4bFgyWnNZV2R6UFRBc2RHaHBjeTV6WVcxd2JHVmZaSFZ5WVhScGIyNDlXMTBzZEdocGN5NXpZVzF3YkdWZmMybDZaVDFiWFN4MGFHbHpMbk5oYlhCc1pWOW1iR0ZuY3oxYlhTeDBhR2x6TG5OaGJYQnNaVjlqYjIxd2IzTnBkR2x2Ymw5MGFXMWxYMjltWm5ObGREMWJYU3gwYUdsekxuTnBlbVV0ZEdocGN5NW9aSEpmYzJsNlpUNTBLV1p2Y2loMllYSWdhVDB3TzJrOGRHaHBjeTV6WVcxd2JHVmZZMjkxYm5RN2FTc3JLWFJvYVhNdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgwUlZVa0ZVU1U5T0ppWW9kR2hwY3k1ellXMXdiR1ZmWkhWeVlYUnBiMjViYVYwOVpTNXlaV0ZrVldsdWRETXlLQ2twTEhSb2FYTXVabXhoWjNNbWJ5NVVVbFZPWDBaTVFVZFRYMU5KV2tVbUppaDBhR2x6TG5OaGJYQnNaVjl6YVhwbFcybGRQV1V1Y21WaFpGVnBiblF6TWlncEtTeDBhR2x6TG1ac1lXZHpKbTh1VkZKVlRsOUdURUZIVTE5R1RFRkhVeVltS0hSb2FYTXVjMkZ0Y0d4bFgyWnNZV2R6VzJsZFBXVXVjbVZoWkZWcGJuUXpNaWdwS1N4MGFHbHpMbVpzWVdkekptOHVWRkpWVGw5R1RFRkhVMTlEVkZOZlQwWkdVMFZVSmlZb2RHaHBjeTUyWlhKemFXOXVQVDA5TUQ5MGFHbHpMbk5oYlhCc1pWOWpiMjF3YjNOcGRHbHZibDkwYVcxbFgyOW1abk5sZEZ0cFhUMWxMbkpsWVdSVmFXNTBNeklvS1RwMGFHbHpMbk5oYlhCc1pWOWpiMjF3YjNOcGRHbHZibDkwYVcxbFgyOW1abk5sZEZ0cFhUMWxMbkpsWVdSSmJuUXpNaWdwS1gwcExHOHVZM0psWVhSbFJuVnNiRUp2ZUVOMGIzSW9JblJ6Wld3aUxHWjFibU4wYVc5dUtHVXBlM1JvYVhNdWMzZHBkR05vWDJkeWIzVndQV1V1Y21WaFpGVnBiblF6TWlncE8zWmhjaUIwUFNoMGFHbHpMbk5wZW1VdGRHaHBjeTVvWkhKZmMybDZaUzAwS1M4ME8zUm9hWE11WVhSMGNtbGlkWFJsWDJ4cGMzUTlXMTA3Wm05eUtIWmhjaUJwUFRBN2FUeDBPMmtyS3lsMGFHbHpMbUYwZEhKcFluVjBaVjlzYVhOMFcybGRQV1V1Y21WaFpGVnBiblF6TWlncGZTa3NieTVqY21WaGRHVkdkV3hzUW05NFEzUnZjaWdpZEhoMFF5SXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NWpiMjVtYVdjOVpTNXlaV0ZrUTFOMGNtbHVaeWdwZlNrc2J5NWpjbVZoZEdWR2RXeHNRbTk0UTNSdmNpZ2lkWEpzSUNJc1puVnVZM1JwYjI0b1pTbDdkR2hwY3k1bWJHRm5jeUU5UFRFbUppaDBhR2x6TG14dlkyRjBhVzl1UFdVdWNtVmhaRU5UZEhKcGJtY29LU2w5S1N4dkxtTnlaV0YwWlVaMWJHeENiM2hEZEc5eUtDSjFjbTRnSWl4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG01aGJXVTlaUzV5WldGa1ExTjBjbWx1WnlncExIUm9hWE11YzJsNlpTMTBhR2x6TG1oa2NsOXphWHBsTFhSb2FYTXVibUZ0WlM1c1pXNW5kR2d0TVQ0d0ppWW9kR2hwY3k1c2IyTmhkR2x2YmoxbExuSmxZV1JEVTNSeWFXNW5LQ2twZlNrc2J5NWpjbVZoZEdWVlZVbEVRbTk0S0NKaE5XUTBNR0l6TUdVNE1UUXhNV1JrWW1FeVpqQTRNREF5TURCak9XRTJOaUlzSVRBc0lURXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NU1hWFpsVTJWeWRtVnlUV0Z1YVdabGMzUTlaUzV5WldGa1UzUnlhVzVuS0hSb2FYTXVjMmw2WlMxMGFHbHpMbWhrY2w5emFYcGxLUzV5WlhCc1lXTmxLQzhtTDJjc0lpWmhiWEE3SWlrdWNtVndiR0ZqWlNndlBDOW5MQ0ltYkhRN0lpa3VjbVZ3YkdGalpTZ3ZQaTluTENJbVozUTdJaWt1Y21Wd2JHRmpaU2d2SWk5bkxDSW1jWFZ2ZERzaUtTNXlaWEJzWVdObEtDOG5MMmNzSWlZak1ETTVPeUlwZlNrc2J5NWpjbVZoZEdWVlZVbEVRbTk0S0NKa01EaGhOR1l4T0RFd1pqTTBZVGd5WWpaak9ETXlaRGhoWW1FeE9ETmtNeUlzSVRBc0lURXNablZ1WTNScGIyNG9aU2w3ZEdocGN5NXplWE4wWlcxZmFXUTlieTV3WVhKelpVaGxlREUyS0dVcE8zWmhjaUIwUFdVdWNtVmhaRlZwYm5Rek1pZ3BPM1ErTUNZbUtIUm9hWE11WkdGMFlUMWxMbkpsWVdSVmFXNTBPRUZ5Y21GNUtIUXBLWDBwTEc4dVkzSmxZWFJsVlZWSlJFSnZlQ2dpWVRJek9UUm1OVEkxWVRsaU5HWXhOR0V5TkRRMll6UXlOMk0yTkRoa1pqUWlMQ0V3TENFeEtTeHZMbU55WldGMFpWVlZTVVJDYjNnb0lqZzVOelJrWW1ObE4ySmxOelJqTlRFNE5HWTVOekUwT0dZNU9EZ3lOVFUwSWl3aE1Dd2hNU3htZFc1amRHbHZiaWhsS1h0MGFHbHpMbVJsWm1GMWJIUmZRV3huYjNKcGRHaHRTVVE5WlM1eVpXRmtWV2x1ZERJMEtDa3NkR2hwY3k1a1pXWmhkV3gwWDBsV1gzTnBlbVU5WlM1eVpXRmtWV2x1ZERnb0tTeDBhR2x6TG1SbFptRjFiSFJmUzBsRVBXOHVjR0Z5YzJWSVpYZ3hOaWhsS1gwcExHOHVZM0psWVhSbFZWVkpSRUp2ZUNnaVpEUTRNRGRsWmpKallUTTVORFk1TlRobE5UUXlObU5pT1dVME5tRTNPV1lpTENFd0xDRXhMR1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVabkpoWjIxbGJuUmZZMjkxYm5ROVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxtVnVkSEpwWlhNOVcxMDdabTl5S0haaGNpQjBQVEE3ZER4MGFHbHpMbVp5WVdkdFpXNTBYMk52ZFc1ME8zUXJLeWw3ZG1GeUlHazllMzBzWmowd0xIVTlNRHQwYUdsekxuWmxjbk5wYjI0OVBUMHhQeWhtUFdVdWNtVmhaRlZwYm5RMk5DZ3BMSFU5WlM1eVpXRmtWV2x1ZERZMEtDa3BPaWhtUFdVdWNtVmhaRlZwYm5Rek1pZ3BMSFU5WlM1eVpXRmtWV2x1ZERNeUtDa3BMR2t1WVdKemIyeDFkR1ZmZEdsdFpUMW1MR2t1WVdKemIyeDFkR1ZmWkhWeVlYUnBiMjQ5ZFN4MGFHbHpMbVZ1ZEhKcFpYTXVjSFZ6YUNocEtYMTlLU3h2TG1OeVpXRjBaVlZWU1VSQ2IzZ29JalprTVdRNVlqQTFOREprTlRRMFpUWTRNR1V5TVRReFpHRm1aamMxTjJJeUlpd2hNQ3doTVN4bWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5UFQweFB5aDBhR2x6TG1GaWMyOXNkWFJsWDNScGJXVTlaUzV5WldGa1ZXbHVkRFkwS0Nrc2RHaHBjeTVrZFhKaGRHbHZiajFsTG5KbFlXUlZhVzUwTmpRb0tTazZLSFJvYVhNdVlXSnpiMngxZEdWZmRHbHRaVDFsTG5KbFlXUlZhVzUwTXpJb0tTeDBhR2x6TG1SMWNtRjBhVzl1UFdVdWNtVmhaRlZwYm5Rek1pZ3BLWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0luWnRhR1FpTEdaMWJtTjBhVzl1S0dVcGUzUm9hWE11WjNKaGNHaHBZM050YjJSbFBXVXVjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXViM0JqYjJ4dmNqMWxMbkpsWVdSVmFXNTBNVFpCY25KaGVTZ3pLWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0luWndZME1pTEdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwTzNSb2FYTXVkbVZ5YzJsdmJqMDlQVEUvS0hSb2FYTXVjSEp2Wm1sc1pUMWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXViR1YyWld3OVpTNXlaV0ZrVldsdWREZ29LU3gwUFdVdWNtVmhaRlZwYm5RNEtDa3NkR2hwY3k1aWFYUkVaWEIwYUQxMFBqNDBMSFJvYVhNdVkyaHliMjFoVTNWaWMyRnRjR3hwYm1jOWRENCtNU1kzTEhSb2FYTXVkbWxrWlc5R2RXeHNVbUZ1WjJWR2JHRm5QWFFtTVN4MGFHbHpMbU52Ykc5MWNsQnlhVzFoY21sbGN6MWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVkSEpoYm5ObVpYSkRhR0Z5WVdOMFpYSnBjM1JwWTNNOVpTNXlaV0ZrVldsdWREZ29LU3gwYUdsekxtMWhkSEpwZUVOdlpXWm1hV05wWlc1MGN6MWxMbkpsWVdSVmFXNTBPQ2dwTEhSb2FYTXVZMjlrWldOSmJuUnBZV3hwZW1GMGFXOXVSR0YwWVZOcGVtVTlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTVqYjJSbFkwbHVkR2xoYkdsNllYUnBiMjVFWVhSaFBXVXVjbVZoWkZWcGJuUTRRWEp5WVhrb2RHaHBjeTVqYjJSbFkwbHVkR2xoYkdsNllYUnBiMjVFWVhSaFUybDZaU2twT2loMGFHbHpMbkJ5YjJacGJHVTlaUzV5WldGa1ZXbHVkRGdvS1N4MGFHbHpMbXhsZG1Wc1BXVXVjbVZoWkZWcGJuUTRLQ2tzZEQxbExuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdVltbDBSR1Z3ZEdnOWRENCtOQ1l4TlN4MGFHbHpMbU52Ykc5eVUzQmhZMlU5ZENZeE5TeDBQV1V1Y21WaFpGVnBiblE0S0Nrc2RHaHBjeTVqYUhKdmJXRlRkV0p6WVcxd2JHbHVaejEwUGo0MEpqRTFMSFJvYVhNdWRISmhibk5tWlhKR2RXNWpkR2x2YmoxMFBqNHhKamNzZEdocGN5NTJhV1JsYjBaMWJHeFNZVzVuWlVac1lXYzlkQ1l4TEhSb2FYTXVZMjlrWldOSmJuUnBZV3hwZW1GMGFXOXVSR0YwWVZOcGVtVTlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTVqYjJSbFkwbHVkR2xoYkdsNllYUnBiMjVFWVhSaFBXVXVjbVZoWkZWcGJuUTRRWEp5WVhrb2RHaHBjeTVqYjJSbFkwbHVkR2xoYkdsNllYUnBiMjVFWVhSaFUybDZaU2twZlNrc2J5NWpjbVZoZEdWQ2IzaERkRzl5S0NKMmRIUkRJaXhtZFc1amRHbHZiaWhsS1h0MGFHbHpMblJsZUhROVpTNXlaV0ZrVTNSeWFXNW5LSFJvYVhNdWMybDZaUzEwYUdsekxtaGtjbDl6YVhwbEtYMHBMRzh1WTNKbFlYUmxSblZzYkVKdmVFTjBiM0lvSW5aMlkwTWlMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBMR2tzWmoxN2FHVnNaRjlpYVhSek9uWnZhV1FnTUN4dWRXMWZhR1ZzWkY5aWFYUnpPakFzYzNSeVpXRnRYM0psWVdSZk1WOWllWFJsY3pwbWRXNWpkR2x2YmloM0tYdDBhR2x6TG1obGJHUmZZbWwwY3oxM0xuSmxZV1JWYVc1ME9DZ3BMSFJvYVhNdWJuVnRYMmhsYkdSZlltbDBjejA0ZlN4emRISmxZVzFmY21WaFpGOHlYMko1ZEdWek9tWjFibU4wYVc5dUtIY3BlM1JvYVhNdWFHVnNaRjlpYVhSelBYY3VjbVZoWkZWcGJuUXhOaWdwTEhSb2FYTXViblZ0WDJobGJHUmZZbWwwY3oweE5uMHNaWGgwY21GamRGOWlhWFJ6T21aMWJtTjBhVzl1S0hjcGUzWmhjaUJCUFhSb2FYTXVhR1ZzWkY5aWFYUnpQajUwYUdsekxtNTFiVjlvWld4a1gySnBkSE10ZHlZb01UdzhkeWt0TVR0eVpYUjFjbTRnZEdocGN5NXVkVzFmYUdWc1pGOWlhWFJ6TFQxM0xFRjlmVHRwWmlobUxuTjBjbVZoYlY5eVpXRmtYekZmWW5sMFpYTW9aU2tzWmk1bGVIUnlZV04wWDJKcGRITW9OU2tzZEdocGN5NXNaVzVuZEdoVGFYcGxUV2x1ZFhOUGJtVTlaaTVsZUhSeVlXTjBYMkpwZEhNb01pa3NkR2hwY3k1d2RHeGZjSEpsYzJWdWRGOW1iR0ZuUFdZdVpYaDBjbUZqZEY5aWFYUnpLREVwTEhSb2FYTXVjSFJzWDNCeVpYTmxiblJmWm14aFp5bDdaaTV6ZEhKbFlXMWZjbVZoWkY4eVgySjVkR1Z6S0dVcExIUm9hWE11YjJ4elgybGtlRDFtTG1WNGRISmhZM1JmWW1sMGN5ZzVLU3gwYUdsekxtNTFiVjl6ZFdKc1lYbGxjbk05Wmk1bGVIUnlZV04wWDJKcGRITW9NeWtzZEdocGN5NWpiMjV6ZEdGdWRGOW1jbUZ0WlY5eVlYUmxQV1l1WlhoMGNtRmpkRjlpYVhSektESXBMSFJvYVhNdVkyaHliMjFoWDJadmNtMWhkRjlwWkdNOVppNWxlSFJ5WVdOMFgySnBkSE1vTWlrc1ppNXpkSEpsWVcxZmNtVmhaRjh4WDJKNWRHVnpLR1VwTEhSb2FYTXVZbWwwWDJSbGNIUm9YMjFwYm5Wek9EMW1MbVY0ZEhKaFkzUmZZbWwwY3lnektTeG1MbVY0ZEhKaFkzUmZZbWwwY3lnMUtUdDdhV1lvWmk1emRISmxZVzFmY21WaFpGOHlYMko1ZEdWektHVXBMR1l1WlhoMGNtRmpkRjlpYVhSektESXBMSFJvYVhNdWJuVnRYMko1ZEdWelgyTnZibk4wY21GcGJuUmZhVzVtYnoxbUxtVjRkSEpoWTNSZlltbDBjeWcyS1N4MGFHbHpMbWRsYm1WeVlXeGZjSEp2Wm1sc1pWOXBaR005Wmk1bGVIUnlZV04wWDJKcGRITW9OeWtzZEdocGN5NW5aVzVsY21Gc1gzUnBaWEpmWm14aFp6MW1MbVY0ZEhKaFkzUmZZbWwwY3lneEtTeDBhR2x6TG1kbGJtVnlZV3hmYkdWMlpXeGZhV1JqUFdVdWNtVmhaRlZwYm5RNEtDa3NaaTV6ZEhKbFlXMWZjbVZoWkY4eFgySjVkR1Z6S0dVcExIUm9hWE11Y0hSc1gyWnlZVzFsWDI5dWJIbGZZMjl1YzNSeVlXbHVkRjltYkdGblBXWXVaWGgwY21GamRGOWlhWFJ6S0RFcExIUm9hWE11Y0hSc1gyMTFiSFJwYkdGNVpYSmZaVzVoWW14bFpGOW1iR0ZuUFdZdVpYaDBjbUZqZEY5aWFYUnpLREVwTEhSb2FYTXVaMlZ1WlhKaGJGOWpiMjV6ZEhKaGFXNTBYMmx1Wm04OWJtVjNJRlZwYm5RNFFYSnlZWGtvZEdocGN5NXVkVzFmWW5sMFpYTmZZMjl1YzNSeVlXbHVkRjlwYm1adktTeDBhR2x6TG01MWJWOWllWFJsYzE5amIyNXpkSEpoYVc1MFgybHVabThwZTJadmNpaDBQVEE3ZER4MGFHbHpMbTUxYlY5aWVYUmxjMTlqYjI1emRISmhhVzUwWDJsdVptOHRNVHQwS3lzcGUzWmhjaUIxUFdZdVpYaDBjbUZqZEY5aWFYUnpLRFlwTzJZdWMzUnlaV0Z0WDNKbFlXUmZNVjlpZVhSbGN5aGxLVHQyWVhJZ2RqMW1MbVY0ZEhKaFkzUmZZbWwwY3lneUtUdDBhR2x6TG1kbGJtVnlZV3hmWTI5dWMzUnlZV2x1ZEY5cGJtWnZXM1JkUFhVOFBESjhkbjEwYUdsekxtZGxibVZ5WVd4ZlkyOXVjM1J5WVdsdWRGOXBibVp2VzNSb2FYTXViblZ0WDJKNWRHVnpYMk52Ym5OMGNtRnBiblJmYVc1bWJ5MHhYVDFtTG1WNGRISmhZM1JmWW1sMGN5ZzJLWDFsYkhObElHWXVaWGgwY21GamRGOWlhWFJ6S0RZcE8yWnZjaWhtTG5OMGNtVmhiVjl5WldGa1h6RmZZbmwwWlhNb1pTa3NkR2hwY3k1d2RHeGZjM1ZpYkdGNVpYSmZjSEpsYzJWdWRGOXRZWE5yUFRBc2FUMTBhR2x6TG01MWJWOXpkV0pzWVhsbGNuTXRNanRwUGowd095MHRhU2w3ZG1GeUlIazlaaTVsZUhSeVlXTjBYMkpwZEhNb01TazdkR2hwY3k1d2RHeGZjM1ZpYkdGNVpYSmZjSEpsYzJWdWRGOXRZWE5yZkQxNVBEeHBmV1p2Y2locFBYUm9hWE11Ym5WdFgzTjFZbXhoZVdWeWN6dHBQRDA0SmlaMGFHbHpMbTUxYlY5emRXSnNZWGxsY25NK01Uc3JLMmtwWmk1bGVIUnlZV04wWDJKcGRITW9NU2s3Wm05eUtHazlkR2hwY3k1dWRXMWZjM1ZpYkdGNVpYSnpMVEk3YVQ0OU1Ec3RMV2twZEdocGN5NXdkR3hmYzNWaWJHRjVaWEpmY0hKbGMyVnVkRjl0WVhOckpqRThQR2ttSmloMGFHbHpMbk4xWW14aGVXVnlYMnhsZG1Wc1gybGtZMXRwWFQxbExuSmxZV1JWYVc1ME9DZ3BLVHRwWmloMGFHbHpMbkIwYkY5dWRXMWZjM1ZpWDNCeWIyWnBiR1Z6UFdVdWNtVmhaRlZwYm5RNEtDa3NkR2hwY3k1blpXNWxjbUZzWDNOMVlsOXdjbTltYVd4bFgybGtZejFiWFN4MGFHbHpMbkIwYkY5dWRXMWZjM1ZpWDNCeWIyWnBiR1Z6S1dadmNpaDBQVEE3ZER4MGFHbHpMbkIwYkY5dWRXMWZjM1ZpWDNCeWIyWnBiR1Z6TzNRckt5bDBhR2x6TG1kbGJtVnlZV3hmYzNWaVgzQnliMlpwYkdWZmFXUmpMbkIxYzJnb1pTNXlaV0ZrVldsdWRETXlLQ2twZlhSb2FYTXViV0Y0WDNCcFkzUjFjbVZmZDJsa2RHZzlaUzV5WldGa1ZXbHVkREUyS0Nrc2RHaHBjeTV0WVhoZmNHbGpkSFZ5WlY5b1pXbG5hSFE5WlM1eVpXRmtWV2x1ZERFMktDa3NkR2hwY3k1aGRtZGZabkpoYldWZmNtRjBaVDFsTG5KbFlXUlZhVzUwTVRZb0tYMTJZWElnYlQweE1peGlQVEV6TzNSb2FYTXVibUZzZFY5aGNuSmhlWE05VzEwN2RtRnlJSGc5WlM1eVpXRmtWV2x1ZERnb0tUdG1iM0lvZEQwd08zUThlRHQwS3lzcGUzWmhjaUJUUFZ0ZE8zUm9hWE11Ym1Gc2RWOWhjbkpoZVhNdWNIVnphQ2hUS1N4bUxuTjBjbVZoYlY5eVpXRmtYekZmWW5sMFpYTW9aU2tzVXk1amIyMXdiR1YwWlc1bGMzTTlaaTVsZUhSeVlXTjBYMkpwZEhNb01Ta3NaaTVsZUhSeVlXTjBYMkpwZEhNb01pa3NVeTV1WVd4MVgzUjVjR1U5Wmk1bGVIUnlZV04wWDJKcGRITW9OU2s3ZG1GeUlGVTlNVHRtYjNJb1V5NXVZV3gxWDNSNWNHVWhQV0ltSmxNdWJtRnNkVjkwZVhCbElUMXRKaVlvVlQxbExuSmxZV1JWYVc1ME1UWW9LU2tzYVQwd08yazhWVHRwS3lzcGUzWmhjaUJGUFdVdWNtVmhaRlZwYm5ReE5pZ3BPMU11Y0hWemFDaDdaR0YwWVRwbExuSmxZV1JWYVc1ME9FRnljbUY1S0VVcExHeGxibWQwYURwRmZTbDlmWDBwTEc4dVkzSmxZWFJsUm5Wc2JFSnZlRU4wYjNJb0luWjJia01pTEdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFhOMGNtMHVjbVZoWkZWcGJuUTRLQ2s3ZEdocGN5NXNaVzVuZEdoVGFYcGxUV2x1ZFhOUGJtVTlkQ1l6ZlNrc2J5NVRZVzF3YkdWRmJuUnllUzV3Y205MGIzUjVjR1V1YVhOV2FXUmxiejFtZFc1amRHbHZiaWdwZTNKbGRIVnliaUV4ZlN4dkxsTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzVwYzBGMVpHbHZQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJVEY5TEc4dVUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWx6VTNWaWRHbDBiR1U5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRoTVgwc2J5NVRZVzF3YkdWRmJuUnllUzV3Y205MGIzUjVjR1V1YVhOTlpYUmhaR0YwWVQxbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlFeGZTeHZMbE5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1cGMwaHBiblE5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRoTVgwc2J5NVRZVzF3YkdWRmJuUnllUzV3Y205MGIzUjVjR1V1WjJWMFEyOWtaV005Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NTBlWEJsTG5KbGNHeGhZMlVvSWk0aUxDSWlLWDBzYnk1VFlXMXdiR1ZGYm5SeWVTNXdjbTkwYjNSNWNHVXVaMlYwVjJsa2RHZzlablZ1WTNScGIyNG9LWHR5WlhSMWNtNGlJbjBzYnk1VFlXMXdiR1ZGYm5SeWVTNXdjbTkwYjNSNWNHVXVaMlYwU0dWcFoyaDBQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJaUo5TEc4dVUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWRsZEVOb1lXNXVaV3hEYjNWdWREMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpSWlmU3h2TGxOaGJYQnNaVVZ1ZEhKNUxuQnliM1J2ZEhsd1pTNW5aWFJUWVcxd2JHVlNZWFJsUFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SWlKOUxHOHVVMkZ0Y0d4bFJXNTBjbmt1Y0hKdmRHOTBlWEJsTG1kbGRGTmhiWEJzWlZOcGVtVTlablZ1WTNScGIyNG9LWHR5WlhSMWNtNGlJbjBzYnk1V2FYTjFZV3hUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdWFYTldhV1JsYnoxbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlFd2ZTeHZMbFpwYzNWaGJGTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzVuWlhSWGFXUjBhRDFtZFc1amRHbHZiaWdwZTNKbGRIVnliaUIwYUdsekxuZHBaSFJvZlN4dkxsWnBjM1ZoYkZOaGJYQnNaVVZ1ZEhKNUxuQnliM1J2ZEhsd1pTNW5aWFJJWldsbmFIUTlablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdkR2hwY3k1b1pXbG5hSFI5TEc4dVFYVmthVzlUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdWFYTkJkV1JwYnoxbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlFd2ZTeHZMa0YxWkdsdlUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWRsZEVOb1lXNXVaV3hEYjNWdWREMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6TG1Ob1lXNXVaV3hmWTI5MWJuUjlMRzh1UVhWa2FXOVRZVzF3YkdWRmJuUnllUzV3Y205MGIzUjVjR1V1WjJWMFUyRnRjR3hsVW1GMFpUMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6TG5OaGJYQnNaWEpoZEdWOUxHOHVRWFZrYVc5VFlXMXdiR1ZGYm5SeWVTNXdjbTkwYjNSNWNHVXVaMlYwVTJGdGNHeGxVMmw2WlQxbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCMGFHbHpMbk5oYlhCc1pYTnBlbVY5TEc4dVUzVmlkR2wwYkdWVFlXMXdiR1ZGYm5SeWVTNXdjbTkwYjNSNWNHVXVhWE5UZFdKMGFYUnNaVDFtZFc1amRHbHZiaWdwZTNKbGRIVnliaUV3ZlN4dkxrMWxkR0ZrWVhSaFUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWx6VFdWMFlXUmhkR0U5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRoTUgwc2J5NWtaV05wYldGc1ZHOUlaWGc5Wm5WdVkzUnBiMjRvWlN4MEtYdDJZWElnYVQxT2RXMWlaWElvWlNrdWRHOVRkSEpwYm1jb01UWXBPMlp2Y2loMFBYUjVjR1Z2WmlCMFBpSjFJbng4ZEQwOVBXNTFiR3cvZEQweU9uUTdhUzVzWlc1bmRHZzhkRHNwYVQwaU1DSXJhVHR5WlhSMWNtNGdhWDBzYnk1aGRtTXhVMkZ0Y0d4bFJXNTBjbmt1Y0hKdmRHOTBlWEJsTG1kbGRFTnZaR1ZqUFc4dVlYWmpNbE5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1blpYUkRiMlJsWXoxdkxtRjJZek5UWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdVoyVjBRMjlrWldNOWJ5NWhkbU0wVTJGdGNHeGxSVzUwY25rdWNISnZkRzkwZVhCbExtZGxkRU52WkdWalBXWjFibU4wYVc5dUtDbDdkbUZ5SUdVOWJ5NVRZVzF3YkdWRmJuUnllUzV3Y205MGIzUjVjR1V1WjJWMFEyOWtaV011WTJGc2JDaDBhR2x6S1R0eVpYUjFjbTRnZEdocGN5NWhkbU5EUDJVcklpNGlLMjh1WkdWamFXMWhiRlJ2U0dWNEtIUm9hWE11WVhaalF5NUJWa05RY205bWFXeGxTVzVrYVdOaGRHbHZiaWtyYnk1a1pXTnBiV0ZzVkc5SVpYZ29kR2hwY3k1aGRtTkRMbkJ5YjJacGJHVmZZMjl0Y0dGMGFXSnBiR2wwZVNrcmJ5NWtaV05wYldGc1ZHOUlaWGdvZEdocGN5NWhkbU5ETGtGV1EweGxkbVZzU1c1a2FXTmhkR2x2YmlrNlpYMHNieTVvWlhZeFUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWRsZEVOdlpHVmpQVzh1YUhaak1WTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzVuWlhSRGIyUmxZejFtZFc1amRHbHZiaWdwZTNaaGNpQmxMSFE5Ynk1VFlXMXdiR1ZGYm5SeWVTNXdjbTkwYjNSNWNHVXVaMlYwUTI5a1pXTXVZMkZzYkNoMGFHbHpLVHRwWmloMGFHbHpMbWgyWTBNcGUzTjNhWFJqYUNoMEt6MGlMaUlzZEdocGN5NW9kbU5ETG1kbGJtVnlZV3hmY0hKdlptbHNaVjl6Y0dGalpTbDdZMkZ6WlNBd09uUXJQU0lpTzJKeVpXRnJPMk5oYzJVZ01UcDBLejBpUVNJN1luSmxZV3M3WTJGelpTQXlPblFyUFNKQ0lqdGljbVZoYXp0allYTmxJRE02ZENzOUlrTWlPMkp5WldGcmZYUXJQWFJvYVhNdWFIWmpReTVuWlc1bGNtRnNYM0J5YjJacGJHVmZhV1JqTEhRclBTSXVJanQyWVhJZ2FUMTBhR2x6TG1oMlkwTXVaMlZ1WlhKaGJGOXdjbTltYVd4bFgyTnZiWEJoZEdsaWFXeHBkSGtzWmowd08yWnZjaWhsUFRBN1pUd3pNaVltS0daOFBXa21NU3hsSVQwek1TazdaU3NyS1dZOFBEMHhMR2srUGoweE8zUXJQVzh1WkdWamFXMWhiRlJ2U0dWNEtHWXNNQ2tzZENzOUlpNGlMSFJvYVhNdWFIWmpReTVuWlc1bGNtRnNYM1JwWlhKZlpteGhaejA5UFRBL2RDczlJa3dpT25RclBTSklJaXgwS3oxMGFHbHpMbWgyWTBNdVoyVnVaWEpoYkY5c1pYWmxiRjlwWkdNN2RtRnlJSFU5SVRFc2RqMGlJanRtYjNJb1pUMDFPMlUrUFRBN1pTMHRLU2gwYUdsekxtaDJZME11WjJWdVpYSmhiRjlqYjI1emRISmhhVzUwWDJsdVpHbGpZWFJ2Y2x0bFhYeDhkU2ttSmloMlBTSXVJaXR2TG1SbFkybHRZV3hVYjBobGVDaDBhR2x6TG1oMlkwTXVaMlZ1WlhKaGJGOWpiMjV6ZEhKaGFXNTBYMmx1WkdsallYUnZjbHRsWFN3d0tTdDJMSFU5SVRBcE8zUXJQWFo5Y21WMGRYSnVJSFI5TEc4dWRuWmpNVk5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1blpYUkRiMlJsWXoxdkxuWjJhVEZUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdVoyVjBRMjlrWldNOVpuVnVZM1JwYjI0b0tYdDJZWElnWlN4MFBXOHVVMkZ0Y0d4bFJXNTBjbmt1Y0hKdmRHOTBlWEJsTG1kbGRFTnZaR1ZqTG1OaGJHd29kR2hwY3lrN2FXWW9kR2hwY3k1MmRtTkRLWHQwS3owaUxpSXJkR2hwY3k1MmRtTkRMbWRsYm1WeVlXeGZjSEp2Wm1sc1pWOXBaR01zZEdocGN5NTJkbU5ETG1kbGJtVnlZV3hmZEdsbGNsOW1iR0ZuUDNRclBTSXVTQ0k2ZENzOUlpNU1JaXgwS3oxMGFHbHpMbloyWTBNdVoyVnVaWEpoYkY5c1pYWmxiRjlwWkdNN2RtRnlJR2s5SWlJN2FXWW9kR2hwY3k1MmRtTkRMbWRsYm1WeVlXeGZZMjl1YzNSeVlXbHVkRjlwYm1adktYdDJZWElnWmoxYlhTeDFQVEE3ZFh3OWRHaHBjeTUyZG1ORExuQjBiRjltY21GdFpWOXZibXg1WDJOdmJuTjBjbUZwYm5ROFBEY3NkWHc5ZEdocGN5NTJkbU5ETG5CMGJGOXRkV3gwYVd4aGVXVnlYMlZ1WVdKc1pXUThQRFk3ZG1GeUlIWTdabTl5S0dVOU1EdGxQSFJvYVhNdWRuWmpReTVuWlc1bGNtRnNYMk52Ym5OMGNtRnBiblJmYVc1bWJ5NXNaVzVuZEdnN0t5dGxLWFY4UFhSb2FYTXVkblpqUXk1blpXNWxjbUZzWDJOdmJuTjBjbUZwYm5SZmFXNW1iMXRsWFQ0K01pWTJNeXhtTG5CMWMyZ29kU2tzZFNZbUtIWTlaU2tzZFQxMGFHbHpMbloyWTBNdVoyVnVaWEpoYkY5amIyNXpkSEpoYVc1MFgybHVabTliWlYwK1BqSW1NenRwWmloMlBUMDlkbTlwWkNBd0tXazlJaTVEUVNJN1pXeHpaWHRwUFNJdVF5STdkbUZ5SUhrOUlrRkNRMFJGUmtkSVNVcExURTFPVDFCUlVsTlVWVlpYV0ZsYU1qTTBOVFkzSWl4dFBUQXNZajB3TzJadmNpaGxQVEE3WlR3OWRqc3JLMlVwWm05eUtHMDliVHc4T0h4bVcyVmRMR0lyUFRnN1lqNDlOVHNwZTNaaGNpQjRQVzArUG1JdE5TWXpNVHRwS3oxNVczaGRMR0l0UFRVc2JTWTlLREU4UEdJcExURjlZaVltS0cwOFBEMDFMV0lzYVNzOWVWdHRKak14WFNsOWZYUXJQV2w5Y21WMGRYSnVJSFI5TEc4dWJYQTBZVk5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1blpYUkRiMlJsWXoxbWRXNWpkR2x2YmlncGUzWmhjaUJsUFc4dVUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWRsZEVOdlpHVmpMbU5oYkd3b2RHaHBjeWs3YVdZb2RHaHBjeTVsYzJSekppWjBhR2x6TG1WelpITXVaWE5rS1h0MllYSWdkRDEwYUdsekxtVnpaSE11WlhOa0xtZGxkRTlVU1NncExHazlkR2hwY3k1bGMyUnpMbVZ6WkM1blpYUkJkV1JwYjBOdmJtWnBaeWdwTzNKbGRIVnliaUJsS3lJdUlpdHZMbVJsWTJsdFlXeFViMGhsZUNoMEtTc29hVDhpTGlJcmFUb2lJaWw5Wld4elpTQnlaWFIxY200Z1pYMHNieTV6ZEhoMFUyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbWRsZEVOdlpHVmpQV1oxYm1OMGFXOXVLQ2w3ZG1GeUlHVTlieTVUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdVoyVjBRMjlrWldNdVkyRnNiQ2gwYUdsektUdHlaWFIxY200Z2RHaHBjeTV0YVcxbFgyWnZjbTFoZEQ5bEt5SXVJaXQwYUdsekxtMXBiV1ZmWm05eWJXRjBPbVY5TEc4dWRuQXdPRk5oYlhCc1pVVnVkSEo1TG5CeWIzUnZkSGx3WlM1blpYUkRiMlJsWXoxdkxuWndNRGxUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdVoyVjBRMjlrWldNOVpuVnVZM1JwYjI0b0tYdDJZWElnWlQxdkxsTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzVuWlhSRGIyUmxZeTVqWVd4c0tIUm9hWE1wTEhROWRHaHBjeTUyY0dORExteGxkbVZzTzNROVBUQW1KaWgwUFNJd01DSXBPM1poY2lCcFBYUm9hWE11ZG5CalF5NWlhWFJFWlhCMGFEdHlaWFIxY200Z2FUMDlPQ1ltS0drOUlqQTRJaWtzWlNzaUxqQWlLM1JvYVhNdWRuQmpReTV3Y205bWFXeGxLeUl1SWl0MEt5SXVJaXRwZlN4dkxtRjJNREZUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdVoyVjBRMjlrWldNOVpuVnVZM1JwYjI0b0tYdDJZWElnWlQxdkxsTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzVuWlhSRGIyUmxZeTVqWVd4c0tIUm9hWE1wTEhROWRHaHBjeTVoZGpGRExuTmxjVjlzWlhabGJGOXBaSGhmTUR0MFBERXdKaVlvZEQwaU1DSXJkQ2s3ZG1GeUlHazdjbVYwZFhKdUlIUm9hWE11WVhZeFF5NXpaWEZmY0hKdlptbHNaVDA5UFRJbUpuUm9hWE11WVhZeFF5NW9hV2RvWDJKcGRHUmxjSFJvUFQwOU1UOXBQWFJvYVhNdVlYWXhReTUwZDJWc2RtVmZZbWwwUFQwOU1UOGlNVElpT2lJeE1DSTZkR2hwY3k1aGRqRkRMbk5sY1Y5d2NtOW1hV3hsUEQweUppWW9hVDEwYUdsekxtRjJNVU11YUdsbmFGOWlhWFJrWlhCMGFEMDlQVEUvSWpFd0lqb2lNRGdpS1N4bEt5SXVJaXQwYUdsekxtRjJNVU11YzJWeFgzQnliMlpwYkdVcklpNGlLM1FyS0hSb2FYTXVZWFl4UXk1elpYRmZkR2xsY2w4d1B5SklJam9pVFNJcEt5SXVJaXRwZlN4dkxrSnZlQzV3Y205MGIzUjVjR1V1ZDNKcGRHVklaV0ZrWlhJOVpuVnVZM1JwYjI0b1pTeDBLWHQwYUdsekxuTnBlbVVyUFRnc2RHaHBjeTV6YVhwbFBtd21KaWgwYUdsekxuTnBlbVVyUFRncExIUm9hWE11ZEhsd1pUMDlQU0oxZFdsa0lpWW1LSFJvYVhNdWMybDZaU3M5TVRZcExISXVaR1ZpZFdjb0lrSnZlRmR5YVhSbGNpSXNJbGR5YVhScGJtY2dZbTk0SUNJcmRHaHBjeTUwZVhCbEt5SWdiMllnYzJsNlpUb2dJaXQwYUdsekxuTnBlbVVySWlCaGRDQndiM05wZEdsdmJpQWlLMlV1WjJWMFVHOXphWFJwYjI0b0tTc29kSHg4SWlJcEtTeDBhR2x6TG5OcGVtVStiRDlsTG5keWFYUmxWV2x1ZERNeUtERXBPaWgwYUdsekxuTnBlbVZRYjNOcGRHbHZiajFsTG1kbGRGQnZjMmwwYVc5dUtDa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbk5wZW1VcEtTeGxMbmR5YVhSbFUzUnlhVzVuS0hSb2FYTXVkSGx3WlN4dWRXeHNMRFFwTEhSb2FYTXVkSGx3WlQwOVBTSjFkV2xrSWlZbVpTNTNjbWwwWlZWcGJuUTRRWEp5WVhrb2RHaHBjeTUxZFdsa0tTeDBhR2x6TG5OcGVtVStiQ1ltWlM1M2NtbDBaVlZwYm5RMk5DaDBhR2x6TG5OcGVtVXBmU3h2TGtaMWJHeENiM2d1Y0hKdmRHOTBlWEJsTG5keWFYUmxTR1ZoWkdWeVBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWMybDZaU3M5TkN4dkxrSnZlQzV3Y205MGIzUjVjR1V1ZDNKcGRHVklaV0ZrWlhJdVkyRnNiQ2gwYUdsekxHVXNJaUIyUFNJcmRHaHBjeTUyWlhKemFXOXVLeUlnWmowaUszUm9hWE11Wm14aFozTXBMR1V1ZDNKcGRHVlZhVzUwT0NoMGFHbHpMblpsY25OcGIyNHBMR1V1ZDNKcGRHVlZhVzUwTWpRb2RHaHBjeTVtYkdGbmN5bDlMRzh1UW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5SNWNHVTlQVDBpYldSaGRDSS9kR2hwY3k1a1lYUmhKaVlvZEdocGN5NXphWHBsUFhSb2FYTXVaR0YwWVM1c1pXNW5kR2dzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1N4bExuZHlhWFJsVldsdWREaEJjbkpoZVNoMGFHbHpMbVJoZEdFcEtUb29kR2hwY3k1emFYcGxQWFJvYVhNdVpHRjBZVDkwYUdsekxtUmhkR0V1YkdWdVozUm9PakFzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1N4MGFHbHpMbVJoZEdFbUptVXVkM0pwZEdWVmFXNTBPRUZ5Y21GNUtIUm9hWE11WkdGMFlTa3BmU3h2TGtOdmJuUmhhVzVsY2tKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1emFYcGxQVEFzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1R0bWIzSW9kbUZ5SUhROU1EdDBQSFJvYVhNdVltOTRaWE11YkdWdVozUm9PM1FyS3lsMGFHbHpMbUp2ZUdWelczUmRKaVlvZEdocGN5NWliM2hsYzF0MFhTNTNjbWwwWlNobEtTeDBhR2x6TG5OcGVtVXJQWFJvYVhNdVltOTRaWE5iZEYwdWMybDZaU2s3Y2k1a1pXSjFaeWdpUW05NFYzSnBkR1Z5SWl3aVFXUnFkWE4wYVc1bklHSnZlQ0FpSzNSb2FYTXVkSGx3WlNzaUlIZHBkR2dnYm1WM0lITnBlbVVnSWl0MGFHbHpMbk5wZW1VcExHVXVZV1JxZFhOMFZXbHVkRE15S0hSb2FYTXVjMmw2WlZCdmMybDBhVzl1TEhSb2FYTXVjMmw2WlNsOUxHOHVWSEpoWTJ0U1pXWmxjbVZ1WTJWVWVYQmxRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMbk5wZW1VOWRHaHBjeTUwY21GamExOXBaSE11YkdWdVozUm9LalFzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1N4bExuZHlhWFJsVldsdWRETXlRWEp5WVhrb2RHaHBjeTUwY21GamExOXBaSE1wZlN4dkxtRjJZME5DYjNndWNISnZkRzkwZVhCbExuZHlhWFJsUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwTzJadmNpaDBhR2x6TG5OcGVtVTlOeXgwUFRBN2REeDBhR2x6TGxOUVV5NXNaVzVuZEdnN2RDc3JLWFJvYVhNdWMybDZaU3M5TWl0MGFHbHpMbE5RVTF0MFhTNXNaVzVuZEdnN1ptOXlLSFE5TUR0MFBIUm9hWE11VUZCVExteGxibWQwYUR0MEt5c3BkR2hwY3k1emFYcGxLejB5SzNSb2FYTXVVRkJUVzNSZExteGxibWQwYUR0bWIzSW9kR2hwY3k1bGVIUW1KaWgwYUdsekxuTnBlbVVyUFhSb2FYTXVaWGgwTG14bGJtZDBhQ2tzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1N4bExuZHlhWFJsVldsdWREZ29kR2hwY3k1amIyNW1hV2QxY21GMGFXOXVWbVZ5YzJsdmJpa3NaUzUzY21sMFpWVnBiblE0S0hSb2FYTXVRVlpEVUhKdlptbHNaVWx1WkdsallYUnBiMjRwTEdVdWQzSnBkR1ZWYVc1ME9DaDBhR2x6TG5CeWIyWnBiR1ZmWTI5dGNHRjBhV0pwYkdsMGVTa3NaUzUzY21sMFpWVnBiblE0S0hSb2FYTXVRVlpEVEdWMlpXeEpibVJwWTJGMGFXOXVLU3hsTG5keWFYUmxWV2x1ZERnb2RHaHBjeTVzWlc1bmRHaFRhWHBsVFdsdWRYTlBibVVyTWpVeUtTeGxMbmR5YVhSbFZXbHVkRGdvZEdocGN5NVRVRk11YkdWdVozUm9Lekl5TkNrc2REMHdPM1E4ZEdocGN5NVRVRk11YkdWdVozUm9PM1FyS3lsbExuZHlhWFJsVldsdWRERTJLSFJvYVhNdVUxQlRXM1JkTG14bGJtZDBhQ2tzWlM1M2NtbDBaVlZwYm5RNFFYSnlZWGtvZEdocGN5NVRVRk5iZEYwdWJtRnNkU2s3Wm05eUtHVXVkM0pwZEdWVmFXNTBPQ2gwYUdsekxsQlFVeTVzWlc1bmRHZ3BMSFE5TUR0MFBIUm9hWE11VUZCVExteGxibWQwYUR0MEt5c3BaUzUzY21sMFpWVnBiblF4TmloMGFHbHpMbEJRVTF0MFhTNXNaVzVuZEdncExHVXVkM0pwZEdWVmFXNTBPRUZ5Y21GNUtIUm9hWE11VUZCVFczUmRMbTVoYkhVcE8zUm9hWE11WlhoMEppWmxMbmR5YVhSbFZXbHVkRGhCY25KaGVTaDBhR2x6TG1WNGRDbDlMRzh1WTI4Mk5FSnZlQzV3Y205MGIzUjVjR1V1ZDNKcGRHVTlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTdabTl5S0hSb2FYTXVkbVZ5YzJsdmJqMHdMSFJvYVhNdVpteGhaM005TUN4MGFHbHpMbk5wZW1VOU5DczRLblJvYVhNdVkyaDFibXRmYjJabWMyVjBjeTVzWlc1bmRHZ3NkR2hwY3k1M2NtbDBaVWhsWVdSbGNpaGxLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WTJoMWJtdGZiMlptYzJWMGN5NXNaVzVuZEdncExIUTlNRHQwUEhSb2FYTXVZMmgxYm10ZmIyWm1jMlYwY3k1c1pXNW5kR2c3ZENzcktXVXVkM0pwZEdWVmFXNTBOalFvZEdocGN5NWphSFZ1YTE5dlptWnpaWFJ6VzNSZEtYMHNieTVqYzJ4blFtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG1ac1lXZHpQVEFzZEdocGN5NXphWHBsUFRRcU5TeDBhR2x6TG5keWFYUmxTR1ZoWkdWeUtHVXBMR1V1ZDNKcGRHVkpiblF6TWloMGFHbHpMbU52YlhCdmMybDBhVzl1Vkc5RVZGTlRhR2xtZENrc1pTNTNjbWwwWlVsdWRETXlLSFJvYVhNdWJHVmhjM1JFWldOdlpHVlViMFJwYzNCc1lYbEVaV3gwWVNrc1pTNTNjbWwwWlVsdWRETXlLSFJvYVhNdVozSmxZWFJsYzNSRVpXTnZaR1ZVYjBScGMzQnNZWGxFWld4MFlTa3NaUzUzY21sMFpVbHVkRE15S0hSb2FYTXVZMjl0Y0c5emFYUnBiMjVUZEdGeWRGUnBiV1VwTEdVdWQzSnBkR1ZKYm5Rek1paDBhR2x6TG1OdmJYQnZjMmwwYVc5dVJXNWtWR2x0WlNsOUxHOHVZM1IwYzBKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhRN1ptOXlLSFJvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11Wm14aFozTTlNQ3gwYUdsekxuTnBlbVU5TkNzNEtuUm9hWE11YzJGdGNHeGxYMk52ZFc1MGN5NXNaVzVuZEdnc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVjMkZ0Y0d4bFgyTnZkVzUwY3k1c1pXNW5kR2dwTEhROU1EdDBQSFJvYVhNdWMyRnRjR3hsWDJOdmRXNTBjeTVzWlc1bmRHZzdkQ3NyS1dVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1ellXMXdiR1ZmWTI5MWJuUnpXM1JkS1N4MGFHbHpMblpsY25OcGIyNDlQVDB4UDJVdWQzSnBkR1ZKYm5Rek1paDBhR2x6TG5OaGJYQnNaVjl2Wm1aelpYUnpXM1JkS1RwbExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWMyRnRjR3hsWDI5bVpuTmxkSE5iZEYwcGZTeHZMbVJ5WldaQ2IzZ3VjSEp2ZEc5MGVYQmxMbmR5YVhSbFBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11Wm14aFozTTlNQ3gwYUdsekxuTnBlbVU5TkN4MGFHbHpMbmR5YVhSbFNHVmhaR1Z5S0dVcExHVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NWxiblJ5YVdWekxteGxibWQwYUNrN1ptOXlLSFpoY2lCMFBUQTdkRHgwYUdsekxtVnVkSEpwWlhNdWJHVnVaM1JvTzNRckt5bDBhR2x6TG1WdWRISnBaWE5iZEYwdWQzSnBkR1VvWlNrc2RHaHBjeTV6YVhwbEt6MTBhR2x6TG1WdWRISnBaWE5iZEYwdWMybDZaVHR5TG1SbFluVm5LQ0pDYjNoWGNtbDBaWElpTENKQlpHcDFjM1JwYm1jZ1ltOTRJQ0lyZEdocGN5NTBlWEJsS3lJZ2QybDBhQ0J1WlhjZ2MybDZaU0FpSzNSb2FYTXVjMmw2WlNrc1pTNWhaR3AxYzNSVmFXNTBNeklvZEdocGN5NXphWHBsVUc5emFYUnBiMjRzZEdocGN5NXphWHBsS1gwc2J5NWxiRzVuUW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5TUN4MGFHbHpMbVpzWVdkelBUQXNkR2hwY3k1emFYcGxQWFJvYVhNdVpYaDBaVzVrWldSZmJHRnVaM1ZoWjJVdWJHVnVaM1JvTEhSb2FYTXVkM0pwZEdWSVpXRmtaWElvWlNrc1pTNTNjbWwwWlZOMGNtbHVaeWgwYUdsekxtVjRkR1Z1WkdWa1gyeGhibWQxWVdkbEtYMHNieTVsYkhOMFFtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG1ac1lXZHpQVEFzZEdocGN5NXphWHBsUFRRck1USXFkR2hwY3k1bGJuUnlhV1Z6TG14bGJtZDBhQ3gwYUdsekxuZHlhWFJsU0dWaFpHVnlLR1VwTEdVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1bGJuUnlhV1Z6TG14bGJtZDBhQ2s3Wm05eUtIWmhjaUIwUFRBN2REeDBhR2x6TG1WdWRISnBaWE11YkdWdVozUm9PM1FyS3lsN2RtRnlJR2s5ZEdocGN5NWxiblJ5YVdWelczUmRPMlV1ZDNKcGRHVlZhVzUwTXpJb2FTNXpaV2R0Wlc1MFgyUjFjbUYwYVc5dUtTeGxMbmR5YVhSbFNXNTBNeklvYVM1dFpXUnBZVjkwYVcxbEtTeGxMbmR5YVhSbFNXNTBNVFlvYVM1dFpXUnBZVjl5WVhSbFgybHVkR1ZuWlhJcExHVXVkM0pwZEdWSmJuUXhOaWhwTG0xbFpHbGhYM0poZEdWZlpuSmhZM1JwYjI0cGZYMHNieTVsYlhOblFtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG1ac1lXZHpQVEFzZEdocGN5NXphWHBsUFRRcU5DdDBhR2x6TG0xbGMzTmhaMlZmWkdGMFlTNXNaVzVuZEdncktIUm9hWE11YzJOb1pXMWxYMmxrWDNWeWFTNXNaVzVuZEdnck1Ta3JLSFJvYVhNdWRtRnNkV1V1YkdWdVozUm9LekVwTEhSb2FYTXVkM0pwZEdWSVpXRmtaWElvWlNrc1pTNTNjbWwwWlVOVGRISnBibWNvZEdocGN5NXpZMmhsYldWZmFXUmZkWEpwS1N4bExuZHlhWFJsUTFOMGNtbHVaeWgwYUdsekxuWmhiSFZsS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWRHbHRaWE5qWVd4bEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVjSEpsYzJWdWRHRjBhVzl1WDNScGJXVmZaR1ZzZEdFcExHVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NWxkbVZ1ZEY5a2RYSmhkR2x2Ymlrc1pTNTNjbWwwWlZWcGJuUXpNaWgwYUdsekxtbGtLU3hsTG5keWFYUmxWV2x1ZERoQmNuSmhlU2gwYUdsekxtMWxjM05oWjJWZlpHRjBZU2w5TEc4dVpuUjVjRUp2ZUM1d2NtOTBiM1I1Y0dVdWQzSnBkR1U5Wm5WdVkzUnBiMjRvWlNsN2RHaHBjeTV6YVhwbFBUZ3JOQ3AwYUdsekxtTnZiWEJoZEdsaWJHVmZZbkpoYm1SekxteGxibWQwYUN4MGFHbHpMbmR5YVhSbFNHVmhaR1Z5S0dVcExHVXVkM0pwZEdWVGRISnBibWNvZEdocGN5NXRZV3B2Y2w5aWNtRnVaQ3h1ZFd4c0xEUXBMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTV0YVc1dmNsOTJaWEp6YVc5dUtUdG1iM0lvZG1GeUlIUTlNRHQwUEhSb2FYTXVZMjl0Y0dGMGFXSnNaVjlpY21GdVpITXViR1Z1WjNSb08zUXJLeWxsTG5keWFYUmxVM1J5YVc1bktIUm9hWE11WTI5dGNHRjBhV0pzWlY5aWNtRnVaSE5iZEYwc2JuVnNiQ3cwS1gwc2J5NW9aR3h5UW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5OcGVtVTlOU28wSzNSb2FYTXVibUZ0WlM1c1pXNW5kR2dyTVN4MGFHbHpMblpsY25OcGIyNDlNQ3gwYUdsekxtWnNZV2R6UFRBc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0RBcExHVXVkM0pwZEdWVGRISnBibWNvZEdocGN5NW9ZVzVrYkdWeUxHNTFiR3dzTkNrc1pTNTNjbWwwWlZWcGJuUXpNaWd3S1N4bExuZHlhWFJsVldsdWRETXlLREFwTEdVdWQzSnBkR1ZWYVc1ME16SW9NQ2tzWlM1M2NtbDBaVU5UZEhKcGJtY29kR2hwY3k1dVlXMWxLWDBzYnk1cmFXNWtRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMblpsY25OcGIyNDlNQ3gwYUdsekxtWnNZV2R6UFRBc2RHaHBjeTV6YVhwbFBYUm9hWE11YzJOb1pXMWxWVkpKTG14bGJtZDBhQ3N4S3loMGFHbHpMblpoYkhWbExteGxibWQwYUNzeEtTeDBhR2x6TG5keWFYUmxTR1ZoWkdWeUtHVXBMR1V1ZDNKcGRHVkRVM1J5YVc1bktIUm9hWE11YzJOb1pXMWxWVkpKS1N4bExuZHlhWFJsUTFOMGNtbHVaeWgwYUdsekxuWmhiSFZsS1gwc2J5NXRaR2hrUW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5OcGVtVTlOQ28wS3pJcU1peDBhR2x6TG1ac1lXZHpQVEFzZEdocGN5NTJaWEp6YVc5dVBUQXNkR2hwY3k1M2NtbDBaVWhsWVdSbGNpaGxLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WTNKbFlYUnBiMjVmZEdsdFpTa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbTF2WkdsbWFXTmhkR2x2Ymw5MGFXMWxLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11ZEdsdFpYTmpZV3hsS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdVpIVnlZWFJwYjI0cExHVXVkM0pwZEdWVmFXNTBNVFlvZEdocGN5NXNZVzVuZFdGblpTa3NaUzUzY21sMFpWVnBiblF4Tmlnd0tYMHNieTV0Wldoa1FtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG1ac1lXZHpQVEFzZEdocGN5NXphWHBsUFRRc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVabkpoWjIxbGJuUmZaSFZ5WVhScGIyNHBmU3h2TG0xbWFHUkNiM2d1Y0hKdmRHOTBlWEJsTG5keWFYUmxQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVkbVZ5YzJsdmJqMHdMSFJvYVhNdVpteGhaM005TUN4MGFHbHpMbk5wZW1VOU5DeDBhR2x6TG5keWFYUmxTR1ZoWkdWeUtHVXBMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTV6WlhGMVpXNWpaVjl1ZFcxaVpYSXBmU3h2TG0xMmFHUkNiM2d1Y0hKdmRHOTBlWEJsTG5keWFYUmxQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVkbVZ5YzJsdmJqMHdMSFJvYVhNdVpteGhaM005TUN4MGFHbHpMbk5wZW1VOU1qTXFOQ3N5S2pJc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVZM0psWVhScGIyNWZkR2x0WlNrc1pTNTNjbWwwWlZWcGJuUXpNaWgwYUdsekxtMXZaR2xtYVdOaGRHbHZibDkwYVcxbEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVkR2x0WlhOallXeGxLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WkhWeVlYUnBiMjRwTEdVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1eVlYUmxLU3hsTG5keWFYUmxWV2x1ZERFMktIUm9hWE11ZG05c2RXMWxQRHc0S1N4bExuZHlhWFJsVldsdWRERTJLREFwTEdVdWQzSnBkR1ZWYVc1ME16SW9NQ2tzWlM1M2NtbDBaVlZwYm5Rek1pZ3dLU3hsTG5keWFYUmxWV2x1ZERNeVFYSnlZWGtvZEdocGN5NXRZWFJ5YVhncExHVXVkM0pwZEdWVmFXNTBNeklvTUNrc1pTNTNjbWwwWlZWcGJuUXpNaWd3S1N4bExuZHlhWFJsVldsdWRETXlLREFwTEdVdWQzSnBkR1ZWYVc1ME16SW9NQ2tzWlM1M2NtbDBaVlZwYm5Rek1pZ3dLU3hsTG5keWFYUmxWV2x1ZERNeUtEQXBMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTV1WlhoMFgzUnlZV05yWDJsa0tYMHNieTVUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdWQzSnBkR1ZJWldGa1pYSTlablZ1WTNScGIyNG9aU2w3ZEdocGN5NXphWHBsUFRnc2J5NUNiM2d1Y0hKdmRHOTBlWEJsTG5keWFYUmxTR1ZoWkdWeUxtTmhiR3dvZEdocGN5eGxLU3hsTG5keWFYUmxWV2x1ZERnb01Da3NaUzUzY21sMFpWVnBiblE0S0RBcExHVXVkM0pwZEdWVmFXNTBPQ2d3S1N4bExuZHlhWFJsVldsdWREZ29NQ2tzWlM1M2NtbDBaVlZwYm5RNEtEQXBMR1V1ZDNKcGRHVlZhVzUwT0Nnd0tTeGxMbmR5YVhSbFZXbHVkREUyS0hSb2FYTXVaR0YwWVY5eVpXWmxjbVZ1WTJWZmFXNWtaWGdwZlN4dkxsTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzUzY21sMFpVWnZiM1JsY2oxbWRXNWpkR2x2YmlobEtYdG1iM0lvZG1GeUlIUTlNRHQwUEhSb2FYTXVZbTk0WlhNdWJHVnVaM1JvTzNRckt5bDBhR2x6TG1KdmVHVnpXM1JkTG5keWFYUmxLR1VwTEhSb2FYTXVjMmw2WlNzOWRHaHBjeTVpYjNobGMxdDBYUzV6YVhwbE8zSXVaR1ZpZFdjb0lrSnZlRmR5YVhSbGNpSXNJa0ZrYW5WemRHbHVaeUJpYjNnZ0lpdDBhR2x6TG5SNWNHVXJJaUIzYVhSb0lHNWxkeUJ6YVhwbElDSXJkR2hwY3k1emFYcGxLU3hsTG1Ga2FuVnpkRlZwYm5Rek1paDBhR2x6TG5OcGVtVlFiM05wZEdsdmJpeDBhR2x6TG5OcGVtVXBmU3h2TGxOaGJYQnNaVVZ1ZEhKNUxuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5keWFYUmxTR1ZoWkdWeUtHVXBMR1V1ZDNKcGRHVlZhVzUwT0VGeWNtRjVLSFJvYVhNdVpHRjBZU2tzZEdocGN5NXphWHBsS3oxMGFHbHpMbVJoZEdFdWJHVnVaM1JvTEhJdVpHVmlkV2NvSWtKdmVGZHlhWFJsY2lJc0lrRmthblZ6ZEdsdVp5QmliM2dnSWl0MGFHbHpMblI1Y0dVcklpQjNhWFJvSUc1bGR5QnphWHBsSUNJcmRHaHBjeTV6YVhwbEtTeGxMbUZrYW5WemRGVnBiblF6TWloMGFHbHpMbk5wZW1WUWIzTnBkR2x2Yml4MGFHbHpMbk5wZW1VcGZTeHZMbFpwYzNWaGJGTmhiWEJzWlVWdWRISjVMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuZHlhWFJsU0dWaFpHVnlLR1VwTEhSb2FYTXVjMmw2WlNzOU1pbzNLellxTkNzek1peGxMbmR5YVhSbFZXbHVkREUyS0RBcExHVXVkM0pwZEdWVmFXNTBNVFlvTUNrc1pTNTNjbWwwWlZWcGJuUXpNaWd3S1N4bExuZHlhWFJsVldsdWRETXlLREFwTEdVdWQzSnBkR1ZWYVc1ME16SW9NQ2tzWlM1M2NtbDBaVlZwYm5ReE5paDBhR2x6TG5kcFpIUm9LU3hsTG5keWFYUmxWV2x1ZERFMktIUm9hWE11YUdWcFoyaDBLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11YUc5eWFYcHlaWE52YkhWMGFXOXVLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11ZG1WeWRISmxjMjlzZFhScGIyNHBMR1V1ZDNKcGRHVlZhVzUwTXpJb01Da3NaUzUzY21sMFpWVnBiblF4TmloMGFHbHpMbVp5WVcxbFgyTnZkVzUwS1N4bExuZHlhWFJsVldsdWREZ29UV0YwYUM1dGFXNG9NekVzZEdocGN5NWpiMjF3Y21WemMyOXlibUZ0WlM1c1pXNW5kR2dwS1N4bExuZHlhWFJsVTNSeWFXNW5LSFJvYVhNdVkyOXRjSEpsYzNOdmNtNWhiV1VzYm5Wc2JDd3pNU2tzWlM1M2NtbDBaVlZwYm5ReE5paDBhR2x6TG1SbGNIUm9LU3hsTG5keWFYUmxTVzUwTVRZb0xURXBMSFJvYVhNdWQzSnBkR1ZHYjI5MFpYSW9aU2w5TEc4dVFYVmthVzlUWVcxd2JHVkZiblJ5ZVM1d2NtOTBiM1I1Y0dVdWQzSnBkR1U5Wm5WdVkzUnBiMjRvWlNsN2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeDBhR2x6TG5OcGVtVXJQVElxTkNzektqUXNaUzUzY21sMFpWVnBiblF6TWlnd0tTeGxMbmR5YVhSbFZXbHVkRE15S0RBcExHVXVkM0pwZEdWVmFXNTBNVFlvZEdocGN5NWphR0Z1Ym1Wc1gyTnZkVzUwS1N4bExuZHlhWFJsVldsdWRERTJLSFJvYVhNdWMyRnRjR3hsYzJsNlpTa3NaUzUzY21sMFpWVnBiblF4Tmlnd0tTeGxMbmR5YVhSbFZXbHVkREUyS0RBcExHVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NXpZVzF3YkdWeVlYUmxQRHd4Tmlrc2RHaHBjeTUzY21sMFpVWnZiM1JsY2lobEtYMHNieTV6ZEhCd1UyRnRjR3hsUlc1MGNua3VjSEp2ZEc5MGVYQmxMbmR5YVhSbFBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzZEdocGN5NXphWHBsS3oxMGFHbHpMbTVoYldWemNHRmpaUzVzWlc1bmRHZ3JNU3QwYUdsekxuTmphR1Z0WVY5c2IyTmhkR2x2Ymk1c1pXNW5kR2dyTVN0MGFHbHpMbUYxZUdsc2FXRnllVjl0YVcxbFgzUjVjR1Z6TG14bGJtZDBhQ3N4TEdVdWQzSnBkR1ZEVTNSeWFXNW5LSFJvYVhNdWJtRnRaWE53WVdObEtTeGxMbmR5YVhSbFExTjBjbWx1WnloMGFHbHpMbk5qYUdWdFlWOXNiMk5oZEdsdmJpa3NaUzUzY21sMFpVTlRkSEpwYm1jb2RHaHBjeTVoZFhocGJHbGhjbmxmYldsdFpWOTBlWEJsY3lrc2RHaHBjeTUzY21sMFpVWnZiM1JsY2lobEtYMHNieTVUWVcxd2JHVkhjbTkxY0VWdWRISjVMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHRsTG5keWFYUmxWV2x1ZERoQmNuSmhlU2gwYUdsekxtUmhkR0VwZlN4dkxuTmlaM0JDYjNndWNISnZkRzkwZVhCbExuZHlhWFJsUFdaMWJtTjBhVzl1S0dVcGUzUm9hWE11ZG1WeWMybHZiajB4TEhSb2FYTXVabXhoWjNNOU1DeDBhR2x6TG5OcGVtVTlNVElyT0NwMGFHbHpMbVZ1ZEhKcFpYTXViR1Z1WjNSb0xIUm9hWE11ZDNKcGRHVklaV0ZrWlhJb1pTa3NaUzUzY21sMFpWTjBjbWx1WnloMGFHbHpMbWR5YjNWd2FXNW5YM1I1Y0dVc2JuVnNiQ3cwS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdVozSnZkWEJwYm1kZmRIbHdaVjl3WVhKaGJXVjBaWElwTEdVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1bGJuUnlhV1Z6TG14bGJtZDBhQ2s3Wm05eUtIWmhjaUIwUFRBN2REeDBhR2x6TG1WdWRISnBaWE11YkdWdVozUm9PM1FyS3lsN2RtRnlJR2s5ZEdocGN5NWxiblJ5YVdWelczUmRPMlV1ZDNKcGRHVkpiblF6TWlocExuTmhiWEJzWlY5amIzVnVkQ2tzWlM1M2NtbDBaVWx1ZERNeUtHa3VaM0p2ZFhCZlpHVnpZM0pwY0hScGIyNWZhVzVrWlhncGZYMHNieTV6WjNCa1FtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQyWVhJZ2RDeHBPMlp2Y2loMGFHbHpMbVpzWVdkelBUQXNkR2hwY3k1emFYcGxQVEV5TEhROU1EdDBQSFJvYVhNdVpXNTBjbWxsY3k1c1pXNW5kR2c3ZENzcktXazlkR2hwY3k1bGJuUnlhV1Z6VzNSZExIUm9hWE11ZG1WeWMybHZiajA5UFRFbUppaDBhR2x6TG1SbFptRjFiSFJmYkdWdVozUm9QVDA5TUNZbUtIUm9hWE11YzJsNlpTczlOQ2tzZEdocGN5NXphWHBsS3oxcExtUmhkR0V1YkdWdVozUm9LVHRtYjNJb2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFUzUnlhVzVuS0hSb2FYTXVaM0p2ZFhCcGJtZGZkSGx3WlN4dWRXeHNMRFFwTEhSb2FYTXVkbVZ5YzJsdmJqMDlQVEVtSm1VdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1a1pXWmhkV3gwWDJ4bGJtZDBhQ2tzZEdocGN5NTJaWEp6YVc5dVBqMHlKaVpsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WkdWbVlYVnNkRjl6WVcxd2JHVmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZ3BMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTVsYm5SeWFXVnpMbXhsYm1kMGFDa3NkRDB3TzNROGRHaHBjeTVsYm5SeWFXVnpMbXhsYm1kMGFEdDBLeXNwYVQxMGFHbHpMbVZ1ZEhKcFpYTmJkRjBzZEdocGN5NTJaWEp6YVc5dVBUMDlNU1ltZEdocGN5NWtaV1poZFd4MFgyeGxibWQwYUQwOVBUQW1KbVV1ZDNKcGRHVlZhVzUwTXpJb2FTNWtaWE5qY21sd2RHbHZibDlzWlc1bmRHZ3BMR2t1ZDNKcGRHVW9aU2w5TEc4dWMybGtlRUp2ZUM1d2NtOTBiM1I1Y0dVdWQzSnBkR1U5Wm5WdVkzUnBiMjRvWlNsN2RHaHBjeTUyWlhKemFXOXVQVEFzZEdocGN5NW1iR0ZuY3owd0xIUm9hWE11YzJsNlpUMDBLalFyTWlzeUt6RXlLblJvYVhNdWNtVm1aWEpsYm1ObGN5NXNaVzVuZEdnc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVjbVZtWlhKbGJtTmxYMGxFS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWRHbHRaWE5qWVd4bEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVaV0Z5YkdsbGMzUmZjSEpsYzJWdWRHRjBhVzl1WDNScGJXVXBMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTVtYVhKemRGOXZabVp6WlhRcExHVXVkM0pwZEdWVmFXNTBNVFlvTUNrc1pTNTNjbWwwWlZWcGJuUXhOaWgwYUdsekxuSmxabVZ5Wlc1alpYTXViR1Z1WjNSb0tUdG1iM0lvZG1GeUlIUTlNRHQwUEhSb2FYTXVjbVZtWlhKbGJtTmxjeTVzWlc1bmRHZzdkQ3NyS1h0MllYSWdhVDEwYUdsekxuSmxabVZ5Wlc1alpYTmJkRjA3WlM1M2NtbDBaVlZwYm5Rek1paHBMbkpsWm1WeVpXNWpaVjkwZVhCbFBEd3pNWHhwTG5KbFptVnlaVzVqWldSZmMybDZaU2tzWlM1M2NtbDBaVlZwYm5Rek1paHBMbk4xWW5ObFoyMWxiblJmWkhWeVlYUnBiMjRwTEdVdWQzSnBkR1ZWYVc1ME16SW9hUzV6ZEdGeWRITmZkMmwwYUY5VFFWQThQRE14ZkdrdVUwRlFYM1I1Y0dVOFBESTRmR2t1VTBGUVgyUmxiSFJoWDNScGJXVXBmWDBzYnk1emJXaGtRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMblpsY25OcGIyNDlNQ3gwYUdsekxtWnNZV2R6UFRFc2RHaHBjeTV6YVhwbFBUUXNkR2hwY3k1M2NtbDBaVWhsWVdSbGNpaGxLU3hsTG5keWFYUmxWV2x1ZERFMktIUm9hWE11WW1Gc1lXNWpaU2tzWlM1M2NtbDBaVlZwYm5ReE5pZ3dLWDBzYnk1emRHTnZRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MGFHbHpMblpsY25OcGIyNDlNQ3gwYUdsekxtWnNZV2R6UFRBc2RHaHBjeTV6YVhwbFBUUXJOQ3AwYUdsekxtTm9kVzVyWDI5bVpuTmxkSE11YkdWdVozUm9MSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG1Ob2RXNXJYMjltWm5ObGRITXViR1Z1WjNSb0tTeGxMbmR5YVhSbFZXbHVkRE15UVhKeVlYa29kR2hwY3k1amFIVnVhMTl2Wm1aelpYUnpLWDBzYnk1emRITmpRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MllYSWdkRHRtYjNJb2RHaHBjeTUyWlhKemFXOXVQVEFzZEdocGN5NW1iR0ZuY3owd0xIUm9hWE11YzJsNlpUMDBLekV5S25Sb2FYTXVabWx5YzNSZlkyaDFibXN1YkdWdVozUm9MSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG1acGNuTjBYMk5vZFc1ckxteGxibWQwYUNrc2REMHdPM1E4ZEdocGN5NW1hWEp6ZEY5amFIVnVheTVzWlc1bmRHZzdkQ3NyS1dVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1bWFYSnpkRjlqYUhWdWExdDBYU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG5OaGJYQnNaWE5mY0dWeVgyTm9kVzVyVzNSZEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVjMkZ0Y0d4bFgyUmxjMk55YVhCMGFXOXVYMmx1WkdWNFczUmRLWDBzYnk1emRITmtRbTk0TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhsS1h0MllYSWdkRHRtYjNJb2RHaHBjeTUyWlhKemFXOXVQVEFzZEdocGN5NW1iR0ZuY3owd0xIUm9hWE11YzJsNlpUMHdMSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG1WdWRISnBaWE11YkdWdVozUm9LU3gwYUdsekxuTnBlbVVyUFRRc2REMHdPM1E4ZEdocGN5NWxiblJ5YVdWekxteGxibWQwYUR0MEt5c3BkR2hwY3k1bGJuUnlhV1Z6VzNSZExuZHlhWFJsS0dVcExIUm9hWE11YzJsNlpTczlkR2hwY3k1bGJuUnlhV1Z6VzNSZExuTnBlbVU3Y2k1a1pXSjFaeWdpUW05NFYzSnBkR1Z5SWl3aVFXUnFkWE4wYVc1bklHSnZlQ0FpSzNSb2FYTXVkSGx3WlNzaUlIZHBkR2dnYm1WM0lITnBlbVVnSWl0MGFHbHpMbk5wZW1VcExHVXVZV1JxZFhOMFZXbHVkRE15S0hSb2FYTXVjMmw2WlZCdmMybDBhVzl1TEhSb2FYTXVjMmw2WlNsOUxHOHVjM1J6YUVKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhRN1ptOXlLSFJvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11Wm14aFozTTlNQ3gwYUdsekxuTnBlbVU5TkNzNEtuUm9hWE11YzJoaFpHOTNaV1JmYzJGdGNHeGxYMjUxYldKbGNuTXViR1Z1WjNSb0xIUm9hWE11ZDNKcGRHVklaV0ZrWlhJb1pTa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbk5vWVdSdmQyVmtYM05oYlhCc1pWOXVkVzFpWlhKekxteGxibWQwYUNrc2REMHdPM1E4ZEdocGN5NXphR0ZrYjNkbFpGOXpZVzF3YkdWZmJuVnRZbVZ5Y3k1c1pXNW5kR2c3ZENzcktXVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NXphR0ZrYjNkbFpGOXpZVzF3YkdWZmJuVnRZbVZ5YzF0MFhTa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbk41Ym1OZmMyRnRjR3hsWDI1MWJXSmxjbk5iZEYwcGZTeHZMbk4wYzNOQ2IzZ3VjSEp2ZEc5MGVYQmxMbmR5YVhSbFBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11Wm14aFozTTlNQ3gwYUdsekxuTnBlbVU5TkNzMEtuUm9hWE11YzJGdGNHeGxYMjUxYldKbGNuTXViR1Z1WjNSb0xIUm9hWE11ZDNKcGRHVklaV0ZrWlhJb1pTa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbk5oYlhCc1pWOXVkVzFpWlhKekxteGxibWQwYUNrc1pTNTNjbWwwWlZWcGJuUXpNa0Z5Y21GNUtIUm9hWE11YzJGdGNHeGxYMjUxYldKbGNuTXBmU3h2TG5OMGMzcENiM2d1Y0hKdmRHOTBlWEJsTG5keWFYUmxQV1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBMR2s5SVRBN2FXWW9kR2hwY3k1MlpYSnphVzl1UFRBc2RHaHBjeTVtYkdGbmN6MHdMSFJvYVhNdWMyRnRjR3hsWDNOcGVtVnpMbXhsYm1kMGFENHdLV1p2Y2loMFBUQTdkQ3N4UEhSb2FYTXVjMkZ0Y0d4bFgzTnBlbVZ6TG14bGJtZDBhRHNwYVdZb2RHaHBjeTV6WVcxd2JHVmZjMmw2WlhOYmRDc3hYU0U5UFhSb2FYTXVjMkZ0Y0d4bFgzTnBlbVZ6V3pCZEtYdHBQU0V4TzJKeVpXRnJmV1ZzYzJVZ2RDc3JPMlZzYzJVZ2FUMGhNVHQwYUdsekxuTnBlbVU5T0N4cGZId29kR2hwY3k1emFYcGxLejAwS25Sb2FYTXVjMkZ0Y0d4bFgzTnBlbVZ6TG14bGJtZDBhQ2tzZEdocGN5NTNjbWwwWlVobFlXUmxjaWhsS1N4cFAyVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NXpZVzF3YkdWZmMybDZaWE5iTUYwcE9tVXVkM0pwZEdWVmFXNTBNeklvTUNrc1pTNTNjbWwwWlZWcGJuUXpNaWgwYUdsekxuTmhiWEJzWlY5emFYcGxjeTVzWlc1bmRHZ3BMR2w4ZkdVdWQzSnBkR1ZWYVc1ME16SkJjbkpoZVNoMGFHbHpMbk5oYlhCc1pWOXphWHBsY3lsOUxHOHVjM1IwYzBKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhRN1ptOXlLSFJvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11Wm14aFozTTlNQ3gwYUdsekxuTnBlbVU5TkNzNEtuUm9hWE11YzJGdGNHeGxYMk52ZFc1MGN5NXNaVzVuZEdnc2RHaHBjeTUzY21sMFpVaGxZV1JsY2lobEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVjMkZ0Y0d4bFgyTnZkVzUwY3k1c1pXNW5kR2dwTEhROU1EdDBQSFJvYVhNdWMyRnRjR3hsWDJOdmRXNTBjeTVzWlc1bmRHZzdkQ3NyS1dVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1ellXMXdiR1ZmWTI5MWJuUnpXM1JkS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWMyRnRjR3hsWDJSbGJIUmhjMXQwWFNsOUxHOHVkR1prZEVKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhROVRXRjBhQzV3YjNjb01pd3pNaWt0TVR0MGFHbHpMblpsY25OcGIyNDlkR2hwY3k1aVlYTmxUV1ZrYVdGRVpXTnZaR1ZVYVcxbFBuUS9NVG93TEhSb2FYTXVabXhoWjNNOU1DeDBhR2x6TG5OcGVtVTlOQ3gwYUdsekxuWmxjbk5wYjI0OVBUMHhKaVlvZEdocGN5NXphWHBsS3owMEtTeDBhR2x6TG5keWFYUmxTR1ZoWkdWeUtHVXBMSFJvYVhNdWRtVnljMmx2YmowOVBURS9aUzUzY21sMFpWVnBiblEyTkNoMGFHbHpMbUpoYzJWTlpXUnBZVVJsWTI5a1pWUnBiV1VwT21VdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1aVlYTmxUV1ZrYVdGRVpXTnZaR1ZVYVcxbEtYMHNieTUwWm1oa1FtOTRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG5OcGVtVTlOQ3gwYUdsekxtWnNZV2R6Sm04dVZFWklSRjlHVEVGSFgwSkJVMFZmUkVGVVFWOVBSa1pUUlZRbUppaDBhR2x6TG5OcGVtVXJQVGdwTEhSb2FYTXVabXhoWjNNbWJ5NVVSa2hFWDBaTVFVZGZVMEZOVUV4RlgwUkZVME1tSmloMGFHbHpMbk5wZW1VclBUUXBMSFJvYVhNdVpteGhaM01tYnk1VVJraEVYMFpNUVVkZlUwRk5VRXhGWDBSVlVpWW1LSFJvYVhNdWMybDZaU3M5TkNrc2RHaHBjeTVtYkdGbmN5WnZMbFJHU0VSZlJreEJSMTlUUVUxUVRFVmZVMGxhUlNZbUtIUm9hWE11YzJsNlpTczlOQ2tzZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJreEJSMU1tSmloMGFHbHpMbk5wZW1VclBUUXBMSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG5SeVlXTnJYMmxrS1N4MGFHbHpMbVpzWVdkekptOHVWRVpJUkY5R1RFRkhYMEpCVTBWZlJFRlVRVjlQUmtaVFJWUW1KbVV1ZDNKcGRHVlZhVzUwTmpRb2RHaHBjeTVpWVhObFgyUmhkR0ZmYjJabWMyVjBLU3gwYUdsekxtWnNZV2R6Sm04dVZFWklSRjlHVEVGSFgxTkJUVkJNUlY5RVJWTkRKaVpsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WkdWbVlYVnNkRjl6WVcxd2JHVmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZ3BMSFJvYVhNdVpteGhaM01tYnk1VVJraEVYMFpNUVVkZlUwRk5VRXhGWDBSVlVpWW1aUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbVJsWm1GMWJIUmZjMkZ0Y0d4bFgyUjFjbUYwYVc5dUtTeDBhR2x6TG1ac1lXZHpKbTh1VkVaSVJGOUdURUZIWDFOQlRWQk1SVjlUU1ZwRkppWmxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVaR1ZtWVhWc2RGOXpZVzF3YkdWZmMybDZaU2tzZEdocGN5NW1iR0ZuY3ladkxsUkdTRVJmUmt4QlIxOVRRVTFRVEVWZlJreEJSMU1tSm1VdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1a1pXWmhkV3gwWDNOaGJYQnNaVjltYkdGbmN5bDlMRzh1ZEd0b1pFSnZlQzV3Y205MGIzUjVjR1V1ZDNKcGRHVTlablZ1WTNScGIyNG9aU2w3ZEdocGN5NTJaWEp6YVc5dVBUQXNkR2hwY3k1emFYcGxQVFFxTVRnck1pbzBMSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG1OeVpXRjBhVzl1WDNScGJXVXBMR1V1ZDNKcGRHVlZhVzUwTXpJb2RHaHBjeTV0YjJScFptbGpZWFJwYjI1ZmRHbHRaU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG5SeVlXTnJYMmxrS1N4bExuZHlhWFJsVldsdWRETXlLREFwTEdVdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1a2RYSmhkR2x2Ymlrc1pTNTNjbWwwWlZWcGJuUXpNaWd3S1N4bExuZHlhWFJsVldsdWRETXlLREFwTEdVdWQzSnBkR1ZKYm5ReE5paDBhR2x6TG14aGVXVnlLU3hsTG5keWFYUmxTVzUwTVRZb2RHaHBjeTVoYkhSbGNtNWhkR1ZmWjNKdmRYQXBMR1V1ZDNKcGRHVkpiblF4TmloMGFHbHpMblp2YkhWdFpUdzhPQ2tzWlM1M2NtbDBaVlZwYm5ReE5pZ3dLU3hsTG5keWFYUmxTVzUwTXpKQmNuSmhlU2gwYUdsekxtMWhkSEpwZUNrc1pTNTNjbWwwWlZWcGJuUXpNaWgwYUdsekxuZHBaSFJvS1N4bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWFHVnBaMmgwS1gwc2J5NTBjbVY0UW05NExuQnliM1J2ZEhsd1pTNTNjbWwwWlQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5abGNuTnBiMjQ5TUN4MGFHbHpMbVpzWVdkelBUQXNkR2hwY3k1emFYcGxQVFFxTlN4MGFHbHpMbmR5YVhSbFNHVmhaR1Z5S0dVcExHVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NTBjbUZqYTE5cFpDa3NaUzUzY21sMFpWVnBiblF6TWloMGFHbHpMbVJsWm1GMWJIUmZjMkZ0Y0d4bFgyUmxjMk55YVhCMGFXOXVYMmx1WkdWNEtTeGxMbmR5YVhSbFZXbHVkRE15S0hSb2FYTXVaR1ZtWVhWc2RGOXpZVzF3YkdWZlpIVnlZWFJwYjI0cExHVXVkM0pwZEdWVmFXNTBNeklvZEdocGN5NWtaV1poZFd4MFgzTmhiWEJzWlY5emFYcGxLU3hsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11WkdWbVlYVnNkRjl6WVcxd2JHVmZabXhoWjNNcGZTeHZMblJ5ZFc1Q2IzZ3VjSEp2ZEc5MGVYQmxMbmR5YVhSbFBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWRtVnljMmx2Ymowd0xIUm9hWE11YzJsNlpUMDBMSFJvYVhNdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgwUkJWRUZmVDBaR1UwVlVKaVlvZEdocGN5NXphWHBsS3owMEtTeDBhR2x6TG1ac1lXZHpKbTh1VkZKVlRsOUdURUZIVTE5R1NWSlRWRjlHVEVGSEppWW9kR2hwY3k1emFYcGxLejAwS1N4MGFHbHpMbVpzWVdkekptOHVWRkpWVGw5R1RFRkhVMTlFVlZKQlZFbFBUaVltS0hSb2FYTXVjMmw2WlNzOU5DcDBhR2x6TG5OaGJYQnNaVjlrZFhKaGRHbHZiaTVzWlc1bmRHZ3BMSFJvYVhNdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgxTkpXa1VtSmloMGFHbHpMbk5wZW1VclBUUXFkR2hwY3k1ellXMXdiR1ZmYzJsNlpTNXNaVzVuZEdncExIUm9hWE11Wm14aFozTW1ieTVVVWxWT1gwWk1RVWRUWDBaTVFVZFRKaVlvZEdocGN5NXphWHBsS3owMEtuUm9hWE11YzJGdGNHeGxYMlpzWVdkekxteGxibWQwYUNrc2RHaHBjeTVtYkdGbmN5WnZMbFJTVlU1ZlJreEJSMU5mUTFSVFgwOUdSbE5GVkNZbUtIUm9hWE11YzJsNlpTczlOQ3AwYUdsekxuTmhiWEJzWlY5amIyMXdiM05wZEdsdmJsOTBhVzFsWDI5bVpuTmxkQzVzWlc1bmRHZ3BMSFJvYVhNdWQzSnBkR1ZJWldGa1pYSW9aU2tzWlM1M2NtbDBaVlZwYm5Rek1paDBhR2x6TG5OaGJYQnNaVjlqYjNWdWRDa3NkR2hwY3k1bWJHRm5jeVp2TGxSU1ZVNWZSa3hCUjFOZlJFRlVRVjlQUmtaVFJWUW1KaWgwYUdsekxtUmhkR0ZmYjJabWMyVjBYM0J2YzJsMGFXOXVQV1V1WjJWMFVHOXphWFJwYjI0b0tTeGxMbmR5YVhSbFNXNTBNeklvZEdocGN5NWtZWFJoWDI5bVpuTmxkQ2twTEhSb2FYTXVabXhoWjNNbWJ5NVVVbFZPWDBaTVFVZFRYMFpKVWxOVVgwWk1RVWNtSm1VdWQzSnBkR1ZWYVc1ME16SW9kR2hwY3k1bWFYSnpkRjl6WVcxd2JHVmZabXhoWjNNcE8yWnZjaWgyWVhJZ2REMHdPM1E4ZEdocGN5NXpZVzF3YkdWZlkyOTFiblE3ZENzcktYUm9hWE11Wm14aFozTW1ieTVVVWxWT1gwWk1RVWRUWDBSVlVrRlVTVTlPSmlabExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWMyRnRjR3hsWDJSMWNtRjBhVzl1VzNSZEtTeDBhR2x6TG1ac1lXZHpKbTh1VkZKVlRsOUdURUZIVTE5VFNWcEZKaVpsTG5keWFYUmxWV2x1ZERNeUtIUm9hWE11YzJGdGNHeGxYM05wZW1WYmRGMHBMSFJvYVhNdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgwWk1RVWRUSmlabExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWMyRnRjR3hsWDJac1lXZHpXM1JkS1N4MGFHbHpMbVpzWVdkekptOHVWRkpWVGw5R1RFRkhVMTlEVkZOZlQwWkdVMFZVSmlZb2RHaHBjeTUyWlhKemFXOXVQVDA5TUQ5bExuZHlhWFJsVldsdWRETXlLSFJvYVhNdWMyRnRjR3hsWDJOdmJYQnZjMmwwYVc5dVgzUnBiV1ZmYjJabWMyVjBXM1JkS1RwbExuZHlhWFJsU1c1ME16SW9kR2hwY3k1ellXMXdiR1ZmWTI5dGNHOXphWFJwYjI1ZmRHbHRaVjl2Wm1aelpYUmJkRjBwS1gwc2Ixc2lkWEpzSUVKdmVDSmRMbkJ5YjNSdmRIbHdaUzUzY21sMFpUMW1kVzVqZEdsdmJpaGxLWHQwYUdsekxuWmxjbk5wYjI0OU1DeDBhR2x6TG14dlkyRjBhVzl1UHloMGFHbHpMbVpzWVdkelBUQXNkR2hwY3k1emFYcGxQWFJvYVhNdWJHOWpZWFJwYjI0dWJHVnVaM1JvS3pFcE9paDBhR2x6TG1ac1lXZHpQVEVzZEdocGN5NXphWHBsUFRBcExIUm9hWE11ZDNKcGRHVklaV0ZrWlhJb1pTa3NkR2hwY3k1c2IyTmhkR2x2YmlZbVpTNTNjbWwwWlVOVGRISnBibWNvZEdocGN5NXNiMk5oZEdsdmJpbDlMRzliSW5WeWJpQkNiM2dpWFM1d2NtOTBiM1I1Y0dVdWQzSnBkR1U5Wm5WdVkzUnBiMjRvWlNsN2RHaHBjeTUyWlhKemFXOXVQVEFzZEdocGN5NW1iR0ZuY3owd0xIUm9hWE11YzJsNlpUMTBhR2x6TG01aGJXVXViR1Z1WjNSb0t6RXJLSFJvYVhNdWJHOWpZWFJwYjI0L2RHaHBjeTVzYjJOaGRHbHZiaTVzWlc1bmRHZ3JNVG93S1N4MGFHbHpMbmR5YVhSbFNHVmhaR1Z5S0dVcExHVXVkM0pwZEdWRFUzUnlhVzVuS0hSb2FYTXVibUZ0WlNrc2RHaHBjeTVzYjJOaGRHbHZiaVltWlM1M2NtbDBaVU5UZEhKcGJtY29kR2hwY3k1c2IyTmhkR2x2YmlsOUxHOHVkbTFvWkVKdmVDNXdjbTkwYjNSNWNHVXVkM0pwZEdVOVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1MlpYSnphVzl1UFRBc2RHaHBjeTVtYkdGbmN6MHhMSFJvYVhNdWMybDZaVDA0TEhSb2FYTXVkM0pwZEdWSVpXRmtaWElvWlNrc1pTNTNjbWwwWlZWcGJuUXhOaWgwYUdsekxtZHlZWEJvYVdOemJXOWtaU2tzWlM1M2NtbDBaVlZwYm5ReE5rRnljbUY1S0hSb2FYTXViM0JqYjJ4dmNpbDlMRzh1WTNSMGMwSnZlQzV3Y205MGIzUjVjR1V1ZFc1d1lXTnJQV1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBMR2tzWmp0bWIzSW9aajB3TEhROU1EdDBQSFJvYVhNdWMyRnRjR3hsWDJOdmRXNTBjeTVzWlc1bmRHZzdkQ3NyS1dadmNpaHBQVEE3YVR4MGFHbHpMbk5oYlhCc1pWOWpiM1Z1ZEhOYmRGMDdhU3NyS1dWYlpsMHVjSFJ6UFdWYlpsMHVaSFJ6SzNSb2FYTXVjMkZ0Y0d4bFgyOW1abk5sZEhOYmRGMHNaaXNyZlN4dkxuTjBkSE5DYjNndWNISnZkRzkwZVhCbExuVnVjR0ZqYXoxbWRXNWpkR2x2YmlobEtYdDJZWElnZEN4cExHWTdabTl5S0dZOU1DeDBQVEE3ZER4MGFHbHpMbk5oYlhCc1pWOWpiM1Z1ZEhNdWJHVnVaM1JvTzNRckt5bG1iM0lvYVQwd08yazhkR2hwY3k1ellXMXdiR1ZmWTI5MWJuUnpXM1JkTzJrckt5bG1QVDA5TUQ5bFcyWmRMbVIwY3owd09tVmJabDB1WkhSelBXVmJaaTB4WFM1a2RITXJkR2hwY3k1ellXMXdiR1ZmWkdWc2RHRnpXM1JkTEdZckszMHNieTV6ZEdOdlFtOTRMbkJ5YjNSdmRIbHdaUzUxYm5CaFkyczlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTdabTl5S0hROU1EdDBQSFJvYVhNdVkyaDFibXRmYjJabWMyVjBjeTVzWlc1bmRHZzdkQ3NyS1dWYmRGMHViMlptYzJWMFBYUm9hWE11WTJoMWJtdGZiMlptYzJWMGMxdDBYWDBzYnk1emRITmpRbTk0TG5CeWIzUnZkSGx3WlM1MWJuQmhZMnM5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFFzYVN4bUxIVXNkanRtYjNJb2RUMHdMSFk5TUN4MFBUQTdkRHgwYUdsekxtWnBjbk4wWDJOb2RXNXJMbXhsYm1kMGFEdDBLeXNwWm05eUtHazlNRHRwUENoMEt6RThkR2hwY3k1bWFYSnpkRjlqYUhWdWF5NXNaVzVuZEdnL2RHaHBjeTVtYVhKemRGOWphSFZ1YTF0MEt6RmRPakV2TUNrN2FTc3JLV1p2Y2loMkt5c3NaajB3TzJZOGRHaHBjeTV6WVcxd2JHVnpYM0JsY2w5amFIVnVhMXQwWFR0bUt5c3BlMmxtS0dWYmRWMHBaVnQxWFM1a1pYTmpjbWx3ZEdsdmJsOXBibVJsZUQxMGFHbHpMbk5oYlhCc1pWOWtaWE5qY21sd2RHbHZibDlwYm1SbGVGdDBYU3hsVzNWZExtTm9kVzVyWDJsdVpHVjRQWFk3Wld4elpTQnlaWFIxY200N2RTc3JmWDBzYnk1emRITjZRbTk0TG5CeWIzUnZkSGx3WlM1MWJuQmhZMnM5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE3Wm05eUtIUTlNRHQwUEhSb2FYTXVjMkZ0Y0d4bFgzTnBlbVZ6TG14bGJtZDBhRHQwS3lzcFpWdDBYUzV6YVhwbFBYUm9hWE11YzJGdGNHeGxYM05wZW1WelczUmRmU3h2TGtSSlJrWmZRazlZUlZOZlVGSlBVRjlPUVUxRlV6MWJJbUp2ZUdWeklpd2laVzUwY21sbGN5SXNJbkpsWm1WeVpXNWpaWE1pTENKemRXSnpZVzF3YkdWeklpd2lhWFJsYlhNaUxDSnBkR1Z0WDJsdVptOXpJaXdpWlhoMFpXNTBjeUlzSW1GemMyOWphV0YwYVc5dWN5SXNJbk4xWW5ObFoyMWxiblJ6SWl3aWNtRnVaMlZ6SWl3aWMyVmxhMHhwYzNSeklpd2ljMlZsYTFCdmFXNTBjeUlzSW1WelpDSXNJbXhsZG1Wc2N5SmRMRzh1UkVsR1JsOVFVa2xOU1ZSSlZrVmZRVkpTUVZsZlVGSlBVRjlPUVUxRlV6MWJJbU52YlhCaGRHbGliR1ZmWW5KaGJtUnpJaXdpYldGMGNtbDRJaXdpYjNCamIyeHZjaUlzSW5OaGJYQnNaVjlqYjNWdWRITWlMQ0p6WVcxd2JHVmZZMjkxYm5Seklpd2ljMkZ0Y0d4bFgyUmxiSFJoY3lJc0ltWnBjbk4wWDJOb2RXNXJJaXdpYzJGdGNHeGxjMTl3WlhKZlkyaDFibXNpTENKellXMXdiR1ZmYzJsNlpYTWlMQ0pqYUhWdWExOXZabVp6WlhSeklpd2ljMkZ0Y0d4bFgyOW1abk5sZEhNaUxDSnpZVzF3YkdWZlpHVnpZM0pwY0hScGIyNWZhVzVrWlhnaUxDSnpZVzF3YkdWZlpIVnlZWFJwYjI0aVhTeHZMbUp2ZUVWeGRXRnNSbWxsYkdSelBXWjFibU4wYVc5dUtHVXNkQ2w3YVdZb1pTWW1JWFFwY21WMGRYSnVJVEU3ZG1GeUlHazdabTl5S0drZ2FXNGdaU2xwWmlnaEtHOHVSRWxHUmw5Q1QxaEZVMTlRVWs5UVgwNUJUVVZUTG1sdVpHVjRUMllvYVNrK0xURXBLWHRwWmlobFcybGRhVzV6ZEdGdVkyVnZaaUJ2TGtKdmVIeDhkRnRwWFdsdWMzUmhibU5sYjJZZ2J5NUNiM2dwWTI5dWRHbHVkV1U3YVdZb2RIbHdaVzltSUdWYmFWMCtJblVpZkh4MGVYQmxiMllnZEZ0cFhUNGlkU0lwWTI5dWRHbHVkV1U3YVdZb2RIbHdaVzltSUdWYmFWMDlQU0ptZFc1amRHbHZiaUo4ZkhSNWNHVnZaaUIwVzJsZFBUMGlablZ1WTNScGIyNGlLV052Ym5ScGJuVmxPMmxtS0dVdWMzVmlRbTk0VG1GdFpYTW1KbVV1YzNWaVFtOTRUbUZ0WlhNdWFXNWtaWGhQWmlocExuTnNhV05sS0RBc05Da3BQaTB4Zkh4MExuTjFZa0p2ZUU1aGJXVnpKaVowTG5OMVlrSnZlRTVoYldWekxtbHVaR1Y0VDJZb2FTNXpiR2xqWlNnd0xEUXBLVDR0TVNsamIyNTBhVzUxWlR0cFppaHBQVDA5SW1SaGRHRWlmSHhwUFQwOUluTjBZWEowSW54OGFUMDlQU0p6YVhwbElueDhhVDA5UFNKamNtVmhkR2x2Ymw5MGFXMWxJbng4YVQwOVBTSnRiMlJwWm1sallYUnBiMjVmZEdsdFpTSXBZMjl1ZEdsdWRXVTdhV1lvYnk1RVNVWkdYMUJTU1UxSlZFbFdSVjlCVWxKQldWOVFVazlRWDA1QlRVVlRMbWx1WkdWNFQyWW9hU2srTFRFcFkyOXVkR2x1ZFdVN2FXWW9aVnRwWFNFOVBYUmJhVjBwY21WMGRYSnVJVEY5Y21WMGRYSnVJVEI5TEc4dVltOTRSWEYxWVd3OVpuVnVZM1JwYjI0b1pTeDBLWHRwWmlnaGJ5NWliM2hGY1hWaGJFWnBaV3hrY3lobExIUXBLWEpsZEhWeWJpRXhPMlp2Y2loMllYSWdhVDB3TzJrOGJ5NUVTVVpHWDBKUFdFVlRYMUJTVDFCZlRrRk5SVk11YkdWdVozUm9PMmtyS3lsN2RtRnlJR1k5Ynk1RVNVWkdYMEpQV0VWVFgxQlNUMUJmVGtGTlJWTmJhVjA3YVdZb1pWdG1YU1ltZEZ0bVhTWW1JVzh1WW05NFJYRjFZV3dvWlZ0bVhTeDBXMlpkS1NseVpYUjFjbTRoTVgxeVpYUjFjbTRoTUgwN2RtRnlJRjg5Wm5WdVkzUnBiMjRvS1h0OU8xOHVjSEp2ZEc5MGVYQmxMbkJoY25ObFUyRnRjR3hsUFdaMWJtTjBhVzl1S0dVcGUzWmhjaUIwUFh0OUxHazdkQzV5WlhOdmRYSmpaWE05VzEwN2RtRnlJR1k5Ym1WM0lHRW9aUzVrWVhSaExtSjFabVpsY2lrN2FXWW9JV1V1YzNWaWMyRnRjR3hsYzN4OFpTNXpkV0p6WVcxd2JHVnpMbXhsYm1kMGFEMDlQVEFwZEM1a2IyTjFiV1Z1ZEZOMGNtbHVaejFtTG5KbFlXUlRkSEpwYm1jb1pTNWtZWFJoTG14bGJtZDBhQ2s3Wld4elpTQnBaaWgwTG1SdlkzVnRaVzUwVTNSeWFXNW5QV1l1Y21WaFpGTjBjbWx1WnlobExuTjFZbk5oYlhCc1pYTmJNRjB1YzJsNlpTa3NaUzV6ZFdKellXMXdiR1Z6TG14bGJtZDBhRDR4S1dadmNpaHBQVEU3YVR4bExuTjFZbk5oYlhCc1pYTXViR1Z1WjNSb08ya3JLeWwwTG5KbGMyOTFjbU5sYzF0cFhUMW1MbkpsWVdSVmFXNTBPRUZ5Y21GNUtHVXVjM1ZpYzJGdGNHeGxjMXRwWFM1emFYcGxLVHR5WlhSMWNtNGdkSGx3Wlc5bUlFUlBUVkJoY25ObGNqd2lkU0ltSmloMExtUnZZM1Z0Wlc1MFBXNWxkeUJFVDAxUVlYSnpaWElvS1M1d1lYSnpaVVp5YjIxVGRISnBibWNvZEM1a2IyTjFiV1Z1ZEZOMGNtbHVaeXdpWVhCd2JHbGpZWFJwYjI0dmVHMXNJaWtwTEhSOU8zWmhjaUJ3UFdaMWJtTjBhVzl1S0NsN2ZUdHdMbkJ5YjNSdmRIbHdaUzV3WVhKelpWTmhiWEJzWlQxbWRXNWpkR2x2YmlobEtYdDJZWElnZEN4cFBXNWxkeUJoS0dVdVpHRjBZUzVpZFdabVpYSXBPM0psZEhWeWJpQjBQV2t1Y21WaFpGTjBjbWx1WnlobExtUmhkR0V1YkdWdVozUm9LU3gwZlN4d0xuQnliM1J2ZEhsd1pTNXdZWEp6WlVOdmJtWnBaejFtZFc1amRHbHZiaWhsS1h0MllYSWdkQ3hwUFc1bGR5QmhLR1V1WW5WbVptVnlLVHR5WlhSMWNtNGdhUzV5WldGa1ZXbHVkRE15S0Nrc2REMXBMbkpsWVdSRFUzUnlhVzVuS0Nrc2RIMHNiaTVZVFV4VGRXSjBhWFJzWldsdU5GQmhjbk5sY2oxZkxHNHVWR1Y0ZEdsdU5GQmhjbk5sY2oxd08zWmhjaUJqUFdaMWJtTjBhVzl1S0dVcGUzUm9hWE11YzNSeVpXRnRQV1Y4Zkc1bGR5QmtMSFJvYVhNdVltOTRaWE05VzEwc2RHaHBjeTV0WkdGMGN6MWJYU3gwYUdsekxtMXZiMlp6UFZ0ZExIUm9hWE11YVhOUWNtOW5jbVZ6YzJsMlpUMGhNU3gwYUdsekxtMXZiM1pUZEdGeWRFWnZkVzVrUFNFeExIUm9hWE11YjI1TmIyOTJVM1JoY25ROWJuVnNiQ3gwYUdsekxtMXZiM1pUZEdGeWRGTmxiblE5SVRFc2RHaHBjeTV2YmxKbFlXUjVQVzUxYkd3c2RHaHBjeTV5WldGa2VWTmxiblE5SVRFc2RHaHBjeTV2YmxObFoyMWxiblE5Ym5Wc2JDeDBhR2x6TG05dVUyRnRjR3hsY3oxdWRXeHNMSFJvYVhNdWIyNUZjbkp2Y2oxdWRXeHNMSFJvYVhNdWMyRnRjR3hsVEdsemRFSjFhV3gwUFNFeExIUm9hWE11Wm5KaFoyMWxiblJsWkZSeVlXTnJjejFiWFN4MGFHbHpMbVY0ZEhKaFkzUmxaRlJ5WVdOcmN6MWJYU3gwYUdsekxtbHpSbkpoWjIxbGJuUmhkR2x2YmtsdWFYUnBZV3hwZW1Wa1BTRXhMSFJvYVhNdWMyRnRjR3hsVUhKdlkyVnpjMmx1WjFOMFlYSjBaV1E5SVRFc2RHaHBjeTV1WlhoMFRXOXZaazUxYldKbGNqMHdMSFJvYVhNdWFYUmxiVXhwYzNSQ2RXbHNkRDBoTVN4MGFHbHpMbTl1VTJsa2VEMXVkV3hzTEhSb2FYTXVjMmxrZUZObGJuUTlJVEY5TzJNdWNISnZkRzkwZVhCbExuTmxkRk5sWjIxbGJuUlBjSFJwYjI1elBXWjFibU4wYVc5dUtHVXNkQ3hwS1h0MllYSWdaajEwYUdsekxtZGxkRlJ5WVdOclFubEpaQ2hsS1R0cFppaG1LWHQyWVhJZ2RUMTdmVHQwYUdsekxtWnlZV2R0Wlc1MFpXUlVjbUZqYTNNdWNIVnphQ2gxS1N4MUxtbGtQV1VzZFM1MWMyVnlQWFFzZFM1MGNtRnJQV1lzWmk1dVpYaDBVMkZ0Y0d4bFBUQXNkUzV6WldkdFpXNTBVM1J5WldGdFBXNTFiR3dzZFM1dVlsOXpZVzF3YkdWelBURmxNeXgxTG5KaGNFRnNhV2R1WlcxbGJuUTlJVEFzYVNZbUtHa3VibUpUWVcxd2JHVnpKaVlvZFM1dVlsOXpZVzF3YkdWelBXa3VibUpUWVcxd2JHVnpLU3hwTG5KaGNFRnNhV2R1WlcxbGJuUW1KaWgxTG5KaGNFRnNhV2R1WlcxbGJuUTlhUzV5WVhCQmJHbG5ibVZ0Wlc1MEtTbDlmU3hqTG5CeWIzUnZkSGx3WlM1MWJuTmxkRk5sWjIxbGJuUlBjSFJwYjI1elBXWjFibU4wYVc5dUtHVXBlMlp2Y2loMllYSWdkRDB0TVN4cFBUQTdhVHgwYUdsekxtWnlZV2R0Wlc1MFpXUlVjbUZqYTNNdWJHVnVaM1JvTzJrckt5bDdkbUZ5SUdZOWRHaHBjeTVtY21GbmJXVnVkR1ZrVkhKaFkydHpXMmxkTzJZdWFXUTlQV1VtSmloMFBXa3BmWFErTFRFbUpuUm9hWE11Wm5KaFoyMWxiblJsWkZSeVlXTnJjeTV6Y0d4cFkyVW9kQ3d4S1gwc1l5NXdjbTkwYjNSNWNHVXVjMlYwUlhoMGNtRmpkR2x2Yms5d2RHbHZibk05Wm5WdVkzUnBiMjRvWlN4MExHa3BlM1poY2lCbVBYUm9hWE11WjJWMFZISmhZMnRDZVVsa0tHVXBPMmxtS0dZcGUzWmhjaUIxUFh0OU8zUm9hWE11WlhoMGNtRmpkR1ZrVkhKaFkydHpMbkIxYzJnb2RTa3NkUzVwWkQxbExIVXVkWE5sY2oxMExIVXVkSEpoYXoxbUxHWXVibVY0ZEZOaGJYQnNaVDB3TEhVdWJtSmZjMkZ0Y0d4bGN6MHhaVE1zZFM1ellXMXdiR1Z6UFZ0ZExHa21KbWt1Ym1KVFlXMXdiR1Z6SmlZb2RTNXVZbDl6WVcxd2JHVnpQV2t1Ym1KVFlXMXdiR1Z6S1gxOUxHTXVjSEp2ZEc5MGVYQmxMblZ1YzJWMFJYaDBjbUZqZEdsdmJrOXdkR2x2Ym5NOVpuVnVZM1JwYjI0b1pTbDdabTl5S0haaGNpQjBQUzB4TEdrOU1EdHBQSFJvYVhNdVpYaDBjbUZqZEdWa1ZISmhZMnR6TG14bGJtZDBhRHRwS3lzcGUzWmhjaUJtUFhSb2FYTXVaWGgwY21GamRHVmtWSEpoWTJ0elcybGRPMll1YVdROVBXVW1KaWgwUFdrcGZYUStMVEVtSm5Sb2FYTXVaWGgwY21GamRHVmtWSEpoWTJ0ekxuTndiR2xqWlNoMExERXBmU3hqTG5CeWIzUnZkSGx3WlM1d1lYSnpaVDFtZFc1amRHbHZiaWdwZTNaaGNpQmxMSFFzYVQwaE1UdHBaaWdoS0hSb2FYTXVjbVZ6ZEc5eVpWQmhjbk5sVUc5emFYUnBiMjRtSmlGMGFHbHpMbkpsYzNSdmNtVlFZWEp6WlZCdmMybDBhVzl1S0NrcEtXWnZjaWc3T3lscFppaDBhR2x6TG1oaGMwbHVZMjl0Y0d4bGRHVk5aR0YwSmlaMGFHbHpMbWhoYzBsdVkyOXRjR3hsZEdWTlpHRjBLQ2twZTJsbUtIUm9hWE11Y0hKdlkyVnpjMGx1WTI5dGNHeGxkR1ZOWkdGMEtDa3BZMjl1ZEdsdWRXVTdjbVYwZFhKdWZXVnNjMlVnYVdZb2RHaHBjeTV6WVhabFVHRnljMlZRYjNOcGRHbHZiaVltZEdocGN5NXpZWFpsVUdGeWMyVlFiM05wZEdsdmJpZ3BMR1U5Ynk1d1lYSnpaVTl1WlVKdmVDaDBhR2x6TG5OMGNtVmhiU3hwS1N4bExtTnZaR1U5UFQxdkxrVlNVbDlPVDFSZlJVNVBWVWRJWDBSQlZFRXBhV1lvZEdocGN5NXdjbTlqWlhOelNXNWpiMjF3YkdWMFpVSnZlQ2w3YVdZb2RHaHBjeTV3Y205alpYTnpTVzVqYjIxd2JHVjBaVUp2ZUNobEtTbGpiMjUwYVc1MVpUdHlaWFIxY201OVpXeHpaU0J5WlhSMWNtNDdaV3h6Wlh0MllYSWdaanR6ZDJsMFkyZ29kRDFsTG1KdmVDeG1QWFF1ZEhsd1pTRTlQU0oxZFdsa0lqOTBMblI1Y0dVNmRDNTFkV2xrTEhSb2FYTXVZbTk0WlhNdWNIVnphQ2gwS1N4bUtYdGpZWE5sSW0xa1lYUWlPblJvYVhNdWJXUmhkSE11Y0hWemFDaDBLVHRpY21WaGF6dGpZWE5sSW0xdmIyWWlPblJvYVhNdWJXOXZabk11Y0hWemFDaDBLVHRpY21WaGF6dGpZWE5sSW0xdmIzWWlPblJvYVhNdWJXOXZkbE4wWVhKMFJtOTFibVE5SVRBc2RHaHBjeTV0WkdGMGN5NXNaVzVuZEdnOVBUMHdKaVlvZEdocGN5NXBjMUJ5YjJkeVpYTnphWFpsUFNFd0tUdGtaV1poZFd4ME9uUm9hWE5iWmwwaFBUMTJiMmxrSURBbUpuSXVkMkZ5YmlnaVNWTlBSbWxzWlNJc0lrUjFjR3hwWTJGMFpTQkNiM2dnYjJZZ2RIbHdaVG9nSWl0bUt5SXNJRzkyWlhKeWFXUnBibWNnY0hKbGRtbHZkWE1nYjJOamRYSnlaVzVqWlNJcExIUm9hWE5iWmwwOWREdGljbVZoYTMxMGFHbHpMblZ3WkdGMFpWVnpaV1JDZVhSbGN5WW1kR2hwY3k1MWNHUmhkR1ZWYzJWa1FubDBaWE1vZEN4bEtYMTlMR011Y0hKdmRHOTBlWEJsTG1Ob1pXTnJRblZtWm1WeVBXWjFibU4wYVc5dUtHVXBlMmxtS0dVOVBXNTFiR3dwZEdoeWIzY2lRblZtWm1WeUlHMTFjM1FnWW1VZ1pHVm1hVzVsWkNCaGJtUWdibTl1SUdWdGNIUjVJanRwWmlobExtWnBiR1ZUZEdGeWREMDlQWFp2YVdRZ01DbDBhSEp2ZHlKQ2RXWm1aWElnYlhWemRDQm9ZWFpsSUdFZ1ptbHNaVk4wWVhKMElIQnliM0JsY25SNUlqdHlaWFIxY200Z1pTNWllWFJsVEdWdVozUm9QVDA5TUQ4b2NpNTNZWEp1S0NKSlUwOUdhV3hsSWl3aVNXZHViM0pwYm1jZ1pXMXdkSGtnWW5WbVptVnlJQ2htYVd4bFUzUmhjblE2SUNJclpTNW1hV3hsVTNSaGNuUXJJaWtpS1N4MGFHbHpMbk4wY21WaGJTNXNiMmRDZFdabVpYSk1aWFpsYkNncExDRXhLVG9vY2k1cGJtWnZLQ0pKVTA5R2FXeGxJaXdpVUhKdlkyVnpjMmx1WnlCaWRXWm1aWElnS0dacGJHVlRkR0Z5ZERvZ0lpdGxMbVpwYkdWVGRHRnlkQ3NpS1NJcExHVXVkWE5sWkVKNWRHVnpQVEFzZEdocGN5NXpkSEpsWVcwdWFXNXpaWEowUW5WbVptVnlLR1VwTEhSb2FYTXVjM1J5WldGdExteHZaMEoxWm1abGNreGxkbVZzS0Nrc2RHaHBjeTV6ZEhKbFlXMHVhVzVwZEdsaGJHbDZaV1FvS1Q4aE1Eb29jaTUzWVhKdUtDSkpVMDlHYVd4bElpd2lUbTkwSUhKbFlXUjVJSFJ2SUhOMFlYSjBJSEJoY25OcGJtY2lLU3doTVNrcGZTeGpMbkJ5YjNSdmRIbHdaUzVoY0hCbGJtUkNkV1ptWlhJOVpuVnVZM1JwYjI0b1pTeDBLWHQyWVhJZ2FUdHBaaWgwYUdsekxtTm9aV05yUW5WbVptVnlLR1VwS1hKbGRIVnliaUIwYUdsekxuQmhjbk5sS0Nrc2RHaHBjeTV0YjI5MlUzUmhjblJHYjNWdVpDWW1JWFJvYVhNdWJXOXZkbE4wWVhKMFUyVnVkQ1ltS0hSb2FYTXViVzl2ZGxOMFlYSjBVMlZ1ZEQwaE1DeDBhR2x6TG05dVRXOXZkbE4wWVhKMEppWjBhR2x6TG05dVRXOXZkbE4wWVhKMEtDa3BMSFJvYVhNdWJXOXZkajhvZEdocGN5NXpZVzF3YkdWTWFYTjBRblZwYkhSOGZDaDBhR2x6TG1KMWFXeGtVMkZ0Y0d4bFRHbHpkSE1vS1N4MGFHbHpMbk5oYlhCc1pVeHBjM1JDZFdsc2REMGhNQ2tzZEdocGN5NTFjR1JoZEdWVFlXMXdiR1ZNYVhOMGN5Z3BMSFJvYVhNdWIyNVNaV0ZrZVNZbUlYUm9hWE11Y21WaFpIbFRaVzUwSmlZb2RHaHBjeTV5WldGa2VWTmxiblE5SVRBc2RHaHBjeTV2YmxKbFlXUjVLSFJvYVhNdVoyVjBTVzVtYnlncEtTa3NkR2hwY3k1d2NtOWpaWE56VTJGdGNHeGxjeWgwS1N4MGFHbHpMbTVsZUhSVFpXVnJVRzl6YVhScGIyNC9LR2s5ZEdocGN5NXVaWGgwVTJWbGExQnZjMmwwYVc5dUxIUm9hWE11Ym1WNGRGTmxaV3RRYjNOcGRHbHZiajEyYjJsa0lEQXBPbWs5ZEdocGN5NXVaWGgwVUdGeWMyVlFiM05wZEdsdmJpeDBhR2x6TG5OMGNtVmhiUzVuWlhSRmJtUkdhV3hsVUc5emFYUnBiMjVCWm5SbGNpWW1LR2s5ZEdocGN5NXpkSEpsWVcwdVoyVjBSVzVrUm1sc1pWQnZjMmwwYVc5dVFXWjBaWElvYVNrcEtUcDBhR2x6TG01bGVIUlFZWEp6WlZCdmMybDBhVzl1UDJrOWRHaHBjeTV1WlhoMFVHRnljMlZRYjNOcGRHbHZianBwUFRBc2RHaHBjeTV6YVdSNEppWjBhR2x6TG05dVUybGtlQ1ltSVhSb2FYTXVjMmxrZUZObGJuUW1KaWgwYUdsekxtOXVVMmxrZUNoMGFHbHpMbk5wWkhncExIUm9hWE11YzJsa2VGTmxiblE5SVRBcExIUm9hWE11YldWMFlTWW1LSFJvYVhNdVpteGhkSFJsYmtsMFpXMUpibVp2SmlZaGRHaHBjeTVwZEdWdFRHbHpkRUoxYVd4MEppWW9kR2hwY3k1bWJHRjBkR1Z1U1hSbGJVbHVabThvS1N4MGFHbHpMbWwwWlcxTWFYTjBRblZwYkhROUlUQXBMSFJvYVhNdWNISnZZMlZ6YzBsMFpXMXpKaVowYUdsekxuQnliMk5sYzNOSmRHVnRjeWgwYUdsekxtOXVTWFJsYlNrcExIUm9hWE11YzNSeVpXRnRMbU5zWldGdVFuVm1abVZ5Y3lZbUtISXVhVzVtYnlnaVNWTlBSbWxzWlNJc0lrUnZibVVnY0hKdlkyVnpjMmx1WnlCaWRXWm1aWElnS0dacGJHVlRkR0Z5ZERvZ0lpdGxMbVpwYkdWVGRHRnlkQ3NpS1NBdElHNWxlSFFnWW5WbVptVnlJSFJ2SUdabGRHTm9JSE5vYjNWc1pDQm9ZWFpsSUdFZ1ptbHNaVk4wWVhKMElIQnZjMmwwYVc5dUlHOW1JQ0lyYVNrc2RHaHBjeTV6ZEhKbFlXMHViRzluUW5WbVptVnlUR1YyWld3b0tTeDBhR2x6TG5OMGNtVmhiUzVqYkdWaGJrSjFabVpsY25Nb0tTeDBhR2x6TG5OMGNtVmhiUzVzYjJkQ2RXWm1aWEpNWlhabGJDZ2hNQ2tzY2k1cGJtWnZLQ0pKVTA5R2FXeGxJaXdpVTJGdGNHeGxJR1JoZEdFZ2MybDZaU0JwYmlCdFpXMXZjbms2SUNJcmRHaHBjeTVuWlhSQmJHeHZZMkYwWldSVFlXMXdiR1ZFWVhSaFUybDZaU2dwS1Nrc2FYMHNZeTV3Y205MGIzUjVjR1V1WjJWMFNXNW1iejFtZFc1amRHbHZiaWdwZTNaaGNpQmxMSFFzYVQxN2ZTeG1MSFVzZGl4NUxHMDlibVYzSUVSaGRHVW9JakU1TURRdE1ERXRNREZVTURBNk1EQTZNREJhSWlrdVoyVjBWR2x0WlNncE8ybG1LSFJvYVhNdWJXOXZkaWxtYjNJb2FTNW9ZWE5OYjI5MlBTRXdMR2t1WkhWeVlYUnBiMjQ5ZEdocGN5NXRiMjkyTG0xMmFHUXVaSFZ5WVhScGIyNHNhUzUwYVcxbGMyTmhiR1U5ZEdocGN5NXRiMjkyTG0xMmFHUXVkR2x0WlhOallXeGxMR2t1YVhOR2NtRm5iV1Z1ZEdWa1BYUm9hWE11Ylc5dmRpNXRkbVY0SVQxdWRXeHNMR2t1YVhOR2NtRm5iV1Z1ZEdWa0ppWjBhR2x6TG0xdmIzWXViWFpsZUM1dFpXaGtKaVlvYVM1bWNtRm5iV1Z1ZEY5a2RYSmhkR2x2YmoxMGFHbHpMbTF2YjNZdWJYWmxlQzV0Wldoa0xtWnlZV2R0Wlc1MFgyUjFjbUYwYVc5dUtTeHBMbWx6VUhKdlozSmxjM05wZG1VOWRHaHBjeTVwYzFCeWIyZHlaWE56YVhabExHa3VhR0Z6U1U5RVBYUm9hWE11Ylc5dmRpNXBiMlJ6SVQxdWRXeHNMR2t1WW5KaGJtUnpQVnRkTEdrdVluSmhibVJ6TG5CMWMyZ29kR2hwY3k1bWRIbHdMbTFoYW05eVgySnlZVzVrS1N4cExtSnlZVzVrY3oxcExtSnlZVzVrY3k1amIyNWpZWFFvZEdocGN5NW1kSGx3TG1OdmJYQmhkR2xpYkdWZlluSmhibVJ6S1N4cExtTnlaV0YwWldROWJtVjNJRVJoZEdVb2JTdDBhR2x6TG0xdmIzWXViWFpvWkM1amNtVmhkR2x2Ymw5MGFXMWxLakZsTXlrc2FTNXRiMlJwWm1sbFpEMXVaWGNnUkdGMFpTaHRLM1JvYVhNdWJXOXZkaTV0ZG1oa0xtMXZaR2xtYVdOaGRHbHZibDkwYVcxbEtqRmxNeWtzYVM1MGNtRmphM005VzEwc2FTNWhkV1JwYjFSeVlXTnJjejFiWFN4cExuWnBaR1Z2VkhKaFkydHpQVnRkTEdrdWMzVmlkR2wwYkdWVWNtRmphM005VzEwc2FTNXRaWFJoWkdGMFlWUnlZV05yY3oxYlhTeHBMbWhwYm5SVWNtRmphM005VzEwc2FTNXZkR2hsY2xSeVlXTnJjejFiWFN4bFBUQTdaVHgwYUdsekxtMXZiM1l1ZEhKaGEzTXViR1Z1WjNSb08yVXJLeWw3YVdZb1pqMTBhR2x6TG0xdmIzWXVkSEpoYTNOYlpWMHNlVDFtTG0xa2FXRXViV2x1Wmk1emRHSnNMbk4wYzJRdVpXNTBjbWxsYzFzd1hTeDFQWHQ5TEdrdWRISmhZMnR6TG5CMWMyZ29kU2tzZFM1cFpEMW1MblJyYUdRdWRISmhZMnRmYVdRc2RTNXVZVzFsUFdZdWJXUnBZUzVvWkd4eUxtNWhiV1VzZFM1eVpXWmxjbVZ1WTJWelBWdGRMR1l1ZEhKbFppbG1iM0lvZEQwd08zUThaaTUwY21WbUxtSnZlR1Z6TG14bGJtZDBhRHQwS3lzcGRqMTdmU3gxTG5KbFptVnlaVzVqWlhNdWNIVnphQ2gyS1N4MkxuUjVjR1U5Wmk1MGNtVm1MbUp2ZUdWelczUmRMblI1Y0dVc2RpNTBjbUZqYTE5cFpITTlaaTUwY21WbUxtSnZlR1Z6VzNSZExuUnlZV05yWDJsa2N6dG1MbVZrZEhNbUppaDFMbVZrYVhSelBXWXVaV1IwY3k1bGJITjBMbVZ1ZEhKcFpYTXBMSFV1WTNKbFlYUmxaRDF1WlhjZ1JHRjBaU2h0SzJZdWRHdG9aQzVqY21WaGRHbHZibDkwYVcxbEtqRmxNeWtzZFM1dGIyUnBabWxsWkQxdVpYY2dSR0YwWlNodEsyWXVkR3RvWkM1dGIyUnBabWxqWVhScGIyNWZkR2x0WlNveFpUTXBMSFV1Ylc5MmFXVmZaSFZ5WVhScGIyNDlaaTUwYTJoa0xtUjFjbUYwYVc5dUxIVXViVzkyYVdWZmRHbHRaWE5qWVd4bFBXa3VkR2x0WlhOallXeGxMSFV1YkdGNVpYSTlaaTUwYTJoa0xteGhlV1Z5TEhVdVlXeDBaWEp1WVhSbFgyZHliM1Z3UFdZdWRHdG9aQzVoYkhSbGNtNWhkR1ZmWjNKdmRYQXNkUzUyYjJ4MWJXVTlaaTUwYTJoa0xuWnZiSFZ0WlN4MUxtMWhkSEpwZUQxbUxuUnJhR1F1YldGMGNtbDRMSFV1ZEhKaFkydGZkMmxrZEdnOVppNTBhMmhrTG5kcFpIUm9MelkxTlRNMkxIVXVkSEpoWTJ0ZmFHVnBaMmgwUFdZdWRHdG9aQzVvWldsbmFIUXZOalUxTXpZc2RTNTBhVzFsYzJOaGJHVTlaaTV0WkdsaExtMWthR1F1ZEdsdFpYTmpZV3hsTEhVdVkzUnpYM05vYVdaMFBXWXViV1JwWVM1dGFXNW1Mbk4wWW13dVkzTnNaeXgxTG1SMWNtRjBhVzl1UFdZdWJXUnBZUzV0Wkdoa0xtUjFjbUYwYVc5dUxIVXVjMkZ0Y0d4bGMxOWtkWEpoZEdsdmJqMW1Mbk5oYlhCc1pYTmZaSFZ5WVhScGIyNHNkUzVqYjJSbFl6MTVMbWRsZEVOdlpHVmpLQ2tzZFM1cmFXNWtQV1l1ZFdSMFlTWW1aaTUxWkhSaExtdHBibVJ6TG14bGJtZDBhRDltTG5Wa2RHRXVhMmx1WkhOYk1GMDZlM05qYUdWdFpWVlNTVG9pSWl4MllXeDFaVG9pSW4wc2RTNXNZVzVuZFdGblpUMW1MbTFrYVdFdVpXeHVaejltTG0xa2FXRXVaV3h1Wnk1bGVIUmxibVJsWkY5c1lXNW5kV0ZuWlRwbUxtMWthV0V1YldSb1pDNXNZVzVuZFdGblpWTjBjbWx1Wnl4MUxtNWlYM05oYlhCc1pYTTlaaTV6WVcxd2JHVnpMbXhsYm1kMGFDeDFMbk5wZW1VOVppNXpZVzF3YkdWelgzTnBlbVVzZFM1aWFYUnlZWFJsUFhVdWMybDZaU280S25VdWRHbHRaWE5qWVd4bEwzVXVjMkZ0Y0d4bGMxOWtkWEpoZEdsdmJpeDVMbWx6UVhWa2FXOG9LVDhvZFM1MGVYQmxQU0poZFdScGJ5SXNhUzVoZFdScGIxUnlZV05yY3k1d2RYTm9LSFVwTEhVdVlYVmthVzg5ZTMwc2RTNWhkV1JwYnk1ellXMXdiR1ZmY21GMFpUMTVMbWRsZEZOaGJYQnNaVkpoZEdVb0tTeDFMbUYxWkdsdkxtTm9ZVzV1Wld4ZlkyOTFiblE5ZVM1blpYUkRhR0Z1Ym1Wc1EyOTFiblFvS1N4MUxtRjFaR2x2TG5OaGJYQnNaVjl6YVhwbFBYa3VaMlYwVTJGdGNHeGxVMmw2WlNncEtUcDVMbWx6Vm1sa1pXOG9LVDhvZFM1MGVYQmxQU0oyYVdSbGJ5SXNhUzUyYVdSbGIxUnlZV05yY3k1d2RYTm9LSFVwTEhVdWRtbGtaVzg5ZTMwc2RTNTJhV1JsYnk1M2FXUjBhRDE1TG1kbGRGZHBaSFJvS0Nrc2RTNTJhV1JsYnk1b1pXbG5hSFE5ZVM1blpYUklaV2xuYUhRb0tTazZlUzVwYzFOMVluUnBkR3hsS0NrL0tIVXVkSGx3WlQwaWMzVmlkR2wwYkdWeklpeHBMbk4xWW5ScGRHeGxWSEpoWTJ0ekxuQjFjMmdvZFNrcE9ua3VhWE5JYVc1MEtDay9LSFV1ZEhsd1pUMGliV1YwWVdSaGRHRWlMR2t1YUdsdWRGUnlZV05yY3k1d2RYTm9LSFVwS1RwNUxtbHpUV1YwWVdSaGRHRW9LVDhvZFM1MGVYQmxQU0p0WlhSaFpHRjBZU0lzYVM1dFpYUmhaR0YwWVZSeVlXTnJjeTV3ZFhOb0tIVXBLVG9vZFM1MGVYQmxQU0p0WlhSaFpHRjBZU0lzYVM1dmRHaGxjbFJ5WVdOcmN5NXdkWE5vS0hVcEtYMWxiSE5sSUdrdWFHRnpUVzl2ZGowaE1UdHBaaWhwTG0xcGJXVTlJaUlzYVM1b1lYTk5iMjkySmlacExuUnlZV05yY3lsN1ptOXlLR2t1ZG1sa1pXOVVjbUZqYTNNbUpta3VkbWxrWlc5VWNtRmphM011YkdWdVozUm9QakEvYVM1dGFXMWxLejBuZG1sa1pXOHZiWEEwT3lCamIyUmxZM005SWljNmFTNWhkV1JwYjFSeVlXTnJjeVltYVM1aGRXUnBiMVJ5WVdOcmN5NXNaVzVuZEdnK01EOXBMbTFwYldVclBTZGhkV1JwYnk5dGNEUTdJR052WkdWamN6MGlKenBwTG0xcGJXVXJQU2RoY0hCc2FXTmhkR2x2Ymk5dGNEUTdJR052WkdWamN6MGlKeXhsUFRBN1pUeHBMblJ5WVdOcmN5NXNaVzVuZEdnN1pTc3JLV1VoUFQwd0ppWW9hUzV0YVcxbEt6MGlMQ0lwTEdrdWJXbHRaU3M5YVM1MGNtRmphM05iWlYwdVkyOWtaV003YVM1dGFXMWxLejBuSWpzZ2NISnZabWxzWlhNOUlpY3NhUzV0YVcxbEt6MTBhR2x6TG1aMGVYQXVZMjl0Y0dGMGFXSnNaVjlpY21GdVpITXVhbTlwYmlncExHa3ViV2x0WlNzOUp5SW5mWEpsZEhWeWJpQnBmU3hqTG5CeWIzUnZkSGx3WlM1d2NtOWpaWE56VTJGdGNHeGxjejFtZFc1amRHbHZiaWhsS1h0MllYSWdkQ3hwTzJsbUtIUm9hWE11YzJGdGNHeGxVSEp2WTJWemMybHVaMU4wWVhKMFpXUXBlMmxtS0hSb2FYTXVhWE5HY21GbmJXVnVkR0YwYVc5dVNXNXBkR2xoYkdsNlpXUW1KblJvYVhNdWIyNVRaV2R0Wlc1MElUMDliblZzYkNsbWIzSW9kRDB3TzNROGRHaHBjeTVtY21GbmJXVnVkR1ZrVkhKaFkydHpMbXhsYm1kMGFEdDBLeXNwZTNaaGNpQm1QWFJvYVhNdVpuSmhaMjFsYm5SbFpGUnlZV05yYzF0MFhUdG1iM0lvYVQxbUxuUnlZV3M3YVM1dVpYaDBVMkZ0Y0d4bFBHa3VjMkZ0Y0d4bGN5NXNaVzVuZEdnbUpuUm9hWE11YzJGdGNHeGxVSEp2WTJWemMybHVaMU4wWVhKMFpXUTdLWHR5TG1SbFluVm5LQ0pKVTA5R2FXeGxJaXdpUTNKbFlYUnBibWNnYldWa2FXRWdabkpoWjIxbGJuUWdiMjRnZEhKaFkyc2dJeUlyWmk1cFpDc2lJR1p2Y2lCellXMXdiR1VnSWl0cExtNWxlSFJUWVcxd2JHVXBPM1poY2lCMVBYUm9hWE11WTNKbFlYUmxSbkpoWjIxbGJuUW9aaTVwWkN4cExtNWxlSFJUWVcxd2JHVXNaaTV6WldkdFpXNTBVM1J5WldGdEtUdHBaaWgxS1dZdWMyVm5iV1Z1ZEZOMGNtVmhiVDExTEdrdWJtVjRkRk5oYlhCc1pTc3JPMlZzYzJVZ1luSmxZV3M3YVdZb0tHa3VibVY0ZEZOaGJYQnNaU1ZtTG01aVgzTmhiWEJzWlhNOVBUMHdmSHhsZkh4cExtNWxlSFJUWVcxd2JHVStQV2t1YzJGdGNHeGxjeTVzWlc1bmRHZ3BKaVlvY2k1cGJtWnZLQ0pKVTA5R2FXeGxJaXdpVTJWdVpHbHVaeUJtY21GbmJXVnVkR1ZrSUdSaGRHRWdiMjRnZEhKaFkyc2dJeUlyWmk1cFpDc2lJR1p2Y2lCellXMXdiR1Z6SUZzaUswMWhkR2d1YldGNEtEQXNhUzV1WlhoMFUyRnRjR3hsTFdZdWJtSmZjMkZ0Y0d4bGN5a3JJaXdpS3locExtNWxlSFJUWVcxd2JHVXRNU2tySWwwaUtTeHlMbWx1Wm04b0lrbFRUMFpwYkdVaUxDSlRZVzF3YkdVZ1pHRjBZU0J6YVhwbElHbHVJRzFsYlc5eWVUb2dJaXQwYUdsekxtZGxkRUZzYkc5allYUmxaRk5oYlhCc1pVUmhkR0ZUYVhwbEtDa3BMSFJvYVhNdWIyNVRaV2R0Wlc1MEppWjBhR2x6TG05dVUyVm5iV1Z1ZENobUxtbGtMR1l1ZFhObGNpeG1Mbk5sWjIxbGJuUlRkSEpsWVcwdVluVm1abVZ5TEdrdWJtVjRkRk5oYlhCc1pTeGxmSHhwTG01bGVIUlRZVzF3YkdVK1BXa3VjMkZ0Y0d4bGN5NXNaVzVuZEdncExHWXVjMlZuYldWdWRGTjBjbVZoYlQxdWRXeHNMR1loUFQxMGFHbHpMbVp5WVdkdFpXNTBaV1JVY21GamEzTmJkRjBwS1dKeVpXRnJmWDFwWmloMGFHbHpMbTl1VTJGdGNHeGxjeUU5UFc1MWJHd3BabTl5S0hROU1EdDBQSFJvYVhNdVpYaDBjbUZqZEdWa1ZISmhZMnR6TG14bGJtZDBhRHQwS3lzcGUzWmhjaUIyUFhSb2FYTXVaWGgwY21GamRHVmtWSEpoWTJ0elczUmRPMlp2Y2locFBYWXVkSEpoYXp0cExtNWxlSFJUWVcxd2JHVThhUzV6WVcxd2JHVnpMbXhsYm1kMGFDWW1kR2hwY3k1ellXMXdiR1ZRY205alpYTnphVzVuVTNSaGNuUmxaRHNwZTNJdVpHVmlkV2NvSWtsVFQwWnBiR1VpTENKRmVIQnZjblJwYm1jZ2IyNGdkSEpoWTJzZ0l5SXJkaTVwWkNzaUlITmhiWEJzWlNBaklpdHBMbTVsZUhSVFlXMXdiR1VwTzNaaGNpQjVQWFJvYVhNdVoyVjBVMkZ0Y0d4bEtHa3NhUzV1WlhoMFUyRnRjR3hsS1R0cFppaDVLV2t1Ym1WNGRGTmhiWEJzWlNzckxIWXVjMkZ0Y0d4bGN5NXdkWE5vS0hrcE8yVnNjMlVnWW5KbFlXczdhV1lvS0drdWJtVjRkRk5oYlhCc1pTVjJMbTVpWDNOaGJYQnNaWE05UFQwd2ZIeHBMbTVsZUhSVFlXMXdiR1UrUFdrdWMyRnRjR3hsY3k1c1pXNW5kR2dwSmlZb2NpNWtaV0oxWnlnaVNWTlBSbWxzWlNJc0lsTmxibVJwYm1jZ2MyRnRjR3hsY3lCdmJpQjBjbUZqYXlBaklpdDJMbWxrS3lJZ1ptOXlJSE5oYlhCc1pTQWlLMmt1Ym1WNGRGTmhiWEJzWlNrc2RHaHBjeTV2YmxOaGJYQnNaWE1tSm5Sb2FYTXViMjVUWVcxd2JHVnpLSFl1YVdRc2RpNTFjMlZ5TEhZdWMyRnRjR3hsY3lrc2RpNXpZVzF3YkdWelBWdGRMSFloUFQxMGFHbHpMbVY0ZEhKaFkzUmxaRlJ5WVdOcmMxdDBYU2twWW5KbFlXdDlmWDE5TEdNdWNISnZkRzkwZVhCbExtZGxkRUp2ZUQxbWRXNWpkR2x2YmlobEtYdDJZWElnZEQxMGFHbHpMbWRsZEVKdmVHVnpLR1VzSVRBcE8zSmxkSFZ5YmlCMExteGxibWQwYUQ5MFd6QmRPbTUxYkd4OUxHTXVjSEp2ZEc5MGVYQmxMbWRsZEVKdmVHVnpQV1oxYm1OMGFXOXVLR1VzZENsN2RtRnlJR2s5VzEwN2NtVjBkWEp1SUdNdVgzTjNaV1Z3TG1OaGJHd29kR2hwY3l4bExHa3NkQ2tzYVgwc1l5NWZjM2RsWlhBOVpuVnVZM1JwYjI0b1pTeDBMR2twZTNSb2FYTXVkSGx3WlNZbWRHaHBjeTUwZVhCbFBUMWxKaVowTG5CMWMyZ29kR2hwY3lrN1ptOXlLSFpoY2lCbUlHbHVJSFJvYVhNdVltOTRaWE1wZTJsbUtIUXViR1Z1WjNSb0ppWnBLWEpsZEhWeWJqdGpMbDl6ZDJWbGNDNWpZV3hzS0hSb2FYTXVZbTk0WlhOYlpsMHNaU3gwTEdrcGZYMHNZeTV3Y205MGIzUjVjR1V1WjJWMFZISmhZMnRUWVcxd2JHVnpTVzVtYnoxbWRXNWpkR2x2YmlobEtYdDJZWElnZEQxMGFHbHpMbWRsZEZSeVlXTnJRbmxKWkNobEtUdHBaaWgwS1hKbGRIVnliaUIwTG5OaGJYQnNaWE45TEdNdWNISnZkRzkwZVhCbExtZGxkRlJ5WVdOclUyRnRjR3hsUFdaMWJtTjBhVzl1S0dVc2RDbDdkbUZ5SUdrOWRHaHBjeTVuWlhSVWNtRmphMEo1U1dRb1pTa3NaajEwYUdsekxtZGxkRk5oYlhCc1pTaHBMSFFwTzNKbGRIVnliaUJtZlN4akxuQnliM1J2ZEhsd1pTNXlaV3hsWVhObFZYTmxaRk5oYlhCc1pYTTlablZ1WTNScGIyNG9aU3gwS1h0MllYSWdhVDB3TEdZOWRHaHBjeTVuWlhSVWNtRmphMEo1U1dRb1pTazdaaTVzWVhOMFZtRnNhV1JUWVcxd2JHVjhmQ2htTG14aGMzUldZV3hwWkZOaGJYQnNaVDB3S1R0bWIzSW9kbUZ5SUhVOVppNXNZWE4wVm1Gc2FXUlRZVzF3YkdVN2RUeDBPM1VyS3lscEt6MTBhR2x6TG5KbGJHVmhjMlZUWVcxd2JHVW9aaXgxS1R0eUxtbHVabThvSWtsVFQwWnBiR1VpTENKVWNtRmpheUFqSWl0bEt5SWdjbVZzWldGelpXUWdjMkZ0Y0d4bGN5QjFjQ0IwYnlBaUszUXJJaUFvY21Wc1pXRnpaV1FnYzJsNlpUb2dJaXRwS3lJc0lISmxiV0ZwYm1sdVp6b2dJaXQwYUdsekxuTmhiWEJzWlhORVlYUmhVMmw2WlNzaUtTSXBMR1l1YkdGemRGWmhiR2xrVTJGdGNHeGxQWFI5TEdNdWNISnZkRzkwZVhCbExuTjBZWEowUFdaMWJtTjBhVzl1S0NsN2RHaHBjeTV6WVcxd2JHVlFjbTlqWlhOemFXNW5VM1JoY25SbFpEMGhNQ3gwYUdsekxuQnliMk5sYzNOVFlXMXdiR1Z6S0NFeEtYMHNZeTV3Y205MGIzUjVjR1V1YzNSdmNEMW1kVzVqZEdsdmJpZ3BlM1JvYVhNdWMyRnRjR3hsVUhKdlkyVnpjMmx1WjFOMFlYSjBaV1E5SVRGOUxHTXVjSEp2ZEc5MGVYQmxMbVpzZFhOb1BXWjFibU4wYVc5dUtDbDdjaTVwYm1adktDSkpVMDlHYVd4bElpd2lSbXgxYzJocGJtY2djbVZ0WVdsdWFXNW5JSE5oYlhCc1pYTWlLU3gwYUdsekxuVndaR0YwWlZOaGJYQnNaVXhwYzNSektDa3NkR2hwY3k1d2NtOWpaWE56VTJGdGNHeGxjeWdoTUNrc2RHaHBjeTV6ZEhKbFlXMHVZMnhsWVc1Q2RXWm1aWEp6S0Nrc2RHaHBjeTV6ZEhKbFlXMHViRzluUW5WbVptVnlUR1YyWld3b0lUQXBmU3hqTG5CeWIzUnZkSGx3WlM1elpXVnJWSEpoWTJzOVpuVnVZM1JwYjI0b1pTeDBMR2twZTNaaGNpQm1MSFVzZGoweEx6QXNlVDB3TEcwOU1DeGlPMmxtS0drdWMyRnRjR3hsY3k1c1pXNW5kR2c5UFQwd0tYSmxkSFZ5YmlCeUxtbHVabThvSWtsVFQwWnBiR1VpTENKT2J5QnpZVzF3YkdVZ2FXNGdkSEpoWTJzc0lHTmhibTV2ZENCelpXVnJJU0JWYzJsdVp5QjBhVzFsSUNJcmNpNW5aWFJFZFhKaGRHbHZibE4wY21sdVp5Z3dMREVwS3lJZ1lXNWtJRzltWm5ObGREb2dNQ0lwTEh0dlptWnpaWFE2TUN4MGFXMWxPakI5TzJadmNpaG1QVEE3Wmp4cExuTmhiWEJzWlhNdWJHVnVaM1JvTzJZckt5bDdhV1lvZFQxcExuTmhiWEJzWlhOYlpsMHNaajA5UFRBcGJUMHdMR0k5ZFM1MGFXMWxjMk5oYkdVN1pXeHpaU0JwWmloMUxtTjBjejVsS25VdWRHbHRaWE5qWVd4bEtYdHRQV1l0TVR0aWNtVmhhMzEwSmlaMUxtbHpYM041Ym1NbUppaDVQV1lwZldadmNpaDBKaVlvYlQxNUtTeGxQV2t1YzJGdGNHeGxjMXR0WFM1amRITXNhUzV1WlhoMFUyRnRjR3hsUFcwN2FTNXpZVzF3YkdWelcyMWRMbUZzY21WaFpIbFNaV0ZrUFQwOWFTNXpZVzF3YkdWelcyMWRMbk5wZW1VbUpta3VjMkZ0Y0d4bGMxdHRLekZkT3lsdEt5czdjbVYwZFhKdUlIWTlhUzV6WVcxd2JHVnpXMjFkTG05bVpuTmxkQ3RwTG5OaGJYQnNaWE5iYlYwdVlXeHlaV0ZrZVZKbFlXUXNjaTVwYm1adktDSkpVMDlHYVd4bElpd2lVMlZsYTJsdVp5QjBieUFpS3loMFB5SlNRVkFpT2lJaUtTc2lJSE5oYlhCc1pTQWpJaXRwTG01bGVIUlRZVzF3YkdVcklpQnZiaUIwY21GamF5QWlLMmt1ZEd0b1pDNTBjbUZqYTE5cFpDc2lMQ0IwYVcxbElDSXJjaTVuWlhSRWRYSmhkR2x2YmxOMGNtbHVaeWhsTEdJcEt5SWdZVzVrSUc5bVpuTmxkRG9nSWl0MktTeDdiMlptYzJWME9uWXNkR2x0WlRwbEwySjlmU3hqTG5CeWIzUnZkSGx3WlM1elpXVnJQV1oxYm1OMGFXOXVLR1VzZENsN2RtRnlJR2s5ZEdocGN5NXRiMjkyTEdZc2RTeDJMSGs5ZTI5bVpuTmxkRG94THpBc2RHbHRaVG94THpCOU8ybG1LSFJvYVhNdWJXOXZkaWw3Wm05eUtIWTlNRHQyUEdrdWRISmhhM011YkdWdVozUm9PM1lyS3lsbVBXa3VkSEpoYTNOYmRsMHNkVDEwYUdsekxuTmxaV3RVY21GamF5aGxMSFFzWmlrc2RTNXZabVp6WlhROGVTNXZabVp6WlhRbUppaDVMbTltWm5ObGREMTFMbTltWm5ObGRDa3NkUzUwYVcxbFBIa3VkR2x0WlNZbUtIa3VkR2x0WlQxMUxuUnBiV1VwTzNKbGRIVnliaUJ5TG1sdVptOG9Ja2xUVDBacGJHVWlMQ0pUWldWcmFXNW5JR0YwSUhScGJXVWdJaXR5TG1kbGRFUjFjbUYwYVc5dVUzUnlhVzVuS0hrdWRHbHRaU3d4S1NzaUlHNWxaV1J6SUdFZ1luVm1abVZ5SUhkcGRHZ2dZU0JtYVd4bFUzUmhjblFnY0c5emFYUnBiMjRnYjJZZ0lpdDVMbTltWm5ObGRDa3NlUzV2Wm1aelpYUTlQVDB4THpBL2VUMTdiMlptYzJWME9uUm9hWE11Ym1WNGRGQmhjbk5sVUc5emFYUnBiMjRzZEdsdFpUb3dmVHA1TG05bVpuTmxkRDEwYUdsekxuTjBjbVZoYlM1blpYUkZibVJHYVd4bFVHOXphWFJwYjI1QlpuUmxjaWg1TG05bVpuTmxkQ2tzY2k1cGJtWnZLQ0pKVTA5R2FXeGxJaXdpUVdScWRYTjBaV1FnYzJWbGF5QndiM05wZEdsdmJpQW9ZV1owWlhJZ1kyaGxZMnRwYm1jZ1pHRjBZU0JoYkhKbFlXUjVJR2x1SUdKMVptWmxjaWs2SUNJcmVTNXZabVp6WlhRcExIbDlaV3h6WlNCMGFISnZkeUpEWVc1dWIzUWdjMlZsYXpvZ2JXOXZkaUJ1YjNRZ2NtVmpaV2wyWldRaEluMHNZeTV3Y205MGIzUjVjR1V1WlhGMVlXdzlablZ1WTNScGIyNG9aU2w3Wm05eUtIWmhjaUIwUFRBN2REeDBhR2x6TG1KdmVHVnpMbXhsYm1kMGFDWW1kRHhsTG1KdmVHVnpMbXhsYm1kMGFEc3BlM1poY2lCcFBYUm9hWE11WW05NFpYTmJkRjBzWmoxbExtSnZlR1Z6VzNSZE8ybG1LQ0Z2TG1KdmVFVnhkV0ZzS0drc1ppa3BjbVYwZFhKdUlURTdkQ3NyZlhKbGRIVnliaUV3ZlN4dUxrbFRUMFpwYkdVOVl5eGpMbkJ5YjNSdmRIbHdaUzVzWVhOMFFtOTRVM1JoY25SUWIzTnBkR2x2Ymowd0xHTXVjSEp2ZEc5MGVYQmxMbkJoY25OcGJtZE5aR0YwUFc1MWJHd3NZeTV3Y205MGIzUjVjR1V1Ym1WNGRGQmhjbk5sVUc5emFYUnBiMjQ5TUN4akxuQnliM1J2ZEhsd1pTNWthWE5qWVhKa1RXUmhkRVJoZEdFOUlURXNZeTV3Y205MGIzUjVjR1V1Y0hKdlkyVnpjMGx1WTI5dGNHeGxkR1ZDYjNnOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhRc2FTeG1PM0psZEhWeWJpQmxMblI1Y0dVOVBUMGliV1JoZENJL0tIUTlibVYzSUc5YlpTNTBlWEJsS3lKQ2IzZ2lYU2hsTG5OcGVtVXBMSFJvYVhNdWNHRnljMmx1WjAxa1lYUTlkQ3gwYUdsekxtSnZlR1Z6TG5CMWMyZ29kQ2tzZEdocGN5NXRaR0YwY3k1d2RYTm9LSFFwTEhRdWMzUmhjblE5WlM1emRHRnlkQ3gwTG1oa2NsOXphWHBsUFdVdWFHUnlYM05wZW1Vc2RHaHBjeTV6ZEhKbFlXMHVZV1JrVlhObFpFSjVkR1Z6S0hRdWFHUnlYM05wZW1VcExIUm9hWE11YkdGemRFSnZlRk4wWVhKMFVHOXphWFJwYjI0OWRDNXpkR0Z5ZEN0MExuTnBlbVVzWmoxMGFHbHpMbk4wY21WaGJTNXpaV1ZyS0hRdWMzUmhjblFyZEM1emFYcGxMQ0V4TEhSb2FYTXVaR2x6WTJGeVpFMWtZWFJFWVhSaEtTeG1QeWgwYUdsekxuQmhjbk5wYm1kTlpHRjBQVzUxYkd3c0lUQXBPaWgwYUdsekxtMXZiM1pUZEdGeWRFWnZkVzVrUDNSb2FYTXVibVY0ZEZCaGNuTmxVRzl6YVhScGIyNDlkR2hwY3k1emRISmxZVzB1Wm1sdVpFVnVaRU52Ym5ScFozVnZkWE5DZFdZb0tUcDBhR2x6TG01bGVIUlFZWEp6WlZCdmMybDBhVzl1UFhRdWMzUmhjblFyZEM1emFYcGxMQ0V4S1NrNktHVXVkSGx3WlQwOVBTSnRiMjkySWlZbUtIUm9hWE11Ylc5dmRsTjBZWEowUm05MWJtUTlJVEFzZEdocGN5NXRaR0YwY3k1c1pXNW5kR2c5UFQwd0ppWW9kR2hwY3k1cGMxQnliMmR5WlhOemFYWmxQU0V3S1Nrc2FUMTBhR2x6TG5OMGNtVmhiUzV0WlhKblpVNWxlSFJDZFdabVpYSS9kR2hwY3k1emRISmxZVzB1YldWeVoyVk9aWGgwUW5WbVptVnlLQ2s2SVRFc2FUOG9kR2hwY3k1dVpYaDBVR0Z5YzJWUWIzTnBkR2x2YmoxMGFHbHpMbk4wY21WaGJTNW5aWFJGYm1SUWIzTnBkR2x2YmlncExDRXdLVG9vWlM1MGVYQmxQM1JvYVhNdWJXOXZkbE4wWVhKMFJtOTFibVEvZEdocGN5NXVaWGgwVUdGeWMyVlFiM05wZEdsdmJqMTBhR2x6TG5OMGNtVmhiUzVuWlhSRmJtUlFiM05wZEdsdmJpZ3BPblJvYVhNdWJtVjRkRkJoY25ObFVHOXphWFJwYjI0OWRHaHBjeTV6ZEhKbFlXMHVaMlYwVUc5emFYUnBiMjRvS1N0bExuTnBlbVU2ZEdocGN5NXVaWGgwVUdGeWMyVlFiM05wZEdsdmJqMTBhR2x6TG5OMGNtVmhiUzVuWlhSRmJtUlFiM05wZEdsdmJpZ3BMQ0V4S1NsOUxHTXVjSEp2ZEc5MGVYQmxMbWhoYzBsdVkyOXRjR3hsZEdWTlpHRjBQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSFJvYVhNdWNHRnljMmx1WjAxa1lYUWhQVDF1ZFd4c2ZTeGpMbkJ5YjNSdmRIbHdaUzV3Y205alpYTnpTVzVqYjIxd2JHVjBaVTFrWVhROVpuVnVZM1JwYjI0b0tYdDJZWElnWlN4ME8zSmxkSFZ5YmlCbFBYUm9hWE11Y0dGeWMybHVaMDFrWVhRc2REMTBhR2x6TG5OMGNtVmhiUzV6WldWcktHVXVjM1JoY25RclpTNXphWHBsTENFeExIUm9hWE11WkdselkyRnlaRTFrWVhSRVlYUmhLU3gwUHloeUxtUmxZblZuS0NKSlUwOUdhV3hsSWl3aVJtOTFibVFnSjIxa1lYUW5JR1Z1WkNCcGJpQmlkV1ptWlhKbFpDQmtZWFJoSWlrc2RHaHBjeTV3WVhKemFXNW5UV1JoZEQxdWRXeHNMQ0V3S1Rvb2RHaHBjeTV1WlhoMFVHRnljMlZRYjNOcGRHbHZiajEwYUdsekxuTjBjbVZoYlM1bWFXNWtSVzVrUTI5dWRHbG5kVzkxYzBKMVppZ3BMQ0V4S1gwc1l5NXdjbTkwYjNSNWNHVXVjbVZ6ZEc5eVpWQmhjbk5sVUc5emFYUnBiMjQ5Wm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NXpkSEpsWVcwdWMyVmxheWgwYUdsekxteGhjM1JDYjNoVGRHRnlkRkJ2YzJsMGFXOXVMQ0V3TEhSb2FYTXVaR2x6WTJGeVpFMWtZWFJFWVhSaEtYMHNZeTV3Y205MGIzUjVjR1V1YzJGMlpWQmhjbk5sVUc5emFYUnBiMjQ5Wm5WdVkzUnBiMjRvS1h0MGFHbHpMbXhoYzNSQ2IzaFRkR0Z5ZEZCdmMybDBhVzl1UFhSb2FYTXVjM1J5WldGdExtZGxkRkJ2YzJsMGFXOXVLQ2w5TEdNdWNISnZkRzkwZVhCbExuVndaR0YwWlZWelpXUkNlWFJsY3oxbWRXNWpkR2x2YmlobExIUXBlM1JvYVhNdWMzUnlaV0Z0TG1Ga1pGVnpaV1JDZVhSbGN5WW1LR1V1ZEhsd1pUMDlQU0p0WkdGMElqOG9kR2hwY3k1emRISmxZVzB1WVdSa1ZYTmxaRUo1ZEdWektHVXVhR1J5WDNOcGVtVXBMSFJvYVhNdVpHbHpZMkZ5WkUxa1lYUkVZWFJoSmlaMGFHbHpMbk4wY21WaGJTNWhaR1JWYzJWa1FubDBaWE1vWlM1emFYcGxMV1V1YUdSeVgzTnBlbVVwS1RwMGFHbHpMbk4wY21WaGJTNWhaR1JWYzJWa1FubDBaWE1vWlM1emFYcGxLU2w5TEdNdWNISnZkRzkwZVhCbExtRmtaRDF2TGtKdmVDNXdjbTkwYjNSNWNHVXVZV1JrTEdNdWNISnZkRzkwZVhCbExtRmtaRUp2ZUQxdkxrSnZlQzV3Y205MGIzUjVjR1V1WVdSa1FtOTRMR011Y0hKdmRHOTBlWEJsTG1sdWFYUTlablZ1WTNScGIyNG9aU2w3ZG1GeUlIUTlaWHg4ZTMwN2RHaHBjeTVoWkdRb0ltWjBlWEFpS1M1elpYUW9JbTFoYW05eVgySnlZVzVrSWl4MExtSnlZVzVrY3lZbWRDNWljbUZ1WkhOYk1GMThmQ0pwYzI4MElpa3VjMlYwS0NKdGFXNXZjbDkyWlhKemFXOXVJaXd3S1M1elpYUW9JbU52YlhCaGRHbGliR1ZmWW5KaGJtUnpJaXgwTG1KeVlXNWtjM3g4V3lKcGMyODBJbDBwTzNaaGNpQnBQWFJvYVhNdVlXUmtLQ0p0YjI5MklpazdjbVYwZFhKdUlHa3VZV1JrS0NKdGRtaGtJaWt1YzJWMEtDSjBhVzFsYzJOaGJHVWlMSFF1ZEdsdFpYTmpZV3hsZkh3Mk1EQXBMbk5sZENnaWNtRjBaU0lzZEM1eVlYUmxmSHcyTlRVek5pa3VjMlYwS0NKamNtVmhkR2x2Ymw5MGFXMWxJaXd3S1M1elpYUW9JbTF2WkdsbWFXTmhkR2x2Ymw5MGFXMWxJaXd3S1M1elpYUW9JbVIxY21GMGFXOXVJaXgwTG1SMWNtRjBhVzl1Zkh3d0tTNXpaWFFvSW5admJIVnRaU0lzZEM1M2FXUjBhRDh3T2pJMU5pa3VjMlYwS0NKdFlYUnlhWGdpTEZzMk5UVXpOaXd3TERBc01DdzJOVFV6Tml3d0xEQXNNQ3d4TURjek56UXhPREkwWFNrdWMyVjBLQ0p1WlhoMFgzUnlZV05yWDJsa0lpd3hLU3hwTG1Ga1pDZ2liWFpsZUNJcExIUm9hWE45TEdNdWNISnZkRzkwZVhCbExtRmtaRlJ5WVdOclBXWjFibU4wYVc5dUtHVXBlM1JvYVhNdWJXOXZkbng4ZEdocGN5NXBibWwwS0dVcE8zWmhjaUIwUFdWOGZIdDlPM1F1ZDJsa2RHZzlkQzUzYVdSMGFIeDhNekl3TEhRdWFHVnBaMmgwUFhRdWFHVnBaMmgwZkh3ek1qQXNkQzVwWkQxMExtbGtmSHgwYUdsekxtMXZiM1l1Ylhab1pDNXVaWGgwWDNSeVlXTnJYMmxrTEhRdWRIbHdaVDEwTG5SNWNHVjhmQ0poZG1NeElqdDJZWElnYVQxMGFHbHpMbTF2YjNZdVlXUmtLQ0owY21GcklpazdkR2hwY3k1dGIyOTJMbTEyYUdRdWJtVjRkRjkwY21GamExOXBaRDEwTG1sa0t6RXNhUzVoWkdRb0luUnJhR1FpS1M1elpYUW9JbVpzWVdkeklpeHZMbFJMU0VSZlJreEJSMTlGVGtGQ1RFVkVmRzh1VkV0SVJGOUdURUZIWDBsT1gwMVBWa2xGZkc4dVZFdElSRjlHVEVGSFgwbE9YMUJTUlZaSlJWY3BMbk5sZENnaVkzSmxZWFJwYjI1ZmRHbHRaU0lzTUNrdWMyVjBLQ0p0YjJScFptbGpZWFJwYjI1ZmRHbHRaU0lzTUNrdWMyVjBLQ0owY21GamExOXBaQ0lzZEM1cFpDa3VjMlYwS0NKa2RYSmhkR2x2YmlJc2RDNWtkWEpoZEdsdmJueDhNQ2t1YzJWMEtDSnNZWGxsY2lJc2RDNXNZWGxsY254OE1Da3VjMlYwS0NKaGJIUmxjbTVoZEdWZlozSnZkWEFpTERBcExuTmxkQ2dpZG05c2RXMWxJaXd4S1M1elpYUW9JbTFoZEhKcGVDSXNXekFzTUN3d0xEQXNNQ3d3TERBc01Dd3dYU2t1YzJWMEtDSjNhV1IwYUNJc2RDNTNhV1IwYUR3OE1UWXBMbk5sZENnaWFHVnBaMmgwSWl4MExtaGxhV2RvZER3OE1UWXBPM1poY2lCbVBXa3VZV1JrS0NKdFpHbGhJaWs3Wmk1aFpHUW9JbTFrYUdRaUtTNXpaWFFvSW1OeVpXRjBhVzl1WDNScGJXVWlMREFwTG5ObGRDZ2liVzlrYVdacFkyRjBhVzl1WDNScGJXVWlMREFwTG5ObGRDZ2lkR2x0WlhOallXeGxJaXgwTG5ScGJXVnpZMkZzWlh4OE1Ta3VjMlYwS0NKa2RYSmhkR2x2YmlJc2RDNXRaV1JwWVY5a2RYSmhkR2x2Ym54OE1Da3VjMlYwS0NKc1lXNW5kV0ZuWlNJc2RDNXNZVzVuZFdGblpYeDhJblZ1WkNJcExHWXVZV1JrS0NKb1pHeHlJaWt1YzJWMEtDSm9ZVzVrYkdWeUlpeDBMbWhrYkhKOGZDSjJhV1JsSWlrdWMyVjBLQ0p1WVcxbElpeDBMbTVoYldWOGZDSlVjbUZqYXlCamNtVmhkR1ZrSUhkcGRHZ2dUVkEwUW05NExtcHpJaWtzWmk1aFpHUW9JbVZzYm1jaUtTNXpaWFFvSW1WNGRHVnVaR1ZrWDJ4aGJtZDFZV2RsSWl4MExteGhibWQxWVdkbGZId2labkl0UmxJaUtUdDJZWElnZFQxbUxtRmtaQ2dpYldsdVppSXBPMmxtS0c5YmRDNTBlWEJsS3lKVFlXMXdiR1ZGYm5SeWVTSmRJVDA5ZG05cFpDQXdLWHQyWVhJZ2RqMXVaWGNnYjF0MExuUjVjR1VySWxOaGJYQnNaVVZ1ZEhKNUlsMDdkaTVrWVhSaFgzSmxabVZ5Wlc1alpWOXBibVJsZUQweE8zWmhjaUI1UFNJaU8yWnZjaWgyWVhJZ2JTQnBiaUJ2TG5OaGJYQnNaVVZ1ZEhKNVEyOWtaWE1wWm05eUtIWmhjaUJpUFc4dWMyRnRjR3hsUlc1MGNubERiMlJsYzF0dFhTeDRQVEE3ZUR4aUxteGxibWQwYUR0NEt5c3BhV1lvWWk1cGJtUmxlRTltS0hRdWRIbHdaU2srTFRFcGUzazliVHRpY21WaGEzMXpkMmwwWTJnb2VTbDdZMkZ6WlNKV2FYTjFZV3dpT21sbUtIVXVZV1JrS0NKMmJXaGtJaWt1YzJWMEtDSm5jbUZ3YUdsamMyMXZaR1VpTERBcExuTmxkQ2dpYjNCamIyeHZjaUlzV3pBc01Dd3dYU2tzZGk1elpYUW9JbmRwWkhSb0lpeDBMbmRwWkhSb0tTNXpaWFFvSW1obGFXZG9kQ0lzZEM1b1pXbG5hSFFwTG5ObGRDZ2lhRzl5YVhweVpYTnZiSFYwYVc5dUlpdzNNanc4TVRZcExuTmxkQ2dpZG1WeWRISmxjMjlzZFhScGIyNGlMRGN5UER3eE5pa3VjMlYwS0NKbWNtRnRaVjlqYjNWdWRDSXNNU2t1YzJWMEtDSmpiMjF3Y21WemMyOXlibUZ0WlNJc2RDNTBlWEJsS3lJZ1EyOXRjSEpsYzNOdmNpSXBMbk5sZENnaVpHVndkR2dpTERJMEtTeDBMbUYyWTBSbFkyOWtaWEpEYjI1bWFXZFNaV052Y21RcGUzWmhjaUJUUFc1bGR5QnZMbUYyWTBOQ2IzZ3NWVDF1WlhjZ1lTaDBMbUYyWTBSbFkyOWtaWEpEYjI1bWFXZFNaV052Y21RcE8xTXVjR0Z5YzJVb1ZTa3NkaTVoWkdSQ2IzZ29VeWw5WW5KbFlXczdZMkZ6WlNKQmRXUnBieUk2ZFM1aFpHUW9Jbk50YUdRaUtTNXpaWFFvSW1KaGJHRnVZMlVpTEhRdVltRnNZVzVqWlh4OE1Da3NkaTV6WlhRb0ltTm9ZVzV1Wld4ZlkyOTFiblFpTEhRdVkyaGhibTVsYkY5amIzVnVkSHg4TWlrdWMyVjBLQ0p6WVcxd2JHVnphWHBsSWl4MExuTmhiWEJzWlhOcGVtVjhmREUyS1M1elpYUW9Jbk5oYlhCc1pYSmhkR1VpTEhRdWMyRnRjR3hsY21GMFpYeDhOalUxTXpZcE8ySnlaV0ZyTzJOaGMyVWlTR2x1ZENJNmRTNWhaR1FvSW1odGFHUWlLVHRpY21WaGF6dGpZWE5sSWxOMVluUnBkR3hsSWpwemQybDBZMmdvZFM1aFpHUW9Jbk4wYUdRaUtTeDBMblI1Y0dVcGUyTmhjMlVpYzNSd2NDSTZkaTV6WlhRb0ltNWhiV1Z6Y0dGalpTSXNkQzV1WVcxbGMzQmhZMlY4ZkNKdWIyNWhiV1Z6Y0dGalpTSXBMbk5sZENnaWMyTm9aVzFoWDJ4dlkyRjBhVzl1SWl4MExuTmphR1Z0WVY5c2IyTmhkR2x2Ym54OElpSXBMbk5sZENnaVlYVjRhV3hwWVhKNVgyMXBiV1ZmZEhsd1pYTWlMSFF1WVhWNGFXeHBZWEo1WDIxcGJXVmZkSGx3WlhOOGZDSWlLVHRpY21WaGEzMWljbVZoYXp0allYTmxJazFsZEdGa1lYUmhJanAxTG1Ga1pDZ2libTFvWkNJcE8ySnlaV0ZyTzJOaGMyVWlVM2x6ZEdWdElqcDFMbUZrWkNnaWJtMW9aQ0lwTzJKeVpXRnJPMlJsWm1GMWJIUTZkUzVoWkdRb0ltNXRhR1FpS1R0aWNtVmhhMzEwTG1SbGMyTnlhWEIwYVc5dUppWjJMbUZrWkVKdmVDaDBMbVJsYzJOeWFYQjBhVzl1S1N4MExtUmxjMk55YVhCMGFXOXVYMkp2ZUdWekppWjBMbVJsYzJOeWFYQjBhVzl1WDJKdmVHVnpMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNG9keWw3ZGk1aFpHUkNiM2dvZHlsOUtTeDFMbUZrWkNnaVpHbHVaaUlwTG1Ga1pDZ2laSEpsWmlJcExtRmtaRVZ1ZEhKNUtHNWxkeUJ2V3lKMWNtd2dRbTk0SWwwb0tTNXpaWFFvSW1ac1lXZHpJaXd4S1NrN2RtRnlJRVU5ZFM1aFpHUW9Jbk4wWW13aUtUdHlaWFIxY200Z1JTNWhaR1FvSW5OMGMyUWlLUzVoWkdSRmJuUnllU2gyS1N4RkxtRmtaQ2dpYzNSMGN5SXBMbk5sZENnaWMyRnRjR3hsWDJOdmRXNTBjeUlzVzEwcExuTmxkQ2dpYzJGdGNHeGxYMlJsYkhSaGN5SXNXMTBwTEVVdVlXUmtLQ0p6ZEhOaklpa3VjMlYwS0NKbWFYSnpkRjlqYUhWdWF5SXNXMTBwTG5ObGRDZ2ljMkZ0Y0d4bGMxOXdaWEpmWTJoMWJtc2lMRnRkS1M1elpYUW9Jbk5oYlhCc1pWOWtaWE5qY21sd2RHbHZibDlwYm1SbGVDSXNXMTBwTEVVdVlXUmtLQ0p6ZEdOdklpa3VjMlYwS0NKamFIVnVhMTl2Wm1aelpYUnpJaXhiWFNrc1JTNWhaR1FvSW5OMGMzb2lLUzV6WlhRb0luTmhiWEJzWlY5emFYcGxjeUlzVzEwcExIUm9hWE11Ylc5dmRpNXRkbVY0TG1Ga1pDZ2lkSEpsZUNJcExuTmxkQ2dpZEhKaFkydGZhV1FpTEhRdWFXUXBMbk5sZENnaVpHVm1ZWFZzZEY5ellXMXdiR1ZmWkdWelkzSnBjSFJwYjI1ZmFXNWtaWGdpTEhRdVpHVm1ZWFZzZEY5ellXMXdiR1ZmWkdWelkzSnBjSFJwYjI1ZmFXNWtaWGg4ZkRFcExuTmxkQ2dpWkdWbVlYVnNkRjl6WVcxd2JHVmZaSFZ5WVhScGIyNGlMSFF1WkdWbVlYVnNkRjl6WVcxd2JHVmZaSFZ5WVhScGIyNThmREFwTG5ObGRDZ2laR1ZtWVhWc2RGOXpZVzF3YkdWZmMybDZaU0lzZEM1a1pXWmhkV3gwWDNOaGJYQnNaVjl6YVhwbGZId3dLUzV6WlhRb0ltUmxabUYxYkhSZmMyRnRjR3hsWDJac1lXZHpJaXgwTG1SbFptRjFiSFJmYzJGdGNHeGxYMlpzWVdkemZId3dLU3gwYUdsekxtSjFhV3hrVkhKaGExTmhiWEJzWlV4cGMzUnpLR2twTEhRdWFXUjlmU3h2TGtKdmVDNXdjbTkwYjNSNWNHVXVZMjl0Y0hWMFpWTnBlbVU5Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFE5Wlh4OGJtVjNJSE03ZEM1bGJtUnBZVzV1WlhOelBYTXVRa2xIWDBWT1JFbEJUaXgwYUdsekxuZHlhWFJsS0hRcGZTeGpMbkJ5YjNSdmRIbHdaUzVoWkdSVFlXMXdiR1U5Wm5WdVkzUnBiMjRvWlN4MExHa3BlM1poY2lCbVBXbDhmSHQ5TEhVOWUzMHNkajEwYUdsekxtZGxkRlJ5WVdOclFubEpaQ2hsS1R0cFppaDJJVDA5Ym5Wc2JDbDdkUzV1ZFcxaVpYSTlkaTV6WVcxd2JHVnpMbXhsYm1kMGFDeDFMblJ5WVdOclgybGtQWFl1ZEd0b1pDNTBjbUZqYTE5cFpDeDFMblJwYldWelkyRnNaVDEyTG0xa2FXRXViV1JvWkM1MGFXMWxjMk5oYkdVc2RTNWtaWE5qY21sd2RHbHZibDlwYm1SbGVEMW1Mbk5oYlhCc1pWOWtaWE5qY21sd2RHbHZibDlwYm1SbGVEOW1Mbk5oYlhCc1pWOWtaWE5qY21sd2RHbHZibDlwYm1SbGVDMHhPakFzZFM1a1pYTmpjbWx3ZEdsdmJqMTJMbTFrYVdFdWJXbHVaaTV6ZEdKc0xuTjBjMlF1Wlc1MGNtbGxjMXQxTG1SbGMyTnlhWEIwYVc5dVgybHVaR1Y0WFN4MUxtUmhkR0U5ZEN4MUxuTnBlbVU5ZEM1aWVYUmxUR1Z1WjNSb0xIVXVZV3h5WldGa2VWSmxZV1E5ZFM1emFYcGxMSFV1WkhWeVlYUnBiMjQ5Wmk1a2RYSmhkR2x2Ym54OE1TeDFMbU4wY3oxbUxtTjBjM3g4TUN4MUxtUjBjejFtTG1SMGMzeDhNQ3gxTG1selgzTjVibU05Wmk1cGMxOXplVzVqZkh3aE1TeDFMbWx6WDJ4bFlXUnBibWM5Wmk1cGMxOXNaV0ZrYVc1bmZId3dMSFV1WkdWd1pXNWtjMTl2YmoxbUxtUmxjR1Z1WkhOZmIyNThmREFzZFM1cGMxOWtaWEJsYm1SbFpGOXZiajFtTG1selgyUmxjR1Z1WkdWa1gyOXVmSHd3TEhVdWFHRnpYM0psWkhWdVpHRnVZM2s5Wmk1b1lYTmZjbVZrZFc1a1lXNWplWHg4TUN4MUxtUmxaM0poWkdGMGFXOXVYM0J5YVc5eWFYUjVQV1l1WkdWbmNtRmtZWFJwYjI1ZmNISnBiM0pwZEhsOGZEQXNkUzV2Wm1aelpYUTlNQ3gxTG5OMVluTmhiWEJzWlhNOVppNXpkV0p6WVcxd2JHVnpMSFl1YzJGdGNHeGxjeTV3ZFhOb0tIVXBMSFl1YzJGdGNHeGxjMTl6YVhwbEt6MTFMbk5wZW1Vc2RpNXpZVzF3YkdWelgyUjFjbUYwYVc5dUt6MTFMbVIxY21GMGFXOXVMSFl1Wm1seWMzUmZaSFJ6Zkh3b2RpNW1hWEp6ZEY5a2RITTlaaTVrZEhNcExIUm9hWE11Y0hKdlkyVnpjMU5oYlhCc1pYTW9LVHQyWVhJZ2VUMTBhR2x6TG1OeVpXRjBaVk5wYm1kc1pWTmhiWEJzWlUxdmIyWW9kU2s3Y21WMGRYSnVJSFJvYVhNdVlXUmtRbTk0S0hrcExIa3VZMjl0Y0hWMFpWTnBlbVVvS1N4NUxuUnlZV1p6V3pCZExuUnlkVzV6V3pCZExtUmhkR0ZmYjJabWMyVjBQWGt1YzJsNlpTczRMSFJvYVhNdVlXUmtLQ0p0WkdGMElpa3VaR0YwWVQxdVpYY2dWV2x1ZERoQmNuSmhlU2gwS1N4MWZYMHNZeTV3Y205MGIzUjVjR1V1WTNKbFlYUmxVMmx1WjJ4bFUyRnRjR3hsVFc5dlpqMW1kVzVqZEdsdmJpaGxLWHQyWVhJZ2REMHdPMlV1YVhOZmMzbHVZejkwUFRFOFBESTFPblE5TmpVMU16WTdkbUZ5SUdrOWJtVjNJRzh1Ylc5dlprSnZlRHRwTG1Ga1pDZ2liV1pvWkNJcExuTmxkQ2dpYzJWeGRXVnVZMlZmYm5WdFltVnlJaXgwYUdsekxtNWxlSFJOYjI5bVRuVnRZbVZ5S1N4MGFHbHpMbTVsZUhSTmIyOW1UblZ0WW1WeUt5czdkbUZ5SUdZOWFTNWhaR1FvSW5SeVlXWWlLU3gxUFhSb2FYTXVaMlYwVkhKaFkydENlVWxrS0dVdWRISmhZMnRmYVdRcE8zSmxkSFZ5YmlCbUxtRmtaQ2dpZEdab1pDSXBMbk5sZENnaWRISmhZMnRmYVdRaUxHVXVkSEpoWTJ0ZmFXUXBMbk5sZENnaVpteGhaM01pTEc4dVZFWklSRjlHVEVGSFgwUkZSa0ZWVEZSZlFrRlRSVjlKVTE5TlQwOUdLU3htTG1Ga1pDZ2lkR1prZENJcExuTmxkQ2dpWW1GelpVMWxaR2xoUkdWamIyUmxWR2x0WlNJc1pTNWtkSE10S0hVdVptbHljM1JmWkhSemZId3dLU2tzWmk1aFpHUW9JblJ5ZFc0aUtTNXpaWFFvSW1ac1lXZHpJaXh2TGxSU1ZVNWZSa3hCUjFOZlJFRlVRVjlQUmtaVFJWUjhieTVVVWxWT1gwWk1RVWRUWDBSVlVrRlVTVTlPZkc4dVZGSlZUbDlHVEVGSFUxOVRTVnBGZkc4dVZGSlZUbDlHVEVGSFUxOUdURUZIVTN4dkxsUlNWVTVmUmt4QlIxTmZRMVJUWDA5R1JsTkZWQ2t1YzJWMEtDSmtZWFJoWDI5bVpuTmxkQ0lzTUNrdWMyVjBLQ0ptYVhKemRGOXpZVzF3YkdWZlpteGhaM01pTERBcExuTmxkQ2dpYzJGdGNHeGxYMk52ZFc1MElpd3hLUzV6WlhRb0luTmhiWEJzWlY5a2RYSmhkR2x2YmlJc1cyVXVaSFZ5WVhScGIyNWRLUzV6WlhRb0luTmhiWEJzWlY5emFYcGxJaXhiWlM1emFYcGxYU2t1YzJWMEtDSnpZVzF3YkdWZlpteGhaM01pTEZ0MFhTa3VjMlYwS0NKellXMXdiR1ZmWTI5dGNHOXphWFJwYjI1ZmRHbHRaVjl2Wm1aelpYUWlMRnRsTG1OMGN5MWxMbVIwYzEwcExHbDlMR011Y0hKdmRHOTBlWEJsTG14aGMzUk5iMjltU1c1a1pYZzlNQ3hqTG5CeWIzUnZkSGx3WlM1ellXMXdiR1Z6UkdGMFlWTnBlbVU5TUN4akxuQnliM1J2ZEhsd1pTNXlaWE5sZEZSaFlteGxjejFtZFc1amRHbHZiaWdwZTNaaGNpQmxMSFFzYVN4bUxIVXNkaXg1TEcwN1ptOXlLSFJvYVhNdWFXNXBkR2xoYkY5a2RYSmhkR2x2YmoxMGFHbHpMbTF2YjNZdWJYWm9aQzVrZFhKaGRHbHZiaXgwYUdsekxtMXZiM1l1Ylhab1pDNWtkWEpoZEdsdmJqMHdMR1U5TUR0bFBIUm9hWE11Ylc5dmRpNTBjbUZyY3k1c1pXNW5kR2c3WlNzcktYdDBQWFJvYVhNdWJXOXZkaTUwY21GcmMxdGxYU3gwTG5ScmFHUXVaSFZ5WVhScGIyNDlNQ3gwTG0xa2FXRXViV1JvWkM1a2RYSmhkR2x2Ymowd0xHazlkQzV0WkdsaExtMXBibVl1YzNSaWJDNXpkR052Zkh4MExtMWthV0V1YldsdVppNXpkR0pzTG1Odk5qUXNhUzVqYUhWdWExOXZabVp6WlhSelBWdGRMR1k5ZEM1dFpHbGhMbTFwYm1ZdWMzUmliQzV6ZEhOakxHWXVabWx5YzNSZlkyaDFibXM5VzEwc1ppNXpZVzF3YkdWelgzQmxjbDlqYUhWdWF6MWJYU3htTG5OaGJYQnNaVjlrWlhOamNtbHdkR2x2Ymw5cGJtUmxlRDFiWFN4MVBYUXViV1JwWVM1dGFXNW1Mbk4wWW13dWMzUnplbng4ZEM1dFpHbGhMbTFwYm1ZdWMzUmliQzV6ZEhveUxIVXVjMkZ0Y0d4bFgzTnBlbVZ6UFZ0ZExIWTlkQzV0WkdsaExtMXBibVl1YzNSaWJDNXpkSFJ6TEhZdWMyRnRjR3hsWDJOdmRXNTBjejFiWFN4MkxuTmhiWEJzWlY5a1pXeDBZWE05VzEwc2VUMTBMbTFrYVdFdWJXbHVaaTV6ZEdKc0xtTjBkSE1zZVNZbUtIa3VjMkZ0Y0d4bFgyTnZkVzUwY3oxYlhTeDVMbk5oYlhCc1pWOXZabVp6WlhSelBWdGRLU3h0UFhRdWJXUnBZUzV0YVc1bUxuTjBZbXd1YzNSemN6dDJZWElnWWoxMExtMWthV0V1YldsdVppNXpkR0pzTG1KdmVHVnpMbWx1WkdWNFQyWW9iU2s3WWlFOUxURW1KaWgwTG0xa2FXRXViV2x1Wmk1emRHSnNMbUp2ZUdWelcySmRQVzUxYkd3cGZYMHNZeTVwYm1sMFUyRnRjR3hsUjNKdmRYQnpQV1oxYm1OMGFXOXVLR1VzZEN4cExHWXNkU2w3ZG1GeUlIWXNlU3h0TEdJN1puVnVZM1JwYjI0Z2VDaFRMRlVzUlNsN2RHaHBjeTVuY205MWNHbHVaMTkwZVhCbFBWTXNkR2hwY3k1bmNtOTFjR2x1WjE5MGVYQmxYM0JoY21GdFpYUmxjajFWTEhSb2FYTXVjMkpuY0QxRkxIUm9hWE11YkdGemRGOXpZVzF3YkdWZmFXNWZjblZ1UFMweExIUm9hWE11Wlc1MGNubGZhVzVrWlhnOUxURjlabTl5S0hRbUppaDBMbk5oYlhCc1pWOW5jbTkxY0hOZmFXNW1iejFiWFNrc1pTNXpZVzF3YkdWZlozSnZkWEJ6WDJsdVptOThmQ2hsTG5OaGJYQnNaVjluY205MWNITmZhVzVtYnoxYlhTa3NlVDB3TzNrOGFTNXNaVzVuZEdnN2VTc3JLWHRtYjNJb1lqMXBXM2xkTG1keWIzVndhVzVuWDNSNWNHVXJJaThpSzJsYmVWMHVaM0p2ZFhCcGJtZGZkSGx3WlY5d1lYSmhiV1YwWlhJc2JUMXVaWGNnZUNocFczbGRMbWR5YjNWd2FXNW5YM1I1Y0dVc2FWdDVYUzVuY205MWNHbHVaMTkwZVhCbFgzQmhjbUZ0WlhSbGNpeHBXM2xkS1N4MEppWW9kQzV6WVcxd2JHVmZaM0p2ZFhCelgybHVabTliWWwwOWJTa3NaUzV6WVcxd2JHVmZaM0p2ZFhCelgybHVabTliWWwxOGZDaGxMbk5oYlhCc1pWOW5jbTkxY0hOZmFXNW1iMXRpWFQxdEtTeDJQVEE3ZGp4bUxteGxibWQwYUR0Mkt5c3BabHQyWFM1bmNtOTFjR2x1WjE5MGVYQmxQVDA5YVZ0NVhTNW5jbTkxY0dsdVoxOTBlWEJsSmlZb2JTNWtaWE5qY21sd2RHbHZiajFtVzNaZExHMHVaR1Z6WTNKcGNIUnBiMjR1ZFhObFpEMGhNQ2s3YVdZb2RTbG1iM0lvZGowd08zWThkUzVzWlc1bmRHZzdkaXNyS1hWYmRsMHVaM0p2ZFhCcGJtZGZkSGx3WlQwOVBXbGJlVjB1WjNKdmRYQnBibWRmZEhsd1pTWW1LRzB1Wm5KaFoyMWxiblJmWkdWelkzSnBjSFJwYjI0OWRWdDJYU3h0TG1aeVlXZHRaVzUwWDJSbGMyTnlhWEIwYVc5dUxuVnpaV1E5SVRBc2JTNXBjMTltY21GbmJXVnVkRDBoTUNsOWFXWW9kQ2w3YVdZb2RTbG1iM0lvZVQwd08zazhkUzVzWlc1bmRHZzdlU3NyS1NGMVczbGRMblZ6WldRbUpuVmJlVjB1ZG1WeWMybHZiajQ5TWlZbUtHSTlkVnQ1WFM1bmNtOTFjR2x1WjE5MGVYQmxLeUl2TUNJc2JUMXVaWGNnZUNoMVczbGRMbWR5YjNWd2FXNW5YM1I1Y0dVc01Da3NiUzVwYzE5bWNtRm5iV1Z1ZEQwaE1DeDBMbk5oYlhCc1pWOW5jbTkxY0hOZmFXNW1iMXRpWFh4OEtIUXVjMkZ0Y0d4bFgyZHliM1Z3YzE5cGJtWnZXMkpkUFcwcEtYMWxiSE5sSUdadmNpaDVQVEE3ZVR4bUxteGxibWQwYUR0NUt5c3BJV1piZVYwdWRYTmxaQ1ltWmx0NVhTNTJaWEp6YVc5dVBqMHlKaVlvWWoxbVczbGRMbWR5YjNWd2FXNW5YM1I1Y0dVcklpOHdJaXh0UFc1bGR5QjRLR1piZVYwdVozSnZkWEJwYm1kZmRIbHdaU3d3S1N4bExuTmhiWEJzWlY5bmNtOTFjSE5mYVc1bWIxdGlYWHg4S0dVdWMyRnRjR3hsWDJkeWIzVndjMTlwYm1adlcySmRQVzBwS1gwc1l5NXpaWFJUWVcxd2JHVkhjbTkxY0ZCeWIzQmxjblJwWlhNOVpuVnVZM1JwYjI0b1pTeDBMR2tzWmlsN2RtRnlJSFVzZGp0MExuTmhiWEJzWlY5bmNtOTFjSE05VzEwN1ptOXlLSFVnYVc0Z1ppbHBaaWgwTG5OaGJYQnNaVjluY205MWNITmJkVjA5ZTMwc2RDNXpZVzF3YkdWZlozSnZkWEJ6VzNWZExtZHliM1Z3YVc1blgzUjVjR1U5Wmx0MVhTNW5jbTkxY0dsdVoxOTBlWEJsTEhRdWMyRnRjR3hsWDJkeWIzVndjMXQxWFM1bmNtOTFjR2x1WjE5MGVYQmxYM0JoY21GdFpYUmxjajFtVzNWZExtZHliM1Z3YVc1blgzUjVjR1ZmY0dGeVlXMWxkR1Z5TEdrK1BXWmJkVjB1YkdGemRGOXpZVzF3YkdWZmFXNWZjblZ1SmlZb1psdDFYUzVzWVhOMFgzTmhiWEJzWlY5cGJsOXlkVzQ4TUNZbUtHWmJkVjB1YkdGemRGOXpZVzF3YkdWZmFXNWZjblZ1UFRBcExHWmJkVjB1Wlc1MGNubGZhVzVrWlhnckt5eG1XM1ZkTG1WdWRISjVYMmx1WkdWNFBEMW1XM1ZkTG5OaVozQXVaVzUwY21sbGN5NXNaVzVuZEdndE1TWW1LR1piZFYwdWJHRnpkRjl6WVcxd2JHVmZhVzVmY25WdUt6MW1XM1ZkTG5OaVozQXVaVzUwY21sbGMxdG1XM1ZkTG1WdWRISjVYMmx1WkdWNFhTNXpZVzF3YkdWZlkyOTFiblFwS1N4bVczVmRMbVZ1ZEhKNVgybHVaR1Y0UEQxbVczVmRMbk5pWjNBdVpXNTBjbWxsY3k1c1pXNW5kR2d0TVQ5MExuTmhiWEJzWlY5bmNtOTFjSE5iZFYwdVozSnZkWEJmWkdWelkzSnBjSFJwYjI1ZmFXNWtaWGc5Wmx0MVhTNXpZbWR3TG1WdWRISnBaWE5iWmx0MVhTNWxiblJ5ZVY5cGJtUmxlRjB1WjNKdmRYQmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZzZkQzV6WVcxd2JHVmZaM0p2ZFhCelczVmRMbWR5YjNWd1gyUmxjMk55YVhCMGFXOXVYMmx1WkdWNFBTMHhMSFF1YzJGdGNHeGxYMmR5YjNWd2MxdDFYUzVuY205MWNGOWtaWE5qY21sd2RHbHZibDlwYm1SbGVDRTlQVEFwZTNaaGNpQjVPMlpiZFYwdVpuSmhaMjFsYm5SZlpHVnpZM0pwY0hScGIyNC9lVDFtVzNWZExtWnlZV2R0Wlc1MFgyUmxjMk55YVhCMGFXOXVPbms5Wmx0MVhTNWtaWE5qY21sd2RHbHZiaXgwTG5OaGJYQnNaVjluY205MWNITmJkVjB1WjNKdmRYQmZaR1Z6WTNKcGNIUnBiMjVmYVc1a1pYZytNRDhvZEM1ellXMXdiR1ZmWjNKdmRYQnpXM1ZkTG1keWIzVndYMlJsYzJOeWFYQjBhVzl1WDJsdVpHVjRQalkxTlRNMVAzWTlLSFF1YzJGdGNHeGxYMmR5YjNWd2MxdDFYUzVuY205MWNGOWtaWE5qY21sd2RHbHZibDlwYm1SbGVENCtNVFlwTFRFNmRqMTBMbk5oYlhCc1pWOW5jbTkxY0hOYmRWMHVaM0p2ZFhCZlpHVnpZM0pwY0hScGIyNWZhVzVrWlhndE1TeDVKaVoyUGowd0ppWW9kQzV6WVcxd2JHVmZaM0p2ZFhCelczVmRMbVJsYzJOeWFYQjBhVzl1UFhrdVpXNTBjbWxsYzF0MlhTa3BPbmttSm5rdWRtVnljMmx2Ymo0OU1pWW1lUzVrWldaaGRXeDBYMmR5YjNWd1gyUmxjMk55YVhCMGFXOXVYMmx1WkdWNFBqQW1KaWgwTG5OaGJYQnNaVjluY205MWNITmJkVjB1WkdWelkzSnBjSFJwYjI0OWVTNWxiblJ5YVdWelcza3VaR1ZtWVhWc2RGOW5jbTkxY0Y5a1pYTmpjbWx3ZEdsdmJsOXBibVJsZUMweFhTbDlmU3hqTG5CeWIyTmxjM05mYzJSMGNEMW1kVzVqZEdsdmJpaGxMSFFzYVNsN2RDWW1LR1UvS0hRdWFYTmZiR1ZoWkdsdVp6MWxMbWx6WDJ4bFlXUnBibWRiYVYwc2RDNWtaWEJsYm1SelgyOXVQV1V1YzJGdGNHeGxYMlJsY0dWdVpITmZiMjViYVYwc2RDNXBjMTlrWlhCbGJtUmxaRjl2YmoxbExuTmhiWEJzWlY5cGMxOWtaWEJsYm1SbFpGOXZibHRwWFN4MExtaGhjMTl5WldSMWJtUmhibU41UFdVdWMyRnRjR3hsWDJoaGMxOXlaV1IxYm1SaGJtTjVXMmxkS1Rvb2RDNXBjMTlzWldGa2FXNW5QVEFzZEM1a1pYQmxibVJ6WDI5dVBUQXNkQzVwYzE5a1pYQmxibVJsWkY5dmJqMHdMSFF1YUdGelgzSmxaSFZ1WkdGdVkzazlNQ2twZlN4akxuQnliM1J2ZEhsd1pTNWlkV2xzWkZOaGJYQnNaVXhwYzNSelBXWjFibU4wYVc5dUtDbDdkbUZ5SUdVc2REdG1iM0lvWlQwd08yVThkR2hwY3k1dGIyOTJMblJ5WVd0ekxteGxibWQwYUR0bEt5c3BkRDEwYUdsekxtMXZiM1l1ZEhKaGEzTmJaVjBzZEdocGN5NWlkV2xzWkZSeVlXdFRZVzF3YkdWTWFYTjBjeWgwS1gwc1l5NXdjbTkwYjNSNWNHVXVZblZwYkdSVWNtRnJVMkZ0Y0d4bFRHbHpkSE05Wm5WdVkzUnBiMjRvWlNsN2RtRnlJSFFzYVN4bUxIVXNkaXg1TEcwc1lpeDRMRk1zVlN4RkxIY3NRU3hKTEVZc1VDeEVMR3NzVGl4TkxIRXNSeXhaTzJsbUtHVXVjMkZ0Y0d4bGN6MWJYU3hsTG5OaGJYQnNaWE5mWkhWeVlYUnBiMjQ5TUN4bExuTmhiWEJzWlhOZmMybDZaVDB3TEdrOVpTNXRaR2xoTG0xcGJtWXVjM1JpYkM1emRHTnZmSHhsTG0xa2FXRXViV2x1Wmk1emRHSnNMbU52TmpRc1pqMWxMbTFrYVdFdWJXbHVaaTV6ZEdKc0xuTjBjMk1zZFQxbExtMWthV0V1YldsdVppNXpkR0pzTG5OMGMzcDhmR1V1YldScFlTNXRhVzVtTG5OMFltd3VjM1I2TWl4MlBXVXViV1JwWVM1dGFXNW1Mbk4wWW13dWMzUjBjeXg1UFdVdWJXUnBZUzV0YVc1bUxuTjBZbXd1WTNSMGN5eHRQV1V1YldScFlTNXRhVzVtTG5OMFltd3VjM1J6Y3l4aVBXVXViV1JwWVM1dGFXNW1Mbk4wWW13dWMzUnpaQ3g0UFdVdWJXUnBZUzV0YVc1bUxuTjBZbXd1YzNWaWN5eEZQV1V1YldScFlTNXRhVzVtTG5OMFltd3VjM1JrY0N4VFBXVXViV1JwWVM1dGFXNW1Mbk4wWW13dWMySm5jSE1zVlQxbExtMWthV0V1YldsdVppNXpkR0pzTG5ObmNHUnpMRVE5TFRFc2F6MHRNU3hPUFMweExFMDlMVEVzY1Qwd0xFYzlNQ3haUFRBc1l5NXBibWwwVTJGdGNHeGxSM0p2ZFhCektHVXNiblZzYkN4VExGVXBMQ0VvZEhsd1pXOW1JSFUrSW5VaUtTbDdabTl5S0hROU1EdDBQSFV1YzJGdGNHeGxYM05wZW1WekxteGxibWQwYUR0MEt5c3BlM1poY2lCVVBYdDlPMVF1Ym5WdFltVnlQWFFzVkM1MGNtRmphMTlwWkQxbExuUnJhR1F1ZEhKaFkydGZhV1FzVkM1MGFXMWxjMk5oYkdVOVpTNXRaR2xoTG0xa2FHUXVkR2x0WlhOallXeGxMRlF1WVd4eVpXRmtlVkpsWVdROU1DeGxMbk5oYlhCc1pYTmJkRjA5VkN4VUxuTnBlbVU5ZFM1ellXMXdiR1ZmYzJsNlpYTmJkRjBzWlM1ellXMXdiR1Z6WDNOcGVtVXJQVlF1YzJsNlpTeDBQVDA5TUQ4b1FUMHhMSGM5TUN4VUxtTm9kVzVyWDJsdVpHVjRQVUVzVkM1amFIVnVhMTl5ZFc1ZmFXNWtaWGc5ZHl4UVBXWXVjMkZ0Y0d4bGMxOXdaWEpmWTJoMWJtdGJkMTBzUmowd0xIY3JNVHhtTG1acGNuTjBYMk5vZFc1ckxteGxibWQwYUQ5SlBXWXVabWx5YzNSZlkyaDFibXRiZHlzeFhTMHhPa2s5TVM4d0tUcDBQRkEvS0ZRdVkyaDFibXRmYVc1a1pYZzlRU3hVTG1Ob2RXNXJYM0oxYmw5cGJtUmxlRDEzS1Rvb1FTc3JMRlF1WTJoMWJtdGZhVzVrWlhnOVFTeEdQVEFzUVR3OVNYeDhLSGNyS3l4M0t6RThaaTVtYVhKemRGOWphSFZ1YXk1c1pXNW5kR2cvU1QxbUxtWnBjbk4wWDJOb2RXNXJXM2NyTVYwdE1UcEpQVEV2TUNrc1ZDNWphSFZ1YTE5eWRXNWZhVzVrWlhnOWR5eFFLejFtTG5OaGJYQnNaWE5mY0dWeVgyTm9kVzVyVzNkZEtTeFVMbVJsYzJOeWFYQjBhVzl1WDJsdVpHVjRQV1l1YzJGdGNHeGxYMlJsYzJOeWFYQjBhVzl1WDJsdVpHVjRXMVF1WTJoMWJtdGZjblZ1WDJsdVpHVjRYUzB4TEZRdVpHVnpZM0pwY0hScGIyNDlZaTVsYm5SeWFXVnpXMVF1WkdWelkzSnBjSFJwYjI1ZmFXNWtaWGhkTEZRdWIyWm1jMlYwUFdrdVkyaDFibXRmYjJabWMyVjBjMXRVTG1Ob2RXNXJYMmx1WkdWNExURmRLMFlzUmlzOVZDNXphWHBsTEhRK1JDWW1LR3NyS3l4RVBEQW1KaWhFUFRBcExFUXJQWFl1YzJGdGNHeGxYMk52ZFc1MGMxdHJYU2tzZEQ0d1B5aGxMbk5oYlhCc1pYTmJkQzB4WFM1a2RYSmhkR2x2YmoxMkxuTmhiWEJzWlY5a1pXeDBZWE5iYTEwc1pTNXpZVzF3YkdWelgyUjFjbUYwYVc5dUt6MWxMbk5oYlhCc1pYTmJkQzB4WFM1a2RYSmhkR2x2Yml4VUxtUjBjejFsTG5OaGJYQnNaWE5iZEMweFhTNWtkSE1yWlM1ellXMXdiR1Z6VzNRdE1WMHVaSFZ5WVhScGIyNHBPbFF1WkhSelBUQXNlVDhvZEQ0OVRpWW1LRTByS3l4T1BEQW1KaWhPUFRBcExFNHJQWGt1YzJGdGNHeGxYMk52ZFc1MGMxdE5YU2tzVkM1amRITTlaUzV6WVcxd2JHVnpXM1JkTG1SMGN5dDVMbk5oYlhCc1pWOXZabVp6WlhSelcwMWRLVHBVTG1OMGN6MVVMbVIwY3l4dFB5aDBQVDF0TG5OaGJYQnNaVjl1ZFcxaVpYSnpXM0ZkTFRFL0tGUXVhWE5mYzNsdVl6MGhNQ3h4S3lzcE9paFVMbWx6WDNONWJtTTlJVEVzVkM1a1pXZHlZV1JoZEdsdmJsOXdjbWx2Y21sMGVUMHdLU3g0SmlaNExtVnVkSEpwWlhOYlIxMHVjMkZ0Y0d4bFgyUmxiSFJoSzFrOVBYUXJNU1ltS0ZRdWMzVmljMkZ0Y0d4bGN6MTRMbVZ1ZEhKcFpYTmJSMTB1YzNWaWMyRnRjR3hsY3l4Wkt6MTRMbVZ1ZEhKcFpYTmJSMTB1YzJGdGNHeGxYMlJsYkhSaExFY3JLeWtwT2xRdWFYTmZjM2x1WXowaE1DeGpMbkJ5YjJObGMzTmZjMlIwY0NobExtMWthV0V1YldsdVppNXpkR0pzTG5Oa2RIQXNWQ3hVTG01MWJXSmxjaWtzUlQ5VUxtUmxaM0poWkdGMGFXOXVYM0J5YVc5eWFYUjVQVVV1Y0hKcGIzSnBkSGxiZEYwNlZDNWtaV2R5WVdSaGRHbHZibDl3Y21sdmNtbDBlVDB3TEhnbUpuZ3VaVzUwY21sbGMxdEhYUzV6WVcxd2JHVmZaR1ZzZEdFcldUMDlkQ1ltS0ZRdWMzVmljMkZ0Y0d4bGN6MTRMbVZ1ZEhKcFpYTmJSMTB1YzNWaWMyRnRjR3hsY3l4Wkt6MTRMbVZ1ZEhKcFpYTmJSMTB1YzJGdGNHeGxYMlJsYkhSaEtTd29VeTVzWlc1bmRHZytNSHg4VlM1c1pXNW5kR2crTUNrbUptTXVjMlYwVTJGdGNHeGxSM0p2ZFhCUWNtOXdaWEowYVdWektHVXNWQ3gwTEdVdWMyRnRjR3hsWDJkeWIzVndjMTlwYm1adktYMTBQakFtSmlobExuTmhiWEJzWlhOYmRDMHhYUzVrZFhKaGRHbHZiajFOWVhSb0xtMWhlQ2hsTG0xa2FXRXViV1JvWkM1a2RYSmhkR2x2YmkxbExuTmhiWEJzWlhOYmRDMHhYUzVrZEhNc01Da3NaUzV6WVcxd2JHVnpYMlIxY21GMGFXOXVLejFsTG5OaGJYQnNaWE5iZEMweFhTNWtkWEpoZEdsdmJpbDlmU3hqTG5CeWIzUnZkSGx3WlM1MWNHUmhkR1ZUWVcxd2JHVk1hWE4wY3oxbWRXNWpkR2x2YmlncGUzWmhjaUJsTEhRc2FTeG1MSFVzZGl4NUxHMHNZaXg0TEZNc1ZTeEZMSGNzUVR0cFppaDBhR2x6TG0xdmIzWWhQVDEyYjJsa0lEQXBlMlp2Y2lnN2RHaHBjeTVzWVhOMFRXOXZaa2x1WkdWNFBIUm9hWE11Ylc5dlpuTXViR1Z1WjNSb095bHBaaWhpUFhSb2FYTXViVzl2Wm5OYmRHaHBjeTVzWVhOMFRXOXZaa2x1WkdWNFhTeDBhR2x6TG14aGMzUk5iMjltU1c1a1pYZ3JLeXhpTG5SNWNHVTlQU0p0YjI5bUlpbG1iM0lvZUQxaUxHVTlNRHRsUEhndWRISmhabk11YkdWdVozUm9PMlVyS3lsN1ptOXlLRk05ZUM1MGNtRm1jMXRsWFN4VlBYUm9hWE11WjJWMFZISmhZMnRDZVVsa0tGTXVkR1pvWkM1MGNtRmphMTlwWkNrc1JUMTBhR2x6TG1kbGRGUnlaWGhDZVVsa0tGTXVkR1pvWkM1MGNtRmphMTlwWkNrc1V5NTBabWhrTG1ac1lXZHpKbTh1VkVaSVJGOUdURUZIWDFOQlRWQk1SVjlFUlZORFAyWTlVeTUwWm1oa0xtUmxabUYxYkhSZmMyRnRjR3hsWDJSbGMyTnlhWEIwYVc5dVgybHVaR1Y0T21ZOVJUOUZMbVJsWm1GMWJIUmZjMkZ0Y0d4bFgyUmxjMk55YVhCMGFXOXVYMmx1WkdWNE9qRXNVeTUwWm1oa0xtWnNZV2R6Sm04dVZFWklSRjlHVEVGSFgxTkJUVkJNUlY5RVZWSS9kVDFUTG5SbWFHUXVaR1ZtWVhWc2RGOXpZVzF3YkdWZlpIVnlZWFJwYjI0NmRUMUZQMFV1WkdWbVlYVnNkRjl6WVcxd2JHVmZaSFZ5WVhScGIyNDZNQ3hUTG5SbWFHUXVabXhoWjNNbWJ5NVVSa2hFWDBaTVFVZGZVMEZOVUV4RlgxTkpXa1UvZGoxVExuUm1hR1F1WkdWbVlYVnNkRjl6WVcxd2JHVmZjMmw2WlRwMlBVVS9SUzVrWldaaGRXeDBYM05oYlhCc1pWOXphWHBsT2pBc1V5NTBabWhrTG1ac1lXZHpKbTh1VkVaSVJGOUdURUZIWDFOQlRWQk1SVjlHVEVGSFV6OTVQVk11ZEdab1pDNWtaV1poZFd4MFgzTmhiWEJzWlY5bWJHRm5jenA1UFVVL1JTNWtaV1poZFd4MFgzTmhiWEJzWlY5bWJHRm5jem93TEZNdWMyRnRjR3hsWDI1MWJXSmxjajB3TEZNdWMySm5jSE11YkdWdVozUm9QakFtSm1NdWFXNXBkRk5oYlhCc1pVZHliM1Z3Y3loVkxGTXNVeTV6WW1kd2N5eFZMbTFrYVdFdWJXbHVaaTV6ZEdKc0xuTm5jR1J6TEZNdWMyZHdaSE1wTEhROU1EdDBQRk11ZEhKMWJuTXViR1Z1WjNSb08zUXJLeWw3ZG1GeUlFazlVeTUwY25WdWMxdDBYVHRtYjNJb2FUMHdPMms4U1M1ellXMXdiR1ZmWTI5MWJuUTdhU3NyS1h0M1BYdDlMSGN1Ylc5dlpsOXVkVzFpWlhJOWRHaHBjeTVzWVhOMFRXOXZaa2x1WkdWNExIY3ViblZ0WW1WeVgybHVYM1J5WVdZOVV5NXpZVzF3YkdWZmJuVnRZbVZ5TEZNdWMyRnRjR3hsWDI1MWJXSmxjaXNyTEhjdWJuVnRZbVZ5UFZVdWMyRnRjR3hsY3k1c1pXNW5kR2dzVXk1bWFYSnpkRjl6WVcxd2JHVmZhVzVrWlhnOVZTNXpZVzF3YkdWekxteGxibWQwYUN4VkxuTmhiWEJzWlhNdWNIVnphQ2gzS1N4M0xuUnlZV05yWDJsa1BWVXVkR3RvWkM1MGNtRmphMTlwWkN4M0xuUnBiV1Z6WTJGc1pUMVZMbTFrYVdFdWJXUm9aQzUwYVcxbGMyTmhiR1VzZHk1a1pYTmpjbWx3ZEdsdmJsOXBibVJsZUQxbUxURXNkeTVrWlhOamNtbHdkR2x2YmoxVkxtMWthV0V1YldsdVppNXpkR0pzTG5OMGMyUXVaVzUwY21sbGMxdDNMbVJsYzJOeWFYQjBhVzl1WDJsdVpHVjRYU3gzTG5OcGVtVTlkaXhKTG1ac1lXZHpKbTh1VkZKVlRsOUdURUZIVTE5VFNWcEZKaVlvZHk1emFYcGxQVWt1YzJGdGNHeGxYM05wZW1WYmFWMHBMRlV1YzJGdGNHeGxjMTl6YVhwbEt6MTNMbk5wZW1Vc2R5NWtkWEpoZEdsdmJqMTFMRWt1Wm14aFozTW1ieTVVVWxWT1gwWk1RVWRUWDBSVlVrRlVTVTlPSmlZb2R5NWtkWEpoZEdsdmJqMUpMbk5oYlhCc1pWOWtkWEpoZEdsdmJsdHBYU2tzVlM1ellXMXdiR1Z6WDJSMWNtRjBhVzl1S3oxM0xtUjFjbUYwYVc5dUxGVXVabWx5YzNSZmRISmhabDl0WlhKblpXUjhmR2srTUQ5M0xtUjBjejFWTG5OaGJYQnNaWE5iVlM1ellXMXdiR1Z6TG14bGJtZDBhQzB5WFM1a2RITXJWUzV6WVcxd2JHVnpXMVV1YzJGdGNHeGxjeTVzWlc1bmRHZ3RNbDB1WkhWeVlYUnBiMjQ2S0ZNdWRHWmtkRDkzTG1SMGN6MVRMblJtWkhRdVltRnpaVTFsWkdsaFJHVmpiMlJsVkdsdFpUcDNMbVIwY3owd0xGVXVabWx5YzNSZmRISmhabDl0WlhKblpXUTlJVEFwTEhjdVkzUnpQWGN1WkhSekxFa3VabXhoWjNNbWJ5NVVVbFZPWDBaTVFVZFRYME5VVTE5UFJrWlRSVlFtSmloM0xtTjBjejEzTG1SMGN5dEpMbk5oYlhCc1pWOWpiMjF3YjNOcGRHbHZibDkwYVcxbFgyOW1abk5sZEZ0cFhTa3NRVDE1TEVrdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgwWk1RVWRUUDBFOVNTNXpZVzF3YkdWZlpteGhaM05iYVYwNmFUMDlQVEFtSmtrdVpteGhaM01tYnk1VVVsVk9YMFpNUVVkVFgwWkpVbE5VWDBaTVFVY21KaWhCUFVrdVptbHljM1JmYzJGdGNHeGxYMlpzWVdkektTeDNMbWx6WDNONWJtTTlJU2hCUGo0eE5pWXhLU3gzTG1selgyeGxZV1JwYm1jOVFUNCtNalltTXl4M0xtUmxjR1Z1WkhOZmIyNDlRVDQrTWpRbU15eDNMbWx6WDJSbGNHVnVaR1ZrWDI5dVBVRStQakl5SmpNc2R5NW9ZWE5mY21Wa2RXNWtZVzVqZVQxQlBqNHlNQ1l6TEhjdVpHVm5jbUZrWVhScGIyNWZjSEpwYjNKcGRIazlRU1kyTlRVek5UdDJZWElnUmowaElTaFRMblJtYUdRdVpteGhaM01tYnk1VVJraEVYMFpNUVVkZlFrRlRSVjlFUVZSQlgwOUdSbE5GVkNrc1VEMGhJU2hUTG5SbWFHUXVabXhoWjNNbWJ5NVVSa2hFWDBaTVFVZGZSRVZHUVZWTVZGOUNRVk5GWDBsVFgwMVBUMFlwTEVROUlTRW9TUzVtYkdGbmN5WnZMbFJTVlU1ZlJreEJSMU5mUkVGVVFWOVBSa1pUUlZRcExHczlNRHRHUDJzOVV5NTBabWhrTG1KaGMyVmZaR0YwWVY5dlptWnpaWFE2VUh4OGREMDlQVEEvYXoxNExuTjBZWEowT21zOWJTeDBQVDA5TUNZbWFUMDlQVEEvUkQ5M0xtOW1abk5sZEQxckswa3VaR0YwWVY5dlptWnpaWFE2ZHk1dlptWnpaWFE5YXpwM0xtOW1abk5sZEQxdExHMDlkeTV2Wm1aelpYUXJkeTV6YVhwbExDaFRMbk5pWjNCekxteGxibWQwYUQ0d2ZIeFRMbk5uY0dSekxteGxibWQwYUQ0d2ZIeFZMbTFrYVdFdWJXbHVaaTV6ZEdKc0xuTmlaM0J6TG14bGJtZDBhRDR3Zkh4VkxtMWthV0V1YldsdVppNXpkR0pzTG5ObmNHUnpMbXhsYm1kMGFENHdLU1ltWXk1elpYUlRZVzF3YkdWSGNtOTFjRkJ5YjNCbGNuUnBaWE1vVlN4M0xIY3ViblZ0WW1WeVgybHVYM1J5WVdZc1V5NXpZVzF3YkdWZlozSnZkWEJ6WDJsdVptOHBmWDFwWmloVExuTjFZbk1wZTFVdWFHRnpYMlp5WVdkdFpXNTBYM04xWW5OaGJYQnNaWE05SVRBN2RtRnlJRTQ5VXk1bWFYSnpkRjl6WVcxd2JHVmZhVzVrWlhnN1ptOXlLSFE5TUR0MFBGTXVjM1ZpY3k1bGJuUnlhV1Z6TG14bGJtZDBhRHQwS3lzcFRpczlVeTV6ZFdKekxtVnVkSEpwWlhOYmRGMHVjMkZ0Y0d4bFgyUmxiSFJoTEhjOVZTNXpZVzF3YkdWelcwNHRNVjBzZHk1emRXSnpZVzF3YkdWelBWTXVjM1ZpY3k1bGJuUnlhV1Z6VzNSZExuTjFZbk5oYlhCc1pYTjlmWDE5TEdNdWNISnZkRzkwZVhCbExtZGxkRk5oYlhCc1pUMW1kVzVqZEdsdmJpaGxMSFFwZTNaaGNpQnBMR1k5WlM1ellXMXdiR1Z6VzNSZE8ybG1LQ0YwYUdsekxtMXZiM1lwY21WMGRYSnVJRzUxYkd3N2FXWW9JV1l1WkdGMFlTbG1MbVJoZEdFOWJtVjNJRlZwYm5RNFFYSnlZWGtvWmk1emFYcGxLU3htTG1Gc2NtVmhaSGxTWldGa1BUQXNkR2hwY3k1ellXMXdiR1Z6UkdGMFlWTnBlbVVyUFdZdWMybDZaU3h5TG1SbFluVm5LQ0pKVTA5R2FXeGxJaXdpUVd4c2IyTmhkR2x1WnlCellXMXdiR1VnSXlJcmRDc2lJRzl1SUhSeVlXTnJJQ01pSzJVdWRHdG9aQzUwY21GamExOXBaQ3NpSUc5bUlITnBlbVVnSWl0bUxuTnBlbVVySWlBb2RHOTBZV3c2SUNJcmRHaHBjeTV6WVcxd2JHVnpSR0YwWVZOcGVtVXJJaWtpS1R0bGJITmxJR2xtS0dZdVlXeHlaV0ZrZVZKbFlXUTlQV1l1YzJsNlpTbHlaWFIxY200Z1pqdG1iM0lvT3pzcGUzWmhjaUIxUFhSb2FYTXVjM1J5WldGdExtWnBibVJRYjNOcGRHbHZiaWdoTUN4bUxtOW1abk5sZEN0bUxtRnNjbVZoWkhsU1pXRmtMQ0V4S1R0cFppaDFQaTB4S1h0cFBYUm9hWE11YzNSeVpXRnRMbUoxWm1abGNuTmJkVjA3ZG1GeUlIWTlhUzVpZVhSbFRHVnVaM1JvTFNobUxtOW1abk5sZEN0bUxtRnNjbVZoWkhsU1pXRmtMV2t1Wm1sc1pWTjBZWEowS1R0cFppaG1Mbk5wZW1VdFppNWhiSEpsWVdSNVVtVmhaRHc5ZGlseVpYUjFjbTRnY2k1a1pXSjFaeWdpU1ZOUFJtbHNaU0lzSWtkbGRIUnBibWNnYzJGdGNHeGxJQ01pSzNRcklpQmtZWFJoSUNoaGJISmxZV1I1VW1WaFpEb2dJaXRtTG1Gc2NtVmhaSGxTWldGa0t5SWdiMlptYzJWME9pQWlLeWhtTG05bVpuTmxkQ3RtTG1Gc2NtVmhaSGxTWldGa0xXa3VabWxzWlZOMFlYSjBLU3NpSUhKbFlXUWdjMmw2WlRvZ0lpc29aaTV6YVhwbExXWXVZV3h5WldGa2VWSmxZV1FwS3lJZ1puVnNiQ0J6YVhwbE9pQWlLMll1YzJsNlpTc2lLU0lwTEhNdWJXVnRZM0I1S0dZdVpHRjBZUzVpZFdabVpYSXNaaTVoYkhKbFlXUjVVbVZoWkN4cExHWXViMlptYzJWMEsyWXVZV3h5WldGa2VWSmxZV1F0YVM1bWFXeGxVM1JoY25Rc1ppNXphWHBsTFdZdVlXeHlaV0ZrZVZKbFlXUXBMR2t1ZFhObFpFSjVkR1Z6S3oxbUxuTnBlbVV0Wmk1aGJISmxZV1I1VW1WaFpDeDBhR2x6TG5OMGNtVmhiUzVzYjJkQ2RXWm1aWEpNWlhabGJDZ3BMR1l1WVd4eVpXRmtlVkpsWVdROVppNXphWHBsTEdZN2FXWW9kajA5UFRBcGNtVjBkWEp1SUc1MWJHdzdjaTVrWldKMVp5Z2lTVk5QUm1sc1pTSXNJa2RsZEhScGJtY2djMkZ0Y0d4bElDTWlLM1FySWlCd1lYSjBhV0ZzSUdSaGRHRWdLR0ZzY21WaFpIbFNaV0ZrT2lBaUsyWXVZV3h5WldGa2VWSmxZV1FySWlCdlptWnpaWFE2SUNJcktHWXViMlptYzJWMEsyWXVZV3h5WldGa2VWSmxZV1F0YVM1bWFXeGxVM1JoY25RcEt5SWdjbVZoWkNCemFYcGxPaUFpSzNZcklpQm1kV3hzSUhOcGVtVTZJQ0lyWmk1emFYcGxLeUlwSWlrc2N5NXRaVzFqY0hrb1ppNWtZWFJoTG1KMVptWmxjaXhtTG1Gc2NtVmhaSGxTWldGa0xHa3NaaTV2Wm1aelpYUXJaaTVoYkhKbFlXUjVVbVZoWkMxcExtWnBiR1ZUZEdGeWRDeDJLU3htTG1Gc2NtVmhaSGxTWldGa0t6MTJMR2t1ZFhObFpFSjVkR1Z6S3oxMkxIUm9hWE11YzNSeVpXRnRMbXh2WjBKMVptWmxja3hsZG1Wc0tDbDlaV3h6WlNCeVpYUjFjbTRnYm5Wc2JIMTlMR011Y0hKdmRHOTBlWEJsTG5KbGJHVmhjMlZUWVcxd2JHVTlablZ1WTNScGIyNG9aU3gwS1h0MllYSWdhVDFsTG5OaGJYQnNaWE5iZEYwN2NtVjBkWEp1SUdrdVpHRjBZVDhvZEdocGN5NXpZVzF3YkdWelJHRjBZVk5wZW1VdFBXa3VjMmw2WlN4cExtUmhkR0U5Ym5Wc2JDeHBMbUZzY21WaFpIbFNaV0ZrUFRBc2FTNXphWHBsS1Rvd2ZTeGpMbkJ5YjNSdmRIbHdaUzVuWlhSQmJHeHZZMkYwWldSVFlXMXdiR1ZFWVhSaFUybDZaVDFtZFc1amRHbHZiaWdwZTNKbGRIVnliaUIwYUdsekxuTmhiWEJzWlhORVlYUmhVMmw2Wlgwc1l5NXdjbTkwYjNSNWNHVXVaMlYwUTI5a1pXTnpQV1oxYm1OMGFXOXVLQ2w3ZG1GeUlHVXNkRDBpSWp0bWIzSW9aVDB3TzJVOGRHaHBjeTV0YjI5MkxuUnlZV3R6TG14bGJtZDBhRHRsS3lzcGUzWmhjaUJwUFhSb2FYTXViVzl2ZGk1MGNtRnJjMXRsWFR0bFBqQW1KaWgwS3owaUxDSXBMSFFyUFdrdWJXUnBZUzV0YVc1bUxuTjBZbXd1YzNSelpDNWxiblJ5YVdWeld6QmRMbWRsZEVOdlpHVmpLQ2w5Y21WMGRYSnVJSFI5TEdNdWNISnZkRzkwZVhCbExtZGxkRlJ5WlhoQ2VVbGtQV1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBPMmxtS0NGMGFHbHpMbTF2YjNaOGZDRjBhR2x6TG0xdmIzWXViWFpsZUNseVpYUjFjbTRnYm5Wc2JEdG1iM0lvZEQwd08zUThkR2hwY3k1dGIyOTJMbTEyWlhndWRISmxlSE11YkdWdVozUm9PM1FyS3lsN2RtRnlJR2s5ZEdocGN5NXRiMjkyTG0xMlpYZ3VkSEpsZUhOYmRGMDdhV1lvYVM1MGNtRmphMTlwWkQwOVpTbHlaWFIxY200Z2FYMXlaWFIxY200Z2JuVnNiSDBzWXk1d2NtOTBiM1I1Y0dVdVoyVjBWSEpoWTJ0Q2VVbGtQV1oxYm1OMGFXOXVLR1VwZTJsbUtIUm9hWE11Ylc5dmRqMDlQWFp2YVdRZ01DbHlaWFIxY200Z2JuVnNiRHRtYjNJb2RtRnlJSFE5TUR0MFBIUm9hWE11Ylc5dmRpNTBjbUZyY3k1c1pXNW5kR2c3ZENzcktYdDJZWElnYVQxMGFHbHpMbTF2YjNZdWRISmhhM05iZEYwN2FXWW9hUzUwYTJoa0xuUnlZV05yWDJsa1BUMWxLWEpsZEhWeWJpQnBmWEpsZEhWeWJpQnVkV3hzZlN4akxuQnliM1J2ZEhsd1pTNXBkR1Z0Y3oxYlhTeGpMbkJ5YjNSdmRIbHdaUzVwZEdWdGMwUmhkR0ZUYVhwbFBUQXNZeTV3Y205MGIzUjVjR1V1Wm14aGRIUmxia2wwWlcxSmJtWnZQV1oxYm1OMGFXOXVLQ2w3ZG1GeUlHVTlkR2hwY3k1cGRHVnRjeXgwTEdrc1ppeDFQWFJvYVhNdWJXVjBZVHRwWmloMUlUMXVkV3hzSmlaMUxtaGtiSEloUFQxMmIybGtJREFtSm5VdWFXbHVaaUU5UFhadmFXUWdNQ2w3Wm05eUtIUTlNRHQwUEhVdWFXbHVaaTVwZEdWdFgybHVabTl6TG14bGJtZDBhRHQwS3lzcFpqMTdmU3htTG1sa1BYVXVhV2x1Wmk1cGRHVnRYMmx1Wm05elczUmRMbWwwWlcxZlNVUXNaVnRtTG1sa1hUMW1MR1l1Y21WbVgzUnZQVnRkTEdZdWJtRnRaVDExTG1scGJtWXVhWFJsYlY5cGJtWnZjMXQwWFM1cGRHVnRYMjVoYldVc2RTNXBhVzVtTG1sMFpXMWZhVzVtYjNOYmRGMHVjSEp2ZEdWamRHbHZibDlwYm1SbGVENHdKaVlvWmk1d2NtOTBaV04wYVc5dVBYVXVhWEJ5Ynk1d2NtOTBaV04wYVc5dWMxdDFMbWxwYm1ZdWFYUmxiVjlwYm1admMxdDBYUzV3Y205MFpXTjBhVzl1WDJsdVpHVjRMVEZkS1N4MUxtbHBibVl1YVhSbGJWOXBibVp2YzF0MFhTNXBkR1Z0WDNSNWNHVS9aaTUwZVhCbFBYVXVhV2x1Wmk1cGRHVnRYMmx1Wm05elczUmRMbWwwWlcxZmRIbHdaVHBtTG5SNWNHVTlJbTFwYldVaUxHWXVZMjl1ZEdWdWRGOTBlWEJsUFhVdWFXbHVaaTVwZEdWdFgybHVabTl6VzNSZExtTnZiblJsYm5SZmRIbHdaU3htTG1OdmJuUmxiblJmWlc1amIyUnBibWM5ZFM1cGFXNW1MbWwwWlcxZmFXNW1iM05iZEYwdVkyOXVkR1Z1ZEY5bGJtTnZaR2x1Wnp0cFppaDFMbWxzYjJNcFptOXlLSFE5TUR0MFBIVXVhV3h2WXk1cGRHVnRjeTVzWlc1bmRHZzdkQ3NyS1h0MllYSWdkajExTG1sc2IyTXVhWFJsYlhOYmRGMDdjM2RwZEdOb0tHWTlaVnQyTG1sMFpXMWZTVVJkTEhZdVpHRjBZVjl5WldabGNtVnVZMlZmYVc1a1pYZ2hQVDB3SmlZb2NpNTNZWEp1S0NKSmRHVnRJSE4wYjNKaFoyVWdkMmwwYUNCeVpXWmxjbVZ1WTJVZ2RHOGdiM1JvWlhJZ1ptbHNaWE02SUc1dmRDQnpkWEJ3YjNKMFpXUWlLU3htTG5OdmRYSmpaVDExTG1ScGJtWXVZbTk0WlhOYmRpNWtZWFJoWDNKbFptVnlaVzVqWlY5cGJtUmxlQzB4WFNrc2RpNWpiMjV6ZEhKMVkzUnBiMjVmYldWMGFHOWtLWHRqWVhObElEQTZZbkpsWVdzN1kyRnpaU0F4T25JdWQyRnliaWdpU1hSbGJTQnpkRzl5WVdkbElIZHBkR2dnWTI5dWMzUnlkV04wYVc5dVgyMWxkR2h2WkNBNklHNXZkQ0J6ZFhCd2IzSjBaV1FpS1R0aWNtVmhhenRqWVhObElESTZjaTUzWVhKdUtDSkpkR1Z0SUhOMGIzSmhaMlVnZDJsMGFDQmpiMjV6ZEhKMVkzUnBiMjVmYldWMGFHOWtJRG9nYm05MElITjFjSEJ2Y25SbFpDSXBPMkp5WldGcmZXWnZjaWhtTG1WNGRHVnVkSE05VzEwc1ppNXphWHBsUFRBc2FUMHdPMms4ZGk1bGVIUmxiblJ6TG14bGJtZDBhRHRwS3lzcFppNWxlSFJsYm5SelcybGRQWHQ5TEdZdVpYaDBaVzUwYzF0cFhTNXZabVp6WlhROWRpNWxlSFJsYm5SelcybGRMbVY0ZEdWdWRGOXZabVp6WlhRcmRpNWlZWE5sWDI5bVpuTmxkQ3htTG1WNGRHVnVkSE5iYVYwdWJHVnVaM1JvUFhZdVpYaDBaVzUwYzF0cFhTNWxlSFJsYm5SZmJHVnVaM1JvTEdZdVpYaDBaVzUwYzF0cFhTNWhiSEpsWVdSNVVtVmhaRDB3TEdZdWMybDZaU3M5Wmk1bGVIUmxiblJ6VzJsZExteGxibWQwYUgxcFppaDFMbkJwZEcwbUppaGxXM1V1Y0dsMGJTNXBkR1Z0WDJsa1hTNXdjbWx0WVhKNVBTRXdLU3gxTG1seVpXWXBabTl5S0hROU1EdDBQSFV1YVhKbFppNXlaV1psY21WdVkyVnpMbXhsYm1kMGFEdDBLeXNwZTNaaGNpQjVQWFV1YVhKbFppNXlaV1psY21WdVkyVnpXM1JkTzJadmNpaHBQVEE3YVR4NUxuSmxabVZ5Wlc1alpYTXViR1Z1WjNSb08ya3JLeWxsVzNrdVpuSnZiVjlwZEdWdFgwbEVYUzV5WldaZmRHOHVjSFZ6YUNoN2RIbHdaVHA1TG5SNWNHVXNhV1E2ZVM1eVpXWmxjbVZ1WTJWelcybGRmU2w5YVdZb2RTNXBjSEp3S1dadmNpaDJZWElnYlQwd08yMDhkUzVwY0hKd0xtbHdiV0Z6TG14bGJtZDBhRHR0S3lzcGUzWmhjaUJpUFhVdWFYQnljQzVwY0cxaGMxdHRYVHRtYjNJb2REMHdPM1E4WWk1aGMzTnZZMmxoZEdsdmJuTXViR1Z1WjNSb08zUXJLeWw3ZG1GeUlIZzlZaTVoYzNOdlkybGhkR2x2Ym5OYmRGMDdabTl5S0dZOVpWdDRMbWxrWFN4bUxuQnliM0JsY25ScFpYTTlQVDEyYjJsa0lEQW1KaWhtTG5CeWIzQmxjblJwWlhNOWUzMHNaaTV3Y205d1pYSjBhV1Z6TG1KdmVHVnpQVnRkS1N4cFBUQTdhVHg0TG5CeWIzQnpMbXhsYm1kMGFEdHBLeXNwZTNaaGNpQlRQWGd1Y0hKdmNITmJhVjA3YVdZb1V5NXdjbTl3WlhKMGVWOXBibVJsZUQ0d0ppWlRMbkJ5YjNCbGNuUjVYMmx1WkdWNExURThkUzVwY0hKd0xtbHdZMjh1WW05NFpYTXViR1Z1WjNSb0tYdDJZWElnVlQxMUxtbHdjbkF1YVhCamJ5NWliM2hsYzF0VExuQnliM0JsY25SNVgybHVaR1Y0TFRGZE8yWXVjSEp2Y0dWeWRHbGxjMXRWTG5SNWNHVmRQVlVzWmk1d2NtOXdaWEowYVdWekxtSnZlR1Z6TG5CMWMyZ29WU2w5ZlgxOWZYMHNZeTV3Y205MGIzUjVjR1V1WjJWMFNYUmxiVDFtZFc1amRHbHZiaWhsS1h0MllYSWdkQ3hwTzJsbUtDRjBhR2x6TG0xbGRHRXBjbVYwZFhKdUlHNTFiR3c3YVdZb2FUMTBhR2x6TG1sMFpXMXpXMlZkTENGcExtUmhkR0VtSm1rdWMybDZaU2xwTG1SaGRHRTlibVYzSUZWcGJuUTRRWEp5WVhrb2FTNXphWHBsS1N4cExtRnNjbVZoWkhsU1pXRmtQVEFzZEdocGN5NXBkR1Z0YzBSaGRHRlRhWHBsS3oxcExuTnBlbVVzY2k1a1pXSjFaeWdpU1ZOUFJtbHNaU0lzSWtGc2JHOWpZWFJwYm1jZ2FYUmxiU0FqSWl0bEt5SWdiMllnYzJsNlpTQWlLMmt1YzJsNlpTc2lJQ2gwYjNSaGJEb2dJaXQwYUdsekxtbDBaVzF6UkdGMFlWTnBlbVVySWlraUtUdGxiSE5sSUdsbUtHa3VZV3h5WldGa2VWSmxZV1E5UFQxcExuTnBlbVVwY21WMGRYSnVJR2s3Wm05eUtIWmhjaUJtUFRBN1pqeHBMbVY0ZEdWdWRITXViR1Z1WjNSb08yWXJLeWw3ZG1GeUlIVTlhUzVsZUhSbGJuUnpXMlpkTzJsbUtIVXVZV3h5WldGa2VWSmxZV1FoUFQxMUxteGxibWQwYUNsN2RtRnlJSFk5ZEdocGN5NXpkSEpsWVcwdVptbHVaRkJ2YzJsMGFXOXVLQ0V3TEhVdWIyWm1jMlYwSzNVdVlXeHlaV0ZrZVZKbFlXUXNJVEVwTzJsbUtIWStMVEVwZTNROWRHaHBjeTV6ZEhKbFlXMHVZblZtWm1WeWMxdDJYVHQyWVhJZ2VUMTBMbUo1ZEdWTVpXNW5kR2d0S0hVdWIyWm1jMlYwSzNVdVlXeHlaV0ZrZVZKbFlXUXRkQzVtYVd4bFUzUmhjblFwTzJsbUtIVXViR1Z1WjNSb0xYVXVZV3h5WldGa2VWSmxZV1E4UFhrcGNpNWtaV0oxWnlnaVNWTlBSbWxzWlNJc0lrZGxkSFJwYm1jZ2FYUmxiU0FqSWl0bEt5SWdaWGgwWlc1MElDTWlLMllySWlCa1lYUmhJQ2hoYkhKbFlXUjVVbVZoWkRvZ0lpdDFMbUZzY21WaFpIbFNaV0ZrS3lJZ2IyWm1jMlYwT2lBaUt5aDFMbTltWm5ObGRDdDFMbUZzY21WaFpIbFNaV0ZrTFhRdVptbHNaVk4wWVhKMEtTc2lJSEpsWVdRZ2MybDZaVG9nSWlzb2RTNXNaVzVuZEdndGRTNWhiSEpsWVdSNVVtVmhaQ2tySWlCbWRXeHNJR1Y0ZEdWdWRDQnphWHBsT2lBaUszVXViR1Z1WjNSb0t5SWdablZzYkNCcGRHVnRJSE5wZW1VNklDSXJhUzV6YVhwbEt5SXBJaWtzY3k1dFpXMWpjSGtvYVM1a1lYUmhMbUoxWm1abGNpeHBMbUZzY21WaFpIbFNaV0ZrTEhRc2RTNXZabVp6WlhRcmRTNWhiSEpsWVdSNVVtVmhaQzEwTG1acGJHVlRkR0Z5ZEN4MUxteGxibWQwYUMxMUxtRnNjbVZoWkhsU1pXRmtLU3gwTG5WelpXUkNlWFJsY3lzOWRTNXNaVzVuZEdndGRTNWhiSEpsWVdSNVVtVmhaQ3gwYUdsekxuTjBjbVZoYlM1c2IyZENkV1ptWlhKTVpYWmxiQ2dwTEdrdVlXeHlaV0ZrZVZKbFlXUXJQWFV1YkdWdVozUm9MWFV1WVd4eVpXRmtlVkpsWVdRc2RTNWhiSEpsWVdSNVVtVmhaRDExTG14bGJtZDBhRHRsYkhObElISmxkSFZ5YmlCeUxtUmxZblZuS0NKSlUwOUdhV3hsSWl3aVIyVjBkR2x1WnlCcGRHVnRJQ01pSzJVcklpQmxlSFJsYm5RZ0l5SXJaaXNpSUhCaGNuUnBZV3dnWkdGMFlTQW9ZV3h5WldGa2VWSmxZV1E2SUNJcmRTNWhiSEpsWVdSNVVtVmhaQ3NpSUc5bVpuTmxkRG9nSWlzb2RTNXZabVp6WlhRcmRTNWhiSEpsWVdSNVVtVmhaQzEwTG1acGJHVlRkR0Z5ZENrcklpQnlaV0ZrSUhOcGVtVTZJQ0lyZVNzaUlHWjFiR3dnWlhoMFpXNTBJSE5wZW1VNklDSXJkUzVzWlc1bmRHZ3JJaUJtZFd4c0lHbDBaVzBnYzJsNlpUb2dJaXRwTG5OcGVtVXJJaWtpS1N4ekxtMWxiV053ZVNocExtUmhkR0V1WW5WbVptVnlMR2t1WVd4eVpXRmtlVkpsWVdRc2RDeDFMbTltWm5ObGRDdDFMbUZzY21WaFpIbFNaV0ZrTFhRdVptbHNaVk4wWVhKMExIa3BMSFV1WVd4eVpXRmtlVkpsWVdRclBYa3NhUzVoYkhKbFlXUjVVbVZoWkNzOWVTeDBMblZ6WldSQ2VYUmxjeXM5ZVN4MGFHbHpMbk4wY21WaGJTNXNiMmRDZFdabVpYSk1aWFpsYkNncExHNTFiR3g5Wld4elpTQnlaWFIxY200Z2JuVnNiSDE5Y21WMGRYSnVJR2t1WVd4eVpXRmtlVkpsWVdROVBUMXBMbk5wZW1VL2FUcHVkV3hzZlN4akxuQnliM1J2ZEhsd1pTNXlaV3hsWVhObFNYUmxiVDFtZFc1amRHbHZiaWhsS1h0MllYSWdkRDEwYUdsekxtbDBaVzF6VzJWZE8ybG1LSFF1WkdGMFlTbDdkR2hwY3k1cGRHVnRjMFJoZEdGVGFYcGxMVDEwTG5OcGVtVXNkQzVrWVhSaFBXNTFiR3dzZEM1aGJISmxZV1I1VW1WaFpEMHdPMlp2Y2loMllYSWdhVDB3TzJrOGRDNWxlSFJsYm5SekxteGxibWQwYUR0cEt5c3BlM1poY2lCbVBYUXVaWGgwWlc1MGMxdHBYVHRtTG1Gc2NtVmhaSGxTWldGa1BUQjljbVYwZFhKdUlIUXVjMmw2WlgxbGJITmxJSEpsZEhWeWJpQXdmU3hqTG5CeWIzUnZkSGx3WlM1d2NtOWpaWE56U1hSbGJYTTlablZ1WTNScGIyNG9aU2w3Wm05eUtIWmhjaUIwSUdsdUlIUm9hWE11YVhSbGJYTXBlM1poY2lCcFBYUm9hWE11YVhSbGJYTmJkRjA3ZEdocGN5NW5aWFJKZEdWdEtHa3VhV1FwTEdVbUppRnBMbk5sYm5RbUppaGxLR2twTEdrdWMyVnVkRDBoTUN4cExtUmhkR0U5Ym5Wc2JDbDlmU3hqTG5CeWIzUnZkSGx3WlM1b1lYTkpkR1Z0UFdaMWJtTjBhVzl1S0dVcGUyWnZjaWgyWVhJZ2RDQnBiaUIwYUdsekxtbDBaVzF6S1h0MllYSWdhVDEwYUdsekxtbDBaVzF6VzNSZE8ybG1LR2t1Ym1GdFpUMDlQV1VwY21WMGRYSnVJR2t1YVdSOWNtVjBkWEp1TFRGOUxHTXVjSEp2ZEc5MGVYQmxMbWRsZEUxbGRHRklZVzVrYkdWeVBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11YldWMFlUOTBhR2x6TG0xbGRHRXVhR1JzY2k1b1lXNWtiR1Z5T201MWJHeDlMR011Y0hKdmRHOTBlWEJsTG1kbGRGQnlhVzFoY25sSmRHVnRQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJWFJvYVhNdWJXVjBZWHg4SVhSb2FYTXViV1YwWVM1d2FYUnRQMjUxYkd3NmRHaHBjeTVuWlhSSmRHVnRLSFJvYVhNdWJXVjBZUzV3YVhSdExtbDBaVzFmYVdRcGZTeGpMbkJ5YjNSdmRIbHdaUzVwZEdWdFZHOUdjbUZuYldWdWRHVmtWSEpoWTJ0R2FXeGxQV1oxYm1OMGFXOXVLR1VwZTNaaGNpQjBQV1Y4Zkh0OUxHazliblZzYkR0cFppaDBMbWwwWlcxSlpEOXBQWFJvYVhNdVoyVjBTWFJsYlNoMExtbDBaVzFKWkNrNmFUMTBhR2x6TG1kbGRGQnlhVzFoY25sSmRHVnRLQ2tzYVQwOWJuVnNiQ2x5WlhSMWNtNGdiblZzYkR0MllYSWdaajF1WlhjZ1l6dG1MbVJwYzJOaGNtUk5aR0YwUkdGMFlUMGhNVHQyWVhJZ2RUMTdkSGx3WlRwcExuUjVjR1VzWkdWelkzSnBjSFJwYjI1ZlltOTRaWE02YVM1d2NtOXdaWEowYVdWekxtSnZlR1Z6ZlR0cExuQnliM0JsY25ScFpYTXVhWE53WlNZbUtIVXVkMmxrZEdnOWFTNXdjbTl3WlhKMGFXVnpMbWx6Y0dVdWFXMWhaMlZmZDJsa2RHZ3NkUzVvWldsbmFIUTlhUzV3Y205d1pYSjBhV1Z6TG1semNHVXVhVzFoWjJWZmFHVnBaMmgwS1R0MllYSWdkajFtTG1Ga1pGUnlZV05yS0hVcE8zSmxkSFZ5YmlCMlB5aG1MbUZrWkZOaGJYQnNaU2gyTEdrdVpHRjBZU2tzWmlrNmJuVnNiSDBzWXk1d2NtOTBiM1I1Y0dVdWQzSnBkR1U5Wm5WdVkzUnBiMjRvWlNsN1ptOXlLSFpoY2lCMFBUQTdkRHgwYUdsekxtSnZlR1Z6TG14bGJtZDBhRHQwS3lzcGRHaHBjeTVpYjNobGMxdDBYUzUzY21sMFpTaGxLWDBzWXk1d2NtOTBiM1I1Y0dVdVkzSmxZWFJsUm5KaFoyMWxiblE5Wm5WdVkzUnBiMjRvWlN4MExHa3BlM1poY2lCbVBYUm9hWE11WjJWMFZISmhZMnRDZVVsa0tHVXBMSFU5ZEdocGN5NW5aWFJUWVcxd2JHVW9aaXgwS1R0cFppaDFQVDF1ZFd4c0tYSmxkSFZ5YmlCMVBXWXVjMkZ0Y0d4bGMxdDBYU3gwYUdsekxtNWxlSFJUWldWclVHOXphWFJwYjI0L2RHaHBjeTV1WlhoMFUyVmxhMUJ2YzJsMGFXOXVQVTFoZEdndWJXbHVLSFV1YjJabWMyVjBLM1V1WVd4eVpXRmtlVkpsWVdRc2RHaHBjeTV1WlhoMFUyVmxhMUJ2YzJsMGFXOXVLVHAwYUdsekxtNWxlSFJUWldWclVHOXphWFJwYjI0OVppNXpZVzF3YkdWelczUmRMbTltWm5ObGRDdDFMbUZzY21WaFpIbFNaV0ZrTEc1MWJHdzdkbUZ5SUhZOWFYeDhibVYzSUhNN2RpNWxibVJwWVc1dVpYTnpQWE11UWtsSFgwVk9SRWxCVGp0MllYSWdlVDEwYUdsekxtTnlaV0YwWlZOcGJtZHNaVk5oYlhCc1pVMXZiMllvZFNrN2VTNTNjbWwwWlNoMktTeDVMblJ5WVdaeld6QmRMblJ5ZFc1eld6QmRMbVJoZEdGZmIyWm1jMlYwUFhrdWMybDZaU3M0TEhJdVpHVmlkV2NvSWsxUU5FSnZlQ0lzSWtGa2FuVnpkR2x1WnlCa1lYUmhYMjltWm5ObGRDQjNhWFJvSUc1bGR5QjJZV3gxWlNBaUsza3VkSEpoWm5OYk1GMHVkSEoxYm5OYk1GMHVaR0YwWVY5dlptWnpaWFFwTEhZdVlXUnFkWE4wVldsdWRETXlLSGt1ZEhKaFpuTmJNRjB1ZEhKMWJuTmJNRjB1WkdGMFlWOXZabVp6WlhSZmNHOXphWFJwYjI0c2VTNTBjbUZtYzFzd1hTNTBjblZ1YzFzd1hTNWtZWFJoWDI5bVpuTmxkQ2s3ZG1GeUlHMDlibVYzSUc4dWJXUmhkRUp2ZUR0eVpYUjFjbTRnYlM1a1lYUmhQWFV1WkdGMFlTeHRMbmR5YVhSbEtIWXBMSFo5TEdNdWQzSnBkR1ZKYm1sMGFXRnNhWHBoZEdsdmJsTmxaMjFsYm5ROVpuVnVZM1JwYjI0b1pTeDBMR2tzWmlsN2RtRnlJSFU3Y2k1a1pXSjFaeWdpU1ZOUFJtbHNaU0lzSWtkbGJtVnlZWFJwYm1jZ2FXNXBkR2xoYkdsNllYUnBiMjRnYzJWbmJXVnVkQ0lwTzNaaGNpQjJQVzVsZHlCek8zWXVaVzVrYVdGdWJtVnpjejF6TGtKSlIxOUZUa1JKUVU0c1pTNTNjbWwwWlNoMktUdDJZWElnZVQxMExtRmtaQ2dpYlhabGVDSXBPMlp2Y2locEppWjVMbUZrWkNnaWJXVm9aQ0lwTG5ObGRDZ2labkpoWjIxbGJuUmZaSFZ5WVhScGIyNGlMR2twTEhVOU1EdDFQSFF1ZEhKaGEzTXViR1Z1WjNSb08zVXJLeWw1TG1Ga1pDZ2lkSEpsZUNJcExuTmxkQ2dpZEhKaFkydGZhV1FpTEhRdWRISmhhM05iZFYwdWRHdG9aQzUwY21GamExOXBaQ2t1YzJWMEtDSmtaV1poZFd4MFgzTmhiWEJzWlY5a1pYTmpjbWx3ZEdsdmJsOXBibVJsZUNJc01Ta3VjMlYwS0NKa1pXWmhkV3gwWDNOaGJYQnNaVjlrZFhKaGRHbHZiaUlzWmlrdWMyVjBLQ0prWldaaGRXeDBYM05oYlhCc1pWOXphWHBsSWl3d0tTNXpaWFFvSW1SbFptRjFiSFJmYzJGdGNHeGxYMlpzWVdkeklpdzJOVFV6TmlrN2NtVjBkWEp1SUhRdWQzSnBkR1VvZGlrc2RpNWlkV1ptWlhKOUxHTXVjSEp2ZEc5MGVYQmxMbk5oZG1VOVpuVnVZM1JwYjI0b1pTbDdkbUZ5SUhROWJtVjNJSE03ZEM1bGJtUnBZVzV1WlhOelBYTXVRa2xIWDBWT1JFbEJUaXgwYUdsekxuZHlhWFJsS0hRcExIUXVjMkYyWlNobEtYMHNZeTV3Y205MGIzUjVjR1V1WjJWMFFuVm1abVZ5UFdaMWJtTjBhVzl1S0NsN2RtRnlJR1U5Ym1WM0lITTdjbVYwZFhKdUlHVXVaVzVrYVdGdWJtVnpjejF6TGtKSlIxOUZUa1JKUVU0c2RHaHBjeTUzY21sMFpTaGxLU3hsTG1KMVptWmxjbjBzWXk1d2NtOTBiM1I1Y0dVdWFXNXBkR2xoYkdsNlpWTmxaMjFsYm5SaGRHbHZiajFtZFc1amRHbHZiaWdwZTNaaGNpQmxMSFFzYVN4bU8yWnZjaWgwYUdsekxtOXVVMlZuYldWdWREMDlQVzUxYkd3bUpuSXVkMkZ5YmlnaVRWQTBRbTk0SWl3aVRtOGdjMlZuYldWdWRHRjBhVzl1SUdOaGJHeGlZV05ySUhObGRDRWlLU3gwYUdsekxtbHpSbkpoWjIxbGJuUmhkR2x2YmtsdWFYUnBZV3hwZW1Wa2ZId29kR2hwY3k1cGMwWnlZV2R0Wlc1MFlYUnBiMjVKYm1sMGFXRnNhWHBsWkQwaE1DeDBhR2x6TG01bGVIUk5iMjltVG5WdFltVnlQVEFzZEdocGN5NXlaWE5sZEZSaFlteGxjeWdwS1N4MFBWdGRMR1U5TUR0bFBIUm9hWE11Wm5KaFoyMWxiblJsWkZSeVlXTnJjeTVzWlc1bmRHZzdaU3NyS1h0MllYSWdkVDF1WlhjZ2J5NXRiMjkyUW05NE8zVXViWFpvWkQxMGFHbHpMbTF2YjNZdWJYWm9aQ3gxTG1KdmVHVnpMbkIxYzJnb2RTNXRkbWhrS1N4cFBYUm9hWE11WjJWMFZISmhZMnRDZVVsa0tIUm9hWE11Wm5KaFoyMWxiblJsWkZSeVlXTnJjMXRsWFM1cFpDa3NkUzVpYjNobGN5NXdkWE5vS0drcExIVXVkSEpoYTNNdWNIVnphQ2hwS1N4bVBYdDlMR1l1YVdROWFTNTBhMmhrTG5SeVlXTnJYMmxrTEdZdWRYTmxjajEwYUdsekxtWnlZV2R0Wlc1MFpXUlVjbUZqYTNOYlpWMHVkWE5sY2l4bUxtSjFabVpsY2oxakxuZHlhWFJsU1c1cGRHbGhiR2w2WVhScGIyNVRaV2R0Wlc1MEtIUm9hWE11Wm5SNWNDeDFMSFJvYVhNdWJXOXZkaTV0ZG1WNEppWjBhR2x6TG0xdmIzWXViWFpsZUM1dFpXaGtQM1JvYVhNdWJXOXZkaTV0ZG1WNExtMWxhR1F1Wm5KaFoyMWxiblJmWkhWeVlYUnBiMjQ2ZG05cFpDQXdMSFJvYVhNdWJXOXZkaTUwY21GcmMxdGxYUzV6WVcxd2JHVnpMbXhsYm1kMGFENHdQM1JvYVhNdWJXOXZkaTUwY21GcmMxdGxYUzV6WVcxd2JHVnpXekJkTG1SMWNtRjBhVzl1T2pBcExIUXVjSFZ6YUNobUtYMXlaWFIxY200Z2RIMHNieTVDYjNndWNISnZkRzkwZVhCbExuQnlhVzUwU0dWaFpHVnlQV1oxYm1OMGFXOXVLR1VwZTNSb2FYTXVjMmw2WlNzOU9DeDBhR2x6TG5OcGVtVStiQ1ltS0hSb2FYTXVjMmw2WlNzOU9Da3NkR2hwY3k1MGVYQmxQVDA5SW5WMWFXUWlKaVlvZEdocGN5NXphWHBsS3oweE5pa3NaUzVzYjJjb1pTNXBibVJsYm5RckluTnBlbVU2SWl0MGFHbHpMbk5wZW1VcExHVXViRzluS0dVdWFXNWtaVzUwS3lKMGVYQmxPaUlyZEdocGN5NTBlWEJsS1gwc2J5NUdkV3hzUW05NExuQnliM1J2ZEhsd1pTNXdjbWx1ZEVobFlXUmxjajFtZFc1amRHbHZiaWhsS1h0MGFHbHpMbk5wZW1VclBUUXNieTVDYjNndWNISnZkRzkwZVhCbExuQnlhVzUwU0dWaFpHVnlMbU5oYkd3b2RHaHBjeXhsS1N4bExteHZaeWhsTG1sdVpHVnVkQ3NpZG1WeWMybHZiam9pSzNSb2FYTXVkbVZ5YzJsdmJpa3NaUzVzYjJjb1pTNXBibVJsYm5RckltWnNZV2R6T2lJcmRHaHBjeTVtYkdGbmN5bDlMRzh1UW05NExuQnliM1J2ZEhsd1pTNXdjbWx1ZEQxbWRXNWpkR2x2YmlobEtYdDBhR2x6TG5CeWFXNTBTR1ZoWkdWeUtHVXBmU3h2TGtOdmJuUmhhVzVsY2tKdmVDNXdjbTkwYjNSNWNHVXVjSEpwYm5ROVpuVnVZM1JwYjI0b1pTbDdkR2hwY3k1d2NtbHVkRWhsWVdSbGNpaGxLVHRtYjNJb2RtRnlJSFE5TUR0MFBIUm9hWE11WW05NFpYTXViR1Z1WjNSb08zUXJLeWxwWmloMGFHbHpMbUp2ZUdWelczUmRLWHQyWVhJZ2FUMWxMbWx1WkdWdWREdGxMbWx1WkdWdWRDczlJaUFpTEhSb2FYTXVZbTk0WlhOYmRGMHVjSEpwYm5Rb1pTa3NaUzVwYm1SbGJuUTlhWDE5TEdNdWNISnZkRzkwZVhCbExuQnlhVzUwUFdaMWJtTjBhVzl1S0dVcGUyVXVhVzVrWlc1MFBTSWlPMlp2Y2loMllYSWdkRDB3TzNROGRHaHBjeTVpYjNobGN5NXNaVzVuZEdnN2RDc3JLWFJvYVhNdVltOTRaWE5iZEYwbUpuUm9hWE11WW05NFpYTmJkRjB1Y0hKcGJuUW9aU2w5TEc4dWJYWm9aRUp2ZUM1d2NtOTBiM1I1Y0dVdWNISnBiblE5Wm5WdVkzUnBiMjRvWlNsN2J5NUdkV3hzUW05NExuQnliM1J2ZEhsd1pTNXdjbWx1ZEVobFlXUmxjaTVqWVd4c0tIUm9hWE1zWlNrc1pTNXNiMmNvWlM1cGJtUmxiblFySW1OeVpXRjBhVzl1WDNScGJXVTZJQ0lyZEdocGN5NWpjbVZoZEdsdmJsOTBhVzFsS1N4bExteHZaeWhsTG1sdVpHVnVkQ3NpYlc5a2FXWnBZMkYwYVc5dVgzUnBiV1U2SUNJcmRHaHBjeTV0YjJScFptbGpZWFJwYjI1ZmRHbHRaU2tzWlM1c2IyY29aUzVwYm1SbGJuUXJJblJwYldWelkyRnNaVG9nSWl0MGFHbHpMblJwYldWelkyRnNaU2tzWlM1c2IyY29aUzVwYm1SbGJuUXJJbVIxY21GMGFXOXVPaUFpSzNSb2FYTXVaSFZ5WVhScGIyNHBMR1V1Ykc5bktHVXVhVzVrWlc1MEt5SnlZWFJsT2lBaUszUm9hWE11Y21GMFpTa3NaUzVzYjJjb1pTNXBibVJsYm5RckluWnZiSFZ0WlRvZ0lpc29kR2hwY3k1MmIyeDFiV1UrUGpncEtTeGxMbXh2WnlobExtbHVaR1Z1ZENzaWJXRjBjbWw0T2lBaUszUm9hWE11YldGMGNtbDRMbXB2YVc0b0lpd2dJaWtwTEdVdWJHOW5LR1V1YVc1a1pXNTBLeUp1WlhoMFgzUnlZV05yWDJsa09pQWlLM1JvYVhNdWJtVjRkRjkwY21GamExOXBaQ2w5TEc4dWRHdG9aRUp2ZUM1d2NtOTBiM1I1Y0dVdWNISnBiblE5Wm5WdVkzUnBiMjRvWlNsN2J5NUdkV3hzUW05NExuQnliM1J2ZEhsd1pTNXdjbWx1ZEVobFlXUmxjaTVqWVd4c0tIUm9hWE1zWlNrc1pTNXNiMmNvWlM1cGJtUmxiblFySW1OeVpXRjBhVzl1WDNScGJXVTZJQ0lyZEdocGN5NWpjbVZoZEdsdmJsOTBhVzFsS1N4bExteHZaeWhsTG1sdVpHVnVkQ3NpYlc5a2FXWnBZMkYwYVc5dVgzUnBiV1U2SUNJcmRHaHBjeTV0YjJScFptbGpZWFJwYjI1ZmRHbHRaU2tzWlM1c2IyY29aUzVwYm1SbGJuUXJJblJ5WVdOclgybGtPaUFpSzNSb2FYTXVkSEpoWTJ0ZmFXUXBMR1V1Ykc5bktHVXVhVzVrWlc1MEt5SmtkWEpoZEdsdmJqb2dJaXQwYUdsekxtUjFjbUYwYVc5dUtTeGxMbXh2WnlobExtbHVaR1Z1ZENzaWRtOXNkVzFsT2lBaUt5aDBhR2x6TG5admJIVnRaVDQrT0NrcExHVXViRzluS0dVdWFXNWtaVzUwS3lKdFlYUnlhWGc2SUNJcmRHaHBjeTV0WVhSeWFYZ3VhbTlwYmlnaUxDQWlLU2tzWlM1c2IyY29aUzVwYm1SbGJuUXJJbXhoZVdWeU9pQWlLM1JvYVhNdWJHRjVaWElwTEdVdWJHOW5LR1V1YVc1a1pXNTBLeUpoYkhSbGNtNWhkR1ZmWjNKdmRYQTZJQ0lyZEdocGN5NWhiSFJsY201aGRHVmZaM0p2ZFhBcExHVXViRzluS0dVdWFXNWtaVzUwS3lKM2FXUjBhRG9nSWl0MGFHbHpMbmRwWkhSb0tTeGxMbXh2WnlobExtbHVaR1Z1ZENzaWFHVnBaMmgwT2lBaUszUm9hWE11YUdWcFoyaDBLWDA3ZG1GeUlHYzllMzA3Wnk1amNtVmhkR1ZHYVd4bFBXWjFibU4wYVc5dUtHVXNkQ2w3ZG1GeUlHazlaU0U5UFhadmFXUWdNRDlsT2lFd0xHWTlibVYzSUdNb2RDazdjbVYwZFhKdUlHWXVaR2x6WTJGeVpFMWtZWFJFWVhSaFBTRnBMR1o5TEc0dVkzSmxZWFJsUm1sc1pUMW5MbU55WldGMFpVWnBiR1Y5S1NoUVpTazdkbUZ5SUhSeVBWWjBLRkJsS1N4cWREMTdaWGh3YjNKMGN6cDdmWDA3S0daMWJtTjBhVzl1S0c0cGUzWmhjaUJ5UFh0OU8yNHVaWGh3YjNKMGN6MXlMSEl1Y0dGeWMyVTlablZ1WTNScGIyNG9ZU3h6S1h0bWIzSW9kbUZ5SUd3OWNpNWlhVzR1Y21WaFpGVnphRzl5ZEN4a1BYSXVZbWx1TG5KbFlXUlZhVzUwTEhBOU1DeG9QWHQ5TEc4OWJtVjNJRlZwYm5RNFFYSnlZWGtvWVNrc1h6MXZMbXhsYm1kMGFDMDBPMlFvYnl4ZktTRTlNVEF4TURFd01qVTJPeWxmTFMwN2RtRnlJSEE5WHp0d0t6MDBMSEFyUFRRN2RtRnlJR005YkNodkxIQXBPM0FyUFRJc2JDaHZMSEFwTEhBclBUSTdkbUZ5SUdjOVpDaHZMSEFwTzNBclBUUTdkbUZ5SUdVOVpDaHZMSEFwTzNBclBUUXNjRDFsTzJadmNpaDJZWElnZEQwd08zUThZenQwS3lzcGUyUW9ieXh3S1N4d0t6MDBMSEFyUFRRc2NDczlOQ3h3S3owMExHUW9ieXh3S1N4d0t6MDBPM1poY2lCblBXUW9ieXh3S1R0d0t6MDBPM1poY2lCcFBXUW9ieXh3S1R0d0t6MDBPM1poY2lCbVBXd29ieXh3S1N4MVBXd29ieXh3S3pJcExIWTliQ2h2TEhBck5DazdjQ3M5Tml4d0t6MDRPM1poY2lCNVBXUW9ieXh3S1R0d0t6MDBMSEFyUFdZcmRTdDJMSEl1WDNKbFlXUk1iMk5oYkNodkxIa3NhQ3huTEdrc2N5bDljbVYwZFhKdUlHaDlMSEl1WDNKbFlXUk1iMk5oYkQxbWRXNWpkR2x2YmloaExITXNiQ3hrTEdnc2J5bDdkbUZ5SUY4OWNpNWlhVzR1Y21WaFpGVnphRzl5ZEN4d1BYSXVZbWx1TG5KbFlXUlZhVzUwTzNBb1lTeHpLU3h6S3owMExGOG9ZU3h6S1N4ekt6MHlMRjhvWVN4ektTeHpLejB5TzNaaGNpQmpQVjhvWVN4ektUdHpLejB5TEhBb1lTeHpLU3h6S3owMExIQW9ZU3h6S1N4ekt6MDBMSE1yUFRnN2RtRnlJR2M5WHloaExITXBPM01yUFRJN2RtRnlJR1U5WHloaExITXBPM01yUFRJN2RtRnlJSFE5Y2k1aWFXNHVjbVZoWkZWVVJqZ29ZU3h6TEdjcE8ybG1LSE1yUFdjc2N5czlaU3h2S1h0c1czUmRQWHR6YVhwbE9tZ3NZM05wZW1VNlpIMDdjbVYwZFhKdWZYWmhjaUJwUFc1bGR5QlZhVzUwT0VGeWNtRjVLR0V1WW5WbVptVnlMSE1wTzJsbUtHTTlQVEFwYkZ0MFhUMXVaWGNnVldsdWREaEJjbkpoZVNocExtSjFabVpsY2k1emJHbGpaU2h6TEhNclpDa3BPMlZzYzJVZ2FXWW9ZejA5T0NsN2RtRnlJR1k5Ym1WM0lGVnBiblE0UVhKeVlYa29hQ2s3Y2k1cGJtWnNZWFJsVW1GM0tHa3NaaWtzYkZ0MFhUMW1mV1ZzYzJVZ2RHaHliM2NpZFc1cmJtOTNiaUJqYjIxd2NtVnpjMmx2YmlCdFpYUm9iMlE2SUNJclkzMHNjaTVwYm1ac1lYUmxVbUYzUFdaMWJtTjBhVzl1S0dFc2N5bDdjbVYwZFhKdUlISXVSaTVwYm1ac1lYUmxLR0VzY3lsOUxISXVhVzVtYkdGMFpUMW1kVzVqZEdsdmJpaGhMSE1wZTNKbGRIVnliaUJoV3pCZExHRmJNVjBzY2k1cGJtWnNZWFJsVW1GM0tHNWxkeUJWYVc1ME9FRnljbUY1S0dFdVluVm1abVZ5TEdFdVlubDBaVTltWm5ObGRDc3lMR0V1YkdWdVozUm9MVFlwTEhNcGZTeHlMbVJsWm14aGRHVTlablZ1WTNScGIyNG9ZU3h6S1h0elBUMXVkV3hzSmlZb2N6MTdiR1YyWld3Nk5uMHBPM1poY2lCc1BUQXNaRDF1WlhjZ1ZXbHVkRGhCY25KaGVTZzFNQ3ROWVhSb0xtWnNiMjl5S0dFdWJHVnVaM1JvS2pFdU1Ta3BPMlJiYkYwOU1USXdMR1JiYkNzeFhUMHhOVFlzYkNzOU1peHNQWEl1Umk1a1pXWnNZWFJsVW1GM0tHRXNaQ3hzTEhNdWJHVjJaV3dwTzNaaGNpQm9QWEl1WVdSc1pYSW9ZU3d3TEdFdWJHVnVaM1JvS1R0eVpYUjFjbTRnWkZ0c0t6QmRQV2crUGo0eU5DWXlOVFVzWkZ0c0t6RmRQV2crUGo0eE5pWXlOVFVzWkZ0c0t6SmRQV2crUGo0NEpqSTFOU3hrVzJ3ck0xMDlhRDQrUGpBbU1qVTFMRzVsZHlCVmFXNTBPRUZ5Y21GNUtHUXVZblZtWm1WeUxEQXNiQ3MwS1gwc2NpNWtaV1pzWVhSbFVtRjNQV1oxYm1OMGFXOXVLR0VzY3lsN2N6MDliblZzYkNZbUtITTllMnhsZG1Wc09qWjlLVHQyWVhJZ2JEMXVaWGNnVldsdWREaEJjbkpoZVNnMU1DdE5ZWFJvTG1ac2IyOXlLR0V1YkdWdVozUm9LakV1TVNrcExHUTljaTVHTG1SbFpteGhkR1ZTWVhjb1lTeHNMR1FzY3k1c1pYWmxiQ2s3Y21WMGRYSnVJRzVsZHlCVmFXNTBPRUZ5Y21GNUtHd3VZblZtWm1WeUxEQXNaQ2w5TEhJdVpXNWpiMlJsUFdaMWJtTjBhVzl1S0dFc2N5bDdjejA5Ym5Wc2JDWW1LSE05SVRFcE8zWmhjaUJzUFRBc1pEMXlMbUpwYmk1M2NtbDBaVlZwYm5Rc2FEMXlMbUpwYmk1M2NtbDBaVlZ6YUc5eWRDeHZQWHQ5TzJadmNpaDJZWElnWHlCcGJpQmhLWHQyWVhJZ2NEMGhjaTVmYm05T1pXVmtLRjhwSmlZaGN5eGpQV0ZiWDEwc1p6MXlMbU55WXk1amNtTW9ZeXd3TEdNdWJHVnVaM1JvS1R0dlcxOWRQWHRqY0hJNmNDeDFjMmw2WlRwakxteGxibWQwYUN4amNtTTZaeXhtYVd4bE9uQS9jaTVrWldac1lYUmxVbUYzS0dNcE9tTjlmV1p2Y2loMllYSWdYeUJwYmlCdktXd3JQVzliWDEwdVptbHNaUzVzWlc1bmRHZ3JNekFyTkRZck1pcHlMbUpwYmk1emFYcGxWVlJHT0NoZktUdHNLejB5TWp0MllYSWdaVDF1WlhjZ1ZXbHVkRGhCY25KaGVTaHNLU3gwUFRBc2FUMWJYVHRtYjNJb2RtRnlJRjhnYVc0Z2J5bDdkbUZ5SUdZOWIxdGZYVHRwTG5CMWMyZ29kQ2tzZEQxeUxsOTNjbWwwWlVobFlXUmxjaWhsTEhRc1h5eG1MREFwZlhaaGNpQjFQVEFzZGoxME8yWnZjaWgyWVhJZ1h5QnBiaUJ2S1h0MllYSWdaajF2VzE5ZE8ya3VjSFZ6YUNoMEtTeDBQWEl1WDNkeWFYUmxTR1ZoWkdWeUtHVXNkQ3hmTEdZc01TeHBXM1VySzEwcGZYWmhjaUI1UFhRdGRqdHlaWFIxY200Z1pDaGxMSFFzTVRBeE1ERXdNalUyS1N4MEt6MDBMSFFyUFRRc2FDaGxMSFFzZFNrc2RDczlNaXhvS0dVc2RDeDFLU3gwS3oweUxHUW9aU3gwTEhrcExIUXJQVFFzWkNobExIUXNkaWtzZENzOU5DeDBLejB5TEdVdVluVm1abVZ5ZlN4eUxsOXViMDVsWldROVpuVnVZM1JwYjI0b1lTbDdkbUZ5SUhNOVlTNXpjR3hwZENnaUxpSXBMbkJ2Y0NncExuUnZURzkzWlhKRFlYTmxLQ2s3Y21WMGRYSnVJbkJ1Wnl4cWNHY3NhbkJsWnl4NmFYQWlMbWx1WkdWNFQyWW9jeWtoUFMweGZTeHlMbDkzY21sMFpVaGxZV1JsY2oxbWRXNWpkR2x2YmloaExITXNiQ3hrTEdnc2J5bDdkbUZ5SUY4OWNpNWlhVzR1ZDNKcGRHVlZhVzUwTEhBOWNpNWlhVzR1ZDNKcGRHVlZjMmh2Y25Rc1l6MWtMbVpwYkdVN1h5aGhMSE1zYUQwOU1EODJOek15TkRjMU1qb3pNell6T1RJME9Da3NjeXM5TkN4b1BUMHhKaVlvY3lzOU1pa3NjQ2hoTEhNc01qQXBMSE1yUFRJc2NDaGhMSE1zTUNrc2N5czlNaXh3S0dFc2N5eGtMbU53Y2o4NE9qQXBMSE1yUFRJc1h5aGhMSE1zTUNrc2N5czlOQ3hmS0dFc2N5eGtMbU55WXlrc2N5czlOQ3hmS0dFc2N5eGpMbXhsYm1kMGFDa3NjeXM5TkN4ZktHRXNjeXhrTG5WemFYcGxLU3h6S3owMExIQW9ZU3h6TEhJdVltbHVMbk5wZW1WVlZFWTRLR3dwS1N4ekt6MHlMSEFvWVN4ekxEQXBMSE1yUFRJc2FEMDlNU1ltS0hNclBUSXNjeXM5TWl4ekt6MDJMRjhvWVN4ekxHOHBMSE1yUFRRcE8zWmhjaUJuUFhJdVltbHVMbmR5YVhSbFZWUkdPQ2hoTEhNc2JDazdjbVYwZFhKdUlITXJQV2NzYUQwOU1DWW1LR0V1YzJWMEtHTXNjeWtzY3lzOVl5NXNaVzVuZEdncExITjlMSEl1WTNKalBYdDBZV0pzWlRwbWRXNWpkR2x2YmlncGUyWnZjaWgyWVhJZ1lUMXVaWGNnVldsdWRETXlRWEp5WVhrb01qVTJLU3h6UFRBN2N6d3lOVFk3Y3lzcktYdG1iM0lvZG1GeUlHdzljeXhrUFRBN1pEdzRPMlFyS3lsc0pqRS9iRDB6T1RnNE1qa3lNemcwWG13K1BqNHhPbXc5YkQ0K1BqRTdZVnR6WFQxc2ZYSmxkSFZ5YmlCaGZTZ3BMSFZ3WkdGMFpUcG1kVzVqZEdsdmJpaGhMSE1zYkN4a0tYdG1iM0lvZG1GeUlHZzlNRHRvUEdRN2FDc3JLV0U5Y2k1amNtTXVkR0ZpYkdWYktHRmVjMXRzSzJoZEtTWXlOVFZkWG1FK1BqNDRPM0psZEhWeWJpQmhmU3hqY21NNlpuVnVZM1JwYjI0b1lTeHpMR3dwZTNKbGRIVnliaUJ5TG1OeVl5NTFjR1JoZEdVb05ESTVORGsyTnpJNU5TeGhMSE1zYkNsZU5ESTVORGsyTnpJNU5YMTlMSEl1WVdSc1pYSTlablZ1WTNScGIyNG9ZU3h6TEd3cGUyWnZjaWgyWVhJZ1pEMHhMR2c5TUN4dlBYTXNYejF6SzJ3N2J6eGZPeWw3Wm05eUtIWmhjaUJ3UFUxaGRHZ3ViV2x1S0c4ck5UVTFNaXhmS1R0dlBIQTdLV1FyUFdGYmJ5c3JYU3hvS3oxa08yUTlaQ1UyTlRVeU1TeG9QV2dsTmpVMU1qRjljbVYwZFhKdUlHZzhQREUyZkdSOUxISXVZbWx1UFh0eVpXRmtWWE5vYjNKME9tWjFibU4wYVc5dUtHRXNjeWw3Y21WMGRYSnVJR0ZiYzExOFlWdHpLekZkUER3NGZTeDNjbWwwWlZWemFHOXlkRHBtZFc1amRHbHZiaWhoTEhNc2JDbDdZVnR6WFQxc0pqSTFOU3hoVzNNck1WMDliRDQrT0NZeU5UVjlMSEpsWVdSVmFXNTBPbVoxYm1OMGFXOXVLR0VzY3lsN2NtVjBkWEp1SUdGYmN5c3pYU29vTWpVMktqSTFOaW95TlRZcEt5aGhXM01yTWwwOFBERTJmR0ZiY3lzeFhUdzhPSHhoVzNOZEtYMHNkM0pwZEdWVmFXNTBPbVoxYm1OMGFXOXVLR0VzY3l4c0tYdGhXM05kUFd3bU1qVTFMR0ZiY3lzeFhUMXNQajQ0SmpJMU5TeGhXM01yTWwwOWJENCtNVFltTWpVMUxHRmJjeXN6WFQxc1BqNHlOQ1l5TlRWOUxISmxZV1JCVTBOSlNUcG1kVzVqZEdsdmJpaGhMSE1zYkNsN1ptOXlLSFpoY2lCa1BTSWlMR2c5TUR0b1BHdzdhQ3NyS1dRclBWTjBjbWx1Wnk1bWNtOXRRMmhoY2tOdlpHVW9ZVnR6SzJoZEtUdHlaWFIxY200Z1pIMHNkM0pwZEdWQlUwTkpTVHBtZFc1amRHbHZiaWhoTEhNc2JDbDdabTl5S0haaGNpQmtQVEE3WkR4c0xteGxibWQwYUR0a0t5c3BZVnR6SzJSZFBXd3VZMmhoY2tOdlpHVkJkQ2hrS1gwc2NHRmtPbVoxYm1OMGFXOXVLR0VwZTNKbGRIVnliaUJoTG14bGJtZDBhRHd5UHlJd0lpdGhPbUY5TEhKbFlXUlZWRVk0T21aMWJtTjBhVzl1S0dFc2N5eHNLWHRtYjNJb2RtRnlJR1E5SWlJc2FDeHZQVEE3Ynp4c08yOHJLeWxrS3owaUpTSXJjaTVpYVc0dWNHRmtLR0ZiY3l0dlhTNTBiMU4wY21sdVp5Z3hOaWtwTzNSeWVYdG9QV1JsWTI5a1pWVlNTVU52YlhCdmJtVnVkQ2hrS1gxallYUmphSHR5WlhSMWNtNGdjaTVpYVc0dWNtVmhaRUZUUTBsSktHRXNjeXhzS1gxeVpYUjFjbTRnYUgwc2QzSnBkR1ZWVkVZNE9tWjFibU4wYVc5dUtHRXNjeXhzS1h0bWIzSW9kbUZ5SUdROWJDNXNaVzVuZEdnc2FEMHdMRzg5TUR0dlBHUTdieXNyS1h0MllYSWdYejFzTG1Ob1lYSkRiMlJsUVhRb2J5azdhV1lvSVNoZkpqUXlPVFE1TmpjeE5qZ3BLV0ZiY3l0b1hUMWZMR2dyS3p0bGJITmxJR2xtS0NFb1h5WTBNamswT1RZMU1qUTRLU2xoVzNNcmFGMDlNVGt5ZkY4K1BqWXNZVnR6SzJnck1WMDlNVEk0ZkY4K1BqQW1Oak1zYUNzOU1qdGxiSE5sSUdsbUtDRW9YeVkwTWprME9UQXhOell3S1NsaFczTXJhRjA5TWpJMGZGOCtQakV5TEdGYmN5dG9LekZkUFRFeU9IeGZQajQySmpZekxHRmJjeXRvS3pKZFBURXlPSHhmUGo0d0pqWXpMR2dyUFRNN1pXeHpaU0JwWmlnaEtGOG1OREk1TkRrMk56STVOUzBvTVR3OE1qRXBLekVwS1dGYmN5dG9YVDB5TkRCOFh6NCtNVGdzWVZ0eksyZ3JNVjA5TVRJNGZGOCtQakV5SmpZekxHRmJjeXRvS3pKZFBURXlPSHhmUGo0MkpqWXpMR0ZiY3l0b0t6TmRQVEV5T0h4ZlBqNHdKall6TEdnclBUUTdaV3h6WlNCMGFISnZkeUpsSW4xeVpYUjFjbTRnYUgwc2MybDZaVlZVUmpnNlpuVnVZM1JwYjI0b1lTbDdabTl5S0haaGNpQnpQV0V1YkdWdVozUm9MR3c5TUN4a1BUQTdaRHh6TzJRckt5bDdkbUZ5SUdnOVlTNWphR0Z5UTI5a1pVRjBLR1FwTzJsbUtDRW9hQ1kwTWprME9UWTNNVFk0S1Nsc0t5czdaV3h6WlNCcFppZ2hLR2dtTkRJNU5EazJOVEkwT0NrcGJDczlNanRsYkhObElHbG1LQ0VvYUNZME1qazBPVEF4TnpZd0tTbHNLejB6TzJWc2MyVWdhV1lvSVNob0pqUXlPVFE1TmpjeU9UVXRLREU4UERJeEtTc3hLU2xzS3owME8yVnNjMlVnZEdoeWIzY2laU0o5Y21WMGRYSnVJR3g5ZlN4eUxrWTllMzBzY2k1R0xtUmxabXhoZEdWU1lYYzlablZ1WTNScGIyNG9ZU3h6TEd3c1pDbDdkbUZ5SUdnOVcxc3dMREFzTUN3d0xEQmRMRnMwTERRc09DdzBMREJkTEZzMExEVXNNVFlzT0N3d1hTeGJOQ3cyTERFMkxERTJMREJkTEZzMExERXdMREUyTERNeUxEQmRMRnM0TERFMkxETXlMRE15TERCZExGczRMREUyTERFeU9Dd3hNamdzTUYwc1d6Z3NNeklzTVRJNExESTFOaXd3WFN4Yk16SXNNVEk0TERJMU9Dd3hNREkwTERGZExGc3pNaXd5TlRnc01qVTRMRFF3T1RZc01WMWRMRzg5YUZ0a1hTeGZQWEl1Umk1VkxIQTljaTVHTGw5bmIyOWtTVzVrWlhnN2NpNUdMbDlvWVhOb08zWmhjaUJqUFhJdVJpNWZjSFYwYzBVc1p6MHdMR1U5YkR3OE15eDBQVEFzYVQxaExteGxibWQwYUR0cFppaGtQVDB3S1h0bWIzSW9PMmM4YVRzcGUzWmhjaUJtUFUxaGRHZ3ViV2x1S0RZMU5UTTFMR2t0WnlrN1l5aHpMR1VzWnl0bVBUMXBQekU2TUNrc1pUMXlMa1l1WDJOdmNIbEZlR0ZqZENoaExHY3NaaXh6TEdVck9Da3NaeXM5Wm4xeVpYUjFjbTRnWlQ0K1BqTjlkbUZ5SUhVOVh5NXNhWFJ6TEhZOVh5NXpkSEowTEhrOVh5NXdjbVYyTEcwOU1DeGlQVEFzZUQwd0xGTTlNQ3hWUFRBc1JUMHdPMlp2Y2locFBqSW1KaWhGUFhJdVJpNWZhR0Z6YUNoaExEQXBMSFpiUlYwOU1Da3NaejB3TzJjOGFUdG5LeXNwZTJsbUtGVTlSU3huS3pFOGFTMHlLWHRGUFhJdVJpNWZhR0Z6YUNoaExHY3JNU2s3ZG1GeUlIYzlaeXN4SmpNeU56WTNPM2xiZDEwOWRsdEZYU3gyVzBWZFBYZDlhV1lvZER3OVp5bDdLRzArTVRSbE0zeDhZajR5TmpZNU55a21KbWt0Wno0eE1EQW1KaWgwUEdjbUppaDFXMjFkUFdjdGRDeHRLejB5TEhROVp5a3NaVDF5TGtZdVgzZHlhWFJsUW14dlkyc29aejA5YVMweGZIeDBQVDFwUHpFNk1DeDFMRzBzVXl4aExIZ3NaeTE0TEhNc1pTa3NiVDFpUFZNOU1DeDRQV2NwTzNaaGNpQkJQVEE3Wnp4cExUSW1KaWhCUFhJdVJpNWZZbVZ6ZEUxaGRHTm9LR0VzWnl4NUxGVXNUV0YwYUM1dGFXNG9iMXN5WFN4cExXY3BMRzliTTEwcEtUdDJZWElnWmoxQlBqNCtNVFlzU1QxQkpqWTFOVE0xTzJsbUtFRWhQVEFwZTNaaGNpQm1QVUUrUGo0eE5peEpQVUVtTmpVMU16VXNSajF3S0dZc1h5NXZaakFwTzE4dWJHaHpkRnN5TlRjclJsMHJLenQyWVhJZ1VEMXdLRWtzWHk1a1pqQXBPMTh1WkdoemRGdFFYU3NyTEZNclBWOHVaWGhpVzBaZEsxOHVaSGhpVzFCZExIVmJiVjA5Wmp3OE1qTjhaeTEwTEhWYmJTc3hYVDFKUER3eE5ueEdQRHc0ZkZBc2JTczlNaXgwUFdjclpuMWxiSE5sSUY4dWJHaHpkRnRoVzJkZFhTc3JPMklySzMxOVptOXlLQ2g0SVQxbmZIeGhMbXhsYm1kMGFEMDlNQ2ttSmloMFBHY21KaWgxVzIxZFBXY3RkQ3h0S3oweUxIUTlaeWtzWlQxeUxrWXVYM2R5YVhSbFFteHZZMnNvTVN4MUxHMHNVeXhoTEhnc1p5MTRMSE1zWlNrc2JUMHdMR0k5TUN4dFBXSTlVejB3TEhnOVp5azdaU1kzT3lsbEt5czdjbVYwZFhKdUlHVStQajR6ZlN4eUxrWXVYMkpsYzNSTllYUmphRDFtZFc1amRHbHZiaWhoTEhNc2JDeGtMR2dzYnlsN2RtRnlJRjg5Y3lZek1qYzJOeXh3UFd4YlgxMHNZejFmTFhBck16STNOamdtTXpJM05qYzdhV1lvY0QwOVgzeDhaQ0U5Y2k1R0xsOW9ZWE5vS0dFc2N5MWpLU2x5WlhSMWNtNGdNRHRtYjNJb2RtRnlJR2M5TUN4bFBUQXNkRDFOWVhSb0xtMXBiaWd6TWpjMk55eHpLVHRqUEQxMEppWXRMVzhoUFRBbUpuQWhQVjg3S1h0cFppaG5QVDB3Zkh4aFczTXJaMTA5UFdGYmN5dG5MV05kS1h0MllYSWdhVDF5TGtZdVgyaHZkMHh2Ym1jb1lTeHpMR01wTzJsbUtHaytaeWw3YVdZb1p6MXBMR1U5WXl4blBqMW9LV0p5WldGck8yTXJNanhwSmlZb2FUMWpLeklwTzJadmNpaDJZWElnWmowd0xIVTlNRHQxUEdrdE1qdDFLeXNwZTNaaGNpQjJQWE10WXl0MUt6TXlOelk0SmpNeU56WTNMSGs5YkZ0MlhTeHRQWFl0ZVNzek1qYzJPQ1l6TWpjMk56dHRQbVltSmlobVBXMHNjRDEyS1gxOWZWODljQ3h3UFd4YlgxMHNZeXM5WHkxd0t6TXlOelk0SmpNeU56WTNmWEpsZEhWeWJpQm5QRHd4Tm54bGZTeHlMa1l1WDJodmQweHZibWM5Wm5WdVkzUnBiMjRvWVN4ekxHd3BlMmxtS0dGYmMxMGhQV0ZiY3kxc1hYeDhZVnR6S3pGZElUMWhXM01yTVMxc1hYeDhZVnR6S3pKZElUMWhXM01yTWkxc1hTbHlaWFIxY200Z01EdDJZWElnWkQxekxHZzlUV0YwYUM1dGFXNG9ZUzVzWlc1bmRHZ3NjeXN5TlRncE8yWnZjaWh6S3owek8zTThhQ1ltWVZ0elhUMDlZVnR6TFd4ZE95bHpLeXM3Y21WMGRYSnVJSE10Wkgwc2NpNUdMbDlvWVhOb1BXWjFibU4wYVc5dUtHRXNjeWw3Y21WMGRYSnVLR0ZiYzEwOFBEaDhZVnR6S3pGZEtTc29ZVnR6S3pKZFBEdzBLU1kyTlRVek5YMHNjaTV6WVhabFpEMHdMSEl1Umk1ZmQzSnBkR1ZDYkc5amF6MW1kVzVqZEdsdmJpaGhMSE1zYkN4a0xHZ3NieXhmTEhBc1l5bDdkbUZ5SUdjOWNpNUdMbFVzWlQxeUxrWXVYM0IxZEhOR0xIUTljaTVHTGw5d2RYUnpSU3hwTEdZc2RTeDJMSGtzYlN4aUxIZ3NVenRuTG14b2MzUmJNalUyWFNzckxHazljaTVHTG1kbGRGUnlaV1Z6S0Nrc1pqMXBXekJkTEhVOWFWc3hYU3gyUFdsYk1sMHNlVDFwV3pOZExHMDlhVnMwWFN4aVBXbGJOVjBzZUQxcFd6WmRMRk05YVZzM1hUdDJZWElnVlQwb1l5c3pKamMvT0Mwb1l5c3pKamNwT2pBcEt6TXlLeWhmUER3ektTeEZQV1FyY2k1R0xtTnZiblJUYVhwbEtHY3VabXgwY21WbExHY3ViR2h6ZENrcmNpNUdMbU52Ym5SVGFYcGxLR2N1Wm1SMGNtVmxMR2N1WkdoemRDa3NkejFrSzNJdVJpNWpiMjUwVTJsNlpTaG5MbXgwY21WbExHY3ViR2h6ZENrcmNpNUdMbU52Ym5SVGFYcGxLR2N1WkhSeVpXVXNaeTVrYUhOMEtUdDNLejB4TkNzekttSXJjaTVHTG1OdmJuUlRhWHBsS0djdWFYUnlaV1VzWnk1cGFITjBLU3NvWnk1cGFITjBXekUyWFNveUsyY3VhV2h6ZEZzeE4xMHFNeXRuTG1sb2MzUmJNVGhkS2pjcE8yWnZjaWgyWVhJZ1FUMHdPMEU4TWpnMk8wRXJLeWxuTG14b2MzUmJRVjA5TUR0bWIzSW9kbUZ5SUVFOU1EdEJQRE13TzBFckt5bG5MbVJvYzNSYlFWMDlNRHRtYjNJb2RtRnlJRUU5TUR0QlBERTVPMEVyS3lsbkxtbG9jM1JiUVYwOU1EdDJZWElnU1QxVlBFVW1KbFU4ZHo4d09rVThkejh4T2pJN2FXWW9aU2h3TEdNc1lTa3NaU2h3TEdNck1TeEpLU3hqS3owekxFazlQVEFwZTJadmNpZzdZeVkzT3lsakt5czdZejF5TGtZdVgyTnZjSGxGZUdGamRDaG9MRzhzWHl4d0xHTXBmV1ZzYzJWN2RtRnlJRVlzVUR0cFppaEpQVDB4SmlZb1JqMW5MbVpzZEhKbFpTeFFQV2N1Wm1SMGNtVmxLU3hKUFQweUtYdHlMa1l1YldGclpVTnZaR1Z6S0djdWJIUnlaV1VzWmlrc2NpNUdMbkpsZGtOdlpHVnpLR2N1YkhSeVpXVXNaaWtzY2k1R0xtMWhhMlZEYjJSbGN5aG5MbVIwY21WbExIVXBMSEl1Umk1eVpYWkRiMlJsY3lobkxtUjBjbVZsTEhVcExISXVSaTV0WVd0bFEyOWtaWE1vWnk1cGRISmxaU3gyS1N4eUxrWXVjbVYyUTI5a1pYTW9aeTVwZEhKbFpTeDJLU3hHUFdjdWJIUnlaV1VzVUQxbkxtUjBjbVZsTEhRb2NDeGpMSGt0TWpVM0tTeGpLejAxTEhRb2NDeGpMRzB0TVNrc1l5czlOU3gwS0hBc1l5eGlMVFFwTEdNclBUUTdabTl5S0haaGNpQkVQVEE3UkR4aU8wUXJLeWwwS0hBc1l5dEVLak1zWnk1cGRISmxaVnNvWnk1dmNtUnlXMFJkUER3eEtTc3hYU2s3WXlzOU15cGlMR005Y2k1R0xsOWpiMlJsVkdsdWVTaDRMR2N1YVhSeVpXVXNjQ3hqS1N4alBYSXVSaTVmWTI5a1pWUnBibmtvVXl4bkxtbDBjbVZsTEhBc1l5bDlabTl5S0haaGNpQnJQVzhzVGowd08wNDhiRHRPS3oweUtYdG1iM0lvZG1GeUlFMDljMXRPWFN4eFBVMCtQajR5TXl4SFBXc3JLRTBtS0RFOFBESXpLUzB4S1R0clBFYzdLV005Y2k1R0xsOTNjbWwwWlV4cGRDaG9XMnNySzEwc1JpeHdMR01wTzJsbUtIRWhQVEFwZTNaaGNpQlpQWE5iVGlzeFhTeFVQVmsrUGpFMkxHZGxQVmsrUGpnbU1qVTFMSEpsUFZrbU1qVTFPMk05Y2k1R0xsOTNjbWwwWlV4cGRDZ3lOVGNyWjJVc1JpeHdMR01wTEhRb2NDeGpMSEV0Wnk1dlpqQmJaMlZkS1N4akt6MW5MbVY0WWx0blpWMHNZejF5TGtZdVgzZHlhWFJsVEdsMEtISmxMRkFzY0N4aktTeGxLSEFzWXl4VUxXY3VaR1l3VzNKbFhTa3NZeXM5Wnk1a2VHSmJjbVZkTEdzclBYRjlmV005Y2k1R0xsOTNjbWwwWlV4cGRDZ3lOVFlzUml4d0xHTXBmWEpsZEhWeWJpQmpmU3h5TGtZdVgyTnZjSGxGZUdGamREMW1kVzVqZEdsdmJpaGhMSE1zYkN4a0xHZ3BlM1poY2lCdlBXZytQajR6TzNKbGRIVnliaUJrVzI5ZFBXd3NaRnR2S3pGZFBXdytQajQ0TEdSYmJ5c3lYVDB5TlRVdFpGdHZYU3hrVzI4ck0xMDlNalUxTFdSYmJ5c3hYU3h2S3owMExHUXVjMlYwS0c1bGR5QlZhVzUwT0VGeWNtRjVLR0V1WW5WbVptVnlMSE1zYkNrc2J5a3NhQ3NvYkNzMFBEd3pLWDBzY2k1R0xtZGxkRlJ5WldWelBXWjFibU4wYVc5dUtDbDdabTl5S0haaGNpQmhQWEl1Umk1VkxITTljaTVHTGw5b2RXWlVjbVZsS0dFdWJHaHpkQ3hoTG14MGNtVmxMREUxS1N4c1BYSXVSaTVmYUhWbVZISmxaU2hoTG1Sb2MzUXNZUzVrZEhKbFpTd3hOU2tzWkQxYlhTeG9QWEl1Umk1ZmJHVnVRMjlrWlhNb1lTNXNkSEpsWlN4a0tTeHZQVnRkTEY4OWNpNUdMbDlzWlc1RGIyUmxjeWhoTG1SMGNtVmxMRzhwTEhBOU1EdHdQR1F1YkdWdVozUm9PM0FyUFRJcFlTNXBhSE4wVzJSYmNGMWRLeXM3Wm05eUtIWmhjaUJ3UFRBN2NEeHZMbXhsYm1kMGFEdHdLejB5S1dFdWFXaHpkRnR2VzNCZFhTc3JPMlp2Y2loMllYSWdZejF5TGtZdVgyaDFabFJ5WldVb1lTNXBhSE4wTEdFdWFYUnlaV1VzTnlrc1p6MHhPVHRuUGpRbUptRXVhWFJ5WldWYktHRXViM0prY2x0bkxURmRQRHd4S1NzeFhUMDlNRHNwWnkwdE8zSmxkSFZ5Ymx0ekxHd3NZeXhvTEY4c1p5eGtMRzlkZlN4eUxrWXVaMlYwVTJWamIyNWtQV1oxYm1OMGFXOXVLR0VwZTJadmNpaDJZWElnY3oxYlhTeHNQVEE3YkR4aExteGxibWQwYUR0c0t6MHlLWE11Y0hWemFDaGhXMndyTVYwcE8zSmxkSFZ5YmlCemZTeHlMa1l1Ym05dVdtVnliejFtZFc1amRHbHZiaWhoS1h0bWIzSW9kbUZ5SUhNOUlpSXNiRDB3TzJ3OFlTNXNaVzVuZEdnN2JDczlNaWxoVzJ3ck1WMGhQVEFtSmloekt6MG9iRDQrTVNrcklpd2lLVHR5WlhSMWNtNGdjMzBzY2k1R0xtTnZiblJUYVhwbFBXWjFibU4wYVc5dUtHRXNjeWw3Wm05eUtIWmhjaUJzUFRBc1pEMHdPMlE4Y3k1c1pXNW5kR2c3WkNzcktXd3JQWE5iWkYwcVlWc29aRHc4TVNrck1WMDdjbVYwZFhKdUlHeDlMSEl1Umk1ZlkyOWtaVlJwYm5rOVpuVnVZM1JwYjI0b1lTeHpMR3dzWkNsN1ptOXlLSFpoY2lCb1BUQTdhRHhoTG14bGJtZDBhRHRvS3oweUtYdDJZWElnYnoxaFcyaGRMRjg5WVZ0b0t6RmRPMlE5Y2k1R0xsOTNjbWwwWlV4cGRDaHZMSE1zYkN4a0tUdDJZWElnY0QxdlBUMHhOajh5T204OVBURTNQek02Tnp0dlBqRTFKaVlvY2k1R0xsOXdkWFJ6UlNoc0xHUXNYeXh3S1N4a0t6MXdLWDF5WlhSMWNtNGdaSDBzY2k1R0xsOXNaVzVEYjJSbGN6MW1kVzVqZEdsdmJpaGhMSE1wZTJadmNpaDJZWElnYkQxaExteGxibWQwYUR0c0lUMHlKaVpoVzJ3dE1WMDlQVEE3S1d3dFBUSTdabTl5S0haaGNpQmtQVEE3WkR4c08yUXJQVElwZTNaaGNpQm9QV0ZiWkNzeFhTeHZQV1FyTXp4c1AyRmJaQ3N6WFRvdE1TeGZQV1FyTlR4c1AyRmJaQ3MxWFRvdE1TeHdQV1E5UFRBL0xURTZZVnRrTFRGZE8ybG1LR2c5UFRBbUptODlQV2dtSmw4OVBXZ3BlMlp2Y2loMllYSWdZejFrS3pVN1l5c3lQR3dtSm1GYll5c3lYVDA5YURzcFl5czlNanQyWVhJZ1p6MU5ZWFJvTG0xcGJpaGpLekV0WkQ0K1BqRXNNVE00S1R0blBERXhQM011Y0hWemFDZ3hOeXhuTFRNcE9uTXVjSFZ6YUNneE9DeG5MVEV4S1N4a0t6MW5Lakl0TW4xbGJITmxJR2xtS0dnOVBYQW1KbTg5UFdnbUpsODlQV2dwZTJadmNpaDJZWElnWXoxa0t6VTdZeXN5UEd3bUptRmJZeXN5WFQwOWFEc3BZeXM5TWp0MllYSWdaejFOWVhSb0xtMXBiaWhqS3pFdFpENCtQakVzTmlrN2N5NXdkWE5vS0RFMkxHY3RNeWtzWkNzOVp5b3lMVEo5Wld4elpTQnpMbkIxYzJnb2FDd3dLWDF5WlhSMWNtNGdiRDQrUGpGOUxISXVSaTVmYUhWbVZISmxaVDFtZFc1amRHbHZiaWhoTEhNc2JDbDdkbUZ5SUdROVcxMHNhRDFoTG14bGJtZDBhQ3h2UFhNdWJHVnVaM1JvTEY4OU1EdG1iM0lvWHowd08xODhienRmS3oweUtYTmJYMTA5TUN4elcxOHJNVjA5TUR0bWIzSW9YejB3TzE4OGFEdGZLeXNwWVZ0ZlhTRTlNQ1ltWkM1d2RYTm9LSHRzYVhRNlh5eG1PbUZiWDExOUtUdDJZWElnY0Qxa0xteGxibWQwYUN4alBXUXVjMnhwWTJVb01DazdhV1lvY0QwOU1DbHlaWFIxY200Z01EdHBaaWh3UFQweEtYdDJZWElnWnoxa1d6QmRMbXhwZEN4alBXYzlQVEEvTVRvd08zSmxkSFZ5YmlCeld5aG5QRHd4S1NzeFhUMHhMSE5iS0dNOFBERXBLekZkUFRFc01YMWtMbk52Y25Rb1puVnVZM1JwYjI0b2VTeHRLWHR5WlhSMWNtNGdlUzVtTFcwdVpuMHBPM1poY2lCbFBXUmJNRjBzZEQxa1d6RmRMR2s5TUN4bVBURXNkVDB5TzJadmNpaGtXekJkUFh0c2FYUTZMVEVzWmpwbExtWXJkQzVtTEd3NlpTeHlPblFzWkRvd2ZUdG1JVDF3TFRFN0tXa2hQV1ltSmloMVBUMXdmSHhrVzJsZExtWThaRnQxWFM1bUtUOWxQV1JiYVNzclhUcGxQV1JiZFNzclhTeHBJVDFtSmlZb2RUMDljSHg4WkZ0cFhTNW1QR1JiZFYwdVppay9kRDFrVzJrcksxMDZkRDFrVzNVcksxMHNaRnRtS3l0ZFBYdHNhWFE2TFRFc1pqcGxMbVlyZEM1bUxHdzZaU3h5T25SOU8zWmhjaUIyUFhJdVJpNXpaWFJFWlhCMGFDaGtXMll0TVYwc01DazdabTl5S0hZK2JDWW1LSEl1Umk1eVpYTjBjbWxqZEVSbGNIUm9LR01zYkN4MktTeDJQV3dwTEY4OU1EdGZQSEE3WHlzcktYTmJLR05iWDEwdWJHbDBQRHd4S1NzeFhUMWpXMTlkTG1RN2NtVjBkWEp1SUhaOUxISXVSaTV6WlhSRVpYQjBhRDFtZFc1amRHbHZiaWhoTEhNcGUzSmxkSFZ5YmlCaExteHBkQ0U5TFRFL0tHRXVaRDF6TEhNcE9rMWhkR2d1YldGNEtISXVSaTV6WlhSRVpYQjBhQ2hoTG13c2N5c3hLU3h5TGtZdWMyVjBSR1Z3ZEdnb1lTNXlMSE1yTVNrcGZTeHlMa1l1Y21WemRISnBZM1JFWlhCMGFEMW1kVzVqZEdsdmJpaGhMSE1zYkNsN2RtRnlJR1E5TUN4b1BURThQR3d0Y3l4dlBUQTdabTl5S0dFdWMyOXlkQ2htZFc1amRHbHZiaWh3TEdNcGUzSmxkSFZ5YmlCakxtUTlQWEF1WkQ5d0xtWXRZeTVtT21NdVpDMXdMbVI5S1N4a1BUQTdaRHhoTG14bGJtZDBhQ1ltWVZ0a1hTNWtQbk03WkNzcktYdDJZWElnWHoxaFcyUmRMbVE3WVZ0a1hTNWtQWE1zYnlzOWFDMG9NVHc4YkMxZktYMW1iM0lvYnoxdlBqNCtiQzF6TzI4K01Ec3BlM1poY2lCZlBXRmJaRjB1WkR0ZlBITS9LR0ZiWkYwdVpDc3JMRzh0UFRFOFBITXRYeTB4S1Rwa0t5dDlabTl5S0R0a1BqMHdPMlF0TFNsaFcyUmRMbVE5UFhNbUptODhNQ1ltS0dGYlpGMHVaQzB0TEc4ckt5azdieUU5TUNZbVkyOXVjMjlzWlM1c2IyY29JbVJsWW5RZ2JHVm1kQ0lwZlN4eUxrWXVYMmR2YjJSSmJtUmxlRDFtZFc1amRHbHZiaWhoTEhNcGUzWmhjaUJzUFRBN2NtVjBkWEp1SUhOYmJId3hObDA4UFdFbUppaHNmRDB4Tmlrc2MxdHNmRGhkUEQxaEppWW9iSHc5T0Nrc2MxdHNmRFJkUEQxaEppWW9iSHc5TkNrc2MxdHNmREpkUEQxaEppWW9iSHc5TWlrc2MxdHNmREZkUEQxaEppWW9iSHc5TVNrc2JIMHNjaTVHTGw5M2NtbDBaVXhwZEQxbWRXNWpkR2x2YmloaExITXNiQ3hrS1h0eVpYUjFjbTRnY2k1R0xsOXdkWFJ6Umloc0xHUXNjMXRoUER3eFhTa3NaQ3R6V3loaFBEd3hLU3N4WFgwc2NpNUdMbWx1Wm14aGRHVTlablZ1WTNScGIyNG9ZU3h6S1h0MllYSWdiRDFWYVc1ME9FRnljbUY1TzJsbUtHRmJNRjA5UFRNbUptRmJNVjA5UFRBcGNtVjBkWEp1SUhOOGZHNWxkeUJzS0RBcE8zWmhjaUJrUFhJdVJpeG9QV1F1WDJKcGRITkdMRzg5WkM1ZlltbDBjMFVzWHoxa0xsOWtaV052WkdWVWFXNTVMSEE5WkM1dFlXdGxRMjlrWlhNc1l6MWtMbU52WkdWek1tMWhjQ3huUFdRdVgyZGxkREUzTEdVOVpDNVZMSFE5Y3owOWJuVnNiRHQwSmlZb2N6MXVaWGNnYkNoaExteGxibWQwYUQ0K1BqSThQRE1wS1R0bWIzSW9kbUZ5SUdrOU1DeG1QVEFzZFQwd0xIWTlNQ3g1UFRBc2JUMHdMR0k5TUN4NFBUQXNVejB3TEZVc1JUdHBQVDB3T3lsN2FXWW9hVDFvS0dFc1V5d3hLU3htUFdnb1lTeFRLekVzTWlrc1V5czlNeXhtUFQwd0tYdFRKamNtSmloVEt6MDRMU2hUSmpjcEtUdDJZWElnZHowb1V6NCtQak1wS3pRc1FUMWhXM2N0TkYxOFlWdDNMVE5kUER3NE8zUW1KaWh6UFhJdVJpNWZZMmhsWTJzb2N5eDRLMEVwS1N4ekxuTmxkQ2h1WlhjZ2JDaGhMbUoxWm1abGNpeGhMbUo1ZEdWUFptWnpaWFFyZHl4QktTeDRLU3hUUFhjclFUdzhNeXg0S3oxQk8yTnZiblJwYm5WbGZXbG1LSFFtSmloelBYSXVSaTVmWTJobFkyc29jeXg0S3lneFBEd3hOeWtwS1N4bVBUMHhKaVlvVlQxbExtWnNiV0Z3TEVVOVpTNW1aRzFoY0N4dFBUVXhNU3hpUFRNeEtTeG1QVDB5S1h0MVBXOG9ZU3hUTERVcEt6STFOeXgyUFc4b1lTeFRLelVzTlNrck1TeDVQVzhvWVN4VEt6RXdMRFFwS3pRc1V5czlNVFE3Wm05eUtIWmhjaUJKUFRBN1NUd3pPRHRKS3oweUtXVXVhWFJ5WldWYlNWMDlNQ3hsTG1sMGNtVmxXMGtyTVYwOU1EdG1iM0lvZG1GeUlFWTlNU3hKUFRBN1NUeDVPMGtyS3lsN2RtRnlJRkE5YnloaExGTXJTU296TERNcE8yVXVhWFJ5WldWYktHVXViM0prY2x0SlhUdzhNU2tyTVYwOVVDeFFQa1ltSmloR1BWQXBmVk1yUFRNcWVTeHdLR1V1YVhSeVpXVXNSaWtzWXlobExtbDBjbVZsTEVZc1pTNXBiV0Z3S1N4VlBXVXViRzFoY0N4RlBXVXVaRzFoY0N4VFBWOG9aUzVwYldGd0xDZ3hQRHhHS1MweExIVXJkaXhoTEZNc1pTNTBkSEpsWlNrN2RtRnlJRVE5WkM1ZlkyOXdlVTkxZENobExuUjBjbVZsTERBc2RTeGxMbXgwY21WbEtUdHRQU2d4UER4RUtTMHhPM1poY2lCclBXUXVYMk52Y0hsUGRYUW9aUzUwZEhKbFpTeDFMSFlzWlM1a2RISmxaU2s3WWowb01UdzhheWt0TVN4d0tHVXViSFJ5WldVc1JDa3NZeWhsTG14MGNtVmxMRVFzVlNrc2NDaGxMbVIwY21WbExHc3BMR01vWlM1a2RISmxaU3hyTEVVcGZXWnZjaWc3T3lsN2RtRnlJRTQ5VlZ0bktHRXNVeWttYlYwN1V5czlUaVl4TlR0MllYSWdUVDFPUGo0K05EdHBaaWdoS0UwK1BqNDRLU2x6VzNncksxMDlUVHRsYkhObGUybG1LRTA5UFRJMU5pbGljbVZoYXp0MllYSWdjVDE0SzAwdE1qVTBPMmxtS0UwK01qWTBLWHQyWVhJZ1J6MWxMbXhrWldaYlRTMHlOVGRkTzNFOWVDc29SejQrUGpNcEsyOG9ZU3hUTEVjbU55a3NVeXM5UnlZM2ZYWmhjaUJaUFVWYlp5aGhMRk1wSm1KZE8xTXJQVmttTVRVN2RtRnlJRlE5V1Q0K1BqUXNaMlU5WlM1a1pHVm1XMVJkTEhKbFBTaG5aVDQrUGpRcEsyZ29ZU3hUTEdkbEpqRTFLVHRtYjNJb1V5czlaMlVtTVRVc2RDWW1LSE05Y2k1R0xsOWphR1ZqYXloekxIZ3JLREU4UERFM0tTa3BPM2c4Y1RzcGMxdDRYVDF6VzNnckt5MXlaVjBzYzF0NFhUMXpXM2dyS3kxeVpWMHNjMXQ0WFQxelczZ3JLeTF5WlYwc2MxdDRYVDF6VzNnckt5MXlaVjA3ZUQxeGZYMTljbVYwZFhKdUlITXViR1Z1WjNSb1BUMTRQM002Y3k1emJHbGpaU2d3TEhncGZTeHlMa1l1WDJOb1pXTnJQV1oxYm1OMGFXOXVLR0VzY3lsN2RtRnlJR3c5WVM1c1pXNW5kR2c3YVdZb2N6dzliQ2x5WlhSMWNtNGdZVHQyWVhJZ1pEMXVaWGNnVldsdWREaEJjbkpoZVNoTllYUm9MbTFoZUNoc1BEd3hMSE1wS1R0eVpYUjFjbTRnWkM1elpYUW9ZU3d3S1N4a2ZTeHlMa1l1WDJSbFkyOWtaVlJwYm5rOVpuVnVZM1JwYjI0b1lTeHpMR3dzWkN4b0xHOHBlMlp2Y2loMllYSWdYejF5TGtZdVgySnBkSE5GTEhBOWNpNUdMbDluWlhReE55eGpQVEE3WXp4c095bDdkbUZ5SUdjOVlWdHdLR1FzYUNrbWMxMDdhQ3M5WnlZeE5UdDJZWElnWlQxblBqNCtORHRwWmlobFBEMHhOU2x2VzJOZFBXVXNZeXNyTzJWc2MyVjdkbUZ5SUhROU1DeHBQVEE3WlQwOU1UWS9LR2s5TXl0ZktHUXNhQ3d5S1N4b0t6MHlMSFE5YjF0akxURmRLVHBsUFQweE56OG9hVDB6SzE4b1pDeG9MRE1wTEdnclBUTXBPbVU5UFRFNEppWW9hVDB4TVN0ZktHUXNhQ3czS1N4b0t6MDNLVHRtYjNJb2RtRnlJR1k5WXl0cE8yTThaanNwYjF0alhUMTBMR01ySzMxOWNtVjBkWEp1SUdoOUxISXVSaTVmWTI5d2VVOTFkRDFtZFc1amRHbHZiaWhoTEhNc2JDeGtLWHRtYjNJb2RtRnlJR2c5TUN4dlBUQXNYejFrTG14bGJtZDBhRDQrUGpFN2J6eHNPeWw3ZG1GeUlIQTlZVnR2SzNOZE8yUmJienc4TVYwOU1DeGtXeWh2UER3eEtTc3hYVDF3TEhBK2FDWW1LR2c5Y0Nrc2J5c3JmV1p2Y2lnN2J6eGZPeWxrVzI4OFBERmRQVEFzWkZzb2J6dzhNU2tyTVYwOU1DeHZLeXM3Y21WMGRYSnVJR2g5TEhJdVJpNXRZV3RsUTI5a1pYTTlablZ1WTNScGIyNG9ZU3h6S1h0bWIzSW9kbUZ5SUd3OWNpNUdMbFVzWkQxaExteGxibWQwYUN4b0xHOHNYeXh3TEdNc1p6MXNMbUpzWDJOdmRXNTBMSEE5TUR0d1BEMXpPM0FyS3lsblczQmRQVEE3Wm05eUtIQTlNVHR3UEdRN2NDczlNaWxuVzJGYmNGMWRLeXM3ZG1GeUlHVTliQzV1WlhoMFgyTnZaR1U3Wm05eUtHZzlNQ3huV3pCZFBUQXNiejB4TzI4OFBYTTdieXNyS1dnOWFDdG5XMjh0TVYwOFBERXNaVnR2WFQxb08yWnZjaWhmUFRBN1h6eGtPMThyUFRJcFl6MWhXMThyTVYwc1l5RTlNQ1ltS0dGYlgxMDlaVnRqWFN4bFcyTmRLeXNwZlN4eUxrWXVZMjlrWlhNeWJXRndQV1oxYm1OMGFXOXVLR0VzY3l4c0tYdG1iM0lvZG1GeUlHUTlZUzVzWlc1bmRHZ3NhRDF5TGtZdVZTeHZQV2d1Y21WMk1UVXNYejB3TzE4OFpEdGZLejB5S1dsbUtHRmJYeXN4WFNFOU1DbG1iM0lvZG1GeUlIQTlYejQrTVN4alBXRmJYeXN4WFN4blBYQThQRFI4WXl4bFBYTXRZeXgwUFdGYlgxMDhQR1VzYVQxMEt5Z3hQRHhsS1R0MElUMXBPeWw3ZG1GeUlHWTliMXQwWFQ0K1BqRTFMWE03YkZ0bVhUMW5MSFFySzMxOUxISXVSaTV5WlhaRGIyUmxjejFtZFc1amRHbHZiaWhoTEhNcGUyWnZjaWgyWVhJZ2JEMXlMa1l1VlM1eVpYWXhOU3hrUFRFMUxYTXNhRDB3TzJnOFlTNXNaVzVuZEdnN2FDczlNaWw3ZG1GeUlHODlZVnRvWFR3OGN5MWhXMmdyTVYwN1lWdG9YVDFzVzI5ZFBqNCtaSDE5TEhJdVJpNWZjSFYwYzBVOVpuVnVZM1JwYjI0b1lTeHpMR3dwZTJ3OWJEdzhLSE1tTnlrN2RtRnlJR1E5Y3o0K1BqTTdZVnRrWFh3OWJDeGhXMlFyTVYxOFBXdytQajQ0ZlN4eUxrWXVYM0IxZEhOR1BXWjFibU4wYVc5dUtHRXNjeXhzS1h0c1BXdzhQQ2h6SmpjcE8zWmhjaUJrUFhNK1BqNHpPMkZiWkYxOFBXd3NZVnRrS3pGZGZEMXNQajQrT0N4aFcyUXJNbDE4UFd3K1BqNHhObjBzY2k1R0xsOWlhWFJ6UlQxbWRXNWpkR2x2YmloaExITXNiQ2w3Y21WMGRYSnVLR0ZiY3o0K1BqTmRmR0ZiS0hNK1BqNHpLU3N4WFR3OE9DaytQajRvY3lZM0tTWW9NVHc4YkNrdE1YMHNjaTVHTGw5aWFYUnpSajFtZFc1amRHbHZiaWhoTEhNc2JDbDdjbVYwZFhKdUtHRmJjejQrUGpOZGZHRmJLSE0rUGo0ektTc3hYVHc4T0h4aFd5aHpQajQrTXlrck1sMDhQREUyS1Q0K1BpaHpKamNwSmlneFBEeHNLUzB4ZlN4eUxrWXVYMmRsZERFM1BXWjFibU4wYVc5dUtHRXNjeWw3Y21WMGRYSnVLR0ZiY3o0K1BqTmRmR0ZiS0hNK1BqNHpLU3N4WFR3OE9IeGhXeWh6UGo0K015a3JNbDA4UERFMktUNCtQaWh6SmpjcGZTeHlMa1l1WDJkbGRESTFQV1oxYm1OMGFXOXVLR0VzY3lsN2NtVjBkWEp1S0dGYmN6NCtQak5kZkdGYktITStQajR6S1NzeFhUdzhPSHhoV3loelBqNCtNeWtyTWwwOFBERTJmR0ZiS0hNK1BqNHpLU3N6WFR3OE1qUXBQajQrS0hNbU55bDlMSEl1Umk1VlBXWjFibU4wYVc5dUtDbDdkbUZ5SUdFOVZXbHVkREUyUVhKeVlYa3NjejFWYVc1ME16SkJjbkpoZVR0eVpYUjFjbTU3Ym1WNGRGOWpiMlJsT201bGR5QmhLREUyS1N4aWJGOWpiM1Z1ZERwdVpYY2dZU2d4Tmlrc2IzSmtjanBiTVRZc01UY3NNVGdzTUN3NExEY3NPU3cyTERFd0xEVXNNVEVzTkN3eE1pd3pMREV6TERJc01UUXNNU3d4TlYwc2IyWXdPbHN6TERRc05TdzJMRGNzT0N3NUxERXdMREV4TERFekxERTFMREUzTERFNUxESXpMREkzTERNeExETTFMRFF6TERVeExEVTVMRFkzTERnekxEazVMREV4TlN3eE16RXNNVFl6TERFNU5Td3lNamNzTWpVNExEazVPU3c1T1Rrc09UazVYU3hsZUdJNld6QXNNQ3d3TERBc01Dd3dMREFzTUN3eExERXNNU3d4TERJc01pd3lMRElzTXl3ekxETXNNeXcwTERRc05DdzBMRFVzTlN3MUxEVXNNQ3d3TERBc01GMHNiR1JsWmpwdVpYY2dZU2d6TWlrc1pHWXdPbHN4TERJc015dzBMRFVzTnl3NUxERXpMREUzTERJMUxETXpMRFE1TERZMUxEazNMREV5T1N3eE9UTXNNalUzTERNNE5TdzFNVE1zTnpZNUxERXdNalVzTVRVek55d3lNRFE1TERNd056TXNOREE1Tnl3Mk1UUTFMRGd4T1RNc01USXlPRGtzTVRZek9EVXNNalExTnpjc05qVTFNelVzTmpVMU16VmRMR1I0WWpwYk1Dd3dMREFzTUN3eExERXNNaXd5TERNc015dzBMRFFzTlN3MUxEWXNOaXczTERjc09DdzRMRGtzT1N3eE1Dd3hNQ3d4TVN3eE1Td3hNaXd4TWl3eE15d3hNeXd3TERCZExHUmtaV1k2Ym1WM0lITW9NeklwTEdac2JXRndPbTVsZHlCaEtEVXhNaWtzWm14MGNtVmxPbHRkTEdaa2JXRndPbTVsZHlCaEtETXlLU3htWkhSeVpXVTZXMTBzYkcxaGNEcHVaWGNnWVNnek1qYzJPQ2tzYkhSeVpXVTZXMTBzZEhSeVpXVTZXMTBzWkcxaGNEcHVaWGNnWVNnek1qYzJPQ2tzWkhSeVpXVTZXMTBzYVcxaGNEcHVaWGNnWVNnMU1USXBMR2wwY21WbE9sdGRMSEpsZGpFMU9tNWxkeUJoS0RNeU56WTRLU3hzYUhOME9tNWxkeUJ6S0RJNE5pa3NaR2h6ZERwdVpYY2djeWd6TUNrc2FXaHpkRHB1WlhjZ2N5Z3hPU2tzYkdsMGN6cHVaWGNnY3lneE5XVXpLU3h6ZEhKME9tNWxkeUJoS0RZMU5UTTJLU3h3Y21WMk9tNWxkeUJoS0RNeU56WTRLWDE5S0Nrc1puVnVZM1JwYjI0b0tYdG1iM0lvZG1GeUlHRTljaTVHTGxVc2N6MHpNamMyT0N4c1BUQTdiRHh6TzJ3ckt5bDdkbUZ5SUdROWJEdGtQU2hrSmpJNE5qTXpNVEUxTXpBcFBqNCtNWHdvWkNZeE5ETXhOalUxTnpZMUtUdzhNU3hrUFNoa0pqTTBNelU1TnpNNE16WXBQajQrTW53b1pDWTROVGc1T1RNME5Ua3BQRHd5TEdROUtHUW1OREEwTWpNeU1qRTJNQ2srUGo0MGZDaGtKakkxTWpZME5URXpOU2s4UERRc1pEMG9aQ1kwTWpjNE1qVTFNell3S1Q0K1BqaDhLR1FtTVRZM01URTVNelVwUER3NExHRXVjbVYyTVRWYmJGMDlLR1ErUGo0eE5ueGtQRHd4TmlrK1BqNHhOMzFtZFc1amRHbHZiaUJvS0c4c1h5eHdLWHRtYjNJb08xOHRMU0U5TURzcGJ5NXdkWE5vS0RBc2NDbDlabTl5S0haaGNpQnNQVEE3YkR3ek1qdHNLeXNwWVM1c1pHVm1XMnhkUFdFdWIyWXdXMnhkUER3emZHRXVaWGhpVzJ4ZExHRXVaR1JsWmx0c1hUMWhMbVJtTUZ0c1hUdzhOSHhoTG1SNFlsdHNYVHRvS0dFdVpteDBjbVZsTERFME5DdzRLU3hvS0dFdVpteDBjbVZsTERFeE1pdzVLU3hvS0dFdVpteDBjbVZsTERJMExEY3BMR2dvWVM1bWJIUnlaV1VzT0N3NEtTeHlMa1l1YldGclpVTnZaR1Z6S0dFdVpteDBjbVZsTERrcExISXVSaTVqYjJSbGN6SnRZWEFvWVM1bWJIUnlaV1VzT1N4aExtWnNiV0Z3S1N4eUxrWXVjbVYyUTI5a1pYTW9ZUzVtYkhSeVpXVXNPU2tzYUNoaExtWmtkSEpsWlN3ek1pdzFLU3h5TGtZdWJXRnJaVU52WkdWektHRXVabVIwY21WbExEVXBMSEl1Umk1amIyUmxjekp0WVhBb1lTNW1aSFJ5WldVc05TeGhMbVprYldGd0tTeHlMa1l1Y21WMlEyOWtaWE1vWVM1bVpIUnlaV1VzTlNrc2FDaGhMbWwwY21WbExERTVMREFwTEdnb1lTNXNkSEpsWlN3eU9EWXNNQ2tzYUNoaExtUjBjbVZsTERNd0xEQXBMR2dvWVM1MGRISmxaU3d6TWpBc01DbDlLQ2w5S1NocWRDazdkbUZ5SUdseVBXcDBMbVY0Y0c5eWRITXNjbkk5Vm5Rb2FYSXBMRXc5ZTJ4dlp6b2liRzluSWl4a1pXSjFaem9pWkdWaWRXY2lMR2x1Wm04NkltbHVabThpTEhkaGNtNDZJbmRoY200aUxHVnljbTl5T2lKbGNuSnZjaUo5TEZjOVkyOXVjMjlzWlN4dVpUMTdmVHRQWW1wbFkzUXVhMlY1Y3loTUtTNW1iM0pGWVdOb0tHWjFibU4wYVc5dUtHNHBlMjVsVzI1ZFBWZGJibDE5S1R0MllYSWdRMlU5SWtSaGRHRmtiMmNnUW5KdmQzTmxjaUJUUkVzNklpeDZQWHRrWldKMVp6cHVaUzVrWldKMVp5NWlhVzVrS0Zjc1EyVXBMR3h2WnpwdVpTNXNiMmN1WW1sdVpDaFhMRU5sS1N4cGJtWnZPbTVsTG1sdVptOHVZbWx1WkNoWExFTmxLU3gzWVhKdU9tNWxMbmRoY200dVltbHVaQ2hYTEVObEtTeGxjbkp2Y2pwdVpTNWxjbkp2Y2k1aWFXNWtLRmNzUTJVcGZTeGtkRDBpYUhSMGNITTZMeTlrYjJOekxtUmhkR0ZrYjJkb2NTNWpiMjBpTEV0MFBTSWlMbU52Ym1OaGRDaGtkQ3dpTDNKbFlXeGZkWE5sY2w5dGIyNXBkRzl5YVc1bkwySnliM2R6WlhJdmRISnZkV0pzWlhOb2IyOTBhVzVuSWlrc1JHVTlJazF2Y21VZ1pHVjBZV2xzY3pvaU8yWjFibU4wYVc5dUlIRjBLRzRzY2lsN2NtVjBkWEp1SUdaMWJtTjBhVzl1S0NsN1ptOXlLSFpoY2lCaFBWdGRMSE05TUR0elBHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnN2N5c3JLV0ZiYzEwOVlYSm5kVzFsYm5SelczTmRPM1J5ZVh0eVpYUjFjbTRnYmk1aGNIQnNlU2gyYjJsa0lEQXNZU2w5WTJGMFkyZ29iQ2w3ZWk1bGNuSnZjaWh5TEd3cGZYMTlablZ1WTNScGIyNGdUbVVvYmlsN2NtVjBkWEp1SUc0aFBUMHdKaVpOWVhSb0xuSmhibVJ2YlNncEtqRXdNRHc5Ym4xbWRXNWpkR2x2YmlCdWNpaHVLWHR5WlhSMWNtNGdjM0lvYmlrbUptNCtQVEFtSm00OFBURXdNSDFtZFc1amRHbHZiaUJ6Y2lodUtYdHlaWFIxY200Z2RIbHdaVzltSUc0OVBTSnVkVzFpWlhJaWZYWmhjaUJVWlQweFpUTXNjMlU5TmpBcVZHVXNiM0k5TmpBcWMyVTdablZ1WTNScGIyNGdTV1VvS1h0eVpYUjFjbTRnYm1WM0lFUmhkR1VvS1M1blpYUlVhVzFsS0NsOVpuVnVZM1JwYjI0Z1VTZ3BlM0psZEhWeWJpQkpaU2dwZldaMWJtTjBhVzl1SUUxbEtDbDdjbVYwZFhKdUlIQmxjbVp2Y20xaGJtTmxMbTV2ZHlncGZXWjFibU4wYVc5dUlHVmxLQ2w3Y21WMGRYSnVlM0psYkdGMGFYWmxPazFsS0Nrc2RHbHRaVk4wWVcxd09sRW9LWDE5Wm5WdVkzUnBiMjRnWVhJb0tYdHlaWFIxY201N2NtVnNZWFJwZG1VNk1DeDBhVzFsVTNSaGJYQTZWM1FvS1gxOVpuVnVZM1JwYjI0Z1puSW9iaXh5S1h0eVpYUjFjbTRnY2kxdWZXWjFibU4wYVc5dUlHeHlLRzRzY2lsN2NtVjBkWEp1SUc0cmNuMW1kVzVqZEdsdmJpQjFjaWh1S1h0eVpYUjFjbTRnYmkxWGRDZ3BmWFpoY2lCb2REdG1kVzVqZEdsdmJpQlhkQ2dwZTNKbGRIVnliaUJvZEQwOVBYWnZhV1FnTUNZbUtHaDBQWEJsY21admNtMWhibU5sTG5ScGJXbHVaeTV1WVhacFoyRjBhVzl1VTNSaGNuUXBMR2gwZlhaaGNpQllQVEV3TWpRc1dIUTlNVEF5TkNwWUxHUnlQUzliWGx4MU1EQXdNQzFjZFRBd04wWmRMenRtZFc1amRHbHZiaUJqZENodUtYdHlaWFIxY200Z1pISXVkR1Z6ZENodUtUOTNhVzVrYjNjdVZHVjRkRVZ1WTI5a1pYSWhQVDEyYjJsa0lEQS9ibVYzSUZSbGVIUkZibU52WkdWeUtDa3VaVzVqYjJSbEtHNHBMbXhsYm1kMGFEcHVaWGNnUW14dllpaGJibDBwTG5OcGVtVTZiaTVzWlc1bmRHaDlablZ1WTNScGIyNGdlV1VvYml4eUtYdHlaWFIxY200Z2JpNXBibVJsZUU5bUtISXBJVDA5TFRGOVpuVnVZM1JwYjI0Z2NIUW9iaWw3YVdZb1FYSnlZWGt1Wm5KdmJTbHlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaHVLVHQyWVhJZ2NqMWJYVHRwWmlodUlHbHVjM1JoYm1ObGIyWWdVMlYwS1c0dVptOXlSV0ZqYUNobWRXNWpkR2x2YmloektYdHlaWFIxY200Z2NpNXdkWE5vS0hNcGZTazdaV3h6WlNCbWIzSW9kbUZ5SUdFOU1EdGhQRzR1YkdWdVozUm9PMkVyS3lseUxuQjFjMmdvYmx0aFhTazdjbVYwZFhKdUlISjlablZ1WTNScGIyNGdhSElvYml4eUtYdG1iM0lvZG1GeUlHRTlNRHRoUEc0dWJHVnVaM1JvTzJFclBURXBlM1poY2lCelBXNWJZVjA3YVdZb2NpaHpMR0VwS1hKbGRIVnliaUJ6ZlgxbWRXNWpkR2x2YmlCdFpTaHVLWHR5WlhSMWNtNGdUMkpxWldOMExtdGxlWE1vYmlrdWJXRndLR1oxYm1OMGFXOXVLSElwZTNKbGRIVnliaUJ1VzNKZGZTbDlablZ1WTNScGIyNGdZM0lvYmlsN2NtVjBkWEp1SUU5aWFtVmpkQzVyWlhsektHNHBMbTFoY0NobWRXNWpkR2x2YmloeUtYdHlaWFIxY201YmNpeHVXM0pkWFgwcGZXWjFibU4wYVc5dUlGOTBLRzRzY2lsN2NtVjBkWEp1SUc0dWMyeHBZMlVvTUN4eUxteGxibWQwYUNrOVBUMXlmV1oxYm1OMGFXOXVJSEJ5S0c0c2NpbDdjbVYwZFhKdUlHNHVjMnhwWTJVb0xYSXViR1Z1WjNSb0tUMDlQWEo5Wm5WdVkzUnBiMjRnVHlodUtYdG1iM0lvZG1GeUlISTlXMTBzWVQweE8yRThZWEpuZFcxbGJuUnpMbXhsYm1kMGFEdGhLeXNwY2x0aExURmRQV0Z5WjNWdFpXNTBjMXRoWFR0eVpYUjFjbTRnY2k1bWIzSkZZV05vS0daMWJtTjBhVzl1S0hNcGUyWnZjaWgyWVhJZ2JDQnBiaUJ6S1U5aWFtVmpkQzV3Y205MGIzUjVjR1V1YUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNoekxHd3BKaVlvYmx0c1hUMXpXMnhkS1gwcExHNTlablZ1WTNScGIyNGdYM0lvYmlsN2NtVjBkWEp1SUU4b2UzMHNiaWw5Wm5WdVkzUnBiMjRnU25Rb2JpeHlLWHR5WlhSMWNtNGdUMkpxWldOMExtdGxlWE1vYmlrdWMyOXRaU2htZFc1amRHbHZiaWhoS1h0eVpYUjFjbTRnYmx0aFhUMDlQWEo5S1gxbWRXNWpkR2x2YmlCMmRDaHVLWHR5WlhSMWNtNGdUMkpxWldOMExtdGxlWE1vYmlrdWJHVnVaM1JvUFQwOU1IMW1kVzVqZEdsdmJpQjBaU2dwZTJsbUtIUjVjR1Z2WmlCbmJHOWlZV3hVYUdselBUMGliMkpxWldOMElpbHlaWFIxY200Z1oyeHZZbUZzVkdocGN6dFBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvVDJKcVpXTjBMbkJ5YjNSdmRIbHdaU3dpWDJSa1gzUmxiWEJmSWl4N1oyVjBPbVoxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSFJvYVhOOUxHTnZibVpwWjNWeVlXSnNaVG9oTUgwcE8zWmhjaUJ1UFY5a1pGOTBaVzF3WHp0eVpYUjFjbTRnWkdWc1pYUmxJRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVYMlJrWDNSbGJYQmZMSFI1Y0dWdlppQnVJVDBpYjJKcVpXTjBJaVltS0hSNWNHVnZaaUJ6Wld4bVBUMGliMkpxWldOMElqOXVQWE5sYkdZNmRIbHdaVzltSUhkcGJtUnZkejA5SW05aWFtVmpkQ0kvYmoxM2FXNWtiM2M2YmoxN2ZTa3NibjFtZFc1amRHbHZiaUJpWlNodUxISXBlM1poY2lCaFBYUmxLQ2tzY3p0eVpYUjFjbTRnWVM1YWIyNWxKaVowZVhCbGIyWWdZUzVhYjI1bExsOWZjM2x0WW05c1gxODlQU0ptZFc1amRHbHZiaUltSmloelBXNWJZUzVhYjI1bExsOWZjM2x0WW05c1gxOG9jaWxkS1N4emZId29jejF1VzNKZEtTeHpmWFpoY2lCMmNqMW1kVzVqZEdsdmJpaHVMSElzWVNsN2FXWW9ZWHg4WVhKbmRXMWxiblJ6TG14bGJtZDBhRDA5UFRJcFptOXlLSFpoY2lCelBUQXNiRDF5TG14bGJtZDBhQ3hrTzNNOGJEdHpLeXNwS0dSOGZDRW9jeUJwYmlCeUtTa21KaWhrZkh3b1pEMUJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaHlMREFzY3lrcExHUmJjMTA5Y2x0elhTazdjbVYwZFhKdUlHNHVZMjl1WTJGMEtHUjhmRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNXpiR2xqWlM1allXeHNLSElwS1gwc1IyVXNKSFE5SVRFN1puVnVZM1JwYjI0Z1ozSW9iaWw3UjJVOWJuMW1kVzVqZEdsdmJpQjVjaWh1S1hza2REMXVmV1oxYm1OMGFXOXVJRzF5S0c0c2NpeGhLWHQyWVhJZ2N6MWhMblpoYkhWbE8yRXVkbUZzZFdVOVpuVnVZM1JwYjI0b0tYdG1iM0lvZG1GeUlHdzlXMTBzWkQwd08yUThZWEpuZFcxbGJuUnpMbXhsYm1kMGFEdGtLeXNwYkZ0a1hUMWhjbWQxYldWdWRITmJaRjA3ZG1GeUlHZzlSMlUvUWloektUcHpPM0psZEhWeWJpQm9MbUZ3Y0d4NUtIUm9hWE1zYkNsOWZXWjFibU4wYVc5dUlFSW9iaWw3Y21WMGRYSnVJR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJRUpsS0c0c2RHaHBjeXhoY21kMWJXVnVkSE1wZlgxbWRXNWpkR2x2YmlCQ1pTaHVMSElzWVNsN2RISjVlM0psZEhWeWJpQnVMbUZ3Y0d4NUtISXNZU2w5WTJGMFkyZ29jeWw3YVdZb1ozUW9jeWtzUjJVcGRISjVlMGRsS0hNcGZXTmhkR05vS0d3cGUyZDBLR3dwZlgxOVpuVnVZM1JwYjI0Z1ozUW9LWHRtYjNJb2RtRnlJRzQ5VzEwc2NqMHdPM0k4WVhKbmRXMWxiblJ6TG14bGJtZDBhRHR5S3lzcGJsdHlYVDFoY21kMWJXVnVkSE5iY2wwN0pIUW1Kbm91WlhKeWIzSXVZWEJ3Ykhrb2VpeDJjaWhiSWx0TlQwNUpWRTlTWFNKZExHNHNJVEVwS1gxbWRXNWpkR2x2YmlCR1pTaHVMSElwZTNKbGRIVnliaUJpWlNoMFpTZ3BMQ0p6WlhSVWFXMWxiM1YwSWlrb1FpaHVLU3h5S1gxbWRXNWpkR2x2YmlCYWRDaHVLWHRpWlNoMFpTZ3BMQ0pqYkdWaGNsUnBiV1Z2ZFhRaUtTaHVLWDFtZFc1amRHbHZiaUI1ZENodUxISXBlM0psZEhWeWJpQmlaU2gwWlNncExDSnpaWFJKYm5SbGNuWmhiQ0lwS0VJb2Jpa3NjaWw5Wm5WdVkzUnBiMjRnVVhRb2JpbDdZbVVvZEdVb0tTd2lZMnhsWVhKSmJuUmxjblpoYkNJcEtHNHBmWFpoY2lCU1BXWjFibU4wYVc5dUtDbDdablZ1WTNScGIyNGdiaWh5S1h0MGFHbHpMbTl1Um1seWMzUlRkV0p6WTNKcFltVTljaXgwYUdsekxtOWljMlZ5ZG1WeWN6MWJYWDF5WlhSMWNtNGdiaTV3Y205MGIzUjVjR1V1YzNWaWMyTnlhV0psUFdaMWJtTjBhVzl1S0hJcGUzWmhjaUJoUFhSb2FYTTdjbVYwZFhKdUlIUm9hWE11YjJKelpYSjJaWEp6TG5CMWMyZ29jaWtzZEdocGN5NXZZbk5sY25abGNuTXViR1Z1WjNSb1BUMDlNU1ltZEdocGN5NXZia1pwY25OMFUzVmljMk55YVdKbEppWW9kR2hwY3k1dmJreGhjM1JWYm5OMVluTmpjbWxpWlQxMGFHbHpMbTl1Um1seWMzUlRkV0p6WTNKcFltVW9kR2hwY3lsOGZIWnZhV1FnTUNrc2UzVnVjM1ZpYzJOeWFXSmxPbVoxYm1OMGFXOXVLQ2w3WVM1dlluTmxjblpsY25NOVlTNXZZbk5sY25abGNuTXVabWxzZEdWeUtHWjFibU4wYVc5dUtITXBlM0psZEhWeWJpQnlJVDA5YzMwcExDRmhMbTlpYzJWeWRtVnljeTVzWlc1bmRHZ21KbUV1YjI1TVlYTjBWVzV6ZFdKelkzSnBZbVVtSm1FdWIyNU1ZWE4wVlc1emRXSnpZM0pwWW1Vb0tYMTlmU3h1TG5CeWIzUnZkSGx3WlM1dWIzUnBabms5Wm5WdVkzUnBiMjRvY2lsN2RHaHBjeTV2WW5ObGNuWmxjbk11Wm05eVJXRmphQ2htZFc1amRHbHZiaWhoS1h0eVpYUjFjbTRnWVNoeUtYMHBmU3h1ZlNncE8yWjFibU4wYVc5dUlHVnBLQ2w3Wm05eUtIWmhjaUJ1UFZ0ZExISTlNRHR5UEdGeVozVnRaVzUwY3k1c1pXNW5kR2c3Y2lzcktXNWJjbDA5WVhKbmRXMWxiblJ6VzNKZE8zSmxkSFZ5YmlCdVpYY2dVaWhtZFc1amRHbHZiaWhoS1h0MllYSWdjejF1TG0xaGNDaG1kVzVqZEdsdmJpaHNLWHR5WlhSMWNtNGdiQzV6ZFdKelkzSnBZbVVvWm5WdVkzUnBiMjRvWkNsN2NtVjBkWEp1SUdFdWJtOTBhV1o1S0dRcGZTbDlLVHR5WlhSMWNtNGdablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdjeTVtYjNKRllXTm9LR1oxYm1OMGFXOXVLR3dwZTNKbGRIVnliaUJzTG5WdWMzVmljMk55YVdKbEtDbDlLWDE5S1gxbWRXNWpkR2x2YmlCMGFTaHVMSElzWVNsN2RtRnlJSE05SVRFc2JDeGtPM0psZEhWeWJudDBhSEp2ZEhSc1pXUTZablZ1WTNScGIyNG9LWHRtYjNJb2RtRnlJR2c5VzEwc2J6MHdPMjg4WVhKbmRXMWxiblJ6TG14bGJtZDBhRHR2S3lzcGFGdHZYVDFoY21kMWJXVnVkSE5iYjEwN2FXWW9jeWw3YkQxb08zSmxkSFZ5Ym4xdUxtRndjR3g1S0hadmFXUWdNQ3hvS1N4elBTRXdMR1E5Um1Vb1puVnVZM1JwYjI0b0tYdHNKaVp1TG1Gd2NHeDVLSFp2YVdRZ01DeHNLU3h6UFNFeExHdzlkbTlwWkNBd2ZTeHlLWDBzWTJGdVkyVnNPbVoxYm1OMGFXOXVLQ2w3V25Rb1pDa3NjejBoTVN4c1BYWnZhV1FnTUgxOWZXWjFibU4wYVc5dUlHbGxLQ2w3ZldaMWJtTjBhVzl1SUc5bEtHNHBlM0psZEhWeWJpQnVQeWh3WVhKelpVbHVkQ2h1TERFd0tWNU5ZWFJvTG5KaGJtUnZiU2dwS2pFMlBqNXdZWEp6WlVsdWRDaHVMREV3S1M4MEtTNTBiMU4wY21sdVp5Z3hOaWs2SWlJdVkyOXVZMkYwS0RGbE55d2lMU0lwTG1OdmJtTmhkQ2d4WlRNc0lpMGlLUzVqYjI1allYUW9OR1V6TENJdElpa3VZMjl1WTJGMEtEaGxNeXdpTFNJcExtTnZibU5oZENneFpURXhLUzV5WlhCc1lXTmxLQzliTURFNFhTOW5MRzlsS1gxMllYSWdTR1U5THloYlhIY3RYU3NwWEhNcVBWeHpLaWhiWGp0ZEt5a3ZaenRtZFc1amRHbHZiaUJpY2lodUxISXBlMlp2Y2loSVpTNXNZWE4wU1c1a1pYZzlNRHM3S1h0MllYSWdZVDFJWlM1bGVHVmpLRzRwTzJsbUtHRXBlMmxtS0dGYk1WMDlQVDF5S1hKbGRIVnliaUJoV3pKZGZXVnNjMlVnWW5KbFlXdDlmV1oxYm1OMGFXOXVJRk55S0c0cGUzWmhjaUJ5UFc1bGR5Qk5ZWEE3Wm05eUtFaGxMbXhoYzNSSmJtUmxlRDB3T3pzcGUzWmhjaUJoUFVobExtVjRaV01vYmlrN2FXWW9ZU2x5TG5ObGRDaGhXekZkTEdGYk1sMHBPMlZzYzJVZ1luSmxZV3Q5Y21WMGRYSnVJSEo5Wm5WdVkzUnBiMjRnZUhJb2JpeHlMR0VwZTNaaGNpQnpQVzR1WTJoaGNrTnZaR1ZCZENoeUxURXBMR3c5Y3o0OU5UVXlPVFltSm5NOFBUVTJNekU1TEdROWJEOXlLekU2Y2p0eVpYUjFjbTRnYmk1c1pXNW5kR2c4UFdRL2Jqb2lJaTVqYjI1allYUW9iaTV6YkdsalpTZ3dMR1FwS1M1amIyNWpZWFFvWVNsOVpuVnVZM1JwYjI0Z1ZYSW9LWHR5WlhSMWNtNGdkM0lvS1QwOVBURjlkbUZ5SUZsbE8yWjFibU4wYVc5dUlIZHlLQ2w3Y21WMGRYSnVJRmxsUHo4b1dXVTlSWElvS1NsOVpuVnVZM1JwYjI0Z1JYSW9iaWw3ZG1GeUlISTdiajA5UFhadmFXUWdNQ1ltS0c0OWQybHVaRzkzS1R0MllYSWdZVDF1TG01aGRtbG5ZWFJ2Y2k1MWMyVnlRV2RsYm5RN2NtVjBkWEp1SUc0dVkyaHliMjFsZkh3dlNHVmhaR3hsYzNORGFISnZiV1V2TG5SbGMzUW9ZU2svTVRvb0tISTliaTV1WVhacFoyRjBiM0l1ZG1WdVpHOXlLVDA5UFc1MWJHeDhmSEk5UFQxMmIybGtJREEvZG05cFpDQXdPbkl1YVc1a1pYaFBaaWdpUVhCd2JHVWlLU2s5UFQwd2ZId3ZjMkZtWVhKcEwya3VkR1Z6ZENoaEtTWW1JUzlqYUhKdmJXVjhZVzVrY205cFpDOXBMblJsYzNRb1lTay9NanB1TG1SdlkzVnRaVzUwTG1SdlkzVnRaVzUwVFc5a1pUOHdPak45Wm5WdVkzUnBiMjRnVEdVb2JpeHlMR0VzY3lsN2RtRnlJR3c5Ym1WM0lFUmhkR1U3YkM1elpYUlVhVzFsS0d3dVoyVjBWR2x0WlNncEsyRXBPM1poY2lCa1BTSmxlSEJwY21WelBTSXVZMjl1WTJGMEtHd3VkRzlWVkVOVGRISnBibWNvS1Nrc2FEMXpKaVp6TG1OeWIzTnpVMmwwWlQ4aWJtOXVaU0k2SW5OMGNtbGpkQ0lzYnoxekppWnpMbVJ2YldGcGJqOGlPMlJ2YldGcGJqMGlMbU52Ym1OaGRDaHpMbVJ2YldGcGJpazZJaUlzWHoxekppWnpMbk5sWTNWeVpUOGlPM05sWTNWeVpTSTZJaUlzY0QxekppWnpMbkJoY25ScGRHbHZibVZrUHlJN2NHRnlkR2wwYVc5dVpXUWlPaUlpTzJSdlkzVnRaVzUwTG1OdmIydHBaVDBpSWk1amIyNWpZWFFvYml3aVBTSXBMbU52Ym1OaGRDaHlMQ0k3SWlrdVkyOXVZMkYwS0dRc0lqdHdZWFJvUFM4N2MyRnRaWE5wZEdVOUlpa3VZMjl1WTJGMEtHZ3BMbU52Ym1OaGRDaHZLUzVqYjI1allYUW9YeWt1WTI5dVkyRjBLSEFwZldaMWJtTjBhVzl1SUcxMEtHNHBlM0psZEhWeWJpQmljaWhrYjJOMWJXVnVkQzVqYjI5cmFXVXNiaWw5ZG1GeUlHSjBPMloxYm1OMGFXOXVJR0ZsS0c0cGUzSmxkSFZ5YmlCaWRIeDhLR0owUFZOeUtHUnZZM1Z0Wlc1MExtTnZiMnRwWlNrcExHSjBMbWRsZENodUtYMW1kVzVqZEdsdmJpQnBhU2h1TEhJcGUweGxLRzRzSWlJc01DeHlLWDFtZFc1amRHbHZiaUJCY2lodUtYdHBaaWhrYjJOMWJXVnVkQzVqYjI5cmFXVTlQVDEyYjJsa0lEQjhmR1J2WTNWdFpXNTBMbU52YjJ0cFpUMDlQVzUxYkd3cGNtVjBkWEp1SVRFN2RISjVlM1poY2lCeVBTSmtaRjlqYjI5cmFXVmZkR1Z6ZEY4aUxtTnZibU5oZENodlpTZ3BLU3hoUFNKMFpYTjBJanRNWlNoeUxHRXNjMlVzYmlrN2RtRnlJSE05YlhRb2NpazlQVDFoTzNKbGRIVnliaUJwYVNoeUxHNHBMSE45WTJGMFkyZ29iQ2w3Y21WMGRYSnVJSG91WlhKeWIzSW9iQ2tzSVRGOWZYWmhjaUJUZER0bWRXNWpkR2x2YmlCRGNpZ3BlMmxtS0ZOMFBUMDlkbTlwWkNBd0tYdG1iM0lvZG1GeUlHNDlJbVJrWDNOcGRHVmZkR1Z6ZEY4aUxtTnZibU5oZENodlpTZ3BLU3h5UFNKMFpYTjBJaXhoUFhkcGJtUnZkeTVzYjJOaGRHbHZiaTVvYjNOMGJtRnRaUzV6Y0d4cGRDZ2lMaUlwTEhNOVlTNXdiM0FvS1R0aExteGxibWQwYUNZbUlXMTBLRzRwT3lselBTSWlMbU52Ym1OaGRDaGhMbkJ2Y0NncExDSXVJaWt1WTI5dVkyRjBLSE1wTEV4bEtHNHNjaXhVWlN4N1pHOXRZV2x1T25OOUtUdHBhU2h1TEh0a2IyMWhhVzQ2YzMwcExGTjBQWE45Y21WMGRYSnVJRk4wZlhaaGNpQlRaVDBpWDJSa1gzTWlMSGgwUFRRcWIzSXNjbWs5TVRVcWMyVXNibWs5TDE0b1cyRXRla0V0V2wwcktUMG9XMkV0ZWpBdE9TMWRLeWtrTHl4VmREMGlKaUlzVkhJOUlqRWlPMloxYm1OMGFXOXVJR1psS0NsN2NtVjBkWEp1ZTJselJYaHdhWEpsWkRwVWNuMTlablZ1WTNScGIyNGdWbVVvYmlsN2NtVjBkWEp1SUhaMEtHNHBmV1oxYm1OMGFXOXVJSE5wS0c0cGUzSmxkSFZ5YmlGV1pTaHVLWDFtZFc1amRHbHZiaUJxWlNodUtYdHlaWFIxY200Z2JpNXBjMFY0Y0dseVpXUWhQVDEyYjJsa0lEQjhmQ0ZKY2lodUtYMW1kVzVqZEdsdmJpQkpjaWh1S1h0eVpYUjFjbTRvYmk1amNtVmhkR1ZrUFQwOWRtOXBaQ0F3Zkh4SlpTZ3BMVTUxYldKbGNpaHVMbU55WldGMFpXUXBQSGgwS1NZbUtHNHVaWGh3YVhKbFBUMDlkbTlwWkNBd2ZIeEpaU2dwUEU1MWJXSmxjaWh1TG1WNGNHbHlaU2twZldaMWJtTjBhVzl1SUc5cEtHNHBlMjR1Wlhod2FYSmxQVk4wY21sdVp5aEpaU2dwSzNKcEtYMW1kVzVqZEdsdmJpQjNkQ2h1S1h0eVpYUjFjbTRnWTNJb2Jpa3ViV0Z3S0daMWJtTjBhVzl1S0hJcGUzWmhjaUJoUFhKYk1GMHNjejF5V3pGZE8zSmxkSFZ5YmlJaUxtTnZibU5oZENoaExDSTlJaWt1WTI5dVkyRjBLSE1wZlNrdWFtOXBiaWhWZENsOVpuVnVZM1JwYjI0Z1lXa29iaWw3ZG1GeUlISTllMzA3Y21WMGRYSnVJRUp5S0c0cEppWnVMbk53YkdsMEtGVjBLUzVtYjNKRllXTm9LR1oxYm1OMGFXOXVLR0VwZTNaaGNpQnpQVzVwTG1WNFpXTW9ZU2s3YVdZb2N5RTlQVzUxYkd3cGUzWmhjaUJzUFhOYk1WMHNaRDF6V3pKZE8zSmJiRjA5WkgxOUtTeHlmV1oxYm1OMGFXOXVJRUp5S0c0cGUzSmxkSFZ5YmlFaGJpWW1LRzR1YVc1a1pYaFBaaWhWZENraFBUMHRNWHg4Ym1rdWRHVnpkQ2h1S1NsOWRtRnlJRVp5UFNKZlpHUWlMRXh5UFNKZlpHUmZjaUlzYTNJOUlsOWtaRjlzSWl4NmNqMGljblZ0SWl4U2NqMGliRzluY3lJN1puVnVZM1JwYjI0Z1QzSW9iaWw3ZG1GeUlISTlZV1VvVTJVcE8ybG1LQ0Z5S1h0MllYSWdZVDFoWlNoR2Npa3NjejFoWlNoTWNpa3NiRDFoWlNocmNpa3NaRDE3ZlR0aEppWW9aQzVwWkQxaEtTeHNKaVl2WGxzd01WMGtMeTUwWlhOMEtHd3BKaVlvWkZ0U2NsMDliQ2tzY3lZbUwxNWJNREV5WFNRdkxuUmxjM1FvY3lrbUppaGtXM3B5WFQxektTeHphU2hrS1NZbUtHOXBLR1FwTEc0dWNHVnljMmx6ZEZObGMzTnBiMjRvWkNrcGZYMW1kVzVqZEdsdmJpQlFjaWh1S1h0MllYSWdjajFJY2lodUtUdHlaWFIxY200Z1FYSW9jaWsvZTNSNWNHVTZJa052YjJ0cFpTSXNZMjl2YTJsbFQzQjBhVzl1Y3pweWZUcDJiMmxrSURCOVpuVnVZM1JwYjI0Z1JISW9iaWw3ZG1GeUlISTllMmx6VEc5amEwVnVZV0pzWldRNlZYSW9LU3h3WlhKemFYTjBVMlZ6YzJsdmJqcE9jaWh1S1N4eVpYUnlhV1YyWlZObGMzTnBiMjQ2UjNJc1pYaHdhWEpsVTJWemMybHZianBtZFc1amRHbHZiaWdwZTNKbGRIVnliaUJOY2lodUtYMTlPM0psZEhWeWJpQlBjaWh5S1N4eWZXWjFibU4wYVc5dUlFNXlLRzRwZTNKbGRIVnliaUJtZFc1amRHbHZiaWh5S1h0TVpTaFRaU3gzZENoeUtTeHlhU3h1S1gxOVpuVnVZM1JwYjI0Z1RYSW9iaWw3VEdVb1UyVXNkM1FvWm1Vb0tTa3NlSFFzYmlsOVpuVnVZM1JwYjI0Z1IzSW9LWHQyWVhJZ2JqMXRkQ2hUWlNrN2NtVjBkWEp1SUdGcEtHNHBmV1oxYm1OMGFXOXVJRWh5S0c0cGUzWmhjaUJ5UFh0OU8zSmxkSFZ5YmlCeUxuTmxZM1Z5WlQwaElXNHVkWE5sVTJWamRYSmxVMlZ6YzJsdmJrTnZiMnRwWlh4OElTRnVMblZ6WlZCaGNuUnBkR2x2Ym1Wa1EzSnZjM05UYVhSbFUyVnpjMmx2YmtOdmIydHBaWHg4SVNGdUxuVnpaVU55YjNOelUybDBaVk5sYzNOcGIyNURiMjlyYVdVc2NpNWpjbTl6YzFOcGRHVTlJU0Z1TG5WelpWQmhjblJwZEdsdmJtVmtRM0p2YzNOVGFYUmxVMlZ6YzJsdmJrTnZiMnRwWlh4OElTRnVMblZ6WlVOeWIzTnpVMmwwWlZObGMzTnBiMjVEYjI5cmFXVXNjaTV3WVhKMGFYUnBiMjVsWkQwaElXNHVkWE5sVUdGeWRHbDBhVzl1WldSRGNtOXpjMU5wZEdWVFpYTnphVzl1UTI5dmEybGxMRzR1ZEhKaFkydFRaWE56YVc5dVFXTnliM056VTNWaVpHOXRZV2x1Y3lZbUtISXVaRzl0WVdsdVBVTnlLQ2twTEhKOWRtRnlJRmx5UFNKZlpHUmZkR1Z6ZEY4aU8yWjFibU4wYVc5dUlGWnlLQ2w3ZEhKNWUzWmhjaUJ1UFc5bEtDa3NjajBpSWk1amIyNWpZWFFvV1hJcExtTnZibU5oZENodUtUdHNiMk5oYkZOMGIzSmhaMlV1YzJWMFNYUmxiU2h5TEc0cE8zWmhjaUJoUFd4dlkyRnNVM1J2Y21GblpTNW5aWFJKZEdWdEtISXBPM0psZEhWeWJpQnNiMk5oYkZOMGIzSmhaMlV1Y21WdGIzWmxTWFJsYlNoeUtTeHVQVDA5WVQ5N2RIbHdaVG9pVEc5allXeFRkRzl5WVdkbEluMDZkbTlwWkNBd2ZXTmhkR05vZTNKbGRIVnlibjE5Wm5WdVkzUnBiMjRnYW5Jb0tYdHlaWFIxY201N2FYTk1iMk5yUlc1aFlteGxaRG9oTVN4d1pYSnphWE4wVTJWemMybHZianBtYVN4eVpYUnlhV1YyWlZObGMzTnBiMjQ2UzNJc1pYaHdhWEpsVTJWemMybHZianB4Y24xOVpuVnVZM1JwYjI0Z1pta29iaWw3Ykc5allXeFRkRzl5WVdkbExuTmxkRWwwWlcwb1UyVXNkM1FvYmlrcGZXWjFibU4wYVc5dUlFdHlLQ2w3ZG1GeUlHNDliRzlqWVd4VGRHOXlZV2RsTG1kbGRFbDBaVzBvVTJVcE8zSmxkSFZ5YmlCaGFTaHVLWDFtZFc1amRHbHZiaUJ4Y2lncGUyWnBLR1psS0NrcGZYWmhjaUJYY2oweE1DeFljajB4TURBc2JHazlXMTBzUzJVN1puVnVZM1JwYjI0Z2JHVW9iaXh5TEdFcGUzWmhjaUJ6TzJFOVBUMTJiMmxrSURBbUppaGhQVEFwTzNaaGNpQnNQWEl1YVhOTWIyTnJSVzVoWW14bFpDeGtQWEl1Y0dWeWMybHpkRk5sYzNOcGIyNHNhRDF5TG1WNGNHbHlaVk5sYzNOcGIyNHNiejFtZFc1amRHbHZiaWhsS1h0eVpYUjFjbTRnWkNoUEtIdDlMR1VzZTJ4dlkyczZjSDBwS1gwc1h6MW1kVzVqZEdsdmJpZ3BlM1poY2lCbFBYSXVjbVYwY21sbGRtVlRaWE56YVc5dUtDa3NkRDFsTG14dlkyczdjbVYwZFhKdUlHVXViRzlqYXlZbVpHVnNaWFJsSUdVdWJHOWpheXg3YzJWemMybHZianBsTEd4dlkyczZkSDE5TzJsbUtFdGxmSHdvUzJVOWJpa3NiaUU5UFV0bEtYdHNhUzV3ZFhOb0tHNHBPM0psZEhWeWJuMXBaaWhzSmlaaFBqMVljaWw3ZFdrb2NpazdjbVYwZFhKdWZYWmhjaUJ3TEdNOVh5Z3BPMmxtS0d3cGUybG1LR011Ykc5amF5bDdjV1VvYml4eUxHRXBPM0psZEhWeWJuMXBaaWh3UFc5bEtDa3NieWhqTG5ObGMzTnBiMjRwTEdNOVh5Z3BMR011Ykc5amF5RTlQWEFwZTNGbEtHNHNjaXhoS1R0eVpYUjFjbTU5ZlhaaGNpQm5QVzR1Y0hKdlkyVnpjeWhqTG5ObGMzTnBiMjRwTzJsbUtHd21KaWhqUFY4b0tTeGpMbXh2WTJzaFBUMXdLU2w3Y1dVb2JpeHlMR0VwTzNKbGRIVnlibjFwWmlobkppWW9hbVVvWnlrL2FDZ3BPaWh2YVNobktTeHNQMjhvWnlrNlpDaG5LU2twTEd3bUppRW9aeVltYW1Vb1p5a3BLWHRwWmloalBWOG9LU3hqTG14dlkyc2hQVDF3S1h0eFpTaHVMSElzWVNrN2NtVjBkWEp1ZldRb1l5NXpaWE56YVc5dUtTeG5QV011YzJWemMybHZibjBvY3oxdUxtRm1kR1Z5S1QwOVBXNTFiR3g4ZkhNOVBUMTJiMmxrSURCOGZITXVZMkZzYkNodUxHZDhmR011YzJWemMybHZiaWtzZFdrb2NpbDlablZ1WTNScGIyNGdjV1VvYml4eUxHRXBlMFpsS0daMWJtTjBhVzl1S0NsN2JHVW9iaXh5TEdFck1TbDlMRmR5S1gxbWRXNWpkR2x2YmlCMWFTaHVLWHRMWlQxMmIybGtJREE3ZG1GeUlISTliR2t1YzJocFpuUW9LVHR5Smlac1pTaHlMRzRwZlhaaGNpQmthVDFVWlR0bWRXNWpkR2x2YmlCS2NpaHVLWHQyWVhJZ2NqMVFjaWh1S1R0eVpYUjFjbTRoY2lZbWJpNWhiR3h2ZDBaaGJHeGlZV05yVkc5TWIyTmhiRk4wYjNKaFoyVW1KaWh5UFZaeUtDa3BMSEo5Wm5WdVkzUnBiMjRnSkhJb2JpeHlMR0VwZTNaaGNpQnpQVzVsZHlCU0xHdzlibVYzSUZJc1pEMXVaWGNnVWl4b1BXNHVkSGx3WlQwOVBTSkRiMjlyYVdVaVAwUnlLRzR1WTI5dmEybGxUM0IwYVc5dWN5azZhbklvS1N4dlBXZ3VaWGh3YVhKbFUyVnpjMmx2Yml4ZlBYbDBLR2tzWkdrcExIQTdkU2dwTzNaaGNpQmpQWFJwS0daMWJtTjBhVzl1S0NsN2JHVW9lM0J5YjJObGMzTTZablZ1WTNScGIyNG9WU2w3YVdZb0lWWmxLRlVwS1h0MllYSWdSVDFtS0ZVcE8zSmxkSFZ5YmlCMktFVXBMRVY5ZlN4aFpuUmxjanBtZFc1amRHbHZiaWhWS1h0emFTaFZLU1ltSVhrb0tTWW1lQ2hWS1N4d1BWVjlmU3hvS1gwc1pHa3BMR2M5WXk1MGFISnZkSFJzWldRc1pUMWpMbU5oYm1ObGJEdG1kVzVqZEdsdmJpQjBLQ2w3YkdVb2UzQnliMk5sYzNNNlpuVnVZM1JwYjI0b1ZTbDdjbVYwZFhKdUlIa29LVDltS0ZVcE9uWnZhV1FnTUgxOUxHZ3BmV1oxYm1OMGFXOXVJR2tvS1h0c1pTaDdjSEp2WTJWemN6cG1kVzVqZEdsdmJpaFZLWHR5WlhSMWNtNGdhbVVvVlNrL1ptVW9LVHAyYjJsa0lEQjlMR0ZtZEdWeU9tWjlMR2dwZldaMWJtTjBhVzl1SUdZb1ZTbDdjbVYwZFhKdUlHcGxLRlVwSmlZb1ZUMW1aU2dwS1N4NUtDa21KaWh0S0ZVcFAySW9LVG9vWkM1dWIzUnBabmtvZTNCeVpYWnBiM1Z6VTNSaGRHVTZjQ3h1WlhkVGRHRjBaVHBWZlNrc2NEMVZLU2tzVlgxbWRXNWpkR2x2YmlCMUtDbDdiR1VvZTNCeWIyTmxjM002Wm5WdVkzUnBiMjRvVlNsN2FXWW9WbVVvVlNrcGNtVjBkWEp1SUdabEtDbDlMR0ZtZEdWeU9tWjFibU4wYVc5dUtGVXBlM0E5VlgxOUxHZ3BmV1oxYm1OMGFXOXVJSFlvVlNsN2FXWW9WbVVvVlNrcGNtVjBkWEp1SVRFN2RtRnlJRVU5WVNoVlczSmRLU3gzUFVVdWRISmhZMnRwYm1kVWVYQmxMRUU5UlM1cGMxUnlZV05yWldRN1ZWdHlYVDEzTEdSbGJHVjBaU0JWTG1selJYaHdhWEpsWkN4QkppWWhWUzVwWkNZbUtGVXVhV1E5YjJVb0tTeFZMbU55WldGMFpXUTlVM1J5YVc1bktFbGxLQ2twS1gxbWRXNWpkR2x2YmlCNUtDbDdjbVYwZFhKdUlIQmJjbDBoUFQxMmIybGtJREI5Wm5WdVkzUnBiMjRnYlNoVktYdHlaWFIxY200Z2NDNXBaQ0U5UFZVdWFXUjhmSEJiY2wwaFBUMVZXM0pkZldaMWJtTjBhVzl1SUdJb0tYdHdQV1psS0Nrc2JDNXViM1JwWm5rb0tYMW1kVzVqZEdsdmJpQjRLRlVwZTNBOVZTeHpMbTV2ZEdsbWVTZ3BmV1oxYm1OMGFXOXVJRk1vVlNsN2JHVW9lM0J5YjJObGMzTTZablZ1WTNScGIyNG9SU2w3Y21WMGRYSnVJRThvZTMwc1JTeFZLWDBzWVdaMFpYSTZabjBzYUNsOWNtVjBkWEp1ZTJWNGNHRnVaRTl5VW1WdVpYZFRaWE56YVc5dU9tY3NaWGh3WVc1a1UyVnpjMmx2YmpwMExHZGxkRk5sYzNOcGIyNDZablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdjSDBzY21WdVpYZFBZbk5sY25aaFlteGxPbk1zWlhod2FYSmxUMkp6WlhKMllXSnNaVHBzTEhObGMzTnBiMjVUZEdGMFpWVndaR0YwWlU5aWMyVnlkbUZpYkdVNlpDeHlaWE4wWVhKMFUyVnpjMmx2YmpwMUxHVjRjR2x5WlRwbWRXNWpkR2x2YmlncGUyVW9LU3h2S0Nrc1ppaG1aU2dwS1gwc2MzUnZjRHBtZFc1amRHbHZiaWdwZTFGMEtGOHBmU3gxY0dSaGRHVlRaWE56YVc5dVUzUmhkR1U2VTMxOWRtRnlJRVYwUFh0SFVrRk9WRVZFT2lKbmNtRnVkR1ZrSWl4T1QxUmZSMUpCVGxSRlJEb2libTkwTFdkeVlXNTBaV1FpZlR0bWRXNWpkR2x2YmlCYWNpaHVLWHQyWVhJZ2NqMXVaWGNnVWp0eVpYUjFjbTU3ZEhKNVZHOUpibWwwT21aMWJtTjBhVzl1S0dFcGUyNThmQ2h1UFdFcGZTeDFjR1JoZEdVNlpuVnVZM1JwYjI0b1lTbDdiajFoTEhJdWJtOTBhV1o1S0NsOUxHbHpSM0poYm5SbFpEcG1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQnVQVDA5UlhRdVIxSkJUbFJGUkgwc2IySnpaWEoyWVdKc1pUcHlmWDFtZFc1amRHbHZiaUIxWlNodUxISXNZU2w3YVdZb2RIbHdaVzltSUc0aFBTSnZZbXBsWTNRaWZIeHVQVDA5Ym5Wc2JDbHlaWFIxY200Z1NsTlBUaTV6ZEhKcGJtZHBabmtvYmlrN2RtRnlJSE05ZUdVb1QySnFaV04wTG5CeWIzUnZkSGx3WlNrc2JEMTRaU2hCY25KaGVTNXdjbTkwYjNSNWNHVXBMR1E5ZUdVb1QySnFaV04wTG1kbGRGQnliM1J2ZEhsd1pVOW1LRzRwS1N4b1BYaGxLRzRwTzNSeWVYdHlaWFIxY200Z1NsTlBUaTV6ZEhKcGJtZHBabmtvYml4eUxHRXBmV05oZEdOb2UzSmxkSFZ5YmlJOFpYSnliM0k2SUhWdVlXSnNaU0IwYnlCelpYSnBZV3hwZW1VZ2IySnFaV04wUGlKOVptbHVZV3hzZVh0ektDa3NiQ2dwTEdRb0tTeG9LQ2w5ZldaMWJtTjBhVzl1SUhobEtHNHBlM1poY2lCeVBXNHNZVDF5TG5SdlNsTlBUanR5WlhSMWNtNGdZVDhvWkdWc1pYUmxJSEl1ZEc5S1UwOU9MR1oxYm1OMGFXOXVLQ2w3Y2k1MGIwcFRUMDQ5WVgwcE9tbGxmV1oxYm1OMGFXOXVJRUYwS0c0cGUzSmxkSFZ5YmlCUmNpaHVMR3h2WTJGMGFXOXVMbWh5WldZcExtaHlaV1o5Wm5WdVkzUnBiMjRnVVhJb2JpeHlLWHQyWVhJZ1lUMWxiaWdwTzJsbUtHRXBkSEo1ZTNKbGRIVnliaUJ5SVQwOWRtOXBaQ0F3UDI1bGR5QmhLRzRzY2lrNmJtVjNJR0VvYmlsOVkyRjBZMmdvYUNsN2RHaHliM2NnYm1WM0lFVnljbTl5S0NKR1lXbHNaV1FnZEc4Z1kyOXVjM1J5ZFdOMElGVlNURG9nSWk1amIyNWpZWFFvVTNSeWFXNW5LR2dwTENJZ0lpa3VZMjl1WTJGMEtIVmxLSHQxY213NmJpeGlZWE5sT25KOUtTa3BmV2xtS0hJOVBUMTJiMmxrSURBbUppRXZPaTh1ZEdWemRDaHVLU2wwYUhKdmR5QnVaWGNnUlhKeWIzSW9Ja2x1ZG1Gc2FXUWdWVkpNT2lBbklpNWpiMjVqWVhRb2Jpd2lKeUlwS1R0MllYSWdjejFrYjJOMWJXVnVkQ3hzUFhNdVkzSmxZWFJsUld4bGJXVnVkQ2dpWVNJcE8ybG1LSEloUFQxMmIybGtJREFwZTNNOVpHOWpkVzFsYm5RdWFXMXdiR1Z0Wlc1MFlYUnBiMjR1WTNKbFlYUmxTRlJOVEVSdlkzVnRaVzUwS0NJaUtUdDJZWElnWkQxekxtTnlaV0YwWlVWc1pXMWxiblFvSW1KaGMyVWlLVHRrTG1oeVpXWTljaXh6TG1obFlXUXVZWEJ3Wlc1a1EyaHBiR1FvWkNrc2N5NWliMlI1TG1Gd2NHVnVaRU5vYVd4a0tHd3BmWEpsZEhWeWJpQnNMbWh5WldZOWJpeHNmWFpoY2lCb2FUMVZVa3dzVjJVN1puVnVZM1JwYjI0Z1pXNG9LWHRwWmloWFpUMDlQWFp2YVdRZ01DbDBjbmw3ZG1GeUlHNDlibVYzSUdocEtDSm9kSFJ3T2k4dmRHVnpkQzl3WVhSb0lpazdWMlU5Ymk1b2NtVm1QVDA5SW1oMGRIQTZMeTkwWlhOMEwzQmhkR2dpZldOaGRHTm9lMWRsUFNFeGZYSmxkSFZ5YmlCWFpUOW9hVHAyYjJsa0lEQjlkbUZ5SUhSdVBTSmtZWFJoWkRCbkxtTnZiU0lzY200OUltUmtNR2N0WjI5MkxtTnZiU0lzWkdVOUltUmhkR0ZrYjJkb2NTNWpiMjBpTEc1dVBTSmtaRzluTFdkdmRpNWpiMjBpTEdOcFBTSndZMmt1WW5KdmQzTmxjaTFwYm5SaGEyVXRaR0YwWVdSdloyaHhMbU52YlNJN1puVnVZM1JwYjI0Z2EyVW9iaXh5TEdFcGUzWmhjaUJ6UFhOdUtHNHNjaWs3Y21WMGRYSnVlMkoxYVd4a09tWjFibU4wYVc5dUtHd3NaQ2w3ZG1GeUlHZzlZVzRvYml4eUxHRXNiQ3hrS1R0eVpYUjFjbTRnY3lob0tYMHNkWEpzVUhKbFptbDRPbk1vSWlJcExIUnlZV05yVkhsd1pUcHlmWDFtZFc1amRHbHZiaUJ6YmlodUxISXBlM1poY2lCaFBTSXZZWEJwTDNZeUx5SXVZMjl1WTJGMEtISXBMSE05Ymk1d2NtOTRlVHRwWmloMGVYQmxiMllnY3owOUluTjBjbWx1WnlJcGUzWmhjaUJzUFVGMEtITXBPM0psZEhWeWJpQm1kVzVqZEdsdmJpaG9LWHR5WlhSMWNtNGlJaTVqYjI1allYUW9iQ3dpUDJSa1ptOXlkMkZ5WkQwaUtTNWpiMjVqWVhRb1pXNWpiMlJsVlZKSlEyOXRjRzl1Wlc1MEtDSWlMbU52Ym1OaGRDaGhMQ0kvSWlrdVkyOXVZMkYwS0dncEtTbDlmV2xtS0hSNWNHVnZaaUJ6UFQwaVpuVnVZM1JwYjI0aUtYSmxkSFZ5YmlCbWRXNWpkR2x2Ymlob0tYdHlaWFIxY200Z2N5aDdjR0YwYURwaExIQmhjbUZ0WlhSbGNuTTZhSDBwZlR0MllYSWdaRDF2YmloeUxHNHBPM0psZEhWeWJpQm1kVzVqZEdsdmJpaG9LWHR5WlhSMWNtNGlhSFIwY0hNNkx5OGlMbU52Ym1OaGRDaGtLUzVqYjI1allYUW9ZU3dpUHlJcExtTnZibU5oZENob0tYMTlablZ1WTNScGIyNGdiMjRvYml4eUtYdDJZWElnWVQxeUxuTnBkR1VzY3oxaFBUMDlkbTlwWkNBd1AyUmxPbUVzYkQxeUxtbHVkR1Z5Ym1Gc1FXNWhiSGwwYVdOelUzVmlaRzl0WVdsdU8ybG1LRzQ5UFQwaWJHOW5jeUltSm5JdWRYTmxVR05wU1c1MFlXdGxKaVp6UFQwOVpHVXBjbVYwZFhKdUlHTnBPMmxtS0d3bUpuTTlQVDFrWlNseVpYUjFjbTRpSWk1amIyNWpZWFFvYkN3aUxpSXBMbU52Ym1OaGRDaGtaU2s3YVdZb2N6MDlQWEp1S1hKbGRIVnliaUpvZEhSd0xXbHVkR0ZyWlM1c2IyZHpMaUl1WTI5dVkyRjBLSE1wTzNaaGNpQmtQWE11YzNCc2FYUW9JaTRpS1N4b1BXUXVjRzl3S0NrN2NtVjBkWEp1SW1KeWIzZHpaWEl0YVc1MFlXdGxMU0l1WTI5dVkyRjBLR1F1YW05cGJpZ2lMU0lwTENJdUlpa3VZMjl1WTJGMEtHZ3BmV1oxYm1OMGFXOXVJR0Z1S0c0c2NpeGhMSE1zYkNsN2RtRnlJR1E5Ymk1amJHbGxiblJVYjJ0bGJpeG9QVzR1YVc1MFpYSnVZV3hCYm1Gc2VYUnBZM05UZFdKa2IyMWhhVzRzYnoxc0xuSmxkSEo1TEY4OWJDNWxibU52WkdsdVp5eHdQVnNpYzJSclgzWmxjbk5wYjI0NklpNWpiMjVqWVhRb0lqVXVNamt1TVNJcExDSmhjR2s2SWk1amIyNWpZWFFvY3lsZExtTnZibU5oZENoaEtUdHZKaVp3TG5CMWMyZ29JbkpsZEhKNVgyTnZkVzUwT2lJdVkyOXVZMkYwS0c4dVkyOTFiblFwTENKeVpYUnllVjloWm5SbGNqb2lMbU52Ym1OaGRDaHZMbXhoYzNSR1lXbHNkWEpsVTNSaGRIVnpLU2s3ZG1GeUlHTTlXeUprWkhOdmRYSmpaVDFpY205M2MyVnlJaXdpWkdSMFlXZHpQU0l1WTI5dVkyRjBLR1Z1WTI5a1pWVlNTVU52YlhCdmJtVnVkQ2h3TG1wdmFXNG9JaXdpS1NrcExDSmtaQzFoY0drdGEyVjVQU0l1WTI5dVkyRjBLR1FwTENKa1pDMWxkbkF0YjNKcFoybHVMWFpsY25OcGIyNDlJaTVqYjI1allYUW9aVzVqYjJSbFZWSkpRMjl0Y0c5dVpXNTBLQ0kxTGpJNUxqRWlLU2tzSW1Sa0xXVjJjQzF2Y21sbmFXNDlZbkp2ZDNObGNpSXNJbVJrTFhKbGNYVmxjM1F0YVdROUlpNWpiMjVqWVhRb2IyVW9LU2xkTzNKbGRIVnliaUJmSmlaakxuQjFjMmdvSW1Sa0xXVjJjQzFsYm1OdlpHbHVaejBpTG1OdmJtTmhkQ2hmS1Nrc2NqMDlQU0p5ZFcwaUppWmpMbkIxYzJnb0ltSmhkR05vWDNScGJXVTlJaTVqYjI1allYUW9VU2dwS1Nrc2FDWW1ZeTV5WlhabGNuTmxLQ2tzWXk1cWIybHVLQ0ltSWlsOWRtRnlJR1p1UFRJd01EdG1kVzVqZEdsdmJpQnNiaWh1S1h0MllYSWdjajF1TG1WdWRpeGhQVzR1YzJWeWRtbGpaU3h6UFc0dWRtVnljMmx2Yml4c1BXNHVaR0YwWVdObGJuUmxjaXhrUFZ0ZE8zSmxkSFZ5YmlCeUppWmtMbkIxYzJnb1dHVW9JbVZ1ZGlJc2Npa3BMR0VtSm1RdWNIVnphQ2hZWlNnaWMyVnlkbWxqWlNJc1lTa3BMSE1tSm1RdWNIVnphQ2hZWlNnaWRtVnljMmx2YmlJc2N5a3BMR3dtSm1RdWNIVnphQ2hZWlNnaVpHRjBZV05sYm5SbGNpSXNiQ2twTEdSOVpuVnVZM1JwYjI0Z1dHVW9iaXh5S1h0MllYSWdZVDFtYmkxdUxteGxibWQwYUMweE95aHlMbXhsYm1kMGFENWhmSHgxYmloeUtTa21Kbm91ZDJGeWJpZ2lJaTVqYjI1allYUW9iaXdpSUhaaGJIVmxJR1J2WlhOdUozUWdiV1ZsZENCMFlXY2djbVZ4ZFdseVpXMWxiblJ6SUdGdVpDQjNhV3hzSUdKbElITmhibWwwYVhwbFpDNGdJaWt1WTI5dVkyRjBLRVJsTENJZ0lpa3VZMjl1WTJGMEtHUjBMQ0l2WjJWMGRHbHVaMTl6ZEdGeWRHVmtMM1JoWjJkcGJtY3ZJMlJsWm1sdWFXNW5MWFJoWjNNaUtTazdkbUZ5SUhNOWNpNXlaWEJzWVdObEtDOHNMMmNzSWw4aUtUdHlaWFIxY200aUlpNWpiMjVqWVhRb2Jpd2lPaUlwTG1OdmJtTmhkQ2h6S1gxbWRXNWpkR2x2YmlCMWJpaHVLWHR5WlhSMWNtNGdaRzRvS1Q5dVpYY2dVbVZuUlhod0tDSmJYbHhjY0h0TWJIMWNYSEI3VEc5OU1DMDVYem91THkxZElpd2lkU0lwTG5SbGMzUW9iaWs2SVRGOVpuVnVZM1JwYjI0Z1pHNG9LWHQwY25sN2NtVjBkWEp1SUc1bGR5QlNaV2RGZUhBb0lsdGNYSEI3VEd4OVhTSXNJblVpS1N3aE1IMWpZWFJqYUh0eVpYUjFjbTRoTVgxOVpuVnVZM1JwYjI0Z2FHNG9iaWw3ZG1GeUlISTliaTV6YVhSbGZIeGtaU3hoUFd4dUtHNHBMSE05WTI0b2JpeGhLU3hzUFY5dUtITXNjaWtzWkQxd2JpaHVMR3dzWVNrN2NtVjBkWEp1SUU4b2UybHpTVzUwWVd0bFZYSnNPbVoxYm1OMGFXOXVLR2dwZTNKbGRIVnliaUJzTG5OdmJXVW9ablZ1WTNScGIyNG9ieWw3Y21WMGRYSnVJR2d1YVc1a1pYaFBaaWh2S1QwOVBUQjlLWDBzY21Wd2JHbGpZVHBrTEhOcGRHVTZjbjBzY3lsOVpuVnVZM1JwYjI0Z1kyNG9iaXh5S1h0eVpYUjFjbTU3Ykc5bmMwVnVaSEJ2YVc1MFFuVnBiR1JsY2pwclpTaHVMQ0pzYjJkeklpeHlLU3h5ZFcxRmJtUndiMmx1ZEVKMWFXeGtaWEk2YTJVb2Jpd2ljblZ0SWl4eUtTeHpaWE56YVc5dVVtVndiR0Y1Ulc1a2NHOXBiblJDZFdsc1pHVnlPbXRsS0c0c0luSmxjR3hoZVNJc2NpbDlmV1oxYm1OMGFXOXVJSEJ1S0c0c2NpeGhLWHRwWmlodUxuSmxjR3hwWTJFcGUzWmhjaUJ6UFU4b2UzMHNiaXg3YzJsMFpUcGtaU3hqYkdsbGJuUlViMnRsYmpwdUxuSmxjR3hwWTJFdVkyeHBaVzUwVkc5clpXNTlLU3hzUFh0c2IyZHpSVzVrY0c5cGJuUkNkV2xzWkdWeU9tdGxLSE1zSW14dlozTWlMR0VwTEhKMWJVVnVaSEJ2YVc1MFFuVnBiR1JsY2pwclpTaHpMQ0p5ZFcwaUxHRXBmVHR5WlhSMWNtNGdjaTV3ZFhOb0xtRndjR3g1S0hJc2JXVW9iQ2t1YldGd0tHWjFibU4wYVc5dUtHUXBlM0psZEhWeWJpQmtMblZ5YkZCeVpXWnBlSDBwS1N4UEtIdGhjSEJzYVdOaGRHbHZia2xrT200dWNtVndiR2xqWVM1aGNIQnNhV05oZEdsdmJrbGtmU3hzS1gxOVpuVnVZM1JwYjI0Z1gyNG9iaXh5S1h0MllYSWdZVDF0WlNodUtTNXRZWEFvWm5WdVkzUnBiMjRvY3lsN2NtVjBkWEp1SUhNdWRYSnNVSEpsWm1sNGZTazdjbVYwZFhKdUlISTlQVDFrWlNZbVlTNXdkWE5vS0NKb2RIUndjem92THlJdVkyOXVZMkYwS0dOcExDSXZJaWtwTEdGOVpuVnVZM1JwYjI0Z1EzUW9iaXh5S1h0eVpYUjFjbTRnYmlFOWJuVnNiQ1ltZEhsd1pXOW1JRzRoUFNKemRISnBibWNpUHloNkxtVnljbTl5S0NJaUxtTnZibU5oZENoeUxDSWdiWFZ6ZENCaVpTQmtaV1pwYm1Wa0lHRnpJR0VnYzNSeWFXNW5JaWtwTENFeEtUb2hNSDFtZFc1amRHbHZiaUIyYmlodUtYdHlaWFIxY200Z2JpWW1kSGx3Wlc5bUlHNDlQU0p6ZEhKcGJtY2lKaVloTHloa1lYUmhaRzluZkdSa2IyZDhaR0YwWVdRd1ozeGtaREJuS1M4dWRHVnpkQ2h1S1Q4b2VpNWxjbkp2Y2lnaVUybDBaU0J6YUc5MWJHUWdZbVVnWVNCMllXeHBaQ0JFWVhSaFpHOW5JSE5wZEdVdUlDSXVZMjl1WTJGMEtFUmxMQ0lnSWlrdVkyOXVZMkYwS0dSMExDSXZaMlYwZEdsdVoxOXpkR0Z5ZEdWa0wzTnBkR1V2TGlJcEtTd2hNU2s2SVRCOVpuVnVZM1JwYjI0Z1NtVW9iaXh5S1h0eVpYUjFjbTRnYmlFOVBYWnZhV1FnTUNZbUlXNXlLRzRwUHloNkxtVnljbTl5S0NJaUxtTnZibU5oZENoeUxDSWdVMkZ0Y0d4bElGSmhkR1VnYzJodmRXeGtJR0psSUdFZ2JuVnRZbVZ5SUdKbGRIZGxaVzRnTUNCaGJtUWdNVEF3SWlrcExDRXhLVG9oTUgxbWRXNWpkR2x2YmlCbmJpaHVLWHQyWVhJZ2NpeGhMSE1zYkN4a08ybG1LQ0Z1Zkh3aGJpNWpiR2xsYm5SVWIydGxiaWw3ZWk1bGNuSnZjaWdpUTJ4cFpXNTBJRlJ2YTJWdUlHbHpJRzV2ZENCamIyNW1hV2QxY21Wa0xDQjNaU0IzYVd4c0lHNXZkQ0J6Wlc1a0lHRnVlU0JrWVhSaExpSXBPM0psZEhWeWJuMXBaaWdoS0NGMmJpaHVMbk5wZEdVcGZId2hTbVVvYmk1elpYTnphVzl1VTJGdGNHeGxVbUYwWlN3aVUyVnpjMmx2YmlJcGZId2hTbVVvYmk1MFpXeGxiV1YwY25sVFlXMXdiR1ZTWVhSbExDSlVaV3hsYldWMGNua2lLWHg4SVVwbEtHNHVkR1ZzWlcxbGRISjVRMjl1Wm1sbmRYSmhkR2x2YmxOaGJYQnNaVkpoZEdVc0lsUmxiR1Z0WlhSeWVTQkRiMjVtYVdkMWNtRjBhVzl1SWlsOGZDRktaU2h1TG5SbGJHVnRaWFJ5ZVZWellXZGxVMkZ0Y0d4bFVtRjBaU3dpVkdWc1pXMWxkSEo1SUZWellXZGxJaWw4ZkNGRGRDaHVMblpsY25OcGIyNHNJbFpsY25OcGIyNGlLWHg4SVVOMEtHNHVaVzUyTENKRmJuWWlLWHg4SVVOMEtHNHVjMlZ5ZG1salpTd2lVMlZ5ZG1salpTSXBLU2w3YVdZb2JpNTBjbUZqYTJsdVowTnZibk5sYm5RaFBUMTJiMmxrSURBbUppRktkQ2hGZEN4dUxuUnlZV05yYVc1blEyOXVjMlZ1ZENrcGUzb3VaWEp5YjNJb0oxUnlZV05yYVc1bklFTnZibk5sYm5RZ2MyaHZkV3hrSUdKbElHVnBkR2hsY2lBaVozSmhiblJsWkNJZ2IzSWdJbTV2ZEMxbmNtRnVkR1ZrSWljcE8zSmxkSFZ5Ym4xeVpYUjFjbTRnVHloN1ltVm1iM0psVTJWdVpEcHVMbUpsWm05eVpWTmxibVFtSm5GMEtHNHVZbVZtYjNKbFUyVnVaQ3dpWW1WbWIzSmxVMlZ1WkNCMGFISmxkeUJoYmlCbGNuSnZjam9pS1N4elpYTnphVzl1VTNSdmNtVlRkSEpoZEdWbmVWUjVjR1U2U25Jb2Jpa3NjMlZ6YzJsdmJsTmhiWEJzWlZKaGRHVTZLSEk5Ymk1elpYTnphVzl1VTJGdGNHeGxVbUYwWlNraFBUMXVkV3hzSmlaeUlUMDlkbTlwWkNBd1AzSTZNVEF3TEhSbGJHVnRaWFJ5ZVZOaGJYQnNaVkpoZEdVNktHRTliaTUwWld4bGJXVjBjbmxUWVcxd2JHVlNZWFJsS1NFOVBXNTFiR3dtSm1FaFBUMTJiMmxrSURBL1lUb3lNQ3gwWld4bGJXVjBjbmxEYjI1bWFXZDFjbUYwYVc5dVUyRnRjR3hsVW1GMFpUb29jejF1TG5SbGJHVnRaWFJ5ZVVOdmJtWnBaM1Z5WVhScGIyNVRZVzF3YkdWU1lYUmxLU0U5UFc1MWJHd21Kbk1oUFQxMmIybGtJREEvY3pvMUxIUmxiR1Z0WlhSeWVWVnpZV2RsVTJGdGNHeGxVbUYwWlRvb2JEMXVMblJsYkdWdFpYUnllVlZ6WVdkbFUyRnRjR3hsVW1GMFpTa2hQVDF1ZFd4c0ppWnNJVDA5ZG05cFpDQXdQMnc2TlN4elpYSjJhV05sT200dWMyVnlkbWxqWlh4OGRtOXBaQ0F3TEhOcGJHVnVkRTExYkhScGNHeGxTVzVwZERvaElXNHVjMmxzWlc1MFRYVnNkR2x3YkdWSmJtbDBMR0ZzYkc5M1ZXNTBjblZ6ZEdWa1JYWmxiblJ6T2lFaGJpNWhiR3h2ZDFWdWRISjFjM1JsWkVWMlpXNTBjeXgwY21GamEybHVaME52Ym5ObGJuUTZLR1E5Ymk1MGNtRmphMmx1WjBOdmJuTmxiblFwSVQwOWJuVnNiQ1ltWkNFOVBYWnZhV1FnTUQ5a09rVjBMa2RTUVU1VVJVUXNjM1J2Y21WRGIyNTBaWGgwYzBGamNtOXpjMUJoWjJWek9pRWhiaTV6ZEc5eVpVTnZiblJsZUhSelFXTnliM056VUdGblpYTXNZbUYwWTJoQ2VYUmxjMHhwYldsME9qRTJLbGdzWlhabGJuUlNZWFJsVEdsdGFYUmxjbFJvY21WemFHOXNaRG96WlRNc2JXRjRWR1ZzWlcxbGRISjVSWFpsYm5SelVHVnlVR0ZuWlRveE5TeG1iSFZ6YUZScGJXVnZkWFE2TXpBcVZHVXNZbUYwWTJoTlpYTnpZV2RsYzB4cGJXbDBPalV3TEcxbGMzTmhaMlZDZVhSbGMweHBiV2wwT2pJMU5pcFlmU3hvYmlodUtTbDlmV1oxYm1OMGFXOXVJSGx1S0c0cGUzSmxkSFZ5Ym50elpYTnphVzl1WDNOaGJYQnNaVjl5WVhSbE9tNHVjMlZ6YzJsdmJsTmhiWEJzWlZKaGRHVXNkR1ZzWlcxbGRISjVYM05oYlhCc1pWOXlZWFJsT200dWRHVnNaVzFsZEhKNVUyRnRjR3hsVW1GMFpTeDBaV3hsYldWMGNubGZZMjl1Wm1sbmRYSmhkR2x2Ymw5ellXMXdiR1ZmY21GMFpUcHVMblJsYkdWdFpYUnllVU52Ym1acFozVnlZWFJwYjI1VFlXMXdiR1ZTWVhSbExIUmxiR1Z0WlhSeWVWOTFjMkZuWlY5ellXMXdiR1ZmY21GMFpUcHVMblJsYkdWdFpYUnllVlZ6WVdkbFUyRnRjR3hsVW1GMFpTeDFjMlZmWW1WbWIzSmxYM05sYm1RNklTRnVMbUpsWm05eVpWTmxibVFzZFhObFgyTnliM056WDNOcGRHVmZjMlZ6YzJsdmJsOWpiMjlyYVdVNmJpNTFjMlZEY205emMxTnBkR1ZUWlhOemFXOXVRMjl2YTJsbExIVnpaVjl3WVhKMGFYUnBiMjVsWkY5amNtOXpjMTl6YVhSbFgzTmxjM05wYjI1ZlkyOXZhMmxsT200dWRYTmxVR0Z5ZEdsMGFXOXVaV1JEY205emMxTnBkR1ZUWlhOemFXOXVRMjl2YTJsbExIVnpaVjl6WldOMWNtVmZjMlZ6YzJsdmJsOWpiMjlyYVdVNmJpNTFjMlZUWldOMWNtVlRaWE56YVc5dVEyOXZhMmxsTEhWelpWOXdjbTk0ZVRvaElXNHVjSEp2ZUhrc2MybHNaVzUwWDIxMWJIUnBjR3hsWDJsdWFYUTZiaTV6YVd4bGJuUk5kV3gwYVhCc1pVbHVhWFFzZEhKaFkydGZjMlZ6YzJsdmJsOWhZM0p2YzNOZmMzVmlaRzl0WVdsdWN6cHVMblJ5WVdOclUyVnpjMmx2YmtGamNtOXpjMU4xWW1SdmJXRnBibk1zWVd4c2IzZGZabUZzYkdKaFkydGZkRzlmYkc5allXeGZjM1J2Y21GblpUb2hJVzR1WVd4c2IzZEdZV3hzWW1GamExUnZURzlqWVd4VGRHOXlZV2RsTEhOMGIzSmxYMk52Ym5SbGVIUnpYMkZqY205emMxOXdZV2RsY3pvaElXNHVjM1J2Y21WRGIyNTBaWGgwYzBGamNtOXpjMUJoWjJWekxHRnNiRzkzWDNWdWRISjFjM1JsWkY5bGRtVnVkSE02SVNGdUxtRnNiRzkzVlc1MGNuVnpkR1ZrUlhabGJuUnpMSFJ5WVdOcmFXNW5YMk52Ym5ObGJuUTZiaTUwY21GamEybHVaME52Ym5ObGJuUjlmWFpoY2lCVWREc29ablZ1WTNScGIyNG9iaWw3Ymk1WFVrbFVRVUpNUlY5U1JWTlBWVkpEUlY5SFVrRlFTRkZNUFNKM2NtbDBZV0pzWlY5eVpYTnZkWEpqWlY5bmNtRndhSEZzSWl4dUxsSkZUVTlVUlY5RFQwNUdTVWRWVWtGVVNVOU9QU0p5WlcxdmRHVmZZMjl1Wm1sbmRYSmhkR2x2YmlJc2JpNVZVRVJCVkVWZlZrbEZWMTlPUVUxRlBTSjFjR1JoZEdWZmRtbGxkMTl1WVcxbElpeHVMa3hQVGtkZlFVNUpUVUZVU1U5T1gwWlNRVTFGUFNKc2IyNW5YMkZ1YVcxaGRHbHZibDltY21GdFpTSjlLU2hVZEh4OEtGUjBQWHQ5S1NrN2RtRnlJSEJwUFc1bGR5QlRaWFE3Wm5WdVkzUnBiMjRnYlc0b2JpbDdRWEp5WVhrdWFYTkJjbkpoZVNodUtTWW1ZbTRvYmk1bWFXeDBaWElvWm5WdVkzUnBiMjRvY2lsN2NtVjBkWEp1SUVwMEtGUjBMSElwZlNrcGZXWjFibU4wYVc5dUlHSnVLRzRwZTI0dVptOXlSV0ZqYUNobWRXNWpkR2x2YmloeUtYdHdhUzVoWkdRb2NpbDlLWDFtZFc1amRHbHZiaUJUYmlncGUzSmxkSFZ5YmlCd2FYMTJZWElnZW1VOUlqOGlPMloxYm1OMGFXOXVJRW9vYmlsN2RtRnlJSEk5VzEwc1lUMUpkQ2h1TENKemRHRmpheUlwTEhNOVUzUnlhVzVuS0c0cE8zSmxkSFZ5YmlCaEppWmZkQ2hoTEhNcEppWW9ZVDFoTG5Oc2FXTmxLSE11YkdWdVozUm9LU2tzWVNZbVlTNXpjR3hwZENoZ0NtQXBMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNG9iQ2w3ZG1GeUlHUTlkMjRvYkNsOGZFRnVLR3dwZkh4VWJpaHNLWHg4Um00b2JDazdaQ1ltS0NGa0xtWjFibU1tSm1RdWJHbHVaU1ltS0dRdVpuVnVZejE2WlNrc2NpNXdkWE5vS0dRcEtYMHBMSHR0WlhOellXZGxPa2wwS0c0c0ltMWxjM05oWjJVaUtTeHVZVzFsT2tsMEtHNHNJbTVoYldVaUtTeHpkR0ZqYXpweWZYMTJZWElnWDJrOUlpZ29QenBtYVd4bGZHaDBkSEJ6UDN4aWJHOWlmR05vY205dFpTMWxlSFJsYm5OcGIyNThibUYwYVhabGZHVjJZV3g4ZDJWaWNHRmphM3h6Ym1sd2NHVjBmRHhoYm05dWVXMXZkWE0rZkZ4Y2R5dGNYQzU4WEZ3dktTNHFQeWtpTEZWbFBTSW9Qem82S0Z4Y1pDc3BLU0lzZUc0OWJtVjNJRkpsWjBWNGNDZ2lYbHhjY3lwaGRDQW9MaW8vS1NBL1hGd29JaTVqYjI1allYUW9YMmtwTG1OdmJtTmhkQ2hWWlN3aVB5SXBMbU52Ym1OaGRDaFZaU3dpUDF4Y0tUOWNYSE1xSkNJcExDSnBJaWtzVlc0OWJtVjNJRkpsWjBWNGNDZ2lYRndvS0Z4Y1V5b3BJaTVqYjI1allYUW9WV1VwTG1OdmJtTmhkQ2hWWlN3aVhGd3BJaWtwTzJaMWJtTjBhVzl1SUhkdUtHNHBlM1poY2lCeVBYaHVMbVY0WldNb2JpazdhV1lvY2lsN2RtRnlJR0U5Y2xzeVhTWW1jbHN5WFM1cGJtUmxlRTltS0NKdVlYUnBkbVVpS1QwOVBUQXNjejF5V3pKZEppWnlXekpkTG1sdVpHVjRUMllvSW1WMllXd2lLVDA5UFRBc2JEMVZiaTVsZUdWaktISmJNbDBwTzNKbGRIVnliaUJ6Smlac0ppWW9jbHN5WFQxc1d6RmRMSEpiTTEwOWJGc3lYU3h5V3pSZFBXeGJNMTBwTEh0aGNtZHpPbUUvVzNKYk1sMWRPbHRkTEdOdmJIVnRianB5V3pSZFB5dHlXelJkT25admFXUWdNQ3htZFc1ak9uSmJNVjE4ZkhwbExHeHBibVU2Y2xzelhUOHJjbHN6WFRwMmIybGtJREFzZFhKc09tRS9kbTlwWkNBd09uSmJNbDE5ZlgxMllYSWdSVzQ5Ym1WM0lGSmxaMFY0Y0NnaVhseGNjeXBoZENBL0lpNWpiMjVqWVhRb1gya3BMbU52Ym1OaGRDaFZaU3dpUHlJcExtTnZibU5oZENoVlpTd2lQejljWEhNcUpDSXBMQ0pwSWlrN1puVnVZM1JwYjI0Z1FXNG9iaWw3ZG1GeUlISTlSVzR1WlhobFl5aHVLVHRwWmloeUtYSmxkSFZ5Ym50aGNtZHpPbHRkTEdOdmJIVnRianB5V3pOZFB5dHlXek5kT25admFXUWdNQ3htZFc1ak9ucGxMR3hwYm1VNmNsc3lYVDhyY2xzeVhUcDJiMmxrSURBc2RYSnNPbkpiTVYxOWZYWmhjaUJEYmowdlhseHpLbUYwSUNnL09pZ29QenBjVzI5aWFtVmpkQ0J2WW1wbFkzUmNYU2svTGlzcElDay9YQ2cvS0NnL09tWnBiR1Y4YlhNdFlYQndlSHhvZEhSd2N6OThkMlZpY0dGamEzeGliRzlpS1RvdUtqOHBPaWhjWkNzcEtEODZPaWhjWkNzcEtUOWNLVDljY3lva0wyazdablZ1WTNScGIyNGdWRzRvYmlsN2RtRnlJSEk5UTI0dVpYaGxZeWh1S1R0cFppaHlLWEpsZEhWeWJudGhjbWR6T2x0ZExHTnZiSFZ0YmpweVd6UmRQeXR5V3pSZE9uWnZhV1FnTUN4bWRXNWpPbkpiTVYxOGZIcGxMR3hwYm1VNkszSmJNMTBzZFhKc09uSmJNbDE5ZlhaaGNpQkpiajB2WGx4ektpZ3VLajhwS0Q4NlhDZ29MaW8vS1Z3cEtUOG9QenBlZkVBcEtDZy9PbVpwYkdWOGFIUjBjSE0vZkdKc2IySjhZMmh5YjIxbGZIZGxZbkJoWTJ0OGNtVnpiM1Z5WTJWOFkyRndZV05wZEc5eWZGeGJibUYwYVhabEtTNHFQM3hiWGtCZEttSjFibVJzWlNrb1B6bzZLRnhrS3lrcFB5Zy9Pam9vWEdRcktTay9YSE1xSkM5cExFSnVQUzhvWEZNcktTQnNhVzVsSUNoY1pDc3BLRDg2SUQ0Z1pYWmhiQ0JzYVc1bElGeGtLeWtxSUQ0Z1pYWmhiQzlwTzJaMWJtTjBhVzl1SUVadUtHNHBlM1poY2lCeVBVbHVMbVY0WldNb2JpazdhV1lvY2lsN2RtRnlJR0U5Y2xzelhTWW1jbHN6WFM1cGJtUmxlRTltS0NJZ1BpQmxkbUZzSWlrK0xURXNjejFDYmk1bGVHVmpLSEpiTTEwcE8zSmxkSFZ5YmlCaEppWnpKaVlvY2xzelhUMXpXekZkTEhKYk5GMDljMXN5WFN4eVd6VmRQWFp2YVdRZ01Da3NlMkZ5WjNNNmNsc3lYVDl5V3pKZExuTndiR2wwS0NJc0lpazZXMTBzWTI5c2RXMXVPbkpiTlYwL0szSmJOVjA2ZG05cFpDQXdMR1oxYm1NNmNsc3hYWHg4ZW1Vc2JHbHVaVHB5V3pSZFB5dHlXelJkT25admFXUWdNQ3gxY213NmNsc3pYWDE5ZldaMWJtTjBhVzl1SUVsMEtHNHNjaWw3YVdZb0lTaDBlWEJsYjJZZ2JpRTlJbTlpYW1WamRDSjhmQ0Z1Zkh3aEtISWdhVzRnYmlrcEtYdDJZWElnWVQxdVczSmRPM0psZEhWeWJpQjBlWEJsYjJZZ1lUMDlJbk4wY21sdVp5SS9ZVHAyYjJsa0lEQjlmV1oxYm1OMGFXOXVJRXh1S0c0c2NpeGhMSE1wZTNaaGNpQnNQVnQ3ZFhKc09uSXNZMjlzZFcxdU9uTXNiR2x1WlRwaGZWMHNaRDE2YmlodUtTeG9QV1F1Ym1GdFpTeHZQV1F1YldWemMyRm5aVHR5WlhSMWNtNTdibUZ0WlRwb0xHMWxjM05oWjJVNmJ5eHpkR0ZqYXpwc2ZYMTJZWElnYTI0OUwxNG9QenBiVlhWZGJtTmhkV2RvZENBb1B6cGxlR05sY0hScGIyNDZJQ2svS1Q4b1B6b29LRDg2UlhaaGJIeEpiblJsY201aGJIeFNZVzVuWlh4U1pXWmxjbVZ1WTJWOFUzbHVkR0Y0ZkZSNWNHVjhWVkpKZkNsRmNuSnZjaWs2SUNrL0tGdGNjMXhUWFNvcEpDODdablZ1WTNScGIyNGdlbTRvYmlsN2RtRnlJSElzWVN4ek8zSmxkSFZ5Ym50OUxuUnZVM1J5YVc1bkxtTmhiR3dvYmlrOVBUMGlXMjlpYW1WamRDQlRkSEpwYm1kZElpWW1LSEk5YTI0dVpYaGxZeWh1S1N4aFBYSmJNVjBzY3oxeVd6SmRLU3g3Ym1GdFpUcGhMRzFsYzNOaFoyVTZjMzE5Wm5WdVkzUnBiMjRnSkdVb0tYdDJZWElnYmoweUxISTlibVYzSUVWeWNtOXlMR0U3YVdZb0lYSXVjM1JoWTJzcGRISjVlM1JvY205M0lISjlZMkYwWTJoN2ZYSmxkSFZ5YmlCQ1pTaG1kVzVqZEdsdmJpZ3BlM1poY2lCelBVb29jaWs3Y3k1emRHRmphejF6TG5OMFlXTnJMbk5zYVdObEtHNHBMR0U5YUdVb2N5bDlLU3hoZldaMWJtTjBhVzl1SUdobEtHNHBlM1poY2lCeVBYWnBLRzRwTzNKbGRIVnliaUJ1TG5OMFlXTnJMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNG9ZU2w3ZG1GeUlITTlZUzVtZFc1alBUMDlJajhpUHlJOFlXNXZibmx0YjNWelBpSTZZUzVtZFc1akxHdzlZUzVoY21kekppWmhMbUZ5WjNNdWJHVnVaM1JvUGpBL0lpZ2lMbU52Ym1OaGRDaGhMbUZ5WjNNdWFtOXBiaWdpTENBaUtTd2lLU0lwT2lJaUxHUTlZUzVzYVc1bFB5STZJaTVqYjI1allYUW9ZUzVzYVc1bEtUb2lJaXhvUFdFdWJHbHVaU1ltWVM1amIyeDFiVzQvSWpvaUxtTnZibU5oZENoaExtTnZiSFZ0YmlrNklpSTdjaXM5WUFvZ0lHRjBJR0F1WTI5dVkyRjBLSE1wTG1OdmJtTmhkQ2hzTENJZ1FDQWlLUzVqYjI1allYUW9ZUzUxY213cExtTnZibU5oZENoa0tTNWpiMjVqWVhRb2FDbDlLU3h5ZldaMWJtTjBhVzl1SUhacEtHNHBlM0psZEhWeWJpSWlMbU52Ym1OaGRDaHVMbTVoYldWOGZDSkZjbkp2Y2lJc0lqb2dJaWt1WTI5dVkyRjBLRzR1YldWemMyRm5aU2w5Wm5WdVkzUnBiMjRnWTJVb2JpeHlMR0VzY3lsN2RtRnlJR3c5Y3owOVBYWnZhV1FnTUQ5N2ZUcHpMR1E5YkM1amIyMXdkWFJsU0dGdVpHeHBibWRUZEdGamF5eG9QVzViY2wwN2FXWW9kSGx3Wlc5bUlHZ2hQU0ptZFc1amRHbHZiaUlwYVdZb2NpQnBiaUJ1SmlaZmRDaHlMQ0p2YmlJcEtXZzlhV1U3Wld4elpTQnlaWFIxY201N2MzUnZjRHBwWlgwN2RtRnlJRzg5SVRFc1h6MW1kVzVqZEdsdmJpZ3BlMmxtS0c4cGNtVjBkWEp1SUdndVlYQndiSGtvZEdocGN5eGhjbWQxYldWdWRITXBPM1poY2lCd1BYQjBLR0Z5WjNWdFpXNTBjeWtzWXp0Q1pTaGhMRzUxYkd3c1czdDBZWEpuWlhRNmRHaHBjeXh3WVhKaGJXVjBaWEp6T25Bc2IyNVFiM04wUTJGc2JEcG1kVzVqZEdsdmJpaGxLWHRqUFdWOUxHaGhibVJzYVc1blUzUmhZMnM2WkQ4a1pTZ3BPblp2YVdRZ01IMWRLVHQyWVhJZ1p6MW9MbUZ3Y0d4NUtIUm9hWE1zY0NrN2NtVjBkWEp1SUdNbUprSmxLR01zYm5Wc2JDeGJaMTBwTEdkOU8zSmxkSFZ5YmlCdVczSmRQVjhzZTNOMGIzQTZablZ1WTNScGIyNG9LWHR2UFNFd0xHNWJjbDA5UFQxZkppWW9ibHR5WFQxb0tYMTlmWFpoY2lCU2JqMHlNakFxV0N4UGJqMGlKQ0lzVUc0OU16dG1kVzVqZEdsdmJpQWtLRzRzY2lsN2NqMDlQWFp2YVdRZ01DWW1LSEk5VW00cE8zWmhjaUJoUFhobEtFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVcExITTllR1VvUVhKeVlYa3VjSEp2ZEc5MGVYQmxLU3hzUFZ0ZExHUTlibVYzSUZkbFlXdE5ZWEFzYUQxQ2RDaHVMRTl1TEhadmFXUWdNQ3hzTEdRcExHODlTbE5QVGk1emRISnBibWRwWm5rb2FDa3NYejF2UDI4dWJHVnVaM1JvT2pBN2FXWW9YejV5S1h0R2RDaHlMQ0prYVhOallYSmtaV1FpTEc0cE8zSmxkSFZ5Ym4xbWIzSW9PMnd1YkdWdVozUm9QakFtSmw4OGNqc3BlM1poY2lCd1BXd3VjMmhwWm5Rb0tTeGpQVEE3YVdZb1FYSnlZWGt1YVhOQmNuSmhlU2h3TG5OdmRYSmpaU2twWm05eUtIWmhjaUJuUFRBN1p6eHdMbk52ZFhKalpTNXNaVzVuZEdnN1p5c3JLWHQyWVhJZ1pUMUNkQ2h3TG5OdmRYSmpaVnRuWFN4d0xuQmhkR2dzWnl4c0xHUXBPMmxtS0dVaFBUMTJiMmxrSURBL1h5czlTbE5QVGk1emRISnBibWRwWm5rb1pTa3ViR1Z1WjNSb09sOHJQVFFzWHlzOVl5eGpQVEVzWHo1eUtYdEdkQ2h5TENKMGNuVnVZMkYwWldRaUxHNHBPMkp5WldGcmZYQXVkR0Z5WjJWMFcyZGRQV1Y5Wld4elpTQm1iM0lvZG1GeUlHY2dhVzRnY0M1emIzVnlZMlVwYVdZb1QySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tIQXVjMjkxY21ObExHY3BLWHQyWVhJZ1pUMUNkQ2h3TG5OdmRYSmpaVnRuWFN4d0xuQmhkR2dzWnl4c0xHUXBPMmxtS0dVaFBUMTJiMmxrSURBbUppaGZLejFLVTA5T0xuTjBjbWx1WjJsbWVTaGxLUzVzWlc1bmRHZ3JZeXRuTG14bGJtZDBhQ3RRYml4alBURXBMRjgrY2lsN1JuUW9jaXdpZEhKMWJtTmhkR1ZrSWl4dUtUdGljbVZoYTMxd0xuUmhjbWRsZEZ0blhUMWxmWDF5WlhSMWNtNGdZU2dwTEhNb0tTeG9mV1oxYm1OMGFXOXVJRUowS0c0c2NpeGhMSE1zYkNsN2RtRnlJR1E5VFc0b2JpazdhV1lvSVdSOGZIUjVjR1Z2WmlCa0lUMGliMkpxWldOMElpbHlaWFIxY200Z1JHNG9aQ2s3ZG1GeUlHZzlUbTRvWkNrN2FXWW9hQ0U5UFNKYlQySnFaV04wWFNJbUptZ2hQVDBpVzBGeWNtRjVYU0ltSm1naFBUMGlXMFZ5Y205eVhTSXBjbVYwZFhKdUlHZzdkbUZ5SUc4OWJqdHBaaWhzTG1oaGN5aHZLU2x5WlhSMWNtNGlXMUpsWm1WeVpXNWpaU0J6WldWdUlHRjBJQ0l1WTI5dVkyRjBLR3d1WjJWMEtHOHBMQ0pkSWlrN2RtRnlJRjg5WVNFOVBYWnZhV1FnTUQ4aUlpNWpiMjVqWVhRb2Npd2lMaUlwTG1OdmJtTmhkQ2hoS1RweUxIQTlRWEp5WVhrdWFYTkJjbkpoZVNoa0tUOWJYVHA3ZlR0eVpYUjFjbTRnYkM1elpYUW9ieXhmS1N4ekxuQjFjMmdvZTNOdmRYSmpaVHBrTEhSaGNtZGxkRHB3TEhCaGRHZzZYMzBwTEhCOVpuVnVZM1JwYjI0Z1JHNG9iaWw3Y21WMGRYSnVJSFI1Y0dWdlppQnVQVDBpWW1sbmFXNTBJajhpVzBKcFowbHVkRjBnSWk1amIyNWpZWFFvYmk1MGIxTjBjbWx1WnlncEtUcDBlWEJsYjJZZ2JqMDlJbVoxYm1OMGFXOXVJajhpVzBaMWJtTjBhVzl1WFNBaUxtTnZibU5oZENodUxtNWhiV1Y4ZkNKMWJtdHViM2R1SWlrNmRIbHdaVzltSUc0OVBTSnplVzFpYjJ3aVB5SmJVM2x0WW05c1hTQWlMbU52Ym1OaGRDaHVMbVJsYzJOeWFYQjBhVzl1Zkh4dUxuUnZVM1J5YVc1bktDa3BPbTU5Wm5WdVkzUnBiMjRnVG00b2JpbDdkSEo1ZTJsbUtHNGdhVzV6ZEdGdVkyVnZaaUJGZG1WdWRDbHlaWFIxY201N2FYTlVjblZ6ZEdWa09tNHVhWE5VY25WemRHVmtmVHQyWVhJZ2NqMVBZbXBsWTNRdWNISnZkRzkwZVhCbExuUnZVM1J5YVc1bkxtTmhiR3dvYmlrc1lUMXlMbTFoZEdOb0tDOWNXMjlpYW1WamRDQW9MaW9wWEYwdktUdHBaaWhoSmlaaFd6RmRLWEpsZEhWeWJpSmJJaTVqYjI1allYUW9ZVnN4WFN3aVhTSXBmV05oZEdOb2UzMXlaWFIxY200aVcxVnVjMlZ5YVdGc2FYcGhZbXhsWFNKOVpuVnVZM1JwYjI0Z1RXNG9iaWw3ZG1GeUlISTlianRwWmloeUppWjBlWEJsYjJZZ2NpNTBiMHBUVDA0OVBTSm1kVzVqZEdsdmJpSXBkSEo1ZTNKbGRIVnliaUJ5TG5SdlNsTlBUaWdwZldOaGRHTm9lMzF5WlhSMWNtNGdibjFtZFc1amRHbHZiaUJHZENodUxISXNZU2w3ZWk1M1lYSnVLQ0pVYUdVZ1pHRjBZU0J3Y205MmFXUmxaQ0JvWVhNZ1ltVmxiaUFpTG1OdmJtTmhkQ2h5TENJZ1lYTWdhWFFnYVhNZ2IzWmxjaUIwYUdVZ2JHbHRhWFFnYjJZZ0lpa3VZMjl1WTJGMEtHNHNJaUJqYUdGeVlXTjBaWEp6T2lJcExHRXBmWFpoY2lCbmFUMGlUbThnYzNSaFkyc3NJR052Ym5OcFpHVnlJSFZ6YVc1bklHRnVJR2x1YzNSaGJtTmxJRzltSUVWeWNtOXlJanRtZFc1amRHbHZiaUI1YVNodUtYdDJZWElnY2oxdUxuTjBZV05yVkhKaFkyVXNZVDF1TG05eWFXZHBibUZzUlhKeWIzSXNjejF1TG1oaGJtUnNhVzVuVTNSaFkyc3NiRDF1TG5OMFlYSjBRMnh2WTJ0ekxHUTliaTV1YjI1RmNuSnZjbEJ5WldacGVDeG9QVzR1YzI5MWNtTmxMRzg5Ymk1b1lXNWtiR2x1Wnl4ZlBXRWdhVzV6ZEdGdVkyVnZaaUJGY25KdmNpeHdQVWR1S0hJc1h5eGtMR0VwTEdNOVNHNG9YeXh5S1Q5b1pTaHlLVHBuYVN4blBWOC9ZbWtvWVN4b0tUcDJiMmxrSURBc1pUMXlQM0l1Ym1GdFpUcDJiMmxrSURBc2REMXRhU2hoS1R0eVpYUjFjbTU3YzNSaGNuUkRiRzlqYTNNNmJDeHpiM1Z5WTJVNmFDeG9ZVzVrYkdsdVp6cHZMR2hoYm1Sc2FXNW5VM1JoWTJzNmN5eHZjbWxuYVc1aGJFVnljbTl5T21Fc2RIbHdaVHBsTEcxbGMzTmhaMlU2Y0N4emRHRmphenBqTEdOaGRYTmxjenBuTEdacGJtZGxjbkJ5YVc1ME9uUjlmV1oxYm1OMGFXOXVJRWR1S0c0c2NpeGhMSE1wZTNKbGRIVnliaUJ1SVQxdWRXeHNKaVp1TG0xbGMzTmhaMlVtSmlodUlUMXVkV3hzSmladUxtNWhiV1VwUDI0dWJXVnpjMkZuWlRweVB5SkZiWEIwZVNCdFpYTnpZV2RsSWpvaUlpNWpiMjVqWVhRb1lTd2lJQ0lwTG1OdmJtTmhkQ2gxWlNna0tITXBLU2w5Wm5WdVkzUnBiMjRnU0c0b2JpeHlLWHR5WlhSMWNtNGdjajA5UFhadmFXUWdNRDhoTVRwdVB5RXdPbkl1YzNSaFkyc3ViR1Z1WjNSb1BqQW1KaWh5TG5OMFlXTnJMbXhsYm1kMGFENHhmSHh5TG5OMFlXTnJXekJkTG5WeWJDRTlQWFp2YVdRZ01DbDlablZ1WTNScGIyNGdiV2tvYmlsN2NtVjBkWEp1SUc0Z2FXNXpkR0Z1WTJWdlppQkZjbkp2Y2lZbUltUmtYMlpwYm1kbGNuQnlhVzUwSW1sdUlHNC9VM1J5YVc1bktHNHVaR1JmWm1sdVoyVnljSEpwYm5RcE9uWnZhV1FnTUgxbWRXNWpkR2x2YmlCWmJpaHVLWHQyWVhJZ2NqdHlaWFIxY200b2NqMHZRQ0FvTGlzcEx5NWxlR1ZqS0c0cEtUMDlQVzUxYkd4OGZISTlQVDEyYjJsa0lEQS9kbTlwWkNBd09uSmJNVjE5Wm5WdVkzUnBiMjRnWW1rb2JpeHlLWHRtYjNJb2RtRnlJR0U5Yml4elBWdGRPeWhoUFQxdWRXeHNQM1p2YVdRZ01EcGhMbU5oZFhObEtXbHVjM1JoYm1ObGIyWWdSWEp5YjNJbUpuTXViR1Z1WjNSb1BERXdPeWw3ZG1GeUlHdzlTaWhoTG1OaGRYTmxLVHR6TG5CMWMyZ29lMjFsYzNOaFoyVTZZUzVqWVhWelpTNXRaWE56WVdkbExITnZkWEpqWlRweUxIUjVjR1U2YkQwOWJuVnNiRDkyYjJsa0lEQTZiQzV1WVcxbExITjBZV05yT213bUptaGxLR3dwZlNrc1lUMWhMbU5oZFhObGZYSmxkSFZ5YmlCekxteGxibWQwYUQ5ek9uWnZhV1FnTUgxMllYSWdTRDE3UVVkRlRsUTZJbUZuWlc1MElpeERUMDVUVDB4Rk9pSmpiMjV6YjJ4bElpeERWVk5VVDAwNkltTjFjM1J2YlNJc1RFOUhSMFZTT2lKc2IyZG5aWElpTEU1RlZGZFBVa3M2SW01bGRIZHZjbXNpTEZOUFZWSkRSVG9pYzI5MWNtTmxJaXhTUlZCUFVsUTZJbkpsY0c5eWRDSjlPMloxYm1OMGFXOXVJRlp1S0c0cGUzWmhjaUJ5UFdaMWJtTjBhVzl1S0d3c1pDbDdkbUZ5SUdnOWVXa29lM04wWVdOclZISmhZMlU2YkN4dmNtbG5hVzVoYkVWeWNtOXlPbVFzYzNSaGNuUkRiRzlqYTNNNlpXVW9LU3h1YjI1RmNuSnZjbEJ5WldacGVEb2lWVzVqWVhWbmFIUWlMSE52ZFhKalpUcElMbE5QVlZKRFJTeG9ZVzVrYkdsdVp6b2lkVzVvWVc1a2JHVmtJbjBwTzI0dWJtOTBhV1o1S0dncGZTeGhQV3B1S0hJcExuTjBiM0FzY3oxTGJpaHlLUzV6ZEc5d08zSmxkSFZ5Ym50emRHOXdPbVoxYm1OMGFXOXVLQ2w3WVNncExITW9LWDE5ZldaMWJtTjBhVzl1SUdwdUtHNHBlM0psZEhWeWJpQmpaU2gzYVc1a2IzY3NJbTl1WlhKeWIzSWlMR1oxYm1OMGFXOXVLSElwZTNaaGNpQmhQWEl1Y0dGeVlXMWxkR1Z5Y3l4elBXRmJNRjBzYkQxaFd6RmRMR1E5WVZzeVhTeG9QV0ZiTTEwc2J6MWhXelJkTEY4N2J5QnBibk4wWVc1alpXOW1JRVZ5Y205eVAxODlTaWh2S1RwZlBVeHVLSE1zYkN4a0xHZ3BMRzRvWHl4dlB6OXpLWDBwZldaMWJtTjBhVzl1SUV0dUtHNHBlM0psZEhWeWJpQmpaU2gzYVc1a2IzY3NJbTl1ZFc1b1lXNWtiR1ZrY21WcVpXTjBhVzl1SWl4bWRXNWpkR2x2YmloeUtYdDJZWElnWVQxeUxuQmhjbUZ0WlhSbGNuTmJNRjBzY3oxaExuSmxZWE52Ym54OElrVnRjSFI1SUhKbFlYTnZiaUlzYkQxS0tITXBPMjRvYkN4ektYMHBmV1oxYm1OMGFXOXVJSEZ1S0c0cGUzWmhjaUJ5UFU4b2UzWmxjbk5wYjI0NklqVXVNamt1TVNJc2IyNVNaV0ZrZVRwbWRXNWpkR2x2YmloaEtYdGhLQ2w5ZlN4dUtUdHlaWFIxY200Z1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLSElzSWw5elpYUkVaV0oxWnlJc2UyZGxkRHBtZFc1amRHbHZiaWdwZTNKbGRIVnliaUI1Y24wc1pXNTFiV1Z5WVdKc1pUb2hNWDBwTEhKOVpuVnVZM1JwYjI0Z1YyNG9iaXh5TEdFcGUzWmhjaUJ6UFc1YmNsMDdjeVltSVhNdWNTWW1jeTUyWlhKemFXOXVKaVo2TG5kaGNtNG9JbE5FU3lCcGN5QnNiMkZrWldRZ2JXOXlaU0IwYUdGdUlHOXVZMlV1SUZSb2FYTWdhWE1nZFc1emRYQndiM0owWldRZ1lXNWtJRzFwWjJoMElHaGhkbVVnZFc1bGVIQmxZM1JsWkNCaVpXaGhkbWx2Y2k0aUtTeHVXM0pkUFdFc2N5WW1jeTV4SmlaekxuRXVabTl5UldGamFDaG1kVzVqZEdsdmJpaHNLWHR5WlhSMWNtNGdjWFFvYkN3aWIyNVNaV0ZrZVNCallXeHNZbUZqYXlCMGFISmxkeUJoYmlCbGNuSnZjam9pS1NncGZTbDlablZ1WTNScGIyNGdVMmtvYml4eUtYdHlMbk5wYkdWdWRFMTFiSFJwY0d4bFNXNXBkSHg4ZWk1bGNuSnZjaWdpSWk1amIyNWpZWFFvYml3aUlHbHpJR0ZzY21WaFpIa2dhVzVwZEdsaGJHbDZaV1F1SWlrcGZXWjFibU4wYVc5dUlIQmxLRzRzY2l4aExITXNiQ2w3Y21WMGRYSnVJRXgwS0c0c2NpeGJZVjBzY3l4c0tYMW1kVzVqZEdsdmJpQk1kQ2h1TEhJc1lTeHpMR3dwZTNaaGNpQmtQV3c5UFQxMmIybGtJREEvZTMwNmJDeG9QV1F1YjI1alpTeHZQV1F1WTJGd2RIVnlaU3hmUFdRdWNHRnpjMmwyWlN4d1BVSW9ablZ1WTNScGIyNG9kQ2w3SVhRdWFYTlVjblZ6ZEdWa0ppWWhkQzVmWDJSa1NYTlVjblZ6ZEdWa0ppWWhiaTVoYkd4dmQxVnVkSEoxYzNSbFpFVjJaVzUwYzN4OEtHZ21KbVVvS1N4ektIUXBLWDBwTEdNOVh6OTdZMkZ3ZEhWeVpUcHZMSEJoYzNOcGRtVTZYMzA2Ynl4blBXSmxLSElzSW1Ga1pFVjJaVzUwVEdsemRHVnVaWElpS1R0aExtWnZja1ZoWTJnb1puVnVZM1JwYjI0b2RDbDdjbVYwZFhKdUlHY3VZMkZzYkNoeUxIUXNjQ3hqS1gwcE8yWjFibU4wYVc5dUlHVW9LWHQyWVhJZ2REMWlaU2h5TENKeVpXMXZkbVZGZG1WdWRFeHBjM1JsYm1WeUlpazdZUzVtYjNKRllXTm9LR1oxYm1OMGFXOXVLR2twZTNKbGRIVnliaUIwTG1OaGJHd29jaXhwTEhBc1l5bDlLWDF5WlhSMWNtNTdjM1J2Y0RwbGZYMTJZWElnV21VOWUybHVkR1Z5ZG1WdWRHbHZiam9pYVc1MFpYSjJaVzUwYVc5dUlpeGtaWEJ5WldOaGRHbHZiam9pWkdWd2NtVmpZWFJwYjI0aUxHTnpjRlpwYjJ4aGRHbHZiam9pWTNOd1gzWnBiMnhoZEdsdmJpSjlPMloxYm1OMGFXOXVJRmh1S0c0c2NpbDdkbUZ5SUdFOVcxMDdlV1VvY2l4YVpTNWpjM0JXYVc5c1lYUnBiMjRwSmlaaExuQjFjMmdvSkc0b2Jpa3BPM1poY2lCelBYSXVabWxzZEdWeUtHWjFibU4wYVc5dUtHd3BlM0psZEhWeWJpQnNJVDA5V21VdVkzTndWbWx2YkdGMGFXOXVmU2s3Y21WMGRYSnVJSE11YkdWdVozUm9KaVpoTG5CMWMyZ29TbTRvY3lrcExHVnBMbUZ3Y0d4NUtIWnZhV1FnTUN4aEtYMW1kVzVqZEdsdmJpQktiaWh1S1h0eVpYUjFjbTRnYm1WM0lGSW9ablZ1WTNScGIyNG9jaWw3YVdZb2QybHVaRzkzTGxKbGNHOXlkR2x1WjA5aWMyVnlkbVZ5S1h0MllYSWdZVDFDS0daMWJtTjBhVzl1S0d3c1pDbDdjbVYwZFhKdUlHd3VabTl5UldGamFDaG1kVzVqZEdsdmJpaG9LWHR5WlhSMWNtNGdjaTV1YjNScFpua29XbTRvYUNrcGZTbDlLU3h6UFc1bGR5QjNhVzVrYjNjdVVtVndiM0owYVc1blQySnpaWEoyWlhJb1lTeDdkSGx3WlhNNmJpeGlkV1ptWlhKbFpEb2hNSDBwTzNKbGRIVnliaUJ6TG05aWMyVnlkbVVvS1N4bWRXNWpkR2x2YmlncGUzTXVaR2x6WTI5dWJtVmpkQ2dwZlgxOUtYMW1kVzVqZEdsdmJpQWtiaWh1S1h0eVpYUjFjbTRnYm1WM0lGSW9ablZ1WTNScGIyNG9jaWw3ZG1GeUlHRTljR1VvYml4a2IyTjFiV1Z1ZEN3aWMyVmpkWEpwZEhsd2IyeHBZM2wyYVc5c1lYUnBiMjRpTEdaMWJtTjBhVzl1S0hNcGUzSXVibTkwYVdaNUtGRnVLSE1wS1gwcExuTjBiM0E3Y21WMGRYSnVJR0Y5S1gxbWRXNWpkR2x2YmlCYWJpaHVLWHQyWVhJZ2NqMXVMblI1Y0dVc1lUMXVMbUp2WkhrN2NtVjBkWEp1SUhocEtIdDBlWEJsT21FdWFXUXNiV1Z6YzJGblpUb2lJaTVqYjI1allYUW9jaXdpT2lBaUtTNWpiMjVqWVhRb1lTNXRaWE56WVdkbEtTeHZjbWxuYVc1aGJFVnljbTl5T200c2MzUmhZMnM2Vldrb1lTNXBaQ3hoTG0xbGMzTmhaMlVzWVM1emIzVnlZMlZHYVd4bExHRXViR2x1WlU1MWJXSmxjaXhoTG1OdmJIVnRiazUxYldKbGNpbDlLWDFtZFc1amRHbHZiaUJSYmlodUtYdDJZWElnY2owaUp5SXVZMjl1WTJGMEtHNHVZbXh2WTJ0bFpGVlNTU3dpSnlCaWJHOWphMlZrSUdKNUlDY2lLUzVqYjI1allYUW9iaTVsWm1abFkzUnBkbVZFYVhKbFkzUnBkbVVzSWljZ1pHbHlaV04wYVhabElpazdjbVYwZFhKdUlIaHBLSHQwZVhCbE9tNHVaV1ptWldOMGFYWmxSR2x5WldOMGFYWmxMRzFsYzNOaFoyVTZJaUl1WTI5dVkyRjBLRnBsTG1OemNGWnBiMnhoZEdsdmJpd2lPaUFpS1M1amIyNWpZWFFvY2lrc2IzSnBaMmx1WVd4RmNuSnZjanB1TEdOemNEcDdaR2x6Y0c5emFYUnBiMjQ2Ymk1a2FYTndiM05wZEdsdmJuMHNjM1JoWTJzNlZXa29iaTVsWm1abFkzUnBkbVZFYVhKbFkzUnBkbVVzYmk1dmNtbG5hVzVoYkZCdmJHbGplVDhpSWk1amIyNWpZWFFvY2l3bklHOW1JSFJvWlNCd2IyeHBZM2tnSWljcExtTnZibU5oZENoNGNpaHVMbTl5YVdkcGJtRnNVRzlzYVdONUxERXdNQ3dpTGk0dUlpa3NKeUluS1RvaWJtOGdjRzlzYVdONUlpeHVMbk52ZFhKalpVWnBiR1VzYmk1c2FXNWxUblZ0WW1WeUxHNHVZMjlzZFcxdVRuVnRZbVZ5S1gwcGZXWjFibU4wYVc5dUlIaHBLRzRwZTNKbGRIVnliaUJQS0h0emRHRnlkRU5zYjJOcmN6cGxaU2dwTEhOdmRYSmpaVHBJTGxKRlVFOVNWQ3hvWVc1a2JHbHVaem9pZFc1b1lXNWtiR1ZrSW4wc2JpbDlablZ1WTNScGIyNGdWV2tvYml4eUxHRXNjeXhzS1h0eVpYUjFjbTRnWVQ5b1pTaDdibUZ0WlRwdUxHMWxjM05oWjJVNmNpeHpkR0ZqYXpwYmUyWjFibU02SWo4aUxIVnliRHBoTEd4cGJtVTZjejgvZG05cFpDQXdMR052YkhWdGJqcHNQejkyYjJsa0lEQjlYWDBwT25admFXUWdNSDFtZFc1amRHbHZiaUIzYVNodUxISXBlM1poY2lCaFBYZHBibVJ2ZHk1ZlgyUmtRbkp2ZDNObGNsTmthMFY0ZEdWdWMybHZia05oYkd4aVlXTnJPMkVtSm1Fb2UzUjVjR1U2Yml4d1lYbHNiMkZrT25KOUtYMW1kVzVqZEdsdmJpQnJkQ2h1S1h0eVpYUjFjbTRnYmowOVBXNTFiR3cvSW01MWJHd2lPa0Z5Y21GNUxtbHpRWEp5WVhrb2Jpay9JbUZ5Y21GNUlqcDBlWEJsYjJZZ2JuMW1kVzVqZEdsdmJpQlJaU2h1TEhJc1lTbDdhV1lvWVQwOVBYWnZhV1FnTUNZbUtHRTlaWE1vS1Nrc2NqMDlQWFp2YVdRZ01DbHlaWFIxY200Z2JqdHBaaWgwZVhCbGIyWWdjaUU5SW05aWFtVmpkQ0o4ZkhJOVBUMXVkV3hzS1hKbGRIVnliaUJ5TzJsbUtISWdhVzV6ZEdGdVkyVnZaaUJFWVhSbEtYSmxkSFZ5YmlCdVpYY2dSR0YwWlNoeUxtZGxkRlJwYldVb0tTazdhV1lvY2lCcGJuTjBZVzVqWlc5bUlGSmxaMFY0Y0NsN2RtRnlJSE05Y2k1bWJHRm5jM3g4VzNJdVoyeHZZbUZzUHlKbklqb2lJaXh5TG1sbmJtOXlaVU5oYzJVL0lta2lPaUlpTEhJdWJYVnNkR2xzYVc1bFB5SnRJam9pSWl4eUxuTjBhV05yZVQ4aWVTSTZJaUlzY2k1MWJtbGpiMlJsUHlKMUlqb2lJbDB1YW05cGJpZ2lJaWs3Y21WMGRYSnVJRzVsZHlCU1pXZEZlSEFvY2k1emIzVnlZMlVzY3lsOWFXWW9JV0V1YUdGelFXeHlaV0ZrZVVKbFpXNVRaV1Z1S0hJcEtYdHBaaWhCY25KaGVTNXBjMEZ5Y21GNUtISXBLWHRtYjNJb2RtRnlJR3c5UVhKeVlYa3VhWE5CY25KaGVTaHVLVDl1T2x0ZExHUTlNRHRrUEhJdWJHVnVaM1JvT3lzclpDbHNXMlJkUFZGbEtHeGJaRjBzY2x0a1hTeGhLVHR5WlhSMWNtNGdiSDEyWVhJZ2FEMXJkQ2h1S1QwOVBTSnZZbXBsWTNRaVAyNDZlMzA3Wm05eUtIWmhjaUJ2SUdsdUlISXBUMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLSElzYnlrbUppaG9XMjlkUFZGbEtHaGJiMTBzY2x0dlhTeGhLU2s3Y21WMGRYSnVJR2g5ZldaMWJtTjBhVzl1SUVWcEtHNHBlM0psZEhWeWJpQlJaU2gyYjJsa0lEQXNiaWw5Wm5WdVkzUnBiMjRnZDJVb0tYdG1iM0lvZG1GeUlHNDlXMTBzY2owd08zSThZWEpuZFcxbGJuUnpMbXhsYm1kMGFEdHlLeXNwYmx0eVhUMWhjbWQxYldWdWRITmJjbDA3Wm05eUtIWmhjaUJoTEhNOU1DeHNQVzQ3Y3p4c0xteGxibWQwYUR0ekt5c3BlM1poY2lCa1BXeGJjMTA3WkNFOWJuVnNiQ1ltS0dFOVVXVW9ZU3hrS1NsOWNtVjBkWEp1SUdGOVpuVnVZM1JwYjI0Z1pYTW9LWHRwWmloMGVYQmxiMllnVjJWaGExTmxkRHdpZFNJcGUzWmhjaUJ1UFc1bGR5QlhaV0ZyVTJWME8zSmxkSFZ5Ym50b1lYTkJiSEpsWVdSNVFtVmxibE5sWlc0NlpuVnVZM1JwYjI0b1lTbDdkbUZ5SUhNOWJpNW9ZWE1vWVNrN2NtVjBkWEp1SUhOOGZHNHVZV1JrS0dFcExITjlmWDEyWVhJZ2NqMWJYVHR5WlhSMWNtNTdhR0Z6UVd4eVpXRmtlVUpsWlc1VFpXVnVPbVoxYm1OMGFXOXVLR0VwZTNaaGNpQnpQWEl1YVc1a1pYaFBaaWhoS1Q0OU1EdHlaWFIxY200Z2MzeDhjaTV3ZFhOb0tHRXBMSE45ZlgxbWRXNWpkR2x2YmlCMGN5Z3BlM1poY2lCdUxISTlkMmx1Wkc5M0xtNWhkbWxuWVhSdmNqdHlaWFIxY201N2MzUmhkSFZ6T25JdWIyNU1hVzVsUHlKamIyNXVaV04wWldRaU9pSnViM1JmWTI5dWJtVmpkR1ZrSWl4cGJuUmxjbVpoWTJWek9uSXVZMjl1Ym1WamRHbHZiaVltY2k1amIyNXVaV04wYVc5dUxuUjVjR1UvVzNJdVkyOXVibVZqZEdsdmJpNTBlWEJsWFRwMmIybGtJREFzWldabVpXTjBhWFpsWDNSNWNHVTZLRzQ5Y2k1amIyNXVaV04wYVc5dUtUMDlQVzUxYkd4OGZHNDlQVDEyYjJsa0lEQS9kbTlwWkNBd09tNHVaV1ptWldOMGFYWmxWSGx3WlgxOVpuVnVZM1JwYjI0Z2FYTW9iaWw3ZG1GeUlISTlibVYzSUZObGREdHlaWFIxY200Z2JpNW1iM0pGWVdOb0tHWjFibU4wYVc5dUtHRXBlM0psZEhWeWJpQnlMbUZrWkNoaEtYMHBMSEIwS0hJcGZXWjFibU4wYVc5dUlFRnBLRzRzY2lsN2RtRnlJR0U5Ymk1cGJtUmxlRTltS0hJcE8yRStQVEFtSm00dWMzQnNhV05sS0dFc01TbDlkbUZ5SUhKelBUVXdNRHRtZFc1amRHbHZiaUJEYVNncGUzWmhjaUJ1UFZ0ZExISTlablZ1WTNScGIyNG9iQ2w3ZG1GeUlHUTliaTV3ZFhOb0tHd3BPMlErY25NbUptNHVjM0JzYVdObEtEQXNNU2w5TEdFOVpuVnVZM1JwYjI0b2JDbDdRV2tvYml4c0tYMHNjejFtZFc1amRHbHZiaWhzS1h0dUxtWnZja1ZoWTJnb1puVnVZM1JwYjI0b1pDbDdjbVYwZFhKdUlHUW9iQ2w5S1N4dUxteGxibWQwYUQwd2ZUdHlaWFIxY201N1lXUmtPbklzY21WdGIzWmxPbUVzWkhKaGFXNDZjMzE5ZG1GeUlGOWxQWHRzYjJjNklteHZaeUlzWTI5dVptbG5kWEpoZEdsdmJqb2lZMjl1Wm1sbmRYSmhkR2x2YmlJc2RYTmhaMlU2SW5WellXZGxJbjBzYm5NOVd5Sm9kSFJ3Y3pvdkwzZDNkeTVrWVhSaFpHOW5hSEV0WW5KdmQzTmxjaTFoWjJWdWRDNWpiMjBpTENKb2RIUndjem92TDNkM2R5NWtZWFJoWkRCbkxXSnliM2R6WlhJdFlXZGxiblF1WTI5dElpd2lhSFIwY0hNNkx5OWtNM1ZqTURZNVptTnVOM1Y0ZHk1amJHOTFaR1p5YjI1MExtNWxkQ0lzSW1oMGRIQnpPaTh2WkRJd2VIUjZkM3BqYkRCalpXSXVZMnh2ZFdSbWNtOXVkQzV1WlhRaUxDSm9kSFJ3T2k4dmJHOWpZV3hvYjNOMElpd2lQR0Z1YjI1NWJXOTFjejRpWFN4emN6MWJibTVkTEZScFBVTnBLQ2tzUldVOVpuVnVZM1JwYjI0b2JpbDdWR2t1WVdSa0tHWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlFVmxLRzRwZlNsOU8yWjFibU4wYVc5dUlHOXpLRzRzY2lsN2RtRnlJR0VzY3l4c1BXNWxkeUJTTEdROWJtVjNJRk5sZEN4b1BTRjVaU2h6Y3l4eUxuTnBkR1VwSmlaT1pTaHlMblJsYkdWdFpYUnllVk5oYlhCc1pWSmhkR1VwTEc4OUtHRTllMzBzWVZ0ZlpTNXNiMmRkUFdnc1lWdGZaUzVqYjI1bWFXZDFjbUYwYVc5dVhUMW9KaVpPWlNoeUxuUmxiR1Z0WlhSeWVVTnZibVpwWjNWeVlYUnBiMjVUWVcxd2JHVlNZWFJsS1N4aFcxOWxMblZ6WVdkbFhUMW9KaVpPWlNoeUxuUmxiR1Z0WlhSeWVWVnpZV2RsVTJGdGNHeGxVbUYwWlNrc1lTa3NYejFoY3lncE8wVmxQV1oxYm1OMGFXOXVLR01wZTNaaGNpQm5QWFZsS0dNcE8ybG1LRzliWXk1MGVYQmxYU1ltWkM1emFYcGxQSEl1YldGNFZHVnNaVzFsZEhKNVJYWmxiblJ6VUdWeVVHRm5aU1ltSVdRdWFHRnpLR2NwS1h0MllYSWdaVDF3S0c0c1l5eGZLVHRzTG01dmRHbG1lU2hsS1N4M2FTZ2lkR1ZzWlcxbGRISjVJaXhsS1N4a0xtRmtaQ2huS1gxOUxHZHlLRUpwS1R0bWRXNWpkR2x2YmlCd0tHTXNaeXhsS1h0eVpYUjFjbTRnZDJVb2UzUjVjR1U2SW5SbGJHVnRaWFJ5ZVNJc1pHRjBaVHBSS0Nrc2MyVnlkbWxqWlRwakxIWmxjbk5wYjI0NklqVXVNamt1TVNJc2MyOTFjbU5sT2lKaWNtOTNjMlZ5SWl4ZlpHUTZlMlp2Y20xaGRGOTJaWEp6YVc5dU9qSjlMSFJsYkdWdFpYUnllVHAzWlNobkxIdHlkVzUwYVcxbFgyVnVkanBsTEdOdmJtNWxZM1JwZG1sMGVUcDBjeWdwTEhOa2ExOXpaWFIxY0RvaWJuQnRJbjBwTEdWNGNHVnlhVzFsYm5SaGJGOW1aV0YwZFhKbGN6cHdkQ2hUYmlncEtYMHNjeUU5UFhadmFXUWdNRDl6S0NrNmUzMHBmWEpsZEhWeWJudHpaWFJEYjI1MFpYaDBVSEp2ZG1sa1pYSTZablZ1WTNScGIyNG9ZeWw3Y3oxamZTeHZZbk5sY25aaFlteGxPbXdzWlc1aFlteGxaRHBvZlgxbWRXNWpkR2x2YmlCaGN5Z3BlM0psZEhWeWJudHBjMTlzYjJOaGJGOW1hV3hsT25kcGJtUnZkeTVzYjJOaGRHbHZiaTV3Y205MGIyTnZiRDA5UFNKbWFXeGxPaUlzYVhOZmQyOXlhMlZ5T2lKWGIzSnJaWEpIYkc5aVlXeFRZMjl3WlNKcGJpQnpaV3htZlgxbWRXNWpkR2x2YmlCbWN5Z3BlMVJwTG1SeVlXbHVLQ2w5Wm5WdVkzUnBiMjRnYkhNb2JpbDdjbVYwZFhKdUlHNHVjMmwwWlQwOVBYUnVmV1oxYm1OMGFXOXVJRWxwS0c0c2NpbDdaM1FvVEM1a1pXSjFaeXh1TEhJcExFVmxLRThvZTNSNWNHVTZYMlV1Ykc5bkxHMWxjM05oWjJVNmJpeHpkR0YwZFhNNkltUmxZblZuSW4wc2Npa3BmV1oxYm1OMGFXOXVJRUpwS0c0c2NpbDdSV1VvVHloN2RIbHdaVHBmWlM1c2IyY3NjM1JoZEhWek9pSmxjbkp2Y2lKOUxHaHpLRzRwTEhJcEtYMW1kVzVqZEdsdmJpQjFjeWh1S1h0RlpTaDdkSGx3WlRwZlpTNWpiMjVtYVdkMWNtRjBhVzl1TEdOdmJtWnBaM1Z5WVhScGIyNDZibjBwZldaMWJtTjBhVzl1SUdSektHNHBlMFZsS0h0MGVYQmxPbDlsTG5WellXZGxMSFZ6WVdkbE9tNTlLWDFtZFc1amRHbHZiaUJvY3lodUtYdHBaaWh1SUdsdWMzUmhibU5sYjJZZ1JYSnliM0lwZTNaaGNpQnlQVW9vYmlrN2NtVjBkWEp1ZTJWeWNtOXlPbnRyYVc1a09uSXVibUZ0WlN4emRHRmphenBvWlNoamN5aHlLU2w5TEcxbGMzTmhaMlU2Y2k1dFpYTnpZV2RsZlgxeVpYUjFjbTU3WlhKeWIzSTZlM04wWVdOck9tZHBmU3h0WlhOellXZGxPaUlpTG1OdmJtTmhkQ2dpVlc1allYVm5hSFFpTENJZ0lpa3VZMjl1WTJGMEtIVmxLRzRwS1gxOVpuVnVZM1JwYjI0Z1kzTW9iaWw3Y21WMGRYSnVJRzR1YzNSaFkyczliaTV6ZEdGamF5NW1hV3gwWlhJb1puVnVZM1JwYjI0b2NpbDdjbVYwZFhKdUlYSXVkWEpzZkh4dWN5NXpiMjFsS0daMWJtTjBhVzl1S0dFcGUzSmxkSFZ5YmlCZmRDaHlMblZ5YkN4aEtYMHBmU2tzYm4xMllYSWdaWFE5TVM4d0xIQnpQWE5sTzJaMWJtTjBhVzl1SUY5ektHNHBlM1poY2lCeVBXNHVaWGh3YVhKbFJHVnNZWGtzWVQxdUxtMWhlRVZ1ZEhKcFpYTXNjejFiWFN4c1BYbDBLR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJR1FvS1gwc2NITXBPMloxYm1OMGFXOXVJR1FvS1h0bWIzSW9kbUZ5SUdVOVRXVW9LUzF5TzNNdWJHVnVaM1JvUGpBbUpuTmJjeTVzWlc1bmRHZ3RNVjB1Wlc1a1ZHbHRaVHhsT3lsekxuQnZjQ2dwZldaMWJtTjBhVzl1SUdnb1pTeDBLWHQyWVhJZ2FUMTdkbUZzZFdVNlpTeHpkR0Z5ZEZScGJXVTZkQ3hsYm1SVWFXMWxPbVYwTEhKbGJXOTJaVHBtZFc1amRHbHZiaWdwZTBGcEtITXNhU2w5TEdOc2IzTmxPbVoxYm1OMGFXOXVLR1lwZTJrdVpXNWtWR2x0WlQxbWZYMDdjbVYwZFhKdUlHRW1Kbk11YkdWdVozUm9QajFoSmlaekxuQnZjQ2dwTEhNdWRXNXphR2xtZENocEtTeHBmV1oxYm1OMGFXOXVJRzhvWlN4MEtYdGxQVDA5ZG05cFpDQXdKaVlvWlQxbGRDa3NkRDA5UFhadmFXUWdNQ1ltS0hROWUzSmxkSFZ5YmtsdVlXTjBhWFpsT2lFeGZTazdabTl5S0haaGNpQnBQVEFzWmoxek8yazhaaTVzWlc1bmRHZzdhU3NyS1h0MllYSWdkVDFtVzJsZE8ybG1LSFV1YzNSaGNuUlVhVzFsUEQxbEtYdHBaaWgwTG5KbGRIVnlia2x1WVdOMGFYWmxmSHhsUEQxMUxtVnVaRlJwYldVcGNtVjBkWEp1SUhVdWRtRnNkV1U3WW5KbFlXdDlmWDFtZFc1amRHbHZiaUJmS0dVcGUzWmhjaUIwUFhOYk1GMDdkQ1ltZEM1bGJtUlVhVzFsUFQwOVpYUW1KblF1WTJ4dmMyVW9aU2w5Wm5WdVkzUnBiMjRnY0NobExIUXBlMlU5UFQxMmIybGtJREFtSmlobFBXVjBLU3gwUFQwOWRtOXBaQ0F3SmlZb2REMHdLVHQyWVhJZ2FUMXNjaWhsTEhRcE8zSmxkSFZ5YmlCekxtWnBiSFJsY2lobWRXNWpkR2x2YmlobUtYdHlaWFIxY200Z1ppNXpkR0Z5ZEZScGJXVThQV2ttSm1VOFBXWXVaVzVrVkdsdFpYMHBMbTFoY0NobWRXNWpkR2x2YmlobUtYdHlaWFIxY200Z1ppNTJZV3gxWlgwcGZXWjFibU4wYVc5dUlHTW9LWHR6UFZ0ZGZXWjFibU4wYVc5dUlHY29LWHRSZENoc0tYMXlaWFIxY201N1lXUmtPbWdzWm1sdVpEcHZMR05zYjNObFFXTjBhWFpsT2w4c1ptbHVaRUZzYkRwd0xISmxjMlYwT21Nc2MzUnZjRHBuZlgxMllYSWdkbk05YzJVc1ozTTllSFE3Wm5WdVkzUnBiMjRnZVhNb2JpeHlMR0VzY3lsN2RtRnlJR3c5Ym1WM0lGSXNaRDF1WlhjZ1VpeG9QU1J5S0c0dWMyVnpjMmx2YmxOMGIzSmxVM1J5WVhSbFozbFVlWEJsTEhJc1lTa3NiejFmY3loN1pYaHdhWEpsUkdWc1lYazZaM045S1R0b0xuSmxibVYzVDJKelpYSjJZV0pzWlM1emRXSnpZM0pwWW1Vb1puVnVZM1JwYjI0b0tYdHZMbUZrWkNoZktDa3NUV1VvS1Nrc2JDNXViM1JwWm5rb0tYMHBMR2d1Wlhod2FYSmxUMkp6WlhKMllXSnNaUzV6ZFdKelkzSnBZbVVvWm5WdVkzUnBiMjRvS1h0a0xtNXZkR2xtZVNncExHOHVZMnh2YzJWQlkzUnBkbVVvVFdVb0tTbDlLU3hvTG1WNGNHRnVaRTl5VW1WdVpYZFRaWE56YVc5dUtDa3NieTVoWkdRb1h5Z3BMR0Z5S0NrdWNtVnNZWFJwZG1VcExITXViMkp6WlhKMllXSnNaUzV6ZFdKelkzSnBZbVVvWm5WdVkzUnBiMjRvS1h0ekxtbHpSM0poYm5SbFpDZ3BQMmd1Wlhod1lXNWtUM0pTWlc1bGQxTmxjM05wYjI0b0tUcG9MbVY0Y0dseVpTZ3BmU2tzYlhNb2JpeG1kVzVqZEdsdmJpZ3BlM011YVhOSGNtRnVkR1ZrS0NrbUptZ3VaWGh3WVc1a1QzSlNaVzVsZDFObGMzTnBiMjRvS1gwcExHSnpLRzRzWm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnYUM1bGVIQmhibVJUWlhOemFXOXVLQ2w5S1N4VGN5aHVMR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJR2d1Y21WemRHRnlkRk5sYzNOcGIyNG9LWDBwTzJaMWJtTjBhVzl1SUY4b0tYdHlaWFIxY201N2FXUTZhQzVuWlhSVFpYTnphVzl1S0NrdWFXUXNkSEpoWTJ0cGJtZFVlWEJsT21ndVoyVjBVMlZ6YzJsdmJpZ3BXM0pkTEdselVtVndiR0Y1Um05eVkyVmtPaUVoYUM1blpYUlRaWE56YVc5dUtDa3VabTl5WTJWa1VtVndiR0Y1ZlgxeVpYUjFjbTU3Wm1sdVpGTmxjM05wYjI0NlpuVnVZM1JwYjI0b2NDeGpLWHR5WlhSMWNtNGdieTVtYVc1a0tIQXNZeWw5TEhKbGJtVjNUMkp6WlhKMllXSnNaVHBzTEdWNGNHbHlaVTlpYzJWeWRtRmliR1U2WkN4elpYTnphVzl1VTNSaGRHVlZjR1JoZEdWUFluTmxjblpoWW14bE9tZ3VjMlZ6YzJsdmJsTjBZWFJsVlhCa1lYUmxUMkp6WlhKMllXSnNaU3hsZUhCcGNtVTZhQzVsZUhCcGNtVXNkWEJrWVhSbFUyVnpjMmx2YmxOMFlYUmxPbWd1ZFhCa1lYUmxVMlZ6YzJsdmJsTjBZWFJsZlgxbWRXNWpkR2x2YmlCdGN5aHVMSElwZTB4MEtHNHNkMmx1Wkc5M0xGc2lZMnhwWTJzaUxDSjBiM1ZqYUhOMFlYSjBJaXdpYTJWNVpHOTNiaUlzSW5OamNtOXNiQ0pkTEhJc2UyTmhjSFIxY21VNklUQXNjR0Z6YzJsMlpUb2hNSDBwTG5OMGIzQjlablZ1WTNScGIyNGdZbk1vYml4eUtYdDJZWElnWVQxbWRXNWpkR2x2YmlncGUyUnZZM1Z0Wlc1MExuWnBjMmxpYVd4cGRIbFRkR0YwWlQwOVBTSjJhWE5wWW14bElpWW1jaWdwZlR0d1pTaHVMR1J2WTNWdFpXNTBMQ0oyYVhOcFltbHNhWFI1WTJoaGJtZGxJaXhoS1M1emRHOXdMSGwwS0dFc2RuTXBmV1oxYm1OMGFXOXVJRk56S0c0c2NpbDdjR1VvYml4M2FXNWtiM2NzSW5KbGMzVnRaU0lzY2l4N1kyRndkSFZ5WlRvaE1IMHBMbk4wYjNCOVpuVnVZM1JwYjI0Z1Jta29iaWw3Y21WMGRYSnVJRzQrUFRVd01IMW1kVzVqZEdsdmJpQjRjeWh1S1h0MGNubDdjbVYwZFhKdUlHNHVZMnh2Ym1Vb0tYMWpZWFJqYUh0eVpYUjFjbTU5ZlhaaGNpQlZjejA0TUNwWUxIZHpQVE15TEV4cFBUTXFXSFFzUlhNOWMyVXNhMms5VkdVN1puVnVZM1JwYjI0Z2Vta29iaXh5TEdFc2N5eHNLWHR5TG5SeVlXNXpjRzl5ZEZOMFlYUjFjejA5UFRBbUpuSXVjWFZsZFdWa1VHRjViRzloWkhNdWMybDZaU2dwUFQwOU1DWW1jaTVpWVc1a2QybGtkR2hOYjI1cGRHOXlMbU5oYmtoaGJtUnNaU2h1S1Q5UGFTaHVMSElzWVN4N2IyNVRkV05qWlhOek9tWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlGQnBLREFzY2l4aExITXNiQ2w5TEc5dVJtRnBiSFZ5WlRwbWRXNWpkR2x2YmlncGUzSXVjWFZsZFdWa1VHRjViRzloWkhNdVpXNXhkV1YxWlNodUtTeFNhU2h5TEdFc2N5eHNLWDE5S1RweUxuRjFaWFZsWkZCaGVXeHZZV1J6TG1WdWNYVmxkV1VvYmlsOVpuVnVZM1JwYjI0Z1Vta29iaXh5TEdFc2N5bDdiaTUwY21GdWMzQnZjblJUZEdGMGRYTTlQVDB5SmlaR1pTaG1kVzVqZEdsdmJpZ3BlM1poY2lCc1BXNHVjWFZsZFdWa1VHRjViRzloWkhNdVptbHljM1FvS1R0UGFTaHNMRzRzY2l4N2IyNVRkV05qWlhOek9tWjFibU4wYVc5dUtDbDdiaTV4ZFdWMVpXUlFZWGxzYjJGa2N5NWtaWEYxWlhWbEtDa3NiaTVqZFhKeVpXNTBRbUZqYTI5bVpsUnBiV1U5YTJrc1VHa29NU3h1TEhJc1lTeHpLWDBzYjI1R1lXbHNkWEpsT21aMWJtTjBhVzl1S0NsN2JpNWpkWEp5Wlc1MFFtRmphMjltWmxScGJXVTlUV0YwYUM1dGFXNG9SWE1zYmk1amRYSnlaVzUwUW1GamEyOW1abFJwYldVcU1pa3NVbWtvYml4eUxHRXNjeWw5ZlNsOUxHNHVZM1Z5Y21WdWRFSmhZMnR2Wm1aVWFXMWxLWDFtZFc1amRHbHZiaUJQYVNodUxISXNZU3h6S1h0MllYSWdiRDF6TG05dVUzVmpZMlZ6Y3l4a1BYTXViMjVHWVdsc2RYSmxPM0l1WW1GdVpIZHBaSFJvVFc5dWFYUnZjaTVoWkdRb2Jpa3NZU2h1TEdaMWJtTjBhVzl1S0dncGUzSXVZbUZ1WkhkcFpIUm9UVzl1YVhSdmNpNXlaVzF2ZG1Vb2Jpa3NRWE1vYUNrL0tISXVkSEpoYm5Od2IzSjBVM1JoZEhWelBYSXVZbUZ1WkhkcFpIUm9UVzl1YVhSdmNpNXZibWR2YVc1blVtVnhkV1Z6ZEVOdmRXNTBQakEvTVRveUxHNHVjbVYwY25rOWUyTnZkVzUwT200dWNtVjBjbmsvYmk1eVpYUnllUzVqYjNWdWRDc3hPakVzYkdGemRFWmhhV3gxY21WVGRHRjBkWE02YUM1emRHRjBkWE45TEdRb0tTazZLSEl1ZEhKaGJuTndiM0owVTNSaGRIVnpQVEFzYkNncEtYMHBmV1oxYm1OMGFXOXVJRkJwS0c0c2NpeGhMSE1zYkNsN2JqMDlQVEFtSm5JdWNYVmxkV1ZrVUdGNWJHOWhaSE11YVhOR2RXeHNLQ2ttSmlGeUxuRjFaWFZsUm5Wc2JGSmxjRzl5ZEdWa0ppWW9iQ2g3YldWemMyRm5aVG9pVW1WaFkyaGxaQ0J0WVhnZ0lpNWpiMjVqWVhRb2N5d2lJR1YyWlc1MGN5QnphWHBsSUhGMVpYVmxaQ0JtYjNJZ2RYQnNiMkZrT2lBaUtTNWpiMjVqWVhRb1RHa3ZXSFFzSWsxcFFpSXBMSE52ZFhKalpUcElMa0ZIUlU1VUxITjBZWEowUTJ4dlkydHpPbVZsS0NsOUtTeHlMbkYxWlhWbFJuVnNiRkpsY0c5eWRHVmtQU0V3S1R0MllYSWdaRDF5TG5GMVpYVmxaRkJoZVd4dllXUnpPMlp2Y2loeUxuRjFaWFZsWkZCaGVXeHZZV1J6UFVScEtDazdaQzV6YVhwbEtDaytNRHNwZW1rb1pDNWtaWEYxWlhWbEtDa3NjaXhoTEhNc2JDbDlablZ1WTNScGIyNGdRWE1vYmlsN2NtVjBkWEp1SUc0dWRIbHdaU0U5UFNKdmNHRnhkV1VpSmlZb2JpNXpkR0YwZFhNOVBUMHdKaVloYm1GMmFXZGhkRzl5TG05dVRHbHVaWHg4Ymk1emRHRjBkWE05UFQwME1EaDhmRzR1YzNSaGRIVnpQVDA5TkRJNWZIeEdhU2h1TG5OMFlYUjFjeWtwZldaMWJtTjBhVzl1SUVOektDbDdjbVYwZFhKdWUzUnlZVzV6Y0c5eWRGTjBZWFIxY3pvd0xHTjFjbkpsYm5SQ1lXTnJiMlptVkdsdFpUcHJhU3hpWVc1a2QybGtkR2hOYjI1cGRHOXlPbFJ6S0Nrc2NYVmxkV1ZrVUdGNWJHOWhaSE02Ukdrb0tTeHhkV1YxWlVaMWJHeFNaWEJ2Y25SbFpEb2hNWDE5Wm5WdVkzUnBiMjRnUkdrb0tYdDJZWElnYmoxYlhUdHlaWFIxY201N1lubDBaWE5EYjNWdWREb3dMR1Z1Y1hWbGRXVTZablZ1WTNScGIyNG9jaWw3ZEdocGN5NXBjMFoxYkd3b0tYeDhLRzR1Y0hWemFDaHlLU3gwYUdsekxtSjVkR1Z6UTI5MWJuUXJQWEl1WW5sMFpYTkRiM1Z1ZENsOUxHWnBjbk4wT21aMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUc1Yk1GMTlMR1JsY1hWbGRXVTZablZ1WTNScGIyNG9LWHQyWVhJZ2NqMXVMbk5vYVdaMEtDazdjbVYwZFhKdUlISW1KaWgwYUdsekxtSjVkR1Z6UTI5MWJuUXRQWEl1WW5sMFpYTkRiM1Z1ZENrc2NuMHNjMmw2WlRwbWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCdUxteGxibWQwYUgwc2FYTkdkV3hzT21aMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVZbmwwWlhORGIzVnVkRDQ5VEdsOWZYMW1kVzVqZEdsdmJpQlVjeWdwZTNKbGRIVnlibnR2Ym1kdmFXNW5VbVZ4ZFdWemRFTnZkVzUwT2pBc2IyNW5iMmx1WjBKNWRHVkRiM1Z1ZERvd0xHTmhia2hoYm1Sc1pUcG1kVzVqZEdsdmJpaHVLWHR5WlhSMWNtNGdkR2hwY3k1dmJtZHZhVzVuVW1WeGRXVnpkRU52ZFc1MFBUMDlNSHg4ZEdocGN5NXZibWR2YVc1blFubDBaVU52ZFc1MEsyNHVZbmwwWlhORGIzVnVkRHc5VlhNbUpuUm9hWE11YjI1bmIybHVaMUpsY1hWbGMzUkRiM1Z1ZER4M2MzMHNZV1JrT21aMWJtTjBhVzl1S0c0cGUzUm9hWE11YjI1bmIybHVaMUpsY1hWbGMzUkRiM1Z1ZENzOU1TeDBhR2x6TG05dVoyOXBibWRDZVhSbFEyOTFiblFyUFc0dVlubDBaWE5EYjNWdWRIMHNjbVZ0YjNabE9tWjFibU4wYVc5dUtHNHBlM1JvYVhNdWIyNW5iMmx1WjFKbGNYVmxjM1JEYjNWdWRDMDlNU3gwYUdsekxtOXVaMjlwYm1kQ2VYUmxRMjkxYm5RdFBXNHVZbmwwWlhORGIzVnVkSDE5ZldaMWJtTjBhVzl1SUVsektHNHNjaXhoTEhNcGUzWmhjaUJzUFVOektDa3NaRDFtZFc1amRHbHZiaWhvTEc4cGUzSmxkSFZ5YmlCTWN5aHVMSElzWVN4b0xHOHBmVHR5WlhSMWNtNTdjMlZ1WkRwbWRXNWpkR2x2Ymlob0tYdDZhU2hvTEd3c1pDeHlMblJ5WVdOclZIbHdaU3h6S1gwc2MyVnVaRTl1UlhocGREcG1kVzVqZEdsdmJpaG9LWHRDY3lodUxISXNZU3hvS1gxOWZXWjFibU4wYVc5dUlFSnpLRzRzY2l4aExITXBlM1poY2lCc1BTRWhibUYyYVdkaGRHOXlMbk5sYm1SQ1pXRmpiMjRtSm5NdVlubDBaWE5EYjNWdWREeGhPMmxtS0d3cGRISjVlM1poY2lCa1BYSXVZblZwYkdRb0ltSmxZV052YmlJc2N5a3NhRDF1WVhacFoyRjBiM0l1YzJWdVpFSmxZV052Ymloa0xITXVaR0YwWVNrN2FXWW9hQ2x5WlhSMWNtNTlZMkYwWTJnb1h5bDdSbk1vWHlsOWRtRnlJRzg5Y2k1aWRXbHNaQ2dpZUdoeUlpeHpLVHQ2ZENodUxHOHNjeTVrWVhSaEtYMTJZWElnVG1rOUlURTdablZ1WTNScGIyNGdSbk1vYmlsN1RtbDhmQ2hPYVQwaE1DeENhU2h1S1NsOVpuVnVZM1JwYjI0Z1RITW9iaXh5TEdFc2N5eHNLWHQyWVhJZ1pEMXJjeWdwSmlaekxtSjVkR1Z6UTI5MWJuUThZVHRwWmloa0tYdDJZWElnYUQxeUxtSjFhV3hrS0NKbVpYUmphQ0lzY3lrN1ptVjBZMmdvYUN4N2JXVjBhRzlrT2lKUVQxTlVJaXhpYjJSNU9uTXVaR0YwWVN4clpXVndZV3hwZG1VNklUQXNiVzlrWlRvaVkyOXljeUo5S1M1MGFHVnVLRUlvWm5WdVkzUnBiMjRvWHlsN2NtVjBkWEp1SUd3OVBXNTFiR3cvZG05cFpDQXdPbXdvZTNOMFlYUjFjenBmTG5OMFlYUjFjeXgwZVhCbE9sOHVkSGx3WlgwcGZTa3NRaWhtZFc1amRHbHZiaWdwZTNaaGNpQmZQWEl1WW5WcGJHUW9JbmhvY2lJc2N5azdlblFvYml4ZkxITXVaR0YwWVN4c0tYMHBLWDFsYkhObGUzWmhjaUJ2UFhJdVluVnBiR1FvSW5ob2NpSXNjeWs3ZW5Rb2JpeHZMSE11WkdGMFlTeHNLWDE5Wm5WdVkzUnBiMjRnYTNNb0tYdDBjbmw3Y21WMGRYSnVJSGRwYm1SdmR5NVNaWEYxWlhOMEppWWlhMlZsY0dGc2FYWmxJbWx1SUc1bGR5QlNaWEYxWlhOMEtDSm9kSFJ3T2k4dllTSXBmV05oZEdOb2UzSmxkSFZ5YmlFeGZYMW1kVzVqZEdsdmJpQjZkQ2h1TEhJc1lTeHpLWHQyWVhJZ2JEMXVaWGNnV0UxTVNIUjBjRkpsY1hWbGMzUTdiQzV2Y0dWdUtDSlFUMU5VSWl4eUxDRXdLU3hoSUdsdWMzUmhibU5sYjJZZ1FteHZZaVltYkM1elpYUlNaWEYxWlhOMFNHVmhaR1Z5S0NKRGIyNTBaVzUwTFZSNWNHVWlMR0V1ZEhsd1pTa3NjR1VvYml4c0xDSnNiMkZrWlc1a0lpeG1kVzVqZEdsdmJpZ3BlM005UFc1MWJHeDhmSE1vZTNOMFlYUjFjenBzTG5OMFlYUjFjMzBwZlN4N2IyNWpaVG9oTUgwcExHd3VjMlZ1WkNoaEtYMW1kVzVqZEdsdmJpQlNkQ2dwZTNaaGNpQnVQWHB6S0NrN2FXWW9iaWx5WlhSMWNtNTdaMlYwUTJGd1lXSnBiR2wwYVdWek9tWjFibU4wYVc5dUtDbDdkbUZ5SUhJN2NtVjBkWEp1SUVwVFQwNHVjR0Z5YzJVb0tDaHlQVzR1WjJWMFEyRndZV0pwYkdsMGFXVnpLVDA5UFc1MWJHeDhmSEk5UFQxMmIybGtJREEvZG05cFpDQXdPbkl1WTJGc2JDaHVLU2w4ZkNKYlhTSXBmU3huWlhSUWNtbDJZV041VEdWMlpXdzZablZ1WTNScGIyNG9LWHQyWVhJZ2NqdHlaWFIxY200b2NqMXVMbWRsZEZCeWFYWmhZM2xNWlhabGJDazlQVDF1ZFd4c2ZIeHlQVDA5ZG05cFpDQXdQM1p2YVdRZ01EcHlMbU5oYkd3b2JpbDlMR2RsZEVGc2JHOTNaV1JYWldKV2FXVjNTRzl6ZEhNNlpuVnVZM1JwYjI0b0tYdHlaWFIxY200Z1NsTlBUaTV3WVhKelpTaHVMbWRsZEVGc2JHOTNaV1JYWldKV2FXVjNTRzl6ZEhNb0tTbDlMSE5sYm1RNlpuVnVZM1JwYjI0b2NpeGhMSE1wZTNaaGNpQnNQWE0vZTJsa09uTjlPblp2YVdRZ01EdHVMbk5sYm1Rb1NsTlBUaTV6ZEhKcGJtZHBabmtvZTJWMlpXNTBWSGx3WlRweUxHVjJaVzUwT21Fc2RtbGxkenBzZlNrcGZYMTlablZ1WTNScGIyNGdkSFFvYmlsN2RtRnlJSEk3YmowOVBYWnZhV1FnTUNZbUtHNDlLSEk5ZEdVb0tTNXNiMk5oZEdsdmJpazlQVDF1ZFd4c2ZIeHlQVDA5ZG05cFpDQXdQM1p2YVdRZ01EcHlMbWh2YzNSdVlXMWxLVHQyWVhJZ1lUMVNkQ2dwTzNKbGRIVnliaUVoWVNZbVlTNW5aWFJCYkd4dmQyVmtWMlZpVm1sbGQwaHZjM1J6S0NrdWMyOXRaU2htZFc1amRHbHZiaWh6S1h0eVpYUjFjbTRnYmowOVBYTjhmSEJ5S0c0c0lpNGlMbU52Ym1OaGRDaHpLU2w5S1gxbWRXNWpkR2x2YmlCNmN5Z3BlM0psZEhWeWJpQjBaU2dwTGtSaGRHRmtiMmRGZG1WdWRFSnlhV1JuWlgxMllYSWdhWFE5ZTBoSlJFUkZUam9pZG1semFXSnBiR2wwZVY5b2FXUmtaVzRpTEZWT1RFOUJSRWxPUnpvaVltVm1iM0psWDNWdWJHOWhaQ0lzVUVGSFJVaEpSRVU2SW5CaFoyVmZhR2xrWlNJc1JsSlBXa1ZPT2lKd1lXZGxYMlp5YjNwbGJpSjlPMloxYm1OMGFXOXVJRkp6S0c0cGUzSmxkSFZ5YmlCdVpYY2dVaWhtZFc1amRHbHZiaWh5S1h0MllYSWdZVDFNZENodUxIZHBibVJ2ZHl4YkluWnBjMmxpYVd4cGRIbGphR0Z1WjJVaUxDSm1jbVZsZW1VaVhTeG1kVzVqZEdsdmJpaHNLWHRzTG5SNWNHVTlQVDBpZG1semFXSnBiR2wwZVdOb1lXNW5aU0ltSm1SdlkzVnRaVzUwTG5acGMybGlhV3hwZEhsVGRHRjBaVDA5UFNKb2FXUmtaVzRpUDNJdWJtOTBhV1o1S0h0eVpXRnpiMjQ2YVhRdVNFbEVSRVZPZlNrNmJDNTBlWEJsUFQwOUltWnlaV1Y2WlNJbUpuSXVibTkwYVdaNUtIdHlaV0Z6YjI0NmFYUXVSbEpQV2tWT2ZTbDlMSHRqWVhCMGRYSmxPaUV3ZlNrdWMzUnZjQ3h6UFhCbEtHNHNkMmx1Wkc5M0xDSmlaV1p2Y21WMWJteHZZV1FpTEdaMWJtTjBhVzl1S0NsN2NpNXViM1JwWm5rb2UzSmxZWE52YmpwcGRDNVZUa3hQUVVSSlRrZDlLWDBwTG5OMGIzQTdjbVYwZFhKdUlHWjFibU4wYVc5dUtDbDdZU2dwTEhNb0tYMTlLWDFtZFc1amRHbHZiaUJQY3lodUtYdHlaWFIxY200Z2VXVW9iV1VvYVhRcExHNHBmV1oxYm1OMGFXOXVJRkJ6S0c0cGUzWmhjaUJ5UFc0dVpXNWpiMlJsY2l4aFBXNHVjbVZ4ZFdWemRDeHpQVzR1Wm14MWMyaERiMjUwY205c2JHVnlMR3c5Ymk1dFpYTnpZV2RsUW5sMFpYTk1hVzFwZEN4a1BYdDlMR2c5Y3k1bWJIVnphRTlpYzJWeWRtRmliR1V1YzNWaWMyTnlhV0psS0daMWJtTjBhVzl1S0dVcGUzSmxkSFZ5YmlCbktHVXBmU2s3Wm5WdVkzUnBiMjRnYnlobExIUXNhU2w3Y3k1dWIzUnBabmxDWldadmNtVkJaR1JOWlhOellXZGxLSFFwTEdraFBUMTJiMmxrSURBL0tHUmJhVjA5WlN4ekxtNXZkR2xtZVVGbWRHVnlRV1JrVFdWemMyRm5aU2dwS1RweUxuZHlhWFJsS0hJdWFYTkZiWEIwZVQ5bE9tQUtZQzVqYjI1allYUW9aU2tzWm5WdVkzUnBiMjRvWmlsN2N5NXViM1JwWm5sQlpuUmxja0ZrWkUxbGMzTmhaMlVvWmkxMEtYMHBmV1oxYm1OMGFXOXVJRjhvWlNsN2NtVjBkWEp1SUdVaFBUMTJiMmxrSURBbUptUmJaVjBoUFQxMmIybGtJREI5Wm5WdVkzUnBiMjRnY0NobEtYdDJZWElnZEQxa1cyVmRPMlJsYkdWMFpTQmtXMlZkTzNaaGNpQnBQWEl1WlhOMGFXMWhkR1ZGYm1OdlpHVmtRbmwwWlhORGIzVnVkQ2gwS1R0ekxtNXZkR2xtZVVGbWRHVnlVbVZ0YjNabFRXVnpjMkZuWlNocEtYMW1kVzVqZEdsdmJpQmpLR1VzZENsN2RtRnlJR2s5ZFdVb1pTa3NaajF5TG1WemRHbHRZWFJsUlc1amIyUmxaRUo1ZEdWelEyOTFiblFvYVNrN2FXWW9aajQ5YkNsN2VpNTNZWEp1S0NKRWFYTmpZWEprWldRZ1lTQnRaWE56WVdkbElIZG9iM05sSUhOcGVtVWdkMkZ6SUdKcFoyZGxjaUIwYUdGdUlIUm9aU0J0WVhocGJYVnRJR0ZzYkc5M1pXUWdjMmw2WlNBaUxtTnZibU5oZENoc0xDSkxRaTRnSWlrdVkyOXVZMkYwS0VSbExDSWdJaWt1WTI5dVkyRjBLRXQwTENJdkkzUmxZMmh1YVdOaGJDMXNhVzFwZEdGMGFXOXVjeUlwS1R0eVpYUjFjbTU5WHloMEtTWW1jQ2gwS1N4dktHa3NaaXgwS1gxbWRXNWpkR2x2YmlCbktHVXBlM1poY2lCMFBXMWxLR1FwTG1wdmFXNG9ZQXBnS1R0a1BYdDlPM1poY2lCcFBVOXpLR1V1Y21WaGMyOXVLU3htUFdrL1lTNXpaVzVrVDI1RmVHbDBPbUV1YzJWdVpEdHBaaWhwSmlaeUxtbHpRWE41Ym1NcGUzWmhjaUIxUFhJdVptbHVhWE5vVTNsdVl5Z3BPM1V1YjNWMGNIVjBRbmwwWlhORGIzVnVkQ1ltWmloTmFTaDFLU2s3ZG1GeUlIWTlXM1V1Y0dWdVpHbHVaMFJoZEdFc2RGMHVabWxzZEdWeUtFSnZiMnhsWVc0cExtcHZhVzRvWUFwZ0tUdDJKaVptS0h0a1lYUmhPbllzWW5sMFpYTkRiM1Z1ZERwamRDaDJLWDBwZldWc2MyVWdkQ1ltY2k1M2NtbDBaU2h5TG1selJXMXdkSGsvZERwZ0NtQXVZMjl1WTJGMEtIUXBLU3h5TG1acGJtbHphQ2htZFc1amRHbHZiaWg1S1h0bUtFMXBLSGtwS1gwcGZYSmxkSFZ5Ym50bWJIVnphRU52Ym5SeWIyeHNaWEk2Y3l4aFpHUTZZeXgxY0hObGNuUTZZeXh6ZEc5d09tZ3VkVzV6ZFdKelkzSnBZbVY5ZldaMWJtTjBhVzl1SUUxcEtHNHBlM1poY2lCeU8zSmxkSFZ5YmlCMGVYQmxiMllnYmk1dmRYUndkWFE5UFNKemRISnBibWNpUDNJOWJpNXZkWFJ3ZFhRNmNqMXVaWGNnUW14dllpaGJiaTV2ZFhSd2RYUmRMSHQwZVhCbE9pSjBaWGgwTDNCc1lXbHVJbjBwTEh0a1lYUmhPbklzWW5sMFpYTkRiM1Z1ZERwdUxtOTFkSEIxZEVKNWRHVnpRMjkxYm5Rc1pXNWpiMlJwYm1jNmJpNWxibU52WkdsdVozMTlablZ1WTNScGIyNGdSSE1vYmlsN2RtRnlJSEk5Ymk1dFpYTnpZV2RsYzB4cGJXbDBMR0U5Ymk1aWVYUmxjMHhwYldsMExITTliaTVrZFhKaGRHbHZia3hwYldsMExHdzliaTV3WVdkbFJYaHBkRTlpYzJWeWRtRmliR1VzWkQxdUxuTmxjM05wYjI1RmVIQnBjbVZQWW5ObGNuWmhZbXhsTEdnOWJDNXpkV0p6WTNKcFltVW9ablZ1WTNScGIyNG9aaWw3Y21WMGRYSnVJR2NvWmk1eVpXRnpiMjRwZlNrc2J6MWtMbk4xWW5OamNtbGlaU2htZFc1amRHbHZiaWdwZTNKbGRIVnliaUJuS0NKelpYTnphVzl1WDJWNGNHbHlaU0lwZlNrc1h6MXVaWGNnVWlobWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCbWRXNWpkR2x2YmlncGUyZ3VkVzV6ZFdKelkzSnBZbVVvS1N4dkxuVnVjM1ZpYzJOeWFXSmxLQ2w5ZlNrc2NEMHdMR005TUR0bWRXNWpkR2x2YmlCbktHWXBlMmxtS0dNaFBUMHdLWHQyWVhJZ2RUMWpMSFk5Y0R0alBUQXNjRDB3TEdrb0tTeGZMbTV2ZEdsbWVTaDdjbVZoYzI5dU9tWXNiV1Z6YzJGblpYTkRiM1Z1ZERwMUxHSjVkR1Z6UTI5MWJuUTZkbjBwZlgxMllYSWdaVHRtZFc1amRHbHZiaUIwS0NsN1pUMDlQWFp2YVdRZ01DWW1LR1U5Um1Vb1puVnVZM1JwYjI0b0tYdG5LQ0prZFhKaGRHbHZibDlzYVcxcGRDSXBmU3h6S1NsOVpuVnVZM1JwYjI0Z2FTZ3BlMXAwS0dVcExHVTlkbTlwWkNBd2ZYSmxkSFZ5Ym50bWJIVnphRTlpYzJWeWRtRmliR1U2WHl4blpYUWdiV1Z6YzJGblpYTkRiM1Z1ZENncGUzSmxkSFZ5YmlCamZTeHViM1JwWm5sQ1pXWnZjbVZCWkdSTlpYTnpZV2RsT21aMWJtTjBhVzl1S0dZcGUzQXJaajQ5WVNZbVp5Z2lZbmwwWlhOZmJHbHRhWFFpS1N4akt6MHhMSEFyUFdZc2RDZ3BmU3h1YjNScFpubEJablJsY2tGa1pFMWxjM05oWjJVNlpuVnVZM1JwYjI0b1ppbDdaajA5UFhadmFXUWdNQ1ltS0dZOU1Da3NjQ3M5Wml4alBqMXlQMmNvSW0xbGMzTmhaMlZ6WDJ4cGJXbDBJaWs2Y0Q0OVlTWW1aeWdpWW5sMFpYTmZiR2x0YVhRaUtYMHNibTkwYVdaNVFXWjBaWEpTWlcxdmRtVk5aWE56WVdkbE9tWjFibU4wYVc5dUtHWXBlM0F0UFdZc1l5MDlNU3hqUFQwOU1DWW1hU2dwZlgxOVpuVnVZM1JwYjI0Z1Iya29iaXh5TEdFc2N5eHNMR1FzYUNsN2FEMDlQWFp2YVdRZ01DWW1LR2c5VUhNcE8zWmhjaUJ2UFhBb2JpeHlLU3hmUFdFbUpuQW9iaXhoS1R0bWRXNWpkR2x2YmlCd0tHTXNaeWw3ZG1GeUlHVTlaeTVsYm1Sd2IybHVkQ3gwUFdjdVpXNWpiMlJsY2p0eVpYUjFjbTRnYUNoN1pXNWpiMlJsY2pwMExISmxjWFZsYzNRNlNYTW9ZeXhsTEdNdVltRjBZMmhDZVhSbGMweHBiV2wwTEhNcExHWnNkWE5vUTI5dWRISnZiR3hsY2pwRWN5aDdiV1Z6YzJGblpYTk1hVzFwZERwakxtSmhkR05vVFdWemMyRm5aWE5NYVcxcGRDeGllWFJsYzB4cGJXbDBPbU11WW1GMFkyaENlWFJsYzB4cGJXbDBMR1IxY21GMGFXOXVUR2x0YVhRNll5NW1iSFZ6YUZScGJXVnZkWFFzY0dGblpVVjRhWFJQWW5ObGNuWmhZbXhsT213c2MyVnpjMmx2YmtWNGNHbHlaVTlpYzJWeWRtRmliR1U2WkgwcExHMWxjM05oWjJWQ2VYUmxjMHhwYldsME9tTXViV1Z6YzJGblpVSjVkR1Z6VEdsdGFYUjlLWDF5WlhSMWNtNTdabXgxYzJoUFluTmxjblpoWW14bE9tOHVabXgxYzJoRGIyNTBjbTlzYkdWeUxtWnNkWE5vVDJKelpYSjJZV0pzWlN4aFpHUTZablZ1WTNScGIyNG9ZeXhuS1h0blBUMDlkbTlwWkNBd0ppWW9aejBoTUNrc2J5NWhaR1FvWXlrc1h5WW1aeVltWHk1aFpHUW9ZUzUwY21GdWMyWnZjbTFOWlhOellXZGxQMkV1ZEhKaGJuTm1iM0p0VFdWemMyRm5aU2hqS1RwaktYMHNkWEJ6WlhKME9tWjFibU4wYVc5dUtHTXNaeWw3Ynk1MWNITmxjblFvWXl4bktTeGZKaVpmTG5Wd2MyVnlkQ2hoTG5SeVlXNXpabTl5YlUxbGMzTmhaMlUvWVM1MGNtRnVjMlp2Y20xTlpYTnpZV2RsS0dNcE9tTXNaeWw5TEhOMGIzQTZablZ1WTNScGIyNG9LWHR2TG5OMGIzQW9LU3hmSmlaZkxuTjBiM0FvS1gxOWZXWjFibU4wYVc5dUlISjBLQ2w3ZG1GeUlHNDlJaUlzY2owd08zSmxkSFZ5Ym50cGMwRnplVzVqT2lFeExHZGxkQ0JwYzBWdGNIUjVLQ2w3Y21WMGRYSnVJVzU5TEhkeWFYUmxPbVoxYm1OMGFXOXVLR0VzY3lsN2RtRnlJR3c5WTNRb1lTazdjaXM5YkN4dUt6MWhMSE1tSm5Nb2JDbDlMR1pwYm1semFEcG1kVzVqZEdsdmJpaGhLWHRoS0hSb2FYTXVabWx1YVhOb1UzbHVZeWdwS1gwc1ptbHVhWE5vVTNsdVl6cG1kVzVqZEdsdmJpZ3BlM1poY2lCaFBYdHZkWFJ3ZFhRNmJpeHZkWFJ3ZFhSQ2VYUmxjME52ZFc1ME9uSXNjbUYzUW5sMFpYTkRiM1Z1ZERweUxIQmxibVJwYm1kRVlYUmhPaUlpZlR0eVpYUjFjbTRnYmowaUlpeHlQVEFzWVgwc1pYTjBhVzFoZEdWRmJtTnZaR1ZrUW5sMFpYTkRiM1Z1ZERwbWRXNWpkR2x2YmloaEtYdHlaWFIxY200Z1lTNXNaVzVuZEdoOWZYMTJZWElnVG5NOVpuVnVZM1JwYjI0b0tYdG1kVzVqZEdsdmJpQnVLQ2w3ZEdocGN5NWpZV3hzWW1GamEzTTllMzE5Y21WMGRYSnVJRzR1Y0hKdmRHOTBlWEJsTG01dmRHbG1lVDFtZFc1amRHbHZiaWh5TEdFcGUzWmhjaUJ6UFhSb2FYTXVZMkZzYkdKaFkydHpXM0pkTzNNbUpuTXVabTl5UldGamFDaG1kVzVqZEdsdmJpaHNLWHR5WlhSMWNtNGdiQ2hoS1gwcGZTeHVMbkJ5YjNSdmRIbHdaUzV6ZFdKelkzSnBZbVU5Wm5WdVkzUnBiMjRvY2l4aEtYdDJZWElnY3oxMGFHbHpPM0psZEhWeWJpQjBhR2x6TG1OaGJHeGlZV05yYzF0eVhYeDhLSFJvYVhNdVkyRnNiR0poWTJ0elczSmRQVnRkS1N4MGFHbHpMbU5oYkd4aVlXTnJjMXR5WFM1d2RYTm9LR0VwTEh0MWJuTjFZbk5qY21saVpUcG1kVzVqZEdsdmJpZ3BlM011WTJGc2JHSmhZMnR6VzNKZFBYTXVZMkZzYkdKaFkydHpXM0pkTG1acGJIUmxjaWhtZFc1amRHbHZiaWhzS1h0eVpYUjFjbTRnWVNFOVBXeDlLWDE5ZlN4dWZTZ3BPMloxYm1OMGFXOXVJRTF6S0c0c2NpeGhLWHQyWVhJZ2N6MHdMR3c5SVRFN2NtVjBkWEp1ZTJselRHbHRhWFJTWldGamFHVmtPbVoxYm1OMGFXOXVLQ2w3YVdZb2N6MDlQVEFtSmtabEtHWjFibU4wYVc5dUtDbDdjejB3ZlN4elpTa3NjeXM5TVN4elBEMXlmSHhzS1hKbGRIVnliaUJzUFNFeExDRXhPMmxtS0hNOVBUMXlLekVwZTJ3OUlUQTdkSEo1ZTJFb2UyMWxjM05oWjJVNklsSmxZV05vWldRZ2JXRjRJRzUxYldKbGNpQnZaaUFpTG1OdmJtTmhkQ2h1TENKeklHSjVJRzFwYm5WMFpUb2dJaWt1WTI5dVkyRjBLSElwTEhOdmRYSmpaVHBJTGtGSFJVNVVMSE4wWVhKMFEyeHZZMnR6T21WbEtDbDlLWDFtYVc1aGJHeDVlMnc5SVRGOWZYSmxkSFZ5YmlFd2ZYMTlkbUZ5SUU5MExGQjBQVzVsZHlCWFpXRnJUV0Z3TzJaMWJtTjBhVzl1SUVkektHNHBlM0psZEhWeWJpQlBkSHg4S0U5MFBVaHpLRzRwS1N4UGRIMW1kVzVqZEdsdmJpQkljeWh1S1h0eVpYUjFjbTRnYm1WM0lGSW9ablZ1WTNScGIyNG9jaWw3ZG1GeUlHRTlZMlVvV0UxTVNIUjBjRkpsY1hWbGMzUXVjSEp2ZEc5MGVYQmxMQ0p2Y0dWdUlpeFpjeWt1YzNSdmNDeHpQV05sS0ZoTlRFaDBkSEJTWlhGMVpYTjBMbkJ5YjNSdmRIbHdaU3dpYzJWdVpDSXNablZ1WTNScGIyNG9aQ2w3Vm5Nb1pDeHVMSElwZlN4N1kyOXRjSFYwWlVoaGJtUnNhVzVuVTNSaFkyczZJVEI5S1M1emRHOXdMR3c5WTJVb1dFMU1TSFIwY0ZKbGNYVmxjM1F1Y0hKdmRHOTBlWEJsTENKaFltOXlkQ0lzYW5NcExuTjBiM0E3Y21WMGRYSnVJR1oxYm1OMGFXOXVLQ2w3WVNncExITW9LU3hzS0NsOWZTbDlablZ1WTNScGIyNGdXWE1vYmlsN2RtRnlJSEk5Ymk1MFlYSm5aWFFzWVQxdUxuQmhjbUZ0WlhSbGNuTXNjejFoV3pCZExHdzlZVnN4WFR0UWRDNXpaWFFvY2l4N2MzUmhkR1U2SW05d1pXNGlMRzFsZEdodlpEcFRkSEpwYm1jb2N5a3VkRzlWY0hCbGNrTmhjMlVvS1N4MWNtdzZRWFFvVTNSeWFXNW5LR3dwS1gwcGZXWjFibU4wYVc5dUlGWnpLRzRzY2l4aEtYdDJZWElnY3oxdUxuUmhjbWRsZEN4c1BXNHVhR0Z1Wkd4cGJtZFRkR0ZqYXl4a1BWQjBMbWRsZENoektUdHBaaWhrS1h0MllYSWdhRDFrTzJndWMzUmhkR1U5SW5OMFlYSjBJaXhvTG5OMFlYSjBRMnh2WTJ0elBXVmxLQ2tzYUM1cGMwRmliM0owWldROUlURXNhQzU0YUhJOWN5eG9MbWhoYm1Sc2FXNW5VM1JoWTJzOWJEdDJZWElnYnowaE1TeGZQV05sS0hNc0ltOXVjbVZoWkhsemRHRjBaV05vWVc1blpTSXNablZ1WTNScGIyNG9LWHR6TG5KbFlXUjVVM1JoZEdVOVBUMVlUVXhJZEhSd1VtVnhkV1Z6ZEM1RVQwNUZKaVp3S0NsOUtTNXpkRzl3TEhBOVpuVnVZM1JwYjI0b0tYdHBaaWhqS0Nrc1h5Z3BMQ0Z2S1h0dlBTRXdPM1poY2lCblBXUTdaeTV6ZEdGMFpUMGlZMjl0Y0d4bGRHVWlMR2N1WkhWeVlYUnBiMjQ5Wm5Jb2FDNXpkR0Z5ZEVOc2IyTnJjeTUwYVcxbFUzUmhiWEFzVVNncEtTeG5Mbk4wWVhSMWN6MXpMbk4wWVhSMWN5eGhMbTV2ZEdsbWVTaGZjaWhuS1NsOWZTeGpQWEJsS0hJc2N5d2liRzloWkdWdVpDSXNjQ2t1YzNSdmNEdGhMbTV2ZEdsbWVTaG9LWDE5Wm5WdVkzUnBiMjRnYW5Nb2JpbDdkbUZ5SUhJOWJpNTBZWEpuWlhRc1lUMVFkQzVuWlhRb2NpazdZU1ltS0dFdWFYTkJZbTl5ZEdWa1BTRXdLWDEyWVhJZ1JIUTdablZ1WTNScGIyNGdTR2tvS1h0eVpYUjFjbTRnUkhSOGZDaEVkRDFMY3lncEtTeEVkSDFtZFc1amRHbHZiaUJMY3lncGUzSmxkSFZ5YmlCdVpYY2dVaWhtZFc1amRHbHZiaWh1S1h0cFppaDNhVzVrYjNjdVptVjBZMmdwZTNaaGNpQnlQV05sS0hkcGJtUnZkeXdpWm1WMFkyZ2lMR1oxYm1OMGFXOXVLR0VwZTNKbGRIVnliaUJ4Y3loaExHNHBmU3g3WTI5dGNIVjBaVWhoYm1Sc2FXNW5VM1JoWTJzNklUQjlLUzV6ZEc5d08zSmxkSFZ5YmlCeWZYMHBmV1oxYm1OMGFXOXVJSEZ6S0c0c2NpbDdkbUZ5SUdFOWJpNXdZWEpoYldWMFpYSnpMSE05Ymk1dmJsQnZjM1JEWVd4c0xHdzliaTVvWVc1a2JHbHVaMU4wWVdOckxHUTlZVnN3WFN4b1BXRmJNVjBzYnoxb0ppWm9MbTFsZEdodlpEdHZQVDA5ZG05cFpDQXdKaVprSUdsdWMzUmhibU5sYjJZZ1VtVnhkV1Z6ZENZbUtHODlaQzV0WlhSb2IyUXBPM1poY2lCZlBXOGhQVDEyYjJsa0lEQS9VM1J5YVc1bktHOHBMblJ2VlhCd1pYSkRZWE5sS0NrNklrZEZWQ0lzY0Qxa0lHbHVjM1JoYm1ObGIyWWdVbVZ4ZFdWemREOWtMblZ5YkRwQmRDaFRkSEpwYm1jb1pDa3BMR005WldVb0tTeG5QWHR6ZEdGMFpUb2ljM1JoY25RaUxHbHVhWFE2YUN4cGJuQjFkRHBrTEcxbGRHaHZaRHBmTEhOMFlYSjBRMnh2WTJ0ek9tTXNkWEpzT25Bc2FHRnVaR3hwYm1kVGRHRmphenBzZlR0eUxtNXZkR2xtZVNobktTeGhXekJkUFdjdWFXNXdkWFFzWVZzeFhUMW5MbWx1YVhRc2N5aG1kVzVqZEdsdmJpaGxLWHR5WlhSMWNtNGdWM01vY2l4bExHY3BmU2w5Wm5WdVkzUnBiMjRnVjNNb2JpeHlMR0VwZTNaaGNpQnpQV0U3Wm5WdVkzUnBiMjRnYkNoa0tYdHpMbk4wWVhSbFBTSnlaWE52YkhabElpeFBLSE1zWkNrc2JpNXViM1JwWm5rb2N5bDljaTUwYUdWdUtFSW9ablZ1WTNScGIyNG9aQ2w3YkNoN2NtVnpjRzl1YzJVNlpDeHlaWE53YjI1elpWUjVjR1U2WkM1MGVYQmxMSE4wWVhSMWN6cGtMbk4wWVhSMWN5eHBjMEZpYjNKMFpXUTZJVEY5S1gwcExFSW9ablZ1WTNScGIyNG9aQ2w3ZG1GeUlHZ3NienRzS0h0emRHRjBkWE02TUN4cGMwRmliM0owWldRNktDaHZQU2hvUFhNdWFXNXBkQ2s5UFQxdWRXeHNmSHhvUFQwOWRtOXBaQ0F3UDNadmFXUWdNRHBvTG5OcFoyNWhiQ2s5UFQxdWRXeHNmSHh2UFQwOWRtOXBaQ0F3UDNadmFXUWdNRHB2TG1GaWIzSjBaV1FwZkh4a0lHbHVjM1JoYm1ObGIyWWdSRTlOUlhoalpYQjBhVzl1Smlaa0xtTnZaR1U5UFQxRVQwMUZlR05sY0hScGIyNHVRVUpQVWxSZlJWSlNMR1Z5Y205eU9tUjlLWDBwS1gxMllYSWdUblE5ZTMwN1puVnVZM1JwYjI0Z1dITW9iaWw3ZG1GeUlISTliaTV0WVhBb1puVnVZM1JwYjI0b1lTbDdjbVYwZFhKdUlFNTBXMkZkZkh3b1RuUmJZVjA5U25Nb1lTa3BMRTUwVzJGZGZTazdjbVYwZFhKdUlHVnBMbUZ3Y0d4NUtIWnZhV1FnTUN4eUtYMW1kVzVqZEdsdmJpQktjeWh1S1h0eVpYUjFjbTRnYm1WM0lGSW9ablZ1WTNScGIyNG9jaWw3ZG1GeUlHRTlWMXR1WFR0eVpYUjFjbTRnVjF0dVhUMW1kVzVqZEdsdmJpZ3BlMlp2Y2loMllYSWdjejFiWFN4c1BUQTdiRHhoY21kMWJXVnVkSE11YkdWdVozUm9PMndyS3lselcyeGRQV0Z5WjNWdFpXNTBjMXRzWFR0aExtRndjR3g1S0dOdmJuTnZiR1VzY3lrN2RtRnlJR1E5SkdVb0tUdENaU2htZFc1amRHbHZiaWdwZTNJdWJtOTBhV1o1S0NSektITXNiaXhrS1NsOUtYMHNablZ1WTNScGIyNG9LWHRYVzI1ZFBXRjlmU2w5Wm5WdVkzUnBiMjRnSkhNb2JpeHlMR0VwZTNaaGNpQnpQVzR1YldGd0tHWjFibU4wYVc5dUtHZ3BlM0psZEhWeWJpQmFjeWhvS1gwcExtcHZhVzRvSWlBaUtTeHNPMmxtS0hJOVBUMU1MbVZ5Y205eUtYdDJZWElnWkQxb2NpaHVMR1oxYm1OMGFXOXVLR2dwZTNKbGRIVnliaUJvSUdsdWMzUmhibU5sYjJZZ1JYSnliM0o5S1R0c1BYdHpkR0ZqYXpwa1AyaGxLRW9vWkNrcE9uWnZhV1FnTUN4bWFXNW5aWEp3Y21sdWREcHRhU2hrS1N4allYVnpaWE02WkQ5aWFTaGtMQ0pqYjI1emIyeGxJaWs2ZG05cFpDQXdMSE4wWVhKMFEyeHZZMnR6T21WbEtDa3NiV1Z6YzJGblpUcHpMSE52ZFhKalpUcElMa05QVGxOUFRFVXNhR0Z1Wkd4cGJtYzZJbWhoYm1Sc1pXUWlMR2hoYm1Sc2FXNW5VM1JoWTJzNllYMTljbVYwZFhKdWUyRndhVHB5TEcxbGMzTmhaMlU2Y3l4bGNuSnZjanBzTEdoaGJtUnNhVzVuVTNSaFkyczZZWDE5Wm5WdVkzUnBiMjRnV25Nb2JpbDdjbVYwZFhKdUlIUjVjR1Z2WmlCdVBUMGljM1J5YVc1bklqOGtLRzRwT200Z2FXNXpkR0Z1WTJWdlppQkZjbkp2Y2o5MmFTaEtLRzRwS1RwMVpTZ2tLRzRwTEhadmFXUWdNQ3d5S1gxbWRXNWpkR2x2YmlCTmRDaHVLWHQyWVhJZ2NqMTdmU3hoUFc1bGR5QlNMSE05ZTJkbGRFTnZiblJsZUhRNlpuVnVZM1JwYjI0b0tYdHlaWFIxY200Z1JXa29jaWw5TEhObGRFTnZiblJsZUhRNlpuVnVZM1JwYjI0b2JDbDdhM1FvYkNrOVBUMGliMkpxWldOMElqOG9jajBrS0d3cExHNG1KbTR1ZFhCa1lYUmxRM1Z6ZEc5dFpYSkVZWFJoS0hJcEtUcHpMbU5zWldGeVEyOXVkR1Y0ZENncExHRXVibTkwYVdaNUtDbDlMSE5sZEVOdmJuUmxlSFJRY205d1pYSjBlVHBtZFc1amRHbHZiaWhzTEdRcGUzSmJiRjA5SkNoa0tTeHVKaVp1TG5Wd1pHRjBaVU4xYzNSdmJXVnlSR0YwWVNoeUtTeGhMbTV2ZEdsbWVTZ3BmU3h5WlcxdmRtVkRiMjUwWlhoMFVISnZjR1Z5ZEhrNlpuVnVZM1JwYjI0b2JDbDdaR1ZzWlhSbElISmJiRjBzYmlZbWJpNTFjR1JoZEdWRGRYTjBiMjFsY2tSaGRHRW9jaWtzWVM1dWIzUnBabmtvS1gwc1kyeGxZWEpEYjI1MFpYaDBPbVoxYm1OMGFXOXVLQ2w3Y2oxN2ZTeHVKaVp1TG5KbGMyVjBRM1Z6ZEc5dFpYSkVZWFJoS0Nrc1lTNXViM1JwWm5rb0tYMHNZMmhoYm1kbFQySnpaWEoyWVdKc1pUcGhmVHR5WlhSMWNtNGdjMzEyWVhJZ1VYTTlJbDlrWkY5aklpeGxiejFiWFR0bWRXNWpkR2x2YmlCWmFTaHVMSElzWVN4ektYdDJZWElnYkQxMGJ5aGhMSE1wTzJWdkxuQjFjMmdvY0dVb2JpeDNhVzVrYjNjc0luTjBiM0poWjJVaUxHWjFibU4wYVc5dUtGOHBlM1poY2lCd1BWOHVhMlY1TzJ3OVBUMXdKaVprS0NsOUtTa3NjaTVqYUdGdVoyVlBZbk5sY25aaFlteGxMbk4xWW5OamNtbGlaU2hvS1N4eUxuTmxkRU52Ym5SbGVIUW9kMlVvYnlncExISXVaMlYwUTI5dWRHVjRkQ2dwS1NrN1puVnVZM1JwYjI0Z1pDZ3BlM0l1YzJWMFEyOXVkR1Y0ZENodktDa3BmV1oxYm1OMGFXOXVJR2dvS1h0c2IyTmhiRk4wYjNKaFoyVXVjMlYwU1hSbGJTaHNMRXBUVDA0dWMzUnlhVzVuYVdaNUtISXVaMlYwUTI5dWRHVjRkQ2dwS1NsOVpuVnVZM1JwYjI0Z2J5Z3BlM1poY2lCZlBXeHZZMkZzVTNSdmNtRm5aUzVuWlhSSmRHVnRLR3dwTzNKbGRIVnliaUJmSVQwOWJuVnNiRDlLVTA5T0xuQmhjbk5sS0Y4cE9udDlmWDFtZFc1amRHbHZiaUIwYnlodUxISXBlM0psZEhWeWJpSWlMbU52Ym1OaGRDaFJjeXdpWHlJcExtTnZibU5oZENodUxDSmZJaWt1WTI5dVkyRjBLSElwZlhaaGNpQnBiejB6S2xnc2NtODlNVFlxV0N4dWJ6MHlNREE3Wm5WdVkzUnBiMjRnYzI4b2JpbDdiajA5UFhadmFXUWdNQ1ltS0c0OU1pazdkbUZ5SUhJOWJtVjNJRTFoY0N4aFBTRXhPMloxYm1OMGFXOXVJSE1vYkNsN2FXWW9iRDA5UFhadmFXUWdNQ1ltS0d3OU1Da3NJU2hoZkh4dVBUMDlNQ2twZTNaaGNpQmtQVzQ5UFQweVAybHZPbkp2TEdnOWJEdHlMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNG9ieWw3YUNzOWJ5NW5aWFJDZVhSbGMwTnZkVzUwS0NsOUtTeG9QbVFtSmlodmJ5aGtLU3hoUFNFd0tYMTljbVYwZFhKdWUyTnlaV0YwWlVSbGRHRmphR1ZrVkhKaFkydGxjanBtZFc1amRHbHZiaWdwZTNaaGNpQnNQVlpwS0daMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhNb2JDNW5aWFJDZVhSbGMwTnZkVzUwS0NrcGZTazdjbVYwZFhKdUlHeDlMR2RsZEU5eVEzSmxZWFJsVkhKaFkydGxjanBtZFc1amRHbHZiaWhzS1h0eVpYUjFjbTRnY2k1b1lYTW9iQ2w4ZkhJdWMyVjBLR3dzVm1rb2N5a3BMSEl1WjJWMEtHd3BmU3h6WlhSRGIyMXdjbVZ6YzJsdmJsTjBZWFIxY3pwbWRXNWpkR2x2Ymloc0tYdHVQVDA5TUNZbUtHNDliQ3h6S0NrcGZTeG5aWFJEYjIxd2NtVnpjMmx2YmxOMFlYUjFjenBtZFc1amRHbHZiaWdwZTNKbGRIVnliaUJ1ZlN4emRHOXdPbVoxYm1OMGFXOXVLQ2w3Y2k1bWIzSkZZV05vS0daMWJtTjBhVzl1S0d3cGUzSmxkSFZ5YmlCc0xuTjBiM0FvS1gwcExISXVZMnhsWVhJb0tYMTlmV1oxYm1OMGFXOXVJRlpwS0c0cGUzWmhjaUJ5UFRBc1lUMTBhU2htZFc1amRHbHZiaWhvS1h0eVBXTjBLSFZsS0dncEtTeHVLQ2w5TEc1dktTeHpQV0V1ZEdoeWIzUjBiR1ZrTEd3OVlTNWpZVzVqWld3c1pEMW1kVzVqZEdsdmJpZ3BlMndvS1N4eVBUQjlPM0psZEhWeWJudDFjR1JoZEdWRGRYTjBiMjFsY2tSaGRHRTZablZ1WTNScGIyNG9hQ2w3ZG5Rb2FDay9aQ2dwT25Nb2FDbDlMSEpsYzJWMFEzVnpkRzl0WlhKRVlYUmhPbVFzWjJWMFFubDBaWE5EYjNWdWREcG1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQnlmU3h6ZEc5d09tWjFibU4wYVc5dUtDbDdiQ2dwZlgxOVpuVnVZM1JwYjI0Z2IyOG9iaWw3ZWk1M1lYSnVLQ0pEZFhOMGIyMWxjaUJrWVhSaElHVjRZMlZsWkhNZ2RHaGxJSEpsWTI5dGJXVnVaR1ZrSUNJdVkyOXVZMkYwS0c0dldDd2lTMmxDSUhSb2NtVnphRzlzWkM0Z0lpa3VZMjl1WTJGMEtFUmxMQ0lnSWlrdVkyOXVZMkYwS0V0MExDSXZJMk4xYzNSdmJXVnlMV1JoZEdFdFpYaGpaV1ZrY3kxMGFHVXRjbVZqYjIxdFpXNWtaV1F0ZEdoeVpYTm9iMnhrTFhkaGNtNXBibWNpS1NsOVpuVnVZM1JwYjI0Z1lXOG9iaXh5TEdFcGUzWmhjaUJ6UFc0dVoyVjBVbVZoWkdWeUtDa3NiRDFiWFN4a1BUQTdhQ2dwTzJaMWJtTjBhVzl1SUdnb0tYdHpMbkpsWVdRb0tTNTBhR1Z1S0VJb1puVnVZM1JwYjI0b1h5bDdhV1lvWHk1a2IyNWxLWHR2S0NrN2NtVjBkWEp1Zld3dWNIVnphQ2hmTG5aaGJIVmxLU3hrS3oxZkxuWmhiSFZsTG14bGJtZDBhQ3hrUG1FdVlubDBaWE5NYVcxcGREOXZLQ2s2YUNncGZTa3NRaWhtZFc1amRHbHZiaWhmS1h0eVpYUjFjbTRnY2loZktYMHBLWDFtZFc1amRHbHZiaUJ2S0NsN2N5NWpZVzVqWld3b0tTNWpZWFJqYUNocFpTazdkbUZ5SUY4c2NEdDdkbUZ5SUdNN2FXWW9iQzVzWlc1bmRHZzlQVDB4S1dNOWJGc3dYVHRsYkhObGUyTTlibVYzSUZWcGJuUTRRWEp5WVhrb1pDazdkbUZ5SUdjOU1EdHNMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNG9aU2w3WXk1elpYUW9aU3huS1N4bkt6MWxMbXhsYm1kMGFIMHBmVjg5WXk1emJHbGpaU2d3TEdFdVlubDBaWE5NYVcxcGRDa3NjRDFqTG14bGJtZDBhRDVoTG1KNWRHVnpUR2x0YVhSOWNpaDJiMmxrSURBc1h5eHdLWDE5ZG1GeUlHWnZQU0prWVhSaFpHOW5MWE41Ym5Sb1pYUnBZM010Y0hWaWJHbGpMV2xrSWl4c2J6MGlaR0YwWVdSdlp5MXplVzUwYUdWMGFXTnpMWEpsYzNWc2RDMXBaQ0lzZFc4OUltUmhkR0ZrYjJjdGMzbHVkR2hsZEdsamN5MXBibXBsWTNSekxYSjFiU0k3Wm5WdVkzUnBiMjRnYW1rb0tYdHlaWFIxY200aElTaDNhVzVrYjNjdVgwUkJWRUZFVDBkZlUxbE9WRWhGVkVsRFUxOUpUa3BGUTFSVFgxSlZUWHg4WVdVb2RXOHBLWDFtZFc1amRHbHZiaUJvYnlncGUzWmhjaUJ1UFhkcGJtUnZkeTVmUkVGVVFVUlBSMTlUV1U1VVNFVlVTVU5UWDFCVlFreEpRMTlKUkh4OFlXVW9abThwTzNKbGRIVnliaUIwZVhCbGIyWWdiajA5SW5OMGNtbHVaeUkvYmpwMmIybGtJREI5Wm5WdVkzUnBiMjRnWTI4b0tYdDJZWElnYmoxM2FXNWtiM2N1WDBSQlZFRkVUMGRmVTFsT1ZFaEZWRWxEVTE5U1JWTlZURlJmU1VSOGZHRmxLR3h2S1R0eVpYUjFjbTRnZEhsd1pXOW1JRzQ5UFNKemRISnBibWNpUDI0NmRtOXBaQ0F3ZldaMWJtTjBhVzl1SUV0cEtHNHBlM1poY2lCeVBVOG9lMzBzYmlrc1lUMWJJbWxrSWl3aWJtRnRaU0lzSW1WdFlXbHNJbDA3Y21WMGRYSnVJR0V1Wm05eVJXRmphQ2htZFc1amRHbHZiaWh6S1h0eklHbHVJSEltSmloeVczTmRQVk4wY21sdVp5aHlXM05kS1NsOUtTeHlmV1oxYm1OMGFXOXVJSEJ2S0c0cGUzWmhjaUJ5UFd0MEtHNHBQVDA5SW05aWFtVmpkQ0k3Y21WMGRYSnVJSEo4ZkhvdVpYSnliM0lvSWxWdWMzVndjRzl5ZEdWa0lIVnpaWEk2SWl4dUtTeHlmWFpoY2lCV08yWjFibU4wYVc5dUlHNTBLRzRzY2l4aEtYdDJZWElnY3oxaExtZGxkRWhoYm1Sc1pYSW9LU3hzUFVGeWNtRjVMbWx6UVhKeVlYa29jeWsvY3pwYmMxMDdjbVYwZFhKdUlIRnBXMjVkUGoxeGFWdGhMbWRsZEV4bGRtVnNLQ2xkSmlaNVpTaHNMSElwZlhaaGNpQkRQWHR2YXpvaWIyc2lMR1JsWW5Wbk9pSmtaV0oxWnlJc2FXNW1iem9pYVc1bWJ5SXNibTkwYVdObE9pSnViM1JwWTJVaUxIZGhjbTQ2SW5kaGNtNGlMR1Z5Y205eU9pSmxjbkp2Y2lJc1kzSnBkR2xqWVd3NkltTnlhWFJwWTJGc0lpeGhiR1Z5ZERvaVlXeGxjblFpTEdWdFpYSm5PaUpsYldWeVp5SjlMSEZwUFNoV1BYdDlMRlpiUXk1dmExMDlNQ3hXVzBNdVpHVmlkV2RkUFRFc1ZsdERMbWx1Wm05ZFBUSXNWbHRETG01dmRHbGpaVjA5TkN4V1cwTXVkMkZ5YmwwOU5TeFdXME11WlhKeWIzSmRQVFlzVmx0RExtTnlhWFJwWTJGc1hUMDNMRlpiUXk1aGJHVnlkRjA5T0N4V1cwTXVaVzFsY21kZFBUa3NWaWs3Wm5WdVkzUnBiMjRnYzNRb2JpeHlLWHQyWVhJZ1lUMXlQVDA5ZG05cFpDQXdQM3Q5T25Jc2N6MWhMbWx1WTJ4MVpHVk5aWE56WVdkbExHdzljejA5UFhadmFXUWdNRDhoTVRwek8zSmxkSFZ5Ym50emRHRmphenB1TG5OMFlXTnJMR3RwYm1RNmJpNTBlWEJsTEcxbGMzTmhaMlU2YkQ5dUxtMWxjM05oWjJVNmRtOXBaQ0F3TEdOaGRYTmxjenB1TG1OaGRYTmxjeXhtYVc1blpYSndjbWx1ZERwdUxtWnBibWRsY25CeWFXNTBMR2hoYm1Sc2FXNW5PbTR1YUdGdVpHeHBibWQ5ZlhaaGNpQmZiejFtZFc1amRHbHZiaWh1TEhJc1lTeHpLWHQyWVhJZ2JEMWhjbWQxYldWdWRITXViR1Z1WjNSb0xHUTliRHd6UDNJNmN6MDlQVzUxYkd3L2N6MVBZbXBsWTNRdVoyVjBUM2R1VUhKdmNHVnlkSGxFWlhOamNtbHdkRzl5S0hJc1lTazZjeXhvTzJsbUtIUjVjR1Z2WmlCU1pXWnNaV04wUFQwaWIySnFaV04wSWlZbWRIbHdaVzltSUZKbFpteGxZM1F1WkdWamIzSmhkR1U5UFNKbWRXNWpkR2x2YmlJcFpEMVNaV1pzWldOMExtUmxZMjl5WVhSbEtHNHNjaXhoTEhNcE8yVnNjMlVnWm05eUtIWmhjaUJ2UFc0dWJHVnVaM1JvTFRFN2J6NDlNRHR2TFMwcEtHZzlibHR2WFNrbUppaGtQU2hzUERNL2FDaGtLVHBzUGpNL2FDaHlMR0VzWkNrNmFDaHlMR0VwS1h4OFpDazdjbVYwZFhKdUlHdytNeVltWkNZbVQySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVLSElzWVN4a0tTeGtmU3hTWlQxN1kyOXVjMjlzWlRvaVkyOXVjMjlzWlNJc2FIUjBjRG9pYUhSMGNDSXNjMmxzWlc1ME9pSnphV3hsYm5RaWZTeDJiejFQWW1wbFkzUXVhMlY1Y3loREtTeHFQV1oxYm1OMGFXOXVLQ2w3Wm5WdVkzUnBiMjRnYmloeUxHRXNjeXhzTEdRc2FDbDdiRDA5UFhadmFXUWdNQ1ltS0d3OVVtVXVhSFIwY0Nrc1pEMDlQWFp2YVdRZ01DWW1LR1E5UXk1a1pXSjFaeWtzYUQwOVBYWnZhV1FnTUNZbUtHZzllMzBwTEhSb2FYTXVhR0Z1Wkd4bFRHOW5VM1J5WVhSbFozazljaXgwYUdsekxtaGhibVJzWlhKVWVYQmxQV3dzZEdocGN5NXNaWFpsYkQxa0xIUm9hWE11WTI5dWRHVjRkRTFoYm1GblpYSTlUWFFvWVNrc2RHaHBjeTVqYjI1MFpYaDBUV0Z1WVdkbGNpNXpaWFJEYjI1MFpYaDBLR2dwTEhNbUpuUm9hWE11WTI5dWRHVjRkRTFoYm1GblpYSXVjMlYwUTI5dWRHVjRkRkJ5YjNCbGNuUjVLQ0pzYjJkblpYSWlMSHR1WVcxbE9uTjlLWDF5WlhSMWNtNGdiaTV3Y205MGIzUjVjR1V1Ykc5blNXMXdiR1Z0Wlc1MFlYUnBiMjQ5Wm5WdVkzUnBiMjRvY2l4aExITXNiQ3hrS1h0elBUMDlkbTlwWkNBd0ppWW9jejFETG1sdVptOHBPM1poY2lCb1BTUW9ZU2tzYnp0cFppaHNJVDF1ZFd4c0tYdDJZWElnWHoxNWFTaDdjM1JoWTJ0VWNtRmpaVHBzSUdsdWMzUmhibU5sYjJZZ1JYSnliM0kvU2loc0tUcDJiMmxrSURBc2IzSnBaMmx1WVd4RmNuSnZjanBzTEc1dmJrVnljbTl5VUhKbFptbDRPaUpRY205MmFXUmxaQ0lzYzI5MWNtTmxPa2d1VEU5SFIwVlNMR2hoYm1Sc2FXNW5PaUpvWVc1a2JHVmtJaXh6ZEdGeWRFTnNiMk5yY3pwbFpTZ3BmU2s3YnoxM1pTaDdaWEp5YjNJNmMzUW9YeXg3YVc1amJIVmtaVTFsYzNOaFoyVTZJVEI5S1gwc2FDbDlaV3h6WlNCdlBXZzdkR2hwY3k1b1lXNWtiR1ZNYjJkVGRISmhkR1ZuZVNoN2JXVnpjMkZuWlRva0tISXBMR052Ym5SbGVIUTZieXh6ZEdGMGRYTTZjMzBzZEdocGN5eGtLWDBzYmk1d2NtOTBiM1I1Y0dVdWJHOW5QV1oxYm1OMGFXOXVLSElzWVN4ekxHd3BlM005UFQxMmIybGtJREFtSmloelBVTXVhVzVtYnlrN2RtRnlJR1E3Ym5Rb2N5eFNaUzVvZEhSd0xIUm9hWE1wSmlZb1pEMGtaU2dwS1N4MGFHbHpMbXh2WjBsdGNHeGxiV1Z1ZEdGMGFXOXVLSElzWVN4ekxHd3NaQ2w5TEc0dWNISnZkRzkwZVhCbExuTmxkRU52Ym5SbGVIUTlablZ1WTNScGIyNG9jaWw3ZEdocGN5NWpiMjUwWlhoMFRXRnVZV2RsY2k1elpYUkRiMjUwWlhoMEtISXBmU3h1TG5CeWIzUnZkSGx3WlM1blpYUkRiMjUwWlhoMFBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11WTI5dWRHVjRkRTFoYm1GblpYSXVaMlYwUTI5dWRHVjRkQ2dwZlN4dUxuQnliM1J2ZEhsd1pTNXpaWFJEYjI1MFpYaDBVSEp2Y0dWeWRIazlablZ1WTNScGIyNG9jaXhoS1h0MGFHbHpMbU52Ym5SbGVIUk5ZVzVoWjJWeUxuTmxkRU52Ym5SbGVIUlFjbTl3WlhKMGVTaHlMR0VwZlN4dUxuQnliM1J2ZEhsd1pTNXlaVzF2ZG1WRGIyNTBaWGgwVUhKdmNHVnlkSGs5Wm5WdVkzUnBiMjRvY2lsN2RHaHBjeTVqYjI1MFpYaDBUV0Z1WVdkbGNpNXlaVzF2ZG1WRGIyNTBaWGgwVUhKdmNHVnlkSGtvY2lsOUxHNHVjSEp2ZEc5MGVYQmxMbU5zWldGeVEyOXVkR1Y0ZEQxbWRXNWpkR2x2YmlncGUzUm9hWE11WTI5dWRHVjRkRTFoYm1GblpYSXVZMnhsWVhKRGIyNTBaWGgwS0NsOUxHNHVjSEp2ZEc5MGVYQmxMbk5sZEVoaGJtUnNaWEk5Wm5WdVkzUnBiMjRvY2lsN2RHaHBjeTVvWVc1a2JHVnlWSGx3WlQxeWZTeHVMbkJ5YjNSdmRIbHdaUzVuWlhSSVlXNWtiR1Z5UFdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhSb2FYTXVhR0Z1Wkd4bGNsUjVjR1Y5TEc0dWNISnZkRzkwZVhCbExuTmxkRXhsZG1Wc1BXWjFibU4wYVc5dUtISXBlM1JvYVhNdWJHVjJaV3c5Y24wc2JpNXdjbTkwYjNSNWNHVXVaMlYwVEdWMlpXdzlablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdkR2hwY3k1c1pYWmxiSDBzWDI4b1cyMXlYU3h1TG5CeWIzUnZkSGx3WlN3aWJHOW5TVzF3YkdWdFpXNTBZWFJwYjI0aUxHNTFiR3dwTEc1OUtDazdhaTV3Y205MGIzUjVjR1V1YjJzOVdpaERMbTlyS1N4cUxuQnliM1J2ZEhsd1pTNWtaV0oxWnoxYUtFTXVaR1ZpZFdjcExHb3VjSEp2ZEc5MGVYQmxMbWx1Wm04OVdpaERMbWx1Wm04cExHb3VjSEp2ZEc5MGVYQmxMbTV2ZEdsalpUMWFLRU11Ym05MGFXTmxLU3hxTG5CeWIzUnZkSGx3WlM1M1lYSnVQVm9vUXk1M1lYSnVLU3hxTG5CeWIzUnZkSGx3WlM1bGNuSnZjajFhS0VNdVpYSnliM0lwTEdvdWNISnZkRzkwZVhCbExtTnlhWFJwWTJGc1BWb29ReTVqY21sMGFXTmhiQ2tzYWk1d2NtOTBiM1I1Y0dVdVlXeGxjblE5V2loRExtRnNaWEowS1N4cUxuQnliM1J2ZEhsd1pTNWxiV1Z5WnoxYUtFTXVaVzFsY21jcE8yWjFibU4wYVc5dUlGb29iaWw3Y21WMGRYSnVJR1oxYm1OMGFXOXVLSElzWVN4ektYdDJZWElnYkR0dWRDaHVMRkpsTG1oMGRIQXNkR2hwY3lrbUppaHNQU1JsS0NrcExIUm9hWE11Ykc5blNXMXdiR1Z0Wlc1MFlYUnBiMjRvY2l4aExHNHNjeXhzS1gxOVpuVnVZM1JwYjI0Z1oyOG9iaXh5S1h0eVpYUjFjbTU3ZG1sbGR6cDdjbVZtWlhKeVpYSTZaRzlqZFcxbGJuUXVjbVZtWlhKeVpYSXNkWEpzT25kcGJtUnZkeTVzYjJOaGRHbHZiaTVvY21WbWZTeGpiMjUwWlhoME9tNHVaMlYwUTI5dWRHVjRkQ2dwTEhWelpYSTZjaTVuWlhSRGIyNTBaWGgwS0NsOWZYWmhjaUI1Ynowek1pcFlPMloxYm1OMGFXOXVJRzF2S0c0cGUyNHVkWE5sVUdOcFNXNTBZV3RsUFQwOUlUQW1KbTR1YzJsMFpTWW1iaTV6YVhSbElUMDlJbVJoZEdGa2IyZG9jUzVqYjIwaUppWjZMbmRoY200b0lsQkRTU0JqYjIxd2JHbGhibU5sSUdadmNpQk1iMmR6SUdseklHOXViSGtnWVhaaGFXeGhZbXhsSUdadmNpQkVZWFJoWkc5bklHOXlaMkZ1YVhwaGRHbHZibk1nYVc0Z2RHaGxJRlZUTVNCemFYUmxMaUJFWldaaGRXeDBJR2x1ZEdGclpTQjNhV3hzSUdKbElIVnpaV1F1SWlrN2RtRnlJSEk5WjI0b2Jpa3NZVDFYYVNodUxtWnZjbmRoY21SRGIyNXpiMnhsVEc5bmN5eHRaU2hNS1N3aVJtOXlkMkZ5WkNCRGIyNXpiMnhsSUV4dlozTWlLU3h6UFZkcEtHNHVabTl5ZDJGeVpGSmxjRzl5ZEhNc2JXVW9XbVVwTENKR2IzSjNZWEprSUZKbGNHOXlkSE1pS1R0cFppZ2hLQ0Z5Zkh3aFlYeDhJWE1wS1hKbGRIVnliaUJ1TG1admNuZGhjbVJGY25KdmNuTlViMHh2WjNNbUppRjVaU2hoTEV3dVpYSnliM0lwSmlaaExuQjFjMmdvVEM1bGNuSnZjaWtzVHloN1ptOXlkMkZ5WkVWeWNtOXljMVJ2VEc5bmN6cHVMbVp2Y25kaGNtUkZjbkp2Y25OVWIweHZaM01oUFQwaE1TeG1iM0ozWVhKa1EyOXVjMjlzWlV4dlozTTZZU3htYjNKM1lYSmtVbVZ3YjNKMGN6cHpMSEpsY1hWbGMzUkZjbkp2Y2xKbGMzQnZibk5sVEdWdVozUm9UR2x0YVhRNmVXOHNjMlZ1WkV4dlozTkJablJsY2xObGMzTnBiMjVGZUhCcGNtRjBhVzl1T2lFaGJpNXpaVzVrVEc5bmMwRm1kR1Z5VTJWemMybHZia1Y0Y0dseVlYUnBiMjU5TEhJcGZXWjFibU4wYVc5dUlGZHBLRzRzY2l4aEtYdHBaaWh1UFQwOWRtOXBaQ0F3S1hKbGRIVnlibHRkTzJsbUtDRW9iajA5UFNKaGJHd2lmSHhCY25KaGVTNXBjMEZ5Y21GNUtHNHBKaVp1TG1WMlpYSjVLR1oxYm1OMGFXOXVLSE1wZTNKbGRIVnliaUI1WlNoeUxITXBmU2twS1h0NkxtVnljbTl5S0NJaUxtTnZibU5oZENoaExDY2djMmh2ZFd4a0lHSmxJQ0poYkd3aUlHOXlJR0Z1SUdGeWNtRjVJSGRwZEdnZ1lXeHNiM2RsWkNCMllXeDFaWE1nSWljcExtTnZibU5oZENoeUxtcHZhVzRvSnlJc0lDSW5LU3duSWljcEtUdHlaWFIxY201OWNtVjBkWEp1SUc0OVBUMGlZV3hzSWo5eU9tbHpLRzRwZldaMWJtTjBhVzl1SUdKdktHNHBlM1poY2lCeVBYbHVLRzRwTzNKbGRIVnliaUJQS0h0bWIzSjNZWEprWDJWeWNtOXljMTkwYjE5c2IyZHpPbTR1Wm05eWQyRnlaRVZ5Y205eWMxUnZURzluY3l4bWIzSjNZWEprWDJOdmJuTnZiR1ZmYkc5bmN6cHVMbVp2Y25kaGNtUkRiMjV6YjJ4bFRHOW5jeXhtYjNKM1lYSmtYM0psY0c5eWRITTZiaTVtYjNKM1lYSmtVbVZ3YjNKMGN5eDFjMlZmY0dOcFgybHVkR0ZyWlRwdUxuVnpaVkJqYVVsdWRHRnJaU3h6Wlc1a1gyeHZaM05mWVdaMFpYSmZjMlZ6YzJsdmJsOWxlSEJwY21GMGFXOXVPbTR1YzJWdVpFeHZaM05CWm5SbGNsTmxjM05wYjI1RmVIQnBjbUYwYVc5dWZTeHlLWDFtZFc1amRHbHZiaUJUYnlodUxISXNZU2w3ZG1GeUlITTlRMmtvS1N4c0xHUXNhRDF5TG05aWMyVnlkbUZpYkdVdWMzVmljMk55YVdKbEtHOHBPMloxYm1OMGFXOXVJRzhvS1h0cFppZ2hLQ0ZrZkh3aGJIeDhJWEl1YVhOSGNtRnVkR1ZrS0NrcEtYdG9MblZ1YzNWaWMyTnlhV0psS0NrN2RtRnlJRjg5WVNoc0xHUXBPM011WkhKaGFXNG9YeWw5ZlhKbGRIVnlibnRwYm1sME9tWjFibU4wYVc5dUtGOHBlMmxtS0NGZktYdDZMbVZ5Y205eUtDSk5hWE56YVc1bklHTnZibVpwWjNWeVlYUnBiMjRpS1R0eVpYUjFjbTU5YVdZb2JXNG9YeTVsYm1GaWJHVkZlSEJsY21sdFpXNTBZV3hHWldGMGRYSmxjeWtzZEhRb0tTWW1LRjg5ZUc4b1h5a3BMR3c5WHl4a0tYdFRhU2dpUkVSZlRFOUhVeUlzWHlrN2NtVjBkWEp1ZlhaaGNpQndQVzF2S0Y4cE8zQW1KaWhrUFhBc1NHa29LUzV6ZFdKelkzSnBZbVVvYVdVcExISXVkSEo1Vkc5SmJtbDBLSEF1ZEhKaFkydHBibWREYjI1elpXNTBLU3h2S0NrcGZTeG5aWFFnYVc1cGRFTnZibVpwWjNWeVlYUnBiMjRvS1h0eVpYUjFjbTRnYkgwc1oyVjBTVzUwWlhKdVlXeERiMjUwWlhoME9tbGxMR2hoYm1Sc1pVeHZaenBtZFc1amRHbHZiaWhmTEhBc1l5eG5MR1VwZTJjOVBUMTJiMmxrSURBbUppaG5QVzRvS1Nrc1pUMDlQWFp2YVdRZ01DWW1LR1U5VVNncEtTeHpMbUZrWkNobWRXNWpkR2x2YmloMEtYdHlaWFIxY200Z2RDNW9ZVzVrYkdWTWIyY29YeXh3TEdNc1p5eGxLWDBwZlgxOVpuVnVZM1JwYjI0Z2VHOG9iaWw3Y21WMGRYSnVJRThvZTMwc2JpeDdZMnhwWlc1MFZHOXJaVzQ2SW1WdGNIUjVJbjBwZlhaaGNpQllhVDBpYkc5bmN5STdablZ1WTNScGIyNGdWVzhvYmlsN2RtRnlJSEk5YzI4b0tTeGhQVTEwS0hJdVoyVjBUM0pEY21WaGRHVlVjbUZqYTJWeUtESXBLU3h6UFUxMEtISXVaMlYwVDNKRGNtVmhkR1ZVY21GamEyVnlLREVwS1N4c1BWcHlLQ2s3Wm5WdVkzUnBiMjRnWkNncGUzSmxkSFZ5YmlCbmJ5aGhMSE1wZlhaaGNpQm9QVk52S0dRc2JDeG1kVzVqZEdsdmJpaHdMR01wZTNBdWMzUnZjbVZEYjI1MFpYaDBjMEZqY205emMxQmhaMlZ6SmlZb1dXa29ZeXhoTEZocExESXBMRmxwS0dNc2N5eFlhU3d4S1NrN2RtRnlJR2M5Ymlod0xHTXNaQ3hzS1R0eVpYUjFjbTRnYUQxM2J5aHdMR2NwTEdkOUtTeHZQWHQ5TEY4OWJtVjNJR29vWm5WdVkzUnBiMjRvS1h0bWIzSW9kbUZ5SUhBOVcxMHNZejB3TzJNOFlYSm5kVzFsYm5SekxteGxibWQwYUR0akt5c3BjRnRqWFQxaGNtZDFiV1Z1ZEhOYlkxMDdjbVYwZFhKdUlHZ3VhR0Z1Wkd4bFRHOW5MbUZ3Y0d4NUtHZ3NjQ2w5TEhJdVkzSmxZWFJsUkdWMFlXTm9aV1JVY21GamEyVnlLQ2twTzNKbGRIVnliaUJ4YmloN2JHOW5aMlZ5T2w4c2FXNXBkRHBDS0daMWJtTjBhVzl1S0hBcGUzSmxkSFZ5YmlCb0xtbHVhWFFvY0NsOUtTeHpaWFJVY21GamEybHVaME52Ym5ObGJuUTZRaWhtZFc1amRHbHZiaWh3S1h0c0xuVndaR0YwWlNod0tTeGtjeWg3Wm1WaGRIVnlaVG9pYzJWMExYUnlZV05yYVc1bkxXTnZibk5sYm5RaUxIUnlZV05yYVc1blgyTnZibk5sYm5RNmNIMHBmU2tzWjJWMFIyeHZZbUZzUTI5dWRHVjRkRHBDS0daMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUdFdVoyVjBRMjl1ZEdWNGRDZ3BmU2tzYzJWMFIyeHZZbUZzUTI5dWRHVjRkRHBDS0daMWJtTjBhVzl1S0hBcGUzSmxkSFZ5YmlCaExuTmxkRU52Ym5SbGVIUW9jQ2w5S1N4elpYUkhiRzlpWVd4RGIyNTBaWGgwVUhKdmNHVnlkSGs2UWlobWRXNWpkR2x2Ymlod0xHTXBlM0psZEhWeWJpQmhMbk5sZEVOdmJuUmxlSFJRY205d1pYSjBlU2h3TEdNcGZTa3NjbVZ0YjNabFIyeHZZbUZzUTI5dWRHVjRkRkJ5YjNCbGNuUjVPa0lvWm5WdVkzUnBiMjRvY0NsN2NtVjBkWEp1SUdFdWNtVnRiM1psUTI5dWRHVjRkRkJ5YjNCbGNuUjVLSEFwZlNrc1kyeGxZWEpIYkc5aVlXeERiMjUwWlhoME9rSW9ablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdZUzVqYkdWaGNrTnZiblJsZUhRb0tYMHBMR055WldGMFpVeHZaMmRsY2pwQ0tHWjFibU4wYVc5dUtIQXNZeWw3Y21WMGRYSnVJR005UFQxMmIybGtJREFtSmloalBYdDlLU3h2VzNCZFBXNWxkeUJxS0daMWJtTjBhVzl1S0NsN1ptOXlLSFpoY2lCblBWdGRMR1U5TUR0bFBHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnN1pTc3JLV2RiWlYwOVlYSm5kVzFsYm5SelcyVmRPM0psZEhWeWJpQm9MbWhoYm1Sc1pVeHZaeTVoY0hCc2VTaG9MR2NwZlN4eUxtTnlaV0YwWlVSbGRHRmphR1ZrVkhKaFkydGxjaWdwTENRb2NDa3NZeTVvWVc1a2JHVnlMR011YkdWMlpXd3NKQ2hqTG1OdmJuUmxlSFFwS1N4dlczQmRmU2tzWjJWMFRHOW5aMlZ5T2tJb1puVnVZM1JwYjI0b2NDbDdjbVYwZFhKdUlHOWJjRjE5S1N4blpYUkpibWwwUTI5dVptbG5kWEpoZEdsdmJqcENLR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJRVZwS0dndWFXNXBkRU52Ym1acFozVnlZWFJwYjI0cGZTa3NaMlYwU1c1MFpYSnVZV3hEYjI1MFpYaDBPa0lvWm5WdVkzUnBiMjRvY0NsN2NtVjBkWEp1SUdndVoyVjBTVzUwWlhKdVlXeERiMjUwWlhoMEtIQXBmU2tzYzJWMFZYTmxjanBDS0daMWJtTjBhVzl1S0hBcGUzQnZLSEFwSmlaekxuTmxkRU52Ym5SbGVIUW9TMmtvY0NrcGZTa3NaMlYwVlhObGNqcENLR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSE11WjJWMFEyOXVkR1Y0ZENncGZTa3NjMlYwVlhObGNsQnliM0JsY25SNU9rSW9ablZ1WTNScGIyNG9jQ3hqS1h0MllYSWdaeXhsUFV0cEtDaG5QWHQ5TEdkYmNGMDlZeXhuS1NsYmNGMDdjeTV6WlhSRGIyNTBaWGgwVUhKdmNHVnlkSGtvY0N4bEtYMHBMSEpsYlc5MlpWVnpaWEpRY205d1pYSjBlVHBDS0daMWJtTjBhVzl1S0hBcGUzSmxkSFZ5YmlCekxuSmxiVzkyWlVOdmJuUmxlSFJRY205d1pYSjBlU2h3S1gwcExHTnNaV0Z5VlhObGNqcENLR1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJSE11WTJ4bFlYSkRiMjUwWlhoMEtDbDlLWDBwZldaMWJtTjBhVzl1SUhkdktHNHNjaWw3Y21WMGRYSnVJRThvZTJsdWFYUTZablZ1WTNScGIyNG9ZU2w3VTJrb0lrUkVYMHhQUjFNaUxHRXBmU3hwYm1sMFEyOXVabWxuZFhKaGRHbHZianB1ZlN4eUtYMTJZWElnUlc4OUlteHZaM01pTzJaMWJtTjBhVzl1SUVGdktHNHNjaWw3ZG1GeUlHRTllWE1vYml4RmJ5eG1kVzVqZEdsdmJpaHpLWHR5WlhSMWNtNGdWRzhvYml4ektYMHNjaWs3Y21WMGRYSnVlMlpwYm1SVWNtRmphMlZrVTJWemMybHZianBtZFc1amRHbHZiaWh6TEd3cGUydzlQVDEyYjJsa0lEQW1KaWhzUFh0eVpYUjFjbTVKYm1GamRHbDJaVG9oTVgwcE8zWmhjaUJrUFdFdVptbHVaRk5sYzNOcGIyNG9jeXhzS1R0eVpYUjFjbTRnWkNZbVpDNTBjbUZqYTJsdVoxUjVjR1U5UFQwaU1TSS9lMmxrT21RdWFXUjlPblp2YVdRZ01IMHNaWGh3YVhKbFQySnpaWEoyWVdKc1pUcGhMbVY0Y0dseVpVOWljMlZ5ZG1GaWJHVjlmV1oxYm1OMGFXOXVJRU52S0c0cGUzWmhjaUJ5UFVwcEtHNHBQVDA5SWpFaUxHRTljajk3ZlRwMmIybGtJREE3Y21WMGRYSnVlMlpwYm1SVWNtRmphMlZrVTJWemMybHZianBtZFc1amRHbHZiaWdwZTNKbGRIVnliaUJoZlN4bGVIQnBjbVZQWW5ObGNuWmhZbXhsT201bGR5QlNmWDFtZFc1amRHbHZiaUJLYVNodUtYdHlaWFIxY200Z1RtVW9iaTV6WlhOemFXOXVVMkZ0Y0d4bFVtRjBaU2svSWpFaU9pSXdJbjFtZFc1amRHbHZiaUJVYnlodUxISXBlM1poY2lCaFBVbHZLSElwUDNJNlNta29iaWs3Y21WMGRYSnVlM1J5WVdOcmFXNW5WSGx3WlRwaExHbHpWSEpoWTJ0bFpEcGhQVDA5SWpFaWZYMW1kVzVqZEdsdmJpQkpieWh1S1h0eVpYUjFjbTRnYmowOVBTSXdJbng4YmowOVBTSXhJbjEyWVhJZ0pHazlJVEU3Wm5WdVkzUnBiMjRnYjNRb2JpbDdkbUZ5SUhJOWQybHVaRzkzTzJsbUtHcHBLQ2twZTNaaGNpQmhQWE1vY2k1RVJGOVNWVTFmVTFsT1ZFaEZWRWxEVXlrN2NtVjBkWEp1SVdFbUppRWthU1ltS0NScFBTRXdMRWxwS0NKTWIyZHpJSE5sYm5RZ1ltVm1iM0psSUZKVlRTQnBjeUJwYm1wbFkzUmxaQ0JpZVNCMGFHVWdjM2x1ZEdobGRHbGpjeUIzYjNKclpYSWlMSHQwWlhOMFNXUTZhRzhvS1N4eVpYTjFiSFJKWkRwamJ5Z3BmU2twTEdGOWNtVjBkWEp1SUhNb2NpNUVSRjlTVlUwcE8yWjFibU4wYVc5dUlITW9iQ2w3YVdZb2JDWW1iQzVuWlhSSmJuUmxjbTVoYkVOdmJuUmxlSFFwY21WMGRYSnVJR3d1WjJWMFNXNTBaWEp1WVd4RGIyNTBaWGgwS0c0cGZYMW1kVzVqZEdsdmJpQkNieWh1TEhJc1lTeHpMR3dwZTNaaGNpQmtQWFp2TG1OdmJtTmhkQ2hiSW1OMWMzUnZiU0pkS1N4b1BYdDlPMlF1Wm05eVJXRmphQ2htZFc1amRHbHZiaWh2S1h0b1cyOWRQVTF6S0c4c2NpNWxkbVZ1ZEZKaGRHVk1hVzFwZEdWeVZHaHlaWE5vYjJ4a0xHd3BmU2tzWVM1emRXSnpZM0pwWW1Vb01DeG1kVzVqZEdsdmJpaHZLWHQyWVhJZ1h5eHdMR005Ynk1eVlYZE1iMmR6UlhabGJuUXNaejF2TG0xbGMzTmhaMlZEYjI1MFpYaDBMR1U5WnowOVBYWnZhV1FnTUQ5MmIybGtJREE2Wnl4MFBXOHVjMkYyWldSRGIyMXRiMjVEYjI1MFpYaDBMR2s5ZEQwOVBYWnZhV1FnTUQ5MmIybGtJREE2ZEN4bVBXOHVaRzl0WVdsdVEyOXVkR1Y0ZEN4MVBYVnlLR011WkdGMFpTa3NkajF1TG1acGJtUlVjbUZqYTJWa1UyVnpjMmx2YmloMUtUdHBaaWdoS0NGMkppWW9JWEl1YzJWdVpFeHZaM05CWm5SbGNsTmxjM05wYjI1RmVIQnBjbUYwYVc5dWZId2hiaTVtYVc1a1ZISmhZMnRsWkZObGMzTnBiMjRvZFN4N2NtVjBkWEp1U1c1aFkzUnBkbVU2SVRCOUtTa3BLWHQyWVhJZ2VUMXBmSHh6S0Nrc2JUMTNaU2g3YzJWeWRtbGpaVHB5TG5ObGNuWnBZMlVzYzJWemMybHZibDlwWkRwMlAzWXVhV1E2ZG05cFpDQXdMSFZ6Y2pwMmRDaDVMblZ6WlhJcFAzWnZhV1FnTURwNUxuVnpaWElzZG1sbGR6cDVMblpwWlhkOUxIa3VZMjl1ZEdWNGRDeHZkQ2gxS1N4akxHVXBPeWdvWHoxeUxtSmxabTl5WlZObGJtUXBQVDA5Ym5Wc2JIeDhYejA5UFhadmFXUWdNRDkyYjJsa0lEQTZYeTVqWVd4c0tISXNiU3htS1NrOVBUMGhNWHg4YlM1dmNtbG5hVzRoUFQxSUxrRkhSVTVVSmlZb0tIQTlhRnR0TG5OMFlYUjFjMTBwSVQwOWJuVnNiQ1ltY0NFOVBYWnZhV1FnTUQ5d09tZ3VZM1Z6ZEc5dEtTNXBjMHhwYldsMFVtVmhZMmhsWkNncGZIeGhMbTV2ZEdsbWVTZ3hMRzBwZlgwcGZYWmhjaUIyWlN4R2J6MG9kbVU5ZTMwc2RtVmJUQzVzYjJkZFBVTXVhVzVtYnl4MlpWdE1MbVJsWW5WblhUMURMbVJsWW5WbkxIWmxXMHd1YVc1bWIxMDlReTVwYm1adkxIWmxXMHd1ZDJGeWJsMDlReTUzWVhKdUxIWmxXMHd1WlhKeWIzSmRQVU11WlhKeWIzSXNkbVVwTzJaMWJtTjBhVzl1SUV4dktHNHNjaWw3ZG1GeUlHRTlXSE1vYmk1bWIzSjNZWEprUTI5dWMyOXNaVXh2WjNNcExuTjFZbk5qY21saVpTaG1kVzVqZEdsdmJpaHpLWHQyWVhJZ2JEMTdjbUYzVEc5bmMwVjJaVzUwT250a1lYUmxPbEVvS1N4dFpYTnpZV2RsT25NdWJXVnpjMkZuWlN4dmNtbG5hVzQ2U0M1RFQwNVRUMHhGTEdWeWNtOXlPbk11WlhKeWIzSW1Kbk4wS0hNdVpYSnliM0lwTEhOMFlYUjFjenBHYjF0ekxtRndhVjE5TEdSdmJXRnBia052Ym5SbGVIUTZlMmhoYm1Sc2FXNW5VM1JoWTJzNmN5NW9ZVzVrYkdsdVoxTjBZV05yZlgwN2NpNXViM1JwWm5rb01DeHNLWDBwTzNKbGRIVnlibnR6ZEc5d09tWjFibU4wYVc5dUtDbDdZUzUxYm5OMVluTmpjbWxpWlNncGZYMTlablZ1WTNScGIyNGdhMjhvYml4eUtYdDJZWElnWVQxWWJpaHVMRzR1Wm05eWQyRnlaRkpsY0c5eWRITXBMbk4xWW5OamNtbGlaU2htZFc1amRHbHZiaWh6S1h0MllYSWdiRDF6TG0xbGMzTmhaMlVzWkN4b1BYTXViM0pwWjJsdVlXeEZjbkp2Y2k1MGVYQmxQVDA5SW1SbGNISmxZMkYwYVc5dUlqOURMbmRoY200NlF5NWxjbkp2Y2p0b1BUMDlReTVsY25KdmNqOWtQWE4wS0hNcE9uTXVjM1JoWTJzbUppaHNLejBpSUVadmRXNWtJR2x1SUNJdVkyOXVZMkYwS0ZsdUtITXVjM1JoWTJzcEtTa3NjaTV1YjNScFpua29NQ3g3Y21GM1RHOW5jMFYyWlc1ME9udGtZWFJsT2xFb0tTeHRaWE56WVdkbE9td3NiM0pwWjJsdU9rZ3VVa1ZRVDFKVUxHVnljbTl5T21Rc2MzUmhkSFZ6T21oOWZTbDlLVHR5WlhSMWNtNTdjM1J2Y0RwbWRXNWpkR2x2YmlncGUyRXVkVzV6ZFdKelkzSnBZbVVvS1gxOWZXWjFibU4wYVc5dUlIcHZLRzRzY2lsN2FXWW9JVzR1Wm05eWQyRnlaRVZ5Y205eWMxUnZURzluY3lseVpYUjFjbTU3YzNSdmNEcHBaWDA3ZG1GeUlHRTlSM01vYmlrdWMzVmljMk55YVdKbEtHWjFibU4wYVc5dUtHUXBlMlF1YzNSaGRHVTlQVDBpWTI5dGNHeGxkR1VpSmlac0tDSjRhSElpTEdRcGZTa3NjejFJYVNncExuTjFZbk5qY21saVpTaG1kVzVqZEdsdmJpaGtLWHRrTG5OMFlYUmxQVDA5SW5KbGMyOXNkbVVpSmlac0tDSm1aWFJqYUNJc1pDbDlLVHRtZFc1amRHbHZiaUJzS0dRc2FDbDdJVzR1YVhOSmJuUmhhMlZWY213b2FDNTFjbXdwSmlZb1JHOG9hQ2w4ZkVacEtHZ3VjM1JoZEhWektTa21KaWdpZUdoeUltbHVJR2cvVW04b2FDNTRhSElzYml4dktUcG9MbkpsYzNCdmJuTmxQMUJ2S0dndWNtVnpjRzl1YzJVc2JpeHZLVHBvTG1WeWNtOXlKaVpQYnlob0xtVnljbTl5TEc0c2J5a3BPMloxYm1OMGFXOXVJRzhvWHlsN2RtRnlJSEE5ZTJselFXSnZjblJsWkRwb0xtbHpRV0p2Y25SbFpDeG9ZVzVrYkdsdVoxTjBZV05yT21ndWFHRnVaR3hwYm1kVGRHRmphMzA3Y2k1dWIzUnBabmtvTUN4N2NtRjNURzluYzBWMlpXNTBPbnR0WlhOellXZGxPaUlpTG1OdmJtTmhkQ2hPYnloa0tTd2lJR1Z5Y205eUlDSXBMbU52Ym1OaGRDaG9MbTFsZEdodlpDd2lJQ0lwTG1OdmJtTmhkQ2hvTG5WeWJDa3NaR0YwWlRwb0xuTjBZWEowUTJ4dlkydHpMblJwYldWVGRHRnRjQ3hsY25KdmNqcDdjM1JoWTJzNlgzeDhJa1poYVd4bFpDQjBieUJzYjJGa0lpeG9ZVzVrYkdsdVp6cDJiMmxrSURCOUxHaDBkSEE2ZTIxbGRHaHZaRHBvTG0xbGRHaHZaQ3h6ZEdGMGRYTmZZMjlrWlRwb0xuTjBZWFIxY3l4MWNtdzZhQzUxY214OUxITjBZWFIxY3pwRExtVnljbTl5TEc5eWFXZHBianBJTGs1RlZGZFBVa3Q5TEdSdmJXRnBia052Ym5SbGVIUTZjSDBwZlgxeVpYUjFjbTU3YzNSdmNEcG1kVzVqZEdsdmJpZ3BlMkV1ZFc1emRXSnpZM0pwWW1Vb0tTeHpMblZ1YzNWaWMyTnlhV0psS0NsOWZYMW1kVzVqZEdsdmJpQlNieWh1TEhJc1lTbDdkSGx3Wlc5bUlHNHVjbVZ6Y0c5dWMyVTlQU0p6ZEhKcGJtY2lQMkVvUjNRb2JpNXlaWE53YjI1elpTeHlLU2s2WVNodUxuSmxjM0J2Ym5ObEtYMW1kVzVqZEdsdmJpQlBieWh1TEhJc1lTbDdZU2hIZENob1pTaEtLRzRwS1N4eUtTbDlablZ1WTNScGIyNGdVRzhvYml4eUxHRXBlM1poY2lCelBYaHpLRzRwT3lGemZId2hjeTVpYjJSNVAyRW9LVHAzYVc1a2IzY3VWR1Y0ZEVSbFkyOWtaWEkvVFc4b2N5NWliMlI1TEhJdWNtVnhkV1Z6ZEVWeWNtOXlVbVZ6Y0c5dWMyVk1aVzVuZEdoTWFXMXBkQ3htZFc1amRHbHZiaWhzTEdRcGUyRW9iRDhpVlc1aFlteGxJSFJ2SUhKbGRISnBaWFpsSUhKbGMzQnZibk5sT2lBaUxtTnZibU5oZENoc0tUcGtLWDBwT25NdWRHVjRkQ2dwTG5Sb1pXNG9RaWhtZFc1amRHbHZiaWhzS1h0eVpYUjFjbTRnWVNoSGRDaHNMSElwS1gwcExFSW9ablZ1WTNScGIyNG9iQ2w3Y21WMGRYSnVJR0VvSWxWdVlXSnNaU0IwYnlCeVpYUnlhV1YyWlNCeVpYTndiMjV6WlRvZ0lpNWpiMjVqWVhRb2JDa3BmU2twZldaMWJtTjBhVzl1SUVSdktHNHBlM0psZEhWeWJpQnVMbk4wWVhSMWN6MDlQVEFtSm00dWNtVnpjRzl1YzJWVWVYQmxJVDA5SW05d1lYRjFaU0o5Wm5WdVkzUnBiMjRnUjNRb2JpeHlLWHR5WlhSMWNtNGdiaTVzWlc1bmRHZytjaTV5WlhGMVpYTjBSWEp5YjNKU1pYTndiMjV6WlV4bGJtZDBhRXhwYldsMFB5SWlMbU52Ym1OaGRDaHVMbk4xWW5OMGNtbHVaeWd3TEhJdWNtVnhkV1Z6ZEVWeWNtOXlVbVZ6Y0c5dWMyVk1aVzVuZEdoTWFXMXBkQ2tzSWk0dUxpSXBPbTU5Wm5WdVkzUnBiMjRnVG04b2JpbDdjbVYwZFhKdUlHNDlQVDBpZUdoeUlqOGlXRWhTSWpvaVJtVjBZMmdpZldaMWJtTjBhVzl1SUUxdktHNHNjaXhoS1h0aGJ5aHVMR1oxYm1OMGFXOXVLSE1zYkN4a0tYdHBaaWh6S1dFb2N5azdaV3h6Wlh0MllYSWdhRDF1WlhjZ1ZHVjRkRVJsWTI5a1pYSW9LUzVrWldOdlpHVW9iQ2s3WkNZbUtHZ3JQU0l1TGk0aUtTeGhLSFp2YVdRZ01DeG9LWDE5TEh0aWVYUmxjMHhwYldsME9uSXNZMjlzYkdWamRGTjBjbVZoYlVKdlpIazZJVEI5S1gxbWRXNWpkR2x2YmlCSGJ5aHVMSElwZTJsbUtDRnVMbVp2Y25kaGNtUkZjbkp2Y25OVWIweHZaM01wY21WMGRYSnVlM04wYjNBNmFXVjlPM1poY2lCaFBXNWxkeUJTTEhNOVZtNG9ZU2t1YzNSdmNDeHNQV0V1YzNWaWMyTnlhV0psS0daMWJtTjBhVzl1S0dRcGUzSXVibTkwYVdaNUtEQXNlM0poZDB4dlozTkZkbVZ1ZERwN2JXVnpjMkZuWlRwa0xtMWxjM05oWjJVc1pHRjBaVHBrTG5OMFlYSjBRMnh2WTJ0ekxuUnBiV1ZUZEdGdGNDeGxjbkp2Y2pwemRDaGtLU3h2Y21sbmFXNDZTQzVUVDFWU1EwVXNjM1JoZEhWek9rTXVaWEp5YjNKOWZTbDlLVHR5WlhSMWNtNTdjM1J2Y0RwbWRXNWpkR2x2YmlncGUzTW9LU3hzTG5WdWMzVmljMk55YVdKbEtDbDlmWDEyWVhJZ1NHODlUbk1zU3p0bWRXNWpkR2x2YmlCWmJ5aHVLWHRtZFc1amRHbHZiaUJ5S0dFc2N5eHNMR1FzYUNsN2RtRnlJRzg5ZDJVb2N5NW5aWFJEYjI1MFpYaDBLQ2tzWVM1amIyNTBaWGgwS1R0cFppaHVkQ2hoTG5OMFlYUjFjeXhTWlM1amIyNXpiMnhsTEhNcEppWnFieWhoTEc4cExHNTBLR0V1YzNSaGRIVnpMRkpsTG1oMGRIQXNjeWtwZTNaaGNpQmZQWHR5WVhkTWIyZHpSWFpsYm5RNmUyUmhkR1U2YUh4OFVTZ3BMRzFsYzNOaFoyVTZZUzV0WlhOellXZGxMSE4wWVhSMWN6cGhMbk4wWVhSMWN5eHZjbWxuYVc0NlNDNU1UMGRIUlZKOUxHMWxjM05oWjJWRGIyNTBaWGgwT204c2MyRjJaV1JEYjIxdGIyNURiMjUwWlhoME9tUjlPMndtSmloZkxtUnZiV0ZwYmtOdmJuUmxlSFE5ZTJoaGJtUnNhVzVuVTNSaFkyczZiSDBwTEc0dWJtOTBhV1o1S0RBc1h5bDlmWEpsZEhWeWJudG9ZVzVrYkdWTWIyYzZjbjE5ZG1GeUlGWnZQU2hMUFh0OUxFdGJReTV2YTEwOVRDNWtaV0oxWnl4TFcwTXVaR1ZpZFdkZFBVd3VaR1ZpZFdjc1MxdERMbWx1Wm05ZFBVd3VhVzVtYnl4TFcwTXVibTkwYVdObFhUMU1MbWx1Wm04c1MxdERMbmRoY201ZFBVd3VkMkZ5Yml4TFcwTXVaWEp5YjNKZFBVd3VaWEp5YjNJc1MxdERMbU55YVhScFkyRnNYVDFNTG1WeWNtOXlMRXRiUXk1aGJHVnlkRjA5VEM1bGNuSnZjaXhMVzBNdVpXMWxjbWRkUFV3dVpYSnliM0lzU3lrN1puVnVZM1JwYjI0Z2FtOG9iaXh5S1h0MllYSWdZVDF1TG5OMFlYUjFjeXh6UFc0dWJXVnpjMkZuWlR0dVpWdFdiMXRoWFYwdVkyRnNiQ2hYTEhNc2NpbDlablZ1WTNScGIyNGdTMjhvYml4eUxHRXNjeXhzS1h0MllYSWdaRDFIYVNodUxIdGxibVJ3YjJsdWREcHVMbXh2WjNORmJtUndiMmx1ZEVKMWFXeGtaWElzWlc1amIyUmxjanB5ZENncGZTeHVMbkpsY0d4cFkyRW1KbnRsYm1Sd2IybHVkRHB1TG5KbGNHeHBZMkV1Ykc5bmMwVnVaSEJ2YVc1MFFuVnBiR1JsY2l4bGJtTnZaR1Z5T25KMEtDbDlMR0VzY3l4c0xtVjRjR2x5WlU5aWMyVnlkbUZpYkdVcE8zSmxkSFZ5YmlCeUxuTjFZbk5qY21saVpTZ3hMR1oxYm1OMGFXOXVLR2dwZTJRdVlXUmtLR2dwZlNrc1pIMW1kVzVqZEdsdmJpQnhieWh1S1h0MllYSWdjajFTZENncE8yNHVjM1ZpYzJOeWFXSmxLREVzWm5WdVkzUnBiMjRvWVNsN2NpNXpaVzVrS0NKc2IyY2lMR0VwZlNsOVpuVnVZM1JwYjI0Z1YyOG9iaWw3Y21WMGRYSnVlMmRsZERwbWRXNWpkR2x2YmloeUtYdDJZWElnWVQxdUxtWnBibVJVY21GamEyVmtVMlZ6YzJsdmJpaHlLVHRwWmloaEtYSmxkSFZ5Ym50elpYTnphVzl1WDJsa09tRXVhV1I5ZlgxOVpuVnVZM1JwYjI0Z1dHOG9iaWw3Y21WMGRYSnVJR1oxYm1OMGFXOXVLSElwZTI0dWJtOTBhV1o1S0RBc2UzSmhkMHh2WjNORmRtVnVkRHA3YldWemMyRm5aVHB5TG0xbGMzTmhaMlVzWkdGMFpUcHlMbk4wWVhKMFEyeHZZMnR6TG5ScGJXVlRkR0Z0Y0N4dmNtbG5hVzQ2U0M1QlIwVk9WQ3h6ZEdGMGRYTTZReTVsY25KdmNuMTlLU3hKYVNnaVJYSnliM0lnY21Wd2IzSjBaV1FnZEc4Z1kzVnpkRzl0WlhJaUxIc2laWEp5YjNJdWJXVnpjMkZuWlNJNmNpNXRaWE56WVdkbGZTbDlmV1oxYm1OMGFXOXVJRXB2S0c0c2NpeGhMSE1zYkNsN2RtRnlJR1E5YjNNb0ltSnliM2R6WlhJdGJHOW5jeTF6WkdzaUxISXBPMlF1YzJWMFEyOXVkR1Y0ZEZCeWIzWnBaR1Z5S0daMWJtTjBhVzl1S0NsN2RtRnlJR2NzWlN4MExHa3NaaXgxTzNKbGRIVnlibnRoY0hCc2FXTmhkR2x2YmpwN2FXUTZLR2M5YjNRb0tTazlQVDF1ZFd4c2ZIeG5QVDA5ZG05cFpDQXdQM1p2YVdRZ01EcG5MbUZ3Y0d4cFkyRjBhVzl1WDJsa2ZTeHpaWE56YVc5dU9udHBaRG9vWlQxc0xtWnBibVJVY21GamEyVmtVMlZ6YzJsdmJpZ3BLVDA5UFc1MWJHeDhmR1U5UFQxMmIybGtJREEvZG05cFpDQXdPbVV1YVdSOUxIWnBaWGM2ZTJsa09paHBQU2gwUFc5MEtDa3BQVDA5Ym5Wc2JIeDhkRDA5UFhadmFXUWdNRDkyYjJsa0lEQTZkQzUyYVdWM0tUMDlQVzUxYkd4OGZHazlQVDEyYjJsa0lEQS9kbTlwWkNBd09ta3VhV1I5TEdGamRHbHZianA3YVdRNktIVTlLR1k5YjNRb0tTazlQVDF1ZFd4c2ZIeG1QVDA5ZG05cFpDQXdQM1p2YVdRZ01EcG1MblZ6WlhKZllXTjBhVzl1S1QwOVBXNTFiR3g4ZkhVOVBUMTJiMmxrSURBL2RtOXBaQ0F3T25VdWFXUjlmWDBwTzNaaGNpQm9QVnRkTzJsbUtIUjBLQ2twZTNaaGNpQnZQVkowS0Nrc1h6MWtMbTlpYzJWeWRtRmliR1V1YzNWaWMyTnlhV0psS0daMWJtTjBhVzl1S0djcGUzSmxkSFZ5YmlCdkxuTmxibVFvSW1sdWRHVnlibUZzWDNSbGJHVnRaWFJ5ZVNJc1p5bDlLVHRvTG5CMWMyZ29ablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdYeTUxYm5OMVluTmpjbWxpWlNncGZTbDlaV3h6Wlh0MllYSWdjRDFIYVNoeUxIdGxibVJ3YjJsdWREcHlMbkoxYlVWdVpIQnZhVzUwUW5WcGJHUmxjaXhsYm1OdlpHVnlPbkowS0NsOUxISXVjbVZ3YkdsallTWW1lMlZ1WkhCdmFXNTBPbkl1Y21Wd2JHbGpZUzV5ZFcxRmJtUndiMmx1ZEVKMWFXeGtaWElzWlc1amIyUmxjanB5ZENncGZTeGhMSE1zYkM1bGVIQnBjbVZQWW5ObGNuWmhZbXhsS1R0b0xuQjFjMmdvWm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnY0M1emRHOXdLQ2w5S1R0MllYSWdZejFrTG05aWMyVnlkbUZpYkdVdWMzVmljMk55YVdKbEtHWjFibU4wYVc5dUtHY3BlM0psZEhWeWJpQndMbUZrWkNobkxHeHpLSElwS1gwcE8yZ3VjSFZ6YUNobWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCakxuVnVjM1ZpYzJOeWFXSmxLQ2w5S1gxeVpYUjFjbTRnWm5Nb0tTeDFjeWhpYnlodUtTa3NlM1JsYkdWdFpYUnllVHBrTEhOMGIzQTZablZ1WTNScGIyNG9LWHRvTG1admNrVmhZMmdvWm5WdVkzUnBiMjRvWnlsN2NtVjBkWEp1SUdjb0tYMHBmWDE5Wm5WdVkzUnBiMjRnSkc4b2JpeHlMR0VzY3lsN2RtRnlJR3c5Ym1WM0lFaHZMR1E5VzEwN2JDNXpkV0p6WTNKcFltVW9NU3htZFc1amRHbHZiaWgwS1h0eVpYUjFjbTRnZDJrb0lteHZaM01pTEhRcGZTazdkbUZ5SUdnOVdHOG9iQ2tzYnoxU2N5aHlLU3hmUFhJdWMyVnpjMmx2YmxOMGIzSmxVM1J5WVhSbFozbFVlWEJsSmlZaGRIUW9LU1ltSVdwcEtDay9RVzhvY2l4ektUcERieWh5S1N4d1BVcHZLRzRzY2l4b0xHOHNYeWt1YzNSdmNEdGtMbkIxYzJnb1puVnVZM1JwYjI0b0tYdHlaWFIxY200Z2NDZ3BmU2tzZW04b2NpeHNLU3hIYnloeUxHd3BMRXh2S0hJc2JDa3NhMjhvY2l4c0tUdDJZWElnWXoxWmJ5aHNLUzVvWVc1a2JHVk1iMmM3YVdZb1FtOG9YeXh5TEd3c1lTeG9LU3gwZENncEtYRnZLR3dwTzJWc2MyVjdkbUZ5SUdjOVMyOG9jaXhzTEdnc2J5eGZLUzV6ZEc5d08yUXVjSFZ6YUNobWRXNWpkR2x2YmlncGUzSmxkSFZ5YmlCbktDbDlLWDEyWVhJZ1pUMVhieWhmS1R0eVpYUjFjbTU3YUdGdVpHeGxURzluT21Nc1oyVjBTVzUwWlhKdVlXeERiMjUwWlhoME9tVXVaMlYwTEhOMGIzQTZablZ1WTNScGIyNG9LWHRrTG1admNrVmhZMmdvWm5WdVkzUnBiMjRvZENsN2NtVjBkWEp1SUhRb0tYMHBmWDE5ZG1GeUlHRjBQVlZ2S0NSdktUdFhiaWgwWlNncExDSkVSRjlNVDBkVElpeGhkQ2tzWVhRdWFXNXBkQ2g3WTJ4cFpXNTBWRzlyWlc0NkluQjFZalE0TkRRNE9UVmhZek13TURZM1lXTXlZelJoWVdFd01qVmtZbU16T1dRM0lpeHphWFJsT2lKMWN6TXVaR0YwWVdSdloyaHhMbU52YlNJc1ptOXlkMkZ5WkVWeWNtOXljMVJ2VEc5bmN6b2hNQ3h6WlhOemFXOXVVMkZ0Y0d4bFVtRjBaVG94TURCOUtUdGpiMjV6ZENCYWFUMTdTVzVtYnpvaWFXNW1ieUlzVjJGeWJqb2lkMkZ5YmlJc1JYSnliM0k2SW1WeWNtOXlJbjBzVDJVOVpuVnVZM1JwYjI0b2JpeHlLWHRqYjI1emIyeGxMbXh2WnlnaUpXTlBWRlJRYkdGNVpYSTZJQ0lyYml3aVkyOXNiM0k2SUNNMU9XRmpabVlpS1N4UmFTZ3BQM0J2YzNSTlpYTnpZV2RsS0h0aFkzUnBiMjQ2SW14dlp5SXNjR0Y1Ykc5aFpEcDdjM1JoZEhWek9scHBMa2x1Wm04c2JXVnpjMkZuWlRvaVYyVmlJR3h2WnpvZ0lpdHVMSEJoZVd4dllXUTZjbjE5S1RwaGRDNXNiMmRuWlhJdWFXNW1ieWdpVjJWaUlHeHZaem9nSWl0dUxISXBmU3hCWlQxbWRXNWpkR2x2YmlodUxISXBlMk52Ym5OdmJHVXVaWEp5YjNJb0lrOVVWRkJzWVhsbGNqb2dJaXR1S1N4eUppWmpiMjV6YjJ4bExtVnljbTl5S0hJcExGRnBLQ2svY0c5emRFMWxjM05oWjJVb2UyRmpkR2x2YmpvaWJHOW5JaXh3WVhsc2IyRmtPbnR6ZEdGMGRYTTZXbWt1UlhKeWIzSXNiV1Z6YzJGblpUcHVMSEJoZVd4dllXUTZjbjE5S1RwaGRDNXNiMmRuWlhJdVpYSnliM0lvYml4dWRXeHNMSElwZlN4UmFUMG9LVDArZEhsd1pXOW1JRmR2Y210bGNrZHNiMkpoYkZOamIzQmxQQ0oxSWlZbWMyVnNaaUJwYm5OMFlXNWpaVzltSUZkdmNtdGxja2RzYjJKaGJGTmpiM0JsTzJOc1lYTnpJRnB2ZTJGemVXNWpJR2hoYm1Sc1pVUmhkR0VvY2l4aEtYdGpiMjV6ZENCelBYSnlMbkJoY25ObEtISXBPMmxtS0hOYkltRnNjR2hoTG0xd05DSmRmSHh6V3lKaGJIQm9ZUzUzWldKdElsMHBlMkYzWVdsMElIUm9hWE11WkdWamIyUmxRV3h3YUdGTllYTnJWbWxrWlc4b2N5eGhLVHR5WlhSMWNtNTliR1YwSUd3OVQySnFaV04wTG10bGVYTW9jeWt1YzI5eWRDZ3BPMlp2Y2loamIyNXpkQ0JrSUc5bUlHd3BhV1lvWkM1bGJtUnpWMmwwYUNnaUxtcHpiMjRpS1NsN2JHVjBJR2c5VzEwN1kyOXVjM1FnYnoxS1UwOU9MbkJoY25ObEtHNWxkeUJVWlhoMFJHVmpiMlJsY2lncExtUmxZMjlrWlNoelcyUmRLU2tzWHoxdkxuUnBiV1ZqYjJSbExuSmxjR3hoWTJVb0x6b3ZaeXdpWHlJcE8ybG1LRzh1Y0d4aFkyVm9iMnhrWlhKekppWWlhWE5NYVhabEltbHVJRzhtSm04dWFYTk1hWFpsUFQwOUlUQXBabTl5S0dOdmJuTjBJSEFnYVc0Z2J5NXdiR0ZqWldodmJHUmxjbk1wZTJ4bGRDQmpQV0FrZTE5OVh5UjdjSDB1WVd4d2FHRmdPM05iWTEwbUppaHZMbkJzWVdObGFHOXNaR1Z5YzF0d1hTNWhiSEJvWVVGelZXbHVkRGhCY25KaGVUMXpXMk5kTEdndWNIVnphQ2h6VzJOZExtSjFabVpsY2lrcGZYQnZjM1JOWlhOellXZGxLSHRoWTNScGIyNDZJbTFsZEdGa1lYUmhJaXh3WVhsc2IyRmtPbTk5TEdncGZYMW5aWFJFWlhOamNtbHdkR2x2YmloeUtYdG1iM0lvWTI5dWMzUWdZU0J2WmlCeUxtMWthV0V1YldsdVppNXpkR0pzTG5OMGMyUXVaVzUwY21sbGN5bDdZMjl1YzNRZ2N6MWhMbUYyWTBOOGZHRXVhSFpqUTN4OFlTNTJjR05EZkh4aExtRjJNVU03YVdZb2N5bDdZMjl1YzNRZ2JEMXVaWGNnVUdVdVJHRjBZVk4wY21WaGJTaDJiMmxrSURBc01DeFFaUzVFWVhSaFUzUnlaV0Z0TGtKSlIxOUZUa1JKUVU0cE8zSmxkSFZ5YmlCekxuZHlhWFJsS0d3cExHNWxkeUJWYVc1ME9FRnljbUY1S0d3dVluVm1abVZ5TERncGZYMXlaWFIxY200Z1FXVW9JbUYyWTBNc0lHaDJZME1zSUhad1kwTXNJRzl5SUdGMk1VTWdZbTk0SUc1dmRDQm1iM1Z1WkNCdmJpQWlMSElwTEc1MWJHeDliblZ0WlhKcFkwWnBiR1ZEYjIxd1lYSmhkRzl5S0hJc1lTbDdZMjl1YzNRZ2N6MHZYaWhjWkhzeWZTbGZLRnhrZXpKOUtWOG9YR1I3TW4wcFh5aGNaSHN5ZlNrb1B6cGNMaWhjWkNzcEtUOWNMaWd1S3lra0x5eHNQWEl1YldGMFkyZ29jeWtzWkQxaExtMWhkR05vS0hNcE8ybG1LQ0ZzZkh3aFpDbHlaWFIxY200Z01EdGpiMjV6ZEZzc2FDeHZMRjhzY0N4alBTSXdJaXhuWFQxc0xGc3NaU3gwTEdrc1ppeDFQU0l3SWl4MlhUMWtPM0psZEhWeWJpQndZWEp6WlVsdWRDaG9MREV3S1Mxd1lYSnpaVWx1ZENobExERXdLWHg4Y0dGeWMyVkpiblFvYnl3eE1Da3RjR0Z5YzJWSmJuUW9kQ3d4TUNsOGZIQmhjbk5sU1c1MEtGOHNNVEFwTFhCaGNuTmxTVzUwS0drc01UQXBmSHh3WVhKelpVbHVkQ2h3TERFd0tTMXdZWEp6WlVsdWRDaG1MREV3S1h4OGNHRnljMlZKYm5Rb1l5d3hNQ2t0Y0dGeWMyVkpiblFvZFN3eE1DbDhmR2N1Ykc5allXeGxRMjl0Y0dGeVpTaDJLWDFoYzNsdVl5QmtaV052WkdWQmJIQm9ZVTFoYzJ0V2FXUmxieWh5TEdFcGUyeGxkQ0J6UFU5aWFtVmpkQzVyWlhsektISXBMbVpwYkhSbGNpaG5QVDVuTG1WdVpITlhhWFJvS0NJdWFuTnZiaUlwS1M1emIzSjBLSFJvYVhNdWJuVnRaWEpwWTBacGJHVkRiMjF3WVhKaGRHOXlLUzV0WVhBb1p6MCtTbE5QVGk1d1lYSnpaU2h1WlhjZ1ZHVjRkRVJsWTI5a1pYSW9LUzVrWldOdlpHVW9jbHRuWFNrcEtTNW1hV3gwWlhJb1p6MCtaeTV3YkdGalpXaHZiR1JsY25NcE8yTnZibk4wSUd3OWNHVnlabTl5YldGdVkyVXVibTkzS0Nrc1pEMXpMbXhsYm1kMGFEdFBaU2hnVjJVZ2JtVmxaQ0IwYnlCa1pXTnZaR1VnSkh0a2ZTQm1jbUZ0WlhOZ0tUdGpiMjV6ZENCdlBXRjNZV2wwSUc1bGR5QkNiRzlpS0Z0eVd5SmhiSEJvWVM1dGNEUWlYWHg4Y2xzaVlXeHdhR0V1ZDJWaWJTSmRYU3g3ZEhsd1pUcHlXeUpoYkhCb1lTNXRjRFFpWFQ4aWRtbGtaVzh2YlhBMElqb2lkbWxrWlc4dmQyVmliU0o5S1M1aGNuSmhlVUoxWm1abGNpZ3BPMjh1Wm1sc1pWTjBZWEowUFRBN2JHVjBJRjg5TUR0amIyNXpkQ0J3UFc1bGR5QldhV1JsYjBSbFkyOWtaWElvZTI5MWRIQjFkRHBuUFQ1N2MxdGZYUzVoYkhCb1lVMWhjMnM5Wnl4d2IzTjBUV1Z6YzJGblpTaDdZV04wYVc5dU9pSnRaWFJoWkdGMFlTSXNjR0Y1Ykc5aFpEcHpXMTlkZlN4YloxMHBMR2N1WTJ4dmMyVW9LU3hmS3lzc1h6NDlaQ1ltVDJVb1lDUjdZWDBnUkdWamIyUmxaQ0FrZTE5OUlHWnlZVzFsY3lCcGJpQWtlM0JsY21admNtMWhibU5sTG01dmR5Z3BMV3g5SUcxcGJHeHBjMlZqYjI1a2N5NWdLWDBzWlhKeWIzSTZaejArUVdVb0lrRnNjR2hoSUcxaGMyc2diWEEwSUdSbFkyOWtaWElnWlhKeWIzSTZJaXhuS1gwcExHTTlkSEl1WTNKbFlYUmxSbWxzWlNncE8yTXViMjVGY25KdmNqMW5QVDVDUW1WeWNtOXlLQ0pOVURRZ2NHRnljMmx1WnlCbGNuSnZjam9pTEdjcExHTXViMjVTWldGa2VUMW5QVDU3WTI5dWMzUWdaVDFuTG5SeVlXTnJjeTVtYVc1a0tIUTlQblF1ZEhsd1pUMDlQU0oyYVdSbGJ5SXBPMlVtSmlod0xtTnZibVpwWjNWeVpTaDdZMjlrWldNNlpTNWpiMlJsWXl4M2FXUjBhRHBsTG5acFpHVnZMbmRwWkhSb0xHaGxhV2RvZERwbExuWnBaR1Z2TG1obGFXZG9kQ3hrWlhOamNtbHdkR2x2YmpwMGFHbHpMbWRsZEVSbGMyTnlhWEIwYVc5dUtHTXVaMlYwVkhKaFkydENlVWxrS0dVdWFXUXBLWDBwTEdNdWMyVjBSWGgwY21GamRHbHZiazl3ZEdsdmJuTW9aUzVwWkNrc1l5NXpkR0Z5ZENncEtYMHNZeTV2YmxOaGJYQnNaWE05S0djc1pTeDBLVDArZTNRdVptOXlSV0ZqYUNocFBUNTdZMjl1YzNRZ1pqMXVaWGNnUlc1amIyUmxaRlpwWkdWdlEyaDFibXNvZTNSNWNHVTZhUzVwYzE5emVXNWpQeUpyWlhraU9pSmtaV3gwWVNJc2RHbHRaWE4wWVcxd09ta3VZM1J6TEdSaGRHRTZibVYzSUZWcGJuUTRRWEp5WVhrb2FTNWtZWFJoS1gwcE8zQXVaR1ZqYjJSbEtHWXBmU2w5TEdNdVlYQndaVzVrUW5WbVptVnlLRzhwZlgxamIyNXpkQ0JJZEQwaU9pSXNablE5S0c0c2NpazlQbnRqYjI1emRDQmhQVzR1YzNCc2FYUW9jaWs3Y21WMGRYSnVlMmc2Y0dGeWMyVkpiblFvWVZzd1hTa3NiVHB3WVhKelpVbHVkQ2hoV3pGZEtTeHpPbkJoY25ObFNXNTBLR0ZiTWwwcExHWTZjR0Z5YzJWSmJuUW9ZVnN6WFNsOWZTeHNkRDF1UFQ0b0lqQWlLMjR1YUNrdWMyeHBZMlVvTFRJcEswaDBLeWdpTUNJcmJpNXRLUzV6YkdsalpTZ3RNaWtyU0hRcktDSXdJaXR1TG5NcExuTnNhV05sS0MweUtTdElkQ3NvSWpBaUsyNHVaaWt1YzJ4cFkyVW9MVElwTEhWMFBTaHVMSElwUFQ1N2JHVjBJR0U5ZXk0dUxtNTlPM0psZEhWeWJpQmhMbk1yUFhJc1lTNXpQajAyTUNZbUtHRXVjejB3TEdFdWJTc3JMR0V1YlQ0OU5qQW1KaWhoTG0wOU1DeGhMbWdyS3lrcExHRjlMR1Z5UFNodUxISTlNQ2s5UG50c1pYUWdZVDFtZENodUxDSTZJaWs3Y21WMGRYSnVJSEltSmloaFBYVjBLR0VzY2lrcExHRjlMRkZ2UFNodUxISTlNQ2s5UG50c1pYUWdZVDFsY2lodUxISXBPM0psZEhWeWJpQnNkQ2hoS1gwc1dYUTlLRzRzY2lrOVBtNHVhRDV5TG1nL0lUQTZiaTVvUEhJdWFEOGhNVHB1TG0wK2NpNXRQeUV3T200dWJUeHlMbTAvSVRFNmJpNXpQbkl1Y3o4aE1EcHVMbk04Y2k1elB5RXhPbTR1Wmo1eUxtWTdkSEo1ZTJ4bGRDQnVQU0V4TEhJOUlpSXNZVDBpSWl4elBYdDlMR3c5Ym5Wc2JDeGtQVnRkTEdnOWUzMHNiejBoTUN4ZlBTRXhPMk52Ym5OMElIQTlibVYzSUZwdk8yeGxkQ0JqTzJOdmJuTjBJR2M5YVQwK2UyOG1KaWhwUGpBbUpsbDBLR1Z5S0hNdWRHTXNhU2tzYUNrL2MyVjBWR2x0Wlc5MWRDZ29LVDArZTJjb2FTbDlMREV3TUNrNmMyVjBWR2x0Wlc5MWRDZ29LVDArZTNNdWRHTTlVVzhvY3k1MFl5eHBLU3gwS0NsOUxEQXBLWDBzWlQxcFBUNTdZMjl1YzNRZ1pqMXBMblJqTG5KbGNHeGhZMlZCYkd3b0lqb2lMQ0pmSWlrN2NtVjBkWEp1SUdNL1lDUjdhUzV3WVhSb2ZTOXRZVzVwWm1WemRITXZOVGt1T1RRdkpIdG1mUzU2YVhCZ09tQWtlMmt1Y0dGMGFIMHZKSHRtZlM1NmFYQmdmU3gwUFdGemVXNWpLQ2s5UG50ZlBTRXdPMk52Ym5OMElHazljeXhtUFdVb2FTazdkSEo1ZTJOdmJuTjBJSFU5WVhkaGFYUWdabVYwWTJnb1ppazdhV1lvZFM1emRHRjBkWE0rUFRRd01DbDdiR1YwSUZVOUtIQmxjbVp2Y20xaGJtTmxMbTV2ZHlncExXd3BMekZsTXp0VlBqUS9LRUZsS0NKRWFXUnVKM1FnWm1sdVpDQjBhVzFsWTI5a1pTQWlLMmt1ZEdNcklpd2dibTkzSUdadmNpQWlLMVV1ZEc5R2FYaGxaQ2d5S1NzaUlITmxZMjl1WkhNZ0xTQm5hWFpsSUhWd0lDRWlLU3huS0RJcEtUb29RV1VvSWtScFpHNG5kQ0JtYVc1a0lIUnBiV1ZqYjJSbElDSXJhUzUwWXlzaUxDQnViM2NnWm05eUlDSXJWUzUwYjBacGVHVmtLRElwS3lJZ2MyVmpiMjVrY3lJcExHY29NQ2twTEY4OUlURTdjbVYwZFhKdWZXeGxkQ0IyUFhCbGNtWnZjbTFoYm1ObExtNXZkeWdwTEhrOU1EdHBaaWhzS1dadmNpaDVQWFl0YkN4a0xuQjFjMmdvZVNrN1pDNXNaVzVuZEdnK01XVXpPeWxrTG5Ob2FXWjBLQ2s3YkQxMk8yTnZibk4wSUcwOVlYZGhhWFFnZFM1aGNuSmhlVUoxWm1abGNpZ3BPMkYzWVdsMElIQXVhR0Z1Wkd4bFJHRjBZU2h0TEdrdWRHTXBPMk52Ym5OMElHSTljR1Z5Wm05eWJXRnVZMlV1Ym05M0tDbDlZMkYwWTJnb2RTbDdRV1VvWUVWeWNtOXlJRzl1SUhWeWJDQWtlMlo5WUN4MUtYMWZQU0V4TEdjb01pbDlPMkZrWkVWMlpXNTBUR2x6ZEdWdVpYSW9JbTFsYzNOaFoyVWlMR2s5UG50cFppZ2hiaVltYVM1a1lYUmhMbU5zYjNWa1JuSnZiblJWVWt3cGUyNDlJVEFzWXoxcExtUmhkR0V1YldGemEwMVFORDgvSVRFc2NqMXBMbVJoZEdFdVkyeHZkV1JHY205dWRGVlNUQ3hoUFdrdVpHRjBZUzVtYjJ4a1pYSk9ZVzFsTzJ4bGRDQm1QV1owS0drdVpHRjBZUzUwWXl3aU9pSXBPMmc5ZFhRb1ppdzBLU3htTG1ZOU1DeG1Mbk05Wmk1ekpUSTlQVDB3UDJZdWN6cG1Mbk10TVN4elBYdDBZenBzZENobUtTeHdZWFJvT21Ba2UzSjlMeVI3WVgxZ2ZTeFBaU2hnVFdWMFlTMWtZWFJoSUhkdmNtdGxjaUJ6ZEdGeWRHbHVaeUJtY205dElIUm9hWE1nZEdsdFpTMWpiMlJsT2lBa2UzTXVkR045WUNrc2RDZ3BmV1ZzYzJWN2JHVjBJR1k5Wm5Rb2FTNWtZWFJoTG5SakxDSTZJaWs3Wmk1bVBUQXNaaTV6UFdZdWN5VXlQVDA5TUQ5bUxuTTZaaTV6TFRFc1dYUW9aaXhvS1NZbUtITXVkR005YkhRb1ppa3NUMlVvWUUxbGRHRXRaR0YwWVNCM2IzSnJaWElnYW5WdGNITWdabTl5ZDJGeVpDQjBieUIwYUdseklIUnBiV1V0WTI5a1pUb2dKSHR6TG5SamZXQXBLU3haZENobWRDaHpMblJqTENJNklpa3NkWFFvWml3MEtTa21KaWh6TG5SalBXeDBLR1lwTEU5bEtHQk5aWFJoTFdSaGRHRWdkMjl5YTJWeUlHcDFiWEJ6SUdKaFkyc2dkRzhnZEdocGN5QjBhVzFsTFdOdlpHVTZJQ1I3Y3k1MFkzMWdLU2tzYUQxMWRDaG1MRFFwTENGdkppWnBMbVJoZEdFdVpXNWhZbXhsWkQ4b2J6MGhNQ3hmZkh4MEtDa3BPbTg5YVM1a1lYUmhMbVZ1WVdKc1pXUjlmU2w5WTJGMFkyZ29iaWw3UVdVb2JpbDlmU2tvS1RzSyIsaVg9Yz0+VWludDhBcnJheS5mcm9tKGF0b2IoYyksWj0+Wi5jaGFyQ29kZUF0KDApKSxsZT10eXBlb2Ygc2VsZjwidSImJnNlbGYuQmxvYiYmbmV3IEJsb2IoW2lYKCRpKV0se3R5cGU6InRleHQvamF2YXNjcmlwdDtjaGFyc2V0PXV0Zi04In0pO2Z1bmN0aW9uIGVYKGMpe2xldCBaO3RyeXtpZihaPWxlJiYoc2VsZi5VUkx8fHNlbGYud2Via2l0VVJMKS5jcmVhdGVPYmplY3RVUkwobGUpLCFaKXRocm93IiI7Y29uc3QgdD1uZXcgV29ya2VyKFose25hbWU6Yz09bnVsbD92b2lkIDA6Yy5uYW1lfSk7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT57KHNlbGYuVVJMfHxzZWxmLndlYmtpdFVSTCkucmV2b2tlT2JqZWN0VVJMKFopfSksdH1jYXRjaHtyZXR1cm4gbmV3IFdvcmtlcigiZGF0YTp0ZXh0L2phdmFzY3JpcHQ7YmFzZTY0LCIrJGkse25hbWU6Yz09bnVsbD92b2lkIDA6Yy5uYW1lfSl9ZmluYWxseXtaJiYoc2VsZi5VUkx8fHNlbGYud2Via2l0VVJMKS5yZXZva2VPYmplY3RVUkwoWil9fWNsYXNzIG1Ye2NvbnN0cnVjdG9yKFosdCl7dGhpcy5vcHRpb25zPVosdGhpcy5jb21wb3Nlcj10LHRoaXMuc291cmNlRlBTPTZlNC8xMDAxLHRoaXMubGFzdEZyYW1lcyx0aGlzLm1ldGFkYXRhV29ya2VyPW51bGwsdGhpcy5zZXRNZXRhRGF0YUZvbGRlck5hbWUoWi5nYW1lSWQpfXNldE1ldGFEYXRhRm9sZGVyTmFtZShaKXt0aGlzLmZvbGRlck5hbWU9Wix0aGlzLmxhc3RGcmFtZXMmJnRoaXMubG9hZE1ldGFEYXRhKHRoaXMubGFzdEZyYW1lcyl9c2V0TGFzdEZyYW1lKFope3RoaXMubGFzdEZyYW1lcz1aLHRoaXMuZm9sZGVyTmFtZSYmdGhpcy5sb2FkTWV0YURhdGEodGhpcy5sYXN0RnJhbWVzKX1sb2FkTWV0YURhdGEoWil7aWYodGhpcy5tZXRhZGF0YVdvcmtlcil7bGV0IHQ9UXUoQnUodGhpcy5sYXN0RnJhbWVzLHRoaXMuc291cmNlRlBTKSk7dGhpcy5tZXRhZGF0YVdvcmtlci5wb3N0TWVzc2FnZSh7dGM6UHUodCwhMSksZW5hYmxlZDp0aGlzLm9wdGlvbnMuZW5hYmxlZH0pfWVsc2V7Y29uc3QgdD1uZXcgZVg7dGhpcy5tZXRhZGF0YVdvcmtlcj10LHQub25lcnJvcj1mdW5jdGlvbihlKXtzbigiRXJyb3IgZnJvbSB3b3JrZXI6IixlKX0sdC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlPT57c3dpdGNoKGUuZGF0YS5hY3Rpb24pe2Nhc2UibWV0YWRhdGEiOnRoaXMuY29tcG9zZXIub25NZXRhRGF0YShlLmRhdGEucGF5bG9hZCk7YnJlYWs7Y2FzZSJsb2ciOnVYKGUuZGF0YS5wYXlsb2FkKTticmVhaztkZWZhdWx0Olh0KCJ1bmtub3duIGFjdGlvbiBmcm9tIG1ldGEgd29ya2VyIil9fSk7bGV0IGk9UXUoQnUoWix0aGlzLnNvdXJjZUZQUykpO3QucG9zdE1lc3NhZ2Uoe2Nsb3VkRnJvbnRVUkw6dGhpcy5vcHRpb25zLmNsb3VkRnJvbnRVUkwsZm9sZGVyTmFtZTp0aGlzLmZvbGRlck5hbWUsdGM6UHUoaSwhMSksbWFza01QNDp0aGlzLm9wdGlvbnMubWFza01QNH0pfX19Y2xhc3MgYVh7Y29uc3RydWN0b3IoWil7eWwodGhpcywiYWRUZXh0dXJlIixudWxsKTt5bCh0aGlzLCJwbGFjZTJBZFRleHR1cmUiLHt9KTt5bCh0aGlzLCJwbGFjZTJhZCIse30pO3lsKHRoaXMsImFkMnBsYWNlIix7fSk7eWwodGhpcywiY3VycmVudEFkczJCb3VuZGluZ1JlY3QiLFtdKTt5bCh0aGlzLCJsYXN0VGltZVJlcG9ydGVkSW5jb21pbmdUQyIsMCk7eWwodGhpcywiYXV0b0FkZEluZGV4IixudWxsKTt5bCh0aGlzLCJkaWdpdEltZyIse30pO3lsKHRoaXMsInNvdXJjZUZQUyIsNmU0LzEwMDEpO3lsKHRoaXMsIm1ldGFkYXRhQXJyIixbXSk7eWwodGhpcywibWV0YWRhdGFNYXAiLHt9KTt5bCh0aGlzLCJ2aWRlb1N0YXJ0ZWQiLCExKTt5bCh0aGlzLCJhZHZlcnRpc2VtZW50TWFwIix7fSk7eWwodGhpcywiYWQyVXJsIix7fSk7eWwodGhpcywidmlkZW9Db3BpZXIiLG51bGwpO3lsKHRoaXMsImF1dG9BZGRJbmRleCIsbnVsbCk7aWYoWi5yZW5kZXJUaW1lY29kZXMpZm9yKGxldCB0PTA7dDwxMDsrK3Qpe2xldCBpPXQrIi4xIixlPXQrIi4yIjt0aGlzLmRpZ2l0SW1nW2ldPXRoaXMuY3JlYXRlRGlnaXRJbWcoaSksdGhpcy5kaWdpdEltZ1tlXT10aGlzLmNyZWF0ZURpZ2l0SW1nKGUpfXRoaXMub3B0aW9ucz1PYmplY3QuYXNzaWduKHthZExvb3BUaW1lOjVlMyxpc0FkTG9vcDohMX0sWnx8e30pLHRoaXMubWV0YURhdGFGZXRjaGVyPW5ldyBtWCh0aGlzLm9wdGlvbnMsdGhpcyl9c2V0TGFzdEZyYW1lKFope3RoaXMubWV0YURhdGFGZXRjaGVyLnNldExhc3RGcmFtZShaKX1vblVzZXJDbGlja09uQ2FudmFzKFope2NvbnNvbGUubG9nKCJmaXggbWUiKX10ZXhVbml0Rm9yR2VuZXJpY0FkKCl7cmV0dXJuIDB9dGV4VW5pdEZvckFkSW5QbGFjZShaKXtsZXQgdD1PYmplY3Qua2V5cyh0aGlzLnBsYWNlMmFkKTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoOysraSlpZihaPT10W2ldKXJldHVybiBpKzE7cmV0dXJuIDB9dGV4VW5pdEZvclBsYWNlSG9sZGVyKFope2xldCB0PU9iamVjdC5rZXlzKHRoaXMucGxhY2UyYWQpO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7KytpKXtsZXQgZT10W2ldO2lmKFoubmFtZS5pbmRleE9mKGUpPj0wKXJldHVybiBpfXJldHVybiAwfWFkTmFtZUZvclBsYWNlSG9sZGVyKFope2xldCB0PU9iamVjdC5rZXlzKHRoaXMucGxhY2UyYWQpO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7KytpKXtsZXQgZT10W2ldO2lmKFoubmFtZS5pbmRleE9mKGUpPj0wJiZ0aGlzLnBsYWNlMkFkVGV4dHVyZSYmdGhpcy5wbGFjZTJBZFRleHR1cmVbZV0mJnRoaXMucGxhY2UyQWRUZXh0dXJlW2VdLm5hbWUpcmV0dXJuIHRoaXMucGxhY2UyQWRUZXh0dXJlW2VdLm5hbWV9cmV0dXJuIHRoaXMubGFzdEFkTmFtZX10ZXhVbml0QmFzZUZvckFscGhhKCl7cmV0dXJuIDErT2JqZWN0LmtleXModGhpcy5wbGFjZTJhZCkubGVuZ3RofWluaXRHTCgpe2NvbnN0IFo9dGhpcy5vcHRpb25zLm1hc2tNUDQ/W1RuLGFuXTpbYWMsemFdO3RoaXMucHJvZ3JhbT1HYih0aGlzLmN0eCxaKSx0aGlzLmN0eC51c2VQcm9ncmFtKHRoaXMucHJvZ3JhbSksdGhpcy5jb3VudGVyPTAsdGhpcy5jbGVhbkdMKCl9Y2xlYW5HTCgpe3RoaXMuY3R4LmNsZWFyQ29sb3IoMCwwLDAsMCksdGhpcy5jdHguY2xlYXIodGhpcy5jdHguQ09MT1JfQlVGRkVSX0JJVCl9Z2VuZXJhdGVUZXh0dXJlKFosdCxpLGUsRyxvLHMsVj0hMSxoPSExKXtzP3RoaXMuY3R4LnBpeGVsU3RvcmVpKHRoaXMuY3R4LlVOUEFDS19BTElHTk1FTlQsMSk6dGhpcy5jdHgucGl4ZWxTdG9yZWkodGhpcy5jdHguVU5QQUNLX0FMSUdOTUVOVCw0KSx0aGlzLmN0eC5waXhlbFN0b3JlaSh0aGlzLmN0eC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLFYpO2NvbnN0IHk9dGhpcy5jdHguY3JlYXRlVGV4dHVyZSgpO3RoaXMuY3R4LmFjdGl2ZVRleHR1cmUodGhpcy5jdHguVEVYVFVSRTArdCksdGhpcy5jdHguYmluZFRleHR1cmUodGhpcy5jdHguVEVYVFVSRV8yRCx5KTt0cnl7RyYmbz90aGlzLmN0eC50ZXhJbWFnZTJEKHRoaXMuY3R4LlRFWFRVUkVfMkQsMCxlPz90aGlzLmN0eC5SR0JBLEcsbywwLGU/P3RoaXMuY3R4LlJHQkEsdGhpcy5jdHguVU5TSUdORURfQllURSxaKTp0aGlzLmN0eC50ZXhJbWFnZTJEKHRoaXMuY3R4LlRFWFRVUkVfMkQsMCxlPz90aGlzLmN0eC5SR0JBLHRoaXMuY3R4LlJHQkEsdGhpcy5jdHguVU5TSUdORURfQllURSxaKX1jYXRjaCh4KXtyZXR1cm4gc24oeCksbnVsbH1pZihoKXtsZXQgeD1HfHxaLndpZHRoLEk9b3x8Wi5oZWlnaHQ7eCYmRXUoeCkmJkkmJkV1KEkpP3RoaXMuY3R4LmdlbmVyYXRlTWlwbWFwKHRoaXMuY3R4LlRFWFRVUkVfMkQpOih0aGlzLmN0eC50ZXhQYXJhbWV0ZXJpKHRoaXMuY3R4LlRFWFRVUkVfMkQsdGhpcy5jdHguVEVYVFVSRV9XUkFQX1MsdGhpcy5jdHguQ0xBTVBfVE9fRURHRSksdGhpcy5jdHgudGV4UGFyYW1ldGVyaSh0aGlzLmN0eC5URVhUVVJFXzJELHRoaXMuY3R4LlRFWFRVUkVfV1JBUF9ULHRoaXMuY3R4LkNMQU1QX1RPX0VER0UpLHRoaXMuY3R4LnRleFBhcmFtZXRlcmkodGhpcy5jdHguVEVYVFVSRV8yRCx0aGlzLmN0eC5URVhUVVJFX01JTl9GSUxURVIsdGhpcy5jdHguTElORUFSKSl9ZWxzZSB0aGlzLmN0eC50ZXhQYXJhbWV0ZXJpKHRoaXMuY3R4LlRFWFRVUkVfMkQsdGhpcy5jdHguVEVYVFVSRV9XUkFQX1MsdGhpcy5jdHguQ0xBTVBfVE9fRURHRSksdGhpcy5jdHgudGV4UGFyYW1ldGVyaSh0aGlzLmN0eC5URVhUVVJFXzJELHRoaXMuY3R4LlRFWFRVUkVfV1JBUF9ULHRoaXMuY3R4LkNMQU1QX1RPX0VER0UpLHRoaXMuY3R4LnRleFBhcmFtZXRlcmkodGhpcy5jdHguVEVYVFVSRV8yRCx0aGlzLmN0eC5URVhUVVJFX01JTl9GSUxURVIsdGhpcy5jdHguTElORUFSKSx0aGlzLmN0eC50ZXhQYXJhbWV0ZXJpKHRoaXMuY3R4LlRFWFRVUkVfMkQsdGhpcy5jdHguVEVYVFVSRV9NQUdfRklMVEVSLHRoaXMuY3R4LkxJTkVBUik7bGV0IEw9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSxpKTtyZXR1cm4gTCYmdGhpcy5jdHgudW5pZm9ybTFpKEwsdCkseX1fbmV4dEFkdmVydGlzZW1lbnQoKXt0aGlzLmF1dG9BZGRJbmRleD1zZXRUaW1lb3V0KCgpPT57Y29uc3QgWj1PYmplY3Qua2V5cyh0aGlzLmFkdmVydGlzZW1lbnRNYXApO1oubGVuZ3RoJiYodGhpcy5zZWxlY3RBZChaW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpaLmxlbmd0aCldKSx0aGlzLl9uZXh0QWR2ZXJ0aXNlbWVudCgpKX0sdGhpcy5vcHRpb25zLmFkTG9vcFRpbWUpfW1ha2VTdXJlQWRQZXJQbGFjZSgpe2lmKHRoaXMucGxhY2UyYWQpe2xldCBaPU9iamVjdC5rZXlzKHRoaXMucGxhY2UyYWQpO2ZvcihsZXQgdD0wO3Q8Wi5sZW5ndGg7Kyt0KXtsZXQgaT1aW3RdOyF0aGlzLnBsYWNlMkFkVGV4dHVyZVtpXSYmdGhpcy5wbGFjZTJhZFtpXS5sZW5ndGg+MCYmKFRkKCJNYWtlU3VyZUFkUGVyUGxhY2U6IFNldCBkZWZhdWx0IGltYWdlICIrdGhpcy5wbGFjZTJhZFtpXVswXSsiIGZvciBwbGFjZSAiK2kpLHRoaXMuc2VsZWN0QWQoIiMiK3RoaXMucGxhY2UyYWRbaV1bMF0pKX19fXNlbGVjdEFkKFope1RkKGBjb21wb3Nlcjo6U2VsZWN0QWQ6IHNlbGVjdGVkIGFkIGlzICR7Wn1gLHttZWRpYV91cmw6Wn0pO2xldCB0PXRoaXMuYWR2ZXJ0aXNlbWVudE1hcFtaXTtpZighdClzbigiU2VsZWN0QWQ6IEZhaWxlZCB0byBmaW5kIGltYWdlICciK1orIiciKTtlbHNlIGlmKHRoaXMuYWQycGxhY2UmJnRoaXMuYWQycGxhY2VbWl0pe2xldCBpPXRoaXMuYWQycGxhY2VbWl07VGQoImNvbXBvc2VyOjpTZWxlY3RBZDogVGhlIHNlbGVjdGVkIGFkIHNob3VsZCBiZSBpbiBwbGFjZSAiK2kpO2xldCBlPXRoaXMudGV4VW5pdEZvckFkSW5QbGFjZShpKSxHPSJhZCIrKGUtMSk7dGhpcy5wbGFjZTJBZFRleHR1cmVbaV0mJnRoaXMuY3R4LmRlbGV0ZVRleHR1cmUodGhpcy5wbGFjZTJBZFRleHR1cmVbaV0udGV4KTtjb25zdCBvPXRoaXMuZ2VuZXJhdGVUZXh0dXJlKHQsZSxHLG51bGwsbnVsbCxudWxsLCExLCExLCEwKTt0aGlzLnBsYWNlMkFkVGV4dHVyZVtpXT17dGV4Om8sdGV4VW5pdElkOmUsdGV4TmFtZTpHLG5hbWU6Wn19ZWxzZSB0aGlzLmFkVGV4dHVyZSYmdGhpcy5jdHguZGVsZXRlVGV4dHVyZSh0aGlzLmFkVGV4dHVyZSksdGhpcy5hZFRleHR1cmU9dGhpcy5nZW5lcmF0ZVRleHR1cmUodCx0aGlzLnRleFVuaXRGb3JHZW5lcmljQWQoKSwiYWQwIixudWxsLG51bGwsbnVsbCwhMSwhMSwhMCksdGhpcy5sYXN0QWQ9dCx0aGlzLmxhc3RBZE5hbWU9Wn1vbk1ldGFEYXRhKFope3RoaXMubWV0YWRhdGFNYXBbWi50aW1lY29kZV09Wix0aGlzLm1ldGFkYXRhQXJyLnB1c2goWi50aW1lY29kZSl9cmVuZGVyRnJhbWUoKXtsZXQgWj10aGlzLmN0eC5nZXRBdHRyaWJMb2NhdGlvbih0aGlzLnByb2dyYW0sImFfcG9zaXRpb24iKSx0PXRoaXMuY3R4LmdldEF0dHJpYkxvY2F0aW9uKHRoaXMucHJvZ3JhbSwiYV91diIpLGk9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwidV9yZXNvbHV0aW9uIik7dGhpcy5jdHgudW5pZm9ybTJmKGksdGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpLGk9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwidV9yZXNvbHV0aW9uMiIpLHRoaXMuY3R4LnVuaWZvcm0yZihpLHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KTtsZXQgZT10aGlzLmN0eC5jcmVhdGVCdWZmZXIoKTt0aGlzLmN0eC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShaKSx0aGlzLmN0eC5iaW5kQnVmZmVyKHRoaXMuY3R4LkFSUkFZX0JVRkZFUixlKTtsZXQgRz0yLG89dGhpcy5jdHguRkxPQVQscz0hMSxWPTAsaD0wO3RoaXMuY3R4LnZlcnRleEF0dHJpYlBvaW50ZXIoWixHLG8scyxWLGgpO2xldCB5PXRoaXMuY3R4LmNyZWF0ZUJ1ZmZlcigpO3RoaXMuY3R4LmJpbmRCdWZmZXIodGhpcy5jdHguQVJSQVlfQlVGRkVSLHkpLHRoaXMuY3R4LmJ1ZmZlckRhdGEodGhpcy5jdHguQVJSQVlfQlVGRkVSLG5ldyBGbG9hdDMyQXJyYXkoWzAsMCwxLDAsMCwxLDAsMSwxLDAsMSwxXSksdGhpcy5jdHguU1RBVElDX0RSQVcpLHRoaXMuY3R4LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHQpLEc9MixvPXRoaXMuY3R4LkZMT0FULHM9ITEsVj0wLGg9MCx0aGlzLmN0eC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHQsRyxvLHMsVixoKSx0aGlzLmN0eC52aWV3cG9ydCgwLDAsdGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpLHRoaXMuY3R4LmNsZWFyQ29sb3IoMCwwLDAsMCksdGhpcy5jdHguY2xlYXIodGhpcy5jdHguQ09MT1JfQlVGRkVSX0JJVHx0aGlzLmN0eC5ERVBUSF9CVUZGRVJfQklUKSx0aGlzLmN0eC5iaW5kQnVmZmVyKHRoaXMuY3R4LkFSUkFZX0JVRkZFUixlKSx0aGlzLnNldFJlY3RhbmdsZSgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KTtsZXQgTD10aGlzLmN0eC5UUklBTkdMRVM7dGhpcy5jdHguZHJhd0FycmF5cyhMLGgsNil9c2V0UmVjdGFuZ2xlKFosdCxpLGUpe2xldCBHPVosbz1aK2kscz10LFY9dCtlO3RoaXMuY3R4LmJ1ZmZlckRhdGEodGhpcy5jdHguQVJSQVlfQlVGRkVSLG5ldyBGbG9hdDMyQXJyYXkoW0cscyxvLHMsRyxWLEcsVixvLHMsbyxWXSksdGhpcy5jdHguU1RBVElDX0RSQVcpfXJlbmRlckF1Z21lbnRhdGlvbihaKXt0aGlzLmNhbnZhcy53aWR0aD0xMjgwLHRoaXMuY2FudmFzLmhlaWdodD03MjAsdGhpcy5vcHRpb25zLm1hc2tNUDQ/dGhpcy5yZW5kZXJBdWdtZW50YXRpb25NUDQoWik6dGhpcy5yZW5kZXJBdWdtZW50YXRpb25PbGQoWil9cmVuZGVyQXVnbWVudGF0aW9uTVA0KFope3RoaXMudmlkZW9TdGFydGVkPSEwO2xldCB0PW51bGw7aWYodGhpcy5tZXRhZGF0YU1hcFtaXSl7dD10aGlzLm1ldGFkYXRhTWFwW1pdO2NvbnN0IG89dGhpcy5tZXRhZGF0YUFyci5pbmRleE9mKFopO28+LTUmJnRoaXMubWV0YWRhdGFBcnIuc3BsaWNlKDAsby00KS5mb3JFYWNoKHM9PntkZWxldGUgdGhpcy5tZXRhZGF0YU1hcFtzXX0pfWVsc2UgdGhpcy5jb3VudGVyKyssdGhpcy5jb3VudGVyPjYwJiYodGhpcy5jb3VudGVyPTAsc24oIk1pc3NpbmcgbWV0YSBkYXRhIGF0IHRpbWUgY29kZSAiK1opKTtsZXQgaT1bXSxlPTA7aWYodGhpcy5jdXJyZW50QWRzMkJvdW5kaW5nUmVjdD1bXSx0IT1udWxsJiZ0LmFscGhhTWFzayl7bGV0IG89dGhpcy50ZXhVbml0QmFzZUZvckFscGhhKCk7Y29uc3Qgcz10aGlzLmdlbmVyYXRlVGV4dHVyZSh0LmFscGhhTWFzayxvLCJ1X2FscGhhTWFzayIsdGhpcy5jdHguUkdCQSxudWxsLG51bGwsITEsITApO2kucHVzaChzKTtmb3IoY29uc3QgViBpbiB0LnBsYWNlaG9sZGVycyl7Y29uc3QgaD10LnBsYWNlaG9sZGVyc1tWXTtsZXQgeT0iaGFzTG9nbyIrZSxMPXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0seSk7dGhpcy5jdHgudW5pZm9ybTFpKEwsMSk7bGV0IHg9ImFkRm9yTG9nbyIrZSxJPXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0seCk7dGhpcy5jdHgudW5pZm9ybTFpKEksdGhpcy50ZXhVbml0Rm9yUGxhY2VIb2xkZXIoaCkpO2xldCB2PSJ1X21hdHJpeCIrZSx6PXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sdik7dGhpcy5jdHgudW5pZm9ybU1hdHJpeDNmdih6LCExLGgudHJhbmZvcm0pO2xldCBIPXtsOi0xLHQ6LTEscjotMSxiOi0xfTtmb3IobGV0IEEgb2YgaC5jb3JuZXJzKShBLng8SC5sfHxILmw9PS0xKSYmKEgubD1BLngpLChBLng+SC5yfHxILnI9PS0xKSYmKEgucj1BLngpLChBLnk8SC50fHxILnQ9PS0xKSYmKEgudD1BLnkpLChBLnk+SC5ifHxILmI9PS0xKSYmKEguYj1BLnkpO0gubC89dC5jYW52YXNTaXplLndpZHRoLEguci89dC5jYW52YXNTaXplLndpZHRoLEgudC89dC5jYW52YXNTaXplLmhlaWdodCxILmIvPXQuY2FudmFzU2l6ZS5oZWlnaHQsdGhpcy5jdXJyZW50QWRzMkJvdW5kaW5nUmVjdC5wdXNoKHtuYW1lOnRoaXMuYWROYW1lRm9yUGxhY2VIb2xkZXIoaCkscmVjdDpIfSksZSsrfX1jb25zdCBHPTQ7Zm9yKDtlPEc7KytlKXtsZXQgbz0iaGFzTG9nbyIrZSxzPXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sbyk7dGhpcy5jdHgudW5pZm9ybTFpKHMsMCl9dGhpcy5yZW5kZXJUaW1lY29kZXMoWiksdGhpcy5yZW5kZXJGcmFtZSgpO2Zvcihjb25zdCBvIG9mIGkpdGhpcy5jdHguZGVsZXRlVGV4dHVyZShvKX1yZW5kZXJBdWdtZW50YXRpb25PbGQoWil7dGhpcy52aWRlb1N0YXJ0ZWQ9ITA7bGV0IHQ9bnVsbDtpZih0aGlzLm1ldGFkYXRhTWFwW1pdKXt0PXRoaXMubWV0YWRhdGFNYXBbWl07Y29uc3Qgbz10aGlzLm1ldGFkYXRhQXJyLmluZGV4T2YoWik7bz4tNSYmdGhpcy5tZXRhZGF0YUFyci5zcGxpY2UoMCxvLTQpLmZvckVhY2gocz0+e2RlbGV0ZSB0aGlzLm1ldGFkYXRhTWFwW3NdfSl9ZWxzZSB0aGlzLmNvdW50ZXIrKyx0aGlzLmNvdW50ZXI+NjAmJih0aGlzLmNvdW50ZXI9MCxzbigiTWlzc2luZyBtZXRhIGRhdGEgYXQgdGltZSBjb2RlICIrWikpO2xldCBpPVtdLGU9MDt0aGlzLmN1cnJlbnRBZHMyQm91bmRpbmdSZWN0PVtdO2Zvcihjb25zdCBvIGluIHQ9PW51bGw/dm9pZCAwOnQucGxhY2Vob2xkZXJzKXtjb25zdCBzPXQucGxhY2Vob2xkZXJzW29dO2lmKCFzLmFscGhhQXNVaW50OEFycmF5KWNvbnRpbnVlO2xldCBWPSJhbHBoYSIrZSxoPXRoaXMudGV4VW5pdEJhc2VGb3JBbHBoYSgpK2U7aWYocy5hbHBoYVRleD10aGlzLmdlbmVyYXRlVGV4dHVyZShzLmFscGhhQXNVaW50OEFycmF5LGgsVix0aGlzLmN0eC5BTFBIQSxzLndpZHRoLHMuaGVpZ2h0LCEwKSxzLmFscGhhQXNVaW50OEFycmF5PW51bGwsIXMuYWxwaGFUZXgpe3NuKCJGYWlsZWQgdG8gY3JlYXRlIGFscGhhIHRleHR1cmUiKTtjb250aW51ZX1pLnB1c2gocy5hbHBoYVRleCk7bGV0IHk9Imhhc0xvZ28iK2UsTD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLHkpO3RoaXMuY3R4LnVuaWZvcm0xaShMLDEpO2xldCB4PSJhZEZvckxvZ28iK2UsST10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLHgpLHY9ITE7cy5uYW1lLmluZGV4T2YoImJsdXIiKT49MD8odGhpcy5jdHgudW5pZm9ybTFpKEksOTkpLHY9ITApOnRoaXMuY3R4LnVuaWZvcm0xaShJLHRoaXMudGV4VW5pdEZvclBsYWNlSG9sZGVyKHMpKTtsZXQgej0idV9hbHBoYSIrZSsiVG9wTGVmdCIsSD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLHopO3RoaXMuY3R4LnVuaWZvcm0yZnYoSCxbcy5tYXNrWCxzLm1hc2tZXSk7bGV0IEE9InVfYWxwaGEiK2UrIlNpemUiLFlsPXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sQSk7dGhpcy5jdHgudW5pZm9ybTJmdihZbCxbcy53aWR0aCxzLmhlaWdodF0pO2xldCBHbD0idV9tYXRyaXgiK2UsWm49dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSxHbCk7aWYodGhpcy5jdHgudW5pZm9ybU1hdHJpeDNmdihabiwhMSxzLnRyYW5mb3JtKSwhdil7bGV0IF89e2w6LTEsdDotMSxyOi0xLGI6LTF9O2ZvcihsZXQgcmwgb2Ygcy5jb3JuZXJzKShybC54PF8ubHx8Xy5sPT0tMSkmJihfLmw9cmwueCksKHJsLng+Xy5yfHxfLnI9PS0xKSYmKF8ucj1ybC54KSwocmwueTxfLnR8fF8udD09LTEpJiYoXy50PXJsLnkpLChybC55Pl8uYnx8Xy5iPT0tMSkmJihfLmI9cmwueSk7Xy5sLz10LmNhbnZhc1NpemUud2lkdGgsXy5yLz10LmNhbnZhc1NpemUud2lkdGgsXy50Lz10LmNhbnZhc1NpemUuaGVpZ2h0LF8uYi89dC5jYW52YXNTaXplLmhlaWdodCx0aGlzLmN1cnJlbnRBZHMyQm91bmRpbmdSZWN0LnB1c2goe25hbWU6dGhpcy5hZE5hbWVGb3JQbGFjZUhvbGRlcihzKSxyZWN0Ol99KX1lKyt9Y29uc3QgRz00O2Zvcig7ZTxHOysrZSl7bGV0IG89Imhhc0xvZ28iK2Uscz10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLG8pO3RoaXMuY3R4LnVuaWZvcm0xaShzLDApfXRoaXMucmVuZGVyVGltZWNvZGVzKFopLHRoaXMucmVuZGVyRnJhbWUoKTtmb3IoY29uc3QgbyBvZiBpKXRoaXMuY3R4LmRlbGV0ZVRleHR1cmUobyl9cmVuZGVyVGltZWNvZGVzKFope2lmKHRoaXMub3B0aW9ucy5yZW5kZXJUaW1lY29kZXMpe2xldCB0PVouc3BsaXQoIjoiKVszXSxpPXQuaW5kZXhPZigiLiIpPj0wPzI6MSxHPXBhcnNlSW50KHQuc3BsaXQoIi4iKVswXSklMTArIi4iK2ksbz10aGlzLnRleFVuaXRCYXNlRm9yQWxwaGEoKSs1LHM9dGhpcy5nZW5lcmF0ZVRleHR1cmUodGhpcy5kaWdpdEltZ1tHXSxvLCJkaWdpdFRleCIpO3RleHR1cmVzRm9yVGhpc0ZyYW1lLnB1c2gocyk7bGV0IGg9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwiaGFzRGlnaXQiKTt0aGlzLmN0eC51bmlmb3JtMWkoaCwxKTtsZXQgTD10aGlzLmN0eC5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5wcm9ncmFtLCJ1X2RpZ2l0VG9wTGVmdCIpO3RoaXMuY3R4LnVuaWZvcm0yZnYoTCxbMCwwXSk7bGV0IEk9dGhpcy5jdHguZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMucHJvZ3JhbSwidV9kaWdpdFNpemUiKTt0aGlzLmN0eC51bmlmb3JtMmZ2KEksWzIwMCwyMDBdKX1lbHNle2xldCBpPXRoaXMuY3R4LmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnByb2dyYW0sImhhc0RpZ2l0Iik7dGhpcy5jdHgudW5pZm9ybTFpKGksMCl9fXRvZ2dsZUZ1bGxzY3JlZW4oKXsodGhpcy5yZXF1ZXN0RnVsbHNjcmVlbnx8dGhpcy53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikuY2FsbCh0aGlzKS5jYXRjaChaPT57c24oWil9KX19Y2xhc3MgYlggZXh0ZW5kcyBhWHtjb25zdHJ1Y3RvcihaKXtzdXBlcihaLm9wdGlvbnMpLHRoaXMuY2FudmFzPVouY2FudmFzLHRoaXMuY3R4PXRoaXMuY2FudmFzLmdldENvbnRleHQoIndlYmdsIix7cHJlbXVsdGlwbGllZEFscGhhOiExLGFudGlhbGlhczohMX0pLHRoaXMuaW5pdEdMKCl9YXN5bmMgY3JlYXRlRGlnaXRJbWcoWil7bGV0IHQ9bmV3IE9mZnNjcmVlbkNhbnZhcyg1MCw1MCksaT10LmdldENvbnRleHQoIjJkIik7cmV0dXJuIGkuZmlsbFN0eWxlPSJibGFjayIsaS5maWxsUmVjdCgwLDAsdC53aWR0aCx0LmhlaWdodCksaS5mb250PSIzMHB4IEFyaWFsIixpLmZpbGxTdHlsZT0id2hpdGUiLGkuZmlsbFRleHQoWiwxMCwzNSksYXdhaXQgdC50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX1hc3luYyBhZGRBZHZlcnRpc2VtZW50KFope2xldHtuYW1lOnQscGF0aDppLGlzU2VsZWN0ZWQ6ZX09WjtpZih0LmluZGV4T2YoIi5qc29uIik+LTEpe2ZldGNoKGkpLnRoZW4oYXN5bmMgaD0+e3RoaXMucGxhY2UyYWQ9YXdhaXQgaC5qc29uKCksdGhpcy5hZDJwbGFjZT17fTtsZXQgeT1PYmplY3Qua2V5cyh0aGlzLnBsYWNlMmFkKTtmb3IobGV0IEw9MDtMPHkubGVuZ3RoOysrTCl7bGV0IHg9eVtMXTtpZih4PT0idXJscyIpe3RoaXMuYWQyVXJsPXRoaXMucGxhY2UyYWRbeF0sZGVsZXRlIHRoaXMucGxhY2UyYWRbeF07Y29udGludWV9bGV0IEk9dGhpcy5wbGFjZTJhZFt4XTtmb3IobGV0IHY9MDt2PEkubGVuZ3RoOysrdil7bGV0IHo9SVt2XTt0aGlzLmFkMnBsYWNlWyIjIit6XT14fX1PYmplY3Qua2V5cyh0aGlzLnBsYWNlMmFkKS5sZW5ndGg+MCYmKEJCTG9nKGBjb21wb3Nlcjo6QWRkQWR2ZXJ0aXNlbWVudDogcGxhY2UtdG8tYWRzIG1hcHBpbmc6ICR7dGhpcy5wbGFjZTJhZH1gKSxCQkxvZyhgY29tcG9zZXI6OkFkZEFkdmVydGlzZW1lbnQ6IGFkcy10by1wbGFjZSBtYXBwaW5nOiAke3RoaXMuYWQycGxhY2V9YCksc2V0VGltZW91dCgoKT0+e3RoaXMubWFrZVN1cmVBZFBlclBsYWNlKCl9LDNlMykpLGUmJnRoaXMuc2VsZWN0QWQodCl9KTtyZXR1cm59Y29uc3Qgbz1hd2FpdChhd2FpdCBmZXRjaChpKSkuYmxvYigpLHM9YXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAobyk7bGV0IFY9T2JqZWN0LmtleXModGhpcy5hZHZlcnRpc2VtZW50TWFwKS5sZW5ndGg9PT0wO3RoaXMuYWR2ZXJ0aXNlbWVudE1hcFt0XT1zLFYmJih0aGlzLnNlbGVjdEFkKHQpLHRoaXMub3B0aW9ucy5pc0FkTG9vcCYmKGNsZWFyVGltZW91dCh0aGlzLmF1dG9BZGRJbmRleCksdGhpcy5fbmV4dEFkdmVydGlzZW1lbnQoKSkpfX1sZXQgYWw9bnVsbDtvbm1lc3NhZ2U9Yz0+e3N3aXRjaChjLmRhdGEuYWN0aW9uKXtjYXNlIm9uVXNlckNsaWNrT25DYW52YXMiOmFsPT1udWxsfHxhbC5vblVzZXJDbGlja09uQ2FudmFzKGMuZGF0YS5wYXlsb2FkKTticmVhaztjYXNlImNsZWFuR0wiOmFsPT1udWxsfHxhbC5jbGVhbkdMKCk7YnJlYWs7Y2FzZSJhZGRBZHZlcnRpc2VtZW50IjphbD09bnVsbHx8YWwuYWRkQWR2ZXJ0aXNlbWVudChjLmRhdGEucGF5bG9hZCk7YnJlYWs7Y2FzZSJzZWxlY3RBZCI6YWw9PW51bGx8fGFsLnNlbGVjdEFkKGMuZGF0YS5wYXlsb2FkKTticmVhaztjYXNlIm9uTWV0YURhdGEiOmFsPT1udWxsfHxhbC5vbk1ldGFEYXRhKGMuZGF0YS5wYXlsb2FkKTticmVhaztjYXNlInJlbmRlckF1Z21lbnRhdGlvbiI6YWw9PW51bGx8fGFsLnJlbmRlckF1Z21lbnRhdGlvbihjLmRhdGEucGF5bG9hZCk7YnJlYWs7Y2FzZSJzZXRMYXN0RnJhbWUiOmFsLnNldExhc3RGcmFtZShjLmRhdGEucGF5bG9hZCk7YnJlYWs7Y2FzZSJjb25zdHJ1Y3RvciI6YWw9bmV3IGJYKGMuZGF0YS5wYXlsb2FkKTticmVhaztkZWZhdWx0OnNuKCJXcm9uZyBUaHJlYWQgTWVzc2FnZSIpfX19KSgpOwo=",IY=l=>Uint8Array.from(atob(l),W=>W.charCodeAt(0)),Vn=typeof self<"u"&&self.Blob&&new Blob([IY(ln)],{type:"text/javascript;charset=utf-8"});function EY(l){let W;try{if(W=Vn&&(self.URL||self.webkitURL).createObjectURL(Vn),!W)throw"";const d=new Worker(W,{name:l==null?void 0:l.name});return d.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(W)}),d}catch{return new Worker("data:text/javascript;base64,"+ln,{name:l==null?void 0:l.name})}finally{W&&(self.URL||self.webkitURL).revokeObjectURL(W)}}class LY{constructor(W,d){this.canvas=W,this.worker=new EY,this.worker.onmessage=e=>{const{action:n,payload:i}=e;n=="log"&&Ae(i)};const b=W.transferControlToOffscreen();let t=6e4/1001;d={...d,sourceFPS:t},this.worker.postMessage({action:"constructor",payload:{canvas:b,options:{sourceFPS:t,renderTimecodes:d.renderTimecodes,maskMP4:d.maskMP4,gameId:d.gameId,cloudFrontURL:d.cloudFrontURL,enabled:d.enabled}}},[b])}onUserClickOnCanvas(W,d,b){this.worker.postMessage({action:"onUserClickOnCanvas",payload:{clientX:W,clientY:d,rect:b}})}cleanGL(){this.worker.postMessage({action:"cleanGL"})}renderAugmentation(W){this.worker.postMessage({action:"renderAugmentation",payload:W})}addAdvertisement(W){this.worker.postMessage({action:"addAdvertisement",payload:W})}getCanvas(){return this.canvas}selectAd(W){this.worker.postMessage({action:"selectAd",payload:W})}onMetaData(W){this.worker.postMessage({action:"onMetaData",payload:W})}setLastFrame(W){this.worker.postMessage({action:"setLastFrame",payload:W})}}const DW={RenderDigits:Symbol("RenderDigits"),RenderTimecode:Symbol("RenderTimecode"),Augment:Symbol("Augment")};var ya={exports:{}},wY=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,jY=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],BY=function(W){var d=W,b=W.indexOf("["),t=W.indexOf("]");b!=-1&&t!=-1&&(W=W.substring(0,b)+W.substring(b,t).replace(/:/g,";")+W.substring(t,W.length));for(var e=wY.exec(W||""),n={},i=14;i--;)n[jY[i]]=e[i]||"";return b!=-1&&t!=-1&&(n.source=d,n.host=n.host.substring(1,n.host.length-1).replace(/;/g,":"),n.authority=n.authority.replace("[","").replace("]","").replace(/;/g,":"),n.ipv6uri=!0),n},Ha={exports:{}},za,Wn;function KY(){if(Wn)return za;Wn=1;var l=1e3,W=l*60,d=W*60,b=d*24,t=b*7,e=b*365.25;za=function(p,s){s=s||{};var X=typeof p;if(X==="string"&&p.length>0)return n(p);if(X==="number"&&isFinite(p))return s.long?h(p):i(p);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(p))};function n(p){if(p=String(p),!(p.length>100)){var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(p);if(s){var X=parseFloat(s[1]),o=(s[2]||"ms").toLowerCase();switch(o){case"years":case"year":case"yrs":case"yr":case"y":return X*e;case"weeks":case"week":case"w":return X*t;case"days":case"day":case"d":return X*b;case"hours":case"hour":case"hrs":case"hr":case"h":return X*d;case"minutes":case"minute":case"mins":case"min":case"m":return X*W;case"seconds":case"second":case"secs":case"sec":case"s":return X*l;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return X;default:return}}}}function i(p){var s=Math.abs(p);return s>=b?Math.round(p/b)+"d":s>=d?Math.round(p/d)+"h":s>=W?Math.round(p/W)+"m":s>=l?Math.round(p/l)+"s":p+"ms"}function h(p){var s=Math.abs(p);return s>=b?G(p,s,b,"day"):s>=d?G(p,s,d,"hour"):s>=W?G(p,s,W,"minute"):s>=l?G(p,s,l,"second"):p+" ms"}function G(p,s,X,o){var r=s>=X*1.5;return Math.round(p/X)+" "+o+(r?"s":"")}return za}function vY(l){d.debug=d,d.default=d,d.coerce=G,d.disable=n,d.enable=e,d.enabled=i,d.humanize=KY(),Object.keys(l).forEach(p=>{d[p]=l[p]}),d.instances=[],d.names=[],d.skips=[],d.formatters={};function W(p){let s=0;for(let X=0;X<p.length;X++)s=(s<<5)-s+p.charCodeAt(X),s|=0;return d.colors[Math.abs(s)%d.colors.length]}d.selectColor=W;function d(p){let s;function X(...o){if(!X.enabled)return;const r=X,M=Number(new Date),L=M-(s||M);r.diff=L,r.prev=s,r.curr=M,s=M,o[0]=d.coerce(o[0]),typeof o[0]!="string"&&o.unshift("%O");let J=0;o[0]=o[0].replace(/%([a-zA-Z%])/g,(K,x)=>{if(K==="%%")return K;J++;const z=d.formatters[x];if(typeof z=="function"){const I=o[J];K=z.call(r,I),o.splice(J,1),J--}return K}),d.formatArgs.call(r,o),(r.log||d.log).apply(r,o)}return X.namespace=p,X.enabled=d.enabled(p),X.useColors=d.useColors(),X.color=W(p),X.destroy=b,X.extend=t,typeof d.init=="function"&&d.init(X),d.instances.push(X),X}function b(){const p=d.instances.indexOf(this);return p!==-1?(d.instances.splice(p,1),!0):!1}function t(p,s){const X=d(this.namespace+(typeof s>"u"?":":s)+p);return X.log=this.log,X}function e(p){d.save(p),d.names=[],d.skips=[];let s;const X=(typeof p=="string"?p:"").split(/[\s,]+/),o=X.length;for(s=0;s<o;s++)X[s]&&(p=X[s].replace(/\*/g,".*?"),p[0]==="-"?d.skips.push(new RegExp("^"+p.substr(1)+"$")):d.names.push(new RegExp("^"+p+"$")));for(s=0;s<d.instances.length;s++){const r=d.instances[s];r.enabled=d.enabled(r.namespace)}}function n(){const p=[...d.names.map(h),...d.skips.map(h).map(s=>"-"+s)].join(",");return d.enable(""),p}function i(p){if(p[p.length-1]==="*")return!0;let s,X;for(s=0,X=d.skips.length;s<X;s++)if(d.skips[s].test(p))return!1;for(s=0,X=d.names.length;s<X;s++)if(d.names[s].test(p))return!0;return!1}function h(p){return p.toString().substring(2,p.toString().length-2).replace(/\.\*\?$/,"*")}function G(p){return p instanceof Error?p.stack||p.message:p}return d.enable(d.load()),d}var gY=vY;(function(l,W){W.log=t,W.formatArgs=b,W.save=e,W.load=n,W.useColors=d,W.storage=i(),W.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function d(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function b(G){if(G[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+G[0]+(this.useColors?"%c ":" ")+"+"+l.exports.humanize(this.diff),!this.useColors)return;const p="color: "+this.color;G.splice(1,0,p,"color: inherit");let s=0,X=0;G[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(s++,o==="%c"&&(X=s))}),G.splice(X,0,p)}function t(...G){return typeof console=="object"&&console.log&&console.log(...G)}function e(G){try{G?W.storage.setItem("debug",G):W.storage.removeItem("debug")}catch{}}function n(){let G;try{G=W.storage.getItem("debug")}catch{}return!G&&typeof process<"u"&&"env"in process&&(G=process.env.DEBUG),G}function i(){try{return localStorage}catch{}}l.exports=gY(W);const{formatters:h}=l.exports;h.j=function(G){try{return JSON.stringify(G)}catch(p){return"[UnexpectedJSONParseError]: "+p.message}}})(Ha,Ha.exports);var IZ=Ha.exports,fY=BY,dn=IZ("socket.io-client:url"),CY=QY;function QY(l,W){var d=l;W=W||typeof location<"u"&&location,l==null&&(l=W.protocol+"//"+W.host),typeof l=="string"&&(l.charAt(0)==="/"&&(l.charAt(1)==="/"?l=W.protocol+l:l=W.host+l),/^(https?|wss?):\/\//.test(l)||(dn("protocol-less url %s",l),typeof W<"u"?l=W.protocol+"//"+l:l="https://"+l),dn("parse %s",l),d=fY(l)),d.port||(/^(http|ws)$/.test(d.protocol)?d.port="80":/^(http|ws)s$/.test(d.protocol)&&(d.port="443")),d.path=d.path||"/";var b=d.host.indexOf(":")!==-1,t=b?"["+d.host+"]":d.host;return d.id=d.protocol+"://"+t+":"+d.port,d.href=d.protocol+"://"+t+(W&&W.port===d.port?"":":"+d.port),d}var EZ={},Ia={exports:{}},Ea={exports:{}},xd=1e3,yd=xd*60,Hd=yd*60,zd=Hd*24,DY=zd*365.25,OY=function(l,W){W=W||{};var d=typeof l;if(d==="string"&&l.length>0)return PY(l);if(d==="number"&&isNaN(l)===!1)return W.long?_Y(l):AY(l);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(l))};function PY(l){if(l=String(l),!(l.length>100)){var W=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(l);if(W){var d=parseFloat(W[1]),b=(W[2]||"ms").toLowerCase();switch(b){case"years":case"year":case"yrs":case"yr":case"y":return d*DY;case"days":case"day":case"d":return d*zd;case"hours":case"hour":case"hrs":case"hr":case"h":return d*Hd;case"minutes":case"minute":case"mins":case"min":case"m":return d*yd;case"seconds":case"second":case"secs":case"sec":case"s":return d*xd;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return d;default:return}}}}function AY(l){return l>=zd?Math.round(l/zd)+"d":l>=Hd?Math.round(l/Hd)+"h":l>=yd?Math.round(l/yd)+"m":l>=xd?Math.round(l/xd)+"s":l+"ms"}function _Y(l){return LZ(l,zd,"day")||LZ(l,Hd,"hour")||LZ(l,yd,"minute")||LZ(l,xd,"second")||l+" ms"}function LZ(l,W,d){if(!(l<W))return l<W*1.5?Math.floor(l/W)+" "+d:Math.ceil(l/W)+" "+d+"s"}(function(l,W){W=l.exports=b.debug=b.default=b,W.coerce=h,W.disable=n,W.enable=e,W.enabled=i,W.humanize=OY,W.instances=[],W.names=[],W.skips=[],W.formatters={};function d(G){var p=0,s;for(s in G)p=(p<<5)-p+G.charCodeAt(s),p|=0;return W.colors[Math.abs(p)%W.colors.length]}function b(G){var p;function s(){if(s.enabled){var X=s,o=+new Date,r=o-(p||o);X.diff=r,X.prev=p,X.curr=o,p=o;for(var M=new Array(arguments.length),L=0;L<M.length;L++)M[L]=arguments[L];M[0]=W.coerce(M[0]),typeof M[0]!="string"&&M.unshift("%O");var J=0;M[0]=M[0].replace(/%([a-zA-Z%])/g,function(K,x){if(K==="%%")return K;J++;var z=W.formatters[x];if(typeof z=="function"){var I=M[J];K=z.call(X,I),M.splice(J,1),J--}return K}),W.formatArgs.call(X,M);var w=s.log||W.log||console.log.bind(console);w.apply(X,M)}}return s.namespace=G,s.enabled=W.enabled(G),s.useColors=W.useColors(),s.color=d(G),s.destroy=t,typeof W.init=="function"&&W.init(s),W.instances.push(s),s}function t(){var G=W.instances.indexOf(this);return G!==-1?(W.instances.splice(G,1),!0):!1}function e(G){W.save(G),W.names=[],W.skips=[];var p,s=(typeof G=="string"?G:"").split(/[\s,]+/),X=s.length;for(p=0;p<X;p++)s[p]&&(G=s[p].replace(/\*/g,".*?"),G[0]==="-"?W.skips.push(new RegExp("^"+G.substr(1)+"$")):W.names.push(new RegExp("^"+G+"$")));for(p=0;p<W.instances.length;p++){var o=W.instances[p];o.enabled=W.enabled(o.namespace)}}function n(){W.enable("")}function i(G){if(G[G.length-1]==="*")return!0;var p,s;for(p=0,s=W.skips.length;p<s;p++)if(W.skips[p].test(G))return!1;for(p=0,s=W.names.length;p<s;p++)if(W.names[p].test(G))return!0;return!1}function h(G){return G instanceof Error?G.stack||G.message:G}})(Ea,Ea.exports);var qY=Ea.exports;(function(l,W){W=l.exports=qY,W.log=t,W.formatArgs=b,W.save=e,W.load=n,W.useColors=d,W.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:i(),W.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function d(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}W.formatters.j=function(h){try{return JSON.stringify(h)}catch(G){return"[UnexpectedJSONParseError]: "+G.message}};function b(h){var G=this.useColors;if(h[0]=(G?"%c":"")+this.namespace+(G?" %c":" ")+h[0]+(G?"%c ":" ")+"+"+W.humanize(this.diff),!!G){var p="color: "+this.color;h.splice(1,0,p,"color: inherit");var s=0,X=0;h[0].replace(/%[a-zA-Z%]/g,function(o){o!=="%%"&&(s++,o==="%c"&&(X=s))}),h.splice(X,0,p)}}function t(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function e(h){try{h==null?W.storage.removeItem("debug"):W.storage.debug=h}catch{}}function n(){var h;try{h=W.storage.debug}catch{}return!h&&typeof process<"u"&&"env"in process&&(h=process.env.DEBUG),h}W.enable(n());function i(){try{return window.localStorage}catch{}}})(Ia,Ia.exports);var $Y=Ia.exports,Zn={exports:{}};(function(l){l.exports=W;function W(b){if(b)return d(b)}function d(b){for(var t in W.prototype)b[t]=W.prototype[t];return b}W.prototype.on=W.prototype.addEventListener=function(b,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+b]=this._callbacks["$"+b]||[]).push(t),this},W.prototype.once=function(b,t){function e(){this.off(b,e),t.apply(this,arguments)}return e.fn=t,this.on(b,e),this},W.prototype.off=W.prototype.removeListener=W.prototype.removeAllListeners=W.prototype.removeEventListener=function(b,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var e=this._callbacks["$"+b];if(!e)return this;if(arguments.length==1)return delete this._callbacks["$"+b],this;for(var n,i=0;i<e.length;i++)if(n=e[i],n===t||n.fn===t){e.splice(i,1);break}return e.length===0&&delete this._callbacks["$"+b],this},W.prototype.emit=function(b){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),e=this._callbacks["$"+b],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(e){e=e.slice(0);for(var n=0,i=e.length;n<i;++n)e[n].apply(this,t)}return this},W.prototype.listeners=function(b){return this._callbacks=this._callbacks||{},this._callbacks["$"+b]||[]},W.prototype.hasListeners=function(b){return!!this.listeners(b).length}})(Zn);var ls=Zn.exports,wZ={},Vs={}.toString,La=Array.isArray||function(l){return Vs.call(l)=="[object Array]"},bn=bs,Ws=typeof Buffer=="function"&&typeof Buffer.isBuffer=="function",ds=typeof ArrayBuffer=="function",Zs=function(l){return typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(l):l.buffer instanceof ArrayBuffer};function bs(l){return Ws&&Buffer.isBuffer(l)||ds&&(l instanceof ArrayBuffer||Zs(l))}var wa=La,an=bn,tn=Object.prototype.toString,as=typeof Blob=="function"||typeof Blob<"u"&&tn.call(Blob)==="[object BlobConstructor]",ts=typeof File=="function"||typeof File<"u"&&tn.call(File)==="[object FileConstructor]";wZ.deconstructPacket=function(l){var W=[],d=l.data,b=l;return b.data=ja(d,W),b.attachments=W.length,{packet:b,buffers:W}};function ja(l,W){if(!l)return l;if(an(l)){var d={_placeholder:!0,num:W.length};return W.push(l),d}else if(wa(l)){for(var b=new Array(l.length),t=0;t<l.length;t++)b[t]=ja(l[t],W);return b}else if(typeof l=="object"&&!(l instanceof Date)){var b={};for(var e in l)b[e]=ja(l[e],W);return b}return l}wZ.reconstructPacket=function(l,W){return l.data=Ba(l.data,W),l.attachments=void 0,l};function Ba(l,W){if(!l)return l;if(l&&l._placeholder===!0){var d=typeof l.num=="number"&&l.num>=0&&l.num<W.length;if(d)return W[l.num];throw new Error("illegal attachments")}else if(wa(l))for(var b=0;b<l.length;b++)l[b]=Ba(l[b],W);else if(typeof l=="object")for(var t in l)l[t]=Ba(l[t],W);return l}wZ.removeBlobs=function(l,W){function d(e,n,i){if(!e)return e;if(as&&e instanceof Blob||ts&&e instanceof File){b++;var h=new FileReader;h.onload=function(){i?i[n]=this.result:t=this.result,--b||W(t)},h.readAsArrayBuffer(e)}else if(wa(e))for(var G=0;G<e.length;G++)d(e[G],G,e);else if(typeof e=="object"&&!an(e))for(var p in e)d(e[p],p,e)}var b=0,t=l;d(t),b||W(t)},function(l){var W=$Y("socket.io-parser"),d=ls,b=wZ,t=La,e=bn;l.protocol=4,l.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],l.CONNECT=0,l.DISCONNECT=1,l.EVENT=2,l.ACK=3,l.ERROR=4,l.BINARY_EVENT=5,l.BINARY_ACK=6,l.Encoder=n,l.Decoder=s;function n(){}var i=l.ERROR+'"encode error"';n.prototype.encode=function(J,w){if(W("encoding packet %j",J),l.BINARY_EVENT===J.type||l.BINARY_ACK===J.type)p(J,w);else{var K=h(J);w([K])}};function h(J){var w=""+J.type;if((l.BINARY_EVENT===J.type||l.BINARY_ACK===J.type)&&(w+=J.attachments+"-"),J.nsp&&J.nsp!=="/"&&(w+=J.nsp+","),J.id!=null&&(w+=J.id),J.data!=null){var K=G(J.data);if(K!==!1)w+=K;else return i}return W("encoded %j as %s",J,w),w}function G(J){try{return JSON.stringify(J)}catch{return!1}}function p(J,w){function K(x){var z=b.deconstructPacket(x),I=h(z.packet),k=z.buffers;k.unshift(I),w(k)}b.removeBlobs(J,K)}function s(){this.reconstructor=null}d(s.prototype),s.prototype.add=function(J){var w;if(typeof J=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");w=o(J),l.BINARY_EVENT===w.type||l.BINARY_ACK===w.type?(this.reconstructor=new M(w),this.reconstructor.reconPack.attachments===0&&this.emit("decoded",w)):this.emit("decoded",w)}else if(e(J)||J.base64)if(this.reconstructor)w=this.reconstructor.takeBinaryData(J),w&&(this.reconstructor=null,this.emit("decoded",w));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+J)};function X(J,w){switch(J){case 0:return typeof w=="object";case 1:return w===void 0;case 4:return typeof w=="string"||typeof w=="object";case 2:case 5:return t(w)&&(typeof w[0]=="string"||typeof w[0]=="number");case 3:case 6:return t(w)}}function o(J){var w=0,K={type:Number(J.charAt(0))};if(l.types[K.type]==null)return L("unknown packet type "+K.type);if(l.BINARY_EVENT===K.type||l.BINARY_ACK===K.type){for(var x=w+1;J.charAt(++w)!=="-"&&w!=J.length;);var z=J.substring(x,w);if(z!=Number(z)||J.charAt(w)!=="-")throw new Error("Illegal attachments");K.attachments=Number(z)}if(J.charAt(w+1)==="/"){for(var x=w+1;++w;){var I=J.charAt(w);if(I===","||w===J.length)break}K.nsp=J.substring(x,w)}else K.nsp="/";var k=J.charAt(w+1);if(k!==""&&Number(k)==k){for(var x=w+1;++w;){var I=J.charAt(w);if(I==null||Number(I)!=I){--w;break}if(w===J.length)break}K.id=Number(J.substring(x,w+1))}if(J.charAt(++w)){var B=r(J.substr(w));if(X(K.type,B))K.data=B;else throw new Error("invalid payload")}return W("decoded %s as %j",J,K),K}function r(J){try{return JSON.parse(J)}catch{return!1}}s.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()};function M(J){this.reconPack=J,this.buffers=[]}M.prototype.takeBinaryData=function(J){if(this.buffers.push(J),this.buffers.length===this.reconPack.attachments){var w=b.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),w}return null},M.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]};function L(J){return{type:l.ERROR,data:"parser error: "+J}}}(EZ);var Ka={exports:{}},jZ={},va={exports:{}};try{va.exports=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{va.exports=!1}var ms=va.exports,ga=function(){return typeof self<"u"?self:typeof window<"u"?window:Function("return this")()}(),es=ms,ns=ga,fa=function(l){var W=l.xdomain,d=l.xscheme,b=l.enablesXDR;try{if(typeof XMLHttpRequest<"u"&&(!W||es))return new XMLHttpRequest}catch{}try{if(typeof XDomainRequest<"u"&&!d&&b)return new XDomainRequest}catch{}if(!W)try{return new ns[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}},Ca={exports:{}},MW={},cs=Object.keys||function(W){var d=[],b=Object.prototype.hasOwnProperty;for(var t in W)b.call(W,t)&&d.push(t);return d},is=La,mn=Object.prototype.toString,Gs=typeof Blob=="function"||typeof Blob<"u"&&mn.call(Blob)==="[object BlobConstructor]",ps=typeof File=="function"||typeof File<"u"&&mn.call(File)==="[object FileConstructor]",en=BZ;function BZ(l){if(!l||typeof l!="object")return!1;if(is(l)){for(var W=0,d=l.length;W<d;W++)if(BZ(l[W]))return!0;return!1}if(typeof Buffer=="function"&&Buffer.isBuffer&&Buffer.isBuffer(l)||typeof ArrayBuffer=="function"&&l instanceof ArrayBuffer||Gs&&l instanceof Blob||ps&&l instanceof File)return!0;if(l.toJSON&&typeof l.toJSON=="function"&&arguments.length===1)return BZ(l.toJSON(),!0);for(var b in l)if(Object.prototype.hasOwnProperty.call(l,b)&&BZ(l[b]))return!0;return!1}var hs=function(l,W,d){var b=l.byteLength;if(W=W||0,d=d||b,l.slice)return l.slice(W,d);if(W<0&&(W+=b),d<0&&(d+=b),d>b&&(d=b),W>=b||W>=d||b===0)return new ArrayBuffer(0);for(var t=new Uint8Array(l),e=new Uint8Array(d-W),n=W,i=0;n<d;n++,i++)e[i]=t[n];return e.buffer},Rs=Ys;function Ys(l,W,d){var b=!1;return d=d||ss,t.count=l,l===0?W():t;function t(e,n){if(t.count<=0)throw new Error("after called too many times");--t.count,e?(b=!0,W(e),W=d):t.count===0&&!b&&W(null,n)}}function ss(){}/*! https://mths.be/utf8js v2.1.2 by @mathias */var _V=String.fromCharCode;function nn(l){for(var W=[],d=0,b=l.length,t,e;d<b;)t=l.charCodeAt(d++),t>=55296&&t<=56319&&d<b?(e=l.charCodeAt(d++),(e&64512)==56320?W.push(((t&1023)<<10)+(e&1023)+65536):(W.push(t),d--)):W.push(t);return W}function Xs(l){for(var W=l.length,d=-1,b,t="";++d<W;)b=l[d],b>65535&&(b-=65536,t+=_V(b>>>10&1023|55296),b=56320|b&1023),t+=_V(b);return t}function cn(l,W){if(l>=55296&&l<=57343){if(W)throw Error("Lone surrogate U+"+l.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function Qa(l,W){return _V(l>>W&63|128)}function os(l,W){if(!(l&4294967168))return _V(l);var d="";return l&4294965248?l&4294901760?l&4292870144||(d=_V(l>>18&7|240),d+=Qa(l,12),d+=Qa(l,6)):(cn(l,W)||(l=65533),d=_V(l>>12&15|224),d+=Qa(l,6)):d=_V(l>>6&31|192),d+=_V(l&63|128),d}function us(l,W){W=W||{};for(var d=W.strict!==!1,b=nn(l),t=b.length,e=-1,n,i="";++e<t;)n=b[e],i+=os(n,d);return i}function OW(){if(qV>=vZ)throw Error("Invalid byte index");var l=KZ[qV]&255;if(qV++,(l&192)==128)return l&63;throw Error("Invalid continuation byte")}function Ns(l){var W,d,b,t,e;if(qV>vZ)throw Error("Invalid byte index");if(qV==vZ)return!1;if(W=KZ[qV]&255,qV++,!(W&128))return W;if((W&224)==192){if(d=OW(),e=(W&31)<<6|d,e>=128)return e;throw Error("Invalid continuation byte")}if((W&240)==224){if(d=OW(),b=OW(),e=(W&15)<<12|d<<6|b,e>=2048)return cn(e,l)?e:65533;throw Error("Invalid continuation byte")}if((W&248)==240&&(d=OW(),b=OW(),t=OW(),e=(W&7)<<18|d<<12|b<<6|t,e>=65536&&e<=1114111))return e;throw Error("Invalid UTF-8 detected")}var KZ,vZ,qV;function Fs(l,W){W=W||{};var d=W.strict!==!1;KZ=nn(l),vZ=KZ.length,qV=0;for(var b=[],t;(t=Ns(d))!==!1;)b.push(t);return Xs(b)}var Us={version:"2.1.2",encode:us,decode:Fs},gZ={},Gn;function Ss(){return Gn||(Gn=1,function(l){gZ.encode=function(W){var d=new Uint8Array(W),b,t=d.length,e="";for(b=0;b<t;b+=3)e+=l[d[b]>>2],e+=l[(d[b]&3)<<4|d[b+1]>>4],e+=l[(d[b+1]&15)<<2|d[b+2]>>6],e+=l[d[b+2]&63];return t%3===2?e=e.substring(0,e.length-1)+"=":t%3===1&&(e=e.substring(0,e.length-2)+"=="),e},gZ.decode=function(W){var d=W.length*.75,b=W.length,t,e=0,n,i,h,G;W[W.length-1]==="="&&(d--,W[W.length-2]==="="&&d--);var p=new ArrayBuffer(d),s=new Uint8Array(p);for(t=0;t<b;t+=4)n=l.indexOf(W[t]),i=l.indexOf(W[t+1]),h=l.indexOf(W[t+2]),G=l.indexOf(W[t+3]),s[e++]=n<<2|i>>4,s[e++]=(i&15)<<4|h>>2,s[e++]=(h&3)<<6|G&63;return p}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")),gZ}var Da,pn;function Ms(){if(pn)return Da;pn=1;var l=typeof l<"u"?l:typeof WebKitBlobBuilder<"u"?WebKitBlobBuilder:typeof MSBlobBuilder<"u"?MSBlobBuilder:typeof MozBlobBuilder<"u"?MozBlobBuilder:!1,W=function(){try{var i=new Blob(["hi"]);return i.size===2}catch{return!1}}(),d=W&&function(){try{var i=new Blob([new Uint8Array([1,2])]);return i.size===2}catch{return!1}}(),b=l&&l.prototype.append&&l.prototype.getBlob;function t(i){return i.map(function(h){if(h.buffer instanceof ArrayBuffer){var G=h.buffer;if(h.byteLength!==G.byteLength){var p=new Uint8Array(h.byteLength);p.set(new Uint8Array(G,h.byteOffset,h.byteLength)),G=p.buffer}return G}return h})}function e(i,h){h=h||{};var G=new l;return t(i).forEach(function(p){G.append(p)}),h.type?G.getBlob(h.type):G.getBlob()}function n(i,h){return new Blob(t(i),h||{})}return typeof Blob<"u"&&(e.prototype=Blob.prototype,n.prototype=Blob.prototype),Da=function(){return W?d?Blob:n:b?e:void 0}(),Da}(function(l){var W=cs,d=en,b=hs,t=Rs,e=Us,n;typeof ArrayBuffer<"u"&&(n=Ss());var i=typeof navigator<"u"&&/Android/i.test(navigator.userAgent),h=typeof navigator<"u"&&/PhantomJS/i.test(navigator.userAgent),G=i||h;l.protocol=3;var p=l.packets={open:0,close:1,ping:2,pong:3,message:4,upgrade:5,noop:6},s=W(p),X={type:"error",data:"parser error"},o=Ms();l.encodePacket=function(x,z,I,k){typeof z=="function"&&(k=z,z=!1),typeof I=="function"&&(k=I,I=null);var B=x.data===void 0?void 0:x.data.buffer||x.data;if(typeof ArrayBuffer<"u"&&B instanceof ArrayBuffer)return M(x,z,k);if(typeof o<"u"&&B instanceof o)return J(x,z,k);if(B&&B.base64)return r(x,k);var C=p[x.type];return x.data!==void 0&&(C+=I?e.encode(String(x.data),{strict:!1}):String(x.data)),k(""+C)};function r(x,z){var I="b"+l.packets[x.type]+x.data.data;return z(I)}function M(x,z,I){if(!z)return l.encodeBase64Packet(x,I);var k=x.data,B=new Uint8Array(k),C=new Uint8Array(1+k.byteLength);C[0]=p[x.type];for(var A=0;A<B.length;A++)C[A+1]=B[A];return I(C.buffer)}function L(x,z,I){if(!z)return l.encodeBase64Packet(x,I);var k=new FileReader;return k.onload=function(){l.encodePacket({type:x.type,data:k.result},z,!0,I)},k.readAsArrayBuffer(x.data)}function J(x,z,I){if(!z)return l.encodeBase64Packet(x,I);if(G)return L(x,z,I);var k=new Uint8Array(1);k[0]=p[x.type];var B=new o([k.buffer,x.data]);return I(B)}l.encodeBase64Packet=function(x,z){var I="b"+l.packets[x.type];if(typeof o<"u"&&x.data instanceof o){var k=new FileReader;return k.onload=function(){var dl=k.result.split(",")[1];z(I+dl)},k.readAsDataURL(x.data)}var B;try{B=String.fromCharCode.apply(null,new Uint8Array(x.data))}catch{for(var C=new Uint8Array(x.data),A=new Array(C.length),Vl=0;Vl<C.length;Vl++)A[Vl]=C[Vl];B=String.fromCharCode.apply(null,A)}return I+=btoa(B),z(I)},l.decodePacket=function(x,z,I){if(x===void 0)return X;if(typeof x=="string"){if(x.charAt(0)==="b")return l.decodeBase64Packet(x.substr(1),z);if(I&&(x=w(x),x===!1))return X;var B=x.charAt(0);return Number(B)!=B||!s[B]?X:x.length>1?{type:s[B],data:x.substring(1)}:{type:s[B]}}var k=new Uint8Array(x),B=k[0],C=b(x,1);return o&&z==="blob"&&(C=new o([C])),{type:s[B],data:C}};function w(x){try{x=e.decode(x,{strict:!1})}catch{return!1}return x}l.decodeBase64Packet=function(x,z){var I=s[x.charAt(0)];if(!n)return{type:I,data:{base64:!0,data:x.substr(1)}};var k=n.decode(x.substr(1));return z==="blob"&&o&&(k=new o([k])),{type:I,data:k}},l.encodePayload=function(x,z,I){typeof z=="function"&&(I=z,z=null);var k=d(x);if(z&&k)return o&&!G?l.encodePayloadAsBlob(x,I):l.encodePayloadAsArrayBuffer(x,I);if(!x.length)return I("0:");function B(A){return A.length+":"+A}function C(A,Vl){l.encodePacket(A,k?z:!1,!1,function(dl){Vl(null,B(dl))})}K(x,C,function(A,Vl){return I(Vl.join(""))})};function K(x,z,I){for(var k=new Array(x.length),B=t(x.length,I),C=function(Vl,dl,Fl){z(dl,function(ul,Ul){k[Vl]=Ul,Fl(ul,k)})},A=0;A<x.length;A++)C(A,x[A],B)}l.decodePayload=function(x,z,I){if(typeof x!="string")return l.decodePayloadAsBinary(x,z,I);typeof z=="function"&&(I=z,z=null);var k;if(x==="")return I(X,0,1);for(var B="",C,A,Vl=0,dl=x.length;Vl<dl;Vl++){var Fl=x.charAt(Vl);if(Fl!==":"){B+=Fl;continue}if(B===""||B!=(C=Number(B))||(A=x.substr(Vl+1,C),B!=A.length))return I(X,0,1);if(A.length){if(k=l.decodePacket(A,z,!1),X.type===k.type&&X.data===k.data)return I(X,0,1);var ul=I(k,Vl+C,dl);if(ul===!1)return}Vl+=C,B=""}if(B!=="")return I(X,0,1)},l.encodePayloadAsArrayBuffer=function(x,z){if(!x.length)return z(new ArrayBuffer(0));function I(k,B){l.encodePacket(k,!0,!0,function(C){return B(null,C)})}K(x,I,function(k,B){var C=B.reduce(function(dl,Fl){var ul;return typeof Fl=="string"?ul=Fl.length:ul=Fl.byteLength,dl+ul.toString().length+ul+2},0),A=new Uint8Array(C),Vl=0;return B.forEach(function(dl){var Fl=typeof dl=="string",ul=dl;if(Fl){for(var gl=new Uint8Array(dl.length),Ul=0;Ul<dl.length;Ul++)gl[Ul]=dl.charCodeAt(Ul);ul=gl.buffer}Fl?A[Vl++]=0:A[Vl++]=1;for(var EV=ul.byteLength.toString(),Ul=0;Ul<EV.length;Ul++)A[Vl++]=parseInt(EV[Ul]);A[Vl++]=255;for(var gl=new Uint8Array(ul),Ul=0;Ul<gl.length;Ul++)A[Vl++]=gl[Ul]}),z(A.buffer)})},l.encodePayloadAsBlob=function(x,z){function I(k,B){l.encodePacket(k,!0,!0,function(C){var A=new Uint8Array(1);if(A[0]=1,typeof C=="string"){for(var Vl=new Uint8Array(C.length),dl=0;dl<C.length;dl++)Vl[dl]=C.charCodeAt(dl);C=Vl.buffer,A[0]=0}for(var Fl=C instanceof ArrayBuffer?C.byteLength:C.size,ul=Fl.toString(),Ul=new Uint8Array(ul.length+1),dl=0;dl<ul.length;dl++)Ul[dl]=parseInt(ul[dl]);if(Ul[ul.length]=255,o){var EV=new o([A.buffer,Ul.buffer,C]);B(null,EV)}})}K(x,I,function(k,B){return z(new o(B))})},l.decodePayloadAsBinary=function(x,z,I){typeof z=="function"&&(I=z,z=null);for(var k=x,B=[];k.byteLength>0;){for(var C=new Uint8Array(k),A=C[0]===0,Vl="",dl=1;C[dl]!==255;dl++){if(Vl.length>310)return I(X,0,1);Vl+=C[dl]}k=b(k,2+Vl.length),Vl=parseInt(Vl);var Fl=b(k,0,Vl);if(A)try{Fl=String.fromCharCode.apply(null,new Uint8Array(Fl))}catch{var ul=new Uint8Array(Fl);Fl="";for(var dl=0;dl<ul.length;dl++)Fl+=String.fromCharCode(ul[dl])}B.push(Fl),k=b(k,Vl)}var Ul=B.length;B.forEach(function(EV,gl){I(l.decodePacket(EV,z,!0),gl,Ul)})}})(MW);var hn={exports:{}};(function(l){l.exports=W;function W(b){if(b)return d(b)}function d(b){for(var t in W.prototype)b[t]=W.prototype[t];return b}W.prototype.on=W.prototype.addEventListener=function(b,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+b]=this._callbacks["$"+b]||[]).push(t),this},W.prototype.once=function(b,t){function e(){this.off(b,e),t.apply(this,arguments)}return e.fn=t,this.on(b,e),this},W.prototype.off=W.prototype.removeListener=W.prototype.removeAllListeners=W.prototype.removeEventListener=function(b,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var e=this._callbacks["$"+b];if(!e)return this;if(arguments.length==1)return delete this._callbacks["$"+b],this;for(var n,i=0;i<e.length;i++)if(n=e[i],n===t||n.fn===t){e.splice(i,1);break}return e.length===0&&delete this._callbacks["$"+b],this},W.prototype.emit=function(b){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),e=this._callbacks["$"+b],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(e){e=e.slice(0);for(var n=0,i=e.length;n<i;++n)e[n].apply(this,t)}return this},W.prototype.listeners=function(b){return this._callbacks=this._callbacks||{},this._callbacks["$"+b]||[]},W.prototype.hasListeners=function(b){return!!this.listeners(b).length}})(hn);var Oa=hn.exports,Pa,Rn;function Aa(){if(Rn)return Pa;Rn=1;var l=MW,W=Oa;Pa=d;function d(b){this.path=b.path,this.hostname=b.hostname,this.port=b.port,this.secure=b.secure,this.query=b.query,this.timestampParam=b.timestampParam,this.timestampRequests=b.timestampRequests,this.readyState="",this.agent=b.agent||!1,this.socket=b.socket,this.enablesXDR=b.enablesXDR,this.withCredentials=b.withCredentials,this.pfx=b.pfx,this.key=b.key,this.passphrase=b.passphrase,this.cert=b.cert,this.ca=b.ca,this.ciphers=b.ciphers,this.rejectUnauthorized=b.rejectUnauthorized,this.forceNode=b.forceNode,this.isReactNative=b.isReactNative,this.extraHeaders=b.extraHeaders,this.localAddress=b.localAddress}return W(d.prototype),d.prototype.onError=function(b,t){var e=new Error(b);return e.type="TransportError",e.description=t,this.emit("error",e),this},d.prototype.open=function(){return(this.readyState==="closed"||this.readyState==="")&&(this.readyState="opening",this.doOpen()),this},d.prototype.close=function(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this},d.prototype.send=function(b){if(this.readyState==="open")this.write(b);else throw new Error("Transport not open")},d.prototype.onOpen=function(){this.readyState="open",this.writable=!0,this.emit("open")},d.prototype.onData=function(b){var t=l.decodePacket(b,this.socket.binaryType);this.onPacket(t)},d.prototype.onPacket=function(b){this.emit("packet",b)},d.prototype.onClose=function(){this.readyState="closed",this.emit("close")},Pa}var Id={};Id.encode=function(l){var W="";for(var d in l)l.hasOwnProperty(d)&&(W.length&&(W+="&"),W+=encodeURIComponent(d)+"="+encodeURIComponent(l[d]));return W},Id.decode=function(l){for(var W={},d=l.split("&"),b=0,t=d.length;b<t;b++){var e=d[b].split("=");W[decodeURIComponent(e[0])]=decodeURIComponent(e[1])}return W};var fZ=function(l,W){var d=function(){};d.prototype=W.prototype,l.prototype=new d,l.prototype.constructor=l},Yn="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),CZ=64,sn={},Xn=0,$V=0,on;function _a(l){var W="";do W=Yn[l%CZ]+W,l=Math.floor(l/CZ);while(l>0);return W}function Ts(l){var W=0;for($V=0;$V<l.length;$V++)W=W*CZ+sn[l.charAt($V)];return W}function qa(){var l=_a(+new Date);return l!==on?(Xn=0,on=l):l+"."+_a(Xn++)}for(;$V<CZ;$V++)sn[Yn[$V]]=$V;qa.encode=_a,qa.decode=Ts;var un=qa,$a={exports:{}},lt={exports:{}},Ed=1e3,Ld=Ed*60,wd=Ld*60,jd=wd*24,rs=jd*365.25,Js=function(l,W){W=W||{};var d=typeof l;if(d==="string"&&l.length>0)return ks(l);if(d==="number"&&isNaN(l)===!1)return W.long?ys(l):xs(l);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(l))};function ks(l){if(l=String(l),!(l.length>100)){var W=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(l);if(W){var d=parseFloat(W[1]),b=(W[2]||"ms").toLowerCase();switch(b){case"years":case"year":case"yrs":case"yr":case"y":return d*rs;case"days":case"day":case"d":return d*jd;case"hours":case"hour":case"hrs":case"hr":case"h":return d*wd;case"minutes":case"minute":case"mins":case"min":case"m":return d*Ld;case"seconds":case"second":case"secs":case"sec":case"s":return d*Ed;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return d;default:return}}}}function xs(l){return l>=jd?Math.round(l/jd)+"d":l>=wd?Math.round(l/wd)+"h":l>=Ld?Math.round(l/Ld)+"m":l>=Ed?Math.round(l/Ed)+"s":l+"ms"}function ys(l){return QZ(l,jd,"day")||QZ(l,wd,"hour")||QZ(l,Ld,"minute")||QZ(l,Ed,"second")||l+" ms"}function QZ(l,W,d){if(!(l<W))return l<W*1.5?Math.floor(l/W)+" "+d:Math.ceil(l/W)+" "+d+"s"}(function(l,W){W=l.exports=b.debug=b.default=b,W.coerce=h,W.disable=n,W.enable=e,W.enabled=i,W.humanize=Js,W.instances=[],W.names=[],W.skips=[],W.formatters={};function d(G){var p=0,s;for(s in G)p=(p<<5)-p+G.charCodeAt(s),p|=0;return W.colors[Math.abs(p)%W.colors.length]}function b(G){var p;function s(){if(s.enabled){var X=s,o=+new Date,r=o-(p||o);X.diff=r,X.prev=p,X.curr=o,p=o;for(var M=new Array(arguments.length),L=0;L<M.length;L++)M[L]=arguments[L];M[0]=W.coerce(M[0]),typeof M[0]!="string"&&M.unshift("%O");var J=0;M[0]=M[0].replace(/%([a-zA-Z%])/g,function(K,x){if(K==="%%")return K;J++;var z=W.formatters[x];if(typeof z=="function"){var I=M[J];K=z.call(X,I),M.splice(J,1),J--}return K}),W.formatArgs.call(X,M);var w=s.log||W.log||console.log.bind(console);w.apply(X,M)}}return s.namespace=G,s.enabled=W.enabled(G),s.useColors=W.useColors(),s.color=d(G),s.destroy=t,typeof W.init=="function"&&W.init(s),W.instances.push(s),s}function t(){var G=W.instances.indexOf(this);return G!==-1?(W.instances.splice(G,1),!0):!1}function e(G){W.save(G),W.names=[],W.skips=[];var p,s=(typeof G=="string"?G:"").split(/[\s,]+/),X=s.length;for(p=0;p<X;p++)s[p]&&(G=s[p].replace(/\*/g,".*?"),G[0]==="-"?W.skips.push(new RegExp("^"+G.substr(1)+"$")):W.names.push(new RegExp("^"+G+"$")));for(p=0;p<W.instances.length;p++){var o=W.instances[p];o.enabled=W.enabled(o.namespace)}}function n(){W.enable("")}function i(G){if(G[G.length-1]==="*")return!0;var p,s;for(p=0,s=W.skips.length;p<s;p++)if(W.skips[p].test(G))return!1;for(p=0,s=W.names.length;p<s;p++)if(W.names[p].test(G))return!0;return!1}function h(G){return G instanceof Error?G.stack||G.message:G}})(lt,lt.exports);var Hs=lt.exports;(function(l,W){W=l.exports=Hs,W.log=t,W.formatArgs=b,W.save=e,W.load=n,W.useColors=d,W.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:i(),W.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function d(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}W.formatters.j=function(h){try{return JSON.stringify(h)}catch(G){return"[UnexpectedJSONParseError]: "+G.message}};function b(h){var G=this.useColors;if(h[0]=(G?"%c":"")+this.namespace+(G?" %c":" ")+h[0]+(G?"%c ":" ")+"+"+W.humanize(this.diff),!!G){var p="color: "+this.color;h.splice(1,0,p,"color: inherit");var s=0,X=0;h[0].replace(/%[a-zA-Z%]/g,function(o){o!=="%%"&&(s++,o==="%c"&&(X=s))}),h.splice(X,0,p)}}function t(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function e(h){try{h==null?W.storage.removeItem("debug"):W.storage.debug=h}catch{}}function n(){var h;try{h=W.storage.debug}catch{}return!h&&typeof process<"u"&&"env"in process&&(h=process.env.DEBUG),h}W.enable(n());function i(){try{return window.localStorage}catch{}}})($a,$a.exports);var DZ=$a.exports,Nn=Aa(),zs=Id,Fn=MW,Is=fZ,Es=un,sV=DZ("engine.io-client:polling"),Un=MV,Ls=function(){var l=fa,W=new l({xdomain:!1});return W.responseType!=null}();function MV(l){var W=l&&l.forceBase64;(!Ls||W)&&(this.supportsBinary=!1),Nn.call(this,l)}Is(MV,Nn),MV.prototype.name="polling",MV.prototype.doOpen=function(){this.poll()},MV.prototype.pause=function(l){var W=this;this.readyState="pausing";function d(){sV("paused"),W.readyState="paused",l()}if(this.polling||!this.writable){var b=0;this.polling&&(sV("we are currently polling - waiting to pause"),b++,this.once("pollComplete",function(){sV("pre-pause polling complete"),--b||d()})),this.writable||(sV("we are currently writing - waiting to pause"),b++,this.once("drain",function(){sV("pre-pause writing complete"),--b||d()}))}else d()},MV.prototype.poll=function(){sV("polling"),this.polling=!0,this.doPoll(),this.emit("poll")},MV.prototype.onData=function(l){var W=this;sV("polling got data %s",l);var d=function(b,t,e){if(W.readyState==="opening"&&W.onOpen(),b.type==="close")return W.onClose(),!1;W.onPacket(b)};Fn.decodePayload(l,this.socket.binaryType,d),this.readyState!=="closed"&&(this.polling=!1,this.emit("pollComplete"),this.readyState==="open"?this.poll():sV('ignoring poll - transport state "%s"',this.readyState))},MV.prototype.doClose=function(){var l=this;function W(){sV("writing close packet"),l.write([{type:"close"}])}this.readyState==="open"?(sV("transport open - closing"),W()):(sV("transport not open - deferring close"),this.once("open",W))},MV.prototype.write=function(l){var W=this;this.writable=!1;var d=function(){W.writable=!0,W.emit("drain")};Fn.encodePayload(l,this.supportsBinary,function(b){W.doWrite(b,d)})},MV.prototype.uri=function(){var l=this.query||{},W=this.secure?"https":"http",d="";this.timestampRequests!==!1&&(l[this.timestampParam]=Es()),!this.supportsBinary&&!l.sid&&(l.b64=1),l=zs.encode(l),this.port&&(W==="https"&&Number(this.port)!==443||W==="http"&&Number(this.port)!==80)&&(d=":"+this.port),l.length&&(l="?"+l);var b=this.hostname.indexOf(":")!==-1;return W+"://"+(b?"["+this.hostname+"]":this.hostname)+d+this.path+l};var ws=fa,Sn=Un,js=Oa,Bs=fZ,Vt=DZ("engine.io-client:polling-xhr"),Ks=ga;Ca.exports=PW,Ca.exports.Request=yl;function Mn(){}function PW(l){if(Sn.call(this,l),this.requestTimeout=l.requestTimeout,this.extraHeaders=l.extraHeaders,typeof location<"u"){var W=location.protocol==="https:",d=location.port;d||(d=W?443:80),this.xd=typeof location<"u"&&l.hostname!==location.hostname||d!==l.port,this.xs=l.secure!==W}}Bs(PW,Sn),PW.prototype.supportsBinary=!0,PW.prototype.request=function(l){return l=l||{},l.uri=this.uri(),l.xd=this.xd,l.xs=this.xs,l.agent=this.agent||!1,l.supportsBinary=this.supportsBinary,l.enablesXDR=this.enablesXDR,l.withCredentials=this.withCredentials,l.pfx=this.pfx,l.key=this.key,l.passphrase=this.passphrase,l.cert=this.cert,l.ca=this.ca,l.ciphers=this.ciphers,l.rejectUnauthorized=this.rejectUnauthorized,l.requestTimeout=this.requestTimeout,l.extraHeaders=this.extraHeaders,new yl(l)},PW.prototype.doWrite=function(l,W){var d=typeof l!="string"&&l!==void 0,b=this.request({method:"POST",data:l,isBinary:d}),t=this;b.on("success",W),b.on("error",function(e){t.onError("xhr post error",e)}),this.sendXhr=b},PW.prototype.doPoll=function(){Vt("xhr poll");var l=this.request(),W=this;l.on("data",function(d){W.onData(d)}),l.on("error",function(d){W.onError("xhr poll error",d)}),this.pollXhr=l};function yl(l){this.method=l.method||"GET",this.uri=l.uri,this.xd=!!l.xd,this.xs=!!l.xs,this.async=l.async!==!1,this.data=l.data!==void 0?l.data:null,this.agent=l.agent,this.isBinary=l.isBinary,this.supportsBinary=l.supportsBinary,this.enablesXDR=l.enablesXDR,this.withCredentials=l.withCredentials,this.requestTimeout=l.requestTimeout,this.pfx=l.pfx,this.key=l.key,this.passphrase=l.passphrase,this.cert=l.cert,this.ca=l.ca,this.ciphers=l.ciphers,this.rejectUnauthorized=l.rejectUnauthorized,this.extraHeaders=l.extraHeaders,this.create()}if(js(yl.prototype),yl.prototype.create=function(){var l={agent:this.agent,xdomain:this.xd,xscheme:this.xs,enablesXDR:this.enablesXDR};l.pfx=this.pfx,l.key=this.key,l.passphrase=this.passphrase,l.cert=this.cert,l.ca=this.ca,l.ciphers=this.ciphers,l.rejectUnauthorized=this.rejectUnauthorized;var W=this.xhr=new ws(l),d=this;try{Vt("xhr open %s: %s",this.method,this.uri),W.open(this.method,this.uri,this.async);try{if(this.extraHeaders){W.setDisableHeaderCheck&&W.setDisableHeaderCheck(!0);for(var b in this.extraHeaders)this.extraHeaders.hasOwnProperty(b)&&W.setRequestHeader(b,this.extraHeaders[b])}}catch{}if(this.method==="POST")try{this.isBinary?W.setRequestHeader("Content-type","application/octet-stream"):W.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{W.setRequestHeader("Accept","*/*")}catch{}"withCredentials"in W&&(W.withCredentials=this.withCredentials),this.requestTimeout&&(W.timeout=this.requestTimeout),this.hasXDR()?(W.onload=function(){d.onLoad()},W.onerror=function(){d.onError(W.responseText)}):W.onreadystatechange=function(){if(W.readyState===2)try{var t=W.getResponseHeader("Content-Type");(d.supportsBinary&&t==="application/octet-stream"||t==="application/octet-stream; charset=UTF-8")&&(W.responseType="arraybuffer")}catch{}W.readyState===4&&(W.status===200||W.status===1223?d.onLoad():setTimeout(function(){d.onError(typeof W.status=="number"?W.status:0)},0))},Vt("xhr data %s",this.data),W.send(this.data)}catch(t){setTimeout(function(){d.onError(t)},0);return}typeof document<"u"&&(this.index=yl.requestsCount++,yl.requests[this.index]=this)},yl.prototype.onSuccess=function(){this.emit("success"),this.cleanup()},yl.prototype.onData=function(l){this.emit("data",l),this.onSuccess()},yl.prototype.onError=function(l){this.emit("error",l),this.cleanup(!0)},yl.prototype.cleanup=function(l){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.hasXDR()?this.xhr.onload=this.xhr.onerror=Mn:this.xhr.onreadystatechange=Mn,l)try{this.xhr.abort()}catch{}typeof document<"u"&&delete yl.requests[this.index],this.xhr=null}},yl.prototype.onLoad=function(){var l;try{var W;try{W=this.xhr.getResponseHeader("Content-Type")}catch{}W==="application/octet-stream"||W==="application/octet-stream; charset=UTF-8"?l=this.xhr.response||this.xhr.responseText:l=this.xhr.responseText}catch(d){this.onError(d)}l!=null&&this.onData(l)},yl.prototype.hasXDR=function(){return typeof XDomainRequest<"u"&&!this.xs&&this.enablesXDR},yl.prototype.abort=function(){this.cleanup()},yl.requestsCount=0,yl.requests={},typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Tn);else if(typeof addEventListener=="function"){var vs="onpagehide"in Ks?"pagehide":"unload";addEventListener(vs,Tn,!1)}}function Tn(){for(var l in yl.requests)yl.requests.hasOwnProperty(l)&&yl.requests[l].abort()}var gs=Ca.exports,Wt=Un,fs=fZ,rn=ga,Cs=AW,Qs=/\n/g,Ds=/\\n/g,OZ;function Os(){}function AW(l){Wt.call(this,l),this.query=this.query||{},OZ||(OZ=rn.___eio=rn.___eio||[]),this.index=OZ.length;var W=this;OZ.push(function(d){W.onData(d)}),this.query.j=this.index,typeof addEventListener=="function"&&addEventListener("beforeunload",function(){W.script&&(W.script.onerror=Os)},!1)}fs(AW,Wt),AW.prototype.supportsBinary=!1,AW.prototype.doClose=function(){this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),Wt.prototype.doClose.call(this)},AW.prototype.doPoll=function(){var l=this,W=document.createElement("script");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),W.async=!0,W.src=this.uri(),W.onerror=function(t){l.onError("jsonp poll error",t)};var d=document.getElementsByTagName("script")[0];d?d.parentNode.insertBefore(W,d):(document.head||document.body).appendChild(W),this.script=W;var b=typeof navigator<"u"&&/gecko/i.test(navigator.userAgent);b&&setTimeout(function(){var t=document.createElement("iframe");document.body.appendChild(t),document.body.removeChild(t)},100)},AW.prototype.doWrite=function(l,W){var d=this;if(!this.form){var b=document.createElement("form"),t=document.createElement("textarea"),e=this.iframeId="eio_iframe_"+this.index,n;b.className="socketio",b.style.position="absolute",b.style.top="-1000px",b.style.left="-1000px",b.target=e,b.method="POST",b.setAttribute("accept-charset","utf-8"),t.name="d",b.appendChild(t),document.body.appendChild(b),this.form=b,this.area=t}this.form.action=this.uri();function i(){h(),W()}function h(){if(d.iframe)try{d.form.removeChild(d.iframe)}catch(p){d.onError("jsonp polling iframe removal error",p)}try{var G='<iframe src="javascript:0" name="'+d.iframeId+'">';n=document.createElement(G)}catch{n=document.createElement("iframe"),n.name=d.iframeId,n.src="javascript:0"}n.id=d.iframeId,d.form.appendChild(n),d.iframe=n}h(),l=l.replace(Ds,`\\
301
+ `),this.area.value=l.replace(Qs,"\\n");try{this.form.submit()}catch{}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){d.iframe.readyState==="complete"&&i()}:this.iframe.onload=i};const Ps=JY(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var dt=Aa(),As=MW,_s=Id,qs=fZ,$s=un,lX=DZ("engine.io-client:websocket"),PZ,Zt;if(typeof WebSocket<"u"?PZ=WebSocket:typeof self<"u"&&(PZ=self.WebSocket||self.MozWebSocket),typeof window>"u")try{Zt=Ps}catch{}var _W=PZ||Zt,VX=aV;function aV(l){var W=l&&l.forceBase64;W&&(this.supportsBinary=!1),this.perMessageDeflate=l.perMessageDeflate,this.usingBrowserWebSocket=PZ&&!l.forceNode,this.protocols=l.protocols,this.usingBrowserWebSocket||(_W=Zt),dt.call(this,l)}qs(aV,dt),aV.prototype.name="websocket",aV.prototype.supportsBinary=!0,aV.prototype.doOpen=function(){if(this.check()){var l=this.uri(),W=this.protocols,d={};this.isReactNative||(d.agent=this.agent,d.perMessageDeflate=this.perMessageDeflate,d.pfx=this.pfx,d.key=this.key,d.passphrase=this.passphrase,d.cert=this.cert,d.ca=this.ca,d.ciphers=this.ciphers,d.rejectUnauthorized=this.rejectUnauthorized),this.extraHeaders&&(d.headers=this.extraHeaders),this.localAddress&&(d.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket&&!this.isReactNative?W?new _W(l,W):new _W(l):new _W(l,W,d)}catch(b){return this.emit("error",b)}this.ws.binaryType===void 0&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},aV.prototype.addEventListeners=function(){var l=this;this.ws.onopen=function(){l.onOpen()},this.ws.onclose=function(){l.onClose()},this.ws.onmessage=function(W){l.onData(W.data)},this.ws.onerror=function(W){l.onError("websocket error",W)}},aV.prototype.write=function(l){var W=this;this.writable=!1;for(var d=l.length,b=0,t=d;b<t;b++)(function(n){As.encodePacket(n,W.supportsBinary,function(i){if(!W.usingBrowserWebSocket){var h={};if(n.options&&(h.compress=n.options.compress),W.perMessageDeflate){var G=typeof i=="string"?Buffer.byteLength(i):i.length;G<W.perMessageDeflate.threshold&&(h.compress=!1)}}try{W.usingBrowserWebSocket?W.ws.send(i):W.ws.send(i,h)}catch{lX("websocket closed before onclose event")}--d||e()})})(l[b]);function e(){W.emit("flush"),setTimeout(function(){W.writable=!0,W.emit("drain")},0)}},aV.prototype.onClose=function(){dt.prototype.onClose.call(this)},aV.prototype.doClose=function(){typeof this.ws<"u"&&this.ws.close()},aV.prototype.uri=function(){var l=this.query||{},W=this.secure?"wss":"ws",d="";this.port&&(W==="wss"&&Number(this.port)!==443||W==="ws"&&Number(this.port)!==80)&&(d=":"+this.port),this.timestampRequests&&(l[this.timestampParam]=$s()),this.supportsBinary||(l.b64=1),l=_s.encode(l),l.length&&(l="?"+l);var b=this.hostname.indexOf(":")!==-1;return W+"://"+(b?"["+this.hostname+"]":this.hostname)+d+this.path+l},aV.prototype.check=function(){return!!_W&&!("__initialize"in _W&&this.name===aV.prototype.name)};var WX=fa,dX=gs,ZX=Cs,bX=VX;jZ.polling=aX,jZ.websocket=bX;function aX(l){var W,d=!1,b=!1,t=l.jsonp!==!1;if(typeof location<"u"){var e=location.protocol==="https:",n=location.port;n||(n=e?443:80),d=l.hostname!==location.hostname||n!==l.port,b=l.secure!==e}if(l.xdomain=d,l.xscheme=b,W=new WX(l),"open"in W&&!l.forceJSONP)return new dX(l);if(!t)throw new Error("JSONP disabled");return new ZX(l)}var tX=[].indexOf,Jn=function(l,W){if(tX)return l.indexOf(W);for(var d=0;d<l.length;++d)if(l[d]===W)return d;return-1},mX=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,eX=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],nX=function(W){var d=W,b=W.indexOf("["),t=W.indexOf("]");b!=-1&&t!=-1&&(W=W.substring(0,b)+W.substring(b,t).replace(/:/g,";")+W.substring(t,W.length));for(var e=mX.exec(W||""),n={},i=14;i--;)n[eX[i]]=e[i]||"";return b!=-1&&t!=-1&&(n.source=d,n.host=n.host.substring(1,n.host.length-1).replace(/;/g,":"),n.authority=n.authority.replace("[","").replace("]","").replace(/;/g,":"),n.ipv6uri=!0),n.pathNames=cX(n,n.path),n.queryKey=iX(n,n.query),n};function cX(l,W){var d=/\/{2,9}/g,b=W.replace(d,"/").split("/");return(W.substr(0,1)=="/"||W.length===0)&&b.splice(0,1),W.substr(W.length-1,1)=="/"&&b.splice(b.length-1,1),b}function iX(l,W){var d={};return W.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(b,t,e){t&&(d[t]=e)}),d}var GX=jZ,pX=Oa,kl=DZ("engine.io-client:socket"),hX=Jn,kn=MW,xn=nX,RX=Id,YX=al;function al(l,W){if(!(this instanceof al))return new al(l,W);W=W||{},l&&typeof l=="object"&&(W=l,l=null),l?(l=xn(l),W.hostname=l.host,W.secure=l.protocol==="https"||l.protocol==="wss",W.port=l.port,l.query&&(W.query=l.query)):W.host&&(W.hostname=xn(W.host).host),this.secure=W.secure!=null?W.secure:typeof location<"u"&&location.protocol==="https:",W.hostname&&!W.port&&(W.port=this.secure?"443":"80"),this.agent=W.agent||!1,this.hostname=W.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=W.port||(typeof location<"u"&&location.port?location.port:this.secure?443:80),this.query=W.query||{},typeof this.query=="string"&&(this.query=RX.decode(this.query)),this.upgrade=W.upgrade!==!1,this.path=(W.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!W.forceJSONP,this.jsonp=W.jsonp!==!1,this.forceBase64=!!W.forceBase64,this.enablesXDR=!!W.enablesXDR,this.withCredentials=W.withCredentials!==!1,this.timestampParam=W.timestampParam||"t",this.timestampRequests=W.timestampRequests,this.transports=W.transports||["polling","websocket"],this.transportOptions=W.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=W.policyPort||843,this.rememberUpgrade=W.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=W.onlyBinaryUpgrades,this.perMessageDeflate=W.perMessageDeflate!==!1?W.perMessageDeflate||{}:!1,this.perMessageDeflate===!0&&(this.perMessageDeflate={}),this.perMessageDeflate&&this.perMessageDeflate.threshold==null&&(this.perMessageDeflate.threshold=1024),this.pfx=W.pfx||null,this.key=W.key||null,this.passphrase=W.passphrase||null,this.cert=W.cert||null,this.ca=W.ca||null,this.ciphers=W.ciphers||null,this.rejectUnauthorized=W.rejectUnauthorized===void 0?!0:W.rejectUnauthorized,this.forceNode=!!W.forceNode,this.isReactNative=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative",(typeof self>"u"||this.isReactNative)&&(W.extraHeaders&&Object.keys(W.extraHeaders).length>0&&(this.extraHeaders=W.extraHeaders),W.localAddress&&(this.localAddress=W.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,this.open()}al.priorWebsocketSuccess=!1,pX(al.prototype),al.protocol=kn.protocol,al.Socket=al,al.Transport=Aa(),al.transports=jZ,al.parser=MW,al.prototype.createTransport=function(l){kl('creating transport "%s"',l);var W=sX(this.query);W.EIO=kn.protocol,W.transport=l;var d=this.transportOptions[l]||{};this.id&&(W.sid=this.id);var b=new GX[l]({query:W,socket:this,agent:d.agent||this.agent,hostname:d.hostname||this.hostname,port:d.port||this.port,secure:d.secure||this.secure,path:d.path||this.path,forceJSONP:d.forceJSONP||this.forceJSONP,jsonp:d.jsonp||this.jsonp,forceBase64:d.forceBase64||this.forceBase64,enablesXDR:d.enablesXDR||this.enablesXDR,withCredentials:d.withCredentials||this.withCredentials,timestampRequests:d.timestampRequests||this.timestampRequests,timestampParam:d.timestampParam||this.timestampParam,policyPort:d.policyPort||this.policyPort,pfx:d.pfx||this.pfx,key:d.key||this.key,passphrase:d.passphrase||this.passphrase,cert:d.cert||this.cert,ca:d.ca||this.ca,ciphers:d.ciphers||this.ciphers,rejectUnauthorized:d.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:d.perMessageDeflate||this.perMessageDeflate,extraHeaders:d.extraHeaders||this.extraHeaders,forceNode:d.forceNode||this.forceNode,localAddress:d.localAddress||this.localAddress,requestTimeout:d.requestTimeout||this.requestTimeout,protocols:d.protocols||void 0,isReactNative:this.isReactNative});return b};function sX(l){var W={};for(var d in l)l.hasOwnProperty(d)&&(W[d]=l[d]);return W}al.prototype.open=function(){var l;if(this.rememberUpgrade&&al.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)l="websocket";else if(this.transports.length===0){var W=this;setTimeout(function(){W.emit("error","No transports available")},0);return}else l=this.transports[0];this.readyState="opening";try{l=this.createTransport(l)}catch{this.transports.shift(),this.open();return}l.open(),this.setTransport(l)},al.prototype.setTransport=function(l){kl("setting transport %s",l.name);var W=this;this.transport&&(kl("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=l,l.on("drain",function(){W.onDrain()}).on("packet",function(d){W.onPacket(d)}).on("error",function(d){W.onError(d)}).on("close",function(){W.onClose("transport close")})},al.prototype.probe=function(l){kl('probing transport "%s"',l);var W=this.createTransport(l,{probe:1}),d=!1,b=this;al.priorWebsocketSuccess=!1;function t(){if(b.onlyBinaryUpgrades){var s=!this.supportsBinary&&b.transport.supportsBinary;d=d||s}d||(kl('probe transport "%s" opened',l),W.send([{type:"ping",data:"probe"}]),W.once("packet",function(X){if(!d)if(X.type==="pong"&&X.data==="probe"){if(kl('probe transport "%s" pong',l),b.upgrading=!0,b.emit("upgrading",W),!W)return;al.priorWebsocketSuccess=W.name==="websocket",kl('pausing current transport "%s"',b.transport.name),b.transport.pause(function(){d||b.readyState!=="closed"&&(kl("changing transport and sending upgrade packet"),p(),b.setTransport(W),W.send([{type:"upgrade"}]),b.emit("upgrade",W),W=null,b.upgrading=!1,b.flush())})}else{kl('probe transport "%s" failed',l);var o=new Error("probe error");o.transport=W.name,b.emit("upgradeError",o)}}))}function e(){d||(d=!0,p(),W.close(),W=null)}function n(s){var X=new Error("probe error: "+s);X.transport=W.name,e(),kl('probe transport "%s" failed because of error: %s',l,s),b.emit("upgradeError",X)}function i(){n("transport closed")}function h(){n("socket closed")}function G(s){W&&s.name!==W.name&&(kl('"%s" works - aborting "%s"',s.name,W.name),e())}function p(){W.removeListener("open",t),W.removeListener("error",n),W.removeListener("close",i),b.removeListener("close",h),b.removeListener("upgrading",G)}W.once("open",t),W.once("error",n),W.once("close",i),this.once("close",h),this.once("upgrading",G),W.open()},al.prototype.onOpen=function(){if(kl("socket open"),this.readyState="open",al.priorWebsocketSuccess=this.transport.name==="websocket",this.emit("open"),this.flush(),this.readyState==="open"&&this.upgrade&&this.transport.pause){kl("starting upgrade probes");for(var l=0,W=this.upgrades.length;l<W;l++)this.probe(this.upgrades[l])}},al.prototype.onPacket=function(l){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(kl('socket receive: type "%s", data "%s"',l.type,l.data),this.emit("packet",l),this.emit("heartbeat"),l.type){case"open":this.onHandshake(JSON.parse(l.data));break;case"pong":this.setPing(),this.emit("pong");break;case"error":var W=new Error("server error");W.code=l.data,this.onError(W);break;case"message":this.emit("data",l.data),this.emit("message",l.data);break}else kl('packet received with socket readyState "%s"',this.readyState)},al.prototype.onHandshake=function(l){this.emit("handshake",l),this.id=l.sid,this.transport.query.sid=l.sid,this.upgrades=this.filterUpgrades(l.upgrades),this.pingInterval=l.pingInterval,this.pingTimeout=l.pingTimeout,this.onOpen(),this.readyState!=="closed"&&(this.setPing(),this.removeListener("heartbeat",this.onHeartbeat),this.on("heartbeat",this.onHeartbeat))},al.prototype.onHeartbeat=function(l){clearTimeout(this.pingTimeoutTimer);var W=this;W.pingTimeoutTimer=setTimeout(function(){W.readyState!=="closed"&&W.onClose("ping timeout")},l||W.pingInterval+W.pingTimeout)},al.prototype.setPing=function(){var l=this;clearTimeout(l.pingIntervalTimer),l.pingIntervalTimer=setTimeout(function(){kl("writing ping packet - expecting pong within %sms",l.pingTimeout),l.ping(),l.onHeartbeat(l.pingTimeout)},l.pingInterval)},al.prototype.ping=function(){var l=this;this.sendPacket("ping",function(){l.emit("ping")})},al.prototype.onDrain=function(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emit("drain"):this.flush()},al.prototype.flush=function(){this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(kl("flushing %d packets in socket",this.writeBuffer.length),this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emit("flush"))},al.prototype.write=al.prototype.send=function(l,W,d){return this.sendPacket("message",l,W,d),this},al.prototype.sendPacket=function(l,W,d,b){if(typeof W=="function"&&(b=W,W=void 0),typeof d=="function"&&(b=d,d=null),!(this.readyState==="closing"||this.readyState==="closed")){d=d||{},d.compress=d.compress!==!1;var t={type:l,data:W,options:d};this.emit("packetCreate",t),this.writeBuffer.push(t),b&&this.once("flush",b),this.flush()}},al.prototype.close=function(){if(this.readyState==="opening"||this.readyState==="open"){this.readyState="closing";var l=this;this.writeBuffer.length?this.once("drain",function(){this.upgrading?b():W()}):this.upgrading?b():W()}function W(){l.onClose("forced close"),kl("socket closing - telling transport to close"),l.transport.close()}function d(){l.removeListener("upgrade",d),l.removeListener("upgradeError",d),W()}function b(){l.once("upgrade",d),l.once("upgradeError",d)}return this},al.prototype.onError=function(l){kl("socket error %j",l),al.priorWebsocketSuccess=!1,this.emit("error",l),this.onClose("transport error",l)},al.prototype.onClose=function(l,W){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){kl('socket close with reason: "%s"',l);var d=this;clearTimeout(this.pingIntervalTimer),clearTimeout(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),this.readyState="closed",this.id=null,this.emit("close",l,W),d.writeBuffer=[],d.prevBufferLen=0}},al.prototype.filterUpgrades=function(l){for(var W=[],d=0,b=l.length;d<b;d++)~hX(this.transports,l[d])&&W.push(l[d]);return W},Ka.exports=YX,Ka.exports.parser=MW;var XX=Ka.exports,yn={exports:{}},Hn={exports:{}};(function(l){l.exports=W;function W(b){if(b)return d(b)}function d(b){for(var t in W.prototype)b[t]=W.prototype[t];return b}W.prototype.on=W.prototype.addEventListener=function(b,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+b]=this._callbacks["$"+b]||[]).push(t),this},W.prototype.once=function(b,t){function e(){this.off(b,e),t.apply(this,arguments)}return e.fn=t,this.on(b,e),this},W.prototype.off=W.prototype.removeListener=W.prototype.removeAllListeners=W.prototype.removeEventListener=function(b,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var e=this._callbacks["$"+b];if(!e)return this;if(arguments.length==1)return delete this._callbacks["$"+b],this;for(var n,i=0;i<e.length;i++)if(n=e[i],n===t||n.fn===t){e.splice(i,1);break}return this},W.prototype.emit=function(b){this._callbacks=this._callbacks||{};var t=[].slice.call(arguments,1),e=this._callbacks["$"+b];if(e){e=e.slice(0);for(var n=0,i=e.length;n<i;++n)e[n].apply(this,t)}return this},W.prototype.listeners=function(b){return this._callbacks=this._callbacks||{},this._callbacks["$"+b]||[]},W.prototype.hasListeners=function(b){return!!this.listeners(b).length}})(Hn);var zn=Hn.exports,oX=uX;function uX(l,W){var d=[];W=W||0;for(var b=W||0;b<l.length;b++)d[b-W]=l[b];return d}var In=NX;function NX(l,W,d){return l.on(W,d),{destroy:function(){l.removeListener(W,d)}}}var En=[].slice,Ln=function(l,W){if(typeof W=="string"&&(W=l[W]),typeof W!="function")throw new Error("bind() requires a function");var d=En.call(arguments,2);return function(){return W.apply(l,d.concat(En.call(arguments)))}},bt={};bt.encode=function(l){var W="";for(var d in l)l.hasOwnProperty(d)&&(W.length&&(W+="&"),W+=encodeURIComponent(d)+"="+encodeURIComponent(l[d]));return W},bt.decode=function(l){for(var W={},d=l.split("&"),b=0,t=d.length;b<t;b++){var e=d[b].split("=");W[decodeURIComponent(e[0])]=decodeURIComponent(e[1])}return W},function(l,W){var d=EZ,b=zn,t=oX,e=In,n=Ln,i=IZ("socket.io-client:socket"),h=bt,G=en;l.exports=X;var p={connect:1,connect_error:1,connect_timeout:1,connecting:1,disconnect:1,error:1,reconnect:1,reconnect_attempt:1,reconnect_failed:1,reconnect_error:1,reconnecting:1,ping:1,pong:1},s=b.prototype.emit;function X(o,r,M){this.io=o,this.nsp=r,this.json=this,this.ids=0,this.acks={},this.receiveBuffer=[],this.sendBuffer=[],this.connected=!1,this.disconnected=!0,this.flags={},M&&M.query&&(this.query=M.query),this.io.autoConnect&&this.open()}b(X.prototype),X.prototype.subEvents=function(){if(!this.subs){var o=this.io;this.subs=[e(o,"open",n(this,"onopen")),e(o,"packet",n(this,"onpacket")),e(o,"close",n(this,"onclose"))]}},X.prototype.open=X.prototype.connect=function(){return this.connected?this:(this.subEvents(),this.io.open(),this.io.readyState==="open"&&this.onopen(),this.emit("connecting"),this)},X.prototype.send=function(){var o=t(arguments);return o.unshift("message"),this.emit.apply(this,o),this},X.prototype.emit=function(o){if(p.hasOwnProperty(o))return s.apply(this,arguments),this;var r=t(arguments),M={type:(this.flags.binary!==void 0?this.flags.binary:G(r))?d.BINARY_EVENT:d.EVENT,data:r};return M.options={},M.options.compress=!this.flags||this.flags.compress!==!1,typeof r[r.length-1]=="function"&&(i("emitting packet with ack id %d",this.ids),this.acks[this.ids]=r.pop(),M.id=this.ids++),this.connected?this.packet(M):this.sendBuffer.push(M),this.flags={},this},X.prototype.packet=function(o){o.nsp=this.nsp,this.io.packet(o)},X.prototype.onopen=function(){if(i("transport is open - connecting"),this.nsp!=="/")if(this.query){var o=typeof this.query=="object"?h.encode(this.query):this.query;i("sending connect packet with query %s",o),this.packet({type:d.CONNECT,query:o})}else this.packet({type:d.CONNECT})},X.prototype.onclose=function(o){i("close (%s)",o),this.connected=!1,this.disconnected=!0,delete this.id,this.emit("disconnect",o)},X.prototype.onpacket=function(o){var r=o.nsp===this.nsp,M=o.type===d.ERROR&&o.nsp==="/";if(!(!r&&!M))switch(o.type){case d.CONNECT:this.onconnect();break;case d.EVENT:this.onevent(o);break;case d.BINARY_EVENT:this.onevent(o);break;case d.ACK:this.onack(o);break;case d.BINARY_ACK:this.onack(o);break;case d.DISCONNECT:this.ondisconnect();break;case d.ERROR:this.emit("error",o.data);break}},X.prototype.onevent=function(o){var r=o.data||[];i("emitting event %j",r),o.id!=null&&(i("attaching ack callback to event"),r.push(this.ack(o.id))),this.connected?s.apply(this,r):this.receiveBuffer.push(r)},X.prototype.ack=function(o){var r=this,M=!1;return function(){if(!M){M=!0;var L=t(arguments);i("sending ack %j",L),r.packet({type:G(L)?d.BINARY_ACK:d.ACK,id:o,data:L})}}},X.prototype.onack=function(o){var r=this.acks[o.id];typeof r=="function"?(i("calling ack %s with %j",o.id,o.data),r.apply(this,o.data),delete this.acks[o.id]):i("bad ack %s",o.id)},X.prototype.onconnect=function(){this.connected=!0,this.disconnected=!1,this.emit("connect"),this.emitBuffered()},X.prototype.emitBuffered=function(){var o;for(o=0;o<this.receiveBuffer.length;o++)s.apply(this,this.receiveBuffer[o]);for(this.receiveBuffer=[],o=0;o<this.sendBuffer.length;o++)this.packet(this.sendBuffer[o]);this.sendBuffer=[]},X.prototype.ondisconnect=function(){i("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")},X.prototype.destroy=function(){if(this.subs){for(var o=0;o<this.subs.length;o++)this.subs[o].destroy();this.subs=null}this.io.destroy(this)},X.prototype.close=X.prototype.disconnect=function(){return this.connected&&(i("performing disconnect (%s)",this.nsp),this.packet({type:d.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this},X.prototype.compress=function(o){return this.flags.compress=o,this},X.prototype.binary=function(o){return this.flags.binary=o,this}}(yn);var wn=yn.exports,FX=qW;function qW(l){l=l||{},this.ms=l.min||100,this.max=l.max||1e4,this.factor=l.factor||2,this.jitter=l.jitter>0&&l.jitter<=1?l.jitter:0,this.attempts=0}qW.prototype.duration=function(){var l=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var W=Math.random(),d=Math.floor(W*this.jitter*l);l=Math.floor(W*10)&1?l+d:l-d}return Math.min(l,this.max)|0},qW.prototype.reset=function(){this.attempts=0},qW.prototype.setMin=function(l){this.ms=l},qW.prototype.setMax=function(l){this.max=l},qW.prototype.setJitter=function(l){this.jitter=l};var UX=XX,SX=wn,MX=zn,TX=EZ,lW=In,$W=Ln,Bl=IZ("socket.io-client:manager"),jn=Jn,rX=FX,Bn=Object.prototype.hasOwnProperty,Kn=ml;function ml(l,W){if(!(this instanceof ml))return new ml(l,W);l&&typeof l=="object"&&(W=l,l=void 0),W=W||{},W.path=W.path||"/socket.io",this.nsps={},this.subs=[],this.opts=W,this.reconnection(W.reconnection!==!1),this.reconnectionAttempts(W.reconnectionAttempts||1/0),this.reconnectionDelay(W.reconnectionDelay||1e3),this.reconnectionDelayMax(W.reconnectionDelayMax||5e3),this.randomizationFactor(W.randomizationFactor||.5),this.backoff=new rX({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(W.timeout==null?2e4:W.timeout),this.readyState="closed",this.uri=l,this.connecting=[],this.lastPing=null,this.encoding=!1,this.packetBuffer=[];var d=W.parser||TX;this.encoder=new d.Encoder,this.decoder=new d.Decoder,this.autoConnect=W.autoConnect!==!1,this.autoConnect&&this.open()}ml.prototype.emitAll=function(){this.emit.apply(this,arguments);for(var l in this.nsps)Bn.call(this.nsps,l)&&this.nsps[l].emit.apply(this.nsps[l],arguments)},ml.prototype.updateSocketIds=function(){for(var l in this.nsps)Bn.call(this.nsps,l)&&(this.nsps[l].id=this.generateId(l))},ml.prototype.generateId=function(l){return(l==="/"?"":l+"#")+this.engine.id},MX(ml.prototype),ml.prototype.reconnection=function(l){return arguments.length?(this._reconnection=!!l,this):this._reconnection},ml.prototype.reconnectionAttempts=function(l){return arguments.length?(this._reconnectionAttempts=l,this):this._reconnectionAttempts},ml.prototype.reconnectionDelay=function(l){return arguments.length?(this._reconnectionDelay=l,this.backoff&&this.backoff.setMin(l),this):this._reconnectionDelay},ml.prototype.randomizationFactor=function(l){return arguments.length?(this._randomizationFactor=l,this.backoff&&this.backoff.setJitter(l),this):this._randomizationFactor},ml.prototype.reconnectionDelayMax=function(l){return arguments.length?(this._reconnectionDelayMax=l,this.backoff&&this.backoff.setMax(l),this):this._reconnectionDelayMax},ml.prototype.timeout=function(l){return arguments.length?(this._timeout=l,this):this._timeout},ml.prototype.maybeReconnectOnOpen=function(){!this.reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()},ml.prototype.open=ml.prototype.connect=function(l,W){if(Bl("readyState %s",this.readyState),~this.readyState.indexOf("open"))return this;Bl("opening %s",this.uri),this.engine=UX(this.uri,this.opts);var d=this.engine,b=this;this.readyState="opening",this.skipReconnect=!1;var t=lW(d,"open",function(){b.onopen(),l&&l()}),e=lW(d,"error",function(h){if(Bl("connect_error"),b.cleanup(),b.readyState="closed",b.emitAll("connect_error",h),l){var G=new Error("Connection error");G.data=h,l(G)}else b.maybeReconnectOnOpen()});if(this._timeout!==!1){var n=this._timeout;Bl("connect attempt will timeout after %d",n);var i=setTimeout(function(){Bl("connect attempt timed out after %d",n),t.destroy(),d.close(),d.emit("error","timeout"),b.emitAll("connect_timeout",n)},n);this.subs.push({destroy:function(){clearTimeout(i)}})}return this.subs.push(t),this.subs.push(e),this},ml.prototype.onopen=function(){Bl("open"),this.cleanup(),this.readyState="open",this.emit("open");var l=this.engine;this.subs.push(lW(l,"data",$W(this,"ondata"))),this.subs.push(lW(l,"ping",$W(this,"onping"))),this.subs.push(lW(l,"pong",$W(this,"onpong"))),this.subs.push(lW(l,"error",$W(this,"onerror"))),this.subs.push(lW(l,"close",$W(this,"onclose"))),this.subs.push(lW(this.decoder,"decoded",$W(this,"ondecoded")))},ml.prototype.onping=function(){this.lastPing=new Date,this.emitAll("ping")},ml.prototype.onpong=function(){this.emitAll("pong",new Date-this.lastPing)},ml.prototype.ondata=function(l){this.decoder.add(l)},ml.prototype.ondecoded=function(l){this.emit("packet",l)},ml.prototype.onerror=function(l){Bl("error",l),this.emitAll("error",l)},ml.prototype.socket=function(l,W){var d=this.nsps[l];if(!d){d=new SX(this,l,W),this.nsps[l]=d;var b=this;d.on("connecting",t),d.on("connect",function(){d.id=b.generateId(l)}),this.autoConnect&&t()}function t(){~jn(b.connecting,d)||b.connecting.push(d)}return d},ml.prototype.destroy=function(l){var W=jn(this.connecting,l);~W&&this.connecting.splice(W,1),!this.connecting.length&&this.close()},ml.prototype.packet=function(l){Bl("writing packet %j",l);var W=this;l.query&&l.type===0&&(l.nsp+="?"+l.query),W.encoding?W.packetBuffer.push(l):(W.encoding=!0,this.encoder.encode(l,function(d){for(var b=0;b<d.length;b++)W.engine.write(d[b],l.options);W.encoding=!1,W.processPacketQueue()}))},ml.prototype.processPacketQueue=function(){if(this.packetBuffer.length>0&&!this.encoding){var l=this.packetBuffer.shift();this.packet(l)}},ml.prototype.cleanup=function(){Bl("cleanup");for(var l=this.subs.length,W=0;W<l;W++){var d=this.subs.shift();d.destroy()}this.packetBuffer=[],this.encoding=!1,this.lastPing=null,this.decoder.destroy()},ml.prototype.close=ml.prototype.disconnect=function(){Bl("disconnect"),this.skipReconnect=!0,this.reconnecting=!1,this.readyState==="opening"&&this.cleanup(),this.backoff.reset(),this.readyState="closed",this.engine&&this.engine.close()},ml.prototype.onclose=function(l){Bl("onclose"),this.cleanup(),this.backoff.reset(),this.readyState="closed",this.emit("close",l),this._reconnection&&!this.skipReconnect&&this.reconnect()},ml.prototype.reconnect=function(){if(this.reconnecting||this.skipReconnect)return this;var l=this;if(this.backoff.attempts>=this._reconnectionAttempts)Bl("reconnect failed"),this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var W=this.backoff.duration();Bl("will wait %dms before reconnect attempt",W),this.reconnecting=!0;var d=setTimeout(function(){l.skipReconnect||(Bl("attempting reconnect"),l.emitAll("reconnect_attempt",l.backoff.attempts),l.emitAll("reconnecting",l.backoff.attempts),!l.skipReconnect&&l.open(function(b){b?(Bl("reconnect attempt error"),l.reconnecting=!1,l.reconnect(),l.emitAll("reconnect_error",b.data)):(Bl("reconnect success"),l.onreconnect())}))},W);this.subs.push({destroy:function(){clearTimeout(d)}})}},ml.prototype.onreconnect=function(){var l=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",l)},function(l,W){var d=CY,b=EZ,t=Kn,e=IZ("socket.io-client");l.exports=W=i;var n=W.managers={};function i(h,G){typeof h=="object"&&(G=h,h=void 0),G=G||{};var p=d(h),s=p.source,X=p.id,o=p.path,r=n[X]&&o in n[X].nsps,M=G.forceNew||G["force new connection"]||G.multiplex===!1||r,L;return M?(e("ignoring socket cache for %s",s),L=t(s,G)):(n[X]||(e("new io instance for %s",s),n[X]=t(s,G)),L=n[X]),p.query&&!G.query&&(G.query=p.query),L.socket(p.path,G)}W.protocol=b.protocol,W.connect=i,W.Manager=Kn,W.Socket=wn}(ya,ya.exports);var JX=ya.exports;const kX=_e(JX);class xX{constructor(W){this.isConnected=!1,this.folderName="",this.callback=W,this.name=""}connect(W){if(this.isConnected)return;this.isConnected=!0;const d=kX("https://www.virtualott.com",{reconnect:!0});d.on("connect",()=>{d.emit("setinfo",{device:LW.getDeviceName()},b=>{this.name=b.name,d.emit("join",W,t=>{il(`join ${W} room`,{}),this.callback("join",t)})})}),d.on("error",b=>{Ml(`socket error::${b}`)}),d.on("disconnect",b=>{Ml(`disconnect from signaling::${b}`)}),d.on("messageroom",b=>{this.callback("messageroom",b),il(`messageroom: ${b}`)}),d.on("ads",b=>{this.callback("ads",b),il(`ads: ${b}`)})}}class vn{constructor(W,d){let b=[];const t=new xX((e,n)=>{switch(e){case"roommembers":BBLog("roommembers message: ",n);break;case"join":const i=document.getElementById("name");i&&(i.textContent=t.name);break;case"messageroom":if(n.player===t.name)if(n.url){const h="#external";window.BB.RENDER_IN_WORKER?W.addAdvertisement({name:h,path:n.url,isSelected:!0}):W.addAdvertisement(h,n.url,()=>{W.selectAd(h)})}else b=n.ads,b.length&&W.selectAd(b[0]);break;case"ads":b=n,b.length&&W.selectAd(b[0]);break}});t.connect(d.augmentation.channelName),d.augmentation.logoURL?window.BB.RENDER_IN_WORKER?W.addAdvertisement({name:"#ad",path:d.augmentation.logoURL,isSelected:!1}):W.addAdvertisement("#ad",d.augmentation.logoURL):fetch("https://www.virtualott.com/ads/"+d.augmentation.channelName).then(async e=>{(await e.json()).forEach(i=>{window.BB.RENDER_IN_WORKER?W.addAdvertisement({name:`#${i.name}`,path:i.url,isSelected:!0}):W.addAdvertisement(`#${i.name}`,i.url)})})}}class yX{constructor(W,d){O(this,"composer",null);O(this,"ctxGl",null);O(this,"firstFrameTimecode",[0,0,0,0,0]);O(this,"countVid",0);O(this,"lastVidDateTime",0);O(this,"lastCalled","");O(this,"frameNumberToRender",0);O(this,"lastOffset",0);O(this,"lastOffsetShown");O(this,"countOfCorrectionsInRow",0);O(this,"deltaVidDeltaArray",[]);O(this,"deltaVidDeltaArrayCapacity",20);O(this,"countANI",0);O(this,"aniDelltaTimeArray",[]);O(this,"aniDelltaTimeArrayCapacity",60);O(this,"lastAniNow",0);O(this,"vidFiredTime",0);O(this,"correction",!1);O(this,"prevFraction",.99);O(this,"lastDblFrame",0);O(this,"lastRealFrame",0);O(this,"lastNow",0);O(this,"renderOnNextFrame",-1);O(this,"countAppleANI",0);O(this,"initializeComponents",()=>{window.BB.RENDER_IN_WORKER?this.initializeComponents_Worker():this.initializeComponents_MainThread(),this.elementToForceRender=document.getElementById("elementToForceRender")});O(this,"initializeComponents_MainThread",()=>{let W=this.video.parentElement;this.composer=new zY(this.options,W),this.ads=new vn(this.composer,this.options)});O(this,"initializeComponents_Worker",()=>{let W=this.video.parentElement;W.offsetTop,W.offsetLeft,this.canvas.style.top=0,this.canvas.style.left=0;var d=this.doCalculateBlackBars(this.video);if(this.video.readyState>=1){var d=this.doCalculateBlackBars(this.video);this.canvas.style.top=Math.round(d.top)+"px",this.canvas.style.left=Math.round(d.left)+"px"}else this.video.addEventListener("loadedmetadata",()=>{var e=this.doCalculateBlackBars(this.video);this.canvas.style.top=Math.round(e.top)+"px",this.canvas.style.left=Math.round(e.left)+"px"});this.canvas.style.width="100%",this.canvas.style.zIndex=1e5,this.canvas.width=W.clientWidth,this.canvas.height=W.clientHeight,this.canvas.style.position="absolute",this.elementToForceRender=document.createElement("span"),this.elementToForceRender.id="elementToForceRender",this.canvas.appendChild(this.elementToForceRender);let b=W.getElementsByTagName("video")[0],t=b.nextSibling;t?W.insertBefore(this.canvas,t):W.appendChild(this.canvas),this.canvas.style["pointer-events"]="none",this.composer=new LY(this.canvas,this.options),b.addEventListener("click",e=>{var n=this.canvas.getBoundingClientRect();this.composer.onUserClickOnCanvas(e.clientX,e.clientY,n)}),this.ads=new vn(this.composer,this.options)});O(this,"getCanvas",()=>{var W;return(W=this.composer)==null?void 0:W.getCanvas()});if(this.options=d,this.video=W,this.onFrameVideoChromeMac=this.onFrameVideoChromeMac.bind(this),this.onFrameVideoChromeWin=this.onFrameVideoChromeWin.bind(this),this.onAnimatedFrameSafari=this.onAnimatedFrameSafari.bind(this),this.onAnimatedFrameChromeWin=this.onAnimatedFrameChromeWin.bind(this),this.onAnimatedFrameChromeMac=this.onAnimatedFrameChromeMac.bind(this),this.calculateBlackBars=this.calculateBlackBars.bind(this),d.renderingMode==DW.Augment)if(window.BB.RENDER_IN_WORKER)this.canvas=document.createElement("canvas");else{let b=document.createElement("canvas");b.width=500,b.height=500,document.body.appendChild(b),this.ctxGl=b.getContext("webgl")}this.lastVideoFrameRenderedInGL=-1,this.lastCorrection=!1,this.sourceFPS=6e4/1001,il("Start Work",{}),window&&window.requestAnimationFrame&&W&&W.requestVideoFrameCallback?il("This script is running in a browser environment."):Ml("This script is running NOT in a browser environment.",{}),window.addEventListener("resize",()=>{this.calculateBlackBars(W)}),LW.isSafariMac()?(d.debug&&(document.getElementById("numberInput").value=2),window.BB.RENDER_IN_WORKER=!1,window.requestAnimationFrame(this.onAnimatedFrameSafari)):LW.isChromeMac()?(d.debug&&document.getElementById("numberInput")&&(document.getElementById("numberInput").value=1),window.BB.RENDER_IN_WORKER=!0,window.requestAnimationFrame(this.onAnimatedFrameChromeMac),W.readyState>=1?(il("video element is already loaded. Setting up requestVideoFrameCallback"),W.requestVideoFrameCallback(this.onFrameVideoChromeMac)):(il("video element is not yet loaded. Setting up loadedmetadata event to wait until it's loaded. video.readyState="+W.readyState),W.addEventListener("loadedmetadata",()=>{il("now video element is loaded in loadedmetadata event. Setting up requestVideoFrameCallback"),W.requestVideoFrameCallback(this.onFrameVideoChromeMac)}))):Ml("Platform not supported yet"),window.addEventListener("resize",()=>{this.calculateBlackBars(W)})}processTimedMetadata(W,d){let b="";if(W&&W.includes("www.mediakind.com/NTC")){const t=W.replace(/.*NTC./,"");let e=0;for(;e+8<=t.length;){const n=t.substring(e,e+4),i=((t.charCodeAt(e+4)*256+t.charCodeAt(e+5))*256+t.charCodeAt(e+6))*256+t.charCodeAt(e+7);if(e+8+i>t.length)break;const h=t.substring(e+8,e+8+i);n=="utc_"&&new Date(parseInt(h)).getTime()/1e3,n=="tc__"&&(this.tcTimeStamp=new Date(parseInt(h)).getTime()),n==="offs"&&(this.timecode_offset=parseInt(h)/90,this.options.debug&&il("We are HERE:TimeCode",this.timecode_offset)),e+=8+i}}return b}onNewMetadata(W){if(W&&W.metadata&&W.metadata.id==0||LW.isSafariMac()){if(W.metadata.messageData)W.metadata.messageData=this.processTimedMetadata(W.metadata.messageData,W.metadata.presentationTime);else if(W.metadata.frames&&W.metadata.frames.length&&W.metadata.frames[0].key&&W.metadata.frames[0].key.toLowerCase()==="priv"){const d=W.metadata.frames.filter(b=>b.info&&b.info.toLowerCase().includes("ntc"));if(d.length){const b=`${d[d.length-1].info}\0${String.fromCharCode(...d[d.length-1].data)}`;W.metadata.messageData=this.processTimedMetadata(b,W.metadata.presentationTime)}}if(W.metadata.id==0||LW.isSafariMac()&&this.timecode_offset==0){W.metadata.presentationTime*1e3;const d=new Date(this.tcTimeStamp-this.timecode_offset);let b=Math.round(d.getUTCMilliseconds()*30*2/1001)/2;const t=b%1;let e=1;t==.5&&(b=Math.floor(b),e=2),this.firstFrameTimecode=[d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),Math.floor(b),e==1?0:1]}}}onNewSegmentForMetadata(W){if(typeof globalConfig<"u"&&typeof globalConfig.MKsync<"u"&&globalConfig.MKsync=="no")return;let d={frame:0,playerTime:0};d.frame=jm(this.firstFrameTimecode,6e4/1001),d.stringTime=Xl(this.firstFrameTimecode,!0,!0),il("New segment ("+W.url+"): "+d.stringTime+" ("+d.frame+") playing at "+W.playbackTime),d.playerTime=W.playbackTime,this.options.syncPoint=d,W.mimeType.includes("video")&&il("url: "+W.url)}onNewSegment(W){if(W.eventType===wmcEvents.AMC_EVENT_PLAYER_SEGMENT_PLAYBACK){let d={frame:0,playerTime:0};il(`New segment (${W.url}): ${Km(W.dateTime,6e4/1001)} playing at ${W.playbackTime}`),d.frame=jm(vm(W.dateTime),fps),d.stringTime=Km(W.dateTime,6e4/1001),d.playerTime=W.playbackTime,this.options.syncPoint=d}}render(W,d){var h;let b=!1;const t=this.options;if(t.debug){var e=document.getElementById("doNotRenderAugmentationCheckbox");b=e.checked}if(b)return 0;const n=performance.now();return this.lastVideoFrameRenderedInGL==W&&d==this.lastCorrection?(t.debug&&console.log("render(): lastVideoFrameRenderedInGL==currentFrame: "+W),0):!t.enabled||t.stopAugment?(this.composer.cleanGL(),0):t.stopAugmentFor>0?((h=this.composer)==null||h.cleanGL(),t.stopAugmentFor-=1/t.hls_fps,0):(t.renderingMode==DW.RenderDigits?renderDigit(this.ctxGl,W):t.renderingMode==DW.RenderTimecode?this.sourceFPS==6e4/1001||this.sourceFPS==60?renderTimecode(this.ctxGl,hl(W,sourceFPS,!0),!0):(this.sourceFPS==3e4/1001||this.sourceFPS==30)&&renderTimecode(this.ctxGl,hl(W,this.sourceFPS,!1),!1):t.renderingMode==DW.Augment&&this.composer&&(this.sourceFPS==6e4/1001||sourceFPS==60?this.composer.renderAugmentation(Xl(hl(W,this.sourceFPS,!0))):(this.sourceFPS==3e4/1001||this.sourceFPS==30)&&(d?this.composer.renderAugmentation(Xl(hl(W*2+1,this.sourceFPS*2,!0),!0)):this.composer.renderAugmentation(Xl(hl(W,this.sourceFPS,!1),!1)))),this.lastVideoFrameRenderedInGL=W,this.lastCorrection=d,performance.now()-n)}addNumberToVidDeltaArray(W){this.deltaVidDeltaArray.push(W),this.deltaVidDeltaArray.length>this.deltaVidDeltaArrayCapacity&&this.deltaVidDeltaArray.shift();const b=this.deltaVidDeltaArray.reduce((i,h)=>i+h,0)/this.deltaVidDeltaArray.length,t=this.deltaVidDeltaArray.filter(i=>Math.abs(i-b)<=b*.2);return t.reduce((i,h)=>i+h,0)/t.length||b}onFrameVideoChromeMac(W,d){var k,B;const b=this.options;if(this.lastCalled="VID",b.hls_fps!=6e4/1001&&b.hls_fps!=3e4/1001){b.stopAugmentFor=3,this.countVid%60==0&&SW(`Unsupported FPS: options.hls_fps = ${b.hls_fps}. Stopping augmentation for 3 sec`,{timestamp:W,fps:b.hls_fps}),this.video.requestVideoFrameCallback(this.onFrameVideoChromeMac);return}var t=(d.mediaTime-b.syncPoint.playerTime)%(60*60*24)*(6e4/1001),e=d.mediaTime-b.syncPoint.playerTime;let n=Math.floor(t+.1)+b.syncPoint.frame,i=Date.now()-this.lastVidDateTime;var h=1e3/this.addNumberToVidDeltaArray(i);if(b.debug){h>25&&h<35&&(n+=1);var G=document.getElementById("numberInput").value,p=parseInt(G);n+=p}else h>25&&h<35?n+=2:n+=1;let s=document.getElementById("debugText2");var X="";X=Xl(hl(n,this.sourceFPS,!0),!0,!0);var o="";b.augmentation.offset<0?(o+="-",o+=Xl(hl(-1*b.augmentation.offset,this.sourceFPS,!0),!0,!0)):o+=Xl(hl(b.augmentation.offset,this.sourceFPS,!0),!0,!0);let r=n-b.augmentation.offset;r<0&&(r+=5178816),r>=5178816&&(r-=5178816),(k=this.composer)==null||k.setLastFrame(r);var M="";M=Xl(hl(r,this.sourceFPS,!0),!0,!0);let L=new Date,J=String(L.getHours()).padStart(2,"0"),w=String(L.getMinutes()).padStart(2,"0"),K=String(L.getSeconds()).padStart(2,"0"),x=String(L.getMilliseconds()).padStart(3,"0"),z=`${J}:${w}:${K}.${x}`;if(b.debug){var I="black";if(b.augmentation.offset!=this.lastOffset||this.lastOffsetShown<10*60)var I="red";s.innerHTML="VID. "+this.countVid+" Game: "+b.gameId+", Time Fired: "+z+", PlayerTime:"+d.mediaTime.toFixed(4)+", dblFrame: "+t.toFixed(4)+", Stream Time-Code: "+X+", offset: <span style='color:"+I+"'>"+b.augmentation.offset+"("+o+")</span> </br> </br><span style='font-size: 30px;'>, Brain Time-Code: "+M+"( "+r+" )</span> </br> </br>, expectedDisplayTime: "+d.expectedDisplayTime.toFixed(4)+", presentationTime: "+d.presentationTime.toFixed(4)+", presentationTime-expectedDisplayTime: "+(d.presentationTime-d.expectedDisplayTime).toFixed(4)+", expectedDisplayTime-now: "+(d.expectedDisplayTime-W).toFixed(4)+", TimeFromLastSync:"+e.toFixed(4)+", LastSyncPointTime:"+b.syncPoint.playerTime.toFixed(4)+", LastSyncPointFrame:"+b.syncPoint.frame+", LastSyncPoint:"+b.syncPoint.stringTime+" </br>",b.augmentation.offset!=this.lastOffset&&(this.lastOffsetShown=0),this.lastOffset=b.augmentation.offset,this.lastOffsetShown++}if(this.countVid++,this.lastVidDateTime=Date.now(),h>50&&h<70)this.render(r,!1);else if(h>25&&h<35){const C=A=>{let Vl=document.getElementById("debugText");Vl!=null&&(Vl.innerHTML="Rendering now "+A),this.render(A,!1)};d.expectedDisplayTime-W>5?setTimeout(C,20,r):setTimeout(C,5,r)}else(B=this.composer)==null||B.cleanGL(),this.countVid%60==0&&Ml("video FPS is "+h.toFixed(4)+". is not supported yet.");this.video.requestVideoFrameCallback(this.onFrameVideoChromeMac)}onFrameVideoChromeWin(W,d){var I;if(b.hls_fps!=6e4/1001&&b.hls_fps!=3e4/1001){b.stopAugmentFor=3,this.countVid%60==0&&SW(`Unsupported FPS: options.hls_fps = ${b.hls_fps}. Stopping augmentation foe 3 sec`,{timestamp:W,fps:b.hls_fps}),video.requestVideoFrameCallback(onFrameVideoChromeWin);return}Date.now()-lastVidDateTime,lastVidDateTime=Date.now();const b=this.options;if(this.lastCalled=="ANI2"&&b.hls_fps==6e4/1001){b.debug&&il("This videoCallback can be incorrect. This time doing stuff in requestAnimation frame"),this.video.requestVideoFrameCallback(this.onFrameVideoChromeWin);return}b.hls_fps==3e4/1001?this.lastCalled=="ANI3"&&this.countOfCorrectionsInRow<=0?(this.lastCalled="ANI",this.countOfCorrectionsInRow++):(this.lastCalled="VID",this.countOfCorrectionsInRow=0):this.lastCalled="VID";var t=(d.mediaTime-b.syncPoint.playerTime)%(60*60*24)*(6e4/1001),e=d.mediaTime-b.syncPoint.playerTime;let n=Math.floor(t+.1)+b.syncPoint.frame;if(b.debug){var i=document.getElementById("numberInput").value,h=parseInt(i);n+=h}else n+=1;lastMediaTime=d.mediaTime;let G=document.getElementById("debugText2");var p="";p=Xl(hl(n,this.sourceFPS,!0),!0,!0);var s="";b.augmentation.offset<0?(s+="-",s+=Xl(hl(-1*b.augmentation.offset,this.sourceFPS,!0),!0,!0)):s+=Xl(hl(b.augmentation.offset,this.sourceFPS,!0),!0,!0);let X=n-b.augmentation.offset;X<0&&(X+=5178816),X>=5178816&&(X-=5178816),(I=this.composer)==null||I.setLastFrame(X);var o="";o=Xl(hl(X,this.sourceFPS,!0),!0,!0);let r=new Date,M=String(r.getHours()).padStart(2,"0"),L=String(r.getMinutes()).padStart(2,"0"),J=String(r.getSeconds()).padStart(2,"0"),w=String(r.getMilliseconds()).padStart(3,"0"),K=`${M}:${L}:${J}.${w}`;if(b.debug){var x="black";if(b.augmentation.offset!=this.lastOffset||this.lastOffsetShown<10*60)var x="red";G.innerHTML="VID. "+this.countVid+" Game: "+b.gameId+", Time Fired: "+K+", PlayerTime:"+d.mediaTime.toFixed(4)+", dblFrame: "+t.toFixed(4)+", Stream Time-Code: "+p+", offset: <span style='color:"+x+"'>"+b.augmentation.offset+"("+s+")</span> </br> </br><span style='font-size: 30px;'>, Brain Time-Code: "+o+"( "+X+" )</span> </br> </br>, expectedDisplayTime: "+d.expectedDisplayTime.toFixed(4)+", presentationTime: "+d.presentationTime.toFixed(4)+", presentationTime-expectedDisplayTime: "+(d.presentationTime-d.expectedDisplayTime).toFixed(4)+", expectedDisplayTime-now: "+(d.expectedDisplayTime-W).toFixed(4)+", TimeFromLastSync:"+e.toFixed(4)+", LastSyncPointTime:"+b.syncPoint.playerTime.toFixed(4)+", LastSyncPointFrame:"+b.syncPoint.frame+", LastSyncPoint:"+b.syncPoint.stringTime+" </br>",b.augmentation.offset!=this.lastOffset&&(this.lastOffsetShown=0),this.lastOffset=b.augmentation.offset,this.lastOffsetShown++}if(this.countVid++,b.debug){var z=document.getElementById("plus05CorrectionCheckbox");z.checked}b.hls_fps==3e4/1001?this.renderOnNextFrame=X:renderingDuration=this.render(X,!1),this.video.requestVideoFrameCallback(this.onFrameVideoChromeWin)}addNumberToAniDeltaArray(W){this.aniDelltaTimeArray.push(W),this.aniDelltaTimeArray.length>this.aniDelltaTimeArrayCapacity&&this.aniDelltaTimeArray.shift();const b=this.aniDelltaTimeArray.reduce((i,h)=>i+h,0)/this.aniDelltaTimeArray.length,t=this.aniDelltaTimeArray.filter(i=>Math.abs(i-b)<=b*.2);return t.length<this.aniDelltaTimeArrayCapacity*85/100?-1:t.reduce((i,h)=>i+h,0)/t.length}onAnimatedFrameChromeWin(W){this.countANI++;let d=performance.now();var b=d-this.lastAniNow;this.lastAniNow=d;const t=this.options;var e=1e3/this.addNumberToAniDeltaArray(b);if(e==-1e3?(t.stopAugmentFor=3,Ml("Experience difficulties with overloading: (not consistant Calls of requestAnimatedFrame). Stopping augmentation."),console.log(aniDelltaTimeArray)):Math.abs(e-60)>5&&(t.stopAugmentFor=3,Ml("Unsupported FPS: "+e)),!t.debug){let r=document.getElementById("forceUpdate");r!=null&&(r.innerHTML=this.countANI),window.requestAnimationFrame(this.onAnimatedFrameChromeWin);return}let n=String(d.getHours()).padStart(2,"0"),i=String(d.getMinutes()).padStart(2,"0"),h=String(d.getSeconds()).padStart(2,"0"),G=String(d.getMilliseconds()).padStart(3,"0"),p=`${n}:${i}:${h}.${G}`;if(this.video.paused){window.requestAnimationFrame(this.onAnimatedFrameChromeWin);return}let s=document.getElementById("debugText");if(t.debug&&(s.innerHTML="ANI. "+this.countANI+" Time Fired: "+p),t.hls_fps==3e4/1001){s.innerHTML+="VideoTime: "+this.video.currentTime.toFixed(4),this.lastCalled=="VID"?(s.innerHTML+=" rendering on the current frame ",this.render(this.renderOnNextFrame,!1),this.lastCalled="ANI"):this.lastCalled=="ANI"?this.lastCalled="ANI2":this.lastCalled=="ANI2"&&(s.innerHTML+=" extra call. Correcting ",this.render(this.renderOnNextFrame+2,!1),lastCalled="ANI3"),s.innerHTML+="stage:"+this.lastCalled,window.requestAnimationFrame(this.onAnimatedFrameChromeWin);return}else if(t.hls_fps==6e4/1001)if(this.lastCalled=="ANI"||this.lastCalled=="ANI2"){var X="";X=Xl(hl(this.lastVideoFrameRenderedInGL+1,this.sourceFPS,!0),!0,!0);var o="";t.augmentation.offset<0?(o+="-",o+=Xl(hl(-1*t.augmentation.offset,this.sourceFPS,!0),!0,!0)):o+=Xl(hl(t.augmentation.offset,this.sourceFPS,!0),!0,!0);let r=this.lastVideoFrameRenderedInGL-t.augmentation.offset;r<0&&(r+=5178816),r>=5178816&&(r-=5178816),Xl(hl(r,this.sourceFPS,!0),!0,!0),t.debug&&(console.log("Probable videoFrameCallback was not fired. Apllying correction mechanism ("+X+"), stage: "+lastCalled),s.innerHTML+=" correction"),this.render(this.lastVideoFrameRenderedInGL+1,!1),this.lastCalled=="ANI"?this.lastCalled="ANI2":this.lastCalled=="ANI2"&&(this.lastCalled="ANI")}else this.lastCalled="ANI";else SW("Unsupported FPS: options.hls_fps = "+t.hls_fps);window.requestAnimationFrame(this.onAnimatedFrameChromeWin)}onAnimatedFrameChromeMac(){const W=this.elementToForceRender.cloneNode(!0);this.elementToForceRender.replaceWith(W),this.elementToForceRender=W,this.countAppleANI++;let d,b=Xl(hl(this.frameNumberToRender,this.sourceFPS,!0),!0,!0);this.options.debug&&(d=document.getElementById("debugText"),d&&(d.innerHTML=this.countAppleANI)),this.options.hls_fps==6e4/1001&&(this.lastCalled=="VID"?(this.lastCalled="ANI",this.options.debug&&(d.innerHTML="ANI: "+this.countAppleANI+" Stage: "+this.lastCalled+" rendering now")):this.lastCalled=="ANI"?(this.lastCalled="ANI2",this.options.debug&&(d.innerHTML="ANI: "+this.countAppleANI+" Stage: "+this.lastCalled+" correction",this.render(this.lastVideoFrameRenderedInGL+1,!1))):this.lastCalled=="ANI2"&&(this.lastCalled="ANI3",this.options.debug&&(d.innerHTML="ANI: "+this.countAppleANI+" Stage: "+this.lastCalled+" TimeCode: "+b+" extra call"))),window.requestAnimationFrame(this.onAnimatedFrameChromeMac)}onAnimatedFrameSafari(W){var B;this.countANI++;let d=new Date;const b=this.options;var t=performance.now(),e=t-this.lastNow;this.lastNow=t;var n=1e3/this.addNumberToAniDeltaArray(e);n==-1e3?(b.stopAugmentFor=3,this.countANI%60==0&&(SW("Experience difficulties with overloading: (not consistant Calls of requestAnimatedFrame). Stopping augmentation.",{timestamp:W}),console.log(this.aniDelltaTimeArray))):Math.abs(n-60)>5&&(b.stopAugmentFor=3,Ml("Unsupported screen FPS: "+n));let i=String(d.getHours()).padStart(2,"0"),h=String(d.getMinutes()).padStart(2,"0"),G=String(d.getSeconds()).padStart(2,"0"),p=String(d.getMilliseconds()).padStart(3,"0"),s=`${i}:${h}:${G}.${p}`;var X=2;let o;if(b.debug){o=document.getElementById("debugText");var r=document.getElementById("numberInput").value;X=parseInt(r)}var M=0,L=(this.video.currentTime-b.syncPoint.playerTime)%(60*60*24)*6e4/1001;M=Math.floor(L)+b.syncPoint.frame;var J=!1;M-this.lastRealFrame==2&&L-this.lastDblFrame<1.5&&(this.lastRealFrame=M,M--,J=!0),J?this.lastRealFrame=M+1:this.lastRealFrame=M,this.lastDblFrame=L,M+=X;var w=L-Math.floor(L);(this.correction||w<.226&&this.prevFraction<.226)&&(this.correction=!0),w>.8&&(this.correction=!1),this.prevFraction=w,this.correction&&M--;var K="";K=Xl(hl(M,this.sourceFPS,!0),!0,!0);var x="";b.augmentation.offset<0?(x+="-",x+=Xl(hl(-1*b.augmentation.offset,this.sourceFPS,!0),!0,!0)):x+=Xl(hl(b.augmentation.offset,this.sourceFPS,!0),!0,!0);let z=M-b.augmentation.offset;z<0&&(z+=5178816),z>=5178816&&(z-=5178816);var I="";if(I=Xl(hl(z,this.sourceFPS,!0),!0,!0),b.debug){var k="black";if(b.augmentation.offset!=this.lastOffset||this.lastOffsetShown<10*60)var k="red";o.innerHTML=" countAppleANI: "+this.countAppleANI+", Time Fired: "+s+", delta: "+e.toFixed(0)+", screenFPS: "+n.toFixed(4)+", dblFrame: "+L.toFixed(4)+", ANI-VID: "+(d-this.vidFiredTime)+", Game: "+b.gameId+", stremTime: "+K+"( "+M+" ), offset: <span style='color:"+k+"'>"+b.augmentation.offset+"("+x+")</span> </br> </br><span style='font-size: 30px;'>, resultTime: "+I+"("+z+")</span> </br> </br>, LastSyncPointTime:"+b.syncPoint.playerTime.toFixed(4)+", LastSyncPointFrame:"+b.syncPoint.frame+", LastSyncPoint:"+b.syncPoint.stringTime+", correction: "+this.correction+", correction2FrameJump: "+J}(B=this.composer)==null||B.setLastFrame(z),this.render(z),this.countAppleANI++,window.requestAnimationFrame(this.onAnimatedFrameSafari)}doCalculateBlackBars(W){var d=parseInt(window.getComputedStyle(W).getPropertyValue("width"),10),b=parseInt(window.getComputedStyle(W).getPropertyValue("height"),10),t=W.videoWidth,e=W.videoHeight,n=d/b,i=t/e,h={top:0,bottom:0,left:0,right:0};if(n>i){var G=b*i;h.left=(d-G)/2,h.right=h.left}else if(n<i){var p=d/i;h.top=(b-p)/2,h.bottom=h.top}return h}calculateBlackBars(W){const d=this.getCanvas();if(d){var b=this.doCalculateBlackBars(W);return d.style.top=Math.round(b.top)+"px",d.style.left=Math.round(b.left)+"px",b}}}const HX={OnNewSegment:Symbol("OnNewSegment"),OnMetadata:Symbol("OnMetadata"),None:Symbol("None")};function zX(){this.__data__=[],this.size=0}var IX=zX;function EX(l,W){return l===W||l!==l&&W!==W}var AZ=EX,LX=AZ;function wX(l,W){for(var d=l.length;d--;)if(LX(l[d][0],W))return d;return-1}var _Z=wX,jX=_Z,BX=Array.prototype,KX=BX.splice;function vX(l){var W=this.__data__,d=jX(W,l);if(d<0)return!1;var b=W.length-1;return d==b?W.pop():KX.call(W,d,1),--this.size,!0}var gX=vX,fX=_Z;function CX(l){var W=this.__data__,d=fX(W,l);return d<0?void 0:W[d][1]}var QX=CX,DX=_Z;function OX(l){return DX(this.__data__,l)>-1}var PX=OX,AX=_Z;function _X(l,W){var d=this.__data__,b=AX(d,l);return b<0?(++this.size,d.push([l,W])):d[b][1]=W,this}var qX=_X,$X=IX,l0=gX,V0=QX,W0=PX,d0=qX;function ld(l){var W=-1,d=l==null?0:l.length;for(this.clear();++W<d;){var b=l[W];this.set(b[0],b[1])}}ld.prototype.clear=$X,ld.prototype.delete=l0,ld.prototype.get=V0,ld.prototype.has=W0,ld.prototype.set=d0;var qZ=ld,Z0=qZ;function b0(){this.__data__=new Z0,this.size=0}var a0=b0;function t0(l){var W=this.__data__,d=W.delete(l);return this.size=W.size,d}var m0=t0;function e0(l){return this.__data__.get(l)}var n0=e0;function c0(l){return this.__data__.has(l)}var i0=c0,G0=typeof IV=="object"&&IV&&IV.Object===Object&&IV,gn=G0,p0=gn,h0=typeof self=="object"&&self&&self.Object===Object&&self,R0=p0||h0||Function("return this")(),Vd=R0,Y0=Vd,s0=Y0.Symbol,fn=s0,Cn=fn,Qn=Object.prototype,X0=Qn.hasOwnProperty,o0=Qn.toString,Bd=Cn?Cn.toStringTag:void 0;function u0(l){var W=X0.call(l,Bd),d=l[Bd];try{l[Bd]=void 0;var b=!0}catch{}var t=o0.call(l);return b&&(W?l[Bd]=d:delete l[Bd]),t}var N0=u0,F0=Object.prototype,U0=F0.toString;function S0(l){return U0.call(l)}var M0=S0,Dn=fn,T0=N0,r0=M0,J0="[object Null]",k0="[object Undefined]",On=Dn?Dn.toStringTag:void 0;function x0(l){return l==null?l===void 0?k0:J0:On&&On in Object(l)?T0(l):r0(l)}var $Z=x0;function y0(l){var W=typeof l;return l!=null&&(W=="object"||W=="function")}var TW=y0,H0=$Z,z0=TW,I0="[object AsyncFunction]",E0="[object Function]",L0="[object GeneratorFunction]",w0="[object Proxy]";function j0(l){if(!z0(l))return!1;var W=H0(l);return W==E0||W==L0||W==I0||W==w0}var at=j0,B0=Vd,K0=B0["__core-js_shared__"],v0=K0,tt=v0,Pn=function(){var l=/[^.]+$/.exec(tt&&tt.keys&&tt.keys.IE_PROTO||"");return l?"Symbol(src)_1."+l:""}();function g0(l){return!!Pn&&Pn in l}var f0=g0,C0=Function.prototype,Q0=C0.toString;function D0(l){if(l!=null){try{return Q0.call(l)}catch{}try{return l+""}catch{}}return""}var O0=D0,P0=at,A0=f0,_0=TW,q0=O0,$0=/[\\^$.*+?()[\]{}|]/g,lo=/^\[object .+?Constructor\]$/,Vo=Function.prototype,Wo=Object.prototype,Zo=Vo.toString,bo=Wo.hasOwnProperty,ao=RegExp("^"+Zo.call(bo).replace($0,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function to(l){if(!_0(l)||A0(l))return!1;var W=P0(l)?ao:lo;return W.test(q0(l))}var mo=to;function eo(l,W){return l==null?void 0:l[W]}var no=eo,co=mo,io=no;function Go(l,W){var d=io(l,W);return co(d)?d:void 0}var mt=Go,po=mt,ho=Vd,Ro=po(ho,"Map"),An=Ro,Yo=mt,so=Yo(Object,"create"),lb=so,_n=lb;function Xo(){this.__data__=_n?_n(null):{},this.size=0}var oo=Xo;function uo(l){var W=this.has(l)&&delete this.__data__[l];return this.size-=W?1:0,W}var No=uo,Fo=lb,Uo="__lodash_hash_undefined__",So=Object.prototype,Mo=So.hasOwnProperty;function To(l){var W=this.__data__;if(Fo){var d=W[l];return d===Uo?void 0:d}return Mo.call(W,l)?W[l]:void 0}var ro=To,Jo=lb,ko=Object.prototype,xo=ko.hasOwnProperty;function yo(l){var W=this.__data__;return Jo?W[l]!==void 0:xo.call(W,l)}var Ho=yo,zo=lb,Io="__lodash_hash_undefined__";function Eo(l,W){var d=this.__data__;return this.size+=this.has(l)?0:1,d[l]=zo&&W===void 0?Io:W,this}var Lo=Eo,wo=oo,jo=No,Bo=ro,Ko=Ho,vo=Lo;function Wd(l){var W=-1,d=l==null?0:l.length;for(this.clear();++W<d;){var b=l[W];this.set(b[0],b[1])}}Wd.prototype.clear=wo,Wd.prototype.delete=jo,Wd.prototype.get=Bo,Wd.prototype.has=Ko,Wd.prototype.set=vo;var go=Wd,qn=go,fo=qZ,Co=An;function Qo(){this.size=0,this.__data__={hash:new qn,map:new(Co||fo),string:new qn}}var Do=Qo;function Oo(l){var W=typeof l;return W=="string"||W=="number"||W=="symbol"||W=="boolean"?l!=="__proto__":l===null}var Po=Oo,Ao=Po;function _o(l,W){var d=l.__data__;return Ao(W)?d[typeof W=="string"?"string":"hash"]:d.map}var Vb=_o,qo=Vb;function $o(l){var W=qo(this,l).delete(l);return this.size-=W?1:0,W}var lu=$o,Vu=Vb;function Wu(l){return Vu(this,l).get(l)}var du=Wu,Zu=Vb;function bu(l){return Zu(this,l).has(l)}var au=bu,tu=Vb;function mu(l,W){var d=tu(this,l),b=d.size;return d.set(l,W),this.size+=d.size==b?0:1,this}var eu=mu,nu=Do,cu=lu,iu=du,Gu=au,pu=eu;function dd(l){var W=-1,d=l==null?0:l.length;for(this.clear();++W<d;){var b=l[W];this.set(b[0],b[1])}}dd.prototype.clear=nu,dd.prototype.delete=cu,dd.prototype.get=iu,dd.prototype.has=Gu,dd.prototype.set=pu;var hu=dd,Ru=qZ,Yu=An,su=hu,Xu=200;function ou(l,W){var d=this.__data__;if(d instanceof Ru){var b=d.__data__;if(!Yu||b.length<Xu-1)return b.push([l,W]),this.size=++d.size,this;d=this.__data__=new su(b)}return d.set(l,W),this.size=d.size,this}var uu=ou,Nu=qZ,Fu=a0,Uu=m0,Su=n0,Mu=i0,Tu=uu;function Zd(l){var W=this.__data__=new Nu(l);this.size=W.size}Zd.prototype.clear=Fu,Zd.prototype.delete=Uu,Zd.prototype.get=Su,Zd.prototype.has=Mu,Zd.prototype.set=Tu;var ru=Zd,Ju=mt,ku=function(){try{var l=Ju(Object,"defineProperty");return l({},"",{}),l}catch{}}(),$n=ku,lc=$n;function xu(l,W,d){W=="__proto__"&&lc?lc(l,W,{configurable:!0,enumerable:!0,value:d,writable:!0}):l[W]=d}var et=xu,yu=et,Hu=AZ;function zu(l,W,d){(d!==void 0&&!Hu(l[W],d)||d===void 0&&!(W in l))&&yu(l,W,d)}var Vc=zu;function Iu(l){return function(W,d,b){for(var t=-1,e=Object(W),n=b(W),i=n.length;i--;){var h=n[l?i:++t];if(d(e[h],h,e)===!1)break}return W}}var Eu=Iu,Lu=Eu,wu=Lu(),ju=wu,Wb={exports:{}};Wb.exports,function(l,W){var d=Vd,b=W&&!W.nodeType&&W,t=b&&!0&&l&&!l.nodeType&&l,e=t&&t.exports===b,n=e?d.Buffer:void 0,i=n?n.allocUnsafe:void 0;function h(G,p){if(p)return G.slice();var s=G.length,X=i?i(s):new G.constructor(s);return G.copy(X),X}l.exports=h}(Wb,Wb.exports);var Bu=Wb.exports,Ku=Vd,vu=Ku.Uint8Array,gu=vu,Wc=gu;function fu(l){var W=new l.constructor(l.byteLength);return new Wc(W).set(new Wc(l)),W}var Cu=fu,Qu=Cu;function Du(l,W){var d=W?Qu(l.buffer):l.buffer;return new l.constructor(d,l.byteOffset,l.length)}var Ou=Du;function Pu(l,W){var d=-1,b=l.length;for(W||(W=Array(b));++d<b;)W[d]=l[d];return W}var Au=Pu,_u=TW,dc=Object.create,qu=function(){function l(){}return function(W){if(!_u(W))return{};if(dc)return dc(W);l.prototype=W;var d=new l;return l.prototype=void 0,d}}(),$u=qu;function lN(l,W){return function(d){return l(W(d))}}var VN=lN,WN=VN,dN=WN(Object.getPrototypeOf,Object),Zc=dN,ZN=Object.prototype;function bN(l){var W=l&&l.constructor,d=typeof W=="function"&&W.prototype||ZN;return l===d}var bc=bN,aN=$u,tN=Zc,mN=bc;function eN(l){return typeof l.constructor=="function"&&!mN(l)?aN(tN(l)):{}}var nN=eN;function cN(l){return l!=null&&typeof l=="object"}var Kd=cN,iN=$Z,GN=Kd,pN="[object Arguments]";function hN(l){return GN(l)&&iN(l)==pN}var RN=hN,ac=RN,YN=Kd,tc=Object.prototype,sN=tc.hasOwnProperty,XN=tc.propertyIsEnumerable,oN=ac(function(){return arguments}())?ac:function(l){return YN(l)&&sN.call(l,"callee")&&!XN.call(l,"callee")},mc=oN,uN=Array.isArray,ec=uN,NN=9007199254740991;function FN(l){return typeof l=="number"&&l>-1&&l%1==0&&l<=NN}var nc=FN,UN=at,SN=nc;function MN(l){return l!=null&&SN(l.length)&&!UN(l)}var nt=MN,TN=nt,rN=Kd;function JN(l){return rN(l)&&TN(l)}var kN=JN,db={exports:{}};function xN(){return!1}var yN=xN;db.exports,function(l,W){var d=Vd,b=yN,t=W&&!W.nodeType&&W,e=t&&!0&&l&&!l.nodeType&&l,n=e&&e.exports===t,i=n?d.Buffer:void 0,h=i?i.isBuffer:void 0,G=h||b;l.exports=G}(db,db.exports);var cc=db.exports,HN=$Z,zN=Zc,IN=Kd,EN="[object Object]",LN=Function.prototype,wN=Object.prototype,ic=LN.toString,jN=wN.hasOwnProperty,BN=ic.call(Object);function KN(l){if(!IN(l)||HN(l)!=EN)return!1;var W=zN(l);if(W===null)return!0;var d=jN.call(W,"constructor")&&W.constructor;return typeof d=="function"&&d instanceof d&&ic.call(d)==BN}var vN=KN,gN=$Z,fN=nc,CN=Kd,QN="[object Arguments]",DN="[object Array]",ON="[object Boolean]",PN="[object Date]",AN="[object Error]",_N="[object Function]",qN="[object Map]",$N="[object Number]",l2="[object Object]",V2="[object RegExp]",W2="[object Set]",d2="[object String]",Z2="[object WeakMap]",b2="[object ArrayBuffer]",a2="[object DataView]",t2="[object Float32Array]",m2="[object Float64Array]",e2="[object Int8Array]",n2="[object Int16Array]",c2="[object Int32Array]",i2="[object Uint8Array]",G2="[object Uint8ClampedArray]",p2="[object Uint16Array]",h2="[object Uint32Array]",Yl={};Yl[t2]=Yl[m2]=Yl[e2]=Yl[n2]=Yl[c2]=Yl[i2]=Yl[G2]=Yl[p2]=Yl[h2]=!0,Yl[QN]=Yl[DN]=Yl[b2]=Yl[ON]=Yl[a2]=Yl[PN]=Yl[AN]=Yl[_N]=Yl[qN]=Yl[$N]=Yl[l2]=Yl[V2]=Yl[W2]=Yl[d2]=Yl[Z2]=!1;function R2(l){return CN(l)&&fN(l.length)&&!!Yl[gN(l)]}var Y2=R2;function s2(l){return function(W){return l(W)}}var X2=s2,Zb={exports:{}};Zb.exports,function(l,W){var d=gn,b=W&&!W.nodeType&&W,t=b&&!0&&l&&!l.nodeType&&l,e=t&&t.exports===b,n=e&&d.process,i=function(){try{var h=t&&t.require&&t.require("util").types;return h||n&&n.binding&&n.binding("util")}catch{}}();l.exports=i}(Zb,Zb.exports);var o2=Zb.exports,u2=Y2,N2=X2,Gc=o2,pc=Gc&&Gc.isTypedArray,F2=pc?N2(pc):u2,hc=F2;function U2(l,W){if(!(W==="constructor"&&typeof l[W]=="function")&&W!="__proto__")return l[W]}var Rc=U2,S2=et,M2=AZ,T2=Object.prototype,r2=T2.hasOwnProperty;function J2(l,W,d){var b=l[W];(!(r2.call(l,W)&&M2(b,d))||d===void 0&&!(W in l))&&S2(l,W,d)}var k2=J2,x2=k2,y2=et;function H2(l,W,d,b){var t=!d;d||(d={});for(var e=-1,n=W.length;++e<n;){var i=W[e],h=b?b(d[i],l[i],i,d,l):void 0;h===void 0&&(h=l[i]),t?y2(d,i,h):x2(d,i,h)}return d}var z2=H2;function I2(l,W){for(var d=-1,b=Array(l);++d<l;)b[d]=W(d);return b}var E2=I2,L2=9007199254740991,w2=/^(?:0|[1-9]\d*)$/;function j2(l,W){var d=typeof l;return W=W??L2,!!W&&(d=="number"||d!="symbol"&&w2.test(l))&&l>-1&&l%1==0&&l<W}var Yc=j2,B2=E2,K2=mc,v2=ec,g2=cc,f2=Yc,C2=hc,Q2=Object.prototype,D2=Q2.hasOwnProperty;function O2(l,W){var d=v2(l),b=!d&&K2(l),t=!d&&!b&&g2(l),e=!d&&!b&&!t&&C2(l),n=d||b||t||e,i=n?B2(l.length,String):[],h=i.length;for(var G in l)(W||D2.call(l,G))&&!(n&&(G=="length"||t&&(G=="offset"||G=="parent")||e&&(G=="buffer"||G=="byteLength"||G=="byteOffset")||f2(G,h)))&&i.push(G);return i}var P2=O2;function A2(l){var W=[];if(l!=null)for(var d in Object(l))W.push(d);return W}var _2=A2,q2=TW,$2=bc,lF=_2,VF=Object.prototype,WF=VF.hasOwnProperty;function dF(l){if(!q2(l))return lF(l);var W=$2(l),d=[];for(var b in l)b=="constructor"&&(W||!WF.call(l,b))||d.push(b);return d}var ZF=dF,bF=P2,aF=ZF,tF=nt;function mF(l){return tF(l)?bF(l,!0):aF(l)}var sc=mF,eF=z2,nF=sc;function cF(l){return eF(l,nF(l))}var iF=cF,Xc=Vc,GF=Bu,pF=Ou,hF=Au,RF=nN,oc=mc,uc=ec,YF=kN,sF=cc,XF=at,oF=TW,uF=vN,NF=hc,Nc=Rc,FF=iF;function UF(l,W,d,b,t,e,n){var i=Nc(l,d),h=Nc(W,d),G=n.get(h);if(G){Xc(l,d,G);return}var p=e?e(i,h,d+"",l,W,n):void 0,s=p===void 0;if(s){var X=uc(h),o=!X&&sF(h),r=!X&&!o&&NF(h);p=h,X||o||r?uc(i)?p=i:YF(i)?p=hF(i):o?(s=!1,p=GF(h,!0)):r?(s=!1,p=pF(h,!0)):p=[]:uF(h)||oc(h)?(p=i,oc(i)?p=FF(i):(!oF(i)||XF(i))&&(p=RF(h))):s=!1}s&&(n.set(h,p),t(p,h,b,e,n),n.delete(h)),Xc(l,d,p)}var SF=UF,MF=ru,TF=Vc,rF=ju,JF=SF,kF=TW,xF=sc,yF=Rc;function Fc(l,W,d,b,t){l!==W&&rF(W,function(e,n){if(t||(t=new MF),kF(e))JF(l,W,n,d,Fc,b,t);else{var i=b?b(yF(l,n),e,n+"",l,W,t):void 0;i===void 0&&(i=e),TF(l,n,i)}},xF)}var HF=Fc;function zF(l){return l}var Uc=zF;function IF(l,W,d){switch(d.length){case 0:return l.call(W);case 1:return l.call(W,d[0]);case 2:return l.call(W,d[0],d[1]);case 3:return l.call(W,d[0],d[1],d[2])}return l.apply(W,d)}var EF=IF,LF=EF,Sc=Math.max;function wF(l,W,d){return W=Sc(W===void 0?l.length-1:W,0),function(){for(var b=arguments,t=-1,e=Sc(b.length-W,0),n=Array(e);++t<e;)n[t]=b[W+t];t=-1;for(var i=Array(W+1);++t<W;)i[t]=b[t];return i[W]=d(n),LF(l,this,i)}}var jF=wF;function BF(l){return function(){return l}}var KF=BF,vF=KF,Mc=$n,gF=Uc,fF=Mc?function(l,W){return Mc(l,"toString",{configurable:!0,enumerable:!1,value:vF(W),writable:!0})}:gF,CF=fF,QF=800,DF=16,OF=Date.now;function PF(l){var W=0,d=0;return function(){var b=OF(),t=DF-(b-d);if(d=b,t>0){if(++W>=QF)return arguments[0]}else W=0;return l.apply(void 0,arguments)}}var AF=PF,_F=CF,qF=AF,$F=qF(_F),lU=$F,VU=Uc,WU=jF,dU=lU;function ZU(l,W){return dU(WU(l,W,VU),l+"")}var bU=ZU,aU=AZ,tU=nt,mU=Yc,eU=TW;function nU(l,W,d){if(!eU(d))return!1;var b=typeof W;return(b=="number"?tU(d)&&mU(W,d.length):b=="string"&&W in d)?aU(d[W],l):!1}var cU=nU,iU=bU,GU=cU;function pU(l){return iU(function(W,d){var b=-1,t=d.length,e=t>1?d[t-1]:void 0,n=t>2?d[2]:void 0;for(e=l.length>3&&typeof e=="function"?(t--,e):void 0,n&&GU(d[0],d[1],n)&&(e=t<3?void 0:e,t=1),W=Object(W);++b<t;){var i=d[b];i&&l(W,i,b,e)}return W})}var hU=pU,RU=HF,YU=hU,sU=YU(function(l,W,d){RU(l,W,d)}),XU=sU;const oU=_e(XU),uU="1.0.46";class Tc{constructor(W,d,b){O(this,"mediaID",null);this.video=W,this.srcFrameRate=d,this.options=oU({enabled:!0,stopAugment:!1,stopAugmentFor:-1,gameId:"Unknown",medialook:!1,allGamesURL:"https://www.virtualott.com/games/",cloudFrontURL:"https://db8igqxlbvayn.cloudfront.net/prod",mediaIdJsonURL:"https://games-prod.virtualott.com/map",offsetJsonURL:"https://games-prod.virtualott.com/offset",renderingMode:DW.Augment,SynchMethod:HX.None,debug:!1,hls_fps:6e4/1001,augmentation:{renderTimecode:!0,offset:0},syncPoint:{frame:0,playerTime:0,mediaTimeMS:0}},b||{}),il(`OTTPlayer: version: ${uU}`),il(`optionsFromMK: ${JSON.stringify(b)}`,b),il(`options after merge with MK's options: ${JSON.stringify(this.options)}`,this.options),this.getGlobalConfig()}init(){typeof globalConfig>"u"?this.options=Object.assign(this.options,{}):this.options=Object.assign(this.options,globalConfig);var W={};W.value1=this.options.hls_fps,this.setFps(W);const d=JSON.stringify(this.options);if(il("options after merge with the global options: "+d,d),!this.options.debug){let b=["debugText","forplus","forDoNotRender","debugText2","toggleBtn","numberInput","plus05CorrectionCheckbox","doNotRenderAugmentationCheckbox","plus05CorrectionLabel","doNotRenderAugmentationLabel","br1","br2","qualityButton","qualitySelect"];for(let t=0;t<b.length;t++){const e=document.getElementById(b[t]);e&&(e.style.display="none")}}this.fetchAndFindGameIdAndOffsetFromMediaId(this.options.gameId)}initAugmentor(){this.augmentor=new yX(this.video,this.options),this.options.renderingMode==DW.Augment&&this.augmentor.initializeComponents()}async getGlobalConfig(){const d=new URL(document.location).searchParams.get("config")||"";if(d!=="")try{const b=await fetch(d);if(!b.ok)throw new Error("Network response was not ok");const t=await b.json();window.globalConfig={},il(`Fetched the following config: ${JSON.stringify(t)}`,t),il(`local config: ${JSON.stringify(window.localConfig)}`,window.localConfig),globalConfig=Object.assign({},t,window.localConfig),il(`final config: ${JSON.stringify(globalConfig)}`,globalConfig)}catch(b){Ml("Error fetching JSON:",b)}this.init()}async fetchAndFindGameIdAndOffsetFromMediaId(W){if(this.options.mediaIdJsonURL=="test"){this.initAugmentor();return}this.options.mediaId&&(W=this.options.mediaId);try{const d=await fetch(this.options.mediaIdJsonURL+"/"+W);if(!d.ok)throw new Error(`HTTP error! Status: ${d.status}`);const b=await d.json();if(b.hasOwnProperty("GAME_ID")){const t=b.GAME_ID;il(`GameId for mediaid= ${W}: ${t}`,{mediaID:W,gameIs:t}),this.options.gameId=t,await this.fetchOffsetForGameIdMediaID(this.options.gameId,W),this.initAugmentor()}else Ml(`MediaID ${W} not found in JSON.`,{mediaID:W}),this.options.stopAugment=!0}catch(d){Ml(d,"Error fetching and processing GameId JSON:",{url:this.options.mediaIdJsonURL+"/"+W})}}async fetchOffsetForGameIdMediaID(W,d){if(this.options.offsetJsonURL=="test")return 0;try{const b=await fetch(this.options.offsetJsonURL+"/"+W);b.ok||(Ml(`HTTP error! Status: ${b.status}`),setTimeout(()=>{this.fetchOffsetForGameIdMediaID(W,d)},5e3));const t=await b.json();if(t.hasOwnProperty("offset")&&t.hasOwnProperty("found")){const e=t.offset;t.found==!0&&(il(`Offset for gameid= ${W}: ${e}`,{gameId:W,offset:e}),this.options.augmentation.offset=e,setTimeout(()=>{this.fetchOffsetForGameIdMediaID(W,d)},6e4))}else BBerror(`offset for ${W} not found in JSON.`,{gameId:W}),setTimeout(()=>{this.fetchOffsetForGameIdMediaID(W,d)},5e3)}catch(b){Ml("Error fetching and processing offset JSON:",b),setTimeout(()=>{this.fetchOffsetForGameIdMediaID(W,d)},5e3)}}toggle(W){this.options.enabled=W}getCanvas(){return this.augmentor.getCanvas()}setFps(W){var d=W.value1;switch(d){case 59.94:case 6e4/1001:this.options.hls_fps=6e4/1001;break;case 29.97:case 3e4/1001:this.options.hls_fps=3e4/1001;break;default:console.error("Unsupported hls-src frame-rate: "+d+"fps"),this.options.hls_fps=d;break}}setSyncPoint(W){this.options.syncPoint=W}onNewSegment(W){this.augmentor.onNewSegmentForMetadata(W)}onNewMetadata(W){this.augmentor.onNewMetadata(W)}}return window.BB={MAX_LOGOS:4,RENDER_IN_WORKER:!0,OTTPlayer:Tc},Tc});